diff --git a/.gitignore b/.gitignore index 43852019..54c3db4a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,13 @@ # Compiler files cache/ out/**/ +!out/VaultImplementation.sol/ +!out/VaultTokenizedImplementation.sol/ +!out/VaultVotesImplementation.sol/ +!out/v1.1/ +!out/v1.1/Vault.sol/ +!out/v1.1/VaultTokenized.sol/ +!out/VaultVotes.sol/ !out/Vault.sol/ !out/VaultTokenized.sol/ !out/NetworkRestakeDelegator.sol/ diff --git a/lib/openzeppelin-contracts b/lib/openzeppelin-contracts index dbb6104c..69c8def5 160000 --- a/lib/openzeppelin-contracts +++ b/lib/openzeppelin-contracts @@ -1 +1 @@ -Subproject commit dbb6104ce834628e473d2173bbc9d47f81a9eec3 +Subproject commit 69c8def5f222ff96f2b5beff05dfba996368aa79 diff --git a/lib/openzeppelin-contracts-upgradeable b/lib/openzeppelin-contracts-upgradeable index 723f8cab..fa525310 160000 --- a/lib/openzeppelin-contracts-upgradeable +++ b/lib/openzeppelin-contracts-upgradeable @@ -1 +1 @@ -Subproject commit 723f8cab09cdae1aca9ec9cc1cfa040c2d4b06c1 +Subproject commit fa525310e45f91eb20a6d3baa2644be8e0adba31 diff --git a/out/DelegatorFactory.sol/DelegatorFactory.json b/out/DelegatorFactory.sol/DelegatorFactory.json index 17b3eec2..bd5c07ef 100644 --- a/out/DelegatorFactory.sol/DelegatorFactory.json +++ b/out/DelegatorFactory.sol/DelegatorFactory.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"owner_","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"blacklist","inputs":[{"name":"type_","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"blacklisted","inputs":[{"name":"type_","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"create","inputs":[{"name":"type_","type":"uint64","internalType":"uint64"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"entity_","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"entity","inputs":[{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"implementation","inputs":[{"name":"type_","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"isEntity","inputs":[{"name":"entity_","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"totalEntities","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"totalTypes","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"whitelist","inputs":[{"name":"implementation_","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"AddEntity","inputs":[{"name":"entity","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Blacklist","inputs":[{"name":"type_","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Whitelist","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AlreadyBlacklisted","inputs":[]},{"type":"error","name":"AlreadyWhitelisted","inputs":[]},{"type":"error","name":"ERC1167FailedCreateClone","inputs":[]},{"type":"error","name":"EntityNotExist","inputs":[]},{"type":"error","name":"InvalidImplementation","inputs":[]},{"type":"error","name":"InvalidType","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x60803460b557601f6109a338819003918201601f19168301916001600160401b0383118484101760b95780849260209460405283398101031260b557516001600160a01b03908181169081900360b5578015609d57600280546001600160a01b03198116831790915560405192167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a36108d590816100ce8239f35b604051631e4fbdf760e01b81525f6004820152602490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080604090808252600480361015610015575f80fd5b5f3560e01c91826314887c5814610698575081635cd8b15e1461067b578163715018a6146106205781638da5cb5b146105f85781639b19251a14610485578163b42ba2a21461041a578163b572a96614610375578163b6caa11914610338578163cd108ef814610194578163f15df2e51461016e578163f2fde38b146100dd575063f9661602146100a4575f80fd5b346100d95760203660031901126100d9576020906100c86100c36106d1565b61073e565b90516001600160a01b039091168152f35b5f80fd5b82346100d95760203660031901126100d9576001600160a01b038235818116939192908490036100d95761010f610799565b8315610158575050600254826bffffffffffffffffffffffff60a01b821617600255167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b905f6024925191631e4fbdf760e01b8352820152fd5b82346100d9575f3660031901126100d95767ffffffffffffffff60209254169051908152f35b82346100d957806003193601126100d9576101ad6106d1565b906024359167ffffffffffffffff8084116100d957366023850112156100d95783850135918183116100d957602485019460248436920101116100d9576e5af43d82803e903d91602b57fd5bf36102038261073e565b915f54908487519160208301938452168782015260608082015261023d8161022f60808201898c61071e565b03601f1981018352826106e8565b51902091763d602d80600a3d3981f3363d3d373d3d3d363d7300000062ffffff8260881c16175f5260781b1760205260018060a01b0390603760095ff5169384156103285761028b85610836565b50835192857fb919910dcefbf753bfd926ab3b1d3f85d877190c3d01ba1bd585047b99b99f0b5f80a2853b156100d957836102dd5f93829363439fab9160e01b845260208b850152602484019161071e565b038183885af1801561031e576102f8575b6020848451908152f35b811161030b5760209350815283806102ee565b604184634e487b7160e01b5f525260245ffd5b83513d5f823e3d90fd5b83516330be1a3d60e21b81528690fd5b82346100d95760203660031901126100d95760209067ffffffffffffffff61035e6106d1565b165f526003825260ff815f20541690519015158152f35b82346100d95760203660031901126100d95761038f6106d1565b91610398610799565b67ffffffffffffffff8082541693169283101561040c57825f52600360205260ff825f2054166103fe5750815f5260036020525f20600160ff198254161790557ffc8245c2838846b295ae66fbe0d08e20c799b737c93b56f7b209df2e5fa2d4585f80a2005b905163f53de75f60e01b8152fd5b905163b968846160e01b8152fd5b82346100d95760203660031901126100d95781355f54811015610472575f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563015490516001600160a01b03909116815260209150f35b603283634e487b7160e01b5f525260245ffd5b9050346100d957602091826003193601126100d95781356001600160a01b0381811694918590036100d9576104b8610799565b82516202dd3160ec1b81529082828681895afa9182156105ee575f926105b6575b501630148015919061053a575b5061052d576104f4836107c5565b1561052057827feb73900b98b6a3e2b8b01708fe544760cf570d21e7fbe5225f24e48b5b2b432e5f80a2005b5163b73e95e160e01b8152fd5b5163340aafcd60e11b8152fd5b8251635d927f4560e11b815290915081818581885afa91821561031e575f92610577575b505067ffffffffffffffff80845416911614155f6104e6565b90809250813d83116105af575b61058e81836106e8565b810103126100d9575167ffffffffffffffff811681036100d9575f8061055e565b503d610584565b9091508281813d83116105e7575b6105ce81836106e8565b810103126100d9575181811681036100d957905f6104d9565b503d6105c4565b84513d5f823e3d90fd5b82346100d9575f3660031901126100d95760025490516001600160a01b039091168152602090f35b346100d9575f3660031901126100d957610638610799565b600280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b82346100d9575f3660031901126100d9576020905f549051908152f35b9150346100d95760203660031901126100d957356001600160a01b03811692908390036100d9576020925f52600183525f205415158152f35b6004359067ffffffffffffffff821682036100d957565b90601f8019910116810190811067ffffffffffffffff82111761070a57604052565b634e487b7160e01b5f52604160045260245ffd5b908060209392818452848401375f828201840152601f01601f1916010190565b67ffffffffffffffff166004548110156107855760045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01546001600160a01b031690565b634e487b7160e01b5f52603260045260245ffd5b6002546001600160a01b031633036107ad57565b60405163118cdaa760e01b8152336004820152602490fd5b805f52600560205260405f2054155f1461083157600454600160401b81101561070a5760018101806004558110156107855781907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0155600454905f52600560205260405f2055600190565b505f90565b805f52600160205260405f2054155f14610831575f54600160401b81101561070a5760018101805f558110156107855781907f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56301555f54905f52600160205260405f205560019056fea2646970667358221220377c7c8f4b9c9b6585fa533deadc519659538dd3b8b8fd22fffd3bbad02b228064736f6c63430008190033","sourceMap":"181:124:63:-:0;;;;;;;;;;;;;-1:-1:-1;;181:124:63;;;;-1:-1:-1;;;;;181:124:63;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;181:124:63;;;;;;;;;;1273:26:32;;1269:95;;3004:6;181:124:63;;-1:-1:-1;;;;;;181:124:63;;;;;;;;;;;3052:40:32;-1:-1:-1;;3052:40:32;181:124:63;;;;;;;1269:95:32;181:124:63;;-1:-1:-1;;;1322:31:32;;-1:-1:-1;1322:31:32;;;181:124:63;;;1322:31:32;181:124:63;-1:-1:-1;181:124:63;;;;;;-1:-1:-1;181:124:63;;;;;-1:-1:-1;181:124:63","linkReferences":{}},"deployedBytecode":{"object":"0x6080604090808252600480361015610015575f80fd5b5f3560e01c91826314887c5814610698575081635cd8b15e1461067b578163715018a6146106205781638da5cb5b146105f85781639b19251a14610485578163b42ba2a21461041a578163b572a96614610375578163b6caa11914610338578163cd108ef814610194578163f15df2e51461016e578163f2fde38b146100dd575063f9661602146100a4575f80fd5b346100d95760203660031901126100d9576020906100c86100c36106d1565b61073e565b90516001600160a01b039091168152f35b5f80fd5b82346100d95760203660031901126100d9576001600160a01b038235818116939192908490036100d95761010f610799565b8315610158575050600254826bffffffffffffffffffffffff60a01b821617600255167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b905f6024925191631e4fbdf760e01b8352820152fd5b82346100d9575f3660031901126100d95767ffffffffffffffff60209254169051908152f35b82346100d957806003193601126100d9576101ad6106d1565b906024359167ffffffffffffffff8084116100d957366023850112156100d95783850135918183116100d957602485019460248436920101116100d9576e5af43d82803e903d91602b57fd5bf36102038261073e565b915f54908487519160208301938452168782015260608082015261023d8161022f60808201898c61071e565b03601f1981018352826106e8565b51902091763d602d80600a3d3981f3363d3d373d3d3d363d7300000062ffffff8260881c16175f5260781b1760205260018060a01b0390603760095ff5169384156103285761028b85610836565b50835192857fb919910dcefbf753bfd926ab3b1d3f85d877190c3d01ba1bd585047b99b99f0b5f80a2853b156100d957836102dd5f93829363439fab9160e01b845260208b850152602484019161071e565b038183885af1801561031e576102f8575b6020848451908152f35b811161030b5760209350815283806102ee565b604184634e487b7160e01b5f525260245ffd5b83513d5f823e3d90fd5b83516330be1a3d60e21b81528690fd5b82346100d95760203660031901126100d95760209067ffffffffffffffff61035e6106d1565b165f526003825260ff815f20541690519015158152f35b82346100d95760203660031901126100d95761038f6106d1565b91610398610799565b67ffffffffffffffff8082541693169283101561040c57825f52600360205260ff825f2054166103fe5750815f5260036020525f20600160ff198254161790557ffc8245c2838846b295ae66fbe0d08e20c799b737c93b56f7b209df2e5fa2d4585f80a2005b905163f53de75f60e01b8152fd5b905163b968846160e01b8152fd5b82346100d95760203660031901126100d95781355f54811015610472575f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563015490516001600160a01b03909116815260209150f35b603283634e487b7160e01b5f525260245ffd5b9050346100d957602091826003193601126100d95781356001600160a01b0381811694918590036100d9576104b8610799565b82516202dd3160ec1b81529082828681895afa9182156105ee575f926105b6575b501630148015919061053a575b5061052d576104f4836107c5565b1561052057827feb73900b98b6a3e2b8b01708fe544760cf570d21e7fbe5225f24e48b5b2b432e5f80a2005b5163b73e95e160e01b8152fd5b5163340aafcd60e11b8152fd5b8251635d927f4560e11b815290915081818581885afa91821561031e575f92610577575b505067ffffffffffffffff80845416911614155f6104e6565b90809250813d83116105af575b61058e81836106e8565b810103126100d9575167ffffffffffffffff811681036100d9575f8061055e565b503d610584565b9091508281813d83116105e7575b6105ce81836106e8565b810103126100d9575181811681036100d957905f6104d9565b503d6105c4565b84513d5f823e3d90fd5b82346100d9575f3660031901126100d95760025490516001600160a01b039091168152602090f35b346100d9575f3660031901126100d957610638610799565b600280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b82346100d9575f3660031901126100d9576020905f549051908152f35b9150346100d95760203660031901126100d957356001600160a01b03811692908390036100d9576020925f52600183525f205415158152f35b6004359067ffffffffffffffff821682036100d957565b90601f8019910116810190811067ffffffffffffffff82111761070a57604052565b634e487b7160e01b5f52604160045260245ffd5b908060209392818452848401375f828201840152601f01601f1916010190565b67ffffffffffffffff166004548110156107855760045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01546001600160a01b031690565b634e487b7160e01b5f52603260045260245ffd5b6002546001600160a01b031633036107ad57565b60405163118cdaa760e01b8152336004820152602490fd5b805f52600560205260405f2054155f1461083157600454600160401b81101561070a5760018101806004558110156107855781907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0155600454905f52600560205260405f2055600190565b505f90565b805f52600160205260405f2054155f14610831575f54600160401b81101561070a5760018101805f558110156107855781907f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56301555f54905f52600160205260405f205560019056fea2646970667358221220377c7c8f4b9c9b6585fa533deadc519659538dd3b8b8fd22fffd3bbad02b228064736f6c63430008190033","sourceMap":"181:124:63:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;181:124:63;;;;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;181:124:63;;;;;;;;;;;;;;;;;-1:-1:-1;;181:124:63;;;;-1:-1:-1;;;;;181:124:63;;;;;;;;;;;;;;1500:62:32;;:::i;:::-;2627:22;;2623:91;;181:124:63;;3004:6:32;181:124:63;;;;;;;;3004:6:32;181:124:63;;3052:40:32;181:124:63;3052:40:32;;181:124:63;2623:91:32;181:124:63;;;;;2672:31:32;;;;;;;;181:124:63;2672:31:32;181:124:63;;;;;;;-1:-1:-1;;181:124:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2364:565:36;2248:21:70;;;:::i;:::-;181:124:63;;;;;;;2299:40:70;181:124:63;2299:40:70;;181:124:63;;;;;;;;;;;;;2299:40:70;181:124:63;;;;;;;;:::i;:::-;2299:40:70;;;;;;;;;:::i;:::-;181:124:63;2289:51:70;;2364:565:36;;;;;;;;181:124:63;2364:565:36;;;;181:124:63;2364:565:36;181:124:63;;;;;2364:565:36;;;181:124:63;2364:565:36;181:124:63;2942:22:36;;;2938:86;;8409:50:61;;;:::i;:::-;;181:124:63;;1077:18:74;;;181:124:63;1077:18:74;;2382:33:70;;;;;181:124:63;;;;;;;;;2382:33:70;;181:124:63;2382:33:70;;;181:124:63;;;;;;:::i;:::-;2382:33:70;;;;;;;;;;;;181:124:63;;;;;;;;;2382:33:70;181:124:63;;;;;;;;;2382:33:70;;;;181:124:63;;;;;;;;;;;;2382:33:70;181:124:63;;;;;;;;;2938:86:36;181:124:63;;-1:-1:-1;;;2987:26:36;;181:124:63;;2987:26:36;181:124:63;;;;;;;-1:-1:-1;;181:124:63;;;;;;;;;:::i;:::-;;;;633:54:70;181:124:63;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;181:124:63;;;;;;:::i;:::-;1500:62:32;;;:::i;:::-;181:124:63;;;;;;;822:21:70;;;;818:72;;181:124:63;;;1946:11:70;181:124:63;;;;;;;;1942:76:70;;181:124:63;;;;1946:11:70;181:124:63;;;;2049:4:70;181:124:63;;;;;;;;2069:16:70;181:124:63;2069:16:70;;181:124:63;1942:76:70;181:124:63;;-1:-1:-1;;;1987:20:70;;;818:72;181:124:63;;-1:-1:-1;;;866:13:70;;;181:124:63;;;;;;;-1:-1:-1;;181:124:63;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;181:124:63;;;;;;;-1:-1:-1;181:124:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;181:124:63;;;;;;;;;;1500:62:32;;:::i;:::-;181:124:63;;-1:-1:-1;;;1476:34:70;;181:124:63;1476:34:70;181:124:63;1476:34:70;181:124:63;1476:34:70;;;;;;;;181:124:63;1476:34:70;;;181:124:63;-1:-1:-1;181:124:63;1522:4:70;1476:51;;;;;:102;;181:124:63;1472:163:70;;;8409:50:61;;;:::i;:::-;1648:49:70;1644:107;;1766:26;;181:124:63;1766:26:70;;181:124:63;1644:107:70;181:124:63;-1:-1:-1;;;1720:20:70;;;1472:163;181:124:63;-1:-1:-1;;;1601:23:70;;;1476:102;181:124:63;;-1:-1:-1;;;1531:31:70;;181:124:63;;-1:-1:-1;181:124:63;;1531:31:70;181:124:63;1531:31:70;;;;;;;;181:124:63;1531:31:70;;;1476:102;181:124:63;;;;;;;;;1531:47:70;;1476:102;;;1531:31;;;;;;;;;;;;;;;;:::i;:::-;;;181:124:63;;;;;;;;;;;;1531:31:70;;;;;;;;;1476:34;;;;;;;;;;;;;;;;;:::i;:::-;;;181:124:63;;;;;;;;;;;;1476:34:70;;;;;;;;;;181:124:63;;;;;;;;;;;;;;;;-1:-1:-1;;181:124:63;;;;1710:6:32;181:124:63;;;-1:-1:-1;;;;;181:124:63;;;;;;;;;;;;;;-1:-1:-1;;181:124:63;;;;1500:62:32;;:::i;:::-;3004:6;181:124:63;;-1:-1:-1;;;;;;181:124:63;;;;;;;-1:-1:-1;;;;;181:124:63;3052:40:32;181:124:63;;3052:40:32;181:124:63;;;;;;;;-1:-1:-1;;181:124:63;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;181:124:63;;;;;-1:-1:-1;;;;;181:124:63;;;;;;;;;;;;;4360:14:61;181:124:63;;;;;4360:26:61;;181:124:63;;;;;;;;;;;;;;:::o;:::-;;;2299:40:70;;181:124:63;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;181:124:63;;;;;;;;-1:-1:-1;;181:124:63;;;;:::o;1192:143:70:-;181:124:63;;1291:27:70;181:124:63;;;;;;1291:27:70;-1:-1:-1;181:124:63;;;;-1:-1:-1;;;;;181:124:63;;1192:143:70:o;181:124:63:-;;;;-1:-1:-1;181:124:63;;1291:27:70;181:124:63;;-1:-1:-1;181:124:63;1796:162:32;1710:6;181:124:63;-1:-1:-1;;;;;181:124:63;735:10:47;1855:23:32;1851:101;;1796:162::o;1851:101::-;181:124:63;;-1:-1:-1;;;1901:40:32;;735:10:47;1901:40:32;;;181:124:63;;;1901:40:32;2241:406:61;181:124:63;-1:-1:-1;181:124:63;4360:14:61;181:124:63;;;-1:-1:-1;181:124:63;;4360:26:61;2320:321;181:124:63;;;;;-1:-1:-1;;;181:124:63;;;;;4360:14:61;181:124:63;;;;;;;;;;;;;;;;;;-1:-1:-1;181:124:63;4360:14:61;181:124:63;;;-1:-1:-1;181:124:63;;4360:14:61;2576:11;:::o;2320:321::-;2618:12;-1:-1:-1;2618:12:61;:::o;2241:406::-;181:124:63;;;4360:14:61;181:124:63;;;;;;4360:26:61;2320:321;181:124:63;;;;;-1:-1:-1;;;181:124:63;;;;;4360:14:61;181:124:63;;;;;;;;;;;;;;;;;;;;4360:14:61;181:124:63;;;;;;4360:14:61;2576:11;:::o","linkReferences":{}},"methodIdentifiers":{"blacklist(uint64)":"b572a966","blacklisted(uint64)":"b6caa119","create(uint64,bytes)":"cd108ef8","entity(uint256)":"b42ba2a2","implementation(uint64)":"f9661602","isEntity(address)":"14887c58","owner()":"8da5cb5b","renounceOwnership()":"715018a6","totalEntities()":"5cd8b15e","totalTypes()":"f15df2e5","transferOwnership(address)":"f2fde38b","whitelist(address)":"9b19251a"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AlreadyBlacklisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadyWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1167FailedCreateClone\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EntityNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidType\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"entity\",\"type\":\"address\"}],\"name\":\"AddEntity\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"type_\",\"type\":\"uint64\"}],\"name\":\"Blacklist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Whitelist\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"type_\",\"type\":\"uint64\"}],\"name\":\"blacklist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"type_\",\"type\":\"uint64\"}],\"name\":\"blacklisted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"type_\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"create\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"entity_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"entity\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"type_\",\"type\":\"uint64\"}],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"entity_\",\"type\":\"address\"}],\"name\":\"isEntity\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalEntities\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalTypes\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation_\",\"type\":\"address\"}],\"name\":\"whitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"ERC1167FailedCreateClone()\":[{\"details\":\"A clone instance deployment failed.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"events\":{\"AddEntity(address)\":{\"params\":{\"entity\":\"address of the added entity\"}},\"Blacklist(uint64)\":{\"details\":\"The given type is still deployable.\",\"params\":{\"type_\":\"type that was blacklisted\"}},\"Whitelist(address)\":{\"params\":{\"implementation\":\"address of the new implementation\"}}},\"kind\":\"dev\",\"methods\":{\"blacklist(uint64)\":{\"details\":\"The given type will still be deployable.\",\"params\":{\"type_\":\"type to blacklist\"}},\"create(uint64,bytes)\":{\"details\":\"CREATE2 salt is constructed from the given parameters.\",\"params\":{\"data\":\"initial data for the entity creation\",\"type_\":\"type's implementation to use\"},\"returns\":{\"entity_\":\"address of the entity\"}},\"entity(uint256)\":{\"params\":{\"index\":\"index of the entity to get\"},\"returns\":{\"_0\":\"address of the entity\"}},\"implementation(uint64)\":{\"params\":{\"type_\":\"position to get the implementation at\"},\"returns\":{\"_0\":\"address of the implementation\"}},\"isEntity(address)\":{\"params\":{\"account\":\"address to check\"},\"returns\":{\"_0\":\"if the given address is an entity\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"totalEntities()\":{\"returns\":{\"_0\":\"total number of entities added\"}},\"totalTypes()\":{\"returns\":{\"_0\":\"total number of types\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"whitelist(address)\":{\"params\":{\"implementation\":\"address of the new implementation\"}}},\"version\":1},\"userdoc\":{\"events\":{\"AddEntity(address)\":{\"notice\":\"Emitted when an entity is added.\"},\"Blacklist(uint64)\":{\"notice\":\"Emitted when a type is blacklisted (e.g., in case of invalid implementation).\"},\"Whitelist(address)\":{\"notice\":\"Emitted when a new type is whitelisted.\"}},\"kind\":\"user\",\"methods\":{\"blacklist(uint64)\":{\"notice\":\"Blacklist a type of entity.\"},\"blacklisted(uint64)\":{\"notice\":\"Get if a type is blacklisted (e.g., in case of invalid implementation).\"},\"create(uint64,bytes)\":{\"notice\":\"Create a new entity at the factory.\"},\"entity(uint256)\":{\"notice\":\"Get an entity given its index.\"},\"implementation(uint64)\":{\"notice\":\"Get the implementation for a given type.\"},\"isEntity(address)\":{\"notice\":\"Get if a given address is an entity.\"},\"totalEntities()\":{\"notice\":\"Get a total number of entities.\"},\"totalTypes()\":{\"notice\":\"Get the total number of whitelisted types.\"},\"whitelist(address)\":{\"notice\":\"Whitelist a new type of entity.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/DelegatorFactory.sol\":\"DelegatorFactory\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/proxy/Clones.sol\":{\"keccak256\":\"0xd18408af8a91bedb3d56343eeb9b30eb852e6dea93a5e2d5c6db9ca4cb905155\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://061475b7302a732dc598907790f407417551c2b13e89daa57b3698489ef5484b\",\"dweb:/ipfs/QmdX5qmk3VSniSErFuD4aVawQxUi2MuUbP7spPcHddPfcX\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1\",\"dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA\"]},\"src/contracts/DelegatorFactory.sol\":{\"keccak256\":\"0x3c3fb62c441302f4f75d94703779f5c4bb755c06f310b4c923dbf24d6e0adda9\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://597fa8be7179d8a555bf942c1dea0504273a1d34f6ac4c206fc2e816da143e68\",\"dweb:/ipfs/Qmf54DKNYXC7fTMcAFABw68RC6ZFenVgyAPGhbPTf6s5TR\"]},\"src/contracts/common/Factory.sol\":{\"keccak256\":\"0x41764643e6a2a3d80d694a3efee91f50a2fd084fb2bcd13566259443840e6369\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://fefc1e2a2189275388826f4f82ca421ca79c2866d3ef39dc2c7df46fe7cbf7c9\",\"dweb:/ipfs/QmSJ4VGmgpYUv5ni4ZYoSV4qMuZrk5DLjyB3Vv9NbFgeNZ\"]},\"src/contracts/common/Registry.sol\":{\"keccak256\":\"0x4a4004836d920953a8ec6e223de9a330f43acf7a5b93c6b8b3e4a95e0f129889\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://e8bdda207f3852c683a2b481602239a914f7e26bcd042ade618e263a43b67652\",\"dweb:/ipfs/Qmb8GZykJWxZcfwNp3SqhFizDFydFuV6LXgemV3vnWyLyu\"]},\"src/interfaces/IDelegatorFactory.sol\":{\"keccak256\":\"0x7850453237ca93b301393506d2489a38830a60be0c29f39a4a1aee3508d836e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8f418702b883c90e046af92d5654a25849baf79b61c11401ad603b861fed7b80\",\"dweb:/ipfs/Qmdju1XFJXx3uJidzoS7srcoSnzT8jUoPAmGEdbceYgB7j\"]},\"src/interfaces/common/IEntity.sol\":{\"keccak256\":\"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b\",\"dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv\"]},\"src/interfaces/common/IFactory.sol\":{\"keccak256\":\"0xe835ebda85d181b70874f6eb53f2a892aa3223d23efe247060da9b51d2b8e969\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://48b3dfb5f0491d90efbc8ed498b45358260ebac6e8f2aa0106b8b8fabdc988cb\",\"dweb:/ipfs/QmWnnCs3xiHeUvYfUWMJTSFZWc34bSYn9Zpm7f7syra3TA\"]},\"src/interfaces/common/IRegistry.sol\":{\"keccak256\":\"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014\",\"dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AlreadyBlacklisted"},{"inputs":[],"type":"error","name":"AlreadyWhitelisted"},{"inputs":[],"type":"error","name":"ERC1167FailedCreateClone"},{"inputs":[],"type":"error","name":"EntityNotExist"},{"inputs":[],"type":"error","name":"InvalidImplementation"},{"inputs":[],"type":"error","name":"InvalidType"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"entity","type":"address","indexed":true}],"type":"event","name":"AddEntity","anonymous":false},{"inputs":[{"internalType":"uint64","name":"type_","type":"uint64","indexed":true}],"type":"event","name":"Blacklist","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Whitelist","anonymous":false},{"inputs":[{"internalType":"uint64","name":"type_","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"blacklist"},{"inputs":[{"internalType":"uint64","name":"type_","type":"uint64"}],"stateMutability":"view","type":"function","name":"blacklisted","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"type_","type":"uint64"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"create","outputs":[{"internalType":"address","name":"entity_","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function","name":"entity","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"type_","type":"uint64"}],"stateMutability":"view","type":"function","name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"entity_","type":"address"}],"stateMutability":"view","type":"function","name":"isEntity","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"totalEntities","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalTypes","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"address","name":"implementation_","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"whitelist"}],"devdoc":{"kind":"dev","methods":{"blacklist(uint64)":{"details":"The given type will still be deployable.","params":{"type_":"type to blacklist"}},"create(uint64,bytes)":{"details":"CREATE2 salt is constructed from the given parameters.","params":{"data":"initial data for the entity creation","type_":"type's implementation to use"},"returns":{"entity_":"address of the entity"}},"entity(uint256)":{"params":{"index":"index of the entity to get"},"returns":{"_0":"address of the entity"}},"implementation(uint64)":{"params":{"type_":"position to get the implementation at"},"returns":{"_0":"address of the implementation"}},"isEntity(address)":{"params":{"account":"address to check"},"returns":{"_0":"if the given address is an entity"}},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"totalEntities()":{"returns":{"_0":"total number of entities added"}},"totalTypes()":{"returns":{"_0":"total number of types"}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"whitelist(address)":{"params":{"implementation":"address of the new implementation"}}},"version":1},"userdoc":{"kind":"user","methods":{"blacklist(uint64)":{"notice":"Blacklist a type of entity."},"blacklisted(uint64)":{"notice":"Get if a type is blacklisted (e.g., in case of invalid implementation)."},"create(uint64,bytes)":{"notice":"Create a new entity at the factory."},"entity(uint256)":{"notice":"Get an entity given its index."},"implementation(uint64)":{"notice":"Get the implementation for a given type."},"isEntity(address)":{"notice":"Get if a given address is an entity."},"totalEntities()":{"notice":"Get a total number of entities."},"totalTypes()":{"notice":"Get the total number of whitelisted types."},"whitelist(address)":{"notice":"Whitelist a new type of entity."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/DelegatorFactory.sol":"DelegatorFactory"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/Clones.sol":{"keccak256":"0xd18408af8a91bedb3d56343eeb9b30eb852e6dea93a5e2d5c6db9ca4cb905155","urls":["bzz-raw://061475b7302a732dc598907790f407417551c2b13e89daa57b3698489ef5484b","dweb:/ipfs/QmdX5qmk3VSniSErFuD4aVawQxUi2MuUbP7spPcHddPfcX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol":{"keccak256":"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa","urls":["bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1","dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA"],"license":"MIT"},"src/contracts/DelegatorFactory.sol":{"keccak256":"0x3c3fb62c441302f4f75d94703779f5c4bb755c06f310b4c923dbf24d6e0adda9","urls":["bzz-raw://597fa8be7179d8a555bf942c1dea0504273a1d34f6ac4c206fc2e816da143e68","dweb:/ipfs/Qmf54DKNYXC7fTMcAFABw68RC6ZFenVgyAPGhbPTf6s5TR"],"license":"BUSL-1.1"},"src/contracts/common/Factory.sol":{"keccak256":"0x41764643e6a2a3d80d694a3efee91f50a2fd084fb2bcd13566259443840e6369","urls":["bzz-raw://fefc1e2a2189275388826f4f82ca421ca79c2866d3ef39dc2c7df46fe7cbf7c9","dweb:/ipfs/QmSJ4VGmgpYUv5ni4ZYoSV4qMuZrk5DLjyB3Vv9NbFgeNZ"],"license":"BUSL-1.1"},"src/contracts/common/Registry.sol":{"keccak256":"0x4a4004836d920953a8ec6e223de9a330f43acf7a5b93c6b8b3e4a95e0f129889","urls":["bzz-raw://e8bdda207f3852c683a2b481602239a914f7e26bcd042ade618e263a43b67652","dweb:/ipfs/Qmb8GZykJWxZcfwNp3SqhFizDFydFuV6LXgemV3vnWyLyu"],"license":"BUSL-1.1"},"src/interfaces/IDelegatorFactory.sol":{"keccak256":"0x7850453237ca93b301393506d2489a38830a60be0c29f39a4a1aee3508d836e6","urls":["bzz-raw://8f418702b883c90e046af92d5654a25849baf79b61c11401ad603b861fed7b80","dweb:/ipfs/Qmdju1XFJXx3uJidzoS7srcoSnzT8jUoPAmGEdbceYgB7j"],"license":"MIT"},"src/interfaces/common/IEntity.sol":{"keccak256":"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21","urls":["bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b","dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv"],"license":"MIT"},"src/interfaces/common/IFactory.sol":{"keccak256":"0xe835ebda85d181b70874f6eb53f2a892aa3223d23efe247060da9b51d2b8e969","urls":["bzz-raw://48b3dfb5f0491d90efbc8ed498b45358260ebac6e8f2aa0106b8b8fabdc988cb","dweb:/ipfs/QmWnnCs3xiHeUvYfUWMJTSFZWc34bSYn9Zpm7f7syra3TA"],"license":"MIT"},"src/interfaces/common/IRegistry.sol":{"keccak256":"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb","urls":["bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014","dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK"],"license":"MIT"}},"version":1},"id":63} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[{"name":"owner_","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"blacklist","inputs":[{"name":"type_","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"blacklisted","inputs":[{"name":"type_","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"create","inputs":[{"name":"type_","type":"uint64","internalType":"uint64"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"entity_","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"entity","inputs":[{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"implementation","inputs":[{"name":"type_","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"isEntity","inputs":[{"name":"entity_","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"totalEntities","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"totalTypes","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"whitelist","inputs":[{"name":"implementation_","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"AddEntity","inputs":[{"name":"entity","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Blacklist","inputs":[{"name":"type_","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Whitelist","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AlreadyBlacklisted","inputs":[]},{"type":"error","name":"AlreadyWhitelisted","inputs":[]},{"type":"error","name":"EntityNotExist","inputs":[]},{"type":"error","name":"FailedDeployment","inputs":[]},{"type":"error","name":"InsufficientBalance","inputs":[{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidImplementation","inputs":[]},{"type":"error","name":"InvalidType","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x60803460b557601f6109a338819003918201601f19168301916001600160401b0383118484101760b95780849260209460405283398101031260b557516001600160a01b03908181169081900360b5578015609d57600280546001600160a01b03198116831790915560405192167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a36108d590816100ce8239f35b604051631e4fbdf760e01b81525f6004820152602490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080604090808252600480361015610015575f80fd5b5f3560e01c91826314887c5814610698575081635cd8b15e1461067b578163715018a6146106205781638da5cb5b146105f85781639b19251a14610485578163b42ba2a21461041a578163b572a96614610375578163b6caa11914610338578163cd108ef814610194578163f15df2e51461016e578163f2fde38b146100dd575063f9661602146100a4575f80fd5b346100d95760203660031901126100d9576020906100c86100c36106d1565b61073e565b90516001600160a01b039091168152f35b5f80fd5b82346100d95760203660031901126100d9576001600160a01b038235818116939192908490036100d95761010f610799565b8315610158575050600254826bffffffffffffffffffffffff60a01b821617600255167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b905f6024925191631e4fbdf760e01b8352820152fd5b82346100d9575f3660031901126100d95767ffffffffffffffff60209254169051908152f35b82346100d957806003193601126100d9576101ad6106d1565b906024359167ffffffffffffffff8084116100d957366023850112156100d95783850135918183116100d957602485019460248436920101116100d9576e5af43d82803e903d91602b57fd5bf36102038261073e565b915f54908487519160208301938452168782015260608082015261023d8161022f60808201898c61071e565b03601f1981018352826106e8565b51902091763d602d80600a3d3981f3363d3d373d3d3d363d7300000062ffffff8260881c16175f5260781b1760205260018060a01b0390603760095ff5169384156103285761028b85610836565b50835192857fb919910dcefbf753bfd926ab3b1d3f85d877190c3d01ba1bd585047b99b99f0b5f80a2853b156100d957836102dd5f93829363439fab9160e01b845260208b850152602484019161071e565b038183885af1801561031e576102f8575b6020848451908152f35b811161030b5760209350815283806102ee565b604184634e487b7160e01b5f525260245ffd5b83513d5f823e3d90fd5b835163b06ebf3d60e01b81528690fd5b82346100d95760203660031901126100d95760209067ffffffffffffffff61035e6106d1565b165f526003825260ff815f20541690519015158152f35b82346100d95760203660031901126100d95761038f6106d1565b91610398610799565b67ffffffffffffffff8082541693169283101561040c57825f52600360205260ff825f2054166103fe5750815f5260036020525f20600160ff198254161790557ffc8245c2838846b295ae66fbe0d08e20c799b737c93b56f7b209df2e5fa2d4585f80a2005b905163f53de75f60e01b8152fd5b905163b968846160e01b8152fd5b82346100d95760203660031901126100d95781355f54811015610472575f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563015490516001600160a01b03909116815260209150f35b603283634e487b7160e01b5f525260245ffd5b9050346100d957602091826003193601126100d95781356001600160a01b0381811694918590036100d9576104b8610799565b82516202dd3160ec1b81529082828681895afa9182156105ee575f926105b6575b501630148015919061053a575b5061052d576104f4836107c5565b1561052057827feb73900b98b6a3e2b8b01708fe544760cf570d21e7fbe5225f24e48b5b2b432e5f80a2005b5163b73e95e160e01b8152fd5b5163340aafcd60e11b8152fd5b8251635d927f4560e11b815290915081818581885afa91821561031e575f92610577575b505067ffffffffffffffff80845416911614155f6104e6565b90809250813d83116105af575b61058e81836106e8565b810103126100d9575167ffffffffffffffff811681036100d9575f8061055e565b503d610584565b9091508281813d83116105e7575b6105ce81836106e8565b810103126100d9575181811681036100d957905f6104d9565b503d6105c4565b84513d5f823e3d90fd5b82346100d9575f3660031901126100d95760025490516001600160a01b039091168152602090f35b346100d9575f3660031901126100d957610638610799565b600280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b82346100d9575f3660031901126100d9576020905f549051908152f35b9150346100d95760203660031901126100d957356001600160a01b03811692908390036100d9576020925f52600183525f205415158152f35b6004359067ffffffffffffffff821682036100d957565b90601f8019910116810190811067ffffffffffffffff82111761070a57604052565b634e487b7160e01b5f52604160045260245ffd5b908060209392818452848401375f828201840152601f01601f1916010190565b67ffffffffffffffff166004548110156107855760045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01546001600160a01b031690565b634e487b7160e01b5f52603260045260245ffd5b6002546001600160a01b031633036107ad57565b60405163118cdaa760e01b8152336004820152602490fd5b805f52600560205260405f2054155f1461083157600454600160401b81101561070a5760018101806004558110156107855781907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0155600454905f52600560205260405f2055600190565b505f90565b805f52600160205260405f2054155f14610831575f54600160401b81101561070a5760018101805f558110156107855781907f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56301555f54905f52600160205260405f205560019056fea26469706673582212202f64ed78727e3ad5dbb8e829a6bbdb36ca469dbfdbbec2a5a7732c3c66e2cdc864736f6c63430008190033","sourceMap":"181:124:70:-:0;;;;;;;;;;;;;-1:-1:-1;;181:124:70;;;;-1:-1:-1;;;;;181:124:70;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;181:124:70;;;;;;;;;;1273:26:30;;1269:95;;3004:6;181:124:70;;-1:-1:-1;;;;;;181:124:70;;;;;;;;;;;3052:40:30;-1:-1:-1;;3052:40:30;181:124:70;;;;;;;1269:95:30;181:124:70;;-1:-1:-1;;;1322:31:30;;-1:-1:-1;1322:31:30;;;181:124:70;;;1322:31:30;181:124:70;-1:-1:-1;181:124:70;;;;;;-1:-1:-1;181:124:70;;;;;-1:-1:-1;181:124:70","linkReferences":{}},"deployedBytecode":{"object":"0x6080604090808252600480361015610015575f80fd5b5f3560e01c91826314887c5814610698575081635cd8b15e1461067b578163715018a6146106205781638da5cb5b146105f85781639b19251a14610485578163b42ba2a21461041a578163b572a96614610375578163b6caa11914610338578163cd108ef814610194578163f15df2e51461016e578163f2fde38b146100dd575063f9661602146100a4575f80fd5b346100d95760203660031901126100d9576020906100c86100c36106d1565b61073e565b90516001600160a01b039091168152f35b5f80fd5b82346100d95760203660031901126100d9576001600160a01b038235818116939192908490036100d95761010f610799565b8315610158575050600254826bffffffffffffffffffffffff60a01b821617600255167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b905f6024925191631e4fbdf760e01b8352820152fd5b82346100d9575f3660031901126100d95767ffffffffffffffff60209254169051908152f35b82346100d957806003193601126100d9576101ad6106d1565b906024359167ffffffffffffffff8084116100d957366023850112156100d95783850135918183116100d957602485019460248436920101116100d9576e5af43d82803e903d91602b57fd5bf36102038261073e565b915f54908487519160208301938452168782015260608082015261023d8161022f60808201898c61071e565b03601f1981018352826106e8565b51902091763d602d80600a3d3981f3363d3d373d3d3d363d7300000062ffffff8260881c16175f5260781b1760205260018060a01b0390603760095ff5169384156103285761028b85610836565b50835192857fb919910dcefbf753bfd926ab3b1d3f85d877190c3d01ba1bd585047b99b99f0b5f80a2853b156100d957836102dd5f93829363439fab9160e01b845260208b850152602484019161071e565b038183885af1801561031e576102f8575b6020848451908152f35b811161030b5760209350815283806102ee565b604184634e487b7160e01b5f525260245ffd5b83513d5f823e3d90fd5b835163b06ebf3d60e01b81528690fd5b82346100d95760203660031901126100d95760209067ffffffffffffffff61035e6106d1565b165f526003825260ff815f20541690519015158152f35b82346100d95760203660031901126100d95761038f6106d1565b91610398610799565b67ffffffffffffffff8082541693169283101561040c57825f52600360205260ff825f2054166103fe5750815f5260036020525f20600160ff198254161790557ffc8245c2838846b295ae66fbe0d08e20c799b737c93b56f7b209df2e5fa2d4585f80a2005b905163f53de75f60e01b8152fd5b905163b968846160e01b8152fd5b82346100d95760203660031901126100d95781355f54811015610472575f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563015490516001600160a01b03909116815260209150f35b603283634e487b7160e01b5f525260245ffd5b9050346100d957602091826003193601126100d95781356001600160a01b0381811694918590036100d9576104b8610799565b82516202dd3160ec1b81529082828681895afa9182156105ee575f926105b6575b501630148015919061053a575b5061052d576104f4836107c5565b1561052057827feb73900b98b6a3e2b8b01708fe544760cf570d21e7fbe5225f24e48b5b2b432e5f80a2005b5163b73e95e160e01b8152fd5b5163340aafcd60e11b8152fd5b8251635d927f4560e11b815290915081818581885afa91821561031e575f92610577575b505067ffffffffffffffff80845416911614155f6104e6565b90809250813d83116105af575b61058e81836106e8565b810103126100d9575167ffffffffffffffff811681036100d9575f8061055e565b503d610584565b9091508281813d83116105e7575b6105ce81836106e8565b810103126100d9575181811681036100d957905f6104d9565b503d6105c4565b84513d5f823e3d90fd5b82346100d9575f3660031901126100d95760025490516001600160a01b039091168152602090f35b346100d9575f3660031901126100d957610638610799565b600280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b82346100d9575f3660031901126100d9576020905f549051908152f35b9150346100d95760203660031901126100d957356001600160a01b03811692908390036100d9576020925f52600183525f205415158152f35b6004359067ffffffffffffffff821682036100d957565b90601f8019910116810190811067ffffffffffffffff82111761070a57604052565b634e487b7160e01b5f52604160045260245ffd5b908060209392818452848401375f828201840152601f01601f1916010190565b67ffffffffffffffff166004548110156107855760045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01546001600160a01b031690565b634e487b7160e01b5f52603260045260245ffd5b6002546001600160a01b031633036107ad57565b60405163118cdaa760e01b8152336004820152602490fd5b805f52600560205260405f2054155f1461083157600454600160401b81101561070a5760018101806004558110156107855781907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0155600454905f52600560205260405f2055600190565b505f90565b805f52600160205260405f2054155f14610831575f54600160401b81101561070a5760018101805f558110156107855781907f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56301555f54905f52600160205260405f205560019056fea26469706673582212202f64ed78727e3ad5dbb8e829a6bbdb36ca469dbfdbbec2a5a7732c3c66e2cdc864736f6c63430008190033","sourceMap":"181:124:70:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;181:124:70;;;;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;181:124:70;;;;;;;;;;;;;;;;;-1:-1:-1;;181:124:70;;;;-1:-1:-1;;;;;181:124:70;;;;;;;;;;;;;;1500:62:30;;:::i;:::-;2627:22;;2623:91;;181:124:70;;3004:6:30;181:124:70;;;;;;;;3004:6:30;181:124:70;;3052:40:30;181:124:70;3052:40:30;;181:124:70;2623:91:30;181:124:70;;;;;2672:31:30;;;;;;;;181:124:70;2672:31:30;181:124:70;;;;;;;-1:-1:-1;;181:124:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3673:585:43;2248:21:77;;;:::i;:::-;181:124:70;;;;;;;2299:40:77;181:124:70;2299:40:77;;181:124:70;;;;;;;;;;;;;2299:40:77;181:124:70;;;;;;;;:::i;:::-;2299:40:77;;;;;;;;;:::i;:::-;181:124:70;2289:51:77;;3673:585:43;;;;;;;;181:124:70;3673:585:43;;;;181:124:70;3673:585:43;181:124:70;;;;;3673:585:43;;;181:124:70;3673:585:43;181:124:70;4271:22:43;;;4267:85;;8382:50:67;;;:::i;:::-;;181:124:70;;1077:18:81;;;181:124:70;1077:18:81;;2382:33:77;;;;;181:124:70;;;;;;;;;2382:33:77;;181:124:70;2382:33:77;;;181:124:70;;;;;;:::i;:::-;2382:33:77;;;;;;;;;;;;181:124:70;;;;;;;;;2382:33:77;181:124:70;;;;;;;;;2382:33:77;;;;181:124:70;;;;;;;;;;;;2382:33:77;181:124:70;;;;;;;;;4267:85:43;181:124:70;;-1:-1:-1;;;4316:25:43;;181:124:70;;4316:25:43;181:124:70;;;;;;;-1:-1:-1;;181:124:70;;;;;;;;;:::i;:::-;;;;633:54:77;181:124:70;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;181:124:70;;;;;;:::i;:::-;1500:62:30;;;:::i;:::-;181:124:70;;;;;;;822:21:77;;;;818:72;;181:124:70;;;1946:11:77;181:124:70;;;;;;;;1942:76:77;;181:124:70;;;;1946:11:77;181:124:70;;;;2049:4:77;181:124:70;;;;;;;;2069:16:77;181:124:70;2069:16:77;;181:124:70;1942:76:77;181:124:70;;-1:-1:-1;;;1987:20:77;;;818:72;181:124:70;;-1:-1:-1;;;866:13:77;;;181:124:70;;;;;;;-1:-1:-1;;181:124:70;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;181:124:70;;;;;;;-1:-1:-1;181:124:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;181:124:70;;;;;;;;;;1500:62:30;;:::i;:::-;181:124:70;;-1:-1:-1;;;1476:34:77;;181:124:70;1476:34:77;181:124:70;1476:34:77;181:124:70;1476:34:77;;;;;;;;181:124:70;1476:34:77;;;181:124:70;-1:-1:-1;181:124:70;1522:4:77;1476:51;;;;;:102;;181:124:70;1472:163:77;;;8382:50:67;;;:::i;:::-;1648:49:77;1644:107;;1766:26;;181:124:70;1766:26:77;;181:124:70;1644:107:77;181:124:70;-1:-1:-1;;;1720:20:77;;;1472:163;181:124:70;-1:-1:-1;;;1601:23:77;;;1476:102;181:124:70;;-1:-1:-1;;;1531:31:77;;181:124:70;;-1:-1:-1;181:124:70;;1531:31:77;181:124:70;1531:31:77;;;;;;;;181:124:70;1531:31:77;;;1476:102;181:124:70;;;;;;;;;1531:47:77;;1476:102;;;1531:31;;;;;;;;;;;;;;;;:::i;:::-;;;181:124:70;;;;;;;;;;;;1531:31:77;;;;;;;;;1476:34;;;;;;;;;;;;;;;;;:::i;:::-;;;181:124:70;;;;;;;;;;;;1476:34:77;;;;;;;;;;181:124:70;;;;;;;;;;;;;;;;-1:-1:-1;;181:124:70;;;;1710:6:30;181:124:70;;;-1:-1:-1;;;;;181:124:70;;;;;;;;;;;;;;-1:-1:-1;;181:124:70;;;;1500:62:30;;:::i;:::-;3004:6;181:124:70;;-1:-1:-1;;;;;;181:124:70;;;;;;;-1:-1:-1;;;;;181:124:70;3052:40:30;181:124:70;;3052:40:30;181:124:70;;;;;;;;-1:-1:-1;;181:124:70;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;181:124:70;;;;;-1:-1:-1;;;;;181:124:70;;;;;;;;;;;;;4360:14:67;181:124:70;;;;;4360:26:67;;181:124:70;;;;;;;;;;;;;;:::o;:::-;;;2299:40:77;;181:124:70;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;181:124:70;;;;;;;;-1:-1:-1;;181:124:70;;;;:::o;1192:143:77:-;181:124:70;;1291:27:77;181:124:70;;;;;;1291:27:77;-1:-1:-1;181:124:70;;;;-1:-1:-1;;;;;181:124:70;;1192:143:77:o;181:124:70:-;;;;-1:-1:-1;181:124:70;;1291:27:77;181:124:70;;-1:-1:-1;181:124:70;1796:162:30;1710:6;181:124:70;-1:-1:-1;;;;;181:124:70;735:10:52;1855:23:30;1851:101;;1796:162::o;1851:101::-;181:124:70;;-1:-1:-1;;;1901:40:30;;735:10:52;1901:40:30;;;181:124:70;;;1901:40:30;2241:406:67;181:124:70;-1:-1:-1;181:124:70;4360:14:67;181:124:70;;;-1:-1:-1;181:124:70;;4360:26:67;2320:321;181:124:70;;;;;-1:-1:-1;;;181:124:70;;;;;4360:14:67;181:124:70;;;;;;;;;;;;;;;;;;-1:-1:-1;181:124:70;4360:14:67;181:124:70;;;-1:-1:-1;181:124:70;;4360:14:67;2576:11;:::o;2320:321::-;2618:12;-1:-1:-1;2618:12:67;:::o;2241:406::-;181:124:70;;;4360:14:67;181:124:70;;;;;;4360:26:67;2320:321;181:124:70;;;;;-1:-1:-1;;;181:124:70;;;;;4360:14:67;181:124:70;;;;;;;;;;;;;;;;;;;;4360:14:67;181:124:70;;;;;;4360:14:67;2576:11;:::o","linkReferences":{}},"methodIdentifiers":{"blacklist(uint64)":"b572a966","blacklisted(uint64)":"b6caa119","create(uint64,bytes)":"cd108ef8","entity(uint256)":"b42ba2a2","implementation(uint64)":"f9661602","isEntity(address)":"14887c58","owner()":"8da5cb5b","renounceOwnership()":"715018a6","totalEntities()":"5cd8b15e","totalTypes()":"f15df2e5","transferOwnership(address)":"f2fde38b","whitelist(address)":"9b19251a"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AlreadyBlacklisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadyWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EntityNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedDeployment\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidType\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"entity\",\"type\":\"address\"}],\"name\":\"AddEntity\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"type_\",\"type\":\"uint64\"}],\"name\":\"Blacklist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Whitelist\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"type_\",\"type\":\"uint64\"}],\"name\":\"blacklist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"type_\",\"type\":\"uint64\"}],\"name\":\"blacklisted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"type_\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"create\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"entity_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"entity\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"type_\",\"type\":\"uint64\"}],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"entity_\",\"type\":\"address\"}],\"name\":\"isEntity\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalEntities\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalTypes\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation_\",\"type\":\"address\"}],\"name\":\"whitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"FailedDeployment()\":[{\"details\":\"The deployment failed.\"}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"events\":{\"AddEntity(address)\":{\"params\":{\"entity\":\"address of the added entity\"}},\"Blacklist(uint64)\":{\"details\":\"The given type is still deployable.\",\"params\":{\"type_\":\"type that was blacklisted\"}},\"Whitelist(address)\":{\"params\":{\"implementation\":\"address of the new implementation\"}}},\"kind\":\"dev\",\"methods\":{\"blacklist(uint64)\":{\"details\":\"The given type will still be deployable.\",\"params\":{\"type_\":\"type to blacklist\"}},\"create(uint64,bytes)\":{\"details\":\"CREATE2 salt is constructed from the given parameters.\",\"params\":{\"data\":\"initial data for the entity creation\",\"type_\":\"type's implementation to use\"},\"returns\":{\"entity_\":\"address of the entity\"}},\"entity(uint256)\":{\"params\":{\"index\":\"index of the entity to get\"},\"returns\":{\"_0\":\"address of the entity\"}},\"implementation(uint64)\":{\"params\":{\"type_\":\"position to get the implementation at\"},\"returns\":{\"_0\":\"address of the implementation\"}},\"isEntity(address)\":{\"params\":{\"account\":\"address to check\"},\"returns\":{\"_0\":\"if the given address is an entity\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"totalEntities()\":{\"returns\":{\"_0\":\"total number of entities added\"}},\"totalTypes()\":{\"returns\":{\"_0\":\"total number of types\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"whitelist(address)\":{\"params\":{\"implementation\":\"address of the new implementation\"}}},\"version\":1},\"userdoc\":{\"events\":{\"AddEntity(address)\":{\"notice\":\"Emitted when an entity is added.\"},\"Blacklist(uint64)\":{\"notice\":\"Emitted when a type is blacklisted (e.g., in case of invalid implementation).\"},\"Whitelist(address)\":{\"notice\":\"Emitted when a new type is whitelisted.\"}},\"kind\":\"user\",\"methods\":{\"blacklist(uint64)\":{\"notice\":\"Blacklist a type of entity.\"},\"blacklisted(uint64)\":{\"notice\":\"Get if a type is blacklisted (e.g., in case of invalid implementation).\"},\"create(uint64,bytes)\":{\"notice\":\"Create a new entity at the factory.\"},\"entity(uint256)\":{\"notice\":\"Get an entity given its index.\"},\"implementation(uint64)\":{\"notice\":\"Get the implementation for a given type.\"},\"isEntity(address)\":{\"notice\":\"Get if a given address is an entity.\"},\"totalEntities()\":{\"notice\":\"Get a total number of entities.\"},\"totalTypes()\":{\"notice\":\"Get the total number of whitelisted types.\"},\"whitelist(address)\":{\"notice\":\"Whitelist a new type of entity.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/DelegatorFactory.sol\":\"DelegatorFactory\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/proxy/Clones.sol\":{\"keccak256\":\"0xf55d01dac75cffdabec6833a79bf3be0c108fc0db10e273daf7adfd3e9e59dae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://540002a50a2a1a2b9dafffb976178e55adbf8d3a28db462c69f996921479c6b0\",\"dweb:/ipfs/QmQNAFyMf2FW3U1giM4Yej3zzd1pnxMtAA5GoADj4hTYYD\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f\",\"dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz\"]},\"src/contracts/DelegatorFactory.sol\":{\"keccak256\":\"0x3c3fb62c441302f4f75d94703779f5c4bb755c06f310b4c923dbf24d6e0adda9\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://597fa8be7179d8a555bf942c1dea0504273a1d34f6ac4c206fc2e816da143e68\",\"dweb:/ipfs/Qmf54DKNYXC7fTMcAFABw68RC6ZFenVgyAPGhbPTf6s5TR\"]},\"src/contracts/common/Factory.sol\":{\"keccak256\":\"0x41764643e6a2a3d80d694a3efee91f50a2fd084fb2bcd13566259443840e6369\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://fefc1e2a2189275388826f4f82ca421ca79c2866d3ef39dc2c7df46fe7cbf7c9\",\"dweb:/ipfs/QmSJ4VGmgpYUv5ni4ZYoSV4qMuZrk5DLjyB3Vv9NbFgeNZ\"]},\"src/contracts/common/Registry.sol\":{\"keccak256\":\"0x4a4004836d920953a8ec6e223de9a330f43acf7a5b93c6b8b3e4a95e0f129889\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://e8bdda207f3852c683a2b481602239a914f7e26bcd042ade618e263a43b67652\",\"dweb:/ipfs/Qmb8GZykJWxZcfwNp3SqhFizDFydFuV6LXgemV3vnWyLyu\"]},\"src/interfaces/IDelegatorFactory.sol\":{\"keccak256\":\"0x7850453237ca93b301393506d2489a38830a60be0c29f39a4a1aee3508d836e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8f418702b883c90e046af92d5654a25849baf79b61c11401ad603b861fed7b80\",\"dweb:/ipfs/Qmdju1XFJXx3uJidzoS7srcoSnzT8jUoPAmGEdbceYgB7j\"]},\"src/interfaces/common/IEntity.sol\":{\"keccak256\":\"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b\",\"dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv\"]},\"src/interfaces/common/IFactory.sol\":{\"keccak256\":\"0xe835ebda85d181b70874f6eb53f2a892aa3223d23efe247060da9b51d2b8e969\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://48b3dfb5f0491d90efbc8ed498b45358260ebac6e8f2aa0106b8b8fabdc988cb\",\"dweb:/ipfs/QmWnnCs3xiHeUvYfUWMJTSFZWc34bSYn9Zpm7f7syra3TA\"]},\"src/interfaces/common/IRegistry.sol\":{\"keccak256\":\"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014\",\"dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AlreadyBlacklisted"},{"inputs":[],"type":"error","name":"AlreadyWhitelisted"},{"inputs":[],"type":"error","name":"EntityNotExist"},{"inputs":[],"type":"error","name":"FailedDeployment"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"InsufficientBalance"},{"inputs":[],"type":"error","name":"InvalidImplementation"},{"inputs":[],"type":"error","name":"InvalidType"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"entity","type":"address","indexed":true}],"type":"event","name":"AddEntity","anonymous":false},{"inputs":[{"internalType":"uint64","name":"type_","type":"uint64","indexed":true}],"type":"event","name":"Blacklist","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Whitelist","anonymous":false},{"inputs":[{"internalType":"uint64","name":"type_","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"blacklist"},{"inputs":[{"internalType":"uint64","name":"type_","type":"uint64"}],"stateMutability":"view","type":"function","name":"blacklisted","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"type_","type":"uint64"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"create","outputs":[{"internalType":"address","name":"entity_","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function","name":"entity","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"type_","type":"uint64"}],"stateMutability":"view","type":"function","name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"entity_","type":"address"}],"stateMutability":"view","type":"function","name":"isEntity","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"totalEntities","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalTypes","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"address","name":"implementation_","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"whitelist"}],"devdoc":{"kind":"dev","methods":{"blacklist(uint64)":{"details":"The given type will still be deployable.","params":{"type_":"type to blacklist"}},"create(uint64,bytes)":{"details":"CREATE2 salt is constructed from the given parameters.","params":{"data":"initial data for the entity creation","type_":"type's implementation to use"},"returns":{"entity_":"address of the entity"}},"entity(uint256)":{"params":{"index":"index of the entity to get"},"returns":{"_0":"address of the entity"}},"implementation(uint64)":{"params":{"type_":"position to get the implementation at"},"returns":{"_0":"address of the implementation"}},"isEntity(address)":{"params":{"account":"address to check"},"returns":{"_0":"if the given address is an entity"}},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"totalEntities()":{"returns":{"_0":"total number of entities added"}},"totalTypes()":{"returns":{"_0":"total number of types"}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"whitelist(address)":{"params":{"implementation":"address of the new implementation"}}},"version":1},"userdoc":{"kind":"user","methods":{"blacklist(uint64)":{"notice":"Blacklist a type of entity."},"blacklisted(uint64)":{"notice":"Get if a type is blacklisted (e.g., in case of invalid implementation)."},"create(uint64,bytes)":{"notice":"Create a new entity at the factory."},"entity(uint256)":{"notice":"Get an entity given its index."},"implementation(uint64)":{"notice":"Get the implementation for a given type."},"isEntity(address)":{"notice":"Get if a given address is an entity."},"totalEntities()":{"notice":"Get a total number of entities."},"totalTypes()":{"notice":"Get the total number of whitelisted types."},"whitelist(address)":{"notice":"Whitelist a new type of entity."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/DelegatorFactory.sol":"DelegatorFactory"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/Clones.sol":{"keccak256":"0xf55d01dac75cffdabec6833a79bf3be0c108fc0db10e273daf7adfd3e9e59dae","urls":["bzz-raw://540002a50a2a1a2b9dafffb976178e55adbf8d3a28db462c69f996921479c6b0","dweb:/ipfs/QmQNAFyMf2FW3U1giM4Yej3zzd1pnxMtAA5GoADj4hTYYD"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol":{"keccak256":"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212","urls":["bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f","dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz"],"license":"MIT"},"src/contracts/DelegatorFactory.sol":{"keccak256":"0x3c3fb62c441302f4f75d94703779f5c4bb755c06f310b4c923dbf24d6e0adda9","urls":["bzz-raw://597fa8be7179d8a555bf942c1dea0504273a1d34f6ac4c206fc2e816da143e68","dweb:/ipfs/Qmf54DKNYXC7fTMcAFABw68RC6ZFenVgyAPGhbPTf6s5TR"],"license":"BUSL-1.1"},"src/contracts/common/Factory.sol":{"keccak256":"0x41764643e6a2a3d80d694a3efee91f50a2fd084fb2bcd13566259443840e6369","urls":["bzz-raw://fefc1e2a2189275388826f4f82ca421ca79c2866d3ef39dc2c7df46fe7cbf7c9","dweb:/ipfs/QmSJ4VGmgpYUv5ni4ZYoSV4qMuZrk5DLjyB3Vv9NbFgeNZ"],"license":"BUSL-1.1"},"src/contracts/common/Registry.sol":{"keccak256":"0x4a4004836d920953a8ec6e223de9a330f43acf7a5b93c6b8b3e4a95e0f129889","urls":["bzz-raw://e8bdda207f3852c683a2b481602239a914f7e26bcd042ade618e263a43b67652","dweb:/ipfs/Qmb8GZykJWxZcfwNp3SqhFizDFydFuV6LXgemV3vnWyLyu"],"license":"BUSL-1.1"},"src/interfaces/IDelegatorFactory.sol":{"keccak256":"0x7850453237ca93b301393506d2489a38830a60be0c29f39a4a1aee3508d836e6","urls":["bzz-raw://8f418702b883c90e046af92d5654a25849baf79b61c11401ad603b861fed7b80","dweb:/ipfs/Qmdju1XFJXx3uJidzoS7srcoSnzT8jUoPAmGEdbceYgB7j"],"license":"MIT"},"src/interfaces/common/IEntity.sol":{"keccak256":"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21","urls":["bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b","dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv"],"license":"MIT"},"src/interfaces/common/IFactory.sol":{"keccak256":"0xe835ebda85d181b70874f6eb53f2a892aa3223d23efe247060da9b51d2b8e969","urls":["bzz-raw://48b3dfb5f0491d90efbc8ed498b45358260ebac6e8f2aa0106b8b8fabdc988cb","dweb:/ipfs/QmWnnCs3xiHeUvYfUWMJTSFZWc34bSYn9Zpm7f7syra3TA"],"license":"MIT"},"src/interfaces/common/IRegistry.sol":{"keccak256":"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb","urls":["bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014","dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK"],"license":"MIT"}},"version":1},"id":70} \ No newline at end of file diff --git a/out/DelegatorHints.sol/BaseDelegatorHints.json b/out/DelegatorHints.sol/BaseDelegatorHints.json index 043ebcef..c23c22d6 100644 --- a/out/DelegatorHints.sol/BaseDelegatorHints.json +++ b/out/DelegatorHints.sol/BaseDelegatorHints.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"optInServiceHints","type":"address","internalType":"address"},{"name":"vaultHints_","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"FULL_RESTAKE_DELEGATOR_HINTS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"HOOK_GAS_LIMIT","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"HOOK_RESERVE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"HOOK_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"NETWORK_REGISTRY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"NETWORK_RESTAKE_DELEGATOR_HINTS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_NETWORK_OPT_IN_SERVICE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_VAULT_OPT_IN_SERVICE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"OPT_IN_SERVICE_HINTS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"TYPE","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"VAULT_FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"VERSION","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"pure"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"hook","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"maxNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"onSlash","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","internalType":"uint48"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setHook","inputs":[{"name":"hook_","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMaxNetworkLimit","inputs":[{"name":"identifier","type":"uint96","internalType":"uint96"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stake","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"stakeAt","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hints","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"stakeBaseHints","inputs":[{"name":"delegator","type":"address","internalType":"address"},{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"stakeHints","inputs":[{"name":"delegator","type":"address","internalType":"address"},{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"staticDelegateCall","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"vault","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OnSlash","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","indexed":false,"internalType":"uint48"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SetHook","inputs":[{"name":"hook","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SetMaxNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"AlreadySet","inputs":[]},{"type":"error","name":"ExternalCall","inputs":[]},{"type":"error","name":"InsufficientHookGas","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitialized","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"NotNetwork","inputs":[]},{"type":"error","name":"NotSlasher","inputs":[]},{"type":"error","name":"NotVault","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]}],"bytecode":{"object":"0x6101c03461027157618da96001600160401b03601f38839003908101601f191684019082821185831017610202578085916040958694855283398101031261027157610056602061004f85610275565b9401610275565b90306080527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460ff81861c166102605780838080931603610220575b5050505f60a0525f60c0525f60e052610100935f8552610120935f8552610140905f82526101609280845281516138de8082019082821088831117610202578389849361010093611ef286393081526001600160a01b0391821660208201529116604082015260600190565b03905ff09485156102165760018060a01b039687610180971687528351926135d991828501938585109085111761020257849361015c936157d086393081526001600160a01b0391821660208201529116604082015260600190565b03905ff09485156101f8576101a0951685525194611c68968761028a883960805187505060a05187610623015260c05187610b5f015260e05187818161048f0152610b980152518681816102c70152611a4b01525185818161030b015261163d01525184818161034f01526116bb015251838181610a3d0152611190015251828181610283015261148f015251818181610dfa01526115510152f35b50513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b82513d5f823e3d90fd5b6001600160401b03191617905582518181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f8181610094565b845163f92ee8a960e01b8152600490fd5b5f80fd5b51906001600160a01b03821682036102715756fe60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a714610214578063075db0361461020f578063103f29071461020a578063128e5d82146102055780631a80e500146102005780631bf10a3e146101fb57806323f752d5146101f6578063248a9ca3146101f157806325dc9708146101ec5780632dd31000146101e75780632f2ff15d146101e257806336568abe146101dd5780633dfd3873146101d8578063439fab91146101d3578063557cab44146101ce5780636679191e146101c95780637f5a7c7b146101c457806391d14854146101bf5780639b656b22146101ba5780639f86fd85146101b5578063a217fddf146101b0578063bb24fe8a146101ab578063c0cd7c3e146101a6578063d15b740e146101a1578063d547741f1461019c578063e02f693714610197578063e102831a14610192578063e49561ee1461018d578063fbfa77cf14610188578063fd4d447c14610183578063ff54740f1461017e5763ffa1ad7414610179575f80fd5b61108a565b61106d565b61103b565b611014565b610e29565b610de5565b610d02565b610bf1565b610bc7565b610b83565b610b40565b610b26565b610a6c565b610a28565b6109ca565b6109a2565b610968565b61094c565b61080f565b6106e9565b61069e565b610652565b61060e565b6105f1565b6105b8565b61043c565b610407565b61033a565b6102f6565b6102b2565b61026e565b3461026a57602036600319011261026a5760043563ffffffff60e01b811680910361026a57602090637965db0b60e01b8114908115610259575b506040519015158152f35b6301ffc9a760e01b1490505f61024e565b5f80fd5b3461026a575f36600319011261026a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461026a575f36600319011261026a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461026a575f36600319011261026a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461026a575f36600319011261026a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6001600160a01b0381160361026a57565b6064359065ffffffffffff8216820361026a57565b608090600319011261026a576004356103bc8161037e565b90602435906044356103cd8161037e565b9060643565ffffffffffff8116810361026a5790565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b3461026a5761043861042461041b366103a4565b92919091611168565b6040519182916020835260208301906103e3565b0390f35b3461026a57604036600319011261026a576004356001600160601b038116810361026a576024359061046c611732565b6040516302910f8b60e31b81523360048201526020816024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa9081156105b3575f91610584575b5015610572576001600160601b03166bffffffffffffffffffffffff193360601b161790806104f6835f52600260205260405f2090565b541461056057610545817fc67e7929681aa1bccd63f52b3799bf5805f3009f197db6fdf584b14f7fbf608c92610534855f52600260205260405f2090565b556040519081529081906020820190565b0390a261055e60015f80516020611bf383398151915255565b005b60405163a741a04560e01b8152600490fd5b6040516323d53b9760e21b8152600490fd5b6105a6915060203d6020116105ac575b61059e8183610c71565b8101906113b9565b5f6104bf565b503d610594565b6110bd565b3461026a57602036600319011261026a576004355f525f80516020611bd38339815191526020526020600160405f200154604051908152f35b3461026a57610438610424610605366103a4565b929190916113f0565b3461026a575f36600319011261026a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461026a57604036600319011261026a5761055e6024356004356106758261037e565b805f525f80516020611bd3833981519152602052610699600160405f200154611761565b611918565b3461026a57604036600319011261026a576024356106bb8161037e565b336001600160a01b038216036106d75761055e9060043561194e565b60405163334bd91960e11b8152600490fd5b3461026a57602036600319011261026a576004356107068161037e565b61070e611732565b335f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c60205260409020547fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c9060ff16156107c457506001546001600160a01b039182169181168214610560576001600160a01b03191681176001557f5bbb1d3ebb6a3ad2a0f17ff35e579a83af60604d1d3c2a4c83c62adecadf666d5f80a260015f80516020611bf383398151915255005b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b9181601f8401121561026a578235916001600160401b03831161026a576020838186019501011161026a57565b3461026a57602036600319011261026a576001600160401b0360043581811161026a576108409036906004016107e2565b5f80516020611c13833981519152549260ff8460401c1615931680159081610944575b600114908161093a575b159081610931575b5061091f575f80516020611c13833981519152805467ffffffffffffffff191660011790556108a891836108f657611a16565b6108ae57005b5f80516020611c13833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f80516020611c13833981519152805460ff60401b191668010000000000000000179055611a16565b60405163f92ee8a960e01b8152600490fd5b9050155f610875565b303b15915061086d565b849150610863565b3461026a575f36600319011261026a576020604051614e208152f35b3461026a575f36600319011261026a5760206040517fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c8152f35b3461026a575f36600319011261026a576001546040516001600160a01b039091168152602090f35b3461026a57604036600319011261026a57602060ff610a1c6024356109ee8161037e565b6004355f525f80516020611bd3833981519152845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b3461026a575f36600319011261026a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461026a5760408060031936011261026a57600435610a8a8161037e565b602435906001600160401b03821161026a575f8091610ab0610b149436906004016107e2565b908187519283928337810184815203915af43d15610b1c57610b063d610ad581610ca1565b90610ae286519283610c71565b81523d5f602083013e5b8451948593151560208501528084015260608301906103e3565b03601f198101835282610c71565b805190602001fd5b610b066060610aec565b3461026a575f36600319011261026a5760206040515f8152f35b3461026a575f36600319011261026a5760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461026a575f36600319011261026a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461026a57602036600319011261026a576004355f526002602052602060405f2054604051908152f35b3461026a57604036600319011261026a5761055e602435600435610c148261037e565b805f525f80516020611bd3833981519152602052610c38600160405f200154611761565b61194e565b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b03821117610c6c57604052565b610c3d565b90601f801991011681019081106001600160401b03821117610c6c57604052565b60405190610c9f82610c51565b565b6001600160401b038111610c6c57601f01601f191660200190565b81601f8201121561026a57803590610cd382610ca1565b92610ce16040519485610c71565b8284526020838301011161026a57815f926020809301838601378301015290565b3461026a5760808060031936011261026a57610d1f60243561037e565b60443565ffffffffffff81160361026a576001600160401b0360643581811161026a57610d50903690600401610cbc565b5060606020604051610d6181610c51565b828152015260605180610d79575b60206040515f8152f35b8281016020821261026a5783519183831161026a5782604091031261026a5760405193610da585610c51565b8281015184811161026a578282610dbe928601016110c8565b855260a083015193841161026a57602093610dda9301016110c8565b9101525f8080610d6f565b3461026a575f36600319011261026a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461026a5760a036600319011261026a57602435600435610e498261037e565b60443591610e5561038f565b90608435906001600160401b03821161026a57610e7760049236908401610cbc565b610e7f611732565b5f54602090610ea490610e98906001600160a01b031681565b6001600160a01b031690565b60405163b134427160e01b815294859182905afa9283156105b3575f93610fe3575b506001600160a01b039283163303610fd1576001546001600160a01b0316838116610f46575b50506040805195865265ffffffffffff909316602086015216927f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed91819081015b0390a361055e60015f80516020611bf383398151915255565b909360405194610f7d86610f6f602082019363724ab0f760e11b8552858c898d602487016115d0565b03601f198101885287610c71565b62042e305a10610fbf575f610f2d938192827f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed9951926203d090f15093610eec565b604051638072475160e01b8152600490fd5b60405163dabc4ad960e01b8152600490fd5b61100691935060203d60201161100d575b610ffe8183610c71565b8101906110a5565b915f610ec6565b503d610ff4565b3461026a575f36600319011261026a575f546040516001600160a01b039091168152602090f35b3461026a57604036600319011261026a57602061106560243561105d8161037e565b600435611608565b604051908152f35b3461026a575f36600319011261026a5760206040516203d0908152f35b3461026a575f36600319011261026a57602060405160018152f35b9081602091031261026a57516110ba8161037e565b90565b6040513d5f823e3d90fd5b81601f8201121561026a578051906110df82610ca1565b926110ed6040519485610c71565b8284526020838301011161026a57815f9260208093018386015e8301015290565b9060208282031261026a5781516001600160401b03811161026a576110ba92016110c8565b906110ba91602081526020611153835160408385015260608401906103e3565b920151906040601f19828503019101526103e3565b604080516309472ec160e11b8152606096956001600160a01b039384169591946020949192917f0000000000000000000000000000000000000000000000000000000000000000169085876004818b5afa9687156105b3575f9761139a575b50845163fbfa77cf60e01b81529686886004818c5afa80156105b357855f9161123b9a839161137d575b508851636a531c3160e11b8082526001600160a01b039586166004830152858916602483015294909116604482015265ffffffffffff909116606482015298899081906084820190565b0381865afa9788156105b3575f98611358575b508686979899600496975196878092621a80e560e81b82525afa9485156105b3575f95611335575b5086519081526001600160a01b03948516600482015293909216602484015260609190911c604483015265ffffffffffff9092166064820152905f9082908180608481015b03915afa9081156105b3575f91611313575b50835115801590611309575b6112e35750505050565b6110ba9394955090610b06916112f7610c92565b95865283860152519384928301611133565b50805115156112d9565b61132f91503d805f833e6113278183610c71565b81019061110e565b5f6112cd565b5f95506113516112bb918a3d8c1161100d57610ffe8183610c71565b9550611276565b8798509661137360049697983d805f833e6113278183610c71565b989796955061124e565b61139491508a3d8c1161100d57610ffe8183610c71565b5f6111f1565b6113b2919750863d881161100d57610ffe8183610c71565b955f6111c7565b9081602091031261026a5751801515810361026a5790565b9081602091031261026a57516001600160401b038116810361026a5790565b604051635d927f4560e11b8082526060969594936001600160a01b03939092909160209190858416908383600481855afa9283156105b3575f936115b1575b506001600160401b039283166114d65750506040516304bb92e160e31b81526001600160a01b0393841660048201526024810194909452505092909216604483015265ffffffffffff9290921660648201529192505f90829060849082907f0000000000000000000000000000000000000000000000000000000000000000165afa9081156105b3575f916114c2575090565b6110ba91503d805f833e6113278183610c71565b839060046040518094819382525afa9081156105b3576001935f92611584575b50501614611505575050505050565b6040516304bb92e160e31b81526001600160a01b039182166004820152602481019290925292909216604483015265ffffffffffff9290921660648201529192505f90829060849082907f0000000000000000000000000000000000000000000000000000000000000000165afa9081156105b3575f916114c2575090565b6115a39250803d106115aa575b61159b8183610c71565b8101906113d1565b5f806114f6565b503d611591565b6115c9919350843d86116115aa5761159b8183610c71565b915f61142f565b919360a0936110ba969565ffffffffffff938552600180871b03166020850152604084015216606082015281608082015201906103e3565b5f546040516308834cb560e21b8082526001600160a01b038581166004840152928316602483015293602092909183816044817f000000000000000000000000000000000000000000000000000000000000000086165afa9081156105b3575f91611715575b501593841561168a575b505050509050611686575f90565b5f90565b6040519586526001600160a01b0392909216600486015260609190911c6024850152909291508290829060449082907f0000000000000000000000000000000000000000000000000000000000000000165afa9182156105b3575f926116f8575b505015805f808080611678565b61170e9250803d106105ac5761059e8183610c71565b5f806116eb565b61172c9150843d86116105ac5761059e8183610c71565b5f61166e565b5f80516020611bf3833981519152600281541461174f5760029055565b604051633ee5aeb560e01b8152600490fd5b5f8181525f80516020611bd38339815191526020908152604080832033845290915290205460ff16156107c45750565b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260409020545f80516020611bd38339815191529060ff1661183c575f808052602091825260408082206001600160a01b038516835290925220805460ff1916600117905533906001600160a01b03165f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b50505f90565b6001600160a01b0381165f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c602052604090207fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c905f80516020611bd38339815191529060ff905b5416611911575f828152602091825260408082206001600160a01b038616835290925220805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b5050505f90565b5f8181525f80516020611bd3833981519152602081815260408084206001600160a01b038716855290915290912060ff906118ad565b5f8181525f80516020611bd3833981519152602081815260408084206001600160a01b03871685529091529091205460ff1615611911575f828152602091825260408082206001600160a01b038616835290925220805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b91909160408184031261026a5780356119f88161037e565b9260208201356001600160401b03811161026a576110ba9201610cbc565b611a22918101906119e0565b506040516302910f8b60e31b81526001600160a01b0391821660048201819052906020816024817f000000000000000000000000000000000000000000000000000000000000000087165afa9081156105b3575f91611b34575b5015611b2257611aa990611a8e611b53565b60018060a01b03166001600160601b0360a01b5f5416175f55565b611afc6040611ab6611b76565b6020810151600180546001600160a01b0319166001600160a01b0390921691909117905580516001600160a01b0316848116611b12575b5001516001600160a01b031690565b908116611b065750565b611b0f90611842565b50565b611b1b90611791565b505f611aed565b6040516362df054560e01b8152600490fd5b611b4d915060203d6020116105ac5761059e8183610c71565b5f611a7c565b611b5b611ba4565b611b63611ba4565b60015f80516020611bf383398151915255565b60405190606082018281106001600160401b03821117610c6c576040525f6040838281528260208201520152565b60ff5f80516020611c138339815191525460401c1615611bc057565b604051631afcd79f60e31b8152600490fdfe02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a264697066735822122039dce195144b27a47a4223371e67014a21ca412ee10a9ba4d2d3f9eae39aa3a164736f6c634300081900336101c0346101cf57601f6138de38819003918201601f19168301916001600160401b0391828411858510176101d35781606092869260409687528339810103126101cf5761004c836101e7565b926100648361005d602084016101e7565b92016101e7565b91306080527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff82871c166101be57808083160361017a575b5050505f60a0525f60c0525f60e052610100935f8552610120935f8552610140905f82526101609283526101809384526101a094855251946136e296876101fc88396080518781816105a001528181610fd70152611629015260a051876109e9015260c051876112ac015260e05187818161084b01526112e5015251868181610512015261298501525185818161055601528181611e330152611f3b0152518481816107c901528181611d9a0152611fb9015251838181610e95015261194d015251828181610d9701526119ee015251816110490152f35b6001600160401b0319909116811790915583519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80806100a2565b855163f92ee8a960e01b8152600490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101cf5756fe60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a71461030457806302145348146102ff57806307f9d5fd146102fa578063103f2907146102f5578063128e5d82146102f0578063197aa7ea146102eb5780631a7a7044146102e65780631a80e500146102e157806323f752d5146102dc578063248a9ca3146102d757806325dc9708146102d25780632dd31000146102cd5780632f2ff15d146102c857806336568abe146102c35780633dfd3873146102be5780633eb22c0f146102b957806342c53e33146102b4578063439fab91146102af57806345e78fcb146102aa578063557cab44146102a55780635d32a1c9146102a05780636679191e1461029b57806379d89614146102965780637d24bb27146102915780637f5a7c7b1461028c5780638b3f10b01461028757806391d1485414610282578063987b3ee81461027d5780639b656b22146102785780639f86fd8514610273578063a217fddf1461026e578063a33bc28714610269578063b549ef1f14610264578063bb24fe8a1461025f578063c0cd7c3e1461025a578063c43dc03f14610255578063d15b740e14610250578063d547741f1461024b578063da749d2b14610246578063e02f693714610241578063e49561ee1461023c578063e78eb6ae14610237578063ed4d89e514610232578063fbfa77cf1461022d578063fd4d447c14610228578063ff54740f146102235763ffa1ad741461021e575f80fd5b6116dc565b6116bf565b611695565b61166e565b61160e565b6115d4565b6113e9565b6113cd565b6113b3565b611367565b61133d565b611314565b6112d0565b61128d565b611273565b611126565b61110c565b611078565b611034565b610fa6565b610f48565b610f25565b610efd565b610ec4565b610e80565b610e46565b610e23565b610dc6565b610d82565b610c4a565b610bd1565b610ba8565b610aaf565b610a64565b610a18565b6109d4565b6109b7565b61097e565b6107f8565b6107b4565b61076e565b610585565b610541565b6104fd565b6104c8565b61035e565b3461035a57602036600319011261035a5760043563ffffffff60e01b811680910361035a57602090637965db0b60e01b8114908115610349575b506040519015158152f35b6301ffc9a760e01b1490505f61033e565b5f80fd5b3461035a5760408060031936011261035a57600435906024359061038061202e565b825f526002602052805f2054821161041a57825f526003602052816103a6825f206128d7565b1461040a5781610405916103f57e899d104fc3d8820bd96540612bcc5c448c8837b13b9f7faa43ad0728f0c14f946103e6875f52600360205260405f2090565b6103ef42612d7a565b90612176565b5050519081529081906020820190565b0390a2005b5163a741a04560e01b8152600490fd5b51631eefc06360e31b8152600490fd5b6001600160a01b0381160361035a57565b6024359065ffffffffffff8216820361035a57565b6064359065ffffffffffff8216820361035a57565b608090600319011261035a5760043561047d8161042a565b906024359060443561048e8161042a565b9060643565ffffffffffff8116810361035a5790565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b3461035a576104f96104e56104dc36610465565b92919091611736565b6040519182916020835260208301906104a4565b0390f35b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a57604036600319011261035a5761059e61043b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610602576105e5906004355f52600360205260405f206122f5565b60408051941515855263ffffffff91909116602085015292915050f35b604051637ca475e560e11b8152600490fd5b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b0382111761064357604052565b610614565b606081019081106001600160401b0382111761064357604052565b60a081019081106001600160401b0382111761064357604052565b90601f801991011681019081106001600160401b0382111761064357604052565b604051906106ac82610663565b565b604051906106ac82610628565b6001600160401b03811161064357601f01601f191660200190565b81601f8201121561035a578035906106ed826106bb565b926106fb604051948561067e565b8284526020838301011161035a57815f926020809301838601378301015290565b90608060031983011261035a57600435916024356107398161042a565b9160443565ffffffffffff8116810361035a5791606435906001600160401b03821161035a5761076b916004016106d6565b90565b3461035a5760206107ac6107a76107843661071c565b939190925f526005865260405f209060018060a01b03165f5260205260405f2090565b61242d565b604051908152f35b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a57604036600319011261035a576004356001600160601b038116810361035a5760243590610828612505565b6040516302910f8b60e31b81523360048201526020816024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa908115610979575f9161094a575b5015610938576001600160601b03166bffffffffffffffffffffffff193360601b161790806108b2835f52600260205260405f2090565b54146109265761090b817fc67e7929681aa1bccd63f52b3799bf5805f3009f197db6fdf584b14f7fbf608c926108f0855f52600260205260405f2090565b556108fb8185612534565b6040519081529081906020820190565b0390a261092460015f8051602061366d83398151915255565b005b60405163a741a04560e01b8152600490fd5b6040516323d53b9760e21b8152600490fd5b61096c915060203d602011610972575b610964818361067e565b8101906117e8565b5f61087b565b503d61095a565b6117fc565b3461035a57602036600319011261035a576004355f525f8051602061364d8339815191526020526020600160405f200154604051908152f35b3461035a576104f96104e56109cb36610465565b92919091611904565b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a57604036600319011261035a57610924602435600435610a3b8261042a565b805f525f8051602061364d833981519152602052610a5f600160405f2001546120e1565b61280f565b3461035a57604036600319011261035a57602435610a818161042a565b336001600160a01b03821603610a9d5761092490600435612845565b60405163334bd91960e11b8152600490fd5b3461035a57602036600319011261035a57600435610acc8161042a565b610ad4612505565b335f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c60205260409020547fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c9060ff1615610b8a57506001546001600160a01b039182169181168214610926576001600160a01b03191681176001557f5bbb1d3ebb6a3ad2a0f17ff35e579a83af60604d1d3c2a4c83c62adecadf666d5f80a260015f8051602061366d83398151915255005b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b3461035a57602036600319011261035a576004355f52600360205260206107ac60405f206128d7565b3461035a57604036600319011261035a5760206107ac610c18602435610bf68161042a565b6004355f526005845260405f209060018060a01b03165f5260205260405f2090565b6128d7565b9181601f8401121561035a578235916001600160401b03831161035a576020838186019501011161035a57565b3461035a57602036600319011261035a576001600160401b0360043581811161035a57610c7b903690600401610c1d565b5f8051602061368d833981519152549260ff8460401c1615931680159081610d7a575b6001149081610d70575b159081610d67575b50610d55575f8051602061368d833981519152805467ffffffffffffffff19166001179055610ce39183610d3157612950565b610ce957005b5f8051602061368d833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f8051602061368d833981519152805460ff60401b1916600160401b179055612950565b60405163f92ee8a960e01b8152600490fd5b9050155f610cb0565b303b159150610ca8565b849150610c9e565b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a575f36600319011261035a576020604051614e208152f35b606060031982011261035a576004359160243565ffffffffffff8116810361035a5791604435906001600160401b03821161035a5761076b916004016106d6565b3461035a5760206107ac610e3636610de2565b915f526003845260405f2061242d565b3461035a575f36600319011261035a5760206040517fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c8152f35b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a575f36600319011261035a5760206040517e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf8152f35b3461035a575f36600319011261035a576001546040516001600160a01b039091168152602090f35b3461035a5760206107ac610f3836610de2565b915f526004845260405f2061242d565b3461035a57604036600319011261035a57602060ff610f9a602435610f6c8161042a565b6004355f525f8051602061364d833981519152845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b3461035a57606036600319011261035a57602435610fc38161042a565b60443565ffffffffffff8116810361035a577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036106025761102f6105e5926004355f52600560205260405f209060018060a01b03165f5260205260405f2090565b6122f5565b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a57604036600319011261035a576004356110958161042a565b6024356001600160401b03811161035a575f916110b783923690600401610c1d565b90816040519283928337810184815203915af46111046110d5611b60565b916110f66040519384921515602084015260408084015260608301906104a4565b03601f19810183528261067e565b805190602001fd5b3461035a575f36600319011261035a5760206040515f8152f35b3461035a57606036600319011261035a576024356004356111468261042a565b6044359161115261208a565b5f8281526005602090815260408083206001600160a01b0385168452909152902061117c906128d7565b838114610926577f739a5a3ec0ff71e2386d0013deac5f44e0935a98def2e2a5ddf9a709518c8294916111ef61123c92855f52600460205260405f20906111e9886111e46111c942612d7a565b936111df610c188c5f52600460205260405f2090565b611bb6565b611bd1565b91612176565b5050611220856103e68361120b885f52600560205260405f2090565b9060018060a01b03165f5260205260405f2090565b50506040519485526001600160a01b0316939081906020820190565b0390a3005b606090600319011261035a576004356112598161042a565b906024359060443565ffffffffffff8116810361035a5790565b3461035a576104f96104e561128736611241565b91611bde565b3461035a575f36600319011261035a5760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a57602036600319011261035a576004355f52600460205260206107ac60405f206128d7565b3461035a57602036600319011261035a576004355f526002602052602060405f2054604051908152f35b3461035a57604036600319011261035a5761092460243560043561138a8261042a565b805f525f8051602061364d8339815191526020526113ae600160405f2001546120e1565b612845565b3461035a576104f96104e56113c736611241565b91611c28565b3461035a5760206107ac6113e03661071c565b92919091611d24565b3461035a5760a036600319011261035a576024356004356114098261042a565b60443591611415610450565b90608435906001600160401b03821161035a57611437600492369084016106d6565b61143f612505565b5f5460209061146490611458906001600160a01b031681565b6001600160a01b031690565b60405163b134427160e01b815294859182905afa928315610979575f936115a3575b506001600160a01b039283163303611591576001546001600160a01b0316838116611506575b50506040805195865265ffffffffffff909316602086015216927f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed91819081015b0390a361092460015f8051602061366d83398151915255565b90936040519461153d8661152f602082019363724ab0f760e11b8552858c898d60248701611eae565b03601f19810188528761067e565b62042e305a1061157f575f6114ed938192827f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed9951926203d090f150936114ac565b604051638072475160e01b8152600490fd5b60405163dabc4ad960e01b8152600490fd5b6115c691935060203d6020116115cd575b6115be818361067e565b810190611872565b915f611486565b503d6115b4565b3461035a575f36600319011261035a5760206040517f1312a1cf530e56add9be4fd84db9051dcc7635952f09f735f9a29405b55846258152f35b3461035a57604036600319011261035a5761162761043b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610602576105e5906004355f52600460205260405f206122f5565b3461035a575f36600319011261035a575f546040516001600160a01b039091168152602090f35b3461035a57604036600319011261035a5760206107ac6024356116b78161042a565b600435611f04565b3461035a575f36600319011261035a5760206040516203d0908152f35b3461035a575f36600319011261035a57602060405160018152f35b5190811515820361035a57565b519063ffffffff8216820361035a57565b919082604091031261035a5761076b602061172f846116f7565b9301611704565b906117869165ffffffffffff6117959496956060976040519463130f67dd60e31b6020870152602486015260018060a01b031660448501521660648301526064825261178182610663565b612238565b60208082518301019101611715565b9061179d5750565b90915063ffffffff604051911660208201526020815261076b81610628565b5f9081526005602090815260408083206001600160a01b0390941683529290522061076b92919061242d565b9081602091031261035a5761076b906116f7565b6040513d5f823e3d90fd5b81601f8201121561035a5780519061181e826106bb565b9261182c604051948561067e565b8284526020838301011161035a57815f9260208093018386015e8301015290565b9060208282031261035a5781516001600160401b03811161035a5761076b9201611807565b9081602091031261035a575161076b8161042a565b9061076b91602081526118a6825160a0602084015260c08301906104a4565b9060a060806118f46118e16118cd602088015196601f1997888883030160408901526104a4565b6040880151878783030160608801526104a4565b60608701518686830301848701526104a4565b94015192828503019101526104a4565b604051630df8851f60e11b81526001600160a01b03828116600483015260248201849052848116604483015265ffffffffffff8616606483015295606095909491935f856084817f00000000000000000000000000000000000000000000000000000000000000008c165afa948515610979575f95611b18575b5060405163fbfa77cf60e01b8152602081600481888d165afa908115610979576119ea995f9285928491611af9575b5060405163192c0ff760e21b81526001600160a01b03909116600482015265ffffffffffff909216602483015290998a9190829081906044820190565b03917f0000000000000000000000000000000000000000000000000000000000000000165afa978815610979575f98611acf575b509081611a3b82611a3381611a419689611c28565b958388611736565b94611bde565b90835115801590611ac5575b8015611abb575b8015611ab1575b8015611aa7575b611a6f5750505050909150565b6110f6955061076b9496611a8161069f565b948552602085015260408401526060830152608082015260405192839160208301611887565b5081511515611a62565b5082511515611a5b565b5080511515611a54565b5086511515611a4d565b611a4192919850611af1903d805f833e611ae9818361067e565b81019061184d565b979091611a1e565b611b12915060203d6020116115cd576115be818361067e565b5f6119ad565b611b2d9195503d805f833e611ae9818361067e565b935f61197e565b9061076b92915f52600360205260405f2061242d565b9061076b92915f52600460205260405f2061242d565b3d15611b8a573d90611b71826106bb565b91611b7f604051938461067e565b82523d5f602084013e565b606090565b634e487b7160e01b5f52601160045260245ffd5b5f19810191908211611bb157565b611b8f565b91908203918211611bb157565b9060018201809211611bb157565b91908201809211611bb157565b60405163ed4d89e560e01b6020820152602481019290925265ffffffffffff909216604482015260609291611795916117869161178182606481015b03601f19810184528361067e565b604051630cbd53f560e11b6020820152602481019290925265ffffffffffff90921660448201526060929161179591611786916117818260648101611c1a565b60405190611c7582610628565b60606020838281520152565b9060208282031261035a5781516001600160401b039283821161035a57019060408282031261035a5760405192611cb784610628565b825181811161035a5782611ccc918501611807565b8452602083015190811161035a57611ce49201611807565b602082015290565b6001600160a01b0391821681529116602082015265ffffffffffff909116604082015260806060820181905261076b929101906104a4565b92611d3490929192828486612bb5565b929093611d3f611c68565b93805180611e92575b50508415938415611dfc575b8415611d6b575b50505050611d665790565b505f90565b602080949550611d96910151604051958694859463530e1d4360e01b865260601c9060048601611cec565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610979575f91611ddd575b50155f808080611d5b565b611df6915060203d60201161097257610964818361067e565b5f611dd2565b5f549094506001600160a01b0316602084865192611e2f604051948593849363530e1d4360e01b85528960048601611cec565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610979575f91611e73575b501593611d54565b611e8c915060203d60201161097257610964818361067e565b5f611e6b565b611ea6929550602080918301019101611c81565b925f80611d48565b919360a09361076b969565ffffffffffff938552600180871b03166020850152604084015216606082015281608082015201906104a4565b8115611ef0570490565b634e487b7160e01b5f52601260045260245ffd5b5f546040516308834cb560e21b8082526001600160a01b0385811660048401529283166024830152929392602092909183816044817f000000000000000000000000000000000000000000000000000000000000000086165afa908115610979575f91612011575b5015918215611f8d575b50509050611f875761076b91612cc5565b50505f90565b6040519081526001600160a01b0385166004820152606086901c602482015291508290829060449082907f0000000000000000000000000000000000000000000000000000000000000000165afa918215610979575f92611ff4575b505015805f80611f76565b61200a9250803d1061097257610964818361067e565b5f80611fe9565b6120289150843d861161097257610964818361067e565b5f611f6c565b335f9081527f72a65082a5691803ab2b62c9bc729b34205ba1b183d950896526b2fd8714d0c7602052604090207e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf9060ff905b541615610b8a5750565b335f9081527f8f2dae99798887da307a4daa2c2d11f840b0cb9a6a67822660c531e9ad14dd00602052604090207f1312a1cf530e56add9be4fd84db9051dcc7635952f09f735f9a29405b55846259060ff90612080565b5f8181525f8051602061364d83398151915260209081526040808320338452909152902060ff90612080565b634e487b7160e01b5f52603260045260245ffd5b8054821015612136575f5260205f2001905f90565b61210d565b90815491600160401b831015610643578261215e9160016106ac95018155612121565b90919082549060031b91821b915f19901b1916179055565b90929192600182019081548015612208575b508461219384612dac565b509490928454936121a3836128d7565b96816121f3575b50156121d0575050505f198101908111611bb15761215e85916121cc93612121565b9190565b6121cc9492936121ec926001600160d01b03909116919061349c565b505061213b565b65ffffffffffff83811691161490505f6121aa565b600160401b811015610643578060016122249201845583612121565b8154905f199060031b1b191690555f612188565b5f9190829160405161226d816110f66020820194639f86fd8560e01b86523060248401526040604484015260648301906104a4565b51915afa5061227a611b60565b8051810160408282031261035a57612294602083016116f7565b916040810151916001600160401b03831161035a576122ba926020809201920101611807565b90156122c35790565b805190811561035a57602001fd5b906040516122de81610628565b915465ffffffffffff8116835260301c6020830152565b91908254905f82916005841161239d575b612311935085612f2e565b9081156123915761238a61238161237b61237161234361233e61233388611ba3565b895f5260205f200190565b6122d1565b96600161236a602061235b8b5165ffffffffffff1690565b9a01516001600160d01b031690565b9101612121565b90549060031b1c90565b93611ba3565b63ffffffff1690565b6001939291565b5f925082915081908190565b91926123a881612dfb565b8103908111611bb15761231193865f526123dc6123d18360205f200165ffffffffffff90541690565b65ffffffffffff1690565b65ffffffffffff851610156123f2575091612306565b9291506123fe90611bc3565b90612306565b9081602091031261035a5761076b90611704565b90600163ffffffff80931601918211611bb157565b918051156124fb578060208061244893518301019101612404565b916124538382613055565b92612464845165ffffffffffff1690565b9065ffffffffffff80851692168281146124ef578211918261249a575b50506124915761076b9250612f85565b50506020015190565b9091506124a78354611ba3565b63ffffffff8316149182156124c0575b50505f80612481565b6124e79192506124db6124d56123d192612418565b85613055565b5165ffffffffffff1690565b115f806124b7565b50505050506020015190565b5061076b91612f85565b5f8051602061366d83398151915260028154146125225760029055565b604051633ee5aeb560e01b8152600490fd5b90815f52600360205260405f208161254b82612dac565b9193905083156125a95761256b916001600160d01b031690600101612121565b90549060031b1c5b8261259f575b5050612583575050565b61259b915f52600360205260405f206103ef42612d7a565b5050565b119050815f612579565b50505f612573565b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260409020545f8051602061364d8339815191529060ff16611f87575f808052602091825260408082206001600160a01b038516835290925220805460ff1916600117905533906001600160a01b03165f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b6001600160a01b0381165f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c602052604090207fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c905f8051602061364d8339815191529060ff905b541661272b575f828152602091825260408082206001600160a01b038616835290925220805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b5050505f90565b6001600160a01b0381165f9081527f72a65082a5691803ab2b62c9bc729b34205ba1b183d950896526b2fd8714d0c7602052604090207e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf905f8051602061364d8339815191529060ff906126c7565b6001600160a01b0381165f9081527f8f2dae99798887da307a4daa2c2d11f840b0cb9a6a67822660c531e9ad14dd00602052604090207f1312a1cf530e56add9be4fd84db9051dcc7635952f09f735f9a29405b5584625905f8051602061364d8339815191529060ff906126c7565b5f8181525f8051602061364d833981519152602081815260408084206001600160a01b038716855290915290912060ff906126c7565b5f8181525f8051602061364d833981519152602081815260408084206001600160a01b03871685529091529091205460ff161561272b575f828152602091825260408082206001600160a01b038616835290925220805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b8054806128fc57505f5b6001600160d01b03811615611f875760016123719201612121565b5f19908082810111611bb157825f5260205f2001015460301c6128e1565b91909160408184031261035a5780356129328161042a565b9260208201356001600160401b03811161035a5761076b92016106d6565b61295c9181019061291a565b6040516302910f8b60e31b81526001600160a01b039283166004820181905291906020816024817f000000000000000000000000000000000000000000000000000000000000000088165afa908115610979575f91612a6f575b5015612a5d576129f16040916129ec612a37946129d16130bd565b60018060a01b03166001600160601b0360a01b5f5416175f55565b61323d565b6020810151600180546001600160a01b0319166001600160a01b0390921691909117905580516001600160a01b0316848116612a4d575b5001516001600160a01b031690565b908116612a415750565b612a4a9061265c565b50565b612a56906125b1565b505f612a28565b6040516362df054560e01b8152600490fd5b612a88915060203d60201161097257610964818361067e565b5f6129b6565b6040519060a082018281106001600160401b038211176106435760405281608060609182815282602082015282604082015282808201520152565b9060208282031261035a5781516001600160401b039283821161035a57019060a08282031261035a57612afa61069f565b92825181811161035a5782612b10918501611807565b8452602083015181811161035a5782612b2a918501611807565b6020850152604083015181811161035a5782612b47918501611807565b6040850152606083015181811161035a5782612b64918501611807565b6060850152608083015190811161035a57612b7f9201611807565b608082015290565b9081602091031261035a575190565b60409065ffffffffffff61076b949316815281602082015201906104a4565b91939293612bc1612a8e565b94805180612ca9575b5050612bdb60608601518285611b4a565b9182612bed57505050509051905f9190565b612c01612c3b9183608089015191876117bc565b916020612c1a6114586114585f5460018060a01b031690565b8189015190604051808096819463810da75d60e01b83528760048401612b96565b03915afa801561097957612c7195612c6b935f92612c76575b50612c65919260408a015191611b34565b9061339d565b906133af565b915190565b612c659250612c9c9060203d602011612ca2575b612c94818361067e565b810190612b87565b91612c54565b503d612c8a565b612cbd929650602080918301019101612ac9565b935f80612bca565b90612cdb610c18835f52600460205260405f2090565b9081612ce8575050505f90565b610c18612d019161120b855f52600560205260405f2090565b5f5460405163bd49c35f60e01b815290602090829060049082906001600160a01b03165afa80156109795761076b94612c6b925f92612d51575b50610c18612c65915f52600360205260405f2090565b612c65919250612d72610c189160203d602011612ca257612c94818361067e565b929150612d3b565b65ffffffffffff90818111612d8d571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b805480612dbd5750505f905f905f90565b5f19908082810111611bb157612dda925f5260205f2001016122d1565b9065ffffffffffff82511691602060018060d01b0391015116906001929190565b8015611d665780612c65612ec6612ebc612eb2612ea8612e9e612e94612e8a600161076b9a5f908b60801c80612f22575b508060401c80612f15575b508060201c80612f08575b508060101c80612efb575b508060081c80612eee575b508060041c80612ee1575b508060021c80612ed4575b50821c612ecd575b811c1b612e83818b611ee6565b0160011c90565b612e83818a611ee6565b612e838189611ee6565b612e838188611ee6565b612e838187611ee6565b612e838186611ee6565b612e838185611ee6565b8092611ee6565b8101612e76565b600291509101905f612e6e565b600491509101905f612e63565b600891509101905f612e58565b601091509101905f612e4d565b602091509101905f612e42565b604091509101905f612e37565b9150506080905f612e2c565b905b838310612f3d5750505090565b909192612f4a81856135b2565b90835f5265ffffffffffff808360205f20015416908416105f14612f725750925b9190612f30565b93506001810180911115612f6b57611b8f565b908154905f829160058411612fef575b612fa09350846135f5565b80612fc857505f905b6001600160d01b03821615611f875761076b9160016123719201612121565b612fe2612fd7612fe992611ba3565b835f5260205f200190565b5460301c90565b90612fa9565b9192612ffa81612dfb565b8103908111611bb157612fa093855f5265ffffffffffff808360205f20015416908516105f1461302b575091612f95565b92915061303790611bc3565b90612f95565b6040519061304a82610628565b5f6020838281520152565b9061307e61307861309f9261306861303d565b5061307161303d565b5084612121565b506122d1565b91600165ffffffffffff845116936020828060d01b03910151169101612121565b905490604051926130af84610628565b835260031b1c602082015290565b6130c56135c7565b6130cd6135c7565b60015f8051602061366d83398151915255565b604051906130ed82610648565b5f6040838281528260208201520152565b81601f8201121561035a578051916020916001600160401b038411610643578360051b90604051946131328584018761067e565b8552838086019282010192831161035a578301905b828210613155575050505090565b83809183516131638161042a565b815201910190613147565b9060208282031261035a5781516001600160401b039283821161035a5701908181039260a0841261035a576060604051946131a886610648565b1261035a576040516131b981610648565b83516131c48161042a565b815260208401516131d48161042a565b602082015260408401516131e78161042a565b60408201528452606083015181811161035a57826132069185016130fe565b6020850152608083015190811161035a5761322192016130fe565b604082015290565b80518210156121365760209160051b010190565b613259906132496130e0565b506020808251830101910161316e565b8051519091906001600160a01b03161580613383575b613371579060208101905f5b825180518210156132f557611458613296836132a393613229565b516001600160a01b031690565b156132e3576132c56132c16132bc613296848751613229565b612732565b1590565b6132d15760010161327b565b604051635140fefd60e11b8152600490fd5b6040516323cda06760e01b8152600490fd5b506040925050818101905f5b82518051821015613368576114586132968361331c93613229565b156133575761333a6132c1613335613296848751613229565b6127a0565b61334657600101613301565b8351635140fefd60e11b8152600490fd5b83516323cda06760e01b8152600490fd5b50509150505190565b6040516303501f5960e11b8152600490fd5b50602082015151158061326f57506040820151511561326f565b90808210156133aa575090565b905090565b9091828202915f1984820993838086109503948086039514613434578483111561342257829109815f038216809204600280826003021880830282030280830282030280830282030280830282030280830282030280920290030293600183805f03040190848311900302920304170290565b60405163227bc15360e01b8152600490fd5b50509061076b9250611ee6565b8054600160401b8110156106435761345e91600182018155612121565b61348957815160209092015160301b65ffffffffffff191665ffffffffffff92909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b805492939291908215613589576134b861233e612fd785611ba3565b906134c9825165ffffffffffff1690565b65ffffffffffff84811691168110613577576121cc9460209488926134f76123d1875165ffffffffffff1690565b0361353f57506135319261350d61351892611ba3565b905f5260205f200190565b9065ffffffffffff82549181199060301b169116179055565b01516001600160d01b031690565b9150506135729161355f6135516106ae565b65ffffffffffff9093168352565b6001600160d01b03881682860152613441565b613531565b604051632520601d60e01b8152600490fd5b6135ad92506135996135516106ae565b6001600160d01b0385166020830152613441565b5f9190565b90808216911860011c8101809111611bb15790565b60ff5f8051602061368d8339815191525460401c16156135e357565b604051631afcd79f60e31b8152600490fd5b905b8383106136045750505090565b90919261361181856135b2565b90835f5265ffffffffffff808360205f20015416908416105f146136395750925b91906135f7565b9350600181018091111561363257611b8f56fe02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a264697066735822122029f0973058268d4c15bb68cd12766d98013081e51e50292e237f8f15461e8b6864736f6c634300081900336101c0346101c857601f6135d938819003918201601f19168301916001600160401b0391828411858510176101cc5781606092869260409687528339810103126101c85761004c836101e0565b926100648361005d602084016101e0565b92016101e0565b91306080527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff82871c166101b7578080831603610173575b5050505f60a0525f60c0525f60e052610100935f8552610120935f8552610140905f82526101609283526101809384526101a094855251946133e496876101f58839608051878181610696015261148c015260a0518761092d015260c0518761114b015260e0518781816107a101526111840152518681816104e2015261266601525185818161064c01528181611be00152611d0f01525184818161071f01528181611b470152611d8d015251838181610ebc015261179a015251828181610c8f015261183b0152518161104f0152f35b6001600160401b0319909116811790915583519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80806100a2565b855163f92ee8a960e01b8152600490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101c85756fe60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a7146102c4578063020cf0c2146102bf57806302145348146102ba578063103f2907146102b557806310a28b5d146102b057806311422095146102ab578063128e5d82146102a6578063197aa7ea146102a15780631a80e5001461029c57806323f752d514610297578063248a9ca31461029257806325dc97081461028d5780632dd31000146102885780632f2ff15d1461028357806336568abe1461027e5780633dfd3873146102795780633eb22c0f14610274578063439fab911461026f57806345e78fcb1461026a578063518504ba14610265578063557cab44146102605780635d32a1c91461025b5780636679191e1461025657806379d89614146102515780637d24bb271461024c5780637f5a7c7b1461024757806391d148541461024257806394d2558a1461023d5780639b656b22146102385780639f86fd8514610233578063a217fddf1461022e578063bb24fe8a14610229578063c0cd7c3e14610224578063d15b740e1461021f578063d547741f1461021a578063da749d2b14610215578063e02f693714610210578063e49561ee1461020b578063f7b0554714610206578063fbfa77cf14610201578063fd4d447c146101fc578063ff54740f146101f75763ffa1ad74146101f2575f80fd5b611557565b61153a565b611510565b6114e9565b611465565b61127a565b61125e565b611229565b6111dd565b6111b3565b61116f565b61112c565b611112565b61107e565b61103a565b610ffc565b610f4c565b610f24565b610eeb565b610ea7565b610e6d565b610e1c565b610cf8565b610cbe565b610c7a565b610b42565b610aec565b6109f3565b6109a8565b61095c565b610918565b6108fb565b6108c2565b61074e565b61070a565b61067b565b610637565b6105e8565b6105b3565b6104cd565b610410565b61032f565b3461031a57602036600319011261031a5760043563ffffffff60e01b811680910361031a57602090637965db0b60e01b8114908115610309575b506040519015158152f35b6301ffc9a760e01b1490505f6102fe565b5f80fd5b6001600160a01b0381160361031a57565b3461031a57606036600319011261031a5760243560043561034f8261031e565b6044359161035b611e02565b815f526004602052826103896103848360405f209060018060a01b03165f5260205260405f2090565b6120b3565b146103fe5760207ffc9545f07ffadfb668efd0144cdcaf2d6e2c8192dce1ea9fc131934f9c90fc7e91835f52600482526103e9856103da8360405f209060018060a01b03165f5260205260405f2090565b6103e342612b0e565b90611f58565b50506040519485526001600160a01b031693a3005b60405163a741a04560e01b8152600490fd5b3461031a5760408060031936011261031a576004359060243590610432611e5f565b825f526002602052805f205482116104bd57825f52600360205281610458825f206120b3565b146104ad57816104a8916104987e899d104fc3d8820bd96540612bcc5c448c8837b13b9f7faa43ad0728f0c14f946103da875f52600360205260405f2090565b5050519081529081906020820190565b0390a2005b5163a741a04560e01b8152600490fd5b51631eefc06360e31b8152600490fd5b3461031a575f36600319011261031a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6024359065ffffffffffff8216820361031a57565b6044359065ffffffffffff8216820361031a57565b6064359065ffffffffffff8216820361031a57565b608090600319011261031a576004356105688161031e565b90602435906044356105798161031e565b9060643565ffffffffffff8116810361031a5790565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b3461031a576105e46105d06105c736610550565b929190916115b1565b60405191829160208352602083019061058f565b0390f35b3461031a57604036600319011261031a57602061062f61038460243561060d8161031e565b6004355f526004845260405f209060018060a01b03165f5260205260405f2090565b604051908152f35b3461031a575f36600319011261031a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461031a57604036600319011261031a57610694610511565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036106f8576106db906004355f52600360205260405f20612124565b60408051941515855263ffffffff91909116602085015292915050f35b604051637ca475e560e11b8152600490fd5b3461031a575f36600319011261031a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461031a57604036600319011261031a576004356001600160601b038116810361031a576024359061077e612229565b6040516302910f8b60e31b81523360048201526020816024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa9081156108bd575f9161088e575b501561087c576001600160601b03166bffffffffffffffffffffffff193360601b16179080610808835f52600260205260405f2090565b54146103fe57610861817fc67e7929681aa1bccd63f52b3799bf5805f3009f197db6fdf584b14f7fbf608c92610846855f52600260205260405f2090565b556108518185612258565b6040519081529081906020820190565b0390a261087a60015f8051602061336f83398151915255565b005b6040516323d53b9760e21b8152600490fd5b6108b0915060203d6020116108b6575b6108a88183610d7e565b810190611649565b5f6107d1565b503d61089e565b61165d565b3461031a57602036600319011261031a576004355f525f8051602061334f8339815191526020526020600160405f200154604051908152f35b3461031a576105e46105d061090f36610550565b9291909161174e565b3461031a575f36600319011261031a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461031a57604036600319011261031a5761087a60243560043561097f8261031e565b805f525f8051602061334f8339815191526020526109a3600160405f200154611eb5565b612533565b3461031a57604036600319011261031a576024356109c58161031e565b336001600160a01b038216036109e15761087a90600435612569565b60405163334bd91960e11b8152600490fd5b3461031a57602036600319011261031a57600435610a108161031e565b610a18612229565b335f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c60205260409020547fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c9060ff1615610ace57506001546001600160a01b0391821691811682146103fe576001600160a01b03191681176001557f5bbb1d3ebb6a3ad2a0f17ff35e579a83af60604d1d3c2a4c83c62adecadf666d5f80a260015f8051602061336f83398151915255005b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b3461031a57602036600319011261031a576004355f526003602052602061062f60405f206120b3565b9181601f8401121561031a578235916001600160401b03831161031a576020838186019501011161031a57565b3461031a57602036600319011261031a576001600160401b0360043581811161031a57610b73903690600401610b15565b5f8051602061338f833981519152549260ff8460401c1615931680159081610c72575b6001149081610c68575b159081610c5f575b50610c4d575f8051602061338f833981519152805467ffffffffffffffff19166001179055610bdb9183610c2957612631565b610be157005b5f8051602061338f833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f8051602061338f833981519152805460ff60401b1916600160401b179055612631565b60405163f92ee8a960e01b8152600490fd5b9050155f610ba8565b303b159150610ba0565b849150610b96565b3461031a575f36600319011261031a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461031a575f36600319011261031a5760206040517f15e7c882d74e8821ebf34aaff46fd0e1d53b9393d91490019124113d28dc32a38152f35b3461031a575f36600319011261031a576020604051614e208152f35b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b03821117610d4357604052565b610d14565b606081019081106001600160401b03821117610d4357604052565b608081019081106001600160401b03821117610d4357604052565b90601f801991011681019081106001600160401b03821117610d4357604052565b60405190610dac82610d63565b565b60405190610dac82610d28565b6001600160401b038111610d4357601f01601f191660200190565b81601f8201121561031a57803590610ded82610dbb565b92610dfb6040519485610d7e565b8284526020838301011161031a57815f926020809301838601378301015290565b3461031a57606036600319011261031a57610e35610511565b6044356001600160401b03811161031a57602091610e5a61062f923690600401610dd6565b906004355f526003845260405f20612798565b3461031a575f36600319011261031a5760206040517fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c8152f35b3461031a575f36600319011261031a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461031a575f36600319011261031a5760206040517e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf8152f35b3461031a575f36600319011261031a576001546040516001600160a01b039091168152602090f35b3461031a57604036600319011261031a57602060ff610f9e602435610f708161031e565b6004355f525f8051602061334f833981519152845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b90608060031983011261031a5760043591602435610fc78161031e565b9160443565ffffffffffff8116810361031a5791606435906001600160401b03821161031a57610ff991600401610dd6565b90565b3461031a57602061062f61103561101236610faa565b939190925f526004865260405f209060018060a01b03165f5260205260405f2090565b612798565b3461031a575f36600319011261031a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461031a57604036600319011261031a5760043561109b8161031e565b6024356001600160401b03811161031a575f916110bd83923690600401610b15565b90816040519283928337810184815203915af461110a6110db6119a3565b916110fc60405193849215156020840152604080840152606083019061058f565b03601f198101835282610d7e565b805190602001fd5b3461031a575f36600319011261031a5760206040515f8152f35b3461031a575f36600319011261031a5760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461031a575f36600319011261031a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461031a57602036600319011261031a576004355f526002602052602060405f2054604051908152f35b3461031a57604036600319011261031a5761087a6024356004356112008261031e565b805f525f8051602061334f833981519152602052611224600160405f200154611eb5565b612569565b3461031a57606036600319011261031a576105e46105d060043561124c8161031e565b611254610526565b90602435906119d2565b3461031a57602061062f61127136610faa565b92919091611ad1565b3461031a5760a036600319011261031a5760243560043561129a8261031e565b604435916112a661053b565b90608435906001600160401b03821161031a576112c860049236908401610dd6565b6112d0612229565b5f546020906112f5906112e9906001600160a01b031681565b6001600160a01b031690565b60405163b134427160e01b815294859182905afa9283156108bd575f93611434575b506001600160a01b039283163303611422576001546001600160a01b0316838116611397575b50506040805195865265ffffffffffff909316602086015216927f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed91819081015b0390a361087a60015f8051602061336f83398151915255565b9093604051946113ce866113c0602082019363724ab0f760e11b8552858c898d60248701611c5b565b03601f198101885287610d7e565b62042e305a10611410575f61137e938192827f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed9951926203d090f1509361133d565b604051638072475160e01b8152600490fd5b60405163dabc4ad960e01b8152600490fd5b61145791935060203d60201161145e575b61144f8183610d7e565b8101906116d3565b915f611317565b503d611445565b3461031a57606036600319011261031a576024356114828161031e565b61148a610526565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036106f8576114e46106db926004355f52600460205260405f209060018060a01b03165f5260205260405f2090565b612124565b3461031a575f36600319011261031a575f546040516001600160a01b039091168152602090f35b3461031a57604036600319011261031a57602061062f6024356115328161031e565b600435611cd8565b3461031a575f36600319011261031a5760206040516203d0908152f35b3461031a575f36600319011261031a57602060405160018152f35b5190811515820361031a57565b519063ffffffff8216820361031a57565b919082604091031261031a57610ff960206115aa84611572565b930161157f565b91939265ffffffffffff906060956040519363f7b0554760e01b6020860152602485015260018060a01b031660448401521660648201526064815260a08101908082106001600160401b03831117610d4357611622926116139260405261201a565b60208082518301019101611590565b9061162a5750565b90915063ffffffff6040519116602082015260208152610ff981610d28565b9081602091031261031a57610ff990611572565b6040513d5f823e3d90fd5b81601f8201121561031a5780519061167f82610dbb565b9261168d6040519485610d7e565b8284526020838301011161031a57815f9260208093018386015e8301015290565b9060208282031261031a5781516001600160401b03811161031a57610ff99201611668565b9081602091031261031a5751610ff98161031e565b90610ff9916020815261170782516080602084015260a083019061058f565b906080606061173e61172b602087015195601f19968787830301604088015261058f565b604087015186868303018487015261058f565b940151928285030191015261058f565b604051630df8851f60e11b81526001600160a01b03828116600483015260248201849052848116604483015265ffffffffffff8616606483015295606095909491939091905f856084817f00000000000000000000000000000000000000000000000000000000000000008c165afa9485156108bd575f95611945575b5060405163fbfa77cf60e01b8152602081600481888d165afa9081156108bd57611837995f9286928491611926575b5060405163192c0ff760e21b81526001600160a01b03909116600482015265ffffffffffff909216602483015290998a9190829081906044820190565b03917f0000000000000000000000000000000000000000000000000000000000000000165afa9788156108bd575f986118fa575b50908161187d846118839594876119d2565b946115b1565b908251158015906118f0575b80156118e6575b80156118dc575b6118a957505050909150565b6110fc9450610ff993956118bb610d9f565b938452602084015260408301526060820152604051928391602083016116e8565b508151151561189d565b5080511515611896565b508551151561188f565b611883939291985061191d903d805f833e6119158183610d7e565b8101906116ae565b9790919261186b565b61193f915060203d60201161145e5761144f8183610d7e565b5f6117fa565b61195a9195503d805f833e6119158183610d7e565b935f6117cb565b90610ff992915f52600360205260405f20612798565b5f9081526004602090815260408083206001600160a01b03909416835292905220610ff9929190612798565b3d156119cd573d906119b482610dbb565b916119c26040519384610d7e565b82523d5f602084013e565b606090565b611622916116139194939465ffffffffffff60609660405193630cbd53f560e11b6020860152602485015216604483015260448252611a1082610d63565b61201a565b60405190611a2282610d28565b60606020838281520152565b9060208282031261031a5781516001600160401b039283821161031a57019060408282031261031a5760405192611a6484610d28565b825181811161031a5782611a79918501611668565b8452602083015190811161031a57611a919201611668565b602082015290565b6001600160a01b0391821681529116602082015265ffffffffffff9091166040820152608060608201819052610ff99291019061058f565b92611ae190929192828486612973565b929093611aec611a15565b93805180611c3f575b50508415938415611ba9575b8415611b18575b50505050611b135790565b505f90565b602080949550611b43910151604051958694859463530e1d4360e01b865260601c9060048601611a99565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156108bd575f91611b8a575b50155f808080611b08565b611ba3915060203d6020116108b6576108a88183610d7e565b5f611b7f565b5f549094506001600160a01b0316602084865192611bdc604051948593849363530e1d4360e01b85528960048601611a99565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156108bd575f91611c20575b501593611b01565b611c39915060203d6020116108b6576108a88183610d7e565b5f611c18565b611c53929550602080918301019101611a2e565b925f80611af5565b919360a093610ff9969565ffffffffffff938552600180871b031660208501526040840152166060820152816080820152019061058f565b634e487b7160e01b5f52601160045260245ffd5b8115611cb1570490565b634e487b7160e01b5f52601260045260245ffd5b9060018201809211611cd357565b611c93565b5f546040516308834cb560e21b8082526001600160a01b0385811660048401529283166024830152929392602092909183816044817f000000000000000000000000000000000000000000000000000000000000000086165afa9081156108bd575f91611de5575b5015918215611d61575b50509050611d5b57610ff991612a68565b50505f90565b6040519081526001600160a01b0385166004820152606086901c602482015291508290829060449082907f0000000000000000000000000000000000000000000000000000000000000000165afa9182156108bd575f92611dc8575b505015805f80611d4a565b611dde9250803d106108b6576108a88183610d7e565b5f80611dbd565b611dfc9150843d86116108b6576108a88183610d7e565b5f611d40565b335f9081527f24e48de785eeca8420b70f73d267a66970ccc187d459f2a4b53e74ed92a5ab86602052604090207f15e7c882d74e8821ebf34aaff46fd0e1d53b9393d91490019124113d28dc32a39060ff905b541615610ace5750565b335f9081527f72a65082a5691803ab2b62c9bc729b34205ba1b183d950896526b2fd8714d0c7602052604090207e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf9060ff90611e55565b5f8181525f8051602061334f83398151915260209081526040808320338452909152902060ff90611e55565b634e487b7160e01b5f52603260045260245ffd5b8054821015611f0a575f5260205f2001905f90565b611ee1565b90815491600160401b831015610d435782611f32916001610dac95018155611ef5565b90919082549060031b91821b915f19901b1916179055565b5f19810191908211611cd357565b90929192600182019081548015611fea575b5084611f7584612b40565b50949092845493611f85836120b3565b9681611fd5575b5015611fb2575050505f198101908111611cd357611f328591611fae93611ef5565b9190565b611fae949293611fce926001600160d01b03909116919061319e565b5050611f0f565b65ffffffffffff83811691161490505f611f8c565b600160401b811015610d43578060016120069201845583611ef5565b8154905f199060031b1b191690555f611f6a565b5f9190829160405161204f816110fc6020820194639f86fd8560e01b865230602484015260406044840152606483019061058f565b51915afa5061205c6119a3565b8051810160408282031261031a5761207660208301611572565b916040810151916001600160401b03831161031a5761209c926020809201920101611668565b90156120a55790565b805190811561031a57602001fd5b8054806120e257505f5b6001600160d01b03811615611d5b5760016120d89201611ef5565b90549060031b1c90565b5f19908082810111611cd357825f5260205f2001015460301c6120bd565b9060405161210d81610d28565b915465ffffffffffff8116835260301c6020830152565b91908254905f8291600584116121c2575b612140935085612cc2565b9081156121b6576121af6121a66121a06120d861217261216d61216288611f4a565b895f5260205f200190565b612100565b966001612199602061218a8b5165ffffffffffff1690565b9a01516001600160d01b031690565b9101611ef5565b93611f4a565b63ffffffff1690565b6001939291565b5f925082915081908190565b91926121cd81612b8f565b8103908111611cd35761214093865f526122016121f68360205f200165ffffffffffff90541690565b65ffffffffffff1690565b65ffffffffffff85161015612217575091612135565b92915061222390611cc5565b90612135565b5f8051602061336f83398151915260028154146122465760029055565b604051633ee5aeb560e01b8152600490fd5b90815f52600360205260405f208161226f82612b40565b9193905083156122cd5761228f916001600160d01b031690600101611ef5565b90549060031b1c5b826122c3575b50506122a7575050565b6122bf915f52600360205260405f206103e342612b0e565b5050565b119050815f61229d565b50505f612297565b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260409020545f8051602061334f8339815191529060ff16611d5b575f808052602091825260408082206001600160a01b038516835290925220805460ff1916600117905533906001600160a01b03165f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b6001600160a01b0381165f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c602052604090207fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c905f8051602061334f8339815191529060ff905b541661244f575f828152602091825260408082206001600160a01b038616835290925220805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b5050505f90565b6001600160a01b0381165f9081527f72a65082a5691803ab2b62c9bc729b34205ba1b183d950896526b2fd8714d0c7602052604090207e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf905f8051602061334f8339815191529060ff906123eb565b6001600160a01b0381165f9081527f24e48de785eeca8420b70f73d267a66970ccc187d459f2a4b53e74ed92a5ab86602052604090207f15e7c882d74e8821ebf34aaff46fd0e1d53b9393d91490019124113d28dc32a3905f8051602061334f8339815191529060ff906123eb565b5f8181525f8051602061334f833981519152602081815260408084206001600160a01b038716855290915290912060ff906123eb565b5f8181525f8051602061334f833981519152602081815260408084206001600160a01b03871685529091529091205460ff161561244f575f828152602091825260408082206001600160a01b038616835290925220805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b91909160408184031261031a5780356126138161031e565b9260208201356001600160401b03811161031a57610ff99201610dd6565b61263d918101906125fb565b6040516302910f8b60e31b81526001600160a01b039283166004820181905291906020816024817f000000000000000000000000000000000000000000000000000000000000000088165afa9081156108bd575f91612750575b501561273e576126d26040916126cd612718946126b2612d19565b60018060a01b03166001600160601b0360a01b5f5416175f55565b612e99565b6020810151600180546001600160a01b0319166001600160a01b0390921691909117905580516001600160a01b031684811661272e575b5001516001600160a01b031690565b9081166127225750565b61272b90612380565b50565b612737906122d5565b505f612709565b6040516362df054560e01b8152600490fd5b612769915060203d6020116108b6576108a88183610d7e565b5f612697565b9081602091031261031a57610ff99061157f565b90600163ffffffff80931601918211611cd357565b9180511561286657806020806127b39351830101910161276f565b916127be83826130c9565b926127cf845165ffffffffffff1690565b9065ffffffffffff808516921682811461285a5782119182612805575b50506127fc57610ff99250612ff9565b50506020015190565b9091506128128354611f4a565b63ffffffff83161491821561282b575b50505f806127ec565b6128529192506128466128406121f692612783565b856130c9565b5165ffffffffffff1690565b115f80612822565b50505050506020015190565b50610ff991612ff9565b60405190608082018281106001600160401b03821117610d4357604052606080838181528160208201528160408201520152565b9060208282031261031a5781516001600160401b039283821161031a57019060808282031261031a576128d5610d9f565b92825181811161031a57826128eb918501611668565b8452602083015181811161031a5782612905918501611668565b6020850152604083015181811161031a5782612922918501611668565b6040850152606083015190811161031a5761293d9201611668565b606082015290565b9081602091031261031a575190565b60409065ffffffffffff610ff99493168152816020820152019061058f565b9391909361297f612870565b93805180612a48575b50506129c992939460206129a86112e96112e95f5460018060a01b031690565b8188015190604051808098819463810da75d60e01b83528960048401612954565b03915afa9182156108bd57612a0a945f93612a0f575b50612a0490612a0493946129f860408a01518284611961565b9360608a015192611977565b90613131565b915190565b612a04935090612a39612a049260203d602011612a41575b612a318183610d7e565b810190612945565b9350906129df565b503d612a27565b6129c994955090602080612a609383010191016128a4565b93925f612988565b5f5460405163bd49c35f60e01b8152929190602090849060049082906001600160a01b03165afa9081156108bd57610ff9935f92612ae3575b50612a04610384612a049394612ac2610384855f52600360205260405f2090565b935f52600460205260405f209060018060a01b03165f5260205260405f2090565b612a049250610384612b06612a049260203d602011612a4157612a318183610d7e565b935050612aa1565b65ffffffffffff90818111612b21571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b805480612b515750505f905f905f90565b5f19908082810111611cd357612b6e925f5260205f200101612100565b9065ffffffffffff82511691602060018060d01b0391015116906001929190565b8015611b135780612a04612c5a612c50612c46612c3c612c32612c28612c1e6001610ff99a5f908b60801c80612cb6575b508060401c80612ca9575b508060201c80612c9c575b508060101c80612c8f575b508060081c80612c82575b508060041c80612c75575b508060021c80612c68575b50821c612c61575b811c1b612c17818b611ca7565b0160011c90565b612c17818a611ca7565b612c178189611ca7565b612c178188611ca7565b612c178187611ca7565b612c178186611ca7565b612c178185611ca7565b8092611ca7565b8101612c0a565b600291509101905f612c02565b600491509101905f612bf7565b600891509101905f612bec565b601091509101905f612be1565b602091509101905f612bd6565b604091509101905f612bcb565b9150506080905f612bc0565b905b838310612cd15750505090565b909192612cde81856132b4565b90835f5265ffffffffffff808360205f20015416908416105f14612d065750925b9190612cc4565b93506001810180911115612cff57611c93565b612d216132c9565b612d296132c9565b60015f8051602061336f83398151915255565b60405190612d4982610d48565b5f6040838281528260208201520152565b81601f8201121561031a578051916020916001600160401b038411610d43578360051b9060405194612d8e85840187610d7e565b8552838086019282010192831161031a578301905b828210612db1575050505090565b8380918351612dbf8161031e565b815201910190612da3565b9060208282031261031a5781516001600160401b039283821161031a5701908181039260a0841261031a57606060405194612e0486610d48565b1261031a57604051612e1581610d48565b8351612e208161031e565b81526020840151612e308161031e565b60208201526040840151612e438161031e565b60408201528452606083015181811161031a5782612e62918501612d5a565b6020850152608083015190811161031a57612e7d9201612d5a565b604082015290565b8051821015611f0a5760209160051b010190565b612eb590612ea5612d3c565b5060208082518301019101612dca565b8051519091906001600160a01b03161580612fdf575b612fcd579060208101905f5b82518051821015612f51576112e9612ef283612eff93612e85565b516001600160a01b031690565b15612f3f57612f21612f1d612f18612ef2848751612e85565b612456565b1590565b612f2d57600101612ed7565b604051635140fefd60e11b8152600490fd5b6040516323cda06760e01b8152600490fd5b506040925050818101905f5b82518051821015612fc4576112e9612ef283612f7893612e85565b15612fb357612f96612f1d612f91612ef2848751612e85565b6124c4565b612fa257600101612f5d565b8351635140fefd60e11b8152600490fd5b83516323cda06760e01b8152600490fd5b50509150505190565b6040516303501f5960e11b8152600490fd5b506020820151511580612ecb575060408201515115612ecb565b908154905f829160058411613063575b6130149350846132f7565b8061303c57505f905b6001600160d01b03821615611d5b57610ff99160016120d89201611ef5565b61305661304b61305d92611f4a565b835f5260205f200190565b5460301c90565b9061301d565b919261306e81612b8f565b8103908111611cd35761301493855f5265ffffffffffff808360205f20015416908516105f1461309f575091613009565b9291506130ab90611cc5565b90613009565b604051906130be82610d28565b5f6020838281520152565b906130f26130ec613113926130dc6130b1565b506130e56130b1565b5084611ef5565b50612100565b91600165ffffffffffff845116936020828060d01b03910151169101611ef5565b9054906040519261312384610d28565b835260031b1c602082015290565b908082101561313e575090565b905090565b8054600160401b811015610d435761316091600182018155611ef5565b61318b57815160209092015160301b65ffffffffffff191665ffffffffffff92909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b80549293929190821561328b576131ba61216d61304b85611f4a565b906131cb825165ffffffffffff1690565b65ffffffffffff8481169116811061327957611fae9460209488926131f96121f6875165ffffffffffff1690565b0361324157506132339261320f61321a92611f4a565b905f5260205f200190565b9065ffffffffffff82549181199060301b169116179055565b01516001600160d01b031690565b91505061327491613261613253610dae565b65ffffffffffff9093168352565b6001600160d01b03881682860152613143565b613233565b604051632520601d60e01b8152600490fd5b6132af925061329b613253610dae565b6001600160d01b0385166020830152613143565b5f9190565b90808216911860011c8101809111611cd35790565b60ff5f8051602061338f8339815191525460401c16156132e557565b604051631afcd79f60e31b8152600490fd5b905b8383106133065750505090565b90919261331381856132b4565b90835f5265ffffffffffff808360205f20015416908416105f1461333b5750925b91906132f9565b9350600181018091111561333457611c9356fe02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220a114ef0ff5b29e345fe4269ee0528960ae4a86d65f802fa8e154dd6b83a6427064736f6c63430008190033","sourceMap":"765:2461:81:-:0;;;;;-1:-1:-1;;;;;765:2461:81;;;;;;;;-1:-1:-1;;765:2461:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;348:4:82;;332:21;;8837:64:25;765:2461:81;;;;;;;7896:76:25;;765:2461:81;;;;;;7985:34:25;7981:146;;-1:-1:-1;525:17:69;;;-1:-1:-1;525:17:69;;-1:-1:-1;552:12:69;;-1:-1:-1;2360:34:76;;2404:28;;-1:-1:-1;2404:28:76;;2442:57;;-1:-1:-1;2442:57:76;;2509:61;;-1:-1:-1;2509:61:76;;1248:40:81;;;;;765:2461;;1352:79;;;;;;;;;;;;;;;;;;;;;;;348:4:82;765:2461:81;;-1:-1:-1;;;;;765:2461:81;;;;;;;;;;;;;;;;;1352:79;;;-1:-1:-1;1352:79:81;;;;;;765:2461;;;;;1298:134;;;765:2461;;1298:134;;765:2461;;1493:76;;;;;;;;;;;;;;;;;;;;;;;348:4:82;765:2461:81;;-1:-1:-1;;;;;765:2461:81;;;;;;;;;;;;;;;;;1493:76;;;-1:-1:-1;1493:76:81;;;;;;1442:128;765:2461;;1442:128;;765:2461;;;;;;;;332:21:82;765:2461:81;;;;525:17:69;765:2461:81;;;;;552:12:69;765:2461:81;;;;;2360:34:76;765:2461:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1493:76;765:2461;;;-1:-1:-1;765:2461:81;;;;;1493:76;765:2461;;;-1:-1:-1;765:2461:81;;;;;-1:-1:-1;765:2461:81;1352:79;765:2461;;;-1:-1:-1;765:2461:81;;;;;7981:146:25;-1:-1:-1;;;;;;765:2461:81;;;;;;;;;8087:29:25;;765:2461:81;;8087:29:25;7981:146;;;;;7896:76;765:2461:81;;-1:-1:-1;;;7938:23:25;;;;;765:2461:81;-1:-1:-1;765:2461:81;;;;;-1:-1:-1;;;;;765:2461:81;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a714610214578063075db0361461020f578063103f29071461020a578063128e5d82146102055780631a80e500146102005780631bf10a3e146101fb57806323f752d5146101f6578063248a9ca3146101f157806325dc9708146101ec5780632dd31000146101e75780632f2ff15d146101e257806336568abe146101dd5780633dfd3873146101d8578063439fab91146101d3578063557cab44146101ce5780636679191e146101c95780637f5a7c7b146101c457806391d14854146101bf5780639b656b22146101ba5780639f86fd85146101b5578063a217fddf146101b0578063bb24fe8a146101ab578063c0cd7c3e146101a6578063d15b740e146101a1578063d547741f1461019c578063e02f693714610197578063e102831a14610192578063e49561ee1461018d578063fbfa77cf14610188578063fd4d447c14610183578063ff54740f1461017e5763ffa1ad7414610179575f80fd5b61108a565b61106d565b61103b565b611014565b610e29565b610de5565b610d02565b610bf1565b610bc7565b610b83565b610b40565b610b26565b610a6c565b610a28565b6109ca565b6109a2565b610968565b61094c565b61080f565b6106e9565b61069e565b610652565b61060e565b6105f1565b6105b8565b61043c565b610407565b61033a565b6102f6565b6102b2565b61026e565b3461026a57602036600319011261026a5760043563ffffffff60e01b811680910361026a57602090637965db0b60e01b8114908115610259575b506040519015158152f35b6301ffc9a760e01b1490505f61024e565b5f80fd5b3461026a575f36600319011261026a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461026a575f36600319011261026a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461026a575f36600319011261026a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461026a575f36600319011261026a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6001600160a01b0381160361026a57565b6064359065ffffffffffff8216820361026a57565b608090600319011261026a576004356103bc8161037e565b90602435906044356103cd8161037e565b9060643565ffffffffffff8116810361026a5790565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b3461026a5761043861042461041b366103a4565b92919091611168565b6040519182916020835260208301906103e3565b0390f35b3461026a57604036600319011261026a576004356001600160601b038116810361026a576024359061046c611732565b6040516302910f8b60e31b81523360048201526020816024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa9081156105b3575f91610584575b5015610572576001600160601b03166bffffffffffffffffffffffff193360601b161790806104f6835f52600260205260405f2090565b541461056057610545817fc67e7929681aa1bccd63f52b3799bf5805f3009f197db6fdf584b14f7fbf608c92610534855f52600260205260405f2090565b556040519081529081906020820190565b0390a261055e60015f80516020611bf383398151915255565b005b60405163a741a04560e01b8152600490fd5b6040516323d53b9760e21b8152600490fd5b6105a6915060203d6020116105ac575b61059e8183610c71565b8101906113b9565b5f6104bf565b503d610594565b6110bd565b3461026a57602036600319011261026a576004355f525f80516020611bd38339815191526020526020600160405f200154604051908152f35b3461026a57610438610424610605366103a4565b929190916113f0565b3461026a575f36600319011261026a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461026a57604036600319011261026a5761055e6024356004356106758261037e565b805f525f80516020611bd3833981519152602052610699600160405f200154611761565b611918565b3461026a57604036600319011261026a576024356106bb8161037e565b336001600160a01b038216036106d75761055e9060043561194e565b60405163334bd91960e11b8152600490fd5b3461026a57602036600319011261026a576004356107068161037e565b61070e611732565b335f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c60205260409020547fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c9060ff16156107c457506001546001600160a01b039182169181168214610560576001600160a01b03191681176001557f5bbb1d3ebb6a3ad2a0f17ff35e579a83af60604d1d3c2a4c83c62adecadf666d5f80a260015f80516020611bf383398151915255005b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b9181601f8401121561026a578235916001600160401b03831161026a576020838186019501011161026a57565b3461026a57602036600319011261026a576001600160401b0360043581811161026a576108409036906004016107e2565b5f80516020611c13833981519152549260ff8460401c1615931680159081610944575b600114908161093a575b159081610931575b5061091f575f80516020611c13833981519152805467ffffffffffffffff191660011790556108a891836108f657611a16565b6108ae57005b5f80516020611c13833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f80516020611c13833981519152805460ff60401b191668010000000000000000179055611a16565b60405163f92ee8a960e01b8152600490fd5b9050155f610875565b303b15915061086d565b849150610863565b3461026a575f36600319011261026a576020604051614e208152f35b3461026a575f36600319011261026a5760206040517fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c8152f35b3461026a575f36600319011261026a576001546040516001600160a01b039091168152602090f35b3461026a57604036600319011261026a57602060ff610a1c6024356109ee8161037e565b6004355f525f80516020611bd3833981519152845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b3461026a575f36600319011261026a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461026a5760408060031936011261026a57600435610a8a8161037e565b602435906001600160401b03821161026a575f8091610ab0610b149436906004016107e2565b908187519283928337810184815203915af43d15610b1c57610b063d610ad581610ca1565b90610ae286519283610c71565b81523d5f602083013e5b8451948593151560208501528084015260608301906103e3565b03601f198101835282610c71565b805190602001fd5b610b066060610aec565b3461026a575f36600319011261026a5760206040515f8152f35b3461026a575f36600319011261026a5760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461026a575f36600319011261026a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461026a57602036600319011261026a576004355f526002602052602060405f2054604051908152f35b3461026a57604036600319011261026a5761055e602435600435610c148261037e565b805f525f80516020611bd3833981519152602052610c38600160405f200154611761565b61194e565b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b03821117610c6c57604052565b610c3d565b90601f801991011681019081106001600160401b03821117610c6c57604052565b60405190610c9f82610c51565b565b6001600160401b038111610c6c57601f01601f191660200190565b81601f8201121561026a57803590610cd382610ca1565b92610ce16040519485610c71565b8284526020838301011161026a57815f926020809301838601378301015290565b3461026a5760808060031936011261026a57610d1f60243561037e565b60443565ffffffffffff81160361026a576001600160401b0360643581811161026a57610d50903690600401610cbc565b5060606020604051610d6181610c51565b828152015260605180610d79575b60206040515f8152f35b8281016020821261026a5783519183831161026a5782604091031261026a5760405193610da585610c51565b8281015184811161026a578282610dbe928601016110c8565b855260a083015193841161026a57602093610dda9301016110c8565b9101525f8080610d6f565b3461026a575f36600319011261026a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461026a5760a036600319011261026a57602435600435610e498261037e565b60443591610e5561038f565b90608435906001600160401b03821161026a57610e7760049236908401610cbc565b610e7f611732565b5f54602090610ea490610e98906001600160a01b031681565b6001600160a01b031690565b60405163b134427160e01b815294859182905afa9283156105b3575f93610fe3575b506001600160a01b039283163303610fd1576001546001600160a01b0316838116610f46575b50506040805195865265ffffffffffff909316602086015216927f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed91819081015b0390a361055e60015f80516020611bf383398151915255565b909360405194610f7d86610f6f602082019363724ab0f760e11b8552858c898d602487016115d0565b03601f198101885287610c71565b62042e305a10610fbf575f610f2d938192827f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed9951926203d090f15093610eec565b604051638072475160e01b8152600490fd5b60405163dabc4ad960e01b8152600490fd5b61100691935060203d60201161100d575b610ffe8183610c71565b8101906110a5565b915f610ec6565b503d610ff4565b3461026a575f36600319011261026a575f546040516001600160a01b039091168152602090f35b3461026a57604036600319011261026a57602061106560243561105d8161037e565b600435611608565b604051908152f35b3461026a575f36600319011261026a5760206040516203d0908152f35b3461026a575f36600319011261026a57602060405160018152f35b9081602091031261026a57516110ba8161037e565b90565b6040513d5f823e3d90fd5b81601f8201121561026a578051906110df82610ca1565b926110ed6040519485610c71565b8284526020838301011161026a57815f9260208093018386015e8301015290565b9060208282031261026a5781516001600160401b03811161026a576110ba92016110c8565b906110ba91602081526020611153835160408385015260608401906103e3565b920151906040601f19828503019101526103e3565b604080516309472ec160e11b8152606096956001600160a01b039384169591946020949192917f0000000000000000000000000000000000000000000000000000000000000000169085876004818b5afa9687156105b3575f9761139a575b50845163fbfa77cf60e01b81529686886004818c5afa80156105b357855f9161123b9a839161137d575b508851636a531c3160e11b8082526001600160a01b039586166004830152858916602483015294909116604482015265ffffffffffff909116606482015298899081906084820190565b0381865afa9788156105b3575f98611358575b508686979899600496975196878092621a80e560e81b82525afa9485156105b3575f95611335575b5086519081526001600160a01b03948516600482015293909216602484015260609190911c604483015265ffffffffffff9092166064820152905f9082908180608481015b03915afa9081156105b3575f91611313575b50835115801590611309575b6112e35750505050565b6110ba9394955090610b06916112f7610c92565b95865283860152519384928301611133565b50805115156112d9565b61132f91503d805f833e6113278183610c71565b81019061110e565b5f6112cd565b5f95506113516112bb918a3d8c1161100d57610ffe8183610c71565b9550611276565b8798509661137360049697983d805f833e6113278183610c71565b989796955061124e565b61139491508a3d8c1161100d57610ffe8183610c71565b5f6111f1565b6113b2919750863d881161100d57610ffe8183610c71565b955f6111c7565b9081602091031261026a5751801515810361026a5790565b9081602091031261026a57516001600160401b038116810361026a5790565b604051635d927f4560e11b8082526060969594936001600160a01b03939092909160209190858416908383600481855afa9283156105b3575f936115b1575b506001600160401b039283166114d65750506040516304bb92e160e31b81526001600160a01b0393841660048201526024810194909452505092909216604483015265ffffffffffff9290921660648201529192505f90829060849082907f0000000000000000000000000000000000000000000000000000000000000000165afa9081156105b3575f916114c2575090565b6110ba91503d805f833e6113278183610c71565b839060046040518094819382525afa9081156105b3576001935f92611584575b50501614611505575050505050565b6040516304bb92e160e31b81526001600160a01b039182166004820152602481019290925292909216604483015265ffffffffffff9290921660648201529192505f90829060849082907f0000000000000000000000000000000000000000000000000000000000000000165afa9081156105b3575f916114c2575090565b6115a39250803d106115aa575b61159b8183610c71565b8101906113d1565b5f806114f6565b503d611591565b6115c9919350843d86116115aa5761159b8183610c71565b915f61142f565b919360a0936110ba969565ffffffffffff938552600180871b03166020850152604084015216606082015281608082015201906103e3565b5f546040516308834cb560e21b8082526001600160a01b038581166004840152928316602483015293602092909183816044817f000000000000000000000000000000000000000000000000000000000000000086165afa9081156105b3575f91611715575b501593841561168a575b505050509050611686575f90565b5f90565b6040519586526001600160a01b0392909216600486015260609190911c6024850152909291508290829060449082907f0000000000000000000000000000000000000000000000000000000000000000165afa9182156105b3575f926116f8575b505015805f808080611678565b61170e9250803d106105ac5761059e8183610c71565b5f806116eb565b61172c9150843d86116105ac5761059e8183610c71565b5f61166e565b5f80516020611bf3833981519152600281541461174f5760029055565b604051633ee5aeb560e01b8152600490fd5b5f8181525f80516020611bd38339815191526020908152604080832033845290915290205460ff16156107c45750565b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260409020545f80516020611bd38339815191529060ff1661183c575f808052602091825260408082206001600160a01b038516835290925220805460ff1916600117905533906001600160a01b03165f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b50505f90565b6001600160a01b0381165f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c602052604090207fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c905f80516020611bd38339815191529060ff905b5416611911575f828152602091825260408082206001600160a01b038616835290925220805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b5050505f90565b5f8181525f80516020611bd3833981519152602081815260408084206001600160a01b038716855290915290912060ff906118ad565b5f8181525f80516020611bd3833981519152602081815260408084206001600160a01b03871685529091529091205460ff1615611911575f828152602091825260408082206001600160a01b038616835290925220805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b91909160408184031261026a5780356119f88161037e565b9260208201356001600160401b03811161026a576110ba9201610cbc565b611a22918101906119e0565b506040516302910f8b60e31b81526001600160a01b0391821660048201819052906020816024817f000000000000000000000000000000000000000000000000000000000000000087165afa9081156105b3575f91611b34575b5015611b2257611aa990611a8e611b53565b60018060a01b03166001600160601b0360a01b5f5416175f55565b611afc6040611ab6611b76565b6020810151600180546001600160a01b0319166001600160a01b0390921691909117905580516001600160a01b0316848116611b12575b5001516001600160a01b031690565b908116611b065750565b611b0f90611842565b50565b611b1b90611791565b505f611aed565b6040516362df054560e01b8152600490fd5b611b4d915060203d6020116105ac5761059e8183610c71565b5f611a7c565b611b5b611ba4565b611b63611ba4565b60015f80516020611bf383398151915255565b60405190606082018281106001600160401b03821117610c6c576040525f6040838281528260208201520152565b60ff5f80516020611c138339815191525460401c1615611bc057565b604051631afcd79f60e31b8152600490fdfe02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a264697066735822122039dce195144b27a47a4223371e67014a21ca412ee10a9ba4d2d3f9eae39aa3a164736f6c63430008190033","sourceMap":"765:2461:81:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;-1:-1:-1;;765:2461:81;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3551:47:23;;;:87;;;;765:2461:81;;;;;;;;;;3551:87:23;-1:-1:-1;;;1133:40:29;;-1:-1:-1;3551:87:23;;;765:2461:81;-1:-1:-1;765:2461:81;;;;;;;;-1:-1:-1;;765:2461:81;;;;;;957:56;-1:-1:-1;;;;;765:2461:81;;;;;;;;;;;;-1:-1:-1;;765:2461:81;;;;;;1537:38:76;-1:-1:-1;;;;;765:2461:81;;;;;;;;;;;;-1:-1:-1;;765:2461:81;;;;;;1632:54:76;-1:-1:-1;;;;;765:2461:81;;;;;;;;;;;;-1:-1:-1;;765:2461:81;;;;;;1743:56:76;-1:-1:-1;;;;;765:2461:81;;;;;;;-1:-1:-1;;;;;765:2461:81;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;765:2461:81;;;;;;;;-1:-1:-1;;765:2461:81;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;765:2461:81;;;;;;-1:-1:-1;;;;;765:2461:81;;;;;;;;3217:103:28;;;:::i;:::-;765:2461:81;;-1:-1:-1;;;4285:48:76;;4322:10;765:2461:81;4285:48:76;;765:2461:81;;;;;-1:-1:-1;;;;;4295:16:76;765:2461:81;4285:48:76;;;;;;;-1:-1:-1;4285:48:76;;;765:2461:81;4284:49:76;;4280:99;;-1:-1:-1;;;;;765:2461:81;-1:-1:-1;;4322:10:76;297:2:88;765:2461:81;;267:46:88;4459:27:76;;;;765:2461:81;;4459:15:76;765:2461:81;;;;;;;4459:27:76;765:2461:81;4459:37:76;4455:87;;4654:38;4552:27;4654:38;4552:27;;;765:2461:81;;4459:15:76;765:2461:81;;;;;;;4552:27:76;765:2461:81;;;;;;;;;;;;;;4654:38:76;;;;3282:1:28;1805;-1:-1:-1;;;;;;;;;;;765:2461:81;3716:283:28;3282:1;765:2461:81;4455:87:76;765:2461:81;;-1:-1:-1;;;4519:12:76;;765:2461:81;;4519:12:76;4280:99;765:2461:81;;-1:-1:-1;;;4356:12:76;;765:2461:81;;4356:12:76;4285:48;;;;765:2461:81;4285:48:76;765:2461:81;4285:48:76;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;765:2461:81:-;;;;;;-1:-1:-1;;765:2461:81;;;;;;-1:-1:-1;765:2461:81;-1:-1:-1;;;;;;;;;;;765:2461:81;;;4919:24:23;765:2461:81;-1:-1:-1;765:2461:81;4919:24:23;765:2461:81;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;-1:-1:-1;;765:2461:81;;;;;;322:32:69;-1:-1:-1;;;;;765:2461:81;;;;;;;;;;;;-1:-1:-1;;765:2461:81;;;;5350:25:23;765:2461:81;;;;;;;:::i;:::-;;-1:-1:-1;765:2461:81;-1:-1:-1;;;;;;;;;;;765:2461:81;;3202:4:23;4919:24;765:2461:81;-1:-1:-1;765:2461:81;4919:24:23;765:2461:81;3202:4:23;:::i;:::-;5350:25;:::i;765:2461:81:-;;;;;;-1:-1:-1;;765:2461:81;;;;;;;;;:::i;:::-;966:10:27;-1:-1:-1;;;;;765:2461:81;;6441:34:23;6437:102;;6549:37;765:2461:81;;;6549:37:23;:::i;6437:102::-;765:2461:81;;-1:-1:-1;;;6498:30:23;;765:2461:81;;6498:30:23;765:2461:81;;;;;;-1:-1:-1;;765:2461:81;;;;;;;;;:::i;:::-;3217:103:28;;:::i;:::-;966:10:27;-1:-1:-1;765:2461:81;;;;;;;;;;1356:26:76;;765:2461:81;;4468:23:23;4464:108;;-1:-1:-1;4861:4:76;765:2461:81;-1:-1:-1;;;;;765:2461:81;;;;;;4861:13:76;;4857:63;;-1:-1:-1;;;;;;765:2461:81;;;4861:4:76;765:2461:81;4958:14:76;-1:-1:-1;;4958:14:76;4861:4;-1:-1:-1;;;;;;;;;;;765:2461:81;;4464:108:23;765:2461:81;;;;4514:47:23;;;;;;966:10:27;765:2461:81;4514:47:23;;765:2461:81;;;;;4514:47:23;765:2461:81;;;;;;;;;;;;;-1:-1:-1;;;;;765:2461:81;;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;765:2461:81;;;;-1:-1:-1;;;;;765:2461:81;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;765:2461:81;;;;;;;4301:16:25;765:2461:81;;4726:16:25;;:34;;;;765:2461:81;4805:1:25;4790:16;:50;;;;765:2461:81;4855:13:25;:30;;;;765:2461:81;4851:91:25;;;-1:-1:-1;;;;;;;;;;;765:2461:81;;-1:-1:-1;;765:2461:81;;;;;718:4:69;;4951:18:25;4979:67;;718:4:69;:::i;:::-;5066:101:25;;765:2461:81;5066:101:25;-1:-1:-1;;;;;;;;;;;765:2461:81;;-1:-1:-1;;;;765:2461:81;;;;;-1:-1:-1;765:2461:81;;5142:14:25;;765:2461:81;;5142:14:25;765:2461:81;4979:67:25;-1:-1:-1;;;;;;;;;;;765:2461:81;;-1:-1:-1;;;;765:2461:81;;;;;718:4:69;:::i;4851:91:25:-;765:2461:81;;-1:-1:-1;;;4908:23:25;;765:2461:81;;4908:23:25;4855:30;4872:13;;;4855:30;;;4790:50;4818:4;4810:25;:30;;-1:-1:-1;4790:50:25;;4726:34;;;-1:-1:-1;4726:34:25;;765:2461:81;;;;;;-1:-1:-1;;765:2461:81;;;;;;;1253:6:76;765:2461:81;;;;;;;;;-1:-1:-1;;765:2461:81;;;;;;;1356:26:76;765:2461:81;;;;;;;;;-1:-1:-1;;765:2461:81;;;;;;;;-1:-1:-1;;;;;765:2461:81;;;;;;;;;;;;;;-1:-1:-1;;765:2461:81;;;;;;3901:31:23;765:2461:81;;;;;:::i;:::-;;;-1:-1:-1;765:2461:81;-1:-1:-1;;;;;;;;;;;765:2461:81;;;-1:-1:-1;765:2461:81;;;;;;;;;;;;;;;;;3901:31:23;765:2461:81;;;;;;;;;;;;;;;;-1:-1:-1;;765:2461:81;;;;;;906:45;-1:-1:-1;;;;;765:2461:81;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;765:2461:81;;;;-1:-1:-1;765:2461:81;;;477:31:75;765:2461:81;;;;;;:::i;:::-;;;;;;;;;;;;;;;416:25:75;;;;765:2461:81;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;765:2461:81;;;;;;;;;;;;;477:31:75;;765:2461:81;;;;;;;;;;:::i;:::-;477:31:75;765:2461:81;;477:31:75;;;;;;:::i;:::-;518:79;;;765:2461:81;518:79:75;;765:2461:81;;;;;;;;;;;-1:-1:-1;;765:2461:81;;;;;;;;;;;;;;;;;-1:-1:-1;;765:2461:81;;;;;;;-1:-1:-1;;;;;404:28:69;765:2461:81;;;;;;;;;;-1:-1:-1;;765:2461:81;;;;;;1439:41:76;-1:-1:-1;;;;;765:2461:81;;;;;;;;;;;;-1:-1:-1;;765:2461:81;;;;;;-1:-1:-1;765:2461:81;2009:67:76;765:2461:81;;;;-1:-1:-1;765:2461:81;;;;;;;;;;;;;;-1:-1:-1;;765:2461:81;;;;5767:26:23;765:2461:81;;;;;;;:::i;:::-;;-1:-1:-1;765:2461:81;-1:-1:-1;;;;;;;;;;;765:2461:81;;3202:4:23;4919:24;765:2461:81;-1:-1:-1;765:2461:81;4919:24:23;765:2461:81;3202:4:23;:::i;:::-;5767:26;:::i;765:2461:81:-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;765:2461:81;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;765:2461:81;;;;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;:::-;-1:-1:-1;;;;;765:2461:81;;;;;;-1:-1:-1;;765:2461:81;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;765:2461:81;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;765:2461:81;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;3086:20:76;3082:107;;765:2461:81;;;;-1:-1:-1;765:2461:81;;;3082:107:76;3139:39;;;765:2461:81;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;3082:107:76;;;;;765:2461:81;;;;;;-1:-1:-1;;765:2461:81;;;;;;1019:53;-1:-1:-1;;;;;765:2461:81;;;;;;;;;;;;-1:-1:-1;;765:2461:81;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;765:2461:81;;;;;;;;;;;;:::i;:::-;3217:103:28;;:::i;:::-;-1:-1:-1;765:2461:81;;;5246:21:76;;:13;;-1:-1:-1;;;;;765:2461:81;5246:13:76;765:2461:81;;-1:-1:-1;;;;;765:2461:81;;;5246:21:76;765:2461:81;;-1:-1:-1;;;5246:23:76;;765:2461:81;;;;;5246:23:76;;;;;;;-1:-1:-1;5246:23:76;;;765:2461:81;-1:-1:-1;;;;;;765:2461:81;;;5232:10:76;:37;5228:87;;5341:4;765:2461:81;-1:-1:-1;;;;;765:2461:81;;;;5355:469:76;;765:2461:81;-1:-1:-1;;765:2461:81;;;;;;;;;;;;;;;;5839:55:76;;765:2461:81;;;;5839:55:76;;;;3282:1:28;1805;-1:-1:-1;;;;;;;;;;;765:2461:81;3716:283:28;5355:469:76;765:2461:81;;;;5435:94:76;;;;765:2461:81;5435:94:76;;;;;;;;;;;;765:2461:81;5435:94:76;;;:::i;:::-;;765:2461:81;;5435:94:76;;;;;;:::i;:::-;765:2461:81;5548:9:76;:51;5544:118;;-1:-1:-1;5839:55:76;5676:138;;;;5839:55;5676:138;;;1150:7;5676:138;;5355:469;;;5544:118;765:2461:81;;-1:-1:-1;;;5626:21:76;;765:2461:81;;5626:21:76;5228:87;765:2461:81;;-1:-1:-1;;;5292:12:76;;765:2461:81;;5292:12:76;5246:23;;;;;765:2461:81;5246:23:76;765:2461:81;5246:23:76;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;765:2461:81;;;;;;-1:-1:-1;;765:2461:81;;;;;;;;-1:-1:-1;;;;;765:2461:81;;;;;;;;;;;;;;-1:-1:-1;;765:2461:81;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;765:2461:81;;;;;;;1150:7:76;765:2461:81;;;;;;;;;-1:-1:-1;;765:2461:81;;;;;;;2700:1:76;765:2461:81;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;765:2461:81;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;765:2461:81;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;2213:1011::-;765:2461;;;-1:-1:-1;;;2498:56:81;;765:2461;;2213:1011;-1:-1:-1;;;;;765:2461:81;;;;;;2498:56;;2213:1011;;;2453:20;765:2461;;2498:56;765:2461;2498:56;765:2461;;2498:56;;;;;;;;;;;2213:1011;-1:-1:-1;765:2461:81;;-1:-1:-1;;;2590:32:81;;765:2461;2590:32;765:2461;2498:56;765:2461;2590:32;;;;;;;;2498:56;2590:32;2435:220;2590:32;;;;;2213:1011;-1:-1:-1;765:2461:81;;-1:-1:-1;;;2435:220:81;;;-1:-1:-1;;;;;765:2461:81;;;2498:56;2435:220;;765:2461;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2435:220;;;;;;;;;;;2498:56;2435:220;;;2213:1011;765:2461;;;;;;2498:56;765:2461;;;;;;;;;;2768:58;;;;;;;;;2498:56;2768:58;;;2213:1011;-1:-1:-1;765:2461:81;;2705:174;;;-1:-1:-1;;;;;765:2461:81;;;2498:56;2705:174;;765:2461;;;;;;;;;;;;;;;;;;;;;;;;;;;2498:56;;765:2461;;;;;;;2705:174;;;;;;;;;;2498:56;2705:174;;;2213:1011;765:2461;;;2894:34;;;:74;;;2213:1011;2890:328;;2213:1011;;;;:::o;2890:328::-;2991:216;765:2461;;;;;2991:216;765:2461;;;:::i;:::-;;;;3019:174;;;765:2461;;2991:216;;;;;;:::i;2894:74::-;765:2461;;;2932:36;;2894:74;;2705:174;;;;;;2498:56;2705:174;;;;;;:::i;:::-;;;;;:::i;:::-;;;;2768:58;2498:56;2768:58;;;2705:174;2768:58;;;;;;;;;;;:::i;:::-;;;;;2435:220;;;;;;2498:56;2435:220;;;;;2498:56;2435:220;;;;;;:::i;:::-;;;;;;;;2590:32;;;;;;;;;;;;;;:::i;:::-;;;;2498:56;;;;;;;;;;;;;;;:::i;:::-;;;;;765:2461;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;765:2461:81;;;;;;;:::o;1583:624::-;765:2461;;-1:-1:-1;;;1765:31:81;;;765:2461;;1583:624;;;-1:-1:-1;;;;;765:2461:81;1583:624;;;;1765:31;;765:2461;;;;;1765:31;765:2461;1765:31;765:2461;;1765:31;;;;;;;;;;;1583:624;-1:-1:-1;;;;;;765:2461:81;;;;;-1:-1:-1;;765:2461:81;;-1:-1:-1;;;1824:146:81;;-1:-1:-1;;;;;765:2461:81;;;1765:31;1824:146;;765:2461;;;;;;;;-1:-1:-1;;765:2461:81;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;765:2461:81;;;;;;1853:31;765:2461;1824:146;;;;;;;1765:31;1824:146;;;1817:153;;:::o;1824:146::-;;;;;;1765:31;1824:146;;;;;;:::i;1761:440::-;765:2461;;1765:31;765:2461;;1991:31;;;;;;;;;;;;;2026:1;1991:31;1765;1991;;;1761:440;765:2461;;;1991:36;1987:214;;1761:440;;;;;1583:624::o;1987:214::-;765:2461;;-1:-1:-1;;;2050:140:81;;-1:-1:-1;;;;;765:2461:81;;;1765:31;2050:140;;765:2461;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;765:2461:81;;;;;;2076:28;765:2461;2050:140;;;;;;;1765:31;2050:140;;;2043:147;;:::o;1991:31::-;;;;;;-1:-1:-1;1991:31:81;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;1765;;;;;;;;;;;;;;;:::i;:::-;;;;;765:2461;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3740:389:76:-;3918:5;765:2461:81;;;-1:-1:-1;;;3853:71:76;;;-1:-1:-1;;;;;765:2461:81;;;3853:71:76;;;765:2461:81;;;;;;;;;3853:71:76;;765:2461:81;;3853:71:76;765:2461:81;;;3867:29:76;765:2461:81;;3853:71:76;;;;;;;3918:5;3853:71;;;3740:389;3852:72;;765:2461:81;;;3852:181:76;;3740:389;3835:242;;;;;;;;3918:5;3740:389;:::o;3835:242::-;3918:5;4058:8;:::o;3852:181::-;765:2461:81;;3945:88:76;;;-1:-1:-1;;;;;765:2461:81;;;;3853:71:76;3945:88;;765:2461:81;467:2:88;765:2461:81;;;;;;;;;;;-1:-1:-1;765:2461:81;;;;;;;;3959:31:76;765:2461:81;3945:88:76;;;;;;;3918:5;3945:88;;;3852:181;3944:89;;;3852:181;;;;;;;3945:88;;;;;;-1:-1:-1;3945:88:76;;;;;;:::i;:::-;;;;;3853:71;;;;;;;;;;;;;;:::i;:::-;;;;3326:384:28;-1:-1:-1;;;;;;;;;;;1847:1:28;765:2461:81;;3526:20:28;3522:88;;1847:1;765:2461:81;;3326:384:28:o;3522:88::-;765:2461:81;;-1:-1:-1;;;3569:30:28;;;;;4148:103:23;-1:-1:-1;765:2461:81;;;-1:-1:-1;;;;;;;;;;;765:2461:81;;;;;;;;966:10:27;765:2461:81;;;;;;;;;;4468:23:23;4464:108;;4148:103;:::o;7270:387::-;-1:-1:-1;;;;;765:2461:81;;-1:-1:-1;765:2461:81;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2887:71:23;765:2461:81;;;;-1:-1:-1;765:2461:81;;;;;;;;;;;-1:-1:-1;;;;;765:2461:81;;;;;;;;;;-1:-1:-1;;765:2461:81;7509:4:23;765:2461:81;;;966:10:27;;-1:-1:-1;;;;;765:2461:81;-1:-1:-1;7532:40:23;-1:-1:-1;;7532:40:23;7509:4;7586:11;:::o;7432:219::-;7628:12;;-1:-1:-1;7628:12:23;:::o;7270:387::-;-1:-1:-1;;;;;765:2461:81;;-1:-1:-1;765:2461:81;;;;;;;;;1356:26:76;;-1:-1:-1;;;;;;;;;;;2887:71:23;765:2461:81;;3901:31:23;765:2461:81;;;;-1:-1:-1;765:2461:81;;;;;;;;;;;-1:-1:-1;;;;;765:2461:81;;;;;;;;;;-1:-1:-1;;765:2461:81;7509:4:23;765:2461:81;;;966:10:27;;-1:-1:-1;;;;;765:2461:81;;7532:40:23;-1:-1:-1;;7532:40:23;7509:4;7586:11;:::o;7432:219::-;7628:12;;;-1:-1:-1;7628:12:23;:::o;7270:387::-;-1:-1:-1;765:2461:81;;;-1:-1:-1;;;;;;;;;;;765:2461:81;;;;;;;;-1:-1:-1;;;;;765:2461:81;;;;;;;;;;;;3901:31:23;765:2461:81;7892:388:23;-1:-1:-1;765:2461:81;;;-1:-1:-1;;;;;;;;;;;765:2461:81;;;;;;;;-1:-1:-1;;;;;765:2461:81;;;;;;;;;;;;;;;;-1:-1:-1;765:2461:81;;;;;;;;;;;-1:-1:-1;;;;;765:2461:81;;;;;;;;;;-1:-1:-1;;765:2461:81;;;966:10:27;;-1:-1:-1;;;;;765:2461:81;;8155:40:23;-1:-1:-1;;8155:40:23;765:2461:81;8209:11:23;:::o;765:2461:81:-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;765:2461:81;;;;;;;;:::i;5907:716:76:-;6030:34;5907:716;6030:34;;;;:::i;:::-;-1:-1:-1;765:2461:81;;-1:-1:-1;;;6080:41:76;;-1:-1:-1;;;;;765:2461:81;;;6080:41:76;;;765:2461:81;;;;6080:41:76;765:2461:81;;;6090:13:76;765:2461:81;;6080:41:76;;;;;;;-1:-1:-1;6080:41:76;;;5907:716;6079:42;;6075:90;;6210:14;2540:111:28;;;:::i;:::-;765:2461:81;;;;;;-1:-1:-1;;;;;765:2461:81;;-1:-1:-1;765:2461:81;;;-1:-1:-1;765:2461:81;;6210:14:76;765:2461:81;;;;:::i;:::-;6080:41:76;6311:15;;765:2461:81;;;;-1:-1:-1;;;;;;765:2461:81;-1:-1:-1;;;;;765:2461:81;;;;;;;;;;;-1:-1:-1;;;;;765:2461:81;;;;6337:143:76;;5907:716;-1:-1:-1;6493:28:76;765:2461:81;-1:-1:-1;;;;;765:2461:81;;;;;;;6489:128:76;;5907:716;:::o;6489:128::-;6551:55;;;:::i;:::-;;5907:716::o;6337:143::-;6404:65;;;:::i;:::-;;6337:143;;;6075:90;765:2461:81;;-1:-1:-1;;;6144:10:76;;6080:41;;6144:10;6080:41;;;;;;;;;;;;;;:::i;:::-;;;;6893:76:25;;;:::i;:::-;;;:::i;:::-;1805:1:28;-1:-1:-1;;;;;;;;;;;765:2461:81;6893:76:25:o;765:2461:81:-;;;;;;;;;;-1:-1:-1;;;;;765:2461:81;;;;;;;-1:-1:-1;765:2461:81;;;;;;;;;;;;:::o;7084:141:25:-;765:2461:81;-1:-1:-1;;;;;;;;;;;765:2461:81;;;;7150:18:25;7146:73;;7084:141::o;7146:73::-;765:2461:81;;-1:-1:-1;;;7191:17:25;;;;","linkReferences":{},"immutableReferences":{"57808":[{"start":1571,"length":32}],"57811":[{"start":2911,"length":32}],"58762":[{"start":1167,"length":32},{"start":2968,"length":32}],"58765":[{"start":711,"length":32},{"start":6731,"length":32}],"58768":[{"start":779,"length":32},{"start":5693,"length":32}],"58771":[{"start":847,"length":32},{"start":5819,"length":32}],"61081":[{"start":2621,"length":32},{"start":4496,"length":32}],"61083":[{"start":643,"length":32},{"start":5263,"length":32}],"61085":[{"start":3578,"length":32},{"start":5457,"length":32}]}},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","FACTORY()":"2dd31000","FULL_RESTAKE_DELEGATOR_HINTS()":"e102831a","HOOK_GAS_LIMIT()":"ff54740f","HOOK_RESERVE()":"557cab44","HOOK_SET_ROLE()":"6679191e","NETWORK_REGISTRY()":"c0cd7c3e","NETWORK_RESTAKE_DELEGATOR_HINTS()":"075db036","OPERATOR_NETWORK_OPT_IN_SERVICE()":"1a80e500","OPERATOR_VAULT_OPT_IN_SERVICE()":"128e5d82","OPT_IN_SERVICE_HINTS()":"9b656b22","TYPE()":"bb24fe8a","VAULT_FACTORY()":"103f2907","VERSION()":"ffa1ad74","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","hook()":"7f5a7c7b","initialize(bytes)":"439fab91","maxNetworkLimit(bytes32)":"d15b740e","onSlash(bytes32,address,uint256,uint48,bytes)":"e49561ee","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","setHook(address)":"3dfd3873","setMaxNetworkLimit(uint96,uint256)":"23f752d5","stake(bytes32,address)":"fd4d447c","stakeAt(bytes32,address,uint48,bytes)":"e02f6937","stakeBaseHints(address,bytes32,address,uint48)":"1bf10a3e","stakeHints(address,bytes32,address,uint48)":"25dc9708","staticDelegateCall(address,bytes)":"9f86fd85","supportsInterface(bytes4)":"01ffc9a7","vault()":"fbfa77cf"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"optInServiceHints\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"vaultHints_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadySet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExternalCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientHookGas\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotNetwork\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotSlasher\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"}],\"name\":\"OnSlash\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"hook\",\"type\":\"address\"}],\"name\":\"SetHook\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"SetMaxNetworkLimit\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FULL_RESTAKE_DELEGATOR_HINTS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HOOK_GAS_LIMIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HOOK_RESERVE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HOOK_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NETWORK_REGISTRY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NETWORK_RESTAKE_DELEGATOR_HINTS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_NETWORK_OPT_IN_SERVICE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_VAULT_OPT_IN_SERVICE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPT_IN_SERVICE_HINTS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TYPE\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VAULT_FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VERSION\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hook\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"}],\"name\":\"maxNetworkLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"hook_\",\"type\":\"address\"}],\"name\":\"setHook\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint96\",\"name\":\"identifier\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"setMaxNetworkLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"stake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hints\",\"type\":\"bytes\"}],\"name\":\"stakeAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"stakeBaseHints\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"stakeHints\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"staticDelegateCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"OnSlash(bytes32,address,uint256,uint48)\":{\"params\":{\"amount\":\"amount of the collateral to be slashed\",\"captureTimestamp\":\"time point when the stake was captured\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"SetHook(address)\":{\"params\":{\"hook\":\"address of the hook\"}},\"SetMaxNetworkLimit(bytes32,uint256)\":{\"params\":{\"amount\":\"new maximum subnetwork's limit (how much stake the subnetwork is ready to get)\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}}},\"kind\":\"dev\",\"methods\":{\"VERSION()\":{\"details\":\"Must return 1 for this one.\",\"returns\":{\"_0\":\"version of the delegator\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize(bytes)\":{\"params\":{\"data\":\"some data to use\"}},\"onSlash(bytes32,address,uint256,uint48,bytes)\":{\"details\":\"Only the vault's slasher can call this function.\",\"params\":{\"amount\":\"amount of the collateral slashed\",\"captureTimestamp\":\"time point when the stake was captured\",\"data\":\"some additional data\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"setHook(address)\":{\"details\":\"Only a HOOK_SET_ROLE holder can call this function. The hook can have arbitrary logic under certain functions, however, it doesn't affect the stake guarantees.\",\"params\":{\"hook\":\"address of the hook\"}},\"setMaxNetworkLimit(uint96,uint256)\":{\"details\":\"Only a network can call this function.\",\"params\":{\"amount\":\"new maximum subnetwork's limit\"}},\"stake(bytes32,address)\":{\"details\":\"Warning: this function is not safe to use for stake capturing, as it can change by the end of the block.\",\"params\":{\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"_0\":\"slashable stake until the end of the next epoch\"}},\"stakeAt(bytes32,address,uint48,bytes)\":{\"details\":\"Warning: it is not safe to use timestamp >= current one for the stake capturing, as it can change later.\",\"params\":{\"hints\":\"hints for the checkpoints' indexes\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\",\"timestamp\":\"time point to capture the stake at\"},\"returns\":{\"_0\":\"slashable stake at the given timestamp until the end of the consequent epoch\"}},\"staticDelegateCall(address,bytes)\":{\"details\":\"It allows to use this contract's storage on-chain.\",\"params\":{\"data\":\"data to make a delegatecall with\",\"target\":\"address of the contract to make a delegatecall to\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"events\":{\"OnSlash(bytes32,address,uint256,uint48)\":{\"notice\":\"Emitted when a slash happens.\"},\"SetHook(address)\":{\"notice\":\"Emitted when a hook is set.\"},\"SetMaxNetworkLimit(bytes32,uint256)\":{\"notice\":\"Emitted when a subnetwork's maximum limit is set.\"}},\"kind\":\"user\",\"methods\":{\"FACTORY()\":{\"notice\":\"Get the factory's address.\"},\"HOOK_GAS_LIMIT()\":{\"notice\":\"Get a gas limit for the hook.\"},\"HOOK_RESERVE()\":{\"notice\":\"Get a reserve gas between the gas limit check and the hook's execution.\"},\"HOOK_SET_ROLE()\":{\"notice\":\"Get a hook setter's role.\"},\"NETWORK_REGISTRY()\":{\"notice\":\"Get the network registry's address.\"},\"OPERATOR_NETWORK_OPT_IN_SERVICE()\":{\"notice\":\"Get the operator-network opt-in service's address.\"},\"OPERATOR_VAULT_OPT_IN_SERVICE()\":{\"notice\":\"Get the operator-vault opt-in service's address.\"},\"TYPE()\":{\"notice\":\"Get the entity's type.\"},\"VAULT_FACTORY()\":{\"notice\":\"Get the vault factory's address.\"},\"VERSION()\":{\"notice\":\"Get a version of the delegator (different versions mean different interfaces).\"},\"hook()\":{\"notice\":\"Get the hook's address.\"},\"initialize(bytes)\":{\"notice\":\"Initialize this entity contract by using a given data.\"},\"maxNetworkLimit(bytes32)\":{\"notice\":\"Get a particular subnetwork's maximum limit (meaning the subnetwork is not ready to get more as a stake).\"},\"onSlash(bytes32,address,uint256,uint48,bytes)\":{\"notice\":\"Called when a slash happens.\"},\"setHook(address)\":{\"notice\":\"Set a new hook.\"},\"setMaxNetworkLimit(uint96,uint256)\":{\"notice\":\"Set a maximum limit for a subnetwork (how much stake the subnetwork is ready to get). identifier identifier of the subnetwork\"},\"stake(bytes32,address)\":{\"notice\":\"Get a stake that a given subnetwork will be able to slash for a certain operator until the end of the next epoch (if no cross-slashing and no slashings by the subnetwork).\"},\"stakeAt(bytes32,address,uint48,bytes)\":{\"notice\":\"Get a stake that a given subnetwork could be able to slash for a certain operator at a given timestamp until the end of the consequent epoch using hints (if no cross-slashing and no slashings by the subnetwork).\"},\"staticDelegateCall(address,bytes)\":{\"notice\":\"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data).\"},\"vault()\":{\"notice\":\"Get the vault's address.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/hints/DelegatorHints.sol\":\"BaseDelegatorHints\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://942dad22fbdc1669f025540ba63aa3ccfad5f8458fc5d4525b31ebf272e7af45\",\"dweb:/ipfs/Qmdo4X2M82aM3AMoW2kf2jhYkSCyC4T1pHNd6obdsDFnAB\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45\",\"dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26\",\"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol\":{\"keccak256\":\"0x85a45f3f10014a0f8be41157a32b6a5f905753ea64a4b64e29fc12b7deeecf39\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c3c74009ce36136b36c77c23935b8e4a7b4f253be2da2be4fb4a916b1ce43743\",\"dweb:/ipfs/QmcH36v3iN7SJJuF73AunLR2LtNxhVJ1wm63ph4dPZ4pcL\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x18a7171df639a934592915a520ecb97c5bbc9675a1105607aac8a94e72bf62c6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7478e1f13da69a2867ccd883001d836b75620362e743f196376d63ed0c422a1c\",\"dweb:/ipfs/QmWywcQ9TNfwtoqAxbn25d8C5VrV12PrPS9UjtGe6pL2BA\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xeed0a08b0b091f528356cbc7245891a4c748682d4f6a18055e8e6ca77d12a6cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba80ba06c8e6be852847e4c5f4492cef801feb6558ae09ed705ff2e04ea8b13c\",\"dweb:/ipfs/QmXRJDv3xHLVQCVXg1ZvR35QS9sij5y9NDWYzMfUfAdTHF\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x999f705a027ed6dc2d4e0df2cc4a509852c6bfd11de1c8161bf88832d0503fd0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0798def67258d9a3cc20b2b4da7ebf351a5cefe0abfdd665d2d81f8e32f89b21\",\"dweb:/ipfs/QmPEvJosnPfzHNjKvCv2D3891mA2Ww8eUwkqrxBjuYdHCt\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0xba333517a3add42cd35fe877656fc3dfcc9de53baa4f3aabbd6d12a92e4ea435\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ceacff44c0fdc81e48e0e0b1db87a2076d3c1fb497341de077bf1da9f6b406c\",\"dweb:/ipfs/QmRUo1muMRAewxrKQ7TkXUtknyRoR57AyEkoPpiuZQ8FzX\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/SignatureChecker.sol\":{\"keccak256\":\"0x6b11eb41a228cca35d4b662b4df69fcd75192851365102690f57b2ac01e83fe6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab006a2983ed350d2af21ddcdd835dcae3b8340086cc4d088460da5abd041f69\",\"dweb:/ipfs/QmbEacDhkJZiGrgzLjB4pNtE8Z1uudjDw1DvcDUTVQFsLG\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c\",\"dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0xbdc5e074d7dd6678f67e92b1a51a20226801a407b0e1af3da367c5d1ff4519ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a36cca6b22fff3db16fc789ff6c60eea71d4b156065d4d0c83a0bc5e91a77a8b\",\"dweb:/ipfs/QmYN3exd5AemxjBrN8XMB1p5LbbE16uC3sjbYjwi8AjcGR\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0xc7755af115020049e4140f224f9ee88d7e1799ffb0646f37bf0df24bf6213f58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f09bf94d5274334ec021f61a04659db303f31e60460e14b709c9bf187740111\",\"dweb:/ipfs/QmNvgomZYUwFAt4cZbPWAiTeSZQreGehY9BK5xyVJsUttb\"]},\"src/contracts/common/Entity.sol\":{\"keccak256\":\"0x3d61a932995b8443381f3950542d388223a2c26dd5d29a3274dea3baa7388bd7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7cdf5f03ca72fd263fd32ff59c8d88ddca911ae83896a287d10772c1bbe9b138\",\"dweb:/ipfs/QmbP84r5BWT1Rn9AYTntWSf3xUMTTCohTZJFhbBhDXFoHa\"]},\"src/contracts/common/MigratableEntity.sol\":{\"keccak256\":\"0x2d736f4dacd5d7e7697503bc426c78b8250fe1694ca157965ec178da6807de58\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f1237acf96b4b9f9b69156e068eddd726a6e15bd8e87a18dc999cd4ba4da069c\",\"dweb:/ipfs/QmS6M8fiFFSeuJ4ZKKq1z8W7w4ybeHQSy5TLASGoc1LVic\"]},\"src/contracts/common/StaticDelegateCallable.sol\":{\"keccak256\":\"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764\",\"dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD\"]},\"src/contracts/delegator/BaseDelegator.sol\":{\"keccak256\":\"0x7c54d491fdd4415b764a9c8defa068e56d4c0c8c9419be0053a1d377669290e8\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://9238bfbad0f6eeb0dc7727724de14380f1980b395902269703d5e2ef07e52e10\",\"dweb:/ipfs/QmPJn1V4HNXcEghYvogGuSTF24dSQUPosR5qtsXcmNqRm3\"]},\"src/contracts/delegator/FullRestakeDelegator.sol\":{\"keccak256\":\"0x0a81c4f8e72914563a9cb771e93acf889c71ea36b7bec040e4eb562b199d5af1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6fc66b6ba02da77046a0bbbd1dd407a62c08f52e04486c9cbd2cb1cca3da555f\",\"dweb:/ipfs/QmZQivK1ZnMxfRQQ5aLpV9co5u55wQVNev5Rg1hzAqxhkE\"]},\"src/contracts/delegator/NetworkRestakeDelegator.sol\":{\"keccak256\":\"0xd3a8e6522f9c6fdcc2da837c9023afd6bdff2bce45a35590320c475519e3636d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://58b17a87f6554f08376f9ea7fedf486a4aa75801bf0ad8b23ff5a46959b6b7a3\",\"dweb:/ipfs/QmSTmNh67tYt8CmjVZb57r8N3qX5yeYdMApKPJm3qvQgQw\"]},\"src/contracts/delegator/OperatorNetworkSpecificDelegator.sol\":{\"keccak256\":\"0x031a10722b9ec49048f0952710401131290adb87e71caf294e864e7ac3b98a16\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://72428febc875134b2f29205e6f294634a1c22a7d5c78d6a9cb2f8196f107c9b5\",\"dweb:/ipfs/QmTPwXR6h5oytckmkLrHdKeEMdphJxceDhYUR4zvQeWAwY\"]},\"src/contracts/delegator/OperatorSpecificDelegator.sol\":{\"keccak256\":\"0x630ce62fa30b9f3349ab7a8cf8dbf041319febc6dd757be2f94d3d25944ed328\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c2ac59d47ce57d2a6819ae9833e1a618a371eccff93eb5ab367b201b01f42bfa\",\"dweb:/ipfs/QmdBpGMBivpNPv2WbH8vnCUy5xkVeaxQvGgqi33vKCz1kA\"]},\"src/contracts/hints/DelegatorHints.sol\":{\"keccak256\":\"0x44aa0c396311a54afbc7c73e8dadeed41e3165a4fd13f712b27d63d50fc3376d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://2f255214f3531fc707d88be0d56a7a0aed4180439316d099d760d9118aa83093\",\"dweb:/ipfs/QmZD1w5p1ukJSXumUAjvxwGmkPhn7vsr21Y2atLGEZR2oi\"]},\"src/contracts/hints/Hints.sol\":{\"keccak256\":\"0x8b565df1ae35993c097a9e642002782a8f451f6fd01809cad6bcd345bdf1b99c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://99a19adb01e350a92f534095b3078229df1f2f83077992d75d58d8684be45971\",\"dweb:/ipfs/QmbmwcuswVbzvwHQFTtrJG86oV98GnfxqYTb8cV8u1acox\"]},\"src/contracts/hints/OptInServiceHints.sol\":{\"keccak256\":\"0x95d9407900d27b9f4a1233b772aeed809c07b2dc5b31cfc9fa77ca26514c49e5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://a13a8877e312d7e6b8b85bde3668c5d84ff5ecc83f762cd573f2b7104c64eb42\",\"dweb:/ipfs/QmYV2J55acuGzCNnS3juABuUHY5U1xc8g8o9jwEyFFdeG5\"]},\"src/contracts/hints/VaultHints.sol\":{\"keccak256\":\"0xccb505b7159b769cc114d67b87c2de6b106557f667fc8f3780114baad5c3c442\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6d0c80a908fc16e96a8b5605a0bd53f9e89ad0ef0a738fbbae80ba4d3160749b\",\"dweb:/ipfs/QmXo5UtWoR8YmunqcbBU8rQMm1nvmvjNPoXcVrDhh4pEwR\"]},\"src/contracts/libraries/Checkpoints.sol\":{\"keccak256\":\"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609\",\"dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE\"]},\"src/contracts/libraries/ERC4626Math.sol\":{\"keccak256\":\"0x8441160513c1cbeb1c3b9ee077bcc7e7ce20006b52a77c8dd39ff0ef89699939\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://943f8cc3e26ddf649f465f40c909819f5c864717c4baa339e9e403b9374a4653\",\"dweb:/ipfs/QmXPxi1sUDsrGprZdUgCzoPEosaZMv9ZhygWQ1vAi1phAB\"]},\"src/contracts/libraries/Subnetwork.sol\":{\"keccak256\":\"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56\",\"dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32\"]},\"src/contracts/service/OptInService.sol\":{\"keccak256\":\"0x4e0932077f2686b7990e10d59deb2535334c0d09e52ef6e57c6ab09eca21c4b1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7c00d311032ed4a1743aca7475f3c86ce15cdfc2218108efc3731c03d34a5278\",\"dweb:/ipfs/QmUGGfVwVhaHr5kS4177yKKYiLYzi5qZpkEmvYxBZqazxf\"]},\"src/contracts/vault/Vault.sol\":{\"keccak256\":\"0x2ceff6ed3298c4cad144c99fcc79b51cb9397d6ebef00285b915848b476f8c2e\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://11f2fb3581854f3ab6e82e8d4935d9eb510c903a13c3f022346c2956a58f5307\",\"dweb:/ipfs/QmdUnoXoyYoG9SGWyQZCFyLDRUUX3eXyXetkRvw6jxqqBz\"]},\"src/contracts/vault/VaultStorage.sol\":{\"keccak256\":\"0x57db25b127d77ea3472de53e3a4af3354399655b9268638b99ca5925fa364a56\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://aa763d9a6ec508ae3abfb8228b72b9fd9525279e5135d4962e79ff059feb1173\",\"dweb:/ipfs/QmcbDR6E9wyEpu6V2FkEC4hnWy47zXA9LSKJde6zSGd33Q\"]},\"src/interfaces/common/IEntity.sol\":{\"keccak256\":\"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b\",\"dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv\"]},\"src/interfaces/common/IMigratableEntity.sol\":{\"keccak256\":\"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c\",\"dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds\"]},\"src/interfaces/common/IRegistry.sol\":{\"keccak256\":\"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014\",\"dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK\"]},\"src/interfaces/common/IStaticDelegateCallable.sol\":{\"keccak256\":\"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516\",\"dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi\"]},\"src/interfaces/delegator/IBaseDelegator.sol\":{\"keccak256\":\"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2\",\"dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8\"]},\"src/interfaces/delegator/IDelegatorHook.sol\":{\"keccak256\":\"0xc51aa8d7d1f6c8043ee819b7aeb86da0e993912e1442098df897e299f01f9f46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://adddf5cb2ba282aeb576b26efb28640f865a1721cc9b6eee8b3ee0457a2c9780\",\"dweb:/ipfs/QmNYgAmnLRwWZbhTuQhZs9rx4zcme1df5mEepkrniorSoW\"]},\"src/interfaces/delegator/IFullRestakeDelegator.sol\":{\"keccak256\":\"0xa3c8cb2e45d4d8ce90e95263bea40c01dc400f05ad65bc29597d878606be5e7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://782cf5e201aa4cca037ebafd3807a68ff1cc721d5b8416a35244db0d0607369e\",\"dweb:/ipfs/QmQkJks6x7CKndeTPa9LxgTNygD5uEi7obhADhpq1Lsr9A\"]},\"src/interfaces/delegator/INetworkRestakeDelegator.sol\":{\"keccak256\":\"0xe7030fe30389a147fd710e3436ec346b4842695fd3e65a81b95375c9f1d633fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://739c7e66d301778054f5c90bee45ec9438f68afba8a03eaaac52064c73b115ad\",\"dweb:/ipfs/QmfZ2ytKcTykAc76nxhg8ikUXV8NdBpetqb8W4YWPcox1Z\"]},\"src/interfaces/delegator/IOperatorNetworkSpecificDelegator.sol\":{\"keccak256\":\"0x74b95e64d29769202d45dd277bb830f623ff3d41ce77b80ce3ee4e318a5c71ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e512b903aae5c1b8a028c6e3f4f6223b5cb5d704503cfa6bd37b5346868f5c20\",\"dweb:/ipfs/QmZim9YExsPWtyxyeui993HTKAEmrg8MUcSkZ77Gp2JcuZ\"]},\"src/interfaces/delegator/IOperatorSpecificDelegator.sol\":{\"keccak256\":\"0x72075cab585dc17240cc3e32bc99b92f0d5627ddd988fed680e3e1a52d5a01e4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7448bc90699409ae61d85216b5efc2143a37f0f73354be2aea993bc54afca441\",\"dweb:/ipfs/QmXE4gAxM8pHosZK8mcTcj17puBx484meDCcmrDePskGHZ\"]},\"src/interfaces/service/IOptInService.sol\":{\"keccak256\":\"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337\",\"dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24\"]},\"src/interfaces/slasher/IBaseSlasher.sol\":{\"keccak256\":\"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf\",\"dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx\"]},\"src/interfaces/vault/IVault.sol\":{\"keccak256\":\"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9\",\"dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R\"]},\"src/interfaces/vault/IVaultStorage.sol\":{\"keccak256\":\"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e\",\"dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"optInServiceHints","type":"address"},{"internalType":"address","name":"vaultHints_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"inputs":[],"type":"error","name":"AlreadySet"},{"inputs":[],"type":"error","name":"ExternalCall"},{"inputs":[],"type":"error","name":"InsufficientHookGas"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"NotInitialized"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"NotNetwork"},{"inputs":[],"type":"error","name":"NotSlasher"},{"inputs":[],"type":"error","name":"NotVault"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint48","name":"captureTimestamp","type":"uint48","indexed":false}],"type":"event","name":"OnSlash","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[{"internalType":"address","name":"hook","type":"address","indexed":true}],"type":"event","name":"SetHook","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"SetMaxNetworkLimit","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FULL_RESTAKE_DELEGATOR_HINTS","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HOOK_GAS_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HOOK_RESERVE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HOOK_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"NETWORK_REGISTRY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"NETWORK_RESTAKE_DELEGATOR_HINTS","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_NETWORK_OPT_IN_SERVICE","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_VAULT_OPT_IN_SERVICE","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPT_IN_SERVICE_HINTS","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"TYPE","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VAULT_FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"VERSION","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"hook","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"}],"stateMutability":"view","type":"function","name":"maxNetworkLimit","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint48","name":"captureTimestamp","type":"uint48"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"onSlash"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"address","name":"hook_","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setHook"},{"inputs":[{"internalType":"uint96","name":"identifier","type":"uint96"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setMaxNetworkLimit"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"stake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hints","type":"bytes"}],"stateMutability":"view","type":"function","name":"stakeAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"},{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"stakeBaseHints","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"},{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"stakeHints","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"staticDelegateCall"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"vault","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"VERSION()":{"details":"Must return 1 for this one.","returns":{"_0":"version of the delegator"}},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"initialize(bytes)":{"params":{"data":"some data to use"}},"onSlash(bytes32,address,uint256,uint48,bytes)":{"details":"Only the vault's slasher can call this function.","params":{"amount":"amount of the collateral slashed","captureTimestamp":"time point when the stake was captured","data":"some additional data","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"}},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"setHook(address)":{"details":"Only a HOOK_SET_ROLE holder can call this function. The hook can have arbitrary logic under certain functions, however, it doesn't affect the stake guarantees.","params":{"hook":"address of the hook"}},"setMaxNetworkLimit(uint96,uint256)":{"details":"Only a network can call this function.","params":{"amount":"new maximum subnetwork's limit"}},"stake(bytes32,address)":{"details":"Warning: this function is not safe to use for stake capturing, as it can change by the end of the block.","params":{"operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"_0":"slashable stake until the end of the next epoch"}},"stakeAt(bytes32,address,uint48,bytes)":{"details":"Warning: it is not safe to use timestamp >= current one for the stake capturing, as it can change later.","params":{"hints":"hints for the checkpoints' indexes","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)","timestamp":"time point to capture the stake at"},"returns":{"_0":"slashable stake at the given timestamp until the end of the consequent epoch"}},"staticDelegateCall(address,bytes)":{"details":"It allows to use this contract's storage on-chain.","params":{"data":"data to make a delegatecall with","target":"address of the contract to make a delegatecall to"}},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."}},"version":1},"userdoc":{"kind":"user","methods":{"FACTORY()":{"notice":"Get the factory's address."},"HOOK_GAS_LIMIT()":{"notice":"Get a gas limit for the hook."},"HOOK_RESERVE()":{"notice":"Get a reserve gas between the gas limit check and the hook's execution."},"HOOK_SET_ROLE()":{"notice":"Get a hook setter's role."},"NETWORK_REGISTRY()":{"notice":"Get the network registry's address."},"OPERATOR_NETWORK_OPT_IN_SERVICE()":{"notice":"Get the operator-network opt-in service's address."},"OPERATOR_VAULT_OPT_IN_SERVICE()":{"notice":"Get the operator-vault opt-in service's address."},"TYPE()":{"notice":"Get the entity's type."},"VAULT_FACTORY()":{"notice":"Get the vault factory's address."},"VERSION()":{"notice":"Get a version of the delegator (different versions mean different interfaces)."},"hook()":{"notice":"Get the hook's address."},"initialize(bytes)":{"notice":"Initialize this entity contract by using a given data."},"maxNetworkLimit(bytes32)":{"notice":"Get a particular subnetwork's maximum limit (meaning the subnetwork is not ready to get more as a stake)."},"onSlash(bytes32,address,uint256,uint48,bytes)":{"notice":"Called when a slash happens."},"setHook(address)":{"notice":"Set a new hook."},"setMaxNetworkLimit(uint96,uint256)":{"notice":"Set a maximum limit for a subnetwork (how much stake the subnetwork is ready to get). identifier identifier of the subnetwork"},"stake(bytes32,address)":{"notice":"Get a stake that a given subnetwork will be able to slash for a certain operator until the end of the next epoch (if no cross-slashing and no slashings by the subnetwork)."},"stakeAt(bytes32,address,uint48,bytes)":{"notice":"Get a stake that a given subnetwork could be able to slash for a certain operator at a given timestamp until the end of the consequent epoch using hints (if no cross-slashing and no slashings by the subnetwork)."},"staticDelegateCall(address,bytes)":{"notice":"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data)."},"vault()":{"notice":"Get the vault's address."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/hints/DelegatorHints.sol":"BaseDelegatorHints"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol":{"keccak256":"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74","urls":["bzz-raw://942dad22fbdc1669f025540ba63aa3ccfad5f8458fc5d4525b31ebf272e7af45","dweb:/ipfs/Qmdo4X2M82aM3AMoW2kf2jhYkSCyC4T1pHNd6obdsDFnAB"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8","urls":["bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45","dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41","urls":["bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26","dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol":{"keccak256":"0x85a45f3f10014a0f8be41157a32b6a5f905753ea64a4b64e29fc12b7deeecf39","urls":["bzz-raw://c3c74009ce36136b36c77c23935b8e4a7b4f253be2da2be4fb4a916b1ce43743","dweb:/ipfs/QmcH36v3iN7SJJuF73AunLR2LtNxhVJ1wm63ph4dPZ4pcL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol":{"keccak256":"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92","urls":["bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a","dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70","urls":["bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c","dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff","urls":["bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d","dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386","urls":["bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0","dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721","urls":["bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245","dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol":{"keccak256":"0x18a7171df639a934592915a520ecb97c5bbc9675a1105607aac8a94e72bf62c6","urls":["bzz-raw://7478e1f13da69a2867ccd883001d836b75620362e743f196376d63ed0c422a1c","dweb:/ipfs/QmWywcQ9TNfwtoqAxbn25d8C5VrV12PrPS9UjtGe6pL2BA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418","urls":["bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c","dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792","urls":["bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453","dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0xeed0a08b0b091f528356cbc7245891a4c748682d4f6a18055e8e6ca77d12a6cf","urls":["bzz-raw://ba80ba06c8e6be852847e4c5f4492cef801feb6558ae09ed705ff2e04ea8b13c","dweb:/ipfs/QmXRJDv3xHLVQCVXg1ZvR35QS9sij5y9NDWYzMfUfAdTHF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol":{"keccak256":"0x999f705a027ed6dc2d4e0df2cc4a509852c6bfd11de1c8161bf88832d0503fd0","urls":["bzz-raw://0798def67258d9a3cc20b2b4da7ebf351a5cefe0abfdd665d2d81f8e32f89b21","dweb:/ipfs/QmPEvJosnPfzHNjKvCv2D3891mA2Ww8eUwkqrxBjuYdHCt"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0xba333517a3add42cd35fe877656fc3dfcc9de53baa4f3aabbd6d12a92e4ea435","urls":["bzz-raw://2ceacff44c0fdc81e48e0e0b1db87a2076d3c1fb497341de077bf1da9f6b406c","dweb:/ipfs/QmRUo1muMRAewxrKQ7TkXUtknyRoR57AyEkoPpiuZQ8FzX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/SignatureChecker.sol":{"keccak256":"0x6b11eb41a228cca35d4b662b4df69fcd75192851365102690f57b2ac01e83fe6","urls":["bzz-raw://ab006a2983ed350d2af21ddcdd835dcae3b8340086cc4d088460da5abd041f69","dweb:/ipfs/QmbEacDhkJZiGrgzLjB4pNtE8Z1uudjDw1DvcDUTVQFsLG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe","urls":["bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c","dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72","urls":["bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc","dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol":{"keccak256":"0xbdc5e074d7dd6678f67e92b1a51a20226801a407b0e1af3da367c5d1ff4519ad","urls":["bzz-raw://a36cca6b22fff3db16fc789ff6c60eea71d4b156065d4d0c83a0bc5e91a77a8b","dweb:/ipfs/QmYN3exd5AemxjBrN8XMB1p5LbbE16uC3sjbYjwi8AjcGR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0xc7755af115020049e4140f224f9ee88d7e1799ffb0646f37bf0df24bf6213f58","urls":["bzz-raw://7f09bf94d5274334ec021f61a04659db303f31e60460e14b709c9bf187740111","dweb:/ipfs/QmNvgomZYUwFAt4cZbPWAiTeSZQreGehY9BK5xyVJsUttb"],"license":"MIT"},"src/contracts/common/Entity.sol":{"keccak256":"0x3d61a932995b8443381f3950542d388223a2c26dd5d29a3274dea3baa7388bd7","urls":["bzz-raw://7cdf5f03ca72fd263fd32ff59c8d88ddca911ae83896a287d10772c1bbe9b138","dweb:/ipfs/QmbP84r5BWT1Rn9AYTntWSf3xUMTTCohTZJFhbBhDXFoHa"],"license":"BUSL-1.1"},"src/contracts/common/MigratableEntity.sol":{"keccak256":"0x2d736f4dacd5d7e7697503bc426c78b8250fe1694ca157965ec178da6807de58","urls":["bzz-raw://f1237acf96b4b9f9b69156e068eddd726a6e15bd8e87a18dc999cd4ba4da069c","dweb:/ipfs/QmS6M8fiFFSeuJ4ZKKq1z8W7w4ybeHQSy5TLASGoc1LVic"],"license":"BUSL-1.1"},"src/contracts/common/StaticDelegateCallable.sol":{"keccak256":"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90","urls":["bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764","dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD"],"license":"BUSL-1.1"},"src/contracts/delegator/BaseDelegator.sol":{"keccak256":"0x7c54d491fdd4415b764a9c8defa068e56d4c0c8c9419be0053a1d377669290e8","urls":["bzz-raw://9238bfbad0f6eeb0dc7727724de14380f1980b395902269703d5e2ef07e52e10","dweb:/ipfs/QmPJn1V4HNXcEghYvogGuSTF24dSQUPosR5qtsXcmNqRm3"],"license":"BUSL-1.1"},"src/contracts/delegator/FullRestakeDelegator.sol":{"keccak256":"0x0a81c4f8e72914563a9cb771e93acf889c71ea36b7bec040e4eb562b199d5af1","urls":["bzz-raw://6fc66b6ba02da77046a0bbbd1dd407a62c08f52e04486c9cbd2cb1cca3da555f","dweb:/ipfs/QmZQivK1ZnMxfRQQ5aLpV9co5u55wQVNev5Rg1hzAqxhkE"],"license":"BUSL-1.1"},"src/contracts/delegator/NetworkRestakeDelegator.sol":{"keccak256":"0xd3a8e6522f9c6fdcc2da837c9023afd6bdff2bce45a35590320c475519e3636d","urls":["bzz-raw://58b17a87f6554f08376f9ea7fedf486a4aa75801bf0ad8b23ff5a46959b6b7a3","dweb:/ipfs/QmSTmNh67tYt8CmjVZb57r8N3qX5yeYdMApKPJm3qvQgQw"],"license":"BUSL-1.1"},"src/contracts/delegator/OperatorNetworkSpecificDelegator.sol":{"keccak256":"0x031a10722b9ec49048f0952710401131290adb87e71caf294e864e7ac3b98a16","urls":["bzz-raw://72428febc875134b2f29205e6f294634a1c22a7d5c78d6a9cb2f8196f107c9b5","dweb:/ipfs/QmTPwXR6h5oytckmkLrHdKeEMdphJxceDhYUR4zvQeWAwY"],"license":"BUSL-1.1"},"src/contracts/delegator/OperatorSpecificDelegator.sol":{"keccak256":"0x630ce62fa30b9f3349ab7a8cf8dbf041319febc6dd757be2f94d3d25944ed328","urls":["bzz-raw://c2ac59d47ce57d2a6819ae9833e1a618a371eccff93eb5ab367b201b01f42bfa","dweb:/ipfs/QmdBpGMBivpNPv2WbH8vnCUy5xkVeaxQvGgqi33vKCz1kA"],"license":"BUSL-1.1"},"src/contracts/hints/DelegatorHints.sol":{"keccak256":"0x44aa0c396311a54afbc7c73e8dadeed41e3165a4fd13f712b27d63d50fc3376d","urls":["bzz-raw://2f255214f3531fc707d88be0d56a7a0aed4180439316d099d760d9118aa83093","dweb:/ipfs/QmZD1w5p1ukJSXumUAjvxwGmkPhn7vsr21Y2atLGEZR2oi"],"license":"BUSL-1.1"},"src/contracts/hints/Hints.sol":{"keccak256":"0x8b565df1ae35993c097a9e642002782a8f451f6fd01809cad6bcd345bdf1b99c","urls":["bzz-raw://99a19adb01e350a92f534095b3078229df1f2f83077992d75d58d8684be45971","dweb:/ipfs/QmbmwcuswVbzvwHQFTtrJG86oV98GnfxqYTb8cV8u1acox"],"license":"BUSL-1.1"},"src/contracts/hints/OptInServiceHints.sol":{"keccak256":"0x95d9407900d27b9f4a1233b772aeed809c07b2dc5b31cfc9fa77ca26514c49e5","urls":["bzz-raw://a13a8877e312d7e6b8b85bde3668c5d84ff5ecc83f762cd573f2b7104c64eb42","dweb:/ipfs/QmYV2J55acuGzCNnS3juABuUHY5U1xc8g8o9jwEyFFdeG5"],"license":"BUSL-1.1"},"src/contracts/hints/VaultHints.sol":{"keccak256":"0xccb505b7159b769cc114d67b87c2de6b106557f667fc8f3780114baad5c3c442","urls":["bzz-raw://6d0c80a908fc16e96a8b5605a0bd53f9e89ad0ef0a738fbbae80ba4d3160749b","dweb:/ipfs/QmXo5UtWoR8YmunqcbBU8rQMm1nvmvjNPoXcVrDhh4pEwR"],"license":"BUSL-1.1"},"src/contracts/libraries/Checkpoints.sol":{"keccak256":"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c","urls":["bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609","dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE"],"license":"MIT"},"src/contracts/libraries/ERC4626Math.sol":{"keccak256":"0x8441160513c1cbeb1c3b9ee077bcc7e7ce20006b52a77c8dd39ff0ef89699939","urls":["bzz-raw://943f8cc3e26ddf649f465f40c909819f5c864717c4baa339e9e403b9374a4653","dweb:/ipfs/QmXPxi1sUDsrGprZdUgCzoPEosaZMv9ZhygWQ1vAi1phAB"],"license":"MIT"},"src/contracts/libraries/Subnetwork.sol":{"keccak256":"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe","urls":["bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56","dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32"],"license":"MIT"},"src/contracts/service/OptInService.sol":{"keccak256":"0x4e0932077f2686b7990e10d59deb2535334c0d09e52ef6e57c6ab09eca21c4b1","urls":["bzz-raw://7c00d311032ed4a1743aca7475f3c86ce15cdfc2218108efc3731c03d34a5278","dweb:/ipfs/QmUGGfVwVhaHr5kS4177yKKYiLYzi5qZpkEmvYxBZqazxf"],"license":"BUSL-1.1"},"src/contracts/vault/Vault.sol":{"keccak256":"0x2ceff6ed3298c4cad144c99fcc79b51cb9397d6ebef00285b915848b476f8c2e","urls":["bzz-raw://11f2fb3581854f3ab6e82e8d4935d9eb510c903a13c3f022346c2956a58f5307","dweb:/ipfs/QmdUnoXoyYoG9SGWyQZCFyLDRUUX3eXyXetkRvw6jxqqBz"],"license":"BUSL-1.1"},"src/contracts/vault/VaultStorage.sol":{"keccak256":"0x57db25b127d77ea3472de53e3a4af3354399655b9268638b99ca5925fa364a56","urls":["bzz-raw://aa763d9a6ec508ae3abfb8228b72b9fd9525279e5135d4962e79ff059feb1173","dweb:/ipfs/QmcbDR6E9wyEpu6V2FkEC4hnWy47zXA9LSKJde6zSGd33Q"],"license":"BUSL-1.1"},"src/interfaces/common/IEntity.sol":{"keccak256":"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21","urls":["bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b","dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv"],"license":"MIT"},"src/interfaces/common/IMigratableEntity.sol":{"keccak256":"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4","urls":["bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c","dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds"],"license":"MIT"},"src/interfaces/common/IRegistry.sol":{"keccak256":"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb","urls":["bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014","dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK"],"license":"MIT"},"src/interfaces/common/IStaticDelegateCallable.sol":{"keccak256":"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5","urls":["bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516","dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi"],"license":"MIT"},"src/interfaces/delegator/IBaseDelegator.sol":{"keccak256":"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee","urls":["bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2","dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8"],"license":"MIT"},"src/interfaces/delegator/IDelegatorHook.sol":{"keccak256":"0xc51aa8d7d1f6c8043ee819b7aeb86da0e993912e1442098df897e299f01f9f46","urls":["bzz-raw://adddf5cb2ba282aeb576b26efb28640f865a1721cc9b6eee8b3ee0457a2c9780","dweb:/ipfs/QmNYgAmnLRwWZbhTuQhZs9rx4zcme1df5mEepkrniorSoW"],"license":"MIT"},"src/interfaces/delegator/IFullRestakeDelegator.sol":{"keccak256":"0xa3c8cb2e45d4d8ce90e95263bea40c01dc400f05ad65bc29597d878606be5e7d","urls":["bzz-raw://782cf5e201aa4cca037ebafd3807a68ff1cc721d5b8416a35244db0d0607369e","dweb:/ipfs/QmQkJks6x7CKndeTPa9LxgTNygD5uEi7obhADhpq1Lsr9A"],"license":"MIT"},"src/interfaces/delegator/INetworkRestakeDelegator.sol":{"keccak256":"0xe7030fe30389a147fd710e3436ec346b4842695fd3e65a81b95375c9f1d633fc","urls":["bzz-raw://739c7e66d301778054f5c90bee45ec9438f68afba8a03eaaac52064c73b115ad","dweb:/ipfs/QmfZ2ytKcTykAc76nxhg8ikUXV8NdBpetqb8W4YWPcox1Z"],"license":"MIT"},"src/interfaces/delegator/IOperatorNetworkSpecificDelegator.sol":{"keccak256":"0x74b95e64d29769202d45dd277bb830f623ff3d41ce77b80ce3ee4e318a5c71ec","urls":["bzz-raw://e512b903aae5c1b8a028c6e3f4f6223b5cb5d704503cfa6bd37b5346868f5c20","dweb:/ipfs/QmZim9YExsPWtyxyeui993HTKAEmrg8MUcSkZ77Gp2JcuZ"],"license":"MIT"},"src/interfaces/delegator/IOperatorSpecificDelegator.sol":{"keccak256":"0x72075cab585dc17240cc3e32bc99b92f0d5627ddd988fed680e3e1a52d5a01e4","urls":["bzz-raw://7448bc90699409ae61d85216b5efc2143a37f0f73354be2aea993bc54afca441","dweb:/ipfs/QmXE4gAxM8pHosZK8mcTcj17puBx484meDCcmrDePskGHZ"],"license":"MIT"},"src/interfaces/service/IOptInService.sol":{"keccak256":"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a","urls":["bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337","dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24"],"license":"MIT"},"src/interfaces/slasher/IBaseSlasher.sol":{"keccak256":"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404","urls":["bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf","dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx"],"license":"MIT"},"src/interfaces/vault/IVault.sol":{"keccak256":"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235","urls":["bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9","dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R"],"license":"MIT"},"src/interfaces/vault/IVaultStorage.sol":{"keccak256":"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22","urls":["bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e","dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6"],"license":"MIT"}},"version":1},"id":81} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[{"name":"optInServiceHints","type":"address","internalType":"address"},{"name":"vaultHints_","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"FULL_RESTAKE_DELEGATOR_HINTS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"HOOK_GAS_LIMIT","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"HOOK_RESERVE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"HOOK_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"NETWORK_REGISTRY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"NETWORK_RESTAKE_DELEGATOR_HINTS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_NETWORK_OPT_IN_SERVICE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_VAULT_OPT_IN_SERVICE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"OPT_IN_SERVICE_HINTS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"TYPE","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"VAULT_FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"VERSION","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"pure"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"hook","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"maxNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"onSlash","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","internalType":"uint48"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setHook","inputs":[{"name":"hook_","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMaxNetworkLimit","inputs":[{"name":"identifier","type":"uint96","internalType":"uint96"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stake","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"stakeAt","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hints","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"stakeBaseHints","inputs":[{"name":"delegator","type":"address","internalType":"address"},{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"stakeHints","inputs":[{"name":"delegator","type":"address","internalType":"address"},{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"staticDelegateCall","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"vault","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OnSlash","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","indexed":false,"internalType":"uint48"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SetHook","inputs":[{"name":"hook","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SetMaxNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"AlreadySet","inputs":[]},{"type":"error","name":"ExternalCall","inputs":[]},{"type":"error","name":"InsufficientHookGas","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitialized","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"NotNetwork","inputs":[]},{"type":"error","name":"NotSlasher","inputs":[]},{"type":"error","name":"NotVault","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]}],"bytecode":{"object":"0x6101c03461027157618d066001600160401b03601f38839003908101601f191684019082821185831017610202578085916040958694855283398101031261027157610056602061004f85610275565b9401610275565b90306080527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460ff81861c166102605780838080931603610220575b5050505f60a0525f60c0525f60e052610100935f8552610120935f8552610140905f82526101609280845281516138948082019082821088831117610202578389849361010093611ef286393081526001600160a01b0391821660208201529116604082015260600190565b03905ff09485156102165760018060a01b0396876101809716875283519261358091828501938585109085111761020257849361015c9361578686393081526001600160a01b0391821660208201529116604082015260600190565b03905ff09485156101f8576101a0951685525194611c68968761028a883960805187505060a05187610623015260c05187610b5f015260e05187818161048f0152610b980152518681816102c70152611a4b01525185818161030b015261163d01525184818161034f01526116bb015251838181610a3d0152611190015251828181610283015261148f015251818181610dfa01526115510152f35b50513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b82513d5f823e3d90fd5b6001600160401b03191617905582518181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f8181610094565b845163f92ee8a960e01b8152600490fd5b5f80fd5b51906001600160a01b03821682036102715756fe60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a714610214578063075db0361461020f578063103f29071461020a578063128e5d82146102055780631a80e500146102005780631bf10a3e146101fb57806323f752d5146101f6578063248a9ca3146101f157806325dc9708146101ec5780632dd31000146101e75780632f2ff15d146101e257806336568abe146101dd5780633dfd3873146101d8578063439fab91146101d3578063557cab44146101ce5780636679191e146101c95780637f5a7c7b146101c457806391d14854146101bf5780639b656b22146101ba5780639f86fd85146101b5578063a217fddf146101b0578063bb24fe8a146101ab578063c0cd7c3e146101a6578063d15b740e146101a1578063d547741f1461019c578063e02f693714610197578063e102831a14610192578063e49561ee1461018d578063fbfa77cf14610188578063fd4d447c14610183578063ff54740f1461017e5763ffa1ad7414610179575f80fd5b61108a565b61106d565b61103b565b611014565b610e29565b610de5565b610d02565b610bf1565b610bc7565b610b83565b610b40565b610b26565b610a6c565b610a28565b6109ca565b6109a2565b610968565b61094c565b61080f565b6106e9565b61069e565b610652565b61060e565b6105f1565b6105b8565b61043c565b610407565b61033a565b6102f6565b6102b2565b61026e565b3461026a57602036600319011261026a5760043563ffffffff60e01b811680910361026a57602090637965db0b60e01b8114908115610259575b506040519015158152f35b6301ffc9a760e01b1490505f61024e565b5f80fd5b3461026a575f36600319011261026a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461026a575f36600319011261026a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461026a575f36600319011261026a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461026a575f36600319011261026a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6001600160a01b0381160361026a57565b6064359065ffffffffffff8216820361026a57565b608090600319011261026a576004356103bc8161037e565b90602435906044356103cd8161037e565b9060643565ffffffffffff8116810361026a5790565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b3461026a5761043861042461041b366103a4565b92919091611168565b6040519182916020835260208301906103e3565b0390f35b3461026a57604036600319011261026a576004356001600160601b038116810361026a576024359061046c611732565b6040516302910f8b60e31b81523360048201526020816024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa9081156105b3575f91610584575b5015610572576001600160601b03166bffffffffffffffffffffffff193360601b161790806104f6835f52600260205260405f2090565b541461056057610545817fc67e7929681aa1bccd63f52b3799bf5805f3009f197db6fdf584b14f7fbf608c92610534855f52600260205260405f2090565b556040519081529081906020820190565b0390a261055e60015f80516020611bf383398151915255565b005b60405163a741a04560e01b8152600490fd5b6040516323d53b9760e21b8152600490fd5b6105a6915060203d6020116105ac575b61059e8183610c71565b8101906113b9565b5f6104bf565b503d610594565b6110bd565b3461026a57602036600319011261026a576004355f525f80516020611bd38339815191526020526020600160405f200154604051908152f35b3461026a57610438610424610605366103a4565b929190916113f0565b3461026a575f36600319011261026a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461026a57604036600319011261026a5761055e6024356004356106758261037e565b805f525f80516020611bd3833981519152602052610699600160405f200154611761565b611918565b3461026a57604036600319011261026a576024356106bb8161037e565b336001600160a01b038216036106d75761055e9060043561194e565b60405163334bd91960e11b8152600490fd5b3461026a57602036600319011261026a576004356107068161037e565b61070e611732565b335f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c60205260409020547fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c9060ff16156107c457506001546001600160a01b039182169181168214610560576001600160a01b03191681176001557f5bbb1d3ebb6a3ad2a0f17ff35e579a83af60604d1d3c2a4c83c62adecadf666d5f80a260015f80516020611bf383398151915255005b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b9181601f8401121561026a578235916001600160401b03831161026a576020838186019501011161026a57565b3461026a57602036600319011261026a576001600160401b0360043581811161026a576108409036906004016107e2565b5f80516020611c13833981519152549260ff8460401c1615931680159081610944575b600114908161093a575b159081610931575b5061091f575f80516020611c13833981519152805467ffffffffffffffff191660011790556108a891836108f657611a16565b6108ae57005b5f80516020611c13833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f80516020611c13833981519152805460ff60401b191668010000000000000000179055611a16565b60405163f92ee8a960e01b8152600490fd5b9050155f610875565b303b15915061086d565b849150610863565b3461026a575f36600319011261026a576020604051614e208152f35b3461026a575f36600319011261026a5760206040517fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c8152f35b3461026a575f36600319011261026a576001546040516001600160a01b039091168152602090f35b3461026a57604036600319011261026a57602060ff610a1c6024356109ee8161037e565b6004355f525f80516020611bd3833981519152845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b3461026a575f36600319011261026a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461026a5760408060031936011261026a57600435610a8a8161037e565b602435906001600160401b03821161026a575f8091610ab0610b149436906004016107e2565b908187519283928337810184815203915af43d15610b1c57610b063d610ad581610ca1565b90610ae286519283610c71565b81523d5f602083013e5b8451948593151560208501528084015260608301906103e3565b03601f198101835282610c71565b805190602001fd5b610b066060610aec565b3461026a575f36600319011261026a5760206040515f8152f35b3461026a575f36600319011261026a5760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461026a575f36600319011261026a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461026a57602036600319011261026a576004355f526002602052602060405f2054604051908152f35b3461026a57604036600319011261026a5761055e602435600435610c148261037e565b805f525f80516020611bd3833981519152602052610c38600160405f200154611761565b61194e565b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b03821117610c6c57604052565b610c3d565b90601f801991011681019081106001600160401b03821117610c6c57604052565b60405190610c9f82610c51565b565b6001600160401b038111610c6c57601f01601f191660200190565b81601f8201121561026a57803590610cd382610ca1565b92610ce16040519485610c71565b8284526020838301011161026a57815f926020809301838601378301015290565b3461026a5760808060031936011261026a57610d1f60243561037e565b60443565ffffffffffff81160361026a576001600160401b0360643581811161026a57610d50903690600401610cbc565b5060606020604051610d6181610c51565b828152015260605180610d79575b60206040515f8152f35b8281016020821261026a5783519183831161026a5782604091031261026a5760405193610da585610c51565b8281015184811161026a578282610dbe928601016110c8565b855260a083015193841161026a57602093610dda9301016110c8565b9101525f8080610d6f565b3461026a575f36600319011261026a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461026a5760a036600319011261026a57602435600435610e498261037e565b60443591610e5561038f565b90608435906001600160401b03821161026a57610e7760049236908401610cbc565b610e7f611732565b5f54602090610ea490610e98906001600160a01b031681565b6001600160a01b031690565b60405163b134427160e01b815294859182905afa9283156105b3575f93610fe3575b506001600160a01b039283163303610fd1576001546001600160a01b0316838116610f46575b50506040805195865265ffffffffffff909316602086015216927f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed91819081015b0390a361055e60015f80516020611bf383398151915255565b909360405194610f7d86610f6f602082019363724ab0f760e11b8552858c898d602487016115d0565b03601f198101885287610c71565b62042e305a10610fbf575f610f2d938192827f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed9951926203d090f15093610eec565b604051638072475160e01b8152600490fd5b60405163dabc4ad960e01b8152600490fd5b61100691935060203d60201161100d575b610ffe8183610c71565b8101906110a5565b915f610ec6565b503d610ff4565b3461026a575f36600319011261026a575f546040516001600160a01b039091168152602090f35b3461026a57604036600319011261026a57602061106560243561105d8161037e565b600435611608565b604051908152f35b3461026a575f36600319011261026a5760206040516203d0908152f35b3461026a575f36600319011261026a57602060405160018152f35b9081602091031261026a57516110ba8161037e565b90565b6040513d5f823e3d90fd5b81601f8201121561026a578051906110df82610ca1565b926110ed6040519485610c71565b8284526020838301011161026a57815f9260208093018386015e8301015290565b9060208282031261026a5781516001600160401b03811161026a576110ba92016110c8565b906110ba91602081526020611153835160408385015260608401906103e3565b920151906040601f19828503019101526103e3565b604080516309472ec160e11b8152606096956001600160a01b039384169591946020949192917f0000000000000000000000000000000000000000000000000000000000000000169085876004818b5afa9687156105b3575f9761139a575b50845163fbfa77cf60e01b81529686886004818c5afa80156105b357855f9161123b9a839161137d575b508851636a531c3160e11b8082526001600160a01b039586166004830152858916602483015294909116604482015265ffffffffffff909116606482015298899081906084820190565b0381865afa9788156105b3575f98611358575b508686979899600496975196878092621a80e560e81b82525afa9485156105b3575f95611335575b5086519081526001600160a01b03948516600482015293909216602484015260609190911c604483015265ffffffffffff9092166064820152905f9082908180608481015b03915afa9081156105b3575f91611313575b50835115801590611309575b6112e35750505050565b6110ba9394955090610b06916112f7610c92565b95865283860152519384928301611133565b50805115156112d9565b61132f91503d805f833e6113278183610c71565b81019061110e565b5f6112cd565b5f95506113516112bb918a3d8c1161100d57610ffe8183610c71565b9550611276565b8798509661137360049697983d805f833e6113278183610c71565b989796955061124e565b61139491508a3d8c1161100d57610ffe8183610c71565b5f6111f1565b6113b2919750863d881161100d57610ffe8183610c71565b955f6111c7565b9081602091031261026a5751801515810361026a5790565b9081602091031261026a57516001600160401b038116810361026a5790565b604051635d927f4560e11b8082526060969594936001600160a01b03939092909160209190858416908383600481855afa9283156105b3575f936115b1575b506001600160401b039283166114d65750506040516304bb92e160e31b81526001600160a01b0393841660048201526024810194909452505092909216604483015265ffffffffffff9290921660648201529192505f90829060849082907f0000000000000000000000000000000000000000000000000000000000000000165afa9081156105b3575f916114c2575090565b6110ba91503d805f833e6113278183610c71565b839060046040518094819382525afa9081156105b3576001935f92611584575b50501614611505575050505050565b6040516304bb92e160e31b81526001600160a01b039182166004820152602481019290925292909216604483015265ffffffffffff9290921660648201529192505f90829060849082907f0000000000000000000000000000000000000000000000000000000000000000165afa9081156105b3575f916114c2575090565b6115a39250803d106115aa575b61159b8183610c71565b8101906113d1565b5f806114f6565b503d611591565b6115c9919350843d86116115aa5761159b8183610c71565b915f61142f565b919360a0936110ba969565ffffffffffff938552600180871b03166020850152604084015216606082015281608082015201906103e3565b5f546040516308834cb560e21b8082526001600160a01b038581166004840152928316602483015293602092909183816044817f000000000000000000000000000000000000000000000000000000000000000086165afa9081156105b3575f91611715575b501593841561168a575b505050509050611686575f90565b5f90565b6040519586526001600160a01b0392909216600486015260609190911c6024850152909291508290829060449082907f0000000000000000000000000000000000000000000000000000000000000000165afa9182156105b3575f926116f8575b505015805f808080611678565b61170e9250803d106105ac5761059e8183610c71565b5f806116eb565b61172c9150843d86116105ac5761059e8183610c71565b5f61166e565b5f80516020611bf3833981519152600281541461174f5760029055565b604051633ee5aeb560e01b8152600490fd5b5f8181525f80516020611bd38339815191526020908152604080832033845290915290205460ff16156107c45750565b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260409020545f80516020611bd38339815191529060ff1661183c575f808052602091825260408082206001600160a01b038516835290925220805460ff1916600117905533906001600160a01b03165f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b50505f90565b6001600160a01b0381165f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c602052604090207fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c905f80516020611bd38339815191529060ff905b5416611911575f828152602091825260408082206001600160a01b038616835290925220805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b5050505f90565b5f8181525f80516020611bd3833981519152602081815260408084206001600160a01b038716855290915290912060ff906118ad565b5f8181525f80516020611bd3833981519152602081815260408084206001600160a01b03871685529091529091205460ff1615611911575f828152602091825260408082206001600160a01b038616835290925220805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b91909160408184031261026a5780356119f88161037e565b9260208201356001600160401b03811161026a576110ba9201610cbc565b611a22918101906119e0565b506040516302910f8b60e31b81526001600160a01b0391821660048201819052906020816024817f000000000000000000000000000000000000000000000000000000000000000087165afa9081156105b3575f91611b34575b5015611b2257611aa990611a8e611b53565b60018060a01b03166001600160601b0360a01b5f5416175f55565b611afc6040611ab6611b76565b6020810151600180546001600160a01b0319166001600160a01b0390921691909117905580516001600160a01b0316848116611b12575b5001516001600160a01b031690565b908116611b065750565b611b0f90611842565b50565b611b1b90611791565b505f611aed565b6040516362df054560e01b8152600490fd5b611b4d915060203d6020116105ac5761059e8183610c71565b5f611a7c565b611b5b611ba4565b611b63611ba4565b60015f80516020611bf383398151915255565b60405190606082018281106001600160401b03821117610c6c576040525f6040838281528260208201520152565b60ff5f80516020611c138339815191525460401c1615611bc057565b604051631afcd79f60e31b8152600490fdfe02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212208c8cb609a14ad0196f2716730b417869a08c533b532b4fc28fabc1ee690e133164736f6c634300081900336101c0346101cf57601f61389438819003918201601f19168301916001600160401b0391828411858510176101d35781606092869260409687528339810103126101cf5761004c836101e7565b926100648361005d602084016101e7565b92016101e7565b91306080527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff82871c166101be57808083160361017a575b5050505f60a0525f60c0525f60e052610100935f8552610120935f8552610140905f82526101609283526101809384526101a0948552519461369896876101fc88396080518781816105a001528181610fd70152611629015260a051876109e9015260c051876112ac015260e05187818161084b01526112e5015251868181610512015261298501525185818161055601528181611e330152611f3b0152518481816107c901528181611d9a0152611fb9015251838181610e95015261194d015251828181610d9701526119ee015251816110490152f35b6001600160401b0319909116811790915583519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80806100a2565b855163f92ee8a960e01b8152600490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101cf5756fe60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a71461030457806302145348146102ff57806307f9d5fd146102fa578063103f2907146102f5578063128e5d82146102f0578063197aa7ea146102eb5780631a7a7044146102e65780631a80e500146102e157806323f752d5146102dc578063248a9ca3146102d757806325dc9708146102d25780632dd31000146102cd5780632f2ff15d146102c857806336568abe146102c35780633dfd3873146102be5780633eb22c0f146102b957806342c53e33146102b4578063439fab91146102af57806345e78fcb146102aa578063557cab44146102a55780635d32a1c9146102a05780636679191e1461029b57806379d89614146102965780637d24bb27146102915780637f5a7c7b1461028c5780638b3f10b01461028757806391d1485414610282578063987b3ee81461027d5780639b656b22146102785780639f86fd8514610273578063a217fddf1461026e578063a33bc28714610269578063b549ef1f14610264578063bb24fe8a1461025f578063c0cd7c3e1461025a578063c43dc03f14610255578063d15b740e14610250578063d547741f1461024b578063da749d2b14610246578063e02f693714610241578063e49561ee1461023c578063e78eb6ae14610237578063ed4d89e514610232578063fbfa77cf1461022d578063fd4d447c14610228578063ff54740f146102235763ffa1ad741461021e575f80fd5b6116dc565b6116bf565b611695565b61166e565b61160e565b6115d4565b6113e9565b6113cd565b6113b3565b611367565b61133d565b611314565b6112d0565b61128d565b611273565b611126565b61110c565b611078565b611034565b610fa6565b610f48565b610f25565b610efd565b610ec4565b610e80565b610e46565b610e23565b610dc6565b610d82565b610c4a565b610bd1565b610ba8565b610aaf565b610a64565b610a18565b6109d4565b6109b7565b61097e565b6107f8565b6107b4565b61076e565b610585565b610541565b6104fd565b6104c8565b61035e565b3461035a57602036600319011261035a5760043563ffffffff60e01b811680910361035a57602090637965db0b60e01b8114908115610349575b506040519015158152f35b6301ffc9a760e01b1490505f61033e565b5f80fd5b3461035a5760408060031936011261035a57600435906024359061038061202e565b825f526002602052805f2054821161041a57825f526003602052816103a6825f206128d7565b1461040a5781610405916103f57e899d104fc3d8820bd96540612bcc5c448c8837b13b9f7faa43ad0728f0c14f946103e6875f52600360205260405f2090565b6103ef42612d8e565b90612176565b5050519081529081906020820190565b0390a2005b5163a741a04560e01b8152600490fd5b51631eefc06360e31b8152600490fd5b6001600160a01b0381160361035a57565b6024359065ffffffffffff8216820361035a57565b6064359065ffffffffffff8216820361035a57565b608090600319011261035a5760043561047d8161042a565b906024359060443561048e8161042a565b9060643565ffffffffffff8116810361035a5790565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b3461035a576104f96104e56104dc36610465565b92919091611736565b6040519182916020835260208301906104a4565b0390f35b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a57604036600319011261035a5761059e61043b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610602576105e5906004355f52600360205260405f206122f5565b60408051941515855263ffffffff91909116602085015292915050f35b604051637ca475e560e11b8152600490fd5b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b0382111761064357604052565b610614565b606081019081106001600160401b0382111761064357604052565b60a081019081106001600160401b0382111761064357604052565b90601f801991011681019081106001600160401b0382111761064357604052565b604051906106ac82610663565b565b604051906106ac82610628565b6001600160401b03811161064357601f01601f191660200190565b81601f8201121561035a578035906106ed826106bb565b926106fb604051948561067e565b8284526020838301011161035a57815f926020809301838601378301015290565b90608060031983011261035a57600435916024356107398161042a565b9160443565ffffffffffff8116810361035a5791606435906001600160401b03821161035a5761076b916004016106d6565b90565b3461035a5760206107ac6107a76107843661071c565b939190925f526005865260405f209060018060a01b03165f5260205260405f2090565b61242d565b604051908152f35b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a57604036600319011261035a576004356001600160601b038116810361035a5760243590610828612505565b6040516302910f8b60e31b81523360048201526020816024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa908115610979575f9161094a575b5015610938576001600160601b03166bffffffffffffffffffffffff193360601b161790806108b2835f52600260205260405f2090565b54146109265761090b817fc67e7929681aa1bccd63f52b3799bf5805f3009f197db6fdf584b14f7fbf608c926108f0855f52600260205260405f2090565b556108fb8185612534565b6040519081529081906020820190565b0390a261092460015f8051602061362383398151915255565b005b60405163a741a04560e01b8152600490fd5b6040516323d53b9760e21b8152600490fd5b61096c915060203d602011610972575b610964818361067e565b8101906117e8565b5f61087b565b503d61095a565b6117fc565b3461035a57602036600319011261035a576004355f525f805160206136038339815191526020526020600160405f200154604051908152f35b3461035a576104f96104e56109cb36610465565b92919091611904565b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a57604036600319011261035a57610924602435600435610a3b8261042a565b805f525f80516020613603833981519152602052610a5f600160405f2001546120e1565b61280f565b3461035a57604036600319011261035a57602435610a818161042a565b336001600160a01b03821603610a9d5761092490600435612845565b60405163334bd91960e11b8152600490fd5b3461035a57602036600319011261035a57600435610acc8161042a565b610ad4612505565b335f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c60205260409020547fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c9060ff1615610b8a57506001546001600160a01b039182169181168214610926576001600160a01b03191681176001557f5bbb1d3ebb6a3ad2a0f17ff35e579a83af60604d1d3c2a4c83c62adecadf666d5f80a260015f8051602061362383398151915255005b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b3461035a57602036600319011261035a576004355f52600360205260206107ac60405f206128d7565b3461035a57604036600319011261035a5760206107ac610c18602435610bf68161042a565b6004355f526005845260405f209060018060a01b03165f5260205260405f2090565b6128d7565b9181601f8401121561035a578235916001600160401b03831161035a576020838186019501011161035a57565b3461035a57602036600319011261035a576001600160401b0360043581811161035a57610c7b903690600401610c1d565b5f80516020613643833981519152549260ff8460401c1615931680159081610d7a575b6001149081610d70575b159081610d67575b50610d55575f80516020613643833981519152805467ffffffffffffffff19166001179055610ce39183610d3157612950565b610ce957005b5f80516020613643833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f80516020613643833981519152805460ff60401b1916600160401b179055612950565b60405163f92ee8a960e01b8152600490fd5b9050155f610cb0565b303b159150610ca8565b849150610c9e565b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a575f36600319011261035a576020604051614e208152f35b606060031982011261035a576004359160243565ffffffffffff8116810361035a5791604435906001600160401b03821161035a5761076b916004016106d6565b3461035a5760206107ac610e3636610de2565b915f526003845260405f2061242d565b3461035a575f36600319011261035a5760206040517fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c8152f35b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a575f36600319011261035a5760206040517e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf8152f35b3461035a575f36600319011261035a576001546040516001600160a01b039091168152602090f35b3461035a5760206107ac610f3836610de2565b915f526004845260405f2061242d565b3461035a57604036600319011261035a57602060ff610f9a602435610f6c8161042a565b6004355f525f80516020613603833981519152845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b3461035a57606036600319011261035a57602435610fc38161042a565b60443565ffffffffffff8116810361035a577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036106025761102f6105e5926004355f52600560205260405f209060018060a01b03165f5260205260405f2090565b6122f5565b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a57604036600319011261035a576004356110958161042a565b6024356001600160401b03811161035a575f916110b783923690600401610c1d565b90816040519283928337810184815203915af46111046110d5611b60565b916110f66040519384921515602084015260408084015260608301906104a4565b03601f19810183528261067e565b805190602001fd5b3461035a575f36600319011261035a5760206040515f8152f35b3461035a57606036600319011261035a576024356004356111468261042a565b6044359161115261208a565b5f8281526005602090815260408083206001600160a01b0385168452909152902061117c906128d7565b838114610926577f739a5a3ec0ff71e2386d0013deac5f44e0935a98def2e2a5ddf9a709518c8294916111ef61123c92855f52600460205260405f20906111e9886111e46111c942612d8e565b936111df610c188c5f52600460205260405f2090565b611bb6565b611bd1565b91612176565b5050611220856103e68361120b885f52600560205260405f2090565b9060018060a01b03165f5260205260405f2090565b50506040519485526001600160a01b0316939081906020820190565b0390a3005b606090600319011261035a576004356112598161042a565b906024359060443565ffffffffffff8116810361035a5790565b3461035a576104f96104e561128736611241565b91611bde565b3461035a575f36600319011261035a5760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a57602036600319011261035a576004355f52600460205260206107ac60405f206128d7565b3461035a57602036600319011261035a576004355f526002602052602060405f2054604051908152f35b3461035a57604036600319011261035a5761092460243560043561138a8261042a565b805f525f805160206136038339815191526020526113ae600160405f2001546120e1565b612845565b3461035a576104f96104e56113c736611241565b91611c28565b3461035a5760206107ac6113e03661071c565b92919091611d24565b3461035a5760a036600319011261035a576024356004356114098261042a565b60443591611415610450565b90608435906001600160401b03821161035a57611437600492369084016106d6565b61143f612505565b5f5460209061146490611458906001600160a01b031681565b6001600160a01b031690565b60405163b134427160e01b815294859182905afa928315610979575f936115a3575b506001600160a01b039283163303611591576001546001600160a01b0316838116611506575b50506040805195865265ffffffffffff909316602086015216927f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed91819081015b0390a361092460015f8051602061362383398151915255565b90936040519461153d8661152f602082019363724ab0f760e11b8552858c898d60248701611eae565b03601f19810188528761067e565b62042e305a1061157f575f6114ed938192827f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed9951926203d090f150936114ac565b604051638072475160e01b8152600490fd5b60405163dabc4ad960e01b8152600490fd5b6115c691935060203d6020116115cd575b6115be818361067e565b810190611872565b915f611486565b503d6115b4565b3461035a575f36600319011261035a5760206040517f1312a1cf530e56add9be4fd84db9051dcc7635952f09f735f9a29405b55846258152f35b3461035a57604036600319011261035a5761162761043b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610602576105e5906004355f52600460205260405f206122f5565b3461035a575f36600319011261035a575f546040516001600160a01b039091168152602090f35b3461035a57604036600319011261035a5760206107ac6024356116b78161042a565b600435611f04565b3461035a575f36600319011261035a5760206040516203d0908152f35b3461035a575f36600319011261035a57602060405160018152f35b5190811515820361035a57565b519063ffffffff8216820361035a57565b919082604091031261035a5761076b602061172f846116f7565b9301611704565b906117869165ffffffffffff6117959496956060976040519463130f67dd60e31b6020870152602486015260018060a01b031660448501521660648301526064825261178182610663565b612238565b60208082518301019101611715565b9061179d5750565b90915063ffffffff604051911660208201526020815261076b81610628565b5f9081526005602090815260408083206001600160a01b0390941683529290522061076b92919061242d565b9081602091031261035a5761076b906116f7565b6040513d5f823e3d90fd5b81601f8201121561035a5780519061181e826106bb565b9261182c604051948561067e565b8284526020838301011161035a57815f9260208093018386015e8301015290565b9060208282031261035a5781516001600160401b03811161035a5761076b9201611807565b9081602091031261035a575161076b8161042a565b9061076b91602081526118a6825160a0602084015260c08301906104a4565b9060a060806118f46118e16118cd602088015196601f1997888883030160408901526104a4565b6040880151878783030160608801526104a4565b60608701518686830301848701526104a4565b94015192828503019101526104a4565b604051630df8851f60e11b81526001600160a01b03828116600483015260248201849052848116604483015265ffffffffffff8616606483015295606095909491935f856084817f00000000000000000000000000000000000000000000000000000000000000008c165afa948515610979575f95611b18575b5060405163fbfa77cf60e01b8152602081600481888d165afa908115610979576119ea995f9285928491611af9575b5060405163192c0ff760e21b81526001600160a01b03909116600482015265ffffffffffff909216602483015290998a9190829081906044820190565b03917f0000000000000000000000000000000000000000000000000000000000000000165afa978815610979575f98611acf575b509081611a3b82611a3381611a419689611c28565b958388611736565b94611bde565b90835115801590611ac5575b8015611abb575b8015611ab1575b8015611aa7575b611a6f5750505050909150565b6110f6955061076b9496611a8161069f565b948552602085015260408401526060830152608082015260405192839160208301611887565b5081511515611a62565b5082511515611a5b565b5080511515611a54565b5086511515611a4d565b611a4192919850611af1903d805f833e611ae9818361067e565b81019061184d565b979091611a1e565b611b12915060203d6020116115cd576115be818361067e565b5f6119ad565b611b2d9195503d805f833e611ae9818361067e565b935f61197e565b9061076b92915f52600360205260405f2061242d565b9061076b92915f52600460205260405f2061242d565b3d15611b8a573d90611b71826106bb565b91611b7f604051938461067e565b82523d5f602084013e565b606090565b634e487b7160e01b5f52601160045260245ffd5b5f19810191908211611bb157565b611b8f565b91908203918211611bb157565b9060018201809211611bb157565b91908201809211611bb157565b60405163ed4d89e560e01b6020820152602481019290925265ffffffffffff909216604482015260609291611795916117869161178182606481015b03601f19810184528361067e565b604051630cbd53f560e11b6020820152602481019290925265ffffffffffff90921660448201526060929161179591611786916117818260648101611c1a565b60405190611c7582610628565b60606020838281520152565b9060208282031261035a5781516001600160401b039283821161035a57019060408282031261035a5760405192611cb784610628565b825181811161035a5782611ccc918501611807565b8452602083015190811161035a57611ce49201611807565b602082015290565b6001600160a01b0391821681529116602082015265ffffffffffff909116604082015260806060820181905261076b929101906104a4565b92611d3490929192828486612bb5565b929093611d3f611c68565b93805180611e92575b50508415938415611dfc575b8415611d6b575b50505050611d665790565b505f90565b602080949550611d96910151604051958694859463530e1d4360e01b865260601c9060048601611cec565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610979575f91611ddd575b50155f808080611d5b565b611df6915060203d60201161097257610964818361067e565b5f611dd2565b5f549094506001600160a01b0316602084865192611e2f604051948593849363530e1d4360e01b85528960048601611cec565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610979575f91611e73575b501593611d54565b611e8c915060203d60201161097257610964818361067e565b5f611e6b565b611ea6929550602080918301019101611c81565b925f80611d48565b919360a09361076b969565ffffffffffff938552600180871b03166020850152604084015216606082015281608082015201906104a4565b8115611ef0570490565b634e487b7160e01b5f52601260045260245ffd5b5f546040516308834cb560e21b8082526001600160a01b0385811660048401529283166024830152929392602092909183816044817f000000000000000000000000000000000000000000000000000000000000000086165afa908115610979575f91612011575b5015918215611f8d575b50509050611f875761076b91612ccb565b50505f90565b6040519081526001600160a01b0385166004820152606086901c602482015291508290829060449082907f0000000000000000000000000000000000000000000000000000000000000000165afa918215610979575f92611ff4575b505015805f80611f76565b61200a9250803d1061097257610964818361067e565b5f80611fe9565b6120289150843d861161097257610964818361067e565b5f611f6c565b335f9081527f72a65082a5691803ab2b62c9bc729b34205ba1b183d950896526b2fd8714d0c7602052604090207e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf9060ff905b541615610b8a5750565b335f9081527f8f2dae99798887da307a4daa2c2d11f840b0cb9a6a67822660c531e9ad14dd00602052604090207f1312a1cf530e56add9be4fd84db9051dcc7635952f09f735f9a29405b55846259060ff90612080565b5f8181525f8051602061360383398151915260209081526040808320338452909152902060ff90612080565b634e487b7160e01b5f52603260045260245ffd5b8054821015612136575f5260205f2001905f90565b61210d565b90815491600160401b831015610643578261215e9160016106ac95018155612121565b90919082549060031b91821b915f19901b1916179055565b90929192600182019081548015612208575b508461219384612dc0565b509490928454936121a3836128d7565b96816121f3575b50156121d0575050505f198101908111611bb15761215e85916121cc93612121565b9190565b6121cc9492936121ec926001600160d01b03909116919061347b565b505061213b565b65ffffffffffff83811691161490505f6121aa565b600160401b811015610643578060016122249201845583612121565b8154905f199060031b1b191690555f612188565b5f9190829160405161226d816110f66020820194639f86fd8560e01b86523060248401526040604484015260648301906104a4565b51915afa5061227a611b60565b8051810160408282031261035a57612294602083016116f7565b916040810151916001600160401b03831161035a576122ba926020809201920101611807565b90156122c35790565b805190811561035a57602001fd5b906040516122de81610628565b915465ffffffffffff8116835260301c6020830152565b91908254905f82916005841161239d575b612311935085612f24565b9081156123915761238a61238161237b61237161234361233e61233388611ba3565b895f5260205f200190565b6122d1565b96600161236a602061235b8b5165ffffffffffff1690565b9a01516001600160d01b031690565b9101612121565b90549060031b1c90565b93611ba3565b63ffffffff1690565b6001939291565b5f925082915081908190565b91926123a881612df9565b8103908111611bb15761231193865f526123dc6123d18360205f200165ffffffffffff90541690565b65ffffffffffff1690565b65ffffffffffff851610156123f2575091612306565b9291506123fe90611bc3565b90612306565b9081602091031261035a5761076b90611704565b90600163ffffffff80931601918211611bb157565b918051156124fb578060208061244893518301019101612404565b91612453838261304b565b92612464845165ffffffffffff1690565b9065ffffffffffff80851692168281146124ef578211918261249a575b50506124915761076b9250612f7b565b50506020015190565b9091506124a78354611ba3565b63ffffffff8316149182156124c0575b50505f80612481565b6124e79192506124db6124d56123d192612418565b8561304b565b5165ffffffffffff1690565b115f806124b7565b50505050506020015190565b5061076b91612f7b565b5f8051602061362383398151915260028154146125225760029055565b604051633ee5aeb560e01b8152600490fd5b90815f52600360205260405f208161254b82612dc0565b9193905083156125a95761256b916001600160d01b031690600101612121565b90549060031b1c5b8261259f575b5050612583575050565b61259b915f52600360205260405f206103ef42612d8e565b5050565b119050815f612579565b50505f612573565b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260409020545f805160206136038339815191529060ff16611f87575f808052602091825260408082206001600160a01b038516835290925220805460ff1916600117905533906001600160a01b03165f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b6001600160a01b0381165f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c602052604090207fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c905f805160206136038339815191529060ff905b541661272b575f828152602091825260408082206001600160a01b038616835290925220805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b5050505f90565b6001600160a01b0381165f9081527f72a65082a5691803ab2b62c9bc729b34205ba1b183d950896526b2fd8714d0c7602052604090207e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf905f805160206136038339815191529060ff906126c7565b6001600160a01b0381165f9081527f8f2dae99798887da307a4daa2c2d11f840b0cb9a6a67822660c531e9ad14dd00602052604090207f1312a1cf530e56add9be4fd84db9051dcc7635952f09f735f9a29405b5584625905f805160206136038339815191529060ff906126c7565b5f8181525f80516020613603833981519152602081815260408084206001600160a01b038716855290915290912060ff906126c7565b5f8181525f80516020613603833981519152602081815260408084206001600160a01b03871685529091529091205460ff161561272b575f828152602091825260408082206001600160a01b038616835290925220805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b8054806128fc57505f5b6001600160d01b03811615611f875760016123719201612121565b5f19908082810111611bb157825f5260205f2001015460301c6128e1565b91909160408184031261035a5780356129328161042a565b9260208201356001600160401b03811161035a5761076b92016106d6565b61295c9181019061291a565b6040516302910f8b60e31b81526001600160a01b039283166004820181905291906020816024817f000000000000000000000000000000000000000000000000000000000000000088165afa908115610979575f91612a6f575b5015612a5d576129f16040916129ec612a37946129d16130b3565b60018060a01b03166001600160601b0360a01b5f5416175f55565b613233565b6020810151600180546001600160a01b0319166001600160a01b0390921691909117905580516001600160a01b0316848116612a4d575b5001516001600160a01b031690565b908116612a415750565b612a4a9061265c565b50565b612a56906125b1565b505f612a28565b6040516362df054560e01b8152600490fd5b612a88915060203d60201161097257610964818361067e565b5f6129b6565b6040519060a082018281106001600160401b038211176106435760405281608060609182815282602082015282604082015282808201520152565b9060208282031261035a5781516001600160401b039283821161035a57019060a08282031261035a57612afa61069f565b92825181811161035a5782612b10918501611807565b8452602083015181811161035a5782612b2a918501611807565b6020850152604083015181811161035a5782612b47918501611807565b6040850152606083015181811161035a5782612b64918501611807565b6060850152608083015190811161035a57612b7f9201611807565b608082015290565b9081602091031261035a575190565b60409065ffffffffffff61076b949316815281602082015201906104a4565b91939293612bc1612a8e565b94805180612caf575b5050612bdb60608601518285611b4a565b9182612bed57505050509051905f9190565b612c01612c3b9183608089015191876117bc565b916020612c1a6114586114585f5460018060a01b031690565b8189015190604051808096819463810da75d60e01b83528760048401612b96565b03915afa801561097957612c7795612c71935f92612c7c575b50612c65919260408a015191611b34565b90818082109118021890565b90613393565b915190565b612c659250612ca29060203d602011612ca8575b612c9a818361067e565b810190612b87565b91612c54565b503d612c90565b612cc3929650602080918301019101612ac9565b935f80612bca565b612ce0610c18825f52600460205260405f2090565b9081612ced575050505f90565b612d08610c1860049461120b845f52600560205260405f2090565b5f5460405163bd49c35f60e01b81529491929160209186919082906001600160a01b03165afa9081156109795761076b945f92612d65575b50610c18612d56915f52600360205260405f2090565b90818082109118021890613393565b612d56919250612d86610c189160203d602011612ca857612c9a818361067e565b929150612d40565b65ffffffffffff90818111612da1571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b805480612dd15750505f905f905f90565b5f19918183810111611bb1575f5260205f2001015460019165ffffffffffff82169160301c90565b600181111561076b57600181600160801b811015612f12575b612eba612eb0612ea6612e9c612e92612e88612ec697600488600160401b612ec19a1015612f05575b640100000000811015612ef8575b62010000811015612eeb575b610100811015612edf575b6010811015612ed3575b1015612ecb575b60030260011c612e81818b611ee6565b0160011c90565b612e81818a611ee6565b612e818189611ee6565b612e818188611ee6565b612e818187611ee6565b612e818186611ee6565b8093611ee6565b821190565b900390565b60011b612e71565b811c9160021b91612e6a565b60081c91811b91612e60565b60101c9160081b91612e55565b60201c9160101b91612e49565b60401c9160201b91612e3b565b50600160401b9050608082901c612e12565b905b838310612f335750505090565b909192612f408185613558565b90835f5265ffffffffffff808360205f20015416908416105f14612f685750925b9190612f26565b93506001810180911115612f6157611b8f565b908154905f829160058411612fe5575b612f969350846135ab565b80612fbe57505f905b6001600160d01b03821615611f875761076b9160016123719201612121565b612fd8612fcd612fdf92611ba3565b835f5260205f200190565b5460301c90565b90612f9f565b9192612ff081612df9565b8103908111611bb157612f9693855f5265ffffffffffff808360205f20015416908516105f14613021575091612f8b565b92915061302d90611bc3565b90612f8b565b6040519061304082610628565b5f6020838281520152565b9061307461306e6130959261305e613033565b50613067613033565b5084612121565b506122d1565b91600165ffffffffffff845116936020828060d01b03910151169101612121565b905490604051926130a584610628565b835260031b1c602082015290565b6130bb61356d565b6130c361356d565b60015f8051602061362383398151915255565b604051906130e382610648565b5f6040838281528260208201520152565b81601f8201121561035a578051916020916001600160401b038411610643578360051b90604051946131288584018761067e565b8552838086019282010192831161035a578301905b82821061314b575050505090565b83809183516131598161042a565b81520191019061313d565b9060208282031261035a5781516001600160401b039283821161035a5701908181039260a0841261035a5760606040519461319e86610648565b1261035a576040516131af81610648565b83516131ba8161042a565b815260208401516131ca8161042a565b602082015260408401516131dd8161042a565b60408201528452606083015181811161035a57826131fc9185016130f4565b6020850152608083015190811161035a5761321792016130f4565b604082015290565b80518210156121365760209160051b010190565b61324f9061323f6130d6565b5060208082518301019101613164565b8051519091906001600160a01b03161580613379575b613367579060208101905f5b825180518210156132eb5761145861328c836132999361321f565b516001600160a01b031690565b156132d9576132bb6132b76132b261328c84875161321f565b612732565b1590565b6132c757600101613271565b604051635140fefd60e11b8152600490fd5b6040516323cda06760e01b8152600490fd5b506040925050818101905f5b8251805182101561335e5761145861328c836133129361321f565b1561334d576133306132b761332b61328c84875161321f565b6127a0565b61333c576001016132f7565b8351635140fefd60e11b8152600490fd5b83516323cda06760e01b8152600490fd5b50509150505190565b6040516303501f5960e11b8152600490fd5b506020820151511580613265575060408201515115613265565b91818302915f198185099383808610950394808603951461341357848311156134065790829109815f038216809204600280826003021880830282030280830282030280830282030280830282030280830282030280920290030293600183805f03040190848311900302920304170290565b821560030260111861359b565b50509061076b9250611ee6565b8054600160401b8110156106435761343d91600182018155612121565b61346857815160209092015160301b65ffffffffffff191665ffffffffffff92909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b8054929392801561352e5761349261349d91611ba3565b825f5260205f200190565b9182549265ffffffffffff9182851692811680841161351c578793036134e357506134dc92509065ffffffffffff82549181199060301b169116179055565b60301c9190565b915050613517916135036134f56106ae565b65ffffffffffff9093168352565b6001600160d01b0386166020830152613420565b6134dc565b604051632520601d60e01b8152600490fd5b50906135539161353f6134f56106ae565b6001600160d01b0385166020830152613420565b5f9190565b90808216911860011c8101809111611bb15790565b60ff5f805160206136438339815191525460401c161561358957565b604051631afcd79f60e31b8152600490fd5b634e487b715f526020526024601cfd5b905b8383106135ba5750505090565b9091926135c78185613558565b90835f5265ffffffffffff808360205f20015416908416105f146135ef5750925b91906135ad565b935060018101809111156135e857611b8f56fe02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220634e3b6b986f1093753acb2fce82d90613d9763273e8cb9fc5d156adf1a11ace64736f6c634300081900336101c0346101c857601f61358038819003918201601f19168301916001600160401b0391828411858510176101cc5781606092869260409687528339810103126101c85761004c836101e0565b926100648361005d602084016101e0565b92016101e0565b91306080527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff82871c166101b7578080831603610173575b5050505f60a0525f60c0525f60e052610100935f8552610120935f8552610140905f82526101609283526101809384526101a0948552519461338b96876101f58839608051878181610696015261148c015260a0518761092d015260c0518761114b015260e0518781816107a101526111840152518681816104e2015261266601525185818161064c01528181611be00152611d0f01525184818161071f01528181611b470152611d8d015251838181610ebc015261179a015251828181610c8f015261183b0152518161104f0152f35b6001600160401b0319909116811790915583519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80806100a2565b855163f92ee8a960e01b8152600490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101c85756fe60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a7146102c4578063020cf0c2146102bf57806302145348146102ba578063103f2907146102b557806310a28b5d146102b057806311422095146102ab578063128e5d82146102a6578063197aa7ea146102a15780631a80e5001461029c57806323f752d514610297578063248a9ca31461029257806325dc97081461028d5780632dd31000146102885780632f2ff15d1461028357806336568abe1461027e5780633dfd3873146102795780633eb22c0f14610274578063439fab911461026f57806345e78fcb1461026a578063518504ba14610265578063557cab44146102605780635d32a1c91461025b5780636679191e1461025657806379d89614146102515780637d24bb271461024c5780637f5a7c7b1461024757806391d148541461024257806394d2558a1461023d5780639b656b22146102385780639f86fd8514610233578063a217fddf1461022e578063bb24fe8a14610229578063c0cd7c3e14610224578063d15b740e1461021f578063d547741f1461021a578063da749d2b14610215578063e02f693714610210578063e49561ee1461020b578063f7b0554714610206578063fbfa77cf14610201578063fd4d447c146101fc578063ff54740f146101f75763ffa1ad74146101f2575f80fd5b611557565b61153a565b611510565b6114e9565b611465565b61127a565b61125e565b611229565b6111dd565b6111b3565b61116f565b61112c565b611112565b61107e565b61103a565b610ffc565b610f4c565b610f24565b610eeb565b610ea7565b610e6d565b610e1c565b610cf8565b610cbe565b610c7a565b610b42565b610aec565b6109f3565b6109a8565b61095c565b610918565b6108fb565b6108c2565b61074e565b61070a565b61067b565b610637565b6105e8565b6105b3565b6104cd565b610410565b61032f565b3461031a57602036600319011261031a5760043563ffffffff60e01b811680910361031a57602090637965db0b60e01b8114908115610309575b506040519015158152f35b6301ffc9a760e01b1490505f6102fe565b5f80fd5b6001600160a01b0381160361031a57565b3461031a57606036600319011261031a5760243560043561034f8261031e565b6044359161035b611e02565b815f526004602052826103896103848360405f209060018060a01b03165f5260205260405f2090565b6120b3565b146103fe5760207ffc9545f07ffadfb668efd0144cdcaf2d6e2c8192dce1ea9fc131934f9c90fc7e91835f52600482526103e9856103da8360405f209060018060a01b03165f5260205260405f2090565b6103e342612b1e565b90611f58565b50506040519485526001600160a01b031693a3005b60405163a741a04560e01b8152600490fd5b3461031a5760408060031936011261031a576004359060243590610432611e5f565b825f526002602052805f205482116104bd57825f52600360205281610458825f206120b3565b146104ad57816104a8916104987e899d104fc3d8820bd96540612bcc5c448c8837b13b9f7faa43ad0728f0c14f946103da875f52600360205260405f2090565b5050519081529081906020820190565b0390a2005b5163a741a04560e01b8152600490fd5b51631eefc06360e31b8152600490fd5b3461031a575f36600319011261031a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6024359065ffffffffffff8216820361031a57565b6044359065ffffffffffff8216820361031a57565b6064359065ffffffffffff8216820361031a57565b608090600319011261031a576004356105688161031e565b90602435906044356105798161031e565b9060643565ffffffffffff8116810361031a5790565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b3461031a576105e46105d06105c736610550565b929190916115b1565b60405191829160208352602083019061058f565b0390f35b3461031a57604036600319011261031a57602061062f61038460243561060d8161031e565b6004355f526004845260405f209060018060a01b03165f5260205260405f2090565b604051908152f35b3461031a575f36600319011261031a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461031a57604036600319011261031a57610694610511565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036106f8576106db906004355f52600360205260405f20612124565b60408051941515855263ffffffff91909116602085015292915050f35b604051637ca475e560e11b8152600490fd5b3461031a575f36600319011261031a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461031a57604036600319011261031a576004356001600160601b038116810361031a576024359061077e612229565b6040516302910f8b60e31b81523360048201526020816024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa9081156108bd575f9161088e575b501561087c576001600160601b03166bffffffffffffffffffffffff193360601b16179080610808835f52600260205260405f2090565b54146103fe57610861817fc67e7929681aa1bccd63f52b3799bf5805f3009f197db6fdf584b14f7fbf608c92610846855f52600260205260405f2090565b556108518185612258565b6040519081529081906020820190565b0390a261087a60015f8051602061331683398151915255565b005b6040516323d53b9760e21b8152600490fd5b6108b0915060203d6020116108b6575b6108a88183610d7e565b810190611649565b5f6107d1565b503d61089e565b61165d565b3461031a57602036600319011261031a576004355f525f805160206132f68339815191526020526020600160405f200154604051908152f35b3461031a576105e46105d061090f36610550565b9291909161174e565b3461031a575f36600319011261031a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461031a57604036600319011261031a5761087a60243560043561097f8261031e565b805f525f805160206132f68339815191526020526109a3600160405f200154611eb5565b612533565b3461031a57604036600319011261031a576024356109c58161031e565b336001600160a01b038216036109e15761087a90600435612569565b60405163334bd91960e11b8152600490fd5b3461031a57602036600319011261031a57600435610a108161031e565b610a18612229565b335f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c60205260409020547fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c9060ff1615610ace57506001546001600160a01b0391821691811682146103fe576001600160a01b03191681176001557f5bbb1d3ebb6a3ad2a0f17ff35e579a83af60604d1d3c2a4c83c62adecadf666d5f80a260015f8051602061331683398151915255005b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b3461031a57602036600319011261031a576004355f526003602052602061062f60405f206120b3565b9181601f8401121561031a578235916001600160401b03831161031a576020838186019501011161031a57565b3461031a57602036600319011261031a576001600160401b0360043581811161031a57610b73903690600401610b15565b5f80516020613336833981519152549260ff8460401c1615931680159081610c72575b6001149081610c68575b159081610c5f575b50610c4d575f80516020613336833981519152805467ffffffffffffffff19166001179055610bdb9183610c2957612631565b610be157005b5f80516020613336833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f80516020613336833981519152805460ff60401b1916600160401b179055612631565b60405163f92ee8a960e01b8152600490fd5b9050155f610ba8565b303b159150610ba0565b849150610b96565b3461031a575f36600319011261031a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461031a575f36600319011261031a5760206040517f15e7c882d74e8821ebf34aaff46fd0e1d53b9393d91490019124113d28dc32a38152f35b3461031a575f36600319011261031a576020604051614e208152f35b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b03821117610d4357604052565b610d14565b606081019081106001600160401b03821117610d4357604052565b608081019081106001600160401b03821117610d4357604052565b90601f801991011681019081106001600160401b03821117610d4357604052565b60405190610dac82610d63565b565b60405190610dac82610d28565b6001600160401b038111610d4357601f01601f191660200190565b81601f8201121561031a57803590610ded82610dbb565b92610dfb6040519485610d7e565b8284526020838301011161031a57815f926020809301838601378301015290565b3461031a57606036600319011261031a57610e35610511565b6044356001600160401b03811161031a57602091610e5a61062f923690600401610dd6565b906004355f526003845260405f20612798565b3461031a575f36600319011261031a5760206040517fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c8152f35b3461031a575f36600319011261031a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461031a575f36600319011261031a5760206040517e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf8152f35b3461031a575f36600319011261031a576001546040516001600160a01b039091168152602090f35b3461031a57604036600319011261031a57602060ff610f9e602435610f708161031e565b6004355f525f805160206132f6833981519152845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b90608060031983011261031a5760043591602435610fc78161031e565b9160443565ffffffffffff8116810361031a5791606435906001600160401b03821161031a57610ff991600401610dd6565b90565b3461031a57602061062f61103561101236610faa565b939190925f526004865260405f209060018060a01b03165f5260205260405f2090565b612798565b3461031a575f36600319011261031a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461031a57604036600319011261031a5760043561109b8161031e565b6024356001600160401b03811161031a575f916110bd83923690600401610b15565b90816040519283928337810184815203915af461110a6110db6119a3565b916110fc60405193849215156020840152604080840152606083019061058f565b03601f198101835282610d7e565b805190602001fd5b3461031a575f36600319011261031a5760206040515f8152f35b3461031a575f36600319011261031a5760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461031a575f36600319011261031a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461031a57602036600319011261031a576004355f526002602052602060405f2054604051908152f35b3461031a57604036600319011261031a5761087a6024356004356112008261031e565b805f525f805160206132f6833981519152602052611224600160405f200154611eb5565b612569565b3461031a57606036600319011261031a576105e46105d060043561124c8161031e565b611254610526565b90602435906119d2565b3461031a57602061062f61127136610faa565b92919091611ad1565b3461031a5760a036600319011261031a5760243560043561129a8261031e565b604435916112a661053b565b90608435906001600160401b03821161031a576112c860049236908401610dd6565b6112d0612229565b5f546020906112f5906112e9906001600160a01b031681565b6001600160a01b031690565b60405163b134427160e01b815294859182905afa9283156108bd575f93611434575b506001600160a01b039283163303611422576001546001600160a01b0316838116611397575b50506040805195865265ffffffffffff909316602086015216927f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed91819081015b0390a361087a60015f8051602061331683398151915255565b9093604051946113ce866113c0602082019363724ab0f760e11b8552858c898d60248701611c5b565b03601f198101885287610d7e565b62042e305a10611410575f61137e938192827f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed9951926203d090f1509361133d565b604051638072475160e01b8152600490fd5b60405163dabc4ad960e01b8152600490fd5b61145791935060203d60201161145e575b61144f8183610d7e565b8101906116d3565b915f611317565b503d611445565b3461031a57606036600319011261031a576024356114828161031e565b61148a610526565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036106f8576114e46106db926004355f52600460205260405f209060018060a01b03165f5260205260405f2090565b612124565b3461031a575f36600319011261031a575f546040516001600160a01b039091168152602090f35b3461031a57604036600319011261031a57602061062f6024356115328161031e565b600435611cd8565b3461031a575f36600319011261031a5760206040516203d0908152f35b3461031a575f36600319011261031a57602060405160018152f35b5190811515820361031a57565b519063ffffffff8216820361031a57565b919082604091031261031a57610ff960206115aa84611572565b930161157f565b91939265ffffffffffff906060956040519363f7b0554760e01b6020860152602485015260018060a01b031660448401521660648201526064815260a08101908082106001600160401b03831117610d4357611622926116139260405261201a565b60208082518301019101611590565b9061162a5750565b90915063ffffffff6040519116602082015260208152610ff981610d28565b9081602091031261031a57610ff990611572565b6040513d5f823e3d90fd5b81601f8201121561031a5780519061167f82610dbb565b9261168d6040519485610d7e565b8284526020838301011161031a57815f9260208093018386015e8301015290565b9060208282031261031a5781516001600160401b03811161031a57610ff99201611668565b9081602091031261031a5751610ff98161031e565b90610ff9916020815261170782516080602084015260a083019061058f565b906080606061173e61172b602087015195601f19968787830301604088015261058f565b604087015186868303018487015261058f565b940151928285030191015261058f565b604051630df8851f60e11b81526001600160a01b03828116600483015260248201849052848116604483015265ffffffffffff8616606483015295606095909491939091905f856084817f00000000000000000000000000000000000000000000000000000000000000008c165afa9485156108bd575f95611945575b5060405163fbfa77cf60e01b8152602081600481888d165afa9081156108bd57611837995f9286928491611926575b5060405163192c0ff760e21b81526001600160a01b03909116600482015265ffffffffffff909216602483015290998a9190829081906044820190565b03917f0000000000000000000000000000000000000000000000000000000000000000165afa9788156108bd575f986118fa575b50908161187d846118839594876119d2565b946115b1565b908251158015906118f0575b80156118e6575b80156118dc575b6118a957505050909150565b6110fc9450610ff993956118bb610d9f565b938452602084015260408301526060820152604051928391602083016116e8565b508151151561189d565b5080511515611896565b508551151561188f565b611883939291985061191d903d805f833e6119158183610d7e565b8101906116ae565b9790919261186b565b61193f915060203d60201161145e5761144f8183610d7e565b5f6117fa565b61195a9195503d805f833e6119158183610d7e565b935f6117cb565b90610ff992915f52600360205260405f20612798565b5f9081526004602090815260408083206001600160a01b03909416835292905220610ff9929190612798565b3d156119cd573d906119b482610dbb565b916119c26040519384610d7e565b82523d5f602084013e565b606090565b611622916116139194939465ffffffffffff60609660405193630cbd53f560e11b6020860152602485015216604483015260448252611a1082610d63565b61201a565b60405190611a2282610d28565b60606020838281520152565b9060208282031261031a5781516001600160401b039283821161031a57019060408282031261031a5760405192611a6484610d28565b825181811161031a5782611a79918501611668565b8452602083015190811161031a57611a919201611668565b602082015290565b6001600160a01b0391821681529116602082015265ffffffffffff9091166040820152608060608201819052610ff99291019061058f565b92611ae190929192828486612973565b929093611aec611a15565b93805180611c3f575b50508415938415611ba9575b8415611b18575b50505050611b135790565b505f90565b602080949550611b43910151604051958694859463530e1d4360e01b865260601c9060048601611a99565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156108bd575f91611b8a575b50155f808080611b08565b611ba3915060203d6020116108b6576108a88183610d7e565b5f611b7f565b5f549094506001600160a01b0316602084865192611bdc604051948593849363530e1d4360e01b85528960048601611a99565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156108bd575f91611c20575b501593611b01565b611c39915060203d6020116108b6576108a88183610d7e565b5f611c18565b611c53929550602080918301019101611a2e565b925f80611af5565b919360a093610ff9969565ffffffffffff938552600180871b031660208501526040840152166060820152816080820152019061058f565b634e487b7160e01b5f52601160045260245ffd5b8115611cb1570490565b634e487b7160e01b5f52601260045260245ffd5b9060018201809211611cd357565b611c93565b5f546040516308834cb560e21b8082526001600160a01b0385811660048401529283166024830152929392602092909183816044817f000000000000000000000000000000000000000000000000000000000000000086165afa9081156108bd575f91611de5575b5015918215611d61575b50509050611d5b57610ff991612a6e565b50505f90565b6040519081526001600160a01b0385166004820152606086901c602482015291508290829060449082907f0000000000000000000000000000000000000000000000000000000000000000165afa9182156108bd575f92611dc8575b505015805f80611d4a565b611dde9250803d106108b6576108a88183610d7e565b5f80611dbd565b611dfc9150843d86116108b6576108a88183610d7e565b5f611d40565b335f9081527f24e48de785eeca8420b70f73d267a66970ccc187d459f2a4b53e74ed92a5ab86602052604090207f15e7c882d74e8821ebf34aaff46fd0e1d53b9393d91490019124113d28dc32a39060ff905b541615610ace5750565b335f9081527f72a65082a5691803ab2b62c9bc729b34205ba1b183d950896526b2fd8714d0c7602052604090207e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf9060ff90611e55565b5f8181525f805160206132f683398151915260209081526040808320338452909152902060ff90611e55565b634e487b7160e01b5f52603260045260245ffd5b8054821015611f0a575f5260205f2001905f90565b611ee1565b90815491600160401b831015610d435782611f32916001610dac95018155611ef5565b90919082549060031b91821b915f19901b1916179055565b5f19810191908211611cd357565b90929192600182019081548015611fea575b5084611f7584612b50565b50949092845493611f85836120b3565b9681611fd5575b5015611fb2575050505f198101908111611cd357611f328591611fae93611ef5565b9190565b611fae949293611fce926001600160d01b03909116919061317e565b5050611f0f565b65ffffffffffff83811691161490505f611f8c565b600160401b811015610d43578060016120069201845583611ef5565b8154905f199060031b1b191690555f611f6a565b5f9190829160405161204f816110fc6020820194639f86fd8560e01b865230602484015260406044840152606483019061058f565b51915afa5061205c6119a3565b8051810160408282031261031a5761207660208301611572565b916040810151916001600160401b03831161031a5761209c926020809201920101611668565b90156120a55790565b805190811561031a57602001fd5b8054806120e257505f5b6001600160d01b03811615611d5b5760016120d89201611ef5565b90549060031b1c90565b5f19908082810111611cd357825f5260205f2001015460301c6120bd565b9060405161210d81610d28565b915465ffffffffffff8116835260301c6020830152565b91908254905f8291600584116121c2575b612140935085612cb4565b9081156121b6576121af6121a66121a06120d861217261216d61216288611f4a565b895f5260205f200190565b612100565b966001612199602061218a8b5165ffffffffffff1690565b9a01516001600160d01b031690565b9101611ef5565b93611f4a565b63ffffffff1690565b6001939291565b5f925082915081908190565b91926121cd81612b89565b8103908111611cd35761214093865f526122016121f68360205f200165ffffffffffff90541690565b65ffffffffffff1690565b65ffffffffffff85161015612217575091612135565b92915061222390611cc5565b90612135565b5f8051602061331683398151915260028154146122465760029055565b604051633ee5aeb560e01b8152600490fd5b90815f52600360205260405f208161226f82612b50565b9193905083156122cd5761228f916001600160d01b031690600101611ef5565b90549060031b1c5b826122c3575b50506122a7575050565b6122bf915f52600360205260405f206103e342612b1e565b5050565b119050815f61229d565b50505f612297565b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260409020545f805160206132f68339815191529060ff16611d5b575f808052602091825260408082206001600160a01b038516835290925220805460ff1916600117905533906001600160a01b03165f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b6001600160a01b0381165f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c602052604090207fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c905f805160206132f68339815191529060ff905b541661244f575f828152602091825260408082206001600160a01b038616835290925220805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b5050505f90565b6001600160a01b0381165f9081527f72a65082a5691803ab2b62c9bc729b34205ba1b183d950896526b2fd8714d0c7602052604090207e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf905f805160206132f68339815191529060ff906123eb565b6001600160a01b0381165f9081527f24e48de785eeca8420b70f73d267a66970ccc187d459f2a4b53e74ed92a5ab86602052604090207f15e7c882d74e8821ebf34aaff46fd0e1d53b9393d91490019124113d28dc32a3905f805160206132f68339815191529060ff906123eb565b5f8181525f805160206132f6833981519152602081815260408084206001600160a01b038716855290915290912060ff906123eb565b5f8181525f805160206132f6833981519152602081815260408084206001600160a01b03871685529091529091205460ff161561244f575f828152602091825260408082206001600160a01b038616835290925220805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b91909160408184031261031a5780356126138161031e565b9260208201356001600160401b03811161031a57610ff99201610dd6565b61263d918101906125fb565b6040516302910f8b60e31b81526001600160a01b039283166004820181905291906020816024817f000000000000000000000000000000000000000000000000000000000000000088165afa9081156108bd575f91612750575b501561273e576126d26040916126cd612718946126b2612d0b565b60018060a01b03166001600160601b0360a01b5f5416175f55565b612e8b565b6020810151600180546001600160a01b0319166001600160a01b0390921691909117905580516001600160a01b031684811661272e575b5001516001600160a01b031690565b9081166127225750565b61272b90612380565b50565b612737906122d5565b505f612709565b6040516362df054560e01b8152600490fd5b612769915060203d6020116108b6576108a88183610d7e565b5f612697565b9081602091031261031a57610ff99061157f565b90600163ffffffff80931601918211611cd357565b9180511561286657806020806127b39351830101910161276f565b916127be83826130bb565b926127cf845165ffffffffffff1690565b9065ffffffffffff808516921682811461285a5782119182612805575b50506127fc57610ff99250612feb565b50506020015190565b9091506128128354611f4a565b63ffffffff83161491821561282b575b50505f806127ec565b6128529192506128466128406121f692612783565b856130bb565b5165ffffffffffff1690565b115f80612822565b50505050506020015190565b50610ff991612feb565b60405190608082018281106001600160401b03821117610d4357604052606080838181528160208201528160408201520152565b9060208282031261031a5781516001600160401b039283821161031a57019060808282031261031a576128d5610d9f565b92825181811161031a57826128eb918501611668565b8452602083015181811161031a5782612905918501611668565b6020850152604083015181811161031a5782612922918501611668565b6040850152606083015190811161031a5761293d9201611668565b606082015290565b9081602091031261031a575190565b60409065ffffffffffff610ff99493168152816020820152019061058f565b9391909361297f612870565b93805180612a4e575b50506129c992939460206129a86112e96112e95f5460018060a01b031690565b8188015190604051808098819463810da75d60e01b83528960048401612954565b03915afa9182156108bd57612a10945f93612a15575b50612a0490612a0493946129f860408a01518284611961565b9360608a015192611977565b90818082109118021890565b915190565b612a04935090612a3f612a049260203d602011612a47575b612a378183610d7e565b810190612945565b9350906129df565b503d612a2d565b6129c994955090602080612a669383010191016128a4565b93925f612988565b5f5460405163bd49c35f60e01b81529290602090849060049082906001600160a01b03165afa9283156108bd575f93612af5575b50610384612ae091612abf610384855f52600360205260405f2090565b935f52600460205260405f209060018060a01b03165f5260205260405f2090565b90818082109118021890818082109118021890565b612ae0919350612b166103849160203d602011612a4757612a378183610d7e565b939150612aa2565b65ffffffffffff90818111612b31571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b805480612b615750505f905f905f90565b5f19918183810111611cd3575f5260205f2001015460019165ffffffffffff82169160301c90565b6001811115610ff957600181600160801b811015612ca2575b612c4a612c40612c36612c2c612c22612c18612c5697600488600160401b612c519a1015612c95575b640100000000811015612c88575b62010000811015612c7b575b610100811015612c6f575b6010811015612c63575b1015612c5b575b60030260011c612c11818b611ca7565b0160011c90565b612c11818a611ca7565b612c118189611ca7565b612c118188611ca7565b612c118187611ca7565b612c118186611ca7565b8093611ca7565b821190565b900390565b60011b612c01565b811c9160021b91612bfa565b60081c91811b91612bf0565b60101c9160081b91612be5565b60201c9160101b91612bd9565b60401c9160201b91612bcb565b50600160401b9050608082901c612ba2565b905b838310612cc35750505090565b909192612cd0818561325b565b90835f5265ffffffffffff808360205f20015416908416105f14612cf85750925b9190612cb6565b93506001810180911115612cf157611c93565b612d13613270565b612d1b613270565b60015f8051602061331683398151915255565b60405190612d3b82610d48565b5f6040838281528260208201520152565b81601f8201121561031a578051916020916001600160401b038411610d43578360051b9060405194612d8085840187610d7e565b8552838086019282010192831161031a578301905b828210612da3575050505090565b8380918351612db18161031e565b815201910190612d95565b9060208282031261031a5781516001600160401b039283821161031a5701908181039260a0841261031a57606060405194612df686610d48565b1261031a57604051612e0781610d48565b8351612e128161031e565b81526020840151612e228161031e565b60208201526040840151612e358161031e565b60408201528452606083015181811161031a5782612e54918501612d4c565b6020850152608083015190811161031a57612e6f9201612d4c565b604082015290565b8051821015611f0a5760209160051b010190565b612ea790612e97612d2e565b5060208082518301019101612dbc565b8051519091906001600160a01b03161580612fd1575b612fbf579060208101905f5b82518051821015612f43576112e9612ee483612ef193612e77565b516001600160a01b031690565b15612f3157612f13612f0f612f0a612ee4848751612e77565b612456565b1590565b612f1f57600101612ec9565b604051635140fefd60e11b8152600490fd5b6040516323cda06760e01b8152600490fd5b506040925050818101905f5b82518051821015612fb6576112e9612ee483612f6a93612e77565b15612fa557612f88612f0f612f83612ee4848751612e77565b6124c4565b612f9457600101612f4f565b8351635140fefd60e11b8152600490fd5b83516323cda06760e01b8152600490fd5b50509150505190565b6040516303501f5960e11b8152600490fd5b506020820151511580612ebd575060408201515115612ebd565b908154905f829160058411613055575b61300693508461329e565b8061302e57505f905b6001600160d01b03821615611d5b57610ff99160016120d89201611ef5565b61304861303d61304f92611f4a565b835f5260205f200190565b5460301c90565b9061300f565b919261306081612b89565b8103908111611cd35761300693855f5265ffffffffffff808360205f20015416908516105f14613091575091612ffb565b92915061309d90611cc5565b90612ffb565b604051906130b082610d28565b5f6020838281520152565b906130e46130de613105926130ce6130a3565b506130d76130a3565b5084611ef5565b50612100565b91600165ffffffffffff845116936020828060d01b03910151169101611ef5565b9054906040519261311584610d28565b835260031b1c602082015290565b8054600160401b811015610d435761314091600182018155611ef5565b61316b57815160209092015160301b65ffffffffffff191665ffffffffffff92909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b80549293928015613231576131956131a091611f4a565b825f5260205f200190565b9182549265ffffffffffff9182851692811680841161321f578793036131e657506131df92509065ffffffffffff82549181199060301b169116179055565b60301c9190565b91505061321a916132066131f8610dae565b65ffffffffffff9093168352565b6001600160d01b0386166020830152613123565b6131df565b604051632520601d60e01b8152600490fd5b5090613256916132426131f8610dae565b6001600160d01b0385166020830152613123565b5f9190565b90808216911860011c8101809111611cd35790565b60ff5f805160206133368339815191525460401c161561328c57565b604051631afcd79f60e31b8152600490fd5b905b8383106132ad5750505090565b9091926132ba818561325b565b90835f5265ffffffffffff808360205f20015416908416105f146132e25750925b91906132a0565b935060018101809111156132db57611c9356fe02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212204499a4e541806b6efe7986c303b25f7c58d6541a27cb7ee070507be47989947d64736f6c63430008190033","sourceMap":"765:2461:88:-:0;;;;;-1:-1:-1;;;;;765:2461:88;;;;;;;;-1:-1:-1;;765:2461:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;348:4:89;;332:21;;8837:64:22;765:2461:88;;;;;;;7896:76:22;;765:2461:88;;;;;;7985:34:22;7981:146;;-1:-1:-1;525:17:76;;;-1:-1:-1;525:17:76;;-1:-1:-1;552:12:76;;-1:-1:-1;2360:34:83;;2404:28;;-1:-1:-1;2404:28:83;;2442:57;;-1:-1:-1;2442:57:83;;2509:61;;-1:-1:-1;2509:61:83;;1248:40:88;;;;;765:2461;;1352:79;;;;;;;;;;;;;;;;;;;;;;;348:4:89;765:2461:88;;-1:-1:-1;;;;;765:2461:88;;;;;;;;;;;;;;;;;1352:79;;;-1:-1:-1;1352:79:88;;;;;;765:2461;;;;;1298:134;;;765:2461;;1298:134;;765:2461;;1493:76;;;;;;;;;;;;;;;;;;;;;;;348:4:89;765:2461:88;;-1:-1:-1;;;;;765:2461:88;;;;;;;;;;;;;;;;;1493:76;;;-1:-1:-1;1493:76:88;;;;;;1442:128;765:2461;;1442:128;;765:2461;;;;;;;;332:21:89;765:2461:88;;;;525:17:76;765:2461:88;;;;;552:12:76;765:2461:88;;;;;2360:34:83;765:2461:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1493:76;765:2461;;;-1:-1:-1;765:2461:88;;;;;1493:76;765:2461;;;-1:-1:-1;765:2461:88;;;;;-1:-1:-1;765:2461:88;1352:79;765:2461;;;-1:-1:-1;765:2461:88;;;;;7981:146:22;-1:-1:-1;;;;;;765:2461:88;;;;;;;;;8087:29:22;;765:2461:88;;8087:29:22;7981:146;;;;;7896:76;765:2461:88;;-1:-1:-1;;;7938:23:22;;;;;765:2461:88;-1:-1:-1;765:2461:88;;;;;-1:-1:-1;;;;;765:2461:88;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a714610214578063075db0361461020f578063103f29071461020a578063128e5d82146102055780631a80e500146102005780631bf10a3e146101fb57806323f752d5146101f6578063248a9ca3146101f157806325dc9708146101ec5780632dd31000146101e75780632f2ff15d146101e257806336568abe146101dd5780633dfd3873146101d8578063439fab91146101d3578063557cab44146101ce5780636679191e146101c95780637f5a7c7b146101c457806391d14854146101bf5780639b656b22146101ba5780639f86fd85146101b5578063a217fddf146101b0578063bb24fe8a146101ab578063c0cd7c3e146101a6578063d15b740e146101a1578063d547741f1461019c578063e02f693714610197578063e102831a14610192578063e49561ee1461018d578063fbfa77cf14610188578063fd4d447c14610183578063ff54740f1461017e5763ffa1ad7414610179575f80fd5b61108a565b61106d565b61103b565b611014565b610e29565b610de5565b610d02565b610bf1565b610bc7565b610b83565b610b40565b610b26565b610a6c565b610a28565b6109ca565b6109a2565b610968565b61094c565b61080f565b6106e9565b61069e565b610652565b61060e565b6105f1565b6105b8565b61043c565b610407565b61033a565b6102f6565b6102b2565b61026e565b3461026a57602036600319011261026a5760043563ffffffff60e01b811680910361026a57602090637965db0b60e01b8114908115610259575b506040519015158152f35b6301ffc9a760e01b1490505f61024e565b5f80fd5b3461026a575f36600319011261026a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461026a575f36600319011261026a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461026a575f36600319011261026a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461026a575f36600319011261026a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6001600160a01b0381160361026a57565b6064359065ffffffffffff8216820361026a57565b608090600319011261026a576004356103bc8161037e565b90602435906044356103cd8161037e565b9060643565ffffffffffff8116810361026a5790565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b3461026a5761043861042461041b366103a4565b92919091611168565b6040519182916020835260208301906103e3565b0390f35b3461026a57604036600319011261026a576004356001600160601b038116810361026a576024359061046c611732565b6040516302910f8b60e31b81523360048201526020816024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa9081156105b3575f91610584575b5015610572576001600160601b03166bffffffffffffffffffffffff193360601b161790806104f6835f52600260205260405f2090565b541461056057610545817fc67e7929681aa1bccd63f52b3799bf5805f3009f197db6fdf584b14f7fbf608c92610534855f52600260205260405f2090565b556040519081529081906020820190565b0390a261055e60015f80516020611bf383398151915255565b005b60405163a741a04560e01b8152600490fd5b6040516323d53b9760e21b8152600490fd5b6105a6915060203d6020116105ac575b61059e8183610c71565b8101906113b9565b5f6104bf565b503d610594565b6110bd565b3461026a57602036600319011261026a576004355f525f80516020611bd38339815191526020526020600160405f200154604051908152f35b3461026a57610438610424610605366103a4565b929190916113f0565b3461026a575f36600319011261026a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461026a57604036600319011261026a5761055e6024356004356106758261037e565b805f525f80516020611bd3833981519152602052610699600160405f200154611761565b611918565b3461026a57604036600319011261026a576024356106bb8161037e565b336001600160a01b038216036106d75761055e9060043561194e565b60405163334bd91960e11b8152600490fd5b3461026a57602036600319011261026a576004356107068161037e565b61070e611732565b335f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c60205260409020547fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c9060ff16156107c457506001546001600160a01b039182169181168214610560576001600160a01b03191681176001557f5bbb1d3ebb6a3ad2a0f17ff35e579a83af60604d1d3c2a4c83c62adecadf666d5f80a260015f80516020611bf383398151915255005b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b9181601f8401121561026a578235916001600160401b03831161026a576020838186019501011161026a57565b3461026a57602036600319011261026a576001600160401b0360043581811161026a576108409036906004016107e2565b5f80516020611c13833981519152549260ff8460401c1615931680159081610944575b600114908161093a575b159081610931575b5061091f575f80516020611c13833981519152805467ffffffffffffffff191660011790556108a891836108f657611a16565b6108ae57005b5f80516020611c13833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f80516020611c13833981519152805460ff60401b191668010000000000000000179055611a16565b60405163f92ee8a960e01b8152600490fd5b9050155f610875565b303b15915061086d565b849150610863565b3461026a575f36600319011261026a576020604051614e208152f35b3461026a575f36600319011261026a5760206040517fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c8152f35b3461026a575f36600319011261026a576001546040516001600160a01b039091168152602090f35b3461026a57604036600319011261026a57602060ff610a1c6024356109ee8161037e565b6004355f525f80516020611bd3833981519152845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b3461026a575f36600319011261026a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461026a5760408060031936011261026a57600435610a8a8161037e565b602435906001600160401b03821161026a575f8091610ab0610b149436906004016107e2565b908187519283928337810184815203915af43d15610b1c57610b063d610ad581610ca1565b90610ae286519283610c71565b81523d5f602083013e5b8451948593151560208501528084015260608301906103e3565b03601f198101835282610c71565b805190602001fd5b610b066060610aec565b3461026a575f36600319011261026a5760206040515f8152f35b3461026a575f36600319011261026a5760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461026a575f36600319011261026a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461026a57602036600319011261026a576004355f526002602052602060405f2054604051908152f35b3461026a57604036600319011261026a5761055e602435600435610c148261037e565b805f525f80516020611bd3833981519152602052610c38600160405f200154611761565b61194e565b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b03821117610c6c57604052565b610c3d565b90601f801991011681019081106001600160401b03821117610c6c57604052565b60405190610c9f82610c51565b565b6001600160401b038111610c6c57601f01601f191660200190565b81601f8201121561026a57803590610cd382610ca1565b92610ce16040519485610c71565b8284526020838301011161026a57815f926020809301838601378301015290565b3461026a5760808060031936011261026a57610d1f60243561037e565b60443565ffffffffffff81160361026a576001600160401b0360643581811161026a57610d50903690600401610cbc565b5060606020604051610d6181610c51565b828152015260605180610d79575b60206040515f8152f35b8281016020821261026a5783519183831161026a5782604091031261026a5760405193610da585610c51565b8281015184811161026a578282610dbe928601016110c8565b855260a083015193841161026a57602093610dda9301016110c8565b9101525f8080610d6f565b3461026a575f36600319011261026a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461026a5760a036600319011261026a57602435600435610e498261037e565b60443591610e5561038f565b90608435906001600160401b03821161026a57610e7760049236908401610cbc565b610e7f611732565b5f54602090610ea490610e98906001600160a01b031681565b6001600160a01b031690565b60405163b134427160e01b815294859182905afa9283156105b3575f93610fe3575b506001600160a01b039283163303610fd1576001546001600160a01b0316838116610f46575b50506040805195865265ffffffffffff909316602086015216927f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed91819081015b0390a361055e60015f80516020611bf383398151915255565b909360405194610f7d86610f6f602082019363724ab0f760e11b8552858c898d602487016115d0565b03601f198101885287610c71565b62042e305a10610fbf575f610f2d938192827f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed9951926203d090f15093610eec565b604051638072475160e01b8152600490fd5b60405163dabc4ad960e01b8152600490fd5b61100691935060203d60201161100d575b610ffe8183610c71565b8101906110a5565b915f610ec6565b503d610ff4565b3461026a575f36600319011261026a575f546040516001600160a01b039091168152602090f35b3461026a57604036600319011261026a57602061106560243561105d8161037e565b600435611608565b604051908152f35b3461026a575f36600319011261026a5760206040516203d0908152f35b3461026a575f36600319011261026a57602060405160018152f35b9081602091031261026a57516110ba8161037e565b90565b6040513d5f823e3d90fd5b81601f8201121561026a578051906110df82610ca1565b926110ed6040519485610c71565b8284526020838301011161026a57815f9260208093018386015e8301015290565b9060208282031261026a5781516001600160401b03811161026a576110ba92016110c8565b906110ba91602081526020611153835160408385015260608401906103e3565b920151906040601f19828503019101526103e3565b604080516309472ec160e11b8152606096956001600160a01b039384169591946020949192917f0000000000000000000000000000000000000000000000000000000000000000169085876004818b5afa9687156105b3575f9761139a575b50845163fbfa77cf60e01b81529686886004818c5afa80156105b357855f9161123b9a839161137d575b508851636a531c3160e11b8082526001600160a01b039586166004830152858916602483015294909116604482015265ffffffffffff909116606482015298899081906084820190565b0381865afa9788156105b3575f98611358575b508686979899600496975196878092621a80e560e81b82525afa9485156105b3575f95611335575b5086519081526001600160a01b03948516600482015293909216602484015260609190911c604483015265ffffffffffff9092166064820152905f9082908180608481015b03915afa9081156105b3575f91611313575b50835115801590611309575b6112e35750505050565b6110ba9394955090610b06916112f7610c92565b95865283860152519384928301611133565b50805115156112d9565b61132f91503d805f833e6113278183610c71565b81019061110e565b5f6112cd565b5f95506113516112bb918a3d8c1161100d57610ffe8183610c71565b9550611276565b8798509661137360049697983d805f833e6113278183610c71565b989796955061124e565b61139491508a3d8c1161100d57610ffe8183610c71565b5f6111f1565b6113b2919750863d881161100d57610ffe8183610c71565b955f6111c7565b9081602091031261026a5751801515810361026a5790565b9081602091031261026a57516001600160401b038116810361026a5790565b604051635d927f4560e11b8082526060969594936001600160a01b03939092909160209190858416908383600481855afa9283156105b3575f936115b1575b506001600160401b039283166114d65750506040516304bb92e160e31b81526001600160a01b0393841660048201526024810194909452505092909216604483015265ffffffffffff9290921660648201529192505f90829060849082907f0000000000000000000000000000000000000000000000000000000000000000165afa9081156105b3575f916114c2575090565b6110ba91503d805f833e6113278183610c71565b839060046040518094819382525afa9081156105b3576001935f92611584575b50501614611505575050505050565b6040516304bb92e160e31b81526001600160a01b039182166004820152602481019290925292909216604483015265ffffffffffff9290921660648201529192505f90829060849082907f0000000000000000000000000000000000000000000000000000000000000000165afa9081156105b3575f916114c2575090565b6115a39250803d106115aa575b61159b8183610c71565b8101906113d1565b5f806114f6565b503d611591565b6115c9919350843d86116115aa5761159b8183610c71565b915f61142f565b919360a0936110ba969565ffffffffffff938552600180871b03166020850152604084015216606082015281608082015201906103e3565b5f546040516308834cb560e21b8082526001600160a01b038581166004840152928316602483015293602092909183816044817f000000000000000000000000000000000000000000000000000000000000000086165afa9081156105b3575f91611715575b501593841561168a575b505050509050611686575f90565b5f90565b6040519586526001600160a01b0392909216600486015260609190911c6024850152909291508290829060449082907f0000000000000000000000000000000000000000000000000000000000000000165afa9182156105b3575f926116f8575b505015805f808080611678565b61170e9250803d106105ac5761059e8183610c71565b5f806116eb565b61172c9150843d86116105ac5761059e8183610c71565b5f61166e565b5f80516020611bf3833981519152600281541461174f5760029055565b604051633ee5aeb560e01b8152600490fd5b5f8181525f80516020611bd38339815191526020908152604080832033845290915290205460ff16156107c45750565b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260409020545f80516020611bd38339815191529060ff1661183c575f808052602091825260408082206001600160a01b038516835290925220805460ff1916600117905533906001600160a01b03165f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b50505f90565b6001600160a01b0381165f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c602052604090207fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c905f80516020611bd38339815191529060ff905b5416611911575f828152602091825260408082206001600160a01b038616835290925220805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b5050505f90565b5f8181525f80516020611bd3833981519152602081815260408084206001600160a01b038716855290915290912060ff906118ad565b5f8181525f80516020611bd3833981519152602081815260408084206001600160a01b03871685529091529091205460ff1615611911575f828152602091825260408082206001600160a01b038616835290925220805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b91909160408184031261026a5780356119f88161037e565b9260208201356001600160401b03811161026a576110ba9201610cbc565b611a22918101906119e0565b506040516302910f8b60e31b81526001600160a01b0391821660048201819052906020816024817f000000000000000000000000000000000000000000000000000000000000000087165afa9081156105b3575f91611b34575b5015611b2257611aa990611a8e611b53565b60018060a01b03166001600160601b0360a01b5f5416175f55565b611afc6040611ab6611b76565b6020810151600180546001600160a01b0319166001600160a01b0390921691909117905580516001600160a01b0316848116611b12575b5001516001600160a01b031690565b908116611b065750565b611b0f90611842565b50565b611b1b90611791565b505f611aed565b6040516362df054560e01b8152600490fd5b611b4d915060203d6020116105ac5761059e8183610c71565b5f611a7c565b611b5b611ba4565b611b63611ba4565b60015f80516020611bf383398151915255565b60405190606082018281106001600160401b03821117610c6c576040525f6040838281528260208201520152565b60ff5f80516020611c138339815191525460401c1615611bc057565b604051631afcd79f60e31b8152600490fdfe02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212208c8cb609a14ad0196f2716730b417869a08c533b532b4fc28fabc1ee690e133164736f6c63430008190033","sourceMap":"765:2461:88:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;-1:-1:-1;;765:2461:88;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3551:47:19;;;:87;;;;765:2461:88;;;;;;;;;;3551:87:19;-1:-1:-1;;;1134:40:28;;-1:-1:-1;3551:87:19;;;765:2461:88;-1:-1:-1;765:2461:88;;;;;;;;-1:-1:-1;;765:2461:88;;;;;;957:56;-1:-1:-1;;;;;765:2461:88;;;;;;;;;;;;-1:-1:-1;;765:2461:88;;;;;;1537:38:83;-1:-1:-1;;;;;765:2461:88;;;;;;;;;;;;-1:-1:-1;;765:2461:88;;;;;;1632:54:83;-1:-1:-1;;;;;765:2461:88;;;;;;;;;;;;-1:-1:-1;;765:2461:88;;;;;;1743:56:83;-1:-1:-1;;;;;765:2461:88;;;;;;;-1:-1:-1;;;;;765:2461:88;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;765:2461:88;;;;;;;;-1:-1:-1;;765:2461:88;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;765:2461:88;;;;;;-1:-1:-1;;;;;765:2461:88;;;;;;;;3361:103:26;;;:::i;:::-;765:2461:88;;-1:-1:-1;;;4285:48:83;;4322:10;765:2461:88;4285:48:83;;765:2461:88;;;;;-1:-1:-1;;;;;4295:16:83;765:2461:88;4285:48:83;;;;;;;-1:-1:-1;4285:48:83;;;765:2461:88;4284:49:83;;4280:99;;-1:-1:-1;;;;;765:2461:88;-1:-1:-1;;4322:10:83;297:2:95;765:2461:88;;267:46:95;4459:27:83;;;;765:2461:88;;4459:15:83;765:2461:88;;;;;;;4459:27:83;765:2461:88;4459:37:83;4455:87;;4654:38;4552:27;4654:38;4552:27;;;765:2461:88;;4459:15:83;765:2461:88;;;;;;;4552:27:83;765:2461:88;;;;;;;;;;;;;;4654:38:83;;;;3426:1:26;1949;-1:-1:-1;;;;;;;;;;;765:2461:88;3860:283:26;3426:1;765:2461:88;4455:87:83;765:2461:88;;-1:-1:-1;;;4519:12:83;;765:2461:88;;4519:12:83;4280:99;765:2461:88;;-1:-1:-1;;;4356:12:83;;765:2461:88;;4356:12:83;4285:48;;;;765:2461:88;4285:48:83;765:2461:88;4285:48:83;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;765:2461:88:-;;;;;;-1:-1:-1;;765:2461:88;;;;;;-1:-1:-1;765:2461:88;-1:-1:-1;;;;;;;;;;;765:2461:88;;;4919:24:19;765:2461:88;-1:-1:-1;765:2461:88;4919:24:19;765:2461:88;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;-1:-1:-1;;765:2461:88;;;;;;322:32:76;-1:-1:-1;;;;;765:2461:88;;;;;;;;;;;;-1:-1:-1;;765:2461:88;;;;5350:25:19;765:2461:88;;;;;;;:::i;:::-;;-1:-1:-1;765:2461:88;-1:-1:-1;;;;;;;;;;;765:2461:88;;3202:4:19;4919:24;765:2461:88;-1:-1:-1;765:2461:88;4919:24:19;765:2461:88;3202:4:19;:::i;:::-;5350:25;:::i;765:2461:88:-;;;;;;-1:-1:-1;;765:2461:88;;;;;;;;;:::i;:::-;966:10:24;-1:-1:-1;;;;;765:2461:88;;6441:34:19;6437:102;;6549:37;765:2461:88;;;6549:37:19;:::i;6437:102::-;765:2461:88;;-1:-1:-1;;;6498:30:19;;765:2461:88;;6498:30:19;765:2461:88;;;;;;-1:-1:-1;;765:2461:88;;;;;;;;;:::i;:::-;3361:103:26;;:::i;:::-;966:10:24;-1:-1:-1;765:2461:88;;;;;;;;;;1356:26:83;;765:2461:88;;4468:23:19;4464:108;;-1:-1:-1;4861:4:83;765:2461:88;-1:-1:-1;;;;;765:2461:88;;;;;;4861:13:83;;4857:63;;-1:-1:-1;;;;;;765:2461:88;;;4861:4:83;765:2461:88;4958:14:83;-1:-1:-1;;4958:14:83;4861:4;-1:-1:-1;;;;;;;;;;;765:2461:88;;4464:108:19;765:2461:88;;;;4514:47:19;;;;;;966:10:24;765:2461:88;4514:47:19;;765:2461:88;;;;;4514:47:19;765:2461:88;;;;;;;;;;;;;-1:-1:-1;;;;;765:2461:88;;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;765:2461:88;;;;-1:-1:-1;;;;;765:2461:88;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;765:2461:88;;;;;;;4301:16:22;765:2461:88;;4726:16:22;;:34;;;;765:2461:88;4805:1:22;4790:16;:50;;;;765:2461:88;4855:13:22;:30;;;;765:2461:88;4851:91:22;;;-1:-1:-1;;;;;;;;;;;765:2461:88;;-1:-1:-1;;765:2461:88;;;;;718:4:76;;4951:18:22;4979:67;;718:4:76;:::i;:::-;5066:101:22;;765:2461:88;5066:101:22;-1:-1:-1;;;;;;;;;;;765:2461:88;;-1:-1:-1;;;;765:2461:88;;;;;-1:-1:-1;765:2461:88;;5142:14:22;;765:2461:88;;5142:14:22;765:2461:88;4979:67:22;-1:-1:-1;;;;;;;;;;;765:2461:88;;-1:-1:-1;;;;765:2461:88;;;;;718:4:76;:::i;4851:91:22:-;765:2461:88;;-1:-1:-1;;;4908:23:22;;765:2461:88;;4908:23:22;4855:30;4872:13;;;4855:30;;;4790:50;4818:4;4810:25;:30;;-1:-1:-1;4790:50:22;;4726:34;;;-1:-1:-1;4726:34:22;;765:2461:88;;;;;;-1:-1:-1;;765:2461:88;;;;;;;1253:6:83;765:2461:88;;;;;;;;;-1:-1:-1;;765:2461:88;;;;;;;1356:26:83;765:2461:88;;;;;;;;;-1:-1:-1;;765:2461:88;;;;;;;;-1:-1:-1;;;;;765:2461:88;;;;;;;;;;;;;;-1:-1:-1;;765:2461:88;;;;;;3901:31:19;765:2461:88;;;;;:::i;:::-;;;-1:-1:-1;765:2461:88;-1:-1:-1;;;;;;;;;;;765:2461:88;;;-1:-1:-1;765:2461:88;;;;;;;;;;;;;;;;;3901:31:19;765:2461:88;;;;;;;;;;;;;;;;-1:-1:-1;;765:2461:88;;;;;;906:45;-1:-1:-1;;;;;765:2461:88;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;765:2461:88;;;;-1:-1:-1;765:2461:88;;;477:31:82;765:2461:88;;;;;;:::i;:::-;;;;;;;;;;;;;;;416:25:82;;;;765:2461:88;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;765:2461:88;;;;;;;;;;;;;477:31:82;;765:2461:88;;;;;;;;;;:::i;:::-;477:31:82;765:2461:88;;477:31:82;;;;;;:::i;:::-;518:79;;;765:2461:88;518:79:82;;765:2461:88;;;;;;;;;;;-1:-1:-1;;765:2461:88;;;;;;;;;;;;;;;;;-1:-1:-1;;765:2461:88;;;;;;;-1:-1:-1;;;;;404:28:76;765:2461:88;;;;;;;;;;-1:-1:-1;;765:2461:88;;;;;;1439:41:83;-1:-1:-1;;;;;765:2461:88;;;;;;;;;;;;-1:-1:-1;;765:2461:88;;;;;;-1:-1:-1;765:2461:88;2009:67:83;765:2461:88;;;;-1:-1:-1;765:2461:88;;;;;;;;;;;;;;-1:-1:-1;;765:2461:88;;;;5767:26:19;765:2461:88;;;;;;;:::i;:::-;;-1:-1:-1;765:2461:88;-1:-1:-1;;;;;;;;;;;765:2461:88;;3202:4:19;4919:24;765:2461:88;-1:-1:-1;765:2461:88;4919:24:19;765:2461:88;3202:4:19;:::i;:::-;5767:26;:::i;765:2461:88:-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;765:2461:88;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;765:2461:88;;;;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;:::-;-1:-1:-1;;;;;765:2461:88;;;;;;-1:-1:-1;;765:2461:88;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;765:2461:88;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;765:2461:88;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;3086:20:83;3082:107;;765:2461:88;;;;-1:-1:-1;765:2461:88;;;3082:107:83;3139:39;;;765:2461:88;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;3082:107:83;;;;;765:2461:88;;;;;;-1:-1:-1;;765:2461:88;;;;;;1019:53;-1:-1:-1;;;;;765:2461:88;;;;;;;;;;;;-1:-1:-1;;765:2461:88;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;765:2461:88;;;;;;;;;;;;:::i;:::-;3361:103:26;;:::i;:::-;-1:-1:-1;765:2461:88;;;5246:21:83;;:13;;-1:-1:-1;;;;;765:2461:88;5246:13:83;765:2461:88;;-1:-1:-1;;;;;765:2461:88;;;5246:21:83;765:2461:88;;-1:-1:-1;;;5246:23:83;;765:2461:88;;;;;5246:23:83;;;;;;;-1:-1:-1;5246:23:83;;;765:2461:88;-1:-1:-1;;;;;;765:2461:88;;;5232:10:83;:37;5228:87;;5341:4;765:2461:88;-1:-1:-1;;;;;765:2461:88;;;;5355:469:83;;765:2461:88;-1:-1:-1;;765:2461:88;;;;;;;;;;;;;;;;5839:55:83;;765:2461:88;;;;5839:55:83;;;;3426:1:26;1949;-1:-1:-1;;;;;;;;;;;765:2461:88;3860:283:26;5355:469:83;765:2461:88;;;;5435:94:83;;;;765:2461:88;5435:94:83;;;;;;;;;;;;765:2461:88;5435:94:83;;;:::i;:::-;;765:2461:88;;5435:94:83;;;;;;:::i;:::-;765:2461:88;5548:9:83;:51;5544:118;;-1:-1:-1;5839:55:83;5676:138;;;;5839:55;5676:138;;;1150:7;5676:138;;5355:469;;;5544:118;765:2461:88;;-1:-1:-1;;;5626:21:83;;765:2461:88;;5626:21:83;5228:87;765:2461:88;;-1:-1:-1;;;5292:12:83;;765:2461:88;;5292:12:83;5246:23;;;;;765:2461:88;5246:23:83;765:2461:88;5246:23:83;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;765:2461:88;;;;;;-1:-1:-1;;765:2461:88;;;;;;;;-1:-1:-1;;;;;765:2461:88;;;;;;;;;;;;;;-1:-1:-1;;765:2461:88;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;765:2461:88;;;;;;;1150:7:83;765:2461:88;;;;;;;;;-1:-1:-1;;765:2461:88;;;;;;;2700:1:83;765:2461:88;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;765:2461:88;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;765:2461:88;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;2213:1011::-;765:2461;;;-1:-1:-1;;;2498:56:88;;765:2461;;2213:1011;-1:-1:-1;;;;;765:2461:88;;;;;;2498:56;;2213:1011;;;2453:20;765:2461;;2498:56;765:2461;2498:56;765:2461;;2498:56;;;;;;;;;;;2213:1011;-1:-1:-1;765:2461:88;;-1:-1:-1;;;2590:32:88;;765:2461;2590:32;765:2461;2498:56;765:2461;2590:32;;;;;;;;2498:56;2590:32;2435:220;2590:32;;;;;2213:1011;-1:-1:-1;765:2461:88;;-1:-1:-1;;;2435:220:88;;;-1:-1:-1;;;;;765:2461:88;;;2498:56;2435:220;;765:2461;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2435:220;;;;;;;;;;;2498:56;2435:220;;;2213:1011;765:2461;;;;;;2498:56;765:2461;;;;;;;;;;2768:58;;;;;;;;;2498:56;2768:58;;;2213:1011;-1:-1:-1;765:2461:88;;2705:174;;;-1:-1:-1;;;;;765:2461:88;;;2498:56;2705:174;;765:2461;;;;;;;;;;;;;;;;;;;;;;;;;;;2498:56;;765:2461;;;;;;;2705:174;;;;;;;;;;2498:56;2705:174;;;2213:1011;765:2461;;;2894:34;;;:74;;;2213:1011;2890:328;;2213:1011;;;;:::o;2890:328::-;2991:216;765:2461;;;;;2991:216;765:2461;;;:::i;:::-;;;;3019:174;;;765:2461;;2991:216;;;;;;:::i;2894:74::-;765:2461;;;2932:36;;2894:74;;2705:174;;;;;;2498:56;2705:174;;;;;;:::i;:::-;;;;;:::i;:::-;;;;2768:58;2498:56;2768:58;;;2705:174;2768:58;;;;;;;;;;;:::i;:::-;;;;;2435:220;;;;;;2498:56;2435:220;;;;;2498:56;2435:220;;;;;;:::i;:::-;;;;;;;;2590:32;;;;;;;;;;;;;;:::i;:::-;;;;2498:56;;;;;;;;;;;;;;;:::i;:::-;;;;;765:2461;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;765:2461:88;;;;;;;:::o;1583:624::-;765:2461;;-1:-1:-1;;;1765:31:88;;;765:2461;;1583:624;;;-1:-1:-1;;;;;765:2461:88;1583:624;;;;1765:31;;765:2461;;;;;1765:31;765:2461;1765:31;765:2461;;1765:31;;;;;;;;;;;1583:624;-1:-1:-1;;;;;;765:2461:88;;;;;-1:-1:-1;;765:2461:88;;-1:-1:-1;;;1824:146:88;;-1:-1:-1;;;;;765:2461:88;;;1765:31;1824:146;;765:2461;;;;;;;;-1:-1:-1;;765:2461:88;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;765:2461:88;;;;;;1853:31;765:2461;1824:146;;;;;;;1765:31;1824:146;;;1817:153;;:::o;1824:146::-;;;;;;1765:31;1824:146;;;;;;:::i;1761:440::-;765:2461;;1765:31;765:2461;;1991:31;;;;;;;;;;;;;2026:1;1991:31;1765;1991;;;1761:440;765:2461;;;1991:36;1987:214;;1761:440;;;;;1583:624::o;1987:214::-;765:2461;;-1:-1:-1;;;2050:140:88;;-1:-1:-1;;;;;765:2461:88;;;1765:31;2050:140;;765:2461;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;765:2461:88;;;;;;2076:28;765:2461;2050:140;;;;;;;1765:31;2050:140;;;2043:147;;:::o;1991:31::-;;;;;;-1:-1:-1;1991:31:88;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;1765;;;;;;;;;;;;;;;:::i;:::-;;;;;765:2461;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3740:389:83:-;3918:5;765:2461:88;;;-1:-1:-1;;;3853:71:83;;;-1:-1:-1;;;;;765:2461:88;;;3853:71:83;;;765:2461:88;;;;;;;;;3853:71:83;;765:2461:88;;3853:71:83;765:2461:88;;;3867:29:83;765:2461:88;;3853:71:83;;;;;;;3918:5;3853:71;;;3740:389;3852:72;;765:2461:88;;;3852:181:83;;3740:389;3835:242;;;;;;;;3918:5;3740:389;:::o;3835:242::-;3918:5;4058:8;:::o;3852:181::-;765:2461:88;;3945:88:83;;;-1:-1:-1;;;;;765:2461:88;;;;3853:71:83;3945:88;;765:2461:88;467:2:95;765:2461:88;;;;;;;;;;;-1:-1:-1;765:2461:88;;;;;;;;3959:31:83;765:2461:88;3945:88:83;;;;;;;3918:5;3945:88;;;3852:181;3944:89;;;3852:181;;;;;;;3945:88;;;;;;-1:-1:-1;3945:88:83;;;;;;:::i;:::-;;;;;3853:71;;;;;;;;;;;;;;:::i;:::-;;;;3470:384:26;-1:-1:-1;;;;;;;;;;;1991:1:26;765:2461:88;;3670:20:26;3666:88;;1991:1;765:2461:88;;3470:384:26:o;3666:88::-;765:2461:88;;-1:-1:-1;;;3713:30:26;;;;;4148:103:19;-1:-1:-1;765:2461:88;;;-1:-1:-1;;;;;;;;;;;765:2461:88;;;;;;;;966:10:24;765:2461:88;;;;;;;;;;4468:23:19;4464:108;;4148:103;:::o;7270:387::-;-1:-1:-1;;;;;765:2461:88;;-1:-1:-1;765:2461:88;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2887:71:19;765:2461:88;;;;-1:-1:-1;765:2461:88;;;;;;;;;;;-1:-1:-1;;;;;765:2461:88;;;;;;;;;;-1:-1:-1;;765:2461:88;7509:4:19;765:2461:88;;;966:10:24;;-1:-1:-1;;;;;765:2461:88;-1:-1:-1;7532:40:19;-1:-1:-1;;7532:40:19;7509:4;7586:11;:::o;7432:219::-;7628:12;;-1:-1:-1;7628:12:19;:::o;7270:387::-;-1:-1:-1;;;;;765:2461:88;;-1:-1:-1;765:2461:88;;;;;;;;;1356:26:83;;-1:-1:-1;;;;;;;;;;;2887:71:19;765:2461:88;;3901:31:19;765:2461:88;;;;-1:-1:-1;765:2461:88;;;;;;;;;;;-1:-1:-1;;;;;765:2461:88;;;;;;;;;;-1:-1:-1;;765:2461:88;7509:4:19;765:2461:88;;;966:10:24;;-1:-1:-1;;;;;765:2461:88;;7532:40:19;-1:-1:-1;;7532:40:19;7509:4;7586:11;:::o;7432:219::-;7628:12;;;-1:-1:-1;7628:12:19;:::o;7270:387::-;-1:-1:-1;765:2461:88;;;-1:-1:-1;;;;;;;;;;;765:2461:88;;;;;;;;-1:-1:-1;;;;;765:2461:88;;;;;;;;;;;;3901:31:19;765:2461:88;7892:388:19;-1:-1:-1;765:2461:88;;;-1:-1:-1;;;;;;;;;;;765:2461:88;;;;;;;;-1:-1:-1;;;;;765:2461:88;;;;;;;;;;;;;;;;-1:-1:-1;765:2461:88;;;;;;;;;;;-1:-1:-1;;;;;765:2461:88;;;;;;;;;;-1:-1:-1;;765:2461:88;;;966:10:24;;-1:-1:-1;;;;;765:2461:88;;8155:40:19;-1:-1:-1;;8155:40:19;765:2461:88;8209:11:19;:::o;765:2461:88:-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;765:2461:88;;;;;;;;:::i;5907:716:83:-;6030:34;5907:716;6030:34;;;;:::i;:::-;-1:-1:-1;765:2461:88;;-1:-1:-1;;;6080:41:83;;-1:-1:-1;;;;;765:2461:88;;;6080:41:83;;;765:2461:88;;;;6080:41:83;765:2461:88;;;6090:13:83;765:2461:88;;6080:41:83;;;;;;;-1:-1:-1;6080:41:83;;;5907:716;6079:42;;6075:90;;6210:14;2684:111:26;;;:::i;:::-;765:2461:88;;;;;;-1:-1:-1;;;;;765:2461:88;;-1:-1:-1;765:2461:88;;;-1:-1:-1;765:2461:88;;6210:14:83;765:2461:88;;;;:::i;:::-;6080:41:83;6311:15;;765:2461:88;;;;-1:-1:-1;;;;;;765:2461:88;-1:-1:-1;;;;;765:2461:88;;;;;;;;;;;-1:-1:-1;;;;;765:2461:88;;;;6337:143:83;;5907:716;-1:-1:-1;6493:28:83;765:2461:88;-1:-1:-1;;;;;765:2461:88;;;;;;;6489:128:83;;5907:716;:::o;6489:128::-;6551:55;;;:::i;:::-;;5907:716::o;6337:143::-;6404:65;;;:::i;:::-;;6337:143;;;6075:90;765:2461:88;;-1:-1:-1;;;6144:10:83;;6080:41;;6144:10;6080:41;;;;;;;;;;;;;;:::i;:::-;;;;6893:76:22;;;:::i;:::-;;;:::i;:::-;1949:1:26;-1:-1:-1;;;;;;;;;;;765:2461:88;6893:76:22:o;765:2461:88:-;;;;;;;;;;-1:-1:-1;;;;;765:2461:88;;;;;;;-1:-1:-1;765:2461:88;;;;;;;;;;;;:::o;7084:141:22:-;765:2461:88;-1:-1:-1;;;;;;;;;;;765:2461:88;;;;7150:18:22;7146:73;;7084:141::o;7146:73::-;765:2461:88;;-1:-1:-1;;;7191:17:22;;;;","linkReferences":{},"immutableReferences":{"56598":[{"start":1571,"length":32}],"56601":[{"start":2911,"length":32}],"57552":[{"start":1167,"length":32},{"start":2968,"length":32}],"57555":[{"start":711,"length":32},{"start":6731,"length":32}],"57558":[{"start":779,"length":32},{"start":5693,"length":32}],"57561":[{"start":847,"length":32},{"start":5819,"length":32}],"59871":[{"start":2621,"length":32},{"start":4496,"length":32}],"59873":[{"start":643,"length":32},{"start":5263,"length":32}],"59875":[{"start":3578,"length":32},{"start":5457,"length":32}]}},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","FACTORY()":"2dd31000","FULL_RESTAKE_DELEGATOR_HINTS()":"e102831a","HOOK_GAS_LIMIT()":"ff54740f","HOOK_RESERVE()":"557cab44","HOOK_SET_ROLE()":"6679191e","NETWORK_REGISTRY()":"c0cd7c3e","NETWORK_RESTAKE_DELEGATOR_HINTS()":"075db036","OPERATOR_NETWORK_OPT_IN_SERVICE()":"1a80e500","OPERATOR_VAULT_OPT_IN_SERVICE()":"128e5d82","OPT_IN_SERVICE_HINTS()":"9b656b22","TYPE()":"bb24fe8a","VAULT_FACTORY()":"103f2907","VERSION()":"ffa1ad74","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","hook()":"7f5a7c7b","initialize(bytes)":"439fab91","maxNetworkLimit(bytes32)":"d15b740e","onSlash(bytes32,address,uint256,uint48,bytes)":"e49561ee","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","setHook(address)":"3dfd3873","setMaxNetworkLimit(uint96,uint256)":"23f752d5","stake(bytes32,address)":"fd4d447c","stakeAt(bytes32,address,uint48,bytes)":"e02f6937","stakeBaseHints(address,bytes32,address,uint48)":"1bf10a3e","stakeHints(address,bytes32,address,uint48)":"25dc9708","staticDelegateCall(address,bytes)":"9f86fd85","supportsInterface(bytes4)":"01ffc9a7","vault()":"fbfa77cf"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"optInServiceHints\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"vaultHints_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadySet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExternalCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientHookGas\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotNetwork\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotSlasher\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"}],\"name\":\"OnSlash\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"hook\",\"type\":\"address\"}],\"name\":\"SetHook\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"SetMaxNetworkLimit\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FULL_RESTAKE_DELEGATOR_HINTS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HOOK_GAS_LIMIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HOOK_RESERVE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HOOK_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NETWORK_REGISTRY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NETWORK_RESTAKE_DELEGATOR_HINTS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_NETWORK_OPT_IN_SERVICE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_VAULT_OPT_IN_SERVICE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPT_IN_SERVICE_HINTS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TYPE\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VAULT_FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VERSION\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hook\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"}],\"name\":\"maxNetworkLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"hook_\",\"type\":\"address\"}],\"name\":\"setHook\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint96\",\"name\":\"identifier\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"setMaxNetworkLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"stake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hints\",\"type\":\"bytes\"}],\"name\":\"stakeAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"stakeBaseHints\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"stakeHints\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"staticDelegateCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"OnSlash(bytes32,address,uint256,uint48)\":{\"params\":{\"amount\":\"amount of the collateral to be slashed\",\"captureTimestamp\":\"time point when the stake was captured\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"SetHook(address)\":{\"params\":{\"hook\":\"address of the hook\"}},\"SetMaxNetworkLimit(bytes32,uint256)\":{\"params\":{\"amount\":\"new maximum subnetwork's limit (how much stake the subnetwork is ready to get)\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}}},\"kind\":\"dev\",\"methods\":{\"VERSION()\":{\"details\":\"Must return 1 for this one.\",\"returns\":{\"_0\":\"version of the delegator\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize(bytes)\":{\"params\":{\"data\":\"some data to use\"}},\"onSlash(bytes32,address,uint256,uint48,bytes)\":{\"details\":\"Only the vault's slasher can call this function.\",\"params\":{\"amount\":\"amount of the collateral slashed\",\"captureTimestamp\":\"time point when the stake was captured\",\"data\":\"some additional data\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"setHook(address)\":{\"details\":\"Only a HOOK_SET_ROLE holder can call this function. The hook can have arbitrary logic under certain functions, however, it doesn't affect the stake guarantees.\",\"params\":{\"hook\":\"address of the hook\"}},\"setMaxNetworkLimit(uint96,uint256)\":{\"details\":\"Only a network can call this function.\",\"params\":{\"amount\":\"new maximum subnetwork's limit\"}},\"stake(bytes32,address)\":{\"details\":\"Warning: this function is not safe to use for stake capturing, as it can change by the end of the block.\",\"params\":{\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"_0\":\"slashable stake until the end of the next epoch\"}},\"stakeAt(bytes32,address,uint48,bytes)\":{\"details\":\"Warning: it is not safe to use timestamp >= current one for the stake capturing, as it can change later.\",\"params\":{\"hints\":\"hints for the checkpoints' indexes\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\",\"timestamp\":\"time point to capture the stake at\"},\"returns\":{\"_0\":\"slashable stake at the given timestamp until the end of the consequent epoch\"}},\"staticDelegateCall(address,bytes)\":{\"details\":\"It allows to use this contract's storage on-chain.\",\"params\":{\"data\":\"data to make a delegatecall with\",\"target\":\"address of the contract to make a delegatecall to\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"events\":{\"OnSlash(bytes32,address,uint256,uint48)\":{\"notice\":\"Emitted when a slash happens.\"},\"SetHook(address)\":{\"notice\":\"Emitted when a hook is set.\"},\"SetMaxNetworkLimit(bytes32,uint256)\":{\"notice\":\"Emitted when a subnetwork's maximum limit is set.\"}},\"kind\":\"user\",\"methods\":{\"FACTORY()\":{\"notice\":\"Get the factory's address.\"},\"HOOK_GAS_LIMIT()\":{\"notice\":\"Get a gas limit for the hook.\"},\"HOOK_RESERVE()\":{\"notice\":\"Get a reserve gas between the gas limit check and the hook's execution.\"},\"HOOK_SET_ROLE()\":{\"notice\":\"Get a hook setter's role.\"},\"NETWORK_REGISTRY()\":{\"notice\":\"Get the network registry's address.\"},\"OPERATOR_NETWORK_OPT_IN_SERVICE()\":{\"notice\":\"Get the operator-network opt-in service's address.\"},\"OPERATOR_VAULT_OPT_IN_SERVICE()\":{\"notice\":\"Get the operator-vault opt-in service's address.\"},\"TYPE()\":{\"notice\":\"Get the entity's type.\"},\"VAULT_FACTORY()\":{\"notice\":\"Get the vault factory's address.\"},\"VERSION()\":{\"notice\":\"Get a version of the delegator (different versions mean different interfaces).\"},\"hook()\":{\"notice\":\"Get the hook's address.\"},\"initialize(bytes)\":{\"notice\":\"Initialize this entity contract by using a given data.\"},\"maxNetworkLimit(bytes32)\":{\"notice\":\"Get a particular subnetwork's maximum limit (meaning the subnetwork is not ready to get more as a stake).\"},\"onSlash(bytes32,address,uint256,uint48,bytes)\":{\"notice\":\"Called when a slash happens.\"},\"setHook(address)\":{\"notice\":\"Set a new hook.\"},\"setMaxNetworkLimit(uint96,uint256)\":{\"notice\":\"Set a maximum limit for a subnetwork (how much stake the subnetwork is ready to get). identifier identifier of the subnetwork\"},\"stake(bytes32,address)\":{\"notice\":\"Get a stake that a given subnetwork will be able to slash for a certain operator until the end of the next epoch (if no cross-slashing and no slashings by the subnetwork).\"},\"stakeAt(bytes32,address,uint48,bytes)\":{\"notice\":\"Get a stake that a given subnetwork could be able to slash for a certain operator at a given timestamp until the end of the consequent epoch using hints (if no cross-slashing and no slashings by the subnetwork).\"},\"staticDelegateCall(address,bytes)\":{\"notice\":\"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data).\"},\"vault()\":{\"notice\":\"Get the vault's address.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/hints/DelegatorHints.sol\":\"BaseDelegatorHints\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf\",\"dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89\",\"dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1\",\"dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol\":{\"keccak256\":\"0x4aaaf1c0737dd16e81f0d2b9833c549747a5ede6873bf1444bc72aa572d03e98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eada27d7668eebaea16c3b890aa1b38ffc53965292e26c96f7c44834623f4710\",\"dweb:/ipfs/QmVSWuLtxyCqNbLyY89ptxkvsk4CLLKDQYigEne5Qj8k1L\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x7d94fa0af099a2172eb01f9c8a8a443cbe7e0e43654841563e4e09968efdb549\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65e38fb76b6add407d4557753ae83dd1268e8261195dbe5c19a580d5ba6e4e9a\",\"dweb:/ipfs/QmTkGSJtaQrqjcyWM4AgemeEmKgtDydKPPVRajsUJRQSrK\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0\",\"dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x10eb97d047f8d84fe263a02bb4a656ac6674f6679d74532cc37546289e073a9d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3e41287d40b0c46982f1083d40d32de2761f009c5c51627fe79a7feb0ab1cf5c\",\"dweb:/ipfs/Qme7dbh6HX3ZvUJdbQAcVqXkmyXyfcLiUZRhhon3cU6K8p\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e\",\"dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/SignatureChecker.sol\":{\"keccak256\":\"0xbdc3bb48ccedb818cd75a6d74a16df55a822e9f6d3cc54c59f576f10aab67b5f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2284f25f2478f419d7781573b17a89d0e7c5589a865d55e2d6ed5163aee23aa8\",\"dweb:/ipfs/QmNsr2625APBQiNKpYnX5VcSnYgfUHR9Uzzp9pRXjoDqK7\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44\",\"dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6\",\"dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza\"]},\"src/contracts/common/Entity.sol\":{\"keccak256\":\"0x3d61a932995b8443381f3950542d388223a2c26dd5d29a3274dea3baa7388bd7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7cdf5f03ca72fd263fd32ff59c8d88ddca911ae83896a287d10772c1bbe9b138\",\"dweb:/ipfs/QmbP84r5BWT1Rn9AYTntWSf3xUMTTCohTZJFhbBhDXFoHa\"]},\"src/contracts/common/MigratableEntity.sol\":{\"keccak256\":\"0x303ad40a3de8fa808cc30a6fbd5998633f6a89b982e6db1fa981e0566ab445e7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://fa8fb92995ead02798e013190b87b84b44cc68668262f045c9b0b4783940e2bf\",\"dweb:/ipfs/QmV1uKGVLKwWisc714R8fCt71gXUQJpaKvdc6LQ8WtvMpL\"]},\"src/contracts/common/StaticDelegateCallable.sol\":{\"keccak256\":\"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764\",\"dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD\"]},\"src/contracts/delegator/BaseDelegator.sol\":{\"keccak256\":\"0x7c54d491fdd4415b764a9c8defa068e56d4c0c8c9419be0053a1d377669290e8\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://9238bfbad0f6eeb0dc7727724de14380f1980b395902269703d5e2ef07e52e10\",\"dweb:/ipfs/QmPJn1V4HNXcEghYvogGuSTF24dSQUPosR5qtsXcmNqRm3\"]},\"src/contracts/delegator/FullRestakeDelegator.sol\":{\"keccak256\":\"0x0a81c4f8e72914563a9cb771e93acf889c71ea36b7bec040e4eb562b199d5af1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6fc66b6ba02da77046a0bbbd1dd407a62c08f52e04486c9cbd2cb1cca3da555f\",\"dweb:/ipfs/QmZQivK1ZnMxfRQQ5aLpV9co5u55wQVNev5Rg1hzAqxhkE\"]},\"src/contracts/delegator/NetworkRestakeDelegator.sol\":{\"keccak256\":\"0xd3a8e6522f9c6fdcc2da837c9023afd6bdff2bce45a35590320c475519e3636d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://58b17a87f6554f08376f9ea7fedf486a4aa75801bf0ad8b23ff5a46959b6b7a3\",\"dweb:/ipfs/QmSTmNh67tYt8CmjVZb57r8N3qX5yeYdMApKPJm3qvQgQw\"]},\"src/contracts/delegator/OperatorNetworkSpecificDelegator.sol\":{\"keccak256\":\"0x031a10722b9ec49048f0952710401131290adb87e71caf294e864e7ac3b98a16\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://72428febc875134b2f29205e6f294634a1c22a7d5c78d6a9cb2f8196f107c9b5\",\"dweb:/ipfs/QmTPwXR6h5oytckmkLrHdKeEMdphJxceDhYUR4zvQeWAwY\"]},\"src/contracts/delegator/OperatorSpecificDelegator.sol\":{\"keccak256\":\"0x630ce62fa30b9f3349ab7a8cf8dbf041319febc6dd757be2f94d3d25944ed328\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c2ac59d47ce57d2a6819ae9833e1a618a371eccff93eb5ab367b201b01f42bfa\",\"dweb:/ipfs/QmdBpGMBivpNPv2WbH8vnCUy5xkVeaxQvGgqi33vKCz1kA\"]},\"src/contracts/hints/DelegatorHints.sol\":{\"keccak256\":\"0xd71e9102e99a25ee8b5435779f011a24558f56074aa2b16c18b623b57754ae97\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://29db5552e55dab51bea1ae40ba00ca674cb50fcb10997999a72a94527b6eb591\",\"dweb:/ipfs/QmQrYyTPx73ubNxMhYWJCkprCVFVtuTFcKaabYiKTe71tY\"]},\"src/contracts/hints/Hints.sol\":{\"keccak256\":\"0x8b565df1ae35993c097a9e642002782a8f451f6fd01809cad6bcd345bdf1b99c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://99a19adb01e350a92f534095b3078229df1f2f83077992d75d58d8684be45971\",\"dweb:/ipfs/QmbmwcuswVbzvwHQFTtrJG86oV98GnfxqYTb8cV8u1acox\"]},\"src/contracts/hints/OptInServiceHints.sol\":{\"keccak256\":\"0x95d9407900d27b9f4a1233b772aeed809c07b2dc5b31cfc9fa77ca26514c49e5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://a13a8877e312d7e6b8b85bde3668c5d84ff5ecc83f762cd573f2b7104c64eb42\",\"dweb:/ipfs/QmYV2J55acuGzCNnS3juABuUHY5U1xc8g8o9jwEyFFdeG5\"]},\"src/contracts/hints/VaultHints.sol\":{\"keccak256\":\"0xccb505b7159b769cc114d67b87c2de6b106557f667fc8f3780114baad5c3c442\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6d0c80a908fc16e96a8b5605a0bd53f9e89ad0ef0a738fbbae80ba4d3160749b\",\"dweb:/ipfs/QmXo5UtWoR8YmunqcbBU8rQMm1nvmvjNPoXcVrDhh4pEwR\"]},\"src/contracts/libraries/Checkpoints.sol\":{\"keccak256\":\"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609\",\"dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE\"]},\"src/contracts/libraries/ERC4626Math.sol\":{\"keccak256\":\"0x8441160513c1cbeb1c3b9ee077bcc7e7ce20006b52a77c8dd39ff0ef89699939\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://943f8cc3e26ddf649f465f40c909819f5c864717c4baa339e9e403b9374a4653\",\"dweb:/ipfs/QmXPxi1sUDsrGprZdUgCzoPEosaZMv9ZhygWQ1vAi1phAB\"]},\"src/contracts/libraries/Subnetwork.sol\":{\"keccak256\":\"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56\",\"dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32\"]},\"src/contracts/service/OptInService.sol\":{\"keccak256\":\"0x4e0932077f2686b7990e10d59deb2535334c0d09e52ef6e57c6ab09eca21c4b1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7c00d311032ed4a1743aca7475f3c86ce15cdfc2218108efc3731c03d34a5278\",\"dweb:/ipfs/QmUGGfVwVhaHr5kS4177yKKYiLYzi5qZpkEmvYxBZqazxf\"]},\"src/contracts/vault/Vault.sol\":{\"keccak256\":\"0x7ee6dbf060c45d6eba95315f4ac0b3b467dd9c4999b84c31d6f66d4d8b53a116\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://301948b8ea522db292aa2722ba42def3911dae95f0b376f7023c3fef470f8676\",\"dweb:/ipfs/QmSDbP2HdzhDAzstr8Zz5isEAcSkma8ABc5UwPsoazaumZ\"]},\"src/contracts/vault/VaultStorage.sol\":{\"keccak256\":\"0x57db25b127d77ea3472de53e3a4af3354399655b9268638b99ca5925fa364a56\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://aa763d9a6ec508ae3abfb8228b72b9fd9525279e5135d4962e79ff059feb1173\",\"dweb:/ipfs/QmcbDR6E9wyEpu6V2FkEC4hnWy47zXA9LSKJde6zSGd33Q\"]},\"src/interfaces/common/IEntity.sol\":{\"keccak256\":\"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b\",\"dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv\"]},\"src/interfaces/common/IMigratableEntity.sol\":{\"keccak256\":\"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c\",\"dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds\"]},\"src/interfaces/common/IRegistry.sol\":{\"keccak256\":\"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014\",\"dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK\"]},\"src/interfaces/common/IStaticDelegateCallable.sol\":{\"keccak256\":\"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516\",\"dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi\"]},\"src/interfaces/delegator/IBaseDelegator.sol\":{\"keccak256\":\"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2\",\"dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8\"]},\"src/interfaces/delegator/IDelegatorHook.sol\":{\"keccak256\":\"0xc51aa8d7d1f6c8043ee819b7aeb86da0e993912e1442098df897e299f01f9f46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://adddf5cb2ba282aeb576b26efb28640f865a1721cc9b6eee8b3ee0457a2c9780\",\"dweb:/ipfs/QmNYgAmnLRwWZbhTuQhZs9rx4zcme1df5mEepkrniorSoW\"]},\"src/interfaces/delegator/IFullRestakeDelegator.sol\":{\"keccak256\":\"0xa3c8cb2e45d4d8ce90e95263bea40c01dc400f05ad65bc29597d878606be5e7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://782cf5e201aa4cca037ebafd3807a68ff1cc721d5b8416a35244db0d0607369e\",\"dweb:/ipfs/QmQkJks6x7CKndeTPa9LxgTNygD5uEi7obhADhpq1Lsr9A\"]},\"src/interfaces/delegator/INetworkRestakeDelegator.sol\":{\"keccak256\":\"0xe7030fe30389a147fd710e3436ec346b4842695fd3e65a81b95375c9f1d633fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://739c7e66d301778054f5c90bee45ec9438f68afba8a03eaaac52064c73b115ad\",\"dweb:/ipfs/QmfZ2ytKcTykAc76nxhg8ikUXV8NdBpetqb8W4YWPcox1Z\"]},\"src/interfaces/delegator/IOperatorNetworkSpecificDelegator.sol\":{\"keccak256\":\"0x74b95e64d29769202d45dd277bb830f623ff3d41ce77b80ce3ee4e318a5c71ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e512b903aae5c1b8a028c6e3f4f6223b5cb5d704503cfa6bd37b5346868f5c20\",\"dweb:/ipfs/QmZim9YExsPWtyxyeui993HTKAEmrg8MUcSkZ77Gp2JcuZ\"]},\"src/interfaces/delegator/IOperatorSpecificDelegator.sol\":{\"keccak256\":\"0x72075cab585dc17240cc3e32bc99b92f0d5627ddd988fed680e3e1a52d5a01e4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7448bc90699409ae61d85216b5efc2143a37f0f73354be2aea993bc54afca441\",\"dweb:/ipfs/QmXE4gAxM8pHosZK8mcTcj17puBx484meDCcmrDePskGHZ\"]},\"src/interfaces/service/IOptInService.sol\":{\"keccak256\":\"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337\",\"dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24\"]},\"src/interfaces/slasher/IBaseSlasher.sol\":{\"keccak256\":\"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf\",\"dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx\"]},\"src/interfaces/vault/IVault.sol\":{\"keccak256\":\"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9\",\"dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R\"]},\"src/interfaces/vault/IVaultStorage.sol\":{\"keccak256\":\"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e\",\"dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"optInServiceHints","type":"address"},{"internalType":"address","name":"vaultHints_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"inputs":[],"type":"error","name":"AlreadySet"},{"inputs":[],"type":"error","name":"ExternalCall"},{"inputs":[],"type":"error","name":"InsufficientHookGas"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"NotInitialized"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"NotNetwork"},{"inputs":[],"type":"error","name":"NotSlasher"},{"inputs":[],"type":"error","name":"NotVault"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint48","name":"captureTimestamp","type":"uint48","indexed":false}],"type":"event","name":"OnSlash","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[{"internalType":"address","name":"hook","type":"address","indexed":true}],"type":"event","name":"SetHook","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"SetMaxNetworkLimit","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FULL_RESTAKE_DELEGATOR_HINTS","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HOOK_GAS_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HOOK_RESERVE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HOOK_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"NETWORK_REGISTRY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"NETWORK_RESTAKE_DELEGATOR_HINTS","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_NETWORK_OPT_IN_SERVICE","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_VAULT_OPT_IN_SERVICE","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPT_IN_SERVICE_HINTS","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"TYPE","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VAULT_FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"VERSION","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"hook","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"}],"stateMutability":"view","type":"function","name":"maxNetworkLimit","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint48","name":"captureTimestamp","type":"uint48"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"onSlash"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"address","name":"hook_","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setHook"},{"inputs":[{"internalType":"uint96","name":"identifier","type":"uint96"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setMaxNetworkLimit"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"stake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hints","type":"bytes"}],"stateMutability":"view","type":"function","name":"stakeAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"},{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"stakeBaseHints","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"},{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"stakeHints","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"staticDelegateCall"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"vault","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"VERSION()":{"details":"Must return 1 for this one.","returns":{"_0":"version of the delegator"}},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"initialize(bytes)":{"params":{"data":"some data to use"}},"onSlash(bytes32,address,uint256,uint48,bytes)":{"details":"Only the vault's slasher can call this function.","params":{"amount":"amount of the collateral slashed","captureTimestamp":"time point when the stake was captured","data":"some additional data","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"}},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"setHook(address)":{"details":"Only a HOOK_SET_ROLE holder can call this function. The hook can have arbitrary logic under certain functions, however, it doesn't affect the stake guarantees.","params":{"hook":"address of the hook"}},"setMaxNetworkLimit(uint96,uint256)":{"details":"Only a network can call this function.","params":{"amount":"new maximum subnetwork's limit"}},"stake(bytes32,address)":{"details":"Warning: this function is not safe to use for stake capturing, as it can change by the end of the block.","params":{"operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"_0":"slashable stake until the end of the next epoch"}},"stakeAt(bytes32,address,uint48,bytes)":{"details":"Warning: it is not safe to use timestamp >= current one for the stake capturing, as it can change later.","params":{"hints":"hints for the checkpoints' indexes","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)","timestamp":"time point to capture the stake at"},"returns":{"_0":"slashable stake at the given timestamp until the end of the consequent epoch"}},"staticDelegateCall(address,bytes)":{"details":"It allows to use this contract's storage on-chain.","params":{"data":"data to make a delegatecall with","target":"address of the contract to make a delegatecall to"}},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."}},"version":1},"userdoc":{"kind":"user","methods":{"FACTORY()":{"notice":"Get the factory's address."},"HOOK_GAS_LIMIT()":{"notice":"Get a gas limit for the hook."},"HOOK_RESERVE()":{"notice":"Get a reserve gas between the gas limit check and the hook's execution."},"HOOK_SET_ROLE()":{"notice":"Get a hook setter's role."},"NETWORK_REGISTRY()":{"notice":"Get the network registry's address."},"OPERATOR_NETWORK_OPT_IN_SERVICE()":{"notice":"Get the operator-network opt-in service's address."},"OPERATOR_VAULT_OPT_IN_SERVICE()":{"notice":"Get the operator-vault opt-in service's address."},"TYPE()":{"notice":"Get the entity's type."},"VAULT_FACTORY()":{"notice":"Get the vault factory's address."},"VERSION()":{"notice":"Get a version of the delegator (different versions mean different interfaces)."},"hook()":{"notice":"Get the hook's address."},"initialize(bytes)":{"notice":"Initialize this entity contract by using a given data."},"maxNetworkLimit(bytes32)":{"notice":"Get a particular subnetwork's maximum limit (meaning the subnetwork is not ready to get more as a stake)."},"onSlash(bytes32,address,uint256,uint48,bytes)":{"notice":"Called when a slash happens."},"setHook(address)":{"notice":"Set a new hook."},"setMaxNetworkLimit(uint96,uint256)":{"notice":"Set a maximum limit for a subnetwork (how much stake the subnetwork is ready to get). identifier identifier of the subnetwork"},"stake(bytes32,address)":{"notice":"Get a stake that a given subnetwork will be able to slash for a certain operator until the end of the next epoch (if no cross-slashing and no slashings by the subnetwork)."},"stakeAt(bytes32,address,uint48,bytes)":{"notice":"Get a stake that a given subnetwork could be able to slash for a certain operator at a given timestamp until the end of the consequent epoch using hints (if no cross-slashing and no slashings by the subnetwork)."},"staticDelegateCall(address,bytes)":{"notice":"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data)."},"vault()":{"notice":"Get the vault's address."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/hints/DelegatorHints.sol":"BaseDelegatorHints"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol":{"keccak256":"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866","urls":["bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf","dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab","urls":["bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89","dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606","urls":["bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1","dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol":{"keccak256":"0x4aaaf1c0737dd16e81f0d2b9833c549747a5ede6873bf1444bc72aa572d03e98","urls":["bzz-raw://eada27d7668eebaea16c3b890aa1b38ffc53965292e26c96f7c44834623f4710","dweb:/ipfs/QmVSWuLtxyCqNbLyY89ptxkvsk4CLLKDQYigEne5Qj8k1L"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol":{"keccak256":"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92","urls":["bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a","dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310","urls":["bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862","dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol":{"keccak256":"0x7d94fa0af099a2172eb01f9c8a8a443cbe7e0e43654841563e4e09968efdb549","urls":["bzz-raw://65e38fb76b6add407d4557753ae83dd1268e8261195dbe5c19a580d5ba6e4e9a","dweb:/ipfs/QmTkGSJtaQrqjcyWM4AgemeEmKgtDydKPPVRajsUJRQSrK"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed","urls":["bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0","dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84","urls":["bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9","dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol":{"keccak256":"0x10eb97d047f8d84fe263a02bb4a656ac6674f6679d74532cc37546289e073a9d","urls":["bzz-raw://3e41287d40b0c46982f1083d40d32de2761f009c5c51627fe79a7feb0ab1cf5c","dweb:/ipfs/Qme7dbh6HX3ZvUJdbQAcVqXkmyXyfcLiUZRhhon3cU6K8p"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575","urls":["bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e","dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/SignatureChecker.sol":{"keccak256":"0xbdc3bb48ccedb818cd75a6d74a16df55a822e9f6d3cc54c59f576f10aab67b5f","urls":["bzz-raw://2284f25f2478f419d7781573b17a89d0e7c5589a865d55e2d6ed5163aee23aa8","dweb:/ipfs/QmNsr2625APBQiNKpYnX5VcSnYgfUHR9Uzzp9pRXjoDqK7"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3","urls":["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03","dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol":{"keccak256":"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f","urls":["bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44","dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc","urls":["bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6","dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza"],"license":"MIT"},"src/contracts/common/Entity.sol":{"keccak256":"0x3d61a932995b8443381f3950542d388223a2c26dd5d29a3274dea3baa7388bd7","urls":["bzz-raw://7cdf5f03ca72fd263fd32ff59c8d88ddca911ae83896a287d10772c1bbe9b138","dweb:/ipfs/QmbP84r5BWT1Rn9AYTntWSf3xUMTTCohTZJFhbBhDXFoHa"],"license":"BUSL-1.1"},"src/contracts/common/MigratableEntity.sol":{"keccak256":"0x303ad40a3de8fa808cc30a6fbd5998633f6a89b982e6db1fa981e0566ab445e7","urls":["bzz-raw://fa8fb92995ead02798e013190b87b84b44cc68668262f045c9b0b4783940e2bf","dweb:/ipfs/QmV1uKGVLKwWisc714R8fCt71gXUQJpaKvdc6LQ8WtvMpL"],"license":"BUSL-1.1"},"src/contracts/common/StaticDelegateCallable.sol":{"keccak256":"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90","urls":["bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764","dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD"],"license":"BUSL-1.1"},"src/contracts/delegator/BaseDelegator.sol":{"keccak256":"0x7c54d491fdd4415b764a9c8defa068e56d4c0c8c9419be0053a1d377669290e8","urls":["bzz-raw://9238bfbad0f6eeb0dc7727724de14380f1980b395902269703d5e2ef07e52e10","dweb:/ipfs/QmPJn1V4HNXcEghYvogGuSTF24dSQUPosR5qtsXcmNqRm3"],"license":"BUSL-1.1"},"src/contracts/delegator/FullRestakeDelegator.sol":{"keccak256":"0x0a81c4f8e72914563a9cb771e93acf889c71ea36b7bec040e4eb562b199d5af1","urls":["bzz-raw://6fc66b6ba02da77046a0bbbd1dd407a62c08f52e04486c9cbd2cb1cca3da555f","dweb:/ipfs/QmZQivK1ZnMxfRQQ5aLpV9co5u55wQVNev5Rg1hzAqxhkE"],"license":"BUSL-1.1"},"src/contracts/delegator/NetworkRestakeDelegator.sol":{"keccak256":"0xd3a8e6522f9c6fdcc2da837c9023afd6bdff2bce45a35590320c475519e3636d","urls":["bzz-raw://58b17a87f6554f08376f9ea7fedf486a4aa75801bf0ad8b23ff5a46959b6b7a3","dweb:/ipfs/QmSTmNh67tYt8CmjVZb57r8N3qX5yeYdMApKPJm3qvQgQw"],"license":"BUSL-1.1"},"src/contracts/delegator/OperatorNetworkSpecificDelegator.sol":{"keccak256":"0x031a10722b9ec49048f0952710401131290adb87e71caf294e864e7ac3b98a16","urls":["bzz-raw://72428febc875134b2f29205e6f294634a1c22a7d5c78d6a9cb2f8196f107c9b5","dweb:/ipfs/QmTPwXR6h5oytckmkLrHdKeEMdphJxceDhYUR4zvQeWAwY"],"license":"BUSL-1.1"},"src/contracts/delegator/OperatorSpecificDelegator.sol":{"keccak256":"0x630ce62fa30b9f3349ab7a8cf8dbf041319febc6dd757be2f94d3d25944ed328","urls":["bzz-raw://c2ac59d47ce57d2a6819ae9833e1a618a371eccff93eb5ab367b201b01f42bfa","dweb:/ipfs/QmdBpGMBivpNPv2WbH8vnCUy5xkVeaxQvGgqi33vKCz1kA"],"license":"BUSL-1.1"},"src/contracts/hints/DelegatorHints.sol":{"keccak256":"0xd71e9102e99a25ee8b5435779f011a24558f56074aa2b16c18b623b57754ae97","urls":["bzz-raw://29db5552e55dab51bea1ae40ba00ca674cb50fcb10997999a72a94527b6eb591","dweb:/ipfs/QmQrYyTPx73ubNxMhYWJCkprCVFVtuTFcKaabYiKTe71tY"],"license":"BUSL-1.1"},"src/contracts/hints/Hints.sol":{"keccak256":"0x8b565df1ae35993c097a9e642002782a8f451f6fd01809cad6bcd345bdf1b99c","urls":["bzz-raw://99a19adb01e350a92f534095b3078229df1f2f83077992d75d58d8684be45971","dweb:/ipfs/QmbmwcuswVbzvwHQFTtrJG86oV98GnfxqYTb8cV8u1acox"],"license":"BUSL-1.1"},"src/contracts/hints/OptInServiceHints.sol":{"keccak256":"0x95d9407900d27b9f4a1233b772aeed809c07b2dc5b31cfc9fa77ca26514c49e5","urls":["bzz-raw://a13a8877e312d7e6b8b85bde3668c5d84ff5ecc83f762cd573f2b7104c64eb42","dweb:/ipfs/QmYV2J55acuGzCNnS3juABuUHY5U1xc8g8o9jwEyFFdeG5"],"license":"BUSL-1.1"},"src/contracts/hints/VaultHints.sol":{"keccak256":"0xccb505b7159b769cc114d67b87c2de6b106557f667fc8f3780114baad5c3c442","urls":["bzz-raw://6d0c80a908fc16e96a8b5605a0bd53f9e89ad0ef0a738fbbae80ba4d3160749b","dweb:/ipfs/QmXo5UtWoR8YmunqcbBU8rQMm1nvmvjNPoXcVrDhh4pEwR"],"license":"BUSL-1.1"},"src/contracts/libraries/Checkpoints.sol":{"keccak256":"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c","urls":["bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609","dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE"],"license":"MIT"},"src/contracts/libraries/ERC4626Math.sol":{"keccak256":"0x8441160513c1cbeb1c3b9ee077bcc7e7ce20006b52a77c8dd39ff0ef89699939","urls":["bzz-raw://943f8cc3e26ddf649f465f40c909819f5c864717c4baa339e9e403b9374a4653","dweb:/ipfs/QmXPxi1sUDsrGprZdUgCzoPEosaZMv9ZhygWQ1vAi1phAB"],"license":"MIT"},"src/contracts/libraries/Subnetwork.sol":{"keccak256":"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe","urls":["bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56","dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32"],"license":"MIT"},"src/contracts/service/OptInService.sol":{"keccak256":"0x4e0932077f2686b7990e10d59deb2535334c0d09e52ef6e57c6ab09eca21c4b1","urls":["bzz-raw://7c00d311032ed4a1743aca7475f3c86ce15cdfc2218108efc3731c03d34a5278","dweb:/ipfs/QmUGGfVwVhaHr5kS4177yKKYiLYzi5qZpkEmvYxBZqazxf"],"license":"BUSL-1.1"},"src/contracts/vault/Vault.sol":{"keccak256":"0x7ee6dbf060c45d6eba95315f4ac0b3b467dd9c4999b84c31d6f66d4d8b53a116","urls":["bzz-raw://301948b8ea522db292aa2722ba42def3911dae95f0b376f7023c3fef470f8676","dweb:/ipfs/QmSDbP2HdzhDAzstr8Zz5isEAcSkma8ABc5UwPsoazaumZ"],"license":"BUSL-1.1"},"src/contracts/vault/VaultStorage.sol":{"keccak256":"0x57db25b127d77ea3472de53e3a4af3354399655b9268638b99ca5925fa364a56","urls":["bzz-raw://aa763d9a6ec508ae3abfb8228b72b9fd9525279e5135d4962e79ff059feb1173","dweb:/ipfs/QmcbDR6E9wyEpu6V2FkEC4hnWy47zXA9LSKJde6zSGd33Q"],"license":"BUSL-1.1"},"src/interfaces/common/IEntity.sol":{"keccak256":"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21","urls":["bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b","dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv"],"license":"MIT"},"src/interfaces/common/IMigratableEntity.sol":{"keccak256":"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4","urls":["bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c","dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds"],"license":"MIT"},"src/interfaces/common/IRegistry.sol":{"keccak256":"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb","urls":["bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014","dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK"],"license":"MIT"},"src/interfaces/common/IStaticDelegateCallable.sol":{"keccak256":"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5","urls":["bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516","dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi"],"license":"MIT"},"src/interfaces/delegator/IBaseDelegator.sol":{"keccak256":"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee","urls":["bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2","dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8"],"license":"MIT"},"src/interfaces/delegator/IDelegatorHook.sol":{"keccak256":"0xc51aa8d7d1f6c8043ee819b7aeb86da0e993912e1442098df897e299f01f9f46","urls":["bzz-raw://adddf5cb2ba282aeb576b26efb28640f865a1721cc9b6eee8b3ee0457a2c9780","dweb:/ipfs/QmNYgAmnLRwWZbhTuQhZs9rx4zcme1df5mEepkrniorSoW"],"license":"MIT"},"src/interfaces/delegator/IFullRestakeDelegator.sol":{"keccak256":"0xa3c8cb2e45d4d8ce90e95263bea40c01dc400f05ad65bc29597d878606be5e7d","urls":["bzz-raw://782cf5e201aa4cca037ebafd3807a68ff1cc721d5b8416a35244db0d0607369e","dweb:/ipfs/QmQkJks6x7CKndeTPa9LxgTNygD5uEi7obhADhpq1Lsr9A"],"license":"MIT"},"src/interfaces/delegator/INetworkRestakeDelegator.sol":{"keccak256":"0xe7030fe30389a147fd710e3436ec346b4842695fd3e65a81b95375c9f1d633fc","urls":["bzz-raw://739c7e66d301778054f5c90bee45ec9438f68afba8a03eaaac52064c73b115ad","dweb:/ipfs/QmfZ2ytKcTykAc76nxhg8ikUXV8NdBpetqb8W4YWPcox1Z"],"license":"MIT"},"src/interfaces/delegator/IOperatorNetworkSpecificDelegator.sol":{"keccak256":"0x74b95e64d29769202d45dd277bb830f623ff3d41ce77b80ce3ee4e318a5c71ec","urls":["bzz-raw://e512b903aae5c1b8a028c6e3f4f6223b5cb5d704503cfa6bd37b5346868f5c20","dweb:/ipfs/QmZim9YExsPWtyxyeui993HTKAEmrg8MUcSkZ77Gp2JcuZ"],"license":"MIT"},"src/interfaces/delegator/IOperatorSpecificDelegator.sol":{"keccak256":"0x72075cab585dc17240cc3e32bc99b92f0d5627ddd988fed680e3e1a52d5a01e4","urls":["bzz-raw://7448bc90699409ae61d85216b5efc2143a37f0f73354be2aea993bc54afca441","dweb:/ipfs/QmXE4gAxM8pHosZK8mcTcj17puBx484meDCcmrDePskGHZ"],"license":"MIT"},"src/interfaces/service/IOptInService.sol":{"keccak256":"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a","urls":["bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337","dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24"],"license":"MIT"},"src/interfaces/slasher/IBaseSlasher.sol":{"keccak256":"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404","urls":["bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf","dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx"],"license":"MIT"},"src/interfaces/vault/IVault.sol":{"keccak256":"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235","urls":["bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9","dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R"],"license":"MIT"},"src/interfaces/vault/IVaultStorage.sol":{"keccak256":"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22","urls":["bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e","dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6"],"license":"MIT"}},"version":1},"id":88} \ No newline at end of file diff --git a/out/DelegatorHints.sol/FullRestakeDelegatorHints.json b/out/DelegatorHints.sol/FullRestakeDelegatorHints.json index 6f78b64a..ec7eb5e8 100644 --- a/out/DelegatorHints.sol/FullRestakeDelegatorHints.json +++ b/out/DelegatorHints.sol/FullRestakeDelegatorHints.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"baseDelegatorHints","type":"address","internalType":"address"},{"name":"vaultHints","type":"address","internalType":"address"},{"name":"optInServiceHints","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"BASE_DELEGATOR_HINTS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"HOOK_GAS_LIMIT","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"HOOK_RESERVE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"HOOK_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"NETWORK_LIMIT_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"NETWORK_REGISTRY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_NETWORK_LIMIT_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_NETWORK_OPT_IN_SERVICE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_VAULT_OPT_IN_SERVICE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"OPT_IN_SERVICE_HINTS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"TYPE","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"VAULT_FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"VAULT_HINTS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"VERSION","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"pure"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"hook","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"maxNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"networkLimit","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"networkLimitAt","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"networkLimitHint","inputs":[{"name":"delegator","type":"address","internalType":"address"},{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"networkLimitHintInternal","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"exists","type":"bool","internalType":"bool"},{"name":"hint","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"onSlash","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","internalType":"uint48"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"operatorNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"operatorNetworkLimitAt","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"operatorNetworkLimitHint","inputs":[{"name":"delegator","type":"address","internalType":"address"},{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"operatorNetworkLimitHintInternal","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"exists","type":"bool","internalType":"bool"},{"name":"hint","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setHook","inputs":[{"name":"hook_","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMaxNetworkLimit","inputs":[{"name":"identifier","type":"uint96","internalType":"uint96"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOperatorNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stake","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"stakeAt","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hints","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"stakeHints","inputs":[{"name":"delegator","type":"address","internalType":"address"},{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"staticDelegateCall","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"vault","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OnSlash","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","indexed":false,"internalType":"uint48"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SetHook","inputs":[{"name":"hook","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SetMaxNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SetNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SetOperatorNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"AlreadySet","inputs":[]},{"type":"error","name":"CheckpointUnorderedInsertion","inputs":[]},{"type":"error","name":"DuplicateRoleHolder","inputs":[]},{"type":"error","name":"ExceedsMaxNetworkLimit","inputs":[]},{"type":"error","name":"ExternalCall","inputs":[]},{"type":"error","name":"InsufficientHookGas","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"MissingRoleHolders","inputs":[]},{"type":"error","name":"NotInitialized","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"NotNetwork","inputs":[]},{"type":"error","name":"NotSlasher","inputs":[]},{"type":"error","name":"NotVault","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ZeroAddressRoleHolder","inputs":[]}],"bytecode":{"object":"0x6101c0346101c857601f6135d938819003918201601f19168301916001600160401b0391828411858510176101cc5781606092869260409687528339810103126101c85761004c836101e0565b926100648361005d602084016101e0565b92016101e0565b91306080527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff82871c166101b7578080831603610173575b5050505f60a0525f60c0525f60e052610100935f8552610120935f8552610140905f82526101609283526101809384526101a094855251946133e496876101f58839608051878181610696015261148c015260a0518761092d015260c0518761114b015260e0518781816107a101526111840152518681816104e2015261266601525185818161064c01528181611be00152611d0f01525184818161071f01528181611b470152611d8d015251838181610ebc015261179a015251828181610c8f015261183b0152518161104f0152f35b6001600160401b0319909116811790915583519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80806100a2565b855163f92ee8a960e01b8152600490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101c85756fe60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a7146102c4578063020cf0c2146102bf57806302145348146102ba578063103f2907146102b557806310a28b5d146102b057806311422095146102ab578063128e5d82146102a6578063197aa7ea146102a15780631a80e5001461029c57806323f752d514610297578063248a9ca31461029257806325dc97081461028d5780632dd31000146102885780632f2ff15d1461028357806336568abe1461027e5780633dfd3873146102795780633eb22c0f14610274578063439fab911461026f57806345e78fcb1461026a578063518504ba14610265578063557cab44146102605780635d32a1c91461025b5780636679191e1461025657806379d89614146102515780637d24bb271461024c5780637f5a7c7b1461024757806391d148541461024257806394d2558a1461023d5780639b656b22146102385780639f86fd8514610233578063a217fddf1461022e578063bb24fe8a14610229578063c0cd7c3e14610224578063d15b740e1461021f578063d547741f1461021a578063da749d2b14610215578063e02f693714610210578063e49561ee1461020b578063f7b0554714610206578063fbfa77cf14610201578063fd4d447c146101fc578063ff54740f146101f75763ffa1ad74146101f2575f80fd5b611557565b61153a565b611510565b6114e9565b611465565b61127a565b61125e565b611229565b6111dd565b6111b3565b61116f565b61112c565b611112565b61107e565b61103a565b610ffc565b610f4c565b610f24565b610eeb565b610ea7565b610e6d565b610e1c565b610cf8565b610cbe565b610c7a565b610b42565b610aec565b6109f3565b6109a8565b61095c565b610918565b6108fb565b6108c2565b61074e565b61070a565b61067b565b610637565b6105e8565b6105b3565b6104cd565b610410565b61032f565b3461031a57602036600319011261031a5760043563ffffffff60e01b811680910361031a57602090637965db0b60e01b8114908115610309575b506040519015158152f35b6301ffc9a760e01b1490505f6102fe565b5f80fd5b6001600160a01b0381160361031a57565b3461031a57606036600319011261031a5760243560043561034f8261031e565b6044359161035b611e02565b815f526004602052826103896103848360405f209060018060a01b03165f5260205260405f2090565b6120b3565b146103fe5760207ffc9545f07ffadfb668efd0144cdcaf2d6e2c8192dce1ea9fc131934f9c90fc7e91835f52600482526103e9856103da8360405f209060018060a01b03165f5260205260405f2090565b6103e342612b0e565b90611f58565b50506040519485526001600160a01b031693a3005b60405163a741a04560e01b8152600490fd5b3461031a5760408060031936011261031a576004359060243590610432611e5f565b825f526002602052805f205482116104bd57825f52600360205281610458825f206120b3565b146104ad57816104a8916104987e899d104fc3d8820bd96540612bcc5c448c8837b13b9f7faa43ad0728f0c14f946103da875f52600360205260405f2090565b5050519081529081906020820190565b0390a2005b5163a741a04560e01b8152600490fd5b51631eefc06360e31b8152600490fd5b3461031a575f36600319011261031a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6024359065ffffffffffff8216820361031a57565b6044359065ffffffffffff8216820361031a57565b6064359065ffffffffffff8216820361031a57565b608090600319011261031a576004356105688161031e565b90602435906044356105798161031e565b9060643565ffffffffffff8116810361031a5790565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b3461031a576105e46105d06105c736610550565b929190916115b1565b60405191829160208352602083019061058f565b0390f35b3461031a57604036600319011261031a57602061062f61038460243561060d8161031e565b6004355f526004845260405f209060018060a01b03165f5260205260405f2090565b604051908152f35b3461031a575f36600319011261031a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461031a57604036600319011261031a57610694610511565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036106f8576106db906004355f52600360205260405f20612124565b60408051941515855263ffffffff91909116602085015292915050f35b604051637ca475e560e11b8152600490fd5b3461031a575f36600319011261031a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461031a57604036600319011261031a576004356001600160601b038116810361031a576024359061077e612229565b6040516302910f8b60e31b81523360048201526020816024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa9081156108bd575f9161088e575b501561087c576001600160601b03166bffffffffffffffffffffffff193360601b16179080610808835f52600260205260405f2090565b54146103fe57610861817fc67e7929681aa1bccd63f52b3799bf5805f3009f197db6fdf584b14f7fbf608c92610846855f52600260205260405f2090565b556108518185612258565b6040519081529081906020820190565b0390a261087a60015f8051602061336f83398151915255565b005b6040516323d53b9760e21b8152600490fd5b6108b0915060203d6020116108b6575b6108a88183610d7e565b810190611649565b5f6107d1565b503d61089e565b61165d565b3461031a57602036600319011261031a576004355f525f8051602061334f8339815191526020526020600160405f200154604051908152f35b3461031a576105e46105d061090f36610550565b9291909161174e565b3461031a575f36600319011261031a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461031a57604036600319011261031a5761087a60243560043561097f8261031e565b805f525f8051602061334f8339815191526020526109a3600160405f200154611eb5565b612533565b3461031a57604036600319011261031a576024356109c58161031e565b336001600160a01b038216036109e15761087a90600435612569565b60405163334bd91960e11b8152600490fd5b3461031a57602036600319011261031a57600435610a108161031e565b610a18612229565b335f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c60205260409020547fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c9060ff1615610ace57506001546001600160a01b0391821691811682146103fe576001600160a01b03191681176001557f5bbb1d3ebb6a3ad2a0f17ff35e579a83af60604d1d3c2a4c83c62adecadf666d5f80a260015f8051602061336f83398151915255005b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b3461031a57602036600319011261031a576004355f526003602052602061062f60405f206120b3565b9181601f8401121561031a578235916001600160401b03831161031a576020838186019501011161031a57565b3461031a57602036600319011261031a576001600160401b0360043581811161031a57610b73903690600401610b15565b5f8051602061338f833981519152549260ff8460401c1615931680159081610c72575b6001149081610c68575b159081610c5f575b50610c4d575f8051602061338f833981519152805467ffffffffffffffff19166001179055610bdb9183610c2957612631565b610be157005b5f8051602061338f833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f8051602061338f833981519152805460ff60401b1916600160401b179055612631565b60405163f92ee8a960e01b8152600490fd5b9050155f610ba8565b303b159150610ba0565b849150610b96565b3461031a575f36600319011261031a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461031a575f36600319011261031a5760206040517f15e7c882d74e8821ebf34aaff46fd0e1d53b9393d91490019124113d28dc32a38152f35b3461031a575f36600319011261031a576020604051614e208152f35b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b03821117610d4357604052565b610d14565b606081019081106001600160401b03821117610d4357604052565b608081019081106001600160401b03821117610d4357604052565b90601f801991011681019081106001600160401b03821117610d4357604052565b60405190610dac82610d63565b565b60405190610dac82610d28565b6001600160401b038111610d4357601f01601f191660200190565b81601f8201121561031a57803590610ded82610dbb565b92610dfb6040519485610d7e565b8284526020838301011161031a57815f926020809301838601378301015290565b3461031a57606036600319011261031a57610e35610511565b6044356001600160401b03811161031a57602091610e5a61062f923690600401610dd6565b906004355f526003845260405f20612798565b3461031a575f36600319011261031a5760206040517fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c8152f35b3461031a575f36600319011261031a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461031a575f36600319011261031a5760206040517e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf8152f35b3461031a575f36600319011261031a576001546040516001600160a01b039091168152602090f35b3461031a57604036600319011261031a57602060ff610f9e602435610f708161031e565b6004355f525f8051602061334f833981519152845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b90608060031983011261031a5760043591602435610fc78161031e565b9160443565ffffffffffff8116810361031a5791606435906001600160401b03821161031a57610ff991600401610dd6565b90565b3461031a57602061062f61103561101236610faa565b939190925f526004865260405f209060018060a01b03165f5260205260405f2090565b612798565b3461031a575f36600319011261031a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461031a57604036600319011261031a5760043561109b8161031e565b6024356001600160401b03811161031a575f916110bd83923690600401610b15565b90816040519283928337810184815203915af461110a6110db6119a3565b916110fc60405193849215156020840152604080840152606083019061058f565b03601f198101835282610d7e565b805190602001fd5b3461031a575f36600319011261031a5760206040515f8152f35b3461031a575f36600319011261031a5760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461031a575f36600319011261031a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461031a57602036600319011261031a576004355f526002602052602060405f2054604051908152f35b3461031a57604036600319011261031a5761087a6024356004356112008261031e565b805f525f8051602061334f833981519152602052611224600160405f200154611eb5565b612569565b3461031a57606036600319011261031a576105e46105d060043561124c8161031e565b611254610526565b90602435906119d2565b3461031a57602061062f61127136610faa565b92919091611ad1565b3461031a5760a036600319011261031a5760243560043561129a8261031e565b604435916112a661053b565b90608435906001600160401b03821161031a576112c860049236908401610dd6565b6112d0612229565b5f546020906112f5906112e9906001600160a01b031681565b6001600160a01b031690565b60405163b134427160e01b815294859182905afa9283156108bd575f93611434575b506001600160a01b039283163303611422576001546001600160a01b0316838116611397575b50506040805195865265ffffffffffff909316602086015216927f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed91819081015b0390a361087a60015f8051602061336f83398151915255565b9093604051946113ce866113c0602082019363724ab0f760e11b8552858c898d60248701611c5b565b03601f198101885287610d7e565b62042e305a10611410575f61137e938192827f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed9951926203d090f1509361133d565b604051638072475160e01b8152600490fd5b60405163dabc4ad960e01b8152600490fd5b61145791935060203d60201161145e575b61144f8183610d7e565b8101906116d3565b915f611317565b503d611445565b3461031a57606036600319011261031a576024356114828161031e565b61148a610526565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036106f8576114e46106db926004355f52600460205260405f209060018060a01b03165f5260205260405f2090565b612124565b3461031a575f36600319011261031a575f546040516001600160a01b039091168152602090f35b3461031a57604036600319011261031a57602061062f6024356115328161031e565b600435611cd8565b3461031a575f36600319011261031a5760206040516203d0908152f35b3461031a575f36600319011261031a57602060405160018152f35b5190811515820361031a57565b519063ffffffff8216820361031a57565b919082604091031261031a57610ff960206115aa84611572565b930161157f565b91939265ffffffffffff906060956040519363f7b0554760e01b6020860152602485015260018060a01b031660448401521660648201526064815260a08101908082106001600160401b03831117610d4357611622926116139260405261201a565b60208082518301019101611590565b9061162a5750565b90915063ffffffff6040519116602082015260208152610ff981610d28565b9081602091031261031a57610ff990611572565b6040513d5f823e3d90fd5b81601f8201121561031a5780519061167f82610dbb565b9261168d6040519485610d7e565b8284526020838301011161031a57815f9260208093018386015e8301015290565b9060208282031261031a5781516001600160401b03811161031a57610ff99201611668565b9081602091031261031a5751610ff98161031e565b90610ff9916020815261170782516080602084015260a083019061058f565b906080606061173e61172b602087015195601f19968787830301604088015261058f565b604087015186868303018487015261058f565b940151928285030191015261058f565b604051630df8851f60e11b81526001600160a01b03828116600483015260248201849052848116604483015265ffffffffffff8616606483015295606095909491939091905f856084817f00000000000000000000000000000000000000000000000000000000000000008c165afa9485156108bd575f95611945575b5060405163fbfa77cf60e01b8152602081600481888d165afa9081156108bd57611837995f9286928491611926575b5060405163192c0ff760e21b81526001600160a01b03909116600482015265ffffffffffff909216602483015290998a9190829081906044820190565b03917f0000000000000000000000000000000000000000000000000000000000000000165afa9788156108bd575f986118fa575b50908161187d846118839594876119d2565b946115b1565b908251158015906118f0575b80156118e6575b80156118dc575b6118a957505050909150565b6110fc9450610ff993956118bb610d9f565b938452602084015260408301526060820152604051928391602083016116e8565b508151151561189d565b5080511515611896565b508551151561188f565b611883939291985061191d903d805f833e6119158183610d7e565b8101906116ae565b9790919261186b565b61193f915060203d60201161145e5761144f8183610d7e565b5f6117fa565b61195a9195503d805f833e6119158183610d7e565b935f6117cb565b90610ff992915f52600360205260405f20612798565b5f9081526004602090815260408083206001600160a01b03909416835292905220610ff9929190612798565b3d156119cd573d906119b482610dbb565b916119c26040519384610d7e565b82523d5f602084013e565b606090565b611622916116139194939465ffffffffffff60609660405193630cbd53f560e11b6020860152602485015216604483015260448252611a1082610d63565b61201a565b60405190611a2282610d28565b60606020838281520152565b9060208282031261031a5781516001600160401b039283821161031a57019060408282031261031a5760405192611a6484610d28565b825181811161031a5782611a79918501611668565b8452602083015190811161031a57611a919201611668565b602082015290565b6001600160a01b0391821681529116602082015265ffffffffffff9091166040820152608060608201819052610ff99291019061058f565b92611ae190929192828486612973565b929093611aec611a15565b93805180611c3f575b50508415938415611ba9575b8415611b18575b50505050611b135790565b505f90565b602080949550611b43910151604051958694859463530e1d4360e01b865260601c9060048601611a99565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156108bd575f91611b8a575b50155f808080611b08565b611ba3915060203d6020116108b6576108a88183610d7e565b5f611b7f565b5f549094506001600160a01b0316602084865192611bdc604051948593849363530e1d4360e01b85528960048601611a99565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156108bd575f91611c20575b501593611b01565b611c39915060203d6020116108b6576108a88183610d7e565b5f611c18565b611c53929550602080918301019101611a2e565b925f80611af5565b919360a093610ff9969565ffffffffffff938552600180871b031660208501526040840152166060820152816080820152019061058f565b634e487b7160e01b5f52601160045260245ffd5b8115611cb1570490565b634e487b7160e01b5f52601260045260245ffd5b9060018201809211611cd357565b611c93565b5f546040516308834cb560e21b8082526001600160a01b0385811660048401529283166024830152929392602092909183816044817f000000000000000000000000000000000000000000000000000000000000000086165afa9081156108bd575f91611de5575b5015918215611d61575b50509050611d5b57610ff991612a68565b50505f90565b6040519081526001600160a01b0385166004820152606086901c602482015291508290829060449082907f0000000000000000000000000000000000000000000000000000000000000000165afa9182156108bd575f92611dc8575b505015805f80611d4a565b611dde9250803d106108b6576108a88183610d7e565b5f80611dbd565b611dfc9150843d86116108b6576108a88183610d7e565b5f611d40565b335f9081527f24e48de785eeca8420b70f73d267a66970ccc187d459f2a4b53e74ed92a5ab86602052604090207f15e7c882d74e8821ebf34aaff46fd0e1d53b9393d91490019124113d28dc32a39060ff905b541615610ace5750565b335f9081527f72a65082a5691803ab2b62c9bc729b34205ba1b183d950896526b2fd8714d0c7602052604090207e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf9060ff90611e55565b5f8181525f8051602061334f83398151915260209081526040808320338452909152902060ff90611e55565b634e487b7160e01b5f52603260045260245ffd5b8054821015611f0a575f5260205f2001905f90565b611ee1565b90815491600160401b831015610d435782611f32916001610dac95018155611ef5565b90919082549060031b91821b915f19901b1916179055565b5f19810191908211611cd357565b90929192600182019081548015611fea575b5084611f7584612b40565b50949092845493611f85836120b3565b9681611fd5575b5015611fb2575050505f198101908111611cd357611f328591611fae93611ef5565b9190565b611fae949293611fce926001600160d01b03909116919061319e565b5050611f0f565b65ffffffffffff83811691161490505f611f8c565b600160401b811015610d43578060016120069201845583611ef5565b8154905f199060031b1b191690555f611f6a565b5f9190829160405161204f816110fc6020820194639f86fd8560e01b865230602484015260406044840152606483019061058f565b51915afa5061205c6119a3565b8051810160408282031261031a5761207660208301611572565b916040810151916001600160401b03831161031a5761209c926020809201920101611668565b90156120a55790565b805190811561031a57602001fd5b8054806120e257505f5b6001600160d01b03811615611d5b5760016120d89201611ef5565b90549060031b1c90565b5f19908082810111611cd357825f5260205f2001015460301c6120bd565b9060405161210d81610d28565b915465ffffffffffff8116835260301c6020830152565b91908254905f8291600584116121c2575b612140935085612cc2565b9081156121b6576121af6121a66121a06120d861217261216d61216288611f4a565b895f5260205f200190565b612100565b966001612199602061218a8b5165ffffffffffff1690565b9a01516001600160d01b031690565b9101611ef5565b93611f4a565b63ffffffff1690565b6001939291565b5f925082915081908190565b91926121cd81612b8f565b8103908111611cd35761214093865f526122016121f68360205f200165ffffffffffff90541690565b65ffffffffffff1690565b65ffffffffffff85161015612217575091612135565b92915061222390611cc5565b90612135565b5f8051602061336f83398151915260028154146122465760029055565b604051633ee5aeb560e01b8152600490fd5b90815f52600360205260405f208161226f82612b40565b9193905083156122cd5761228f916001600160d01b031690600101611ef5565b90549060031b1c5b826122c3575b50506122a7575050565b6122bf915f52600360205260405f206103e342612b0e565b5050565b119050815f61229d565b50505f612297565b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260409020545f8051602061334f8339815191529060ff16611d5b575f808052602091825260408082206001600160a01b038516835290925220805460ff1916600117905533906001600160a01b03165f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b6001600160a01b0381165f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c602052604090207fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c905f8051602061334f8339815191529060ff905b541661244f575f828152602091825260408082206001600160a01b038616835290925220805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b5050505f90565b6001600160a01b0381165f9081527f72a65082a5691803ab2b62c9bc729b34205ba1b183d950896526b2fd8714d0c7602052604090207e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf905f8051602061334f8339815191529060ff906123eb565b6001600160a01b0381165f9081527f24e48de785eeca8420b70f73d267a66970ccc187d459f2a4b53e74ed92a5ab86602052604090207f15e7c882d74e8821ebf34aaff46fd0e1d53b9393d91490019124113d28dc32a3905f8051602061334f8339815191529060ff906123eb565b5f8181525f8051602061334f833981519152602081815260408084206001600160a01b038716855290915290912060ff906123eb565b5f8181525f8051602061334f833981519152602081815260408084206001600160a01b03871685529091529091205460ff161561244f575f828152602091825260408082206001600160a01b038616835290925220805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b91909160408184031261031a5780356126138161031e565b9260208201356001600160401b03811161031a57610ff99201610dd6565b61263d918101906125fb565b6040516302910f8b60e31b81526001600160a01b039283166004820181905291906020816024817f000000000000000000000000000000000000000000000000000000000000000088165afa9081156108bd575f91612750575b501561273e576126d26040916126cd612718946126b2612d19565b60018060a01b03166001600160601b0360a01b5f5416175f55565b612e99565b6020810151600180546001600160a01b0319166001600160a01b0390921691909117905580516001600160a01b031684811661272e575b5001516001600160a01b031690565b9081166127225750565b61272b90612380565b50565b612737906122d5565b505f612709565b6040516362df054560e01b8152600490fd5b612769915060203d6020116108b6576108a88183610d7e565b5f612697565b9081602091031261031a57610ff99061157f565b90600163ffffffff80931601918211611cd357565b9180511561286657806020806127b39351830101910161276f565b916127be83826130c9565b926127cf845165ffffffffffff1690565b9065ffffffffffff808516921682811461285a5782119182612805575b50506127fc57610ff99250612ff9565b50506020015190565b9091506128128354611f4a565b63ffffffff83161491821561282b575b50505f806127ec565b6128529192506128466128406121f692612783565b856130c9565b5165ffffffffffff1690565b115f80612822565b50505050506020015190565b50610ff991612ff9565b60405190608082018281106001600160401b03821117610d4357604052606080838181528160208201528160408201520152565b9060208282031261031a5781516001600160401b039283821161031a57019060808282031261031a576128d5610d9f565b92825181811161031a57826128eb918501611668565b8452602083015181811161031a5782612905918501611668565b6020850152604083015181811161031a5782612922918501611668565b6040850152606083015190811161031a5761293d9201611668565b606082015290565b9081602091031261031a575190565b60409065ffffffffffff610ff99493168152816020820152019061058f565b9391909361297f612870565b93805180612a48575b50506129c992939460206129a86112e96112e95f5460018060a01b031690565b8188015190604051808098819463810da75d60e01b83528960048401612954565b03915afa9182156108bd57612a0a945f93612a0f575b50612a0490612a0493946129f860408a01518284611961565b9360608a015192611977565b90613131565b915190565b612a04935090612a39612a049260203d602011612a41575b612a318183610d7e565b810190612945565b9350906129df565b503d612a27565b6129c994955090602080612a609383010191016128a4565b93925f612988565b5f5460405163bd49c35f60e01b8152929190602090849060049082906001600160a01b03165afa9081156108bd57610ff9935f92612ae3575b50612a04610384612a049394612ac2610384855f52600360205260405f2090565b935f52600460205260405f209060018060a01b03165f5260205260405f2090565b612a049250610384612b06612a049260203d602011612a4157612a318183610d7e565b935050612aa1565b65ffffffffffff90818111612b21571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b805480612b515750505f905f905f90565b5f19908082810111611cd357612b6e925f5260205f200101612100565b9065ffffffffffff82511691602060018060d01b0391015116906001929190565b8015611b135780612a04612c5a612c50612c46612c3c612c32612c28612c1e6001610ff99a5f908b60801c80612cb6575b508060401c80612ca9575b508060201c80612c9c575b508060101c80612c8f575b508060081c80612c82575b508060041c80612c75575b508060021c80612c68575b50821c612c61575b811c1b612c17818b611ca7565b0160011c90565b612c17818a611ca7565b612c178189611ca7565b612c178188611ca7565b612c178187611ca7565b612c178186611ca7565b612c178185611ca7565b8092611ca7565b8101612c0a565b600291509101905f612c02565b600491509101905f612bf7565b600891509101905f612bec565b601091509101905f612be1565b602091509101905f612bd6565b604091509101905f612bcb565b9150506080905f612bc0565b905b838310612cd15750505090565b909192612cde81856132b4565b90835f5265ffffffffffff808360205f20015416908416105f14612d065750925b9190612cc4565b93506001810180911115612cff57611c93565b612d216132c9565b612d296132c9565b60015f8051602061336f83398151915255565b60405190612d4982610d48565b5f6040838281528260208201520152565b81601f8201121561031a578051916020916001600160401b038411610d43578360051b9060405194612d8e85840187610d7e565b8552838086019282010192831161031a578301905b828210612db1575050505090565b8380918351612dbf8161031e565b815201910190612da3565b9060208282031261031a5781516001600160401b039283821161031a5701908181039260a0841261031a57606060405194612e0486610d48565b1261031a57604051612e1581610d48565b8351612e208161031e565b81526020840151612e308161031e565b60208201526040840151612e438161031e565b60408201528452606083015181811161031a5782612e62918501612d5a565b6020850152608083015190811161031a57612e7d9201612d5a565b604082015290565b8051821015611f0a5760209160051b010190565b612eb590612ea5612d3c565b5060208082518301019101612dca565b8051519091906001600160a01b03161580612fdf575b612fcd579060208101905f5b82518051821015612f51576112e9612ef283612eff93612e85565b516001600160a01b031690565b15612f3f57612f21612f1d612f18612ef2848751612e85565b612456565b1590565b612f2d57600101612ed7565b604051635140fefd60e11b8152600490fd5b6040516323cda06760e01b8152600490fd5b506040925050818101905f5b82518051821015612fc4576112e9612ef283612f7893612e85565b15612fb357612f96612f1d612f91612ef2848751612e85565b6124c4565b612fa257600101612f5d565b8351635140fefd60e11b8152600490fd5b83516323cda06760e01b8152600490fd5b50509150505190565b6040516303501f5960e11b8152600490fd5b506020820151511580612ecb575060408201515115612ecb565b908154905f829160058411613063575b6130149350846132f7565b8061303c57505f905b6001600160d01b03821615611d5b57610ff99160016120d89201611ef5565b61305661304b61305d92611f4a565b835f5260205f200190565b5460301c90565b9061301d565b919261306e81612b8f565b8103908111611cd35761301493855f5265ffffffffffff808360205f20015416908516105f1461309f575091613009565b9291506130ab90611cc5565b90613009565b604051906130be82610d28565b5f6020838281520152565b906130f26130ec613113926130dc6130b1565b506130e56130b1565b5084611ef5565b50612100565b91600165ffffffffffff845116936020828060d01b03910151169101611ef5565b9054906040519261312384610d28565b835260031b1c602082015290565b908082101561313e575090565b905090565b8054600160401b811015610d435761316091600182018155611ef5565b61318b57815160209092015160301b65ffffffffffff191665ffffffffffff92909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b80549293929190821561328b576131ba61216d61304b85611f4a565b906131cb825165ffffffffffff1690565b65ffffffffffff8481169116811061327957611fae9460209488926131f96121f6875165ffffffffffff1690565b0361324157506132339261320f61321a92611f4a565b905f5260205f200190565b9065ffffffffffff82549181199060301b169116179055565b01516001600160d01b031690565b91505061327491613261613253610dae565b65ffffffffffff9093168352565b6001600160d01b03881682860152613143565b613233565b604051632520601d60e01b8152600490fd5b6132af925061329b613253610dae565b6001600160d01b0385166020830152613143565b5f9190565b90808216911860011c8101809111611cd35790565b60ff5f8051602061338f8339815191525460401c16156132e557565b604051631afcd79f60e31b8152600490fd5b905b8383106133065750505090565b90919261331381856132b4565b90835f5265ffffffffffff808360205f20015416908416105f1461333b5750925b91906132f9565b9350600181018091111561333457611c9356fe02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220a114ef0ff5b29e345fe4269ee0528960ae4a86d65f802fa8e154dd6b83a6427064736f6c63430008190033","sourceMap":"7866:3473:81:-:0;;;;;;;;;;;;;-1:-1:-1;;7866:3473:81;;;;-1:-1:-1;;;;;7866:3473:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;348:4:82;;332:21;;8837:64:25;7866:3473:81;;;;;;;;;7896:76:25;;7866:3473:81;;;;7985:34:25;7981:146;;-1:-1:-1;525:17:69;;;-1:-1:-1;525:17:69;;-1:-1:-1;552:12:69;;-1:-1:-1;2360:34:76;;2404:28;;-1:-1:-1;2404:28:76;;2442:57;;-1:-1:-1;2442:57:76;;2509:61;;-1:-1:-1;2509:61:76;;8343:41:81;;;;8394:24;;;;8428:40;;;;7866:3473;;;;;;;;332:21:82;7866:3473:81;;;;;;;;;;525:17:69;7866:3473:81;;;;;552:12:69;7866:3473:81;;;;;2360:34:76;7866:3473:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7981:146:25;-1:-1:-1;;;;;;7866:3473:81;;;;;;;;;;;;;8087:29:25;;7866:3473:81;;8087:29:25;7981:146;;;;;7896:76;7866:3473:81;;-1:-1:-1;;;7938:23:25;;;;;7866:3473:81;-1:-1:-1;7866:3473:81;;;;;;-1:-1:-1;7866:3473:81;;;;;-1:-1:-1;7866:3473:81;;;;-1:-1:-1;;;;;7866:3473:81;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a7146102c4578063020cf0c2146102bf57806302145348146102ba578063103f2907146102b557806310a28b5d146102b057806311422095146102ab578063128e5d82146102a6578063197aa7ea146102a15780631a80e5001461029c57806323f752d514610297578063248a9ca31461029257806325dc97081461028d5780632dd31000146102885780632f2ff15d1461028357806336568abe1461027e5780633dfd3873146102795780633eb22c0f14610274578063439fab911461026f57806345e78fcb1461026a578063518504ba14610265578063557cab44146102605780635d32a1c91461025b5780636679191e1461025657806379d89614146102515780637d24bb271461024c5780637f5a7c7b1461024757806391d148541461024257806394d2558a1461023d5780639b656b22146102385780639f86fd8514610233578063a217fddf1461022e578063bb24fe8a14610229578063c0cd7c3e14610224578063d15b740e1461021f578063d547741f1461021a578063da749d2b14610215578063e02f693714610210578063e49561ee1461020b578063f7b0554714610206578063fbfa77cf14610201578063fd4d447c146101fc578063ff54740f146101f75763ffa1ad74146101f2575f80fd5b611557565b61153a565b611510565b6114e9565b611465565b61127a565b61125e565b611229565b6111dd565b6111b3565b61116f565b61112c565b611112565b61107e565b61103a565b610ffc565b610f4c565b610f24565b610eeb565b610ea7565b610e6d565b610e1c565b610cf8565b610cbe565b610c7a565b610b42565b610aec565b6109f3565b6109a8565b61095c565b610918565b6108fb565b6108c2565b61074e565b61070a565b61067b565b610637565b6105e8565b6105b3565b6104cd565b610410565b61032f565b3461031a57602036600319011261031a5760043563ffffffff60e01b811680910361031a57602090637965db0b60e01b8114908115610309575b506040519015158152f35b6301ffc9a760e01b1490505f6102fe565b5f80fd5b6001600160a01b0381160361031a57565b3461031a57606036600319011261031a5760243560043561034f8261031e565b6044359161035b611e02565b815f526004602052826103896103848360405f209060018060a01b03165f5260205260405f2090565b6120b3565b146103fe5760207ffc9545f07ffadfb668efd0144cdcaf2d6e2c8192dce1ea9fc131934f9c90fc7e91835f52600482526103e9856103da8360405f209060018060a01b03165f5260205260405f2090565b6103e342612b0e565b90611f58565b50506040519485526001600160a01b031693a3005b60405163a741a04560e01b8152600490fd5b3461031a5760408060031936011261031a576004359060243590610432611e5f565b825f526002602052805f205482116104bd57825f52600360205281610458825f206120b3565b146104ad57816104a8916104987e899d104fc3d8820bd96540612bcc5c448c8837b13b9f7faa43ad0728f0c14f946103da875f52600360205260405f2090565b5050519081529081906020820190565b0390a2005b5163a741a04560e01b8152600490fd5b51631eefc06360e31b8152600490fd5b3461031a575f36600319011261031a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6024359065ffffffffffff8216820361031a57565b6044359065ffffffffffff8216820361031a57565b6064359065ffffffffffff8216820361031a57565b608090600319011261031a576004356105688161031e565b90602435906044356105798161031e565b9060643565ffffffffffff8116810361031a5790565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b3461031a576105e46105d06105c736610550565b929190916115b1565b60405191829160208352602083019061058f565b0390f35b3461031a57604036600319011261031a57602061062f61038460243561060d8161031e565b6004355f526004845260405f209060018060a01b03165f5260205260405f2090565b604051908152f35b3461031a575f36600319011261031a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461031a57604036600319011261031a57610694610511565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036106f8576106db906004355f52600360205260405f20612124565b60408051941515855263ffffffff91909116602085015292915050f35b604051637ca475e560e11b8152600490fd5b3461031a575f36600319011261031a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461031a57604036600319011261031a576004356001600160601b038116810361031a576024359061077e612229565b6040516302910f8b60e31b81523360048201526020816024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa9081156108bd575f9161088e575b501561087c576001600160601b03166bffffffffffffffffffffffff193360601b16179080610808835f52600260205260405f2090565b54146103fe57610861817fc67e7929681aa1bccd63f52b3799bf5805f3009f197db6fdf584b14f7fbf608c92610846855f52600260205260405f2090565b556108518185612258565b6040519081529081906020820190565b0390a261087a60015f8051602061336f83398151915255565b005b6040516323d53b9760e21b8152600490fd5b6108b0915060203d6020116108b6575b6108a88183610d7e565b810190611649565b5f6107d1565b503d61089e565b61165d565b3461031a57602036600319011261031a576004355f525f8051602061334f8339815191526020526020600160405f200154604051908152f35b3461031a576105e46105d061090f36610550565b9291909161174e565b3461031a575f36600319011261031a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461031a57604036600319011261031a5761087a60243560043561097f8261031e565b805f525f8051602061334f8339815191526020526109a3600160405f200154611eb5565b612533565b3461031a57604036600319011261031a576024356109c58161031e565b336001600160a01b038216036109e15761087a90600435612569565b60405163334bd91960e11b8152600490fd5b3461031a57602036600319011261031a57600435610a108161031e565b610a18612229565b335f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c60205260409020547fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c9060ff1615610ace57506001546001600160a01b0391821691811682146103fe576001600160a01b03191681176001557f5bbb1d3ebb6a3ad2a0f17ff35e579a83af60604d1d3c2a4c83c62adecadf666d5f80a260015f8051602061336f83398151915255005b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b3461031a57602036600319011261031a576004355f526003602052602061062f60405f206120b3565b9181601f8401121561031a578235916001600160401b03831161031a576020838186019501011161031a57565b3461031a57602036600319011261031a576001600160401b0360043581811161031a57610b73903690600401610b15565b5f8051602061338f833981519152549260ff8460401c1615931680159081610c72575b6001149081610c68575b159081610c5f575b50610c4d575f8051602061338f833981519152805467ffffffffffffffff19166001179055610bdb9183610c2957612631565b610be157005b5f8051602061338f833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f8051602061338f833981519152805460ff60401b1916600160401b179055612631565b60405163f92ee8a960e01b8152600490fd5b9050155f610ba8565b303b159150610ba0565b849150610b96565b3461031a575f36600319011261031a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461031a575f36600319011261031a5760206040517f15e7c882d74e8821ebf34aaff46fd0e1d53b9393d91490019124113d28dc32a38152f35b3461031a575f36600319011261031a576020604051614e208152f35b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b03821117610d4357604052565b610d14565b606081019081106001600160401b03821117610d4357604052565b608081019081106001600160401b03821117610d4357604052565b90601f801991011681019081106001600160401b03821117610d4357604052565b60405190610dac82610d63565b565b60405190610dac82610d28565b6001600160401b038111610d4357601f01601f191660200190565b81601f8201121561031a57803590610ded82610dbb565b92610dfb6040519485610d7e565b8284526020838301011161031a57815f926020809301838601378301015290565b3461031a57606036600319011261031a57610e35610511565b6044356001600160401b03811161031a57602091610e5a61062f923690600401610dd6565b906004355f526003845260405f20612798565b3461031a575f36600319011261031a5760206040517fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c8152f35b3461031a575f36600319011261031a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461031a575f36600319011261031a5760206040517e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf8152f35b3461031a575f36600319011261031a576001546040516001600160a01b039091168152602090f35b3461031a57604036600319011261031a57602060ff610f9e602435610f708161031e565b6004355f525f8051602061334f833981519152845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b90608060031983011261031a5760043591602435610fc78161031e565b9160443565ffffffffffff8116810361031a5791606435906001600160401b03821161031a57610ff991600401610dd6565b90565b3461031a57602061062f61103561101236610faa565b939190925f526004865260405f209060018060a01b03165f5260205260405f2090565b612798565b3461031a575f36600319011261031a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461031a57604036600319011261031a5760043561109b8161031e565b6024356001600160401b03811161031a575f916110bd83923690600401610b15565b90816040519283928337810184815203915af461110a6110db6119a3565b916110fc60405193849215156020840152604080840152606083019061058f565b03601f198101835282610d7e565b805190602001fd5b3461031a575f36600319011261031a5760206040515f8152f35b3461031a575f36600319011261031a5760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461031a575f36600319011261031a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461031a57602036600319011261031a576004355f526002602052602060405f2054604051908152f35b3461031a57604036600319011261031a5761087a6024356004356112008261031e565b805f525f8051602061334f833981519152602052611224600160405f200154611eb5565b612569565b3461031a57606036600319011261031a576105e46105d060043561124c8161031e565b611254610526565b90602435906119d2565b3461031a57602061062f61127136610faa565b92919091611ad1565b3461031a5760a036600319011261031a5760243560043561129a8261031e565b604435916112a661053b565b90608435906001600160401b03821161031a576112c860049236908401610dd6565b6112d0612229565b5f546020906112f5906112e9906001600160a01b031681565b6001600160a01b031690565b60405163b134427160e01b815294859182905afa9283156108bd575f93611434575b506001600160a01b039283163303611422576001546001600160a01b0316838116611397575b50506040805195865265ffffffffffff909316602086015216927f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed91819081015b0390a361087a60015f8051602061336f83398151915255565b9093604051946113ce866113c0602082019363724ab0f760e11b8552858c898d60248701611c5b565b03601f198101885287610d7e565b62042e305a10611410575f61137e938192827f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed9951926203d090f1509361133d565b604051638072475160e01b8152600490fd5b60405163dabc4ad960e01b8152600490fd5b61145791935060203d60201161145e575b61144f8183610d7e565b8101906116d3565b915f611317565b503d611445565b3461031a57606036600319011261031a576024356114828161031e565b61148a610526565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036106f8576114e46106db926004355f52600460205260405f209060018060a01b03165f5260205260405f2090565b612124565b3461031a575f36600319011261031a575f546040516001600160a01b039091168152602090f35b3461031a57604036600319011261031a57602061062f6024356115328161031e565b600435611cd8565b3461031a575f36600319011261031a5760206040516203d0908152f35b3461031a575f36600319011261031a57602060405160018152f35b5190811515820361031a57565b519063ffffffff8216820361031a57565b919082604091031261031a57610ff960206115aa84611572565b930161157f565b91939265ffffffffffff906060956040519363f7b0554760e01b6020860152602485015260018060a01b031660448401521660648201526064815260a08101908082106001600160401b03831117610d4357611622926116139260405261201a565b60208082518301019101611590565b9061162a5750565b90915063ffffffff6040519116602082015260208152610ff981610d28565b9081602091031261031a57610ff990611572565b6040513d5f823e3d90fd5b81601f8201121561031a5780519061167f82610dbb565b9261168d6040519485610d7e565b8284526020838301011161031a57815f9260208093018386015e8301015290565b9060208282031261031a5781516001600160401b03811161031a57610ff99201611668565b9081602091031261031a5751610ff98161031e565b90610ff9916020815261170782516080602084015260a083019061058f565b906080606061173e61172b602087015195601f19968787830301604088015261058f565b604087015186868303018487015261058f565b940151928285030191015261058f565b604051630df8851f60e11b81526001600160a01b03828116600483015260248201849052848116604483015265ffffffffffff8616606483015295606095909491939091905f856084817f00000000000000000000000000000000000000000000000000000000000000008c165afa9485156108bd575f95611945575b5060405163fbfa77cf60e01b8152602081600481888d165afa9081156108bd57611837995f9286928491611926575b5060405163192c0ff760e21b81526001600160a01b03909116600482015265ffffffffffff909216602483015290998a9190829081906044820190565b03917f0000000000000000000000000000000000000000000000000000000000000000165afa9788156108bd575f986118fa575b50908161187d846118839594876119d2565b946115b1565b908251158015906118f0575b80156118e6575b80156118dc575b6118a957505050909150565b6110fc9450610ff993956118bb610d9f565b938452602084015260408301526060820152604051928391602083016116e8565b508151151561189d565b5080511515611896565b508551151561188f565b611883939291985061191d903d805f833e6119158183610d7e565b8101906116ae565b9790919261186b565b61193f915060203d60201161145e5761144f8183610d7e565b5f6117fa565b61195a9195503d805f833e6119158183610d7e565b935f6117cb565b90610ff992915f52600360205260405f20612798565b5f9081526004602090815260408083206001600160a01b03909416835292905220610ff9929190612798565b3d156119cd573d906119b482610dbb565b916119c26040519384610d7e565b82523d5f602084013e565b606090565b611622916116139194939465ffffffffffff60609660405193630cbd53f560e11b6020860152602485015216604483015260448252611a1082610d63565b61201a565b60405190611a2282610d28565b60606020838281520152565b9060208282031261031a5781516001600160401b039283821161031a57019060408282031261031a5760405192611a6484610d28565b825181811161031a5782611a79918501611668565b8452602083015190811161031a57611a919201611668565b602082015290565b6001600160a01b0391821681529116602082015265ffffffffffff9091166040820152608060608201819052610ff99291019061058f565b92611ae190929192828486612973565b929093611aec611a15565b93805180611c3f575b50508415938415611ba9575b8415611b18575b50505050611b135790565b505f90565b602080949550611b43910151604051958694859463530e1d4360e01b865260601c9060048601611a99565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156108bd575f91611b8a575b50155f808080611b08565b611ba3915060203d6020116108b6576108a88183610d7e565b5f611b7f565b5f549094506001600160a01b0316602084865192611bdc604051948593849363530e1d4360e01b85528960048601611a99565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156108bd575f91611c20575b501593611b01565b611c39915060203d6020116108b6576108a88183610d7e565b5f611c18565b611c53929550602080918301019101611a2e565b925f80611af5565b919360a093610ff9969565ffffffffffff938552600180871b031660208501526040840152166060820152816080820152019061058f565b634e487b7160e01b5f52601160045260245ffd5b8115611cb1570490565b634e487b7160e01b5f52601260045260245ffd5b9060018201809211611cd357565b611c93565b5f546040516308834cb560e21b8082526001600160a01b0385811660048401529283166024830152929392602092909183816044817f000000000000000000000000000000000000000000000000000000000000000086165afa9081156108bd575f91611de5575b5015918215611d61575b50509050611d5b57610ff991612a68565b50505f90565b6040519081526001600160a01b0385166004820152606086901c602482015291508290829060449082907f0000000000000000000000000000000000000000000000000000000000000000165afa9182156108bd575f92611dc8575b505015805f80611d4a565b611dde9250803d106108b6576108a88183610d7e565b5f80611dbd565b611dfc9150843d86116108b6576108a88183610d7e565b5f611d40565b335f9081527f24e48de785eeca8420b70f73d267a66970ccc187d459f2a4b53e74ed92a5ab86602052604090207f15e7c882d74e8821ebf34aaff46fd0e1d53b9393d91490019124113d28dc32a39060ff905b541615610ace5750565b335f9081527f72a65082a5691803ab2b62c9bc729b34205ba1b183d950896526b2fd8714d0c7602052604090207e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf9060ff90611e55565b5f8181525f8051602061334f83398151915260209081526040808320338452909152902060ff90611e55565b634e487b7160e01b5f52603260045260245ffd5b8054821015611f0a575f5260205f2001905f90565b611ee1565b90815491600160401b831015610d435782611f32916001610dac95018155611ef5565b90919082549060031b91821b915f19901b1916179055565b5f19810191908211611cd357565b90929192600182019081548015611fea575b5084611f7584612b40565b50949092845493611f85836120b3565b9681611fd5575b5015611fb2575050505f198101908111611cd357611f328591611fae93611ef5565b9190565b611fae949293611fce926001600160d01b03909116919061319e565b5050611f0f565b65ffffffffffff83811691161490505f611f8c565b600160401b811015610d43578060016120069201845583611ef5565b8154905f199060031b1b191690555f611f6a565b5f9190829160405161204f816110fc6020820194639f86fd8560e01b865230602484015260406044840152606483019061058f565b51915afa5061205c6119a3565b8051810160408282031261031a5761207660208301611572565b916040810151916001600160401b03831161031a5761209c926020809201920101611668565b90156120a55790565b805190811561031a57602001fd5b8054806120e257505f5b6001600160d01b03811615611d5b5760016120d89201611ef5565b90549060031b1c90565b5f19908082810111611cd357825f5260205f2001015460301c6120bd565b9060405161210d81610d28565b915465ffffffffffff8116835260301c6020830152565b91908254905f8291600584116121c2575b612140935085612cc2565b9081156121b6576121af6121a66121a06120d861217261216d61216288611f4a565b895f5260205f200190565b612100565b966001612199602061218a8b5165ffffffffffff1690565b9a01516001600160d01b031690565b9101611ef5565b93611f4a565b63ffffffff1690565b6001939291565b5f925082915081908190565b91926121cd81612b8f565b8103908111611cd35761214093865f526122016121f68360205f200165ffffffffffff90541690565b65ffffffffffff1690565b65ffffffffffff85161015612217575091612135565b92915061222390611cc5565b90612135565b5f8051602061336f83398151915260028154146122465760029055565b604051633ee5aeb560e01b8152600490fd5b90815f52600360205260405f208161226f82612b40565b9193905083156122cd5761228f916001600160d01b031690600101611ef5565b90549060031b1c5b826122c3575b50506122a7575050565b6122bf915f52600360205260405f206103e342612b0e565b5050565b119050815f61229d565b50505f612297565b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260409020545f8051602061334f8339815191529060ff16611d5b575f808052602091825260408082206001600160a01b038516835290925220805460ff1916600117905533906001600160a01b03165f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b6001600160a01b0381165f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c602052604090207fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c905f8051602061334f8339815191529060ff905b541661244f575f828152602091825260408082206001600160a01b038616835290925220805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b5050505f90565b6001600160a01b0381165f9081527f72a65082a5691803ab2b62c9bc729b34205ba1b183d950896526b2fd8714d0c7602052604090207e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf905f8051602061334f8339815191529060ff906123eb565b6001600160a01b0381165f9081527f24e48de785eeca8420b70f73d267a66970ccc187d459f2a4b53e74ed92a5ab86602052604090207f15e7c882d74e8821ebf34aaff46fd0e1d53b9393d91490019124113d28dc32a3905f8051602061334f8339815191529060ff906123eb565b5f8181525f8051602061334f833981519152602081815260408084206001600160a01b038716855290915290912060ff906123eb565b5f8181525f8051602061334f833981519152602081815260408084206001600160a01b03871685529091529091205460ff161561244f575f828152602091825260408082206001600160a01b038616835290925220805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b91909160408184031261031a5780356126138161031e565b9260208201356001600160401b03811161031a57610ff99201610dd6565b61263d918101906125fb565b6040516302910f8b60e31b81526001600160a01b039283166004820181905291906020816024817f000000000000000000000000000000000000000000000000000000000000000088165afa9081156108bd575f91612750575b501561273e576126d26040916126cd612718946126b2612d19565b60018060a01b03166001600160601b0360a01b5f5416175f55565b612e99565b6020810151600180546001600160a01b0319166001600160a01b0390921691909117905580516001600160a01b031684811661272e575b5001516001600160a01b031690565b9081166127225750565b61272b90612380565b50565b612737906122d5565b505f612709565b6040516362df054560e01b8152600490fd5b612769915060203d6020116108b6576108a88183610d7e565b5f612697565b9081602091031261031a57610ff99061157f565b90600163ffffffff80931601918211611cd357565b9180511561286657806020806127b39351830101910161276f565b916127be83826130c9565b926127cf845165ffffffffffff1690565b9065ffffffffffff808516921682811461285a5782119182612805575b50506127fc57610ff99250612ff9565b50506020015190565b9091506128128354611f4a565b63ffffffff83161491821561282b575b50505f806127ec565b6128529192506128466128406121f692612783565b856130c9565b5165ffffffffffff1690565b115f80612822565b50505050506020015190565b50610ff991612ff9565b60405190608082018281106001600160401b03821117610d4357604052606080838181528160208201528160408201520152565b9060208282031261031a5781516001600160401b039283821161031a57019060808282031261031a576128d5610d9f565b92825181811161031a57826128eb918501611668565b8452602083015181811161031a5782612905918501611668565b6020850152604083015181811161031a5782612922918501611668565b6040850152606083015190811161031a5761293d9201611668565b606082015290565b9081602091031261031a575190565b60409065ffffffffffff610ff99493168152816020820152019061058f565b9391909361297f612870565b93805180612a48575b50506129c992939460206129a86112e96112e95f5460018060a01b031690565b8188015190604051808098819463810da75d60e01b83528960048401612954565b03915afa9182156108bd57612a0a945f93612a0f575b50612a0490612a0493946129f860408a01518284611961565b9360608a015192611977565b90613131565b915190565b612a04935090612a39612a049260203d602011612a41575b612a318183610d7e565b810190612945565b9350906129df565b503d612a27565b6129c994955090602080612a609383010191016128a4565b93925f612988565b5f5460405163bd49c35f60e01b8152929190602090849060049082906001600160a01b03165afa9081156108bd57610ff9935f92612ae3575b50612a04610384612a049394612ac2610384855f52600360205260405f2090565b935f52600460205260405f209060018060a01b03165f5260205260405f2090565b612a049250610384612b06612a049260203d602011612a4157612a318183610d7e565b935050612aa1565b65ffffffffffff90818111612b21571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b805480612b515750505f905f905f90565b5f19908082810111611cd357612b6e925f5260205f200101612100565b9065ffffffffffff82511691602060018060d01b0391015116906001929190565b8015611b135780612a04612c5a612c50612c46612c3c612c32612c28612c1e6001610ff99a5f908b60801c80612cb6575b508060401c80612ca9575b508060201c80612c9c575b508060101c80612c8f575b508060081c80612c82575b508060041c80612c75575b508060021c80612c68575b50821c612c61575b811c1b612c17818b611ca7565b0160011c90565b612c17818a611ca7565b612c178189611ca7565b612c178188611ca7565b612c178187611ca7565b612c178186611ca7565b612c178185611ca7565b8092611ca7565b8101612c0a565b600291509101905f612c02565b600491509101905f612bf7565b600891509101905f612bec565b601091509101905f612be1565b602091509101905f612bd6565b604091509101905f612bcb565b9150506080905f612bc0565b905b838310612cd15750505090565b909192612cde81856132b4565b90835f5265ffffffffffff808360205f20015416908416105f14612d065750925b9190612cc4565b93506001810180911115612cff57611c93565b612d216132c9565b612d296132c9565b60015f8051602061336f83398151915255565b60405190612d4982610d48565b5f6040838281528260208201520152565b81601f8201121561031a578051916020916001600160401b038411610d43578360051b9060405194612d8e85840187610d7e565b8552838086019282010192831161031a578301905b828210612db1575050505090565b8380918351612dbf8161031e565b815201910190612da3565b9060208282031261031a5781516001600160401b039283821161031a5701908181039260a0841261031a57606060405194612e0486610d48565b1261031a57604051612e1581610d48565b8351612e208161031e565b81526020840151612e308161031e565b60208201526040840151612e438161031e565b60408201528452606083015181811161031a5782612e62918501612d5a565b6020850152608083015190811161031a57612e7d9201612d5a565b604082015290565b8051821015611f0a5760209160051b010190565b612eb590612ea5612d3c565b5060208082518301019101612dca565b8051519091906001600160a01b03161580612fdf575b612fcd579060208101905f5b82518051821015612f51576112e9612ef283612eff93612e85565b516001600160a01b031690565b15612f3f57612f21612f1d612f18612ef2848751612e85565b612456565b1590565b612f2d57600101612ed7565b604051635140fefd60e11b8152600490fd5b6040516323cda06760e01b8152600490fd5b506040925050818101905f5b82518051821015612fc4576112e9612ef283612f7893612e85565b15612fb357612f96612f1d612f91612ef2848751612e85565b6124c4565b612fa257600101612f5d565b8351635140fefd60e11b8152600490fd5b83516323cda06760e01b8152600490fd5b50509150505190565b6040516303501f5960e11b8152600490fd5b506020820151511580612ecb575060408201515115612ecb565b908154905f829160058411613063575b6130149350846132f7565b8061303c57505f905b6001600160d01b03821615611d5b57610ff99160016120d89201611ef5565b61305661304b61305d92611f4a565b835f5260205f200190565b5460301c90565b9061301d565b919261306e81612b8f565b8103908111611cd35761301493855f5265ffffffffffff808360205f20015416908516105f1461309f575091613009565b9291506130ab90611cc5565b90613009565b604051906130be82610d28565b5f6020838281520152565b906130f26130ec613113926130dc6130b1565b506130e56130b1565b5084611ef5565b50612100565b91600165ffffffffffff845116936020828060d01b03910151169101611ef5565b9054906040519261312384610d28565b835260031b1c602082015290565b908082101561313e575090565b905090565b8054600160401b811015610d435761316091600182018155611ef5565b61318b57815160209092015160301b65ffffffffffff191665ffffffffffff92909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b80549293929190821561328b576131ba61216d61304b85611f4a565b906131cb825165ffffffffffff1690565b65ffffffffffff8481169116811061327957611fae9460209488926131f96121f6875165ffffffffffff1690565b0361324157506132339261320f61321a92611f4a565b905f5260205f200190565b9065ffffffffffff82549181199060301b169116179055565b01516001600160d01b031690565b91505061327491613261613253610dae565b65ffffffffffff9093168352565b6001600160d01b03881682860152613143565b613233565b604051632520601d60e01b8152600490fd5b6132af925061329b613253610dae565b6001600160d01b0385166020830152613143565b5f9190565b90808216911860011c8101809111611cd35790565b60ff5f8051602061338f8339815191525460401c16156132e557565b604051631afcd79f60e31b8152600490fd5b905b8383106133065750505090565b90919261331381856132b4565b90835f5265ffffffffffff808360205f20015416908416105f1461333b5750925b91906132f9565b9350600181018091111561333457611c9356fe02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220a114ef0ff5b29e345fe4269ee0528960ae4a86d65f802fa8e154dd6b83a6427064736f6c63430008190033","sourceMap":"7866:3473:81:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;-1:-1:-1;;7866:3473:81;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3551:47:23;;;:87;;;;7866:3473:81;;;;;;;;;;3551:87:23;-1:-1:-1;;;1133:40:29;;-1:-1:-1;3551:87:23;;;7866:3473:81;-1:-1:-1;7866:3473:81;;;-1:-1:-1;;;;;7866:3473:81;;;;;:::o;:::-;;;;;;-1:-1:-1;;7866:3473:81;;;;;;;;;;;:::i;:::-;;;3202:4:23;;;:::i;:::-;7866:3473:81;-1:-1:-1;7866:3473:81;;;;;2662:52:77;:43;7866:3473:81;;-1:-1:-1;7866:3473:81;;;;;;;;;;;;;;;;;2662:43:77;:52;:::i;:::-;3458;3454:102;;7866:3473:81;3656:53:77;7866:3473:81;;-1:-1:-1;7866:3473:81;;;;3566:74:77;7866:3473:81;3566:43:77;7866:3473:81;;-1:-1:-1;7866:3473:81;;;;;;;;;;;;;;;;;3566:43:77;819:34:62;837:15;819:34;:::i;:::-;3566:74:77;;:::i;:::-;-1:-1:-1;;7866:3473:81;;;;;-1:-1:-1;;;;;7866:3473:81;;3656:53:77;7866:3473:81;3454:102:77;7866:3473:81;;-1:-1:-1;;;3533:12:77;;7866:3473:81;;3533:12:77;7866:3473:81;;;;;;;;;;;;;;;;;;3202:4:23;;;:::i;:::-;7866:3473:81;-1:-1:-1;7866:3473:81;2910:15:77;7866:3473:81;;;-1:-1:-1;7866:3473:81;;2901:36:77;;2897:98;;7866:3473:81;-1:-1:-1;7866:3473:81;2103:13:77;7866:3473:81;;;2103:34:77;7866:3473:81;-1:-1:-1;7866:3473:81;2103:34:77;:::i;:::-;3009;3005:84;;3099:25;3171:35;3099:25;:56;3171:35;3099:25;;;7866:3473:81;;2103:13:77;7866:3473:81;;;;;;;3099:56:77;-1:-1:-1;;7866:3473:81;;;;;;;;;;;;3171:35:77;;;;7866:3473:81;3005:84:77;7866:3473:81;-1:-1:-1;;;3066:12:77;;7866:3473:81;;3066:12:77;2897:98;7866:3473:81;-1:-1:-1;;;2960:24:77;;7866:3473:81;;2960:24:77;7866:3473:81;;;;;;-1:-1:-1;;7866:3473:81;;;;;;1537:38:76;-1:-1:-1;;;;;7866:3473:81;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;7866:3473:81;;;;;;;;-1:-1:-1;;7866:3473:81;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;7866:3473:81;;;;;2662:52:77;:43;7866:3473:81;;;;;:::i;:::-;;;-1:-1:-1;7866:3473:81;;;;;-1:-1:-1;7866:3473:81;;;;;;;;;;;;;;;;;2662:52:77;7866:3473:81;;;;;;;;;;;;-1:-1:-1;;7866:3473:81;;;;;;1632:54:76;-1:-1:-1;;;;;7866:3473:81;;;;;;;;;;;;-1:-1:-1;;7866:3473:81;;;;;;:::i;:::-;449:5:82;-1:-1:-1;;;;;7866:3473:81;435:10:82;:19;431:71;;8670:64:81;7866:3473;;;-1:-1:-1;7866:3473:81;8670:13;7866:3473;;;-1:-1:-1;7866:3473:81;8670:64;:::i;:::-;7866:3473;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7866:3473:81;431:71:82;7866:3473:81;;-1:-1:-1;;;477:14:82;;7866:3473:81;;477:14:82;7866:3473:81;;;;;;-1:-1:-1;;7866:3473:81;;;;;;1743:56:76;-1:-1:-1;;;;;7866:3473:81;;;;;;;;;;;;-1:-1:-1;;7866:3473:81;;;;;;-1:-1:-1;;;;;7866:3473:81;;;;;;;;3217:103:28;;;:::i;:::-;7866:3473:81;;-1:-1:-1;;;4285:48:76;;4322:10;7866:3473:81;4285:48:76;;7866:3473:81;;;;;-1:-1:-1;;;;;4295:16:76;7866:3473:81;4285:48:76;;;;;;;-1:-1:-1;4285:48:76;;;7866:3473:81;4284:49:76;;4280:99;;-1:-1:-1;;;;;7866:3473:81;-1:-1:-1;;4322:10:76;297:2:88;7866:3473:81;;267:46:88;4459:27:76;;;;7866:3473:81;;4459:15:76;7866:3473:81;;;;;;;4459:27:76;7866:3473:81;4459:37:76;4455:87;;4654:38;4552:27;4654:38;4552:27;;;7866:3473:81;;4459:15:76;7866:3473:81;;;;;;;4552:27:76;7866:3473:81;4631:6:76;;;;:::i;:::-;7866:3473:81;;;;;;;;;;;;;4654:38:76;;;;3282:1:28;1805;-1:-1:-1;;;;;;;;;;;7866:3473:81;3716:283:28;3282:1;7866:3473:81;4280:99:76;7866:3473:81;;-1:-1:-1;;;4356:12:76;;7866:3473:81;;4356:12:76;4285:48;;;;7866:3473:81;4285:48:76;7866:3473:81;4285:48:76;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;7866:3473:81:-;;;;;;-1:-1:-1;;7866:3473:81;;;;;;-1:-1:-1;7866:3473:81;-1:-1:-1;;;;;;;;;;;7866:3473:81;;;4919:24:23;7866:3473:81;-1:-1:-1;7866:3473:81;4919:24:23;7866:3473:81;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;-1:-1:-1;;7866:3473:81;;;;;;322:32:69;-1:-1:-1;;;;;7866:3473:81;;;;;;;;;;;;-1:-1:-1;;7866:3473:81;;;;5350:25:23;7866:3473:81;;;;;;;:::i;:::-;;-1:-1:-1;7866:3473:81;-1:-1:-1;;;;;;;;;;;7866:3473:81;;3202:4:23;4919:24;7866:3473:81;-1:-1:-1;7866:3473:81;4919:24:23;7866:3473:81;3202:4:23;:::i;:::-;5350:25;:::i;7866:3473:81:-;;;;;;-1:-1:-1;;7866:3473:81;;;;;;;;;:::i;:::-;966:10:27;-1:-1:-1;;;;;7866:3473:81;;6441:34:23;6437:102;;6549:37;7866:3473:81;;;6549:37:23;:::i;6437:102::-;7866:3473:81;;-1:-1:-1;;;6498:30:23;;7866:3473:81;;6498:30:23;7866:3473:81;;;;;;-1:-1:-1;;7866:3473:81;;;;;;;;;:::i;:::-;3217:103:28;;:::i;:::-;966:10:27;-1:-1:-1;7866:3473:81;;;;;;;;;;1356:26:76;;7866:3473:81;;4468:23:23;4464:108;;-1:-1:-1;4861:4:76;7866:3473:81;-1:-1:-1;;;;;7866:3473:81;;;;;;4861:13:76;;4857:63;;-1:-1:-1;;;;;;7866:3473:81;;;4861:4:76;7866:3473:81;4958:14:76;-1:-1:-1;;4958:14:76;4861:4;-1:-1:-1;;;;;;;;;;;7866:3473:81;;4464:108:23;7866:3473:81;;;;4514:47:23;;;;;;966:10:27;7866:3473:81;4514:47:23;;7866:3473:81;;;;;4514:47:23;7866:3473:81;;;;;;-1:-1:-1;;7866:3473:81;;;;;;-1:-1:-1;7866:3473:81;2103:13:77;7866:3473:81;;;2103:34:77;7866:3473:81;-1:-1:-1;7866:3473:81;2103:34:77;:::i;7866:3473:81:-;;;;;;;;;;;;;-1:-1:-1;;;;;7866:3473:81;;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;7866:3473:81;;;;-1:-1:-1;;;;;7866:3473:81;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;7866:3473:81;;;;;;;4301:16:25;7866:3473:81;;4726:16:25;;:34;;;;7866:3473:81;4805:1:25;4790:16;:50;;;;7866:3473:81;4855:13:25;:30;;;;7866:3473:81;4851:91:25;;;-1:-1:-1;;;;;;;;;;;7866:3473:81;;-1:-1:-1;;7866:3473:81;;;;;718:4:69;;4951:18:25;4979:67;;718:4:69;:::i;:::-;5066:101:25;;7866:3473:81;5066:101:25;-1:-1:-1;;;;;;;;;;;7866:3473:81;;-1:-1:-1;;;;7866:3473:81;;;;;-1:-1:-1;7866:3473:81;;5142:14:25;;7866:3473:81;;5142:14:25;7866:3473:81;4979:67:25;-1:-1:-1;;;;;;;;;;;7866:3473:81;;-1:-1:-1;;;;7866:3473:81;-1:-1:-1;;;7866:3473:81;;;718:4:69;:::i;4851:91:25:-;7866:3473:81;;-1:-1:-1;;;4908:23:25;;7866:3473:81;;4908:23:25;4855:30;4872:13;;;4855:30;;;4790:50;4818:4;4810:25;:30;;-1:-1:-1;4790:50:25;;4726:34;;;-1:-1:-1;4726:34:25;;7866:3473:81;;;;;;-1:-1:-1;;7866:3473:81;;;;;;8038:36;-1:-1:-1;;;;;7866:3473:81;;;;;;;;;;;;-1:-1:-1;;7866:3473:81;;;;;;;952:44:77;7866:3473:81;;;;;;;;;-1:-1:-1;;7866:3473:81;;;;;;;1253:6:76;7866:3473:81;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7866:3473:81;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;-1:-1:-1;;;;;7866:3473:81;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;7866:3473:81;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;7866:3473:81;;;;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;:::i;:::-;-1:-1:-1;;;;;7866:3473:81;;;;;;-1:-1:-1;;7866:3473:81;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;7866:3473:81;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;7866:3473:81;;;;;;:::i;:::-;;;-1:-1:-1;;;;;7866:3473:81;;;;;;;1870:60:77;7866:3473:81;;;;;;:::i;:::-;;;;-1:-1:-1;7866:3473:81;1870:13:77;7866:3473:81;;;-1:-1:-1;7866:3473:81;1870:60:77;:::i;7866:3473:81:-;;;;;;-1:-1:-1;;7866:3473:81;;;;;;;1356:26:76;7866:3473:81;;;;;;;;;-1:-1:-1;;7866:3473:81;;;;;;7987:45;-1:-1:-1;;;;;7866:3473:81;;;;;;;;;;;;-1:-1:-1;;7866:3473:81;;;;;;;795:35:77;7866:3473:81;;;;;;;;;-1:-1:-1;;7866:3473:81;;;;;;;;-1:-1:-1;;;;;7866:3473:81;;;;;;;;;;;;;;-1:-1:-1;;7866:3473:81;;;;;;3901:31:23;7866:3473:81;;;;;:::i;:::-;;;-1:-1:-1;7866:3473:81;-1:-1:-1;;;;;;;;;;;7866:3473:81;;;-1:-1:-1;7866:3473:81;;;;;;;;;;;;;;;;;3901:31:23;7866:3473:81;;;;;;;;;;;;;-1:-1:-1;;7866:3473:81;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;;;;7866:3473:81;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;2399:78:77;:43;7866:3473:81;;;:::i;:::-;;;;;-1:-1:-1;7866:3473:81;;;;;-1:-1:-1;7866:3473:81;;;;;;;;;;;;;;;;;2399:43:77;:78;:::i;7866:3473:81:-;;;;;;-1:-1:-1;;7866:3473:81;;;;;;8080:45;-1:-1:-1;;;;;7866:3473:81;;;;;;;;;;;;-1:-1:-1;;7866:3473:81;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;7866:3473:81;;;;-1:-1:-1;7866:3473:81;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;416:25:75;;;;477:31;416:25;;:::i;:::-;7866:3473:81;;;;;;;;;;477:31:75;;7866:3473:81;;;;;;;;;;;:::i;:::-;477:31:75;7866:3473:81;;477:31:75;;;;;;:::i;:::-;518:79;;;7866:3473:81;518:79:75;;7866:3473:81;;;;;;-1:-1:-1;;7866:3473:81;;;;;;;;;;;;;;;;;-1:-1:-1;;7866:3473:81;;;;;;;-1:-1:-1;;;;;404:28:69;7866:3473:81;;;;;;;;;;-1:-1:-1;;7866:3473:81;;;;;;1439:41:76;-1:-1:-1;;;;;7866:3473:81;;;;;;;;;;;;-1:-1:-1;;7866:3473:81;;;;;;-1:-1:-1;7866:3473:81;2009:67:76;7866:3473:81;;;;-1:-1:-1;7866:3473:81;;;;;;;;;;;;;;-1:-1:-1;;7866:3473:81;;;;5767:26:23;7866:3473:81;;;;;;;:::i;:::-;;-1:-1:-1;7866:3473:81;-1:-1:-1;;;;;;;;;;;7866:3473:81;;3202:4:23;4919:24;7866:3473:81;-1:-1:-1;7866:3473:81;4919:24:23;7866:3473:81;3202:4:23;:::i;:::-;5767:26;:::i;7866:3473:81:-;;;;;;-1:-1:-1;;7866:3473:81;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;-1:-1:-1;;7866:3473:81;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;7866:3473:81;;;;;;;;;;;;:::i;:::-;3217:103:28;;:::i;:::-;-1:-1:-1;7866:3473:81;;;5246:21:76;;:13;;-1:-1:-1;;;;;7866:3473:81;5246:13:76;7866:3473:81;;-1:-1:-1;;;;;7866:3473:81;;;5246:21:76;7866:3473:81;;-1:-1:-1;;;5246:23:76;;7866:3473:81;;;;;5246:23:76;;;;;;;-1:-1:-1;5246:23:76;;;7866:3473:81;-1:-1:-1;;;;;;7866:3473:81;;;5232:10:76;:37;5228:87;;5341:4;7866:3473:81;-1:-1:-1;;;;;7866:3473:81;;;;5355:469:76;;7866:3473:81;-1:-1:-1;;7866:3473:81;;;;;;;;;;;;;;;;5839:55:76;;7866:3473:81;;;;5839:55:76;;;;3282:1:28;1805;-1:-1:-1;;;;;;;;;;;7866:3473:81;3716:283:28;5355:469:76;7866:3473:81;;;;5435:94:76;;;;7866:3473:81;5435:94:76;;;;;;;;;;;;7866:3473:81;5435:94:76;;;:::i;:::-;;7866:3473:81;;5435:94:76;;;;;;:::i;:::-;7866:3473:81;5548:9:76;:51;5544:118;;-1:-1:-1;5839:55:76;5676:138;;;;5839:55;5676:138;;;1150:7;5676:138;;5355:469;;;5544:118;7866:3473:81;;-1:-1:-1;;;5626:21:76;;7866:3473:81;;5626:21:76;5228:87;7866:3473:81;;-1:-1:-1;;;5292:12:76;;7866:3473:81;;5292:12:76;5246:23;;;;;7866:3473:81;5246:23:76;7866:3473:81;5246:23:76;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;7866:3473:81;;;;;;-1:-1:-1;;7866:3473:81;;;;;;;;;:::i;:::-;;;:::i;:::-;449:5:82;-1:-1:-1;;;;;7866:3473:81;435:10:82;:19;431:71;;9461:43:81;:82;7866:3473;;;-1:-1:-1;7866:3473:81;;;;;-1:-1:-1;7866:3473:81;;;;;;;;;;;;;;;;;9461:43;:82;:::i;7866:3473::-;;;;;;-1:-1:-1;;7866:3473:81;;;;;;;;-1:-1:-1;;;;;7866:3473:81;;;;;;;;;;;;;;-1:-1:-1;;7866:3473:81;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;-1:-1:-1;;7866:3473:81;;;;;;;1150:7:76;7866:3473:81;;;;;;;;;-1:-1:-1;;7866:3473:81;;;;;;;2700:1:76;7866:3473:81;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;9556:591::-;;;;7866:3473;9556:591;7866:3473;;;;9870:147;;;;;;;;;;;7866:3473;;;;;;;;;;;;;;;;;9870:147;;7866:3473;;;;;;;-1:-1:-1;;;;;7866:3473:81;;;;;9778:291;7866:3473;9802:229;7866:3473;;;9802:229;:::i;:::-;9870:147;7866:3473;;;9778:291;;;;;;:::i;:::-;10080:61;;;9556:591;:::o;10080:61::-;7866:3473;;;;;;;;9870:147;10113:17;;7866:3473;9870:147;10113:17;;;;;:::i;7866:3473::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;7866:3473:81;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;7866:3473:81;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;10153:1184::-;7866:3473;;-1:-1:-1;;;10370:99:81;;-1:-1:-1;;;;;7866:3473:81;;;10370:99;;;7866:3473;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7866:3473:81;;;10389:20;7866:3473;;10370:99;;;;;;;;;;;10153:1184;-1:-1:-1;7866:3473:81;;-1:-1:-1;;;10563:32:81;;;7866:3473;10370:99;7866:3473;;;;10563:32;;;;;;;10523:84;10563:32;10370:99;10563:32;;;;;;;10153:1184;-1:-1:-1;7866:3473:81;;-1:-1:-1;;;10523:84:81;;-1:-1:-1;;;;;7866:3473:81;;;10370:99;10523:84;;7866:3473;;;;;;;;;;;;;-1:-1:-1;7866:3473:81;;;;;;;;;10523:84;;10534:11;;7866:3473;10523:84;;;;;;;10370:99;10523:84;;;10153:1184;10651:50;;;;;10752:68;10651:50;;;;:::i;:::-;10752:68;;:::i;:::-;7866:3473;;;10848:21;;;:52;;;10153:1184;10848:85;;;;10153:1184;10848:142;;;;10153:1184;10831:500;;10153:1184;;;;;;:::o;10831:500::-;11022:298;7866:3473;;11022:298;7866:3473;;;;:::i;:::-;;;;10563:32;11050:256;;7866:3473;;11050:256;;7866:3473;;11050:256;;7866:3473;;;11022:298;;;10563:32;11022:298;;;:::i;10848:142::-;7866:3473;;;10953:37;;10848:142;;:85;7866:3473;;;10904:29;;10848:85;;:52;7866:3473;;;10873:27;;10848:52;;10523:84;10752:68;10523:84;;;;;;;;;10370:99;10523:84;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;10563:32;;;;;;;;;;;;;;:::i;:::-;;;;10370:99;;;;;;;;;;;;;;:::i;:::-;;;;;1742:195:77;;1870:60;1742:195;;-1:-1:-1;7866:3473:81;1870:13:77;7866:3473:81;;;-1:-1:-1;7866:3473:81;1870:60:77;:::i;2207:277::-;-1:-1:-1;7866:3473:81;;;2399:21:77;7866:3473:81;;;;;;;;-1:-1:-1;;;;;7866:3473:81;;;;;;;;;2399:78:77;;2207:277;;2399:78;:::i;7866:3473:81:-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;7866:3473:81;;;;:::o;:::-;;;:::o;8747:485::-;8935:219;8747:485;8959:157;8747:485;;;;7866:3473;;;;;9011:91;;;;;;;;;;;7866:3473;;;;;;;9011:91;;;;;:::i;:::-;8959:157;:::i;7866:3473::-;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;7866:3473:81;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;-1:-1:-1;;;;;7866:3473:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2764:920:76:-;;2978:48;2764:920;;;;2978:48;;;;:::i;:::-;3036:36;;;7866:3473:81;;:::i;:::-;;;;3086:20:76;3082:107;;2764:920;3216:11;;;;:193;;;;;2764:920;3216:394;;;;2764:920;3199:455;;;;;;2764:920;:::o;3199:455::-;3635:8;-1:-1:-1;3635:8:76;:::o;3216:394::-;3553:39;;;;;3430:180;3553:39;;;7866:3473:81;;;;;;;;;;3430:180:76;;467:2:88;7866:3473:81;3430:180:76;;;;;:::i;:::-;;7866:3473:81;3444:31:76;-1:-1:-1;;;;;7866:3473:81;3430:180:76;;;;;;;-1:-1:-1;3430:180:76;;;3216:394;3429:181;;3216:394;;;;;;3430:180;;;;3553:39;3430:180;3553:39;3430:180;;;;;;;:::i;:::-;;;;3216:193;-1:-1:-1;7866:3473:81;;;-1:-1:-1;;;;;;7866:3473:81;3248:161:76;3354:37;;;7866:3473:81;3248:161:76;7866:3473:81;;;;;;;;;;3248:161:76;;;;;;;:::i;:::-;;7866:3473:81;3262:29:76;-1:-1:-1;;;;;7866:3473:81;3248:161:76;;;;;;;-1:-1:-1;3248:161:76;;;3216:193;3247:162;;3216:193;;;3248:161;;;;;;;;;;;;;;:::i;:::-;;;;3082:107;3139:39;;;;;;;;;;;;;:::i;:::-;3082:107;;;;;7866:3473:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;8889:1:86;7866:3473:81;;;;;;;:::o;:::-;;:::i;3740:389:76:-;3918:5;7866:3473:81;;;-1:-1:-1;;;3853:71:76;;;-1:-1:-1;;;;;7866:3473:81;;;3853:71:76;;;7866:3473:81;;;;;;;;3740:389:76;;7866:3473:81;3853:71:76;;7866:3473:81;;3853:71:76;7866:3473:81;;;3867:29:76;7866:3473:81;;3853:71:76;;;;;;;3918:5;3853:71;;;3740:389;3852:72;;7866:3473:81;;;3852:181:76;;3740:389;3835:242;;;;;;4094:28;;;:::i;3835:242::-;4058:8;;3918:5;4058:8;:::o;3852:181::-;7866:3473:81;;3945:88:76;;;-1:-1:-1;;;;;7866:3473:81;;3853:71:76;3945:88;;7866:3473:81;467:2:88;7866:3473:81;;;;;;;;-1:-1:-1;7866:3473:81;;;;;;;;3959:31:76;7866:3473:81;3945:88:76;;;;;;;3918:5;3945:88;;;3852:181;3944:89;;;3852:181;;;;;3945:88;;;;;;-1:-1:-1;3945:88:76;;;;;;:::i;:::-;;;;;3853:71;;;;;;;;;;;;;;:::i;:::-;;;;4148:103:23;966:10:27;-1:-1:-1;7866:3473:81;;;;;;;;;952:44:77;;7866:3473:81;;3901:31:23;7866:3473:81;;4468:23:23;4464:108;;4148:103;:::o;:::-;966:10:27;-1:-1:-1;7866:3473:81;;;;;;;;;795:35:77;;7866:3473:81;;3901:31:23;7866:3473:81;4148:103:23;-1:-1:-1;7866:3473:81;;;-1:-1:-1;;;;;;;;;;;7866:3473:81;;;;;;;;966:10:27;7866:3473:81;;;;;;;;;3901:31:23;7866:3473:81;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7866:3473:81;;-1:-1:-1;7866:3473:81;;;-1:-1:-1;7866:3473:81;:::o;:::-;;:::i;:::-;;;;;-1:-1:-1;;;7866:3473:81;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7866:3473:81;;;;;;;;:::o;6246:584:86:-;;;;;6360:12;;;7866:3473:81;;;6360:24:86;;6356:75;;6246:584;6474:30;;;;;:::i;:::-;7866:3473:81;;;;;;6578:12:86;;;;:::i;:::-;6604:24;;;;6246:584;-1:-1:-1;6600:188:86;;;-1:-1:-1;;;;;7866:3473:81;;;;;;;6644:21:86;;;:29;:21;;:::i;:29::-;6798:25;6246:584;:::o;6600:188::-;6753:24;;7866:3473:81;;8167:38:60;;-1:-1:-1;;;;;7866:3473:81;;;;;8167:38:60;:::i;:::-;6753:24:86;;;:::i;6604:::-;7866:3473:81;;;;;;6614:14:86;;-1:-1:-1;6604:24:86;;;6356:75;-1:-1:-1;;;7866:3473:81;;;;;;6360:12:86;7866:3473:81;;;;;;;:::i;:::-;;;;;;;;;;;;;;6356:75:86;;;525:595:82;-1:-1:-1;525:595:82;;;;7866:3473:81;;716:88:82;;7866:3473:81;716:88:82;;;;;;;;;783:4;716:88;;;7866:3473:81;;;;;;;;;;;:::i;716:88:82:-;698:107;;;;;;;:::i;:::-;7866:3473:81;;857:45:82;;7866:3473:81;;;;;;;;716:88:82;857:45;;7866:3473:81;:::i;:::-;;;;;;;-1:-1:-1;;;;;7866:3473:81;;;;;857:45:82;716:88;857:45;;;7866:3473:81;;;;:::i;:::-;916:8:82;;912:175;;525:595;:::o;912:175::-;7866:3473:81;;944:22:82;;;940:36;;716:88;990:87;;10580:184:86;7866:3473:81;;10303:8:60;;;:63;-1:-1:-1;10303:63:60;-1:-1:-1;;;;;7866:3473:81;;10726:7:86;7866:3473:81;;10736:12:86;:17;:12;;:17;:::i;:::-;7866:3473:81;;;;;;10580:184:86;:::o;10303:63:60:-;7866:3473:81;;;;;;;;;;13267:109:86;-1:-1:-1;13267:109:86;;-1:-1:-1;13267:109:86;;;7866:3473:81;;;10303:63:60;;7866:3473:81;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;8406:869:86:-;;;7866:3473:81;;8620:15:86;8578:11;8645:18;8678:7;8684:1;8678:7;;8674:241;;8406:869;8939:60;;;;;:::i;:::-;9014:8;;;9010:62;;9252:15;9259:7;7866:3473:81;9219:31:86;7866:3473:81;9130:48:86;9170:7;;;:::i;:::-;9130:48;13267:109;;;;;;13089:293;;9130:48;7866:3473:81;:::i;:::-;;9176:1:86;7866:3473:81;9232:17:86;7866:3473:81;;;;;;;;9232:17:86;;7866:3473:81;-1:-1:-1;;;;;7866:3473:81;;;;9219:12:86;;:31;:::i;7866:3473:81:-;9259:7:86;;:::i;:::-;7866:3473:81;;;;9252:15:86;9176:1;;9188:80;;8406:869::o;9010:62::-;8578:11;;-1:-1:-1;8578:11:86;;-1:-1:-1;8578:11:86;;;;9038:23::o;8674:241::-;8721:14;;;;;:::i;:::-;7866:3473:81;;;;;;;8939:60:86;13267:109;;8578:11;13267:109;8753:55;8759:49;13267:109;;8578:11;13267:109;;7866:3473:81;;;;;;8759:49:86;7866:3473:81;;;;8753:55:86;7866:3473:81;;;8753:55:86;13267:109;;;8828:10;8749:156;8674:241;;8749:156;8883:7;;;;;;:::i;:::-;8749:156;8674:241;;3326:384:28;-1:-1:-1;;;;;;;;;;;1847:1:28;7866:3473:81;;3526:20:28;3522:88;;1847:1;7866:3473:81;;3326:384:28:o;3522:88::-;7866:3473:81;;-1:-1:-1;;;3569:30:28;;;;;4758:308:77;;7866:3473:81;-1:-1:-1;7866:3473:81;4889:13:77;7866:3473:81;;;-1:-1:-1;7866:3473:81;11124:30:86;;;;:::i;:::-;11173;;;-1:-1:-1;11173:30:86;;;;11182:17;;-1:-1:-1;;;;;7866:3473:81;;11182:12:86;;:17;:::i;:::-;7866:3473:81;;;4889:13:77;7866:3473:81;;11173:30:86;4947::77;;;11173::86;4943:117:77;;;;4758:308;;:::o;4943:117::-;4993:56;7866:3473:81;-1:-1:-1;7866:3473:81;4889:13:77;7866:3473:81;;;-1:-1:-1;7866:3473:81;819:34:62;837:15;819:34;:::i;4993:56:77:-;4758:308;;:::o;4947:30::-;4957:20;;-1:-1:-1;4947:30:77;;;;11173::86;;;-1:-1:-1;11173:30:86;;7270:387:23;-1:-1:-1;;;;;7866:3473:81;;-1:-1:-1;7866:3473:81;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2887:71:23;7866:3473:81;;;;-1:-1:-1;7866:3473:81;;;;;;;;;;;-1:-1:-1;;;;;7866:3473:81;;;;;;;;;;-1:-1:-1;;7866:3473:81;7509:4:23;7866:3473:81;;;966:10:27;;-1:-1:-1;;;;;7866:3473:81;-1:-1:-1;7532:40:23;-1:-1:-1;;7532:40:23;7509:4;7586:11;:::o;7270:387::-;-1:-1:-1;;;;;7866:3473:81;;-1:-1:-1;7866:3473:81;;;;;;;;;1356:26:76;;-1:-1:-1;;;;;;;;;;;2887:71:23;7866:3473:81;;3901:31:23;7866:3473:81;;;;-1:-1:-1;7866:3473:81;;;;;;;;;;;-1:-1:-1;;;;;7866:3473:81;;;;;;;;;;-1:-1:-1;;7866:3473:81;7509:4:23;7866:3473:81;;;966:10:27;;-1:-1:-1;;;;;7866:3473:81;;7532:40:23;-1:-1:-1;;7532:40:23;7509:4;7586:11;:::o;7432:219::-;7628:12;;;-1:-1:-1;7628:12:23;:::o;7270:387::-;-1:-1:-1;;;;;7866:3473:81;;-1:-1:-1;7866:3473:81;;;;;;;;;795:35:77;;-1:-1:-1;;;;;;;;;;;2887:71:23;7866:3473:81;;3901:31:23;7866:3473:81;7270:387:23;-1:-1:-1;;;;;7866:3473:81;;-1:-1:-1;7866:3473:81;;;;;;;;;952:44:77;;-1:-1:-1;;;;;;;;;;;2887:71:23;7866:3473:81;;3901:31:23;7866:3473:81;7270:387:23;-1:-1:-1;7866:3473:81;;;-1:-1:-1;;;;;;;;;;;7866:3473:81;;;;;;;;-1:-1:-1;;;;;7866:3473:81;;;;;;;;;;;;3901:31:23;7866:3473:81;7892:388:23;-1:-1:-1;7866:3473:81;;;-1:-1:-1;;;;;;;;;;;7866:3473:81;;;;;;;;-1:-1:-1;;;;;7866:3473:81;;;;;;;;;;;;;;;;-1:-1:-1;7866:3473:81;;;;;;;;;;;-1:-1:-1;;;;;7866:3473:81;;;;;;;;;;-1:-1:-1;;7866:3473:81;;;966:10:27;;-1:-1:-1;;;;;7866:3473:81;;8155:40:23;-1:-1:-1;;8155:40:23;7866:3473:81;8209:11:23;:::o;7866:3473:81:-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;7866:3473:81;;;;;;;;:::i;5907:716:76:-;6030:34;5907:716;6030:34;;;;:::i;:::-;7866:3473:81;;-1:-1:-1;;;6080:41:76;;-1:-1:-1;;;;;7866:3473:81;;;6080:41:76;;;7866:3473:81;;;;;6080:41:76;7866:3473:81;;;6090:13:76;7866:3473:81;;6080:41:76;;;;;;;-1:-1:-1;6080:41:76;;;5907:716;6079:42;;6075:90;;6266:27;7866:3473:81;2540:111:28;6210:14:76;7866:3473:81;2540:111:28;;;:::i;:::-;7866:3473:81;;;;;;-1:-1:-1;;;;;7866:3473:81;;-1:-1:-1;7866:3473:81;;;-1:-1:-1;7866:3473:81;;6210:14:76;6266:27;:::i;:::-;6080:41;6311:15;;7866:3473:81;;;;-1:-1:-1;;;;;;7866:3473:81;-1:-1:-1;;;;;7866:3473:81;;;;;;;;;;;-1:-1:-1;;;;;7866:3473:81;;;;6337:143:76;;5907:716;-1:-1:-1;6493:28:76;7866:3473:81;-1:-1:-1;;;;;7866:3473:81;;;;;;;6489:128:76;;5907:716;:::o;6489:128::-;6551:55;;;:::i;:::-;;5907:716::o;6337:143::-;6404:65;;;:::i;:::-;;6337:143;;;6075:90;7866:3473:81;;-1:-1:-1;;;6144:10:76;;6080:41;;6144:10;6080:41;;;;;;;;;;;;;;:::i;:::-;;;;7866:3473:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::o;7558:604:86:-;;7866:3473:81;;7686:17:86;7682:83;;7866:3473:81;7789:27:86;7866:3473:81;7789:27:86;7866:3473:81;;7789:27:86;;;;;;:::i;:::-;7860:14;;;;;:::i;:::-;7866:3473:81;;;;;;;;;;;;;;;;7888:22:86;;;7884:77;;7975:21;-1:-1:-1;7975:84:86;;;;7558:604;7971:139;;;;8127:28;;;;:::i;7971:139::-;8082:17;;7789:27;8082:17;7866:3473:81;8075:24:86;:::o;7975:84::-;7866:3473:81;;;8009:16:86;7866:3473:81;;8009:16:86;:::i;:::-;7866:3473:81;;;8001:24:86;:57;;;;;7975:84;;;;;;;8001:57;8029:29;8038:8;;;8029:18;8038:8;8029:23;8038:8;;:::i;:::-;8029:18;;:::i;:::-;7866:3473:81;;;;;8029:29:86;;8001:57;;;;7884:77;7933:17;;;;;7789:27;7933:17;7866:3473:81;7926:24:86;:::o;7682:83::-;7726:28;;;;:::i;7866:3473:81:-;;;;;;;;;;-1:-1:-1;;;;;7866:3473:81;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;7866:3473:81;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;3722:766:77:-;;;;;7866:3473:81;;:::i;:::-;;;;3962:16:77;3958:92;;3722:766;7866:3473:81;;4107:67:77;7866:3473:81;;;4146:27:77;4107;:13;7866:3473:81;-1:-1:-1;7866:3473:81;;;;;;;;;4107:27:77;4146;;;;7866:3473:81;;;;;;;;;;;4107:67:77;;;;;;;:::i;:::-;;;;;;;;;;4081:355;4107:67;-1:-1:-1;4107:67:77;;;3722:766;4260:28;4311:93;4260:28;4192:230;4260:28;;4222:67;7866:3473:81;4260:28:77;;;4222:67;;;:::i;:::-;4367:36;;;;;4311:93;;:::i;:::-;4192:230;;:::i;4081:355::-;4450:21;;3722:766;:::o;4107:67::-;4192:230;4107:67;;;;4311:93;4107:67;4146:27;4107:67;4146:27;4107:67;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;3958:92;4107:67;4008:31;;;;;;;;;;;;;;:::i;:::-;3958:92;;;;;4494:258;4635:5;7866:3473:81;;;-1:-1:-1;;;4628:27:77;;7866:3473:81;4494:258:77;;4628:27;;7866:3473:81;;4628:27:77;;7866:3473:81;;-1:-1:-1;;;;;7866:3473:81;4628:27:77;;;;;;;4606:139;4628:27;4635:5;4628:27;;;4494:258;2103:25;2662:52;:43;4657:78;2103:25;;:34;:25;;7866:3473:81;;2103:13:77;7866:3473:81;;;;;;;2103:34:77;7866:3473:81;4635:5:77;7866:3473:81;4628:27:77;;7866:3473:81;;4635:5:77;7866:3473:81;;;;;;;;;;;;;;;;;4628:27:77;4657:78;4628:27;;2662:43;4628:27;2662:52;4628:27;;;;;;;;;;;:::i;:::-;;;;;;14291:213:58;7866:3473:81;14369:24:58;;;;14365:103;;7866:3473:81;14291:213:58;:::o;14365:103::-;7866:3473:81;;;;14416:41:58;;;;;;14447:2;14416:41;;;7866:3473:81;;;;;14416:41:58;10552:388:60;7866:3473:81;;10728:8:60;;;10752:20;;10690:17;10752:20;10690:17;10752:20;10690:17;10752:20;:::o;10724:210::-;7866:3473:81;;;;;;;;;;;13267:109:86;10690:17:60;13267:109:86;;10690:17:60;13267:109:86;;;7866:3473:81;:::i;:::-;;;;;;;13267:109:86;7866:3473:81;;;;;10911:11:60;;7866:3473:81;;10886:37:60;10870:1;10886:37;;;:::o;8587:1642:57:-;8658:6;;8654:45;;9401:7;10201:10;10142:26;10093;10044;9995;9946;9897;9848;7866:3473:81;10189:23:57;9401:7;8663:1;7866:3473:81;;;;10826:16:57;10822:99;;8587:1642;7866:3473:81;;;;10938:15:57;10934:96;;8587:1642;7866:3473:81;;;;11047:15:57;11043:96;;8587:1642;7866:3473:81;;;;11156:15:57;11152:96;;8587:1642;7866:3473:81;;;;11265:14:57;11261:93;;8587:1642;7866:3473:81;;;;11371:14:57;11367:93;;8587:1642;7866:3473:81;;;;11477:14:57;11473:93;;8587:1642;7866:3473:81;;;11579:64:57;;8587:1642;7866:3473:81;;;9858:10:57;;;;:::i;:::-;7866:3473:81;;;;;9848:26:57;9907:10;;;;:::i;9897:26::-;9956:10;;;;:::i;9946:26::-;10005:10;;;;:::i;9995:26::-;10054:10;;;;:::i;10044:26::-;10103:10;;;;:::i;10093:26::-;10152:10;;;;:::i;10142:26::-;10201:10;;;:::i;11579:64::-;7866:3473:81;;11579:64:57;;11473:93;7866:3473:81;11511:11:57;;7866:3473:81;;11473:93:57;;;;11367;7866:3473:81;11405:11:57;;7866:3473:81;;11367:93:57;;;;11261;7866:3473:81;11299:11:57;;7866:3473:81;;11261:93:57;;;;11152:96;7866:3473:81;11191:12:57;;7866:3473:81;;11152:96:57;;;;11043;7866:3473:81;11082:12:57;;7866:3473:81;;11043:96:57;;;;10934;7866:3473:81;10973:12:57;;7866:3473:81;;10934:96:57;;;;10822:99;10862:13;;;7866:3473:81;10822:99:57;;;;12497:447:86;;12694:10;;;;;;12926:11;;;12497:447;:::o;12687:230::-;12734:23;;;;;;;:::i;:::-;13267:109;;-1:-1:-1;13267:109:86;7866:3473:81;13267:109:86;;;-1:-1:-1;13267:109:86;;7866:3473:81;;;;;-1:-1:-1;12771:136:86;7866:3473:81;;;12830:10:86;12771:136;;12687:230;;;;12771:136;7866:3473:81;;12891:1:86;7866:3473:81;;;;;;12771:136:86;7866:3473:81;;:::i;6893:76:25:-;;;:::i;:::-;;;:::i;:::-;1805:1:28;-1:-1:-1;;;;;;;;;;;7866:3473:81;6893:76:25:o;7866:3473:81:-;;;;;;;:::i;:::-;-1:-1:-1;7866:3473:81;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;7866:3473:81;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7866:3473:81;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;5072:1269:77:-;5220:30;5072:1269;7866:3473:81;;:::i;:::-;;5220:30:77;7866:3473:81;;;5220:30:77;;;;;;:::i;:::-;5278:17;;7866:3473:81;5278:17:77;;7866:3473:81;-1:-1:-1;;;;;7866:3473:81;5278:54:77;;:178;;5072:1269;5261:258;;5534:9;5220:30;5549:33;;;5278:17;5591:3;5549:33;;7866:3473:81;;5545:44:77;;;;;5614:36;;;:50;:36;;:::i;:::-;7866:3473:81;-1:-1:-1;;;;;7866:3473:81;;;5614:50:77;;5610:119;;5747:73;5748:72;5783:36;;:33;;;:36;:::i;:::-;5748:72;:::i;:::-;5747:73;;7866:3473:81;5747:73:77;5743:140;;7866:3473:81;;5534:9:77;;5743:140;7866:3473:81;;-1:-1:-1;;;5847:21:77;;;;;5610:119;7866:3473:81;;-1:-1:-1;;;5691:23:77;;;;;5545:44;-1:-1:-1;5923:41:77;;-1:-1:-1;;5923:41:77;;;;5278:17;5973:3;5923:41;;7866:3473:81;;5919:52:77;;;;;5996:44;;;:58;:44;;:::i;:58::-;;5992:127;;6137:90;6138:89;6182:44;;:41;;;:44;:::i;:::-;6138:89;:::i;6137:90::-;6133:157;;7866:3473:81;;5908:9:77;;6133:157;7866:3473:81;;-1:-1:-1;;;6254:21:77;;;;;5992:127;7866:3473:81;;-1:-1:-1;;;6081:23:77;;;;;5919:52;;;;;;6317:17;5072:1269;:::o;5261:258::-;7866:3473:81;;-1:-1:-1;;;5488:20:77;;;;;5278:178;5353:33;5220:30;5353:33;;;7866:3473:81;5353:45:77;:102;5278:178;5353:102;5402:41;;;;;7866:3473:81;5402:53:77;5278:178;;6999:207:86;;7866:3473:81;;9594:15:60;-1:-1:-1;9619:18:60;9652:7;9658:1;9652:7;;9648:234;;6999:207:86;9906:53:60;;;;;:::i;:::-;9977:8;;;:63;-1:-1:-1;9977:63:60;;-1:-1:-1;;;;;7866:3473:81;;7168:7:86;7866:3473:81;;;7178:12:86;;:17;:12;;:17;:::i;9977:63:60:-;9992:41;10025:7;9992:48;10025:7;;:::i;:::-;9992:41;13267:109:86;;;;;;13089:293;;9992:41:60;7866:3473:81;;;;;9992:48:60;9977:63;;;9648:234;9695:14;;;;;:::i;:::-;7866:3473:81;;;;;;;9906:53:60;13267:109:86;;-1:-1:-1;13267:109:86;7866:3473:81;13267:109:86;;;-1:-1:-1;13267:109:86;;7866:3473:81;;;;;9727:48:60;9723:149;7866:3473:81;;;9795:10:60;9723:149;9648:234;;9723:149;9850:7;;;;;;:::i;:::-;9723:149;9648:234;;7866:3473:81;;;;;;;:::i;:::-;-1:-1:-1;7866:3473:81;;;;;;;:::o;11486:272:86:-;;7866:3473:81;11308:22:60;11718:31:86;11486:272;7866:3473:81;;:::i;:::-;;;;:::i;:::-;;11308:22:60;;:::i;:::-;7866:3473:81;;:::i;:::-;;11718:12:86;7866:3473:81;;;;;11731:17:86;7866:3473:81;;;;;11731:17:86;;7866:3473:81;;11718:12:86;;:31;:::i;:::-;7866:3473:81;;;;;;;;;:::i;:::-;;;;;;11731:17:86;11672:79;;7866:3473:81;11486:272:86;:::o;2557:104:57:-;;2641:5;;;;;;:13;2557:104;:::o;2641:13::-;;;2557:104;:::o;7866:3473:81:-;;;-1:-1:-1;;;7866:3473:81;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;7866:3473:81;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;11513:870:60;7866:3473:81;;11513:870:60;;;7866:3473:81;11513:870:60;11672:7;;;;7866:3473:81;11775:28:60;11795:7;;;:::i;7866:3473:81:-;;;;;;;;;;;;;;;;11877:15:60;-1:-1:-1;11873:91:60;;7866:3473:81;;12233:11:60;7866:3473:81;;;12027:16:60;7866:3473:81;;;;;;;12027:16:60;;;;12083:7;12063:43;12083:7;;12063:28;12083:7;;:::i;:::-;12063:28;13267:109:86;;;;;;13089:293;;12063:28:60;7866:3473:81;;;;;;;;;;;;;;;;;12063:43:60;12233:11;7866:3473:81;-1:-1:-1;;;;;7866:3473:81;;;12023:189:60;7866:3473:81;;;12145:52:60;7866:3473:81;12155:41:60;7866:3473:81;;:::i;:::-;;;;;;;;12155:41:60;-1:-1:-1;;;;;7866:3473:81;;12155:41:60;;;7866:3473:81;12145:52:60;:::i;:::-;12023:189;;11873:91;7866:3473:81;;-1:-1:-1;;;11919:30:60;;;;;11668:709;12283:52;7866:3473:81;;12293:41:60;7866:3473:81;;:::i;12293:41:60:-;-1:-1:-1;;;;;7866:3473:81;;12293:41:60;;;7866:3473:81;12145:52:60;:::i;12283:::-;11678:1;12349:17;;:::o;2774:153:57:-;;2900:5;;;2910;;7866:3473:81;;;;;;;;;2774:153:57;:::o;7084:141:25:-;7866:3473:81;-1:-1:-1;;;;;;;;;;;7866:3473:81;;;;7150:18:25;7146:73;;7084:141::o;7146:73::-;7866:3473:81;;-1:-1:-1;;;7191:17:25;;;;;12736:433:60;;12919:10;;;;;;13151:11;;;12736:433;:::o;12912:230::-;12959:23;;;;;;;:::i;:::-;13267:109:86;;-1:-1:-1;13267:109:86;7866:3473:81;13267:109:86;;;-1:-1:-1;13267:109:86;;7866:3473:81;;;;;-1:-1:-1;12996:136:60;7866:3473:81;;;13055:10:60;12996:136;;12912:230;;;;12996:136;7866:3473:81;;13116:1:60;7866:3473:81;;;;;;12996:136:60;7866:3473:81;;:::i","linkReferences":{},"immutableReferences":{"57808":[{"start":2349,"length":32}],"57811":[{"start":4427,"length":32}],"58762":[{"start":1953,"length":32},{"start":4484,"length":32}],"58765":[{"start":1250,"length":32},{"start":9830,"length":32}],"58768":[{"start":1612,"length":32},{"start":7136,"length":32},{"start":7439,"length":32}],"58771":[{"start":1823,"length":32},{"start":6983,"length":32},{"start":7565,"length":32}],"61662":[{"start":3772,"length":32},{"start":6042,"length":32}],"61664":[{"start":3215,"length":32},{"start":6203,"length":32}],"61666":[{"start":4175,"length":32}],"62368":[{"start":1686,"length":32},{"start":5260,"length":32}]}},"methodIdentifiers":{"BASE_DELEGATOR_HINTS()":"79d89614","DEFAULT_ADMIN_ROLE()":"a217fddf","FACTORY()":"2dd31000","HOOK_GAS_LIMIT()":"ff54740f","HOOK_RESERVE()":"557cab44","HOOK_SET_ROLE()":"6679191e","NETWORK_LIMIT_SET_ROLE()":"7d24bb27","NETWORK_REGISTRY()":"c0cd7c3e","OPERATOR_NETWORK_LIMIT_SET_ROLE()":"518504ba","OPERATOR_NETWORK_OPT_IN_SERVICE()":"1a80e500","OPERATOR_VAULT_OPT_IN_SERVICE()":"128e5d82","OPT_IN_SERVICE_HINTS()":"9b656b22","TYPE()":"bb24fe8a","VAULT_FACTORY()":"103f2907","VAULT_HINTS()":"45e78fcb","VERSION()":"ffa1ad74","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","hook()":"7f5a7c7b","initialize(bytes)":"439fab91","maxNetworkLimit(bytes32)":"d15b740e","networkLimit(bytes32)":"3eb22c0f","networkLimitAt(bytes32,uint48,bytes)":"5d32a1c9","networkLimitHint(address,bytes32,uint48)":"da749d2b","networkLimitHintInternal(bytes32,uint48)":"197aa7ea","onSlash(bytes32,address,uint256,uint48,bytes)":"e49561ee","operatorNetworkLimit(bytes32,address)":"11422095","operatorNetworkLimitAt(bytes32,address,uint48,bytes)":"94d2558a","operatorNetworkLimitHint(address,bytes32,address,uint48)":"10a28b5d","operatorNetworkLimitHintInternal(bytes32,address,uint48)":"f7b05547","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","setHook(address)":"3dfd3873","setMaxNetworkLimit(uint96,uint256)":"23f752d5","setNetworkLimit(bytes32,uint256)":"02145348","setOperatorNetworkLimit(bytes32,address,uint256)":"020cf0c2","stake(bytes32,address)":"fd4d447c","stakeAt(bytes32,address,uint48,bytes)":"e02f6937","stakeHints(address,bytes32,address,uint48)":"25dc9708","staticDelegateCall(address,bytes)":"9f86fd85","supportsInterface(bytes4)":"01ffc9a7","vault()":"fbfa77cf"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"baseDelegatorHints\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"vaultHints\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"optInServiceHints\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadySet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CheckpointUnorderedInsertion\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DuplicateRoleHolder\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedsMaxNetworkLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExternalCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientHookGas\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingRoleHolders\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotNetwork\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotSlasher\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressRoleHolder\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"}],\"name\":\"OnSlash\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"hook\",\"type\":\"address\"}],\"name\":\"SetHook\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"SetMaxNetworkLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"SetNetworkLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"SetOperatorNetworkLimit\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BASE_DELEGATOR_HINTS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HOOK_GAS_LIMIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HOOK_RESERVE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HOOK_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NETWORK_LIMIT_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NETWORK_REGISTRY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_NETWORK_LIMIT_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_NETWORK_OPT_IN_SERVICE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_VAULT_OPT_IN_SERVICE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPT_IN_SERVICE_HINTS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TYPE\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VAULT_FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VAULT_HINTS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VERSION\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hook\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"}],\"name\":\"maxNetworkLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"}],\"name\":\"networkLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"networkLimitAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"networkLimitHint\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"networkLimitHintInternal\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"exists\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"hint\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"operatorNetworkLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"operatorNetworkLimitAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"operatorNetworkLimitHint\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"operatorNetworkLimitHintInternal\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"exists\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"hint\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"hook_\",\"type\":\"address\"}],\"name\":\"setHook\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint96\",\"name\":\"identifier\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"setMaxNetworkLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"setNetworkLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"setOperatorNetworkLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"stake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hints\",\"type\":\"bytes\"}],\"name\":\"stakeAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"stakeHints\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"staticDelegateCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"CheckpointUnorderedInsertion()\":[{\"details\":\"A value was attempted to be inserted on a past checkpoint.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"OnSlash(bytes32,address,uint256,uint48)\":{\"params\":{\"amount\":\"amount of the collateral to be slashed\",\"captureTimestamp\":\"time point when the stake was captured\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"SetHook(address)\":{\"params\":{\"hook\":\"address of the hook\"}},\"SetMaxNetworkLimit(bytes32,uint256)\":{\"params\":{\"amount\":\"new maximum subnetwork's limit (how much stake the subnetwork is ready to get)\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"SetNetworkLimit(bytes32,uint256)\":{\"params\":{\"amount\":\"new subnetwork's limit (how much stake the vault curator is ready to give to the subnetwork)\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"SetOperatorNetworkLimit(bytes32,address,uint256)\":{\"params\":{\"amount\":\"new operator's limit for the subnetwork (how much stake the vault curator is ready to give to the operator for the subnetwork)\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}}},\"kind\":\"dev\",\"methods\":{\"VERSION()\":{\"details\":\"Must return 1 for this one.\",\"returns\":{\"_0\":\"version of the delegator\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize(bytes)\":{\"params\":{\"data\":\"some data to use\"}},\"networkLimit(bytes32)\":{\"params\":{\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"_0\":\"limit of the subnetwork\"}},\"networkLimitAt(bytes32,uint48,bytes)\":{\"params\":{\"hint\":\"hint for checkpoint index\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\",\"timestamp\":\"time point to get the subnetwork limit at\"},\"returns\":{\"_0\":\"limit of the subnetwork at the given timestamp\"}},\"onSlash(bytes32,address,uint256,uint48,bytes)\":{\"details\":\"Only the vault's slasher can call this function.\",\"params\":{\"amount\":\"amount of the collateral slashed\",\"captureTimestamp\":\"time point when the stake was captured\",\"data\":\"some additional data\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"operatorNetworkLimit(bytes32,address)\":{\"params\":{\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"_0\":\"limit of the operator for the subnetwork\"}},\"operatorNetworkLimitAt(bytes32,address,uint48,bytes)\":{\"params\":{\"hint\":\"hint for checkpoint index\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\",\"timestamp\":\"time point to get the operator's limit for the subnetwork at\"},\"returns\":{\"_0\":\"limit of the operator for the subnetwork at the given timestamp\"}},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"setHook(address)\":{\"details\":\"Only a HOOK_SET_ROLE holder can call this function. The hook can have arbitrary logic under certain functions, however, it doesn't affect the stake guarantees.\",\"params\":{\"hook\":\"address of the hook\"}},\"setMaxNetworkLimit(uint96,uint256)\":{\"details\":\"Only a network can call this function.\",\"params\":{\"amount\":\"new maximum subnetwork's limit\"}},\"setNetworkLimit(bytes32,uint256)\":{\"details\":\"Only a NETWORK_LIMIT_SET_ROLE holder can call this function.\",\"params\":{\"amount\":\"new limit of the subnetwork\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"setOperatorNetworkLimit(bytes32,address,uint256)\":{\"details\":\"Only an OPERATOR_NETWORK_LIMIT_SET_ROLE holder can call this function.\",\"params\":{\"amount\":\"new limit of the operator for the subnetwork\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"stake(bytes32,address)\":{\"details\":\"Warning: this function is not safe to use for stake capturing, as it can change by the end of the block.\",\"params\":{\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"_0\":\"slashable stake until the end of the next epoch\"}},\"stakeAt(bytes32,address,uint48,bytes)\":{\"details\":\"Warning: it is not safe to use timestamp >= current one for the stake capturing, as it can change later.\",\"params\":{\"hints\":\"hints for the checkpoints' indexes\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\",\"timestamp\":\"time point to capture the stake at\"},\"returns\":{\"_0\":\"slashable stake at the given timestamp until the end of the consequent epoch\"}},\"staticDelegateCall(address,bytes)\":{\"details\":\"It allows to use this contract's storage on-chain.\",\"params\":{\"data\":\"data to make a delegatecall with\",\"target\":\"address of the contract to make a delegatecall to\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"events\":{\"OnSlash(bytes32,address,uint256,uint48)\":{\"notice\":\"Emitted when a slash happens.\"},\"SetHook(address)\":{\"notice\":\"Emitted when a hook is set.\"},\"SetMaxNetworkLimit(bytes32,uint256)\":{\"notice\":\"Emitted when a subnetwork's maximum limit is set.\"},\"SetNetworkLimit(bytes32,uint256)\":{\"notice\":\"Emitted when a subnetwork's limit is set.\"},\"SetOperatorNetworkLimit(bytes32,address,uint256)\":{\"notice\":\"Emitted when an operator's limit for a subnetwork is set.\"}},\"kind\":\"user\",\"methods\":{\"FACTORY()\":{\"notice\":\"Get the factory's address.\"},\"HOOK_GAS_LIMIT()\":{\"notice\":\"Get a gas limit for the hook.\"},\"HOOK_RESERVE()\":{\"notice\":\"Get a reserve gas between the gas limit check and the hook's execution.\"},\"HOOK_SET_ROLE()\":{\"notice\":\"Get a hook setter's role.\"},\"NETWORK_LIMIT_SET_ROLE()\":{\"notice\":\"Get a subnetwork limit setter's role.\"},\"NETWORK_REGISTRY()\":{\"notice\":\"Get the network registry's address.\"},\"OPERATOR_NETWORK_LIMIT_SET_ROLE()\":{\"notice\":\"Get an operator-subnetwork limit setter's role.\"},\"OPERATOR_NETWORK_OPT_IN_SERVICE()\":{\"notice\":\"Get the operator-network opt-in service's address.\"},\"OPERATOR_VAULT_OPT_IN_SERVICE()\":{\"notice\":\"Get the operator-vault opt-in service's address.\"},\"TYPE()\":{\"notice\":\"Get the entity's type.\"},\"VAULT_FACTORY()\":{\"notice\":\"Get the vault factory's address.\"},\"VERSION()\":{\"notice\":\"Get a version of the delegator (different versions mean different interfaces).\"},\"hook()\":{\"notice\":\"Get the hook's address.\"},\"initialize(bytes)\":{\"notice\":\"Initialize this entity contract by using a given data.\"},\"maxNetworkLimit(bytes32)\":{\"notice\":\"Get a particular subnetwork's maximum limit (meaning the subnetwork is not ready to get more as a stake).\"},\"networkLimit(bytes32)\":{\"notice\":\"Get a subnetwork's limit (how much stake the vault curator is ready to give to the subnetwork).\"},\"networkLimitAt(bytes32,uint48,bytes)\":{\"notice\":\"Get a subnetwork's limit at a given timestamp using a hint (how much stake the vault curator is ready to give to the subnetwork).\"},\"onSlash(bytes32,address,uint256,uint48,bytes)\":{\"notice\":\"Called when a slash happens.\"},\"operatorNetworkLimit(bytes32,address)\":{\"notice\":\"Get an operator's limit for a subnetwork. (how much stake the vault curator is ready to give to the operator for the subnetwork)\"},\"operatorNetworkLimitAt(bytes32,address,uint48,bytes)\":{\"notice\":\"Get an operator's limit for a subnetwork at a given timestamp using a hint (how much stake the vault curator is ready to give to the operator for the subnetwork).\"},\"setHook(address)\":{\"notice\":\"Set a new hook.\"},\"setMaxNetworkLimit(uint96,uint256)\":{\"notice\":\"Set a maximum limit for a subnetwork (how much stake the subnetwork is ready to get). identifier identifier of the subnetwork\"},\"setNetworkLimit(bytes32,uint256)\":{\"notice\":\"Set a subnetwork's limit (how much stake the vault curator is ready to give to the subnetwork).\"},\"setOperatorNetworkLimit(bytes32,address,uint256)\":{\"notice\":\"Set an operator's limit for a subnetwork. (how much stake the vault curator is ready to give to the operator for the subnetwork)\"},\"stake(bytes32,address)\":{\"notice\":\"Get a stake that a given subnetwork will be able to slash for a certain operator until the end of the next epoch (if no cross-slashing and no slashings by the subnetwork).\"},\"stakeAt(bytes32,address,uint48,bytes)\":{\"notice\":\"Get a stake that a given subnetwork could be able to slash for a certain operator at a given timestamp until the end of the consequent epoch using hints (if no cross-slashing and no slashings by the subnetwork).\"},\"staticDelegateCall(address,bytes)\":{\"notice\":\"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data).\"},\"vault()\":{\"notice\":\"Get the vault's address.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/hints/DelegatorHints.sol\":\"FullRestakeDelegatorHints\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://942dad22fbdc1669f025540ba63aa3ccfad5f8458fc5d4525b31ebf272e7af45\",\"dweb:/ipfs/Qmdo4X2M82aM3AMoW2kf2jhYkSCyC4T1pHNd6obdsDFnAB\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45\",\"dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26\",\"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol\":{\"keccak256\":\"0x85a45f3f10014a0f8be41157a32b6a5f905753ea64a4b64e29fc12b7deeecf39\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c3c74009ce36136b36c77c23935b8e4a7b4f253be2da2be4fb4a916b1ce43743\",\"dweb:/ipfs/QmcH36v3iN7SJJuF73AunLR2LtNxhVJ1wm63ph4dPZ4pcL\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x18a7171df639a934592915a520ecb97c5bbc9675a1105607aac8a94e72bf62c6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7478e1f13da69a2867ccd883001d836b75620362e743f196376d63ed0c422a1c\",\"dweb:/ipfs/QmWywcQ9TNfwtoqAxbn25d8C5VrV12PrPS9UjtGe6pL2BA\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xeed0a08b0b091f528356cbc7245891a4c748682d4f6a18055e8e6ca77d12a6cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba80ba06c8e6be852847e4c5f4492cef801feb6558ae09ed705ff2e04ea8b13c\",\"dweb:/ipfs/QmXRJDv3xHLVQCVXg1ZvR35QS9sij5y9NDWYzMfUfAdTHF\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x999f705a027ed6dc2d4e0df2cc4a509852c6bfd11de1c8161bf88832d0503fd0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0798def67258d9a3cc20b2b4da7ebf351a5cefe0abfdd665d2d81f8e32f89b21\",\"dweb:/ipfs/QmPEvJosnPfzHNjKvCv2D3891mA2Ww8eUwkqrxBjuYdHCt\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0xba333517a3add42cd35fe877656fc3dfcc9de53baa4f3aabbd6d12a92e4ea435\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ceacff44c0fdc81e48e0e0b1db87a2076d3c1fb497341de077bf1da9f6b406c\",\"dweb:/ipfs/QmRUo1muMRAewxrKQ7TkXUtknyRoR57AyEkoPpiuZQ8FzX\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/SignatureChecker.sol\":{\"keccak256\":\"0x6b11eb41a228cca35d4b662b4df69fcd75192851365102690f57b2ac01e83fe6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab006a2983ed350d2af21ddcdd835dcae3b8340086cc4d088460da5abd041f69\",\"dweb:/ipfs/QmbEacDhkJZiGrgzLjB4pNtE8Z1uudjDw1DvcDUTVQFsLG\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c\",\"dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0xbdc5e074d7dd6678f67e92b1a51a20226801a407b0e1af3da367c5d1ff4519ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a36cca6b22fff3db16fc789ff6c60eea71d4b156065d4d0c83a0bc5e91a77a8b\",\"dweb:/ipfs/QmYN3exd5AemxjBrN8XMB1p5LbbE16uC3sjbYjwi8AjcGR\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0xc7755af115020049e4140f224f9ee88d7e1799ffb0646f37bf0df24bf6213f58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f09bf94d5274334ec021f61a04659db303f31e60460e14b709c9bf187740111\",\"dweb:/ipfs/QmNvgomZYUwFAt4cZbPWAiTeSZQreGehY9BK5xyVJsUttb\"]},\"src/contracts/common/Entity.sol\":{\"keccak256\":\"0x3d61a932995b8443381f3950542d388223a2c26dd5d29a3274dea3baa7388bd7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7cdf5f03ca72fd263fd32ff59c8d88ddca911ae83896a287d10772c1bbe9b138\",\"dweb:/ipfs/QmbP84r5BWT1Rn9AYTntWSf3xUMTTCohTZJFhbBhDXFoHa\"]},\"src/contracts/common/MigratableEntity.sol\":{\"keccak256\":\"0x2d736f4dacd5d7e7697503bc426c78b8250fe1694ca157965ec178da6807de58\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f1237acf96b4b9f9b69156e068eddd726a6e15bd8e87a18dc999cd4ba4da069c\",\"dweb:/ipfs/QmS6M8fiFFSeuJ4ZKKq1z8W7w4ybeHQSy5TLASGoc1LVic\"]},\"src/contracts/common/StaticDelegateCallable.sol\":{\"keccak256\":\"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764\",\"dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD\"]},\"src/contracts/delegator/BaseDelegator.sol\":{\"keccak256\":\"0x7c54d491fdd4415b764a9c8defa068e56d4c0c8c9419be0053a1d377669290e8\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://9238bfbad0f6eeb0dc7727724de14380f1980b395902269703d5e2ef07e52e10\",\"dweb:/ipfs/QmPJn1V4HNXcEghYvogGuSTF24dSQUPosR5qtsXcmNqRm3\"]},\"src/contracts/delegator/FullRestakeDelegator.sol\":{\"keccak256\":\"0x0a81c4f8e72914563a9cb771e93acf889c71ea36b7bec040e4eb562b199d5af1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6fc66b6ba02da77046a0bbbd1dd407a62c08f52e04486c9cbd2cb1cca3da555f\",\"dweb:/ipfs/QmZQivK1ZnMxfRQQ5aLpV9co5u55wQVNev5Rg1hzAqxhkE\"]},\"src/contracts/delegator/NetworkRestakeDelegator.sol\":{\"keccak256\":\"0xd3a8e6522f9c6fdcc2da837c9023afd6bdff2bce45a35590320c475519e3636d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://58b17a87f6554f08376f9ea7fedf486a4aa75801bf0ad8b23ff5a46959b6b7a3\",\"dweb:/ipfs/QmSTmNh67tYt8CmjVZb57r8N3qX5yeYdMApKPJm3qvQgQw\"]},\"src/contracts/delegator/OperatorNetworkSpecificDelegator.sol\":{\"keccak256\":\"0x031a10722b9ec49048f0952710401131290adb87e71caf294e864e7ac3b98a16\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://72428febc875134b2f29205e6f294634a1c22a7d5c78d6a9cb2f8196f107c9b5\",\"dweb:/ipfs/QmTPwXR6h5oytckmkLrHdKeEMdphJxceDhYUR4zvQeWAwY\"]},\"src/contracts/delegator/OperatorSpecificDelegator.sol\":{\"keccak256\":\"0x630ce62fa30b9f3349ab7a8cf8dbf041319febc6dd757be2f94d3d25944ed328\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c2ac59d47ce57d2a6819ae9833e1a618a371eccff93eb5ab367b201b01f42bfa\",\"dweb:/ipfs/QmdBpGMBivpNPv2WbH8vnCUy5xkVeaxQvGgqi33vKCz1kA\"]},\"src/contracts/hints/DelegatorHints.sol\":{\"keccak256\":\"0x44aa0c396311a54afbc7c73e8dadeed41e3165a4fd13f712b27d63d50fc3376d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://2f255214f3531fc707d88be0d56a7a0aed4180439316d099d760d9118aa83093\",\"dweb:/ipfs/QmZD1w5p1ukJSXumUAjvxwGmkPhn7vsr21Y2atLGEZR2oi\"]},\"src/contracts/hints/Hints.sol\":{\"keccak256\":\"0x8b565df1ae35993c097a9e642002782a8f451f6fd01809cad6bcd345bdf1b99c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://99a19adb01e350a92f534095b3078229df1f2f83077992d75d58d8684be45971\",\"dweb:/ipfs/QmbmwcuswVbzvwHQFTtrJG86oV98GnfxqYTb8cV8u1acox\"]},\"src/contracts/hints/OptInServiceHints.sol\":{\"keccak256\":\"0x95d9407900d27b9f4a1233b772aeed809c07b2dc5b31cfc9fa77ca26514c49e5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://a13a8877e312d7e6b8b85bde3668c5d84ff5ecc83f762cd573f2b7104c64eb42\",\"dweb:/ipfs/QmYV2J55acuGzCNnS3juABuUHY5U1xc8g8o9jwEyFFdeG5\"]},\"src/contracts/hints/VaultHints.sol\":{\"keccak256\":\"0xccb505b7159b769cc114d67b87c2de6b106557f667fc8f3780114baad5c3c442\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6d0c80a908fc16e96a8b5605a0bd53f9e89ad0ef0a738fbbae80ba4d3160749b\",\"dweb:/ipfs/QmXo5UtWoR8YmunqcbBU8rQMm1nvmvjNPoXcVrDhh4pEwR\"]},\"src/contracts/libraries/Checkpoints.sol\":{\"keccak256\":\"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609\",\"dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE\"]},\"src/contracts/libraries/ERC4626Math.sol\":{\"keccak256\":\"0x8441160513c1cbeb1c3b9ee077bcc7e7ce20006b52a77c8dd39ff0ef89699939\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://943f8cc3e26ddf649f465f40c909819f5c864717c4baa339e9e403b9374a4653\",\"dweb:/ipfs/QmXPxi1sUDsrGprZdUgCzoPEosaZMv9ZhygWQ1vAi1phAB\"]},\"src/contracts/libraries/Subnetwork.sol\":{\"keccak256\":\"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56\",\"dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32\"]},\"src/contracts/service/OptInService.sol\":{\"keccak256\":\"0x4e0932077f2686b7990e10d59deb2535334c0d09e52ef6e57c6ab09eca21c4b1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7c00d311032ed4a1743aca7475f3c86ce15cdfc2218108efc3731c03d34a5278\",\"dweb:/ipfs/QmUGGfVwVhaHr5kS4177yKKYiLYzi5qZpkEmvYxBZqazxf\"]},\"src/contracts/vault/Vault.sol\":{\"keccak256\":\"0x2ceff6ed3298c4cad144c99fcc79b51cb9397d6ebef00285b915848b476f8c2e\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://11f2fb3581854f3ab6e82e8d4935d9eb510c903a13c3f022346c2956a58f5307\",\"dweb:/ipfs/QmdUnoXoyYoG9SGWyQZCFyLDRUUX3eXyXetkRvw6jxqqBz\"]},\"src/contracts/vault/VaultStorage.sol\":{\"keccak256\":\"0x57db25b127d77ea3472de53e3a4af3354399655b9268638b99ca5925fa364a56\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://aa763d9a6ec508ae3abfb8228b72b9fd9525279e5135d4962e79ff059feb1173\",\"dweb:/ipfs/QmcbDR6E9wyEpu6V2FkEC4hnWy47zXA9LSKJde6zSGd33Q\"]},\"src/interfaces/common/IEntity.sol\":{\"keccak256\":\"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b\",\"dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv\"]},\"src/interfaces/common/IMigratableEntity.sol\":{\"keccak256\":\"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c\",\"dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds\"]},\"src/interfaces/common/IRegistry.sol\":{\"keccak256\":\"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014\",\"dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK\"]},\"src/interfaces/common/IStaticDelegateCallable.sol\":{\"keccak256\":\"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516\",\"dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi\"]},\"src/interfaces/delegator/IBaseDelegator.sol\":{\"keccak256\":\"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2\",\"dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8\"]},\"src/interfaces/delegator/IDelegatorHook.sol\":{\"keccak256\":\"0xc51aa8d7d1f6c8043ee819b7aeb86da0e993912e1442098df897e299f01f9f46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://adddf5cb2ba282aeb576b26efb28640f865a1721cc9b6eee8b3ee0457a2c9780\",\"dweb:/ipfs/QmNYgAmnLRwWZbhTuQhZs9rx4zcme1df5mEepkrniorSoW\"]},\"src/interfaces/delegator/IFullRestakeDelegator.sol\":{\"keccak256\":\"0xa3c8cb2e45d4d8ce90e95263bea40c01dc400f05ad65bc29597d878606be5e7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://782cf5e201aa4cca037ebafd3807a68ff1cc721d5b8416a35244db0d0607369e\",\"dweb:/ipfs/QmQkJks6x7CKndeTPa9LxgTNygD5uEi7obhADhpq1Lsr9A\"]},\"src/interfaces/delegator/INetworkRestakeDelegator.sol\":{\"keccak256\":\"0xe7030fe30389a147fd710e3436ec346b4842695fd3e65a81b95375c9f1d633fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://739c7e66d301778054f5c90bee45ec9438f68afba8a03eaaac52064c73b115ad\",\"dweb:/ipfs/QmfZ2ytKcTykAc76nxhg8ikUXV8NdBpetqb8W4YWPcox1Z\"]},\"src/interfaces/delegator/IOperatorNetworkSpecificDelegator.sol\":{\"keccak256\":\"0x74b95e64d29769202d45dd277bb830f623ff3d41ce77b80ce3ee4e318a5c71ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e512b903aae5c1b8a028c6e3f4f6223b5cb5d704503cfa6bd37b5346868f5c20\",\"dweb:/ipfs/QmZim9YExsPWtyxyeui993HTKAEmrg8MUcSkZ77Gp2JcuZ\"]},\"src/interfaces/delegator/IOperatorSpecificDelegator.sol\":{\"keccak256\":\"0x72075cab585dc17240cc3e32bc99b92f0d5627ddd988fed680e3e1a52d5a01e4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7448bc90699409ae61d85216b5efc2143a37f0f73354be2aea993bc54afca441\",\"dweb:/ipfs/QmXE4gAxM8pHosZK8mcTcj17puBx484meDCcmrDePskGHZ\"]},\"src/interfaces/service/IOptInService.sol\":{\"keccak256\":\"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337\",\"dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24\"]},\"src/interfaces/slasher/IBaseSlasher.sol\":{\"keccak256\":\"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf\",\"dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx\"]},\"src/interfaces/vault/IVault.sol\":{\"keccak256\":\"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9\",\"dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R\"]},\"src/interfaces/vault/IVaultStorage.sol\":{\"keccak256\":\"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e\",\"dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"baseDelegatorHints","type":"address"},{"internalType":"address","name":"vaultHints","type":"address"},{"internalType":"address","name":"optInServiceHints","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"inputs":[],"type":"error","name":"AlreadySet"},{"inputs":[],"type":"error","name":"CheckpointUnorderedInsertion"},{"inputs":[],"type":"error","name":"DuplicateRoleHolder"},{"inputs":[],"type":"error","name":"ExceedsMaxNetworkLimit"},{"inputs":[],"type":"error","name":"ExternalCall"},{"inputs":[],"type":"error","name":"InsufficientHookGas"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"MissingRoleHolders"},{"inputs":[],"type":"error","name":"NotInitialized"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"NotNetwork"},{"inputs":[],"type":"error","name":"NotSlasher"},{"inputs":[],"type":"error","name":"NotVault"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintDowncast"},{"inputs":[],"type":"error","name":"ZeroAddressRoleHolder"},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint48","name":"captureTimestamp","type":"uint48","indexed":false}],"type":"event","name":"OnSlash","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[{"internalType":"address","name":"hook","type":"address","indexed":true}],"type":"event","name":"SetHook","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"SetMaxNetworkLimit","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"SetNetworkLimit","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"SetOperatorNetworkLimit","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"BASE_DELEGATOR_HINTS","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HOOK_GAS_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HOOK_RESERVE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HOOK_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"NETWORK_LIMIT_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"NETWORK_REGISTRY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_NETWORK_LIMIT_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_NETWORK_OPT_IN_SERVICE","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_VAULT_OPT_IN_SERVICE","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPT_IN_SERVICE_HINTS","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"TYPE","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VAULT_FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VAULT_HINTS","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"VERSION","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"hook","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"}],"stateMutability":"view","type":"function","name":"maxNetworkLimit","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"}],"stateMutability":"view","type":"function","name":"networkLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"networkLimitAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"},{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"networkLimitHint","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"networkLimitHintInternal","outputs":[{"internalType":"bool","name":"exists","type":"bool"},{"internalType":"uint32","name":"hint","type":"uint32"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint48","name":"captureTimestamp","type":"uint48"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"onSlash"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"operatorNetworkLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"operatorNetworkLimitAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"},{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"operatorNetworkLimitHint","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"operatorNetworkLimitHintInternal","outputs":[{"internalType":"bool","name":"exists","type":"bool"},{"internalType":"uint32","name":"hint","type":"uint32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"address","name":"hook_","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setHook"},{"inputs":[{"internalType":"uint96","name":"identifier","type":"uint96"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setMaxNetworkLimit"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setNetworkLimit"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setOperatorNetworkLimit"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"stake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hints","type":"bytes"}],"stateMutability":"view","type":"function","name":"stakeAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"},{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"stakeHints","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"staticDelegateCall"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"vault","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"VERSION()":{"details":"Must return 1 for this one.","returns":{"_0":"version of the delegator"}},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"initialize(bytes)":{"params":{"data":"some data to use"}},"networkLimit(bytes32)":{"params":{"subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"_0":"limit of the subnetwork"}},"networkLimitAt(bytes32,uint48,bytes)":{"params":{"hint":"hint for checkpoint index","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)","timestamp":"time point to get the subnetwork limit at"},"returns":{"_0":"limit of the subnetwork at the given timestamp"}},"onSlash(bytes32,address,uint256,uint48,bytes)":{"details":"Only the vault's slasher can call this function.","params":{"amount":"amount of the collateral slashed","captureTimestamp":"time point when the stake was captured","data":"some additional data","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"}},"operatorNetworkLimit(bytes32,address)":{"params":{"operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"_0":"limit of the operator for the subnetwork"}},"operatorNetworkLimitAt(bytes32,address,uint48,bytes)":{"params":{"hint":"hint for checkpoint index","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)","timestamp":"time point to get the operator's limit for the subnetwork at"},"returns":{"_0":"limit of the operator for the subnetwork at the given timestamp"}},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"setHook(address)":{"details":"Only a HOOK_SET_ROLE holder can call this function. The hook can have arbitrary logic under certain functions, however, it doesn't affect the stake guarantees.","params":{"hook":"address of the hook"}},"setMaxNetworkLimit(uint96,uint256)":{"details":"Only a network can call this function.","params":{"amount":"new maximum subnetwork's limit"}},"setNetworkLimit(bytes32,uint256)":{"details":"Only a NETWORK_LIMIT_SET_ROLE holder can call this function.","params":{"amount":"new limit of the subnetwork","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"}},"setOperatorNetworkLimit(bytes32,address,uint256)":{"details":"Only an OPERATOR_NETWORK_LIMIT_SET_ROLE holder can call this function.","params":{"amount":"new limit of the operator for the subnetwork","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"}},"stake(bytes32,address)":{"details":"Warning: this function is not safe to use for stake capturing, as it can change by the end of the block.","params":{"operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"_0":"slashable stake until the end of the next epoch"}},"stakeAt(bytes32,address,uint48,bytes)":{"details":"Warning: it is not safe to use timestamp >= current one for the stake capturing, as it can change later.","params":{"hints":"hints for the checkpoints' indexes","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)","timestamp":"time point to capture the stake at"},"returns":{"_0":"slashable stake at the given timestamp until the end of the consequent epoch"}},"staticDelegateCall(address,bytes)":{"details":"It allows to use this contract's storage on-chain.","params":{"data":"data to make a delegatecall with","target":"address of the contract to make a delegatecall to"}},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."}},"version":1},"userdoc":{"kind":"user","methods":{"FACTORY()":{"notice":"Get the factory's address."},"HOOK_GAS_LIMIT()":{"notice":"Get a gas limit for the hook."},"HOOK_RESERVE()":{"notice":"Get a reserve gas between the gas limit check and the hook's execution."},"HOOK_SET_ROLE()":{"notice":"Get a hook setter's role."},"NETWORK_LIMIT_SET_ROLE()":{"notice":"Get a subnetwork limit setter's role."},"NETWORK_REGISTRY()":{"notice":"Get the network registry's address."},"OPERATOR_NETWORK_LIMIT_SET_ROLE()":{"notice":"Get an operator-subnetwork limit setter's role."},"OPERATOR_NETWORK_OPT_IN_SERVICE()":{"notice":"Get the operator-network opt-in service's address."},"OPERATOR_VAULT_OPT_IN_SERVICE()":{"notice":"Get the operator-vault opt-in service's address."},"TYPE()":{"notice":"Get the entity's type."},"VAULT_FACTORY()":{"notice":"Get the vault factory's address."},"VERSION()":{"notice":"Get a version of the delegator (different versions mean different interfaces)."},"hook()":{"notice":"Get the hook's address."},"initialize(bytes)":{"notice":"Initialize this entity contract by using a given data."},"maxNetworkLimit(bytes32)":{"notice":"Get a particular subnetwork's maximum limit (meaning the subnetwork is not ready to get more as a stake)."},"networkLimit(bytes32)":{"notice":"Get a subnetwork's limit (how much stake the vault curator is ready to give to the subnetwork)."},"networkLimitAt(bytes32,uint48,bytes)":{"notice":"Get a subnetwork's limit at a given timestamp using a hint (how much stake the vault curator is ready to give to the subnetwork)."},"onSlash(bytes32,address,uint256,uint48,bytes)":{"notice":"Called when a slash happens."},"operatorNetworkLimit(bytes32,address)":{"notice":"Get an operator's limit for a subnetwork. (how much stake the vault curator is ready to give to the operator for the subnetwork)"},"operatorNetworkLimitAt(bytes32,address,uint48,bytes)":{"notice":"Get an operator's limit for a subnetwork at a given timestamp using a hint (how much stake the vault curator is ready to give to the operator for the subnetwork)."},"setHook(address)":{"notice":"Set a new hook."},"setMaxNetworkLimit(uint96,uint256)":{"notice":"Set a maximum limit for a subnetwork (how much stake the subnetwork is ready to get). identifier identifier of the subnetwork"},"setNetworkLimit(bytes32,uint256)":{"notice":"Set a subnetwork's limit (how much stake the vault curator is ready to give to the subnetwork)."},"setOperatorNetworkLimit(bytes32,address,uint256)":{"notice":"Set an operator's limit for a subnetwork. (how much stake the vault curator is ready to give to the operator for the subnetwork)"},"stake(bytes32,address)":{"notice":"Get a stake that a given subnetwork will be able to slash for a certain operator until the end of the next epoch (if no cross-slashing and no slashings by the subnetwork)."},"stakeAt(bytes32,address,uint48,bytes)":{"notice":"Get a stake that a given subnetwork could be able to slash for a certain operator at a given timestamp until the end of the consequent epoch using hints (if no cross-slashing and no slashings by the subnetwork)."},"staticDelegateCall(address,bytes)":{"notice":"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data)."},"vault()":{"notice":"Get the vault's address."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/hints/DelegatorHints.sol":"FullRestakeDelegatorHints"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol":{"keccak256":"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74","urls":["bzz-raw://942dad22fbdc1669f025540ba63aa3ccfad5f8458fc5d4525b31ebf272e7af45","dweb:/ipfs/Qmdo4X2M82aM3AMoW2kf2jhYkSCyC4T1pHNd6obdsDFnAB"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8","urls":["bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45","dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41","urls":["bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26","dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol":{"keccak256":"0x85a45f3f10014a0f8be41157a32b6a5f905753ea64a4b64e29fc12b7deeecf39","urls":["bzz-raw://c3c74009ce36136b36c77c23935b8e4a7b4f253be2da2be4fb4a916b1ce43743","dweb:/ipfs/QmcH36v3iN7SJJuF73AunLR2LtNxhVJ1wm63ph4dPZ4pcL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol":{"keccak256":"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92","urls":["bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a","dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70","urls":["bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c","dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff","urls":["bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d","dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386","urls":["bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0","dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721","urls":["bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245","dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol":{"keccak256":"0x18a7171df639a934592915a520ecb97c5bbc9675a1105607aac8a94e72bf62c6","urls":["bzz-raw://7478e1f13da69a2867ccd883001d836b75620362e743f196376d63ed0c422a1c","dweb:/ipfs/QmWywcQ9TNfwtoqAxbn25d8C5VrV12PrPS9UjtGe6pL2BA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418","urls":["bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c","dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792","urls":["bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453","dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0xeed0a08b0b091f528356cbc7245891a4c748682d4f6a18055e8e6ca77d12a6cf","urls":["bzz-raw://ba80ba06c8e6be852847e4c5f4492cef801feb6558ae09ed705ff2e04ea8b13c","dweb:/ipfs/QmXRJDv3xHLVQCVXg1ZvR35QS9sij5y9NDWYzMfUfAdTHF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol":{"keccak256":"0x999f705a027ed6dc2d4e0df2cc4a509852c6bfd11de1c8161bf88832d0503fd0","urls":["bzz-raw://0798def67258d9a3cc20b2b4da7ebf351a5cefe0abfdd665d2d81f8e32f89b21","dweb:/ipfs/QmPEvJosnPfzHNjKvCv2D3891mA2Ww8eUwkqrxBjuYdHCt"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0xba333517a3add42cd35fe877656fc3dfcc9de53baa4f3aabbd6d12a92e4ea435","urls":["bzz-raw://2ceacff44c0fdc81e48e0e0b1db87a2076d3c1fb497341de077bf1da9f6b406c","dweb:/ipfs/QmRUo1muMRAewxrKQ7TkXUtknyRoR57AyEkoPpiuZQ8FzX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/SignatureChecker.sol":{"keccak256":"0x6b11eb41a228cca35d4b662b4df69fcd75192851365102690f57b2ac01e83fe6","urls":["bzz-raw://ab006a2983ed350d2af21ddcdd835dcae3b8340086cc4d088460da5abd041f69","dweb:/ipfs/QmbEacDhkJZiGrgzLjB4pNtE8Z1uudjDw1DvcDUTVQFsLG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe","urls":["bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c","dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72","urls":["bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc","dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol":{"keccak256":"0xbdc5e074d7dd6678f67e92b1a51a20226801a407b0e1af3da367c5d1ff4519ad","urls":["bzz-raw://a36cca6b22fff3db16fc789ff6c60eea71d4b156065d4d0c83a0bc5e91a77a8b","dweb:/ipfs/QmYN3exd5AemxjBrN8XMB1p5LbbE16uC3sjbYjwi8AjcGR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0xc7755af115020049e4140f224f9ee88d7e1799ffb0646f37bf0df24bf6213f58","urls":["bzz-raw://7f09bf94d5274334ec021f61a04659db303f31e60460e14b709c9bf187740111","dweb:/ipfs/QmNvgomZYUwFAt4cZbPWAiTeSZQreGehY9BK5xyVJsUttb"],"license":"MIT"},"src/contracts/common/Entity.sol":{"keccak256":"0x3d61a932995b8443381f3950542d388223a2c26dd5d29a3274dea3baa7388bd7","urls":["bzz-raw://7cdf5f03ca72fd263fd32ff59c8d88ddca911ae83896a287d10772c1bbe9b138","dweb:/ipfs/QmbP84r5BWT1Rn9AYTntWSf3xUMTTCohTZJFhbBhDXFoHa"],"license":"BUSL-1.1"},"src/contracts/common/MigratableEntity.sol":{"keccak256":"0x2d736f4dacd5d7e7697503bc426c78b8250fe1694ca157965ec178da6807de58","urls":["bzz-raw://f1237acf96b4b9f9b69156e068eddd726a6e15bd8e87a18dc999cd4ba4da069c","dweb:/ipfs/QmS6M8fiFFSeuJ4ZKKq1z8W7w4ybeHQSy5TLASGoc1LVic"],"license":"BUSL-1.1"},"src/contracts/common/StaticDelegateCallable.sol":{"keccak256":"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90","urls":["bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764","dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD"],"license":"BUSL-1.1"},"src/contracts/delegator/BaseDelegator.sol":{"keccak256":"0x7c54d491fdd4415b764a9c8defa068e56d4c0c8c9419be0053a1d377669290e8","urls":["bzz-raw://9238bfbad0f6eeb0dc7727724de14380f1980b395902269703d5e2ef07e52e10","dweb:/ipfs/QmPJn1V4HNXcEghYvogGuSTF24dSQUPosR5qtsXcmNqRm3"],"license":"BUSL-1.1"},"src/contracts/delegator/FullRestakeDelegator.sol":{"keccak256":"0x0a81c4f8e72914563a9cb771e93acf889c71ea36b7bec040e4eb562b199d5af1","urls":["bzz-raw://6fc66b6ba02da77046a0bbbd1dd407a62c08f52e04486c9cbd2cb1cca3da555f","dweb:/ipfs/QmZQivK1ZnMxfRQQ5aLpV9co5u55wQVNev5Rg1hzAqxhkE"],"license":"BUSL-1.1"},"src/contracts/delegator/NetworkRestakeDelegator.sol":{"keccak256":"0xd3a8e6522f9c6fdcc2da837c9023afd6bdff2bce45a35590320c475519e3636d","urls":["bzz-raw://58b17a87f6554f08376f9ea7fedf486a4aa75801bf0ad8b23ff5a46959b6b7a3","dweb:/ipfs/QmSTmNh67tYt8CmjVZb57r8N3qX5yeYdMApKPJm3qvQgQw"],"license":"BUSL-1.1"},"src/contracts/delegator/OperatorNetworkSpecificDelegator.sol":{"keccak256":"0x031a10722b9ec49048f0952710401131290adb87e71caf294e864e7ac3b98a16","urls":["bzz-raw://72428febc875134b2f29205e6f294634a1c22a7d5c78d6a9cb2f8196f107c9b5","dweb:/ipfs/QmTPwXR6h5oytckmkLrHdKeEMdphJxceDhYUR4zvQeWAwY"],"license":"BUSL-1.1"},"src/contracts/delegator/OperatorSpecificDelegator.sol":{"keccak256":"0x630ce62fa30b9f3349ab7a8cf8dbf041319febc6dd757be2f94d3d25944ed328","urls":["bzz-raw://c2ac59d47ce57d2a6819ae9833e1a618a371eccff93eb5ab367b201b01f42bfa","dweb:/ipfs/QmdBpGMBivpNPv2WbH8vnCUy5xkVeaxQvGgqi33vKCz1kA"],"license":"BUSL-1.1"},"src/contracts/hints/DelegatorHints.sol":{"keccak256":"0x44aa0c396311a54afbc7c73e8dadeed41e3165a4fd13f712b27d63d50fc3376d","urls":["bzz-raw://2f255214f3531fc707d88be0d56a7a0aed4180439316d099d760d9118aa83093","dweb:/ipfs/QmZD1w5p1ukJSXumUAjvxwGmkPhn7vsr21Y2atLGEZR2oi"],"license":"BUSL-1.1"},"src/contracts/hints/Hints.sol":{"keccak256":"0x8b565df1ae35993c097a9e642002782a8f451f6fd01809cad6bcd345bdf1b99c","urls":["bzz-raw://99a19adb01e350a92f534095b3078229df1f2f83077992d75d58d8684be45971","dweb:/ipfs/QmbmwcuswVbzvwHQFTtrJG86oV98GnfxqYTb8cV8u1acox"],"license":"BUSL-1.1"},"src/contracts/hints/OptInServiceHints.sol":{"keccak256":"0x95d9407900d27b9f4a1233b772aeed809c07b2dc5b31cfc9fa77ca26514c49e5","urls":["bzz-raw://a13a8877e312d7e6b8b85bde3668c5d84ff5ecc83f762cd573f2b7104c64eb42","dweb:/ipfs/QmYV2J55acuGzCNnS3juABuUHY5U1xc8g8o9jwEyFFdeG5"],"license":"BUSL-1.1"},"src/contracts/hints/VaultHints.sol":{"keccak256":"0xccb505b7159b769cc114d67b87c2de6b106557f667fc8f3780114baad5c3c442","urls":["bzz-raw://6d0c80a908fc16e96a8b5605a0bd53f9e89ad0ef0a738fbbae80ba4d3160749b","dweb:/ipfs/QmXo5UtWoR8YmunqcbBU8rQMm1nvmvjNPoXcVrDhh4pEwR"],"license":"BUSL-1.1"},"src/contracts/libraries/Checkpoints.sol":{"keccak256":"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c","urls":["bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609","dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE"],"license":"MIT"},"src/contracts/libraries/ERC4626Math.sol":{"keccak256":"0x8441160513c1cbeb1c3b9ee077bcc7e7ce20006b52a77c8dd39ff0ef89699939","urls":["bzz-raw://943f8cc3e26ddf649f465f40c909819f5c864717c4baa339e9e403b9374a4653","dweb:/ipfs/QmXPxi1sUDsrGprZdUgCzoPEosaZMv9ZhygWQ1vAi1phAB"],"license":"MIT"},"src/contracts/libraries/Subnetwork.sol":{"keccak256":"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe","urls":["bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56","dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32"],"license":"MIT"},"src/contracts/service/OptInService.sol":{"keccak256":"0x4e0932077f2686b7990e10d59deb2535334c0d09e52ef6e57c6ab09eca21c4b1","urls":["bzz-raw://7c00d311032ed4a1743aca7475f3c86ce15cdfc2218108efc3731c03d34a5278","dweb:/ipfs/QmUGGfVwVhaHr5kS4177yKKYiLYzi5qZpkEmvYxBZqazxf"],"license":"BUSL-1.1"},"src/contracts/vault/Vault.sol":{"keccak256":"0x2ceff6ed3298c4cad144c99fcc79b51cb9397d6ebef00285b915848b476f8c2e","urls":["bzz-raw://11f2fb3581854f3ab6e82e8d4935d9eb510c903a13c3f022346c2956a58f5307","dweb:/ipfs/QmdUnoXoyYoG9SGWyQZCFyLDRUUX3eXyXetkRvw6jxqqBz"],"license":"BUSL-1.1"},"src/contracts/vault/VaultStorage.sol":{"keccak256":"0x57db25b127d77ea3472de53e3a4af3354399655b9268638b99ca5925fa364a56","urls":["bzz-raw://aa763d9a6ec508ae3abfb8228b72b9fd9525279e5135d4962e79ff059feb1173","dweb:/ipfs/QmcbDR6E9wyEpu6V2FkEC4hnWy47zXA9LSKJde6zSGd33Q"],"license":"BUSL-1.1"},"src/interfaces/common/IEntity.sol":{"keccak256":"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21","urls":["bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b","dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv"],"license":"MIT"},"src/interfaces/common/IMigratableEntity.sol":{"keccak256":"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4","urls":["bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c","dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds"],"license":"MIT"},"src/interfaces/common/IRegistry.sol":{"keccak256":"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb","urls":["bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014","dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK"],"license":"MIT"},"src/interfaces/common/IStaticDelegateCallable.sol":{"keccak256":"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5","urls":["bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516","dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi"],"license":"MIT"},"src/interfaces/delegator/IBaseDelegator.sol":{"keccak256":"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee","urls":["bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2","dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8"],"license":"MIT"},"src/interfaces/delegator/IDelegatorHook.sol":{"keccak256":"0xc51aa8d7d1f6c8043ee819b7aeb86da0e993912e1442098df897e299f01f9f46","urls":["bzz-raw://adddf5cb2ba282aeb576b26efb28640f865a1721cc9b6eee8b3ee0457a2c9780","dweb:/ipfs/QmNYgAmnLRwWZbhTuQhZs9rx4zcme1df5mEepkrniorSoW"],"license":"MIT"},"src/interfaces/delegator/IFullRestakeDelegator.sol":{"keccak256":"0xa3c8cb2e45d4d8ce90e95263bea40c01dc400f05ad65bc29597d878606be5e7d","urls":["bzz-raw://782cf5e201aa4cca037ebafd3807a68ff1cc721d5b8416a35244db0d0607369e","dweb:/ipfs/QmQkJks6x7CKndeTPa9LxgTNygD5uEi7obhADhpq1Lsr9A"],"license":"MIT"},"src/interfaces/delegator/INetworkRestakeDelegator.sol":{"keccak256":"0xe7030fe30389a147fd710e3436ec346b4842695fd3e65a81b95375c9f1d633fc","urls":["bzz-raw://739c7e66d301778054f5c90bee45ec9438f68afba8a03eaaac52064c73b115ad","dweb:/ipfs/QmfZ2ytKcTykAc76nxhg8ikUXV8NdBpetqb8W4YWPcox1Z"],"license":"MIT"},"src/interfaces/delegator/IOperatorNetworkSpecificDelegator.sol":{"keccak256":"0x74b95e64d29769202d45dd277bb830f623ff3d41ce77b80ce3ee4e318a5c71ec","urls":["bzz-raw://e512b903aae5c1b8a028c6e3f4f6223b5cb5d704503cfa6bd37b5346868f5c20","dweb:/ipfs/QmZim9YExsPWtyxyeui993HTKAEmrg8MUcSkZ77Gp2JcuZ"],"license":"MIT"},"src/interfaces/delegator/IOperatorSpecificDelegator.sol":{"keccak256":"0x72075cab585dc17240cc3e32bc99b92f0d5627ddd988fed680e3e1a52d5a01e4","urls":["bzz-raw://7448bc90699409ae61d85216b5efc2143a37f0f73354be2aea993bc54afca441","dweb:/ipfs/QmXE4gAxM8pHosZK8mcTcj17puBx484meDCcmrDePskGHZ"],"license":"MIT"},"src/interfaces/service/IOptInService.sol":{"keccak256":"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a","urls":["bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337","dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24"],"license":"MIT"},"src/interfaces/slasher/IBaseSlasher.sol":{"keccak256":"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404","urls":["bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf","dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx"],"license":"MIT"},"src/interfaces/vault/IVault.sol":{"keccak256":"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235","urls":["bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9","dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R"],"license":"MIT"},"src/interfaces/vault/IVaultStorage.sol":{"keccak256":"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22","urls":["bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e","dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6"],"license":"MIT"}},"version":1},"id":81} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[{"name":"baseDelegatorHints","type":"address","internalType":"address"},{"name":"vaultHints","type":"address","internalType":"address"},{"name":"optInServiceHints","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"BASE_DELEGATOR_HINTS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"HOOK_GAS_LIMIT","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"HOOK_RESERVE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"HOOK_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"NETWORK_LIMIT_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"NETWORK_REGISTRY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_NETWORK_LIMIT_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_NETWORK_OPT_IN_SERVICE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_VAULT_OPT_IN_SERVICE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"OPT_IN_SERVICE_HINTS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"TYPE","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"VAULT_FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"VAULT_HINTS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"VERSION","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"pure"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"hook","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"maxNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"networkLimit","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"networkLimitAt","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"networkLimitHint","inputs":[{"name":"delegator","type":"address","internalType":"address"},{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"networkLimitHintInternal","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"exists","type":"bool","internalType":"bool"},{"name":"hint","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"onSlash","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","internalType":"uint48"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"operatorNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"operatorNetworkLimitAt","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"operatorNetworkLimitHint","inputs":[{"name":"delegator","type":"address","internalType":"address"},{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"operatorNetworkLimitHintInternal","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"exists","type":"bool","internalType":"bool"},{"name":"hint","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setHook","inputs":[{"name":"hook_","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMaxNetworkLimit","inputs":[{"name":"identifier","type":"uint96","internalType":"uint96"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOperatorNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stake","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"stakeAt","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hints","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"stakeHints","inputs":[{"name":"delegator","type":"address","internalType":"address"},{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"staticDelegateCall","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"vault","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OnSlash","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","indexed":false,"internalType":"uint48"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SetHook","inputs":[{"name":"hook","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SetMaxNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SetNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SetOperatorNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"AlreadySet","inputs":[]},{"type":"error","name":"CheckpointUnorderedInsertion","inputs":[]},{"type":"error","name":"DuplicateRoleHolder","inputs":[]},{"type":"error","name":"ExceedsMaxNetworkLimit","inputs":[]},{"type":"error","name":"ExternalCall","inputs":[]},{"type":"error","name":"InsufficientHookGas","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"MissingRoleHolders","inputs":[]},{"type":"error","name":"NotInitialized","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"NotNetwork","inputs":[]},{"type":"error","name":"NotSlasher","inputs":[]},{"type":"error","name":"NotVault","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ZeroAddressRoleHolder","inputs":[]}],"bytecode":{"object":"0x6101c0346101c857601f61358038819003918201601f19168301916001600160401b0391828411858510176101cc5781606092869260409687528339810103126101c85761004c836101e0565b926100648361005d602084016101e0565b92016101e0565b91306080527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff82871c166101b7578080831603610173575b5050505f60a0525f60c0525f60e052610100935f8552610120935f8552610140905f82526101609283526101809384526101a0948552519461338b96876101f58839608051878181610696015261148c015260a0518761092d015260c0518761114b015260e0518781816107a101526111840152518681816104e2015261266601525185818161064c01528181611be00152611d0f01525184818161071f01528181611b470152611d8d015251838181610ebc015261179a015251828181610c8f015261183b0152518161104f0152f35b6001600160401b0319909116811790915583519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80806100a2565b855163f92ee8a960e01b8152600490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101c85756fe60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a7146102c4578063020cf0c2146102bf57806302145348146102ba578063103f2907146102b557806310a28b5d146102b057806311422095146102ab578063128e5d82146102a6578063197aa7ea146102a15780631a80e5001461029c57806323f752d514610297578063248a9ca31461029257806325dc97081461028d5780632dd31000146102885780632f2ff15d1461028357806336568abe1461027e5780633dfd3873146102795780633eb22c0f14610274578063439fab911461026f57806345e78fcb1461026a578063518504ba14610265578063557cab44146102605780635d32a1c91461025b5780636679191e1461025657806379d89614146102515780637d24bb271461024c5780637f5a7c7b1461024757806391d148541461024257806394d2558a1461023d5780639b656b22146102385780639f86fd8514610233578063a217fddf1461022e578063bb24fe8a14610229578063c0cd7c3e14610224578063d15b740e1461021f578063d547741f1461021a578063da749d2b14610215578063e02f693714610210578063e49561ee1461020b578063f7b0554714610206578063fbfa77cf14610201578063fd4d447c146101fc578063ff54740f146101f75763ffa1ad74146101f2575f80fd5b611557565b61153a565b611510565b6114e9565b611465565b61127a565b61125e565b611229565b6111dd565b6111b3565b61116f565b61112c565b611112565b61107e565b61103a565b610ffc565b610f4c565b610f24565b610eeb565b610ea7565b610e6d565b610e1c565b610cf8565b610cbe565b610c7a565b610b42565b610aec565b6109f3565b6109a8565b61095c565b610918565b6108fb565b6108c2565b61074e565b61070a565b61067b565b610637565b6105e8565b6105b3565b6104cd565b610410565b61032f565b3461031a57602036600319011261031a5760043563ffffffff60e01b811680910361031a57602090637965db0b60e01b8114908115610309575b506040519015158152f35b6301ffc9a760e01b1490505f6102fe565b5f80fd5b6001600160a01b0381160361031a57565b3461031a57606036600319011261031a5760243560043561034f8261031e565b6044359161035b611e02565b815f526004602052826103896103848360405f209060018060a01b03165f5260205260405f2090565b6120b3565b146103fe5760207ffc9545f07ffadfb668efd0144cdcaf2d6e2c8192dce1ea9fc131934f9c90fc7e91835f52600482526103e9856103da8360405f209060018060a01b03165f5260205260405f2090565b6103e342612b1e565b90611f58565b50506040519485526001600160a01b031693a3005b60405163a741a04560e01b8152600490fd5b3461031a5760408060031936011261031a576004359060243590610432611e5f565b825f526002602052805f205482116104bd57825f52600360205281610458825f206120b3565b146104ad57816104a8916104987e899d104fc3d8820bd96540612bcc5c448c8837b13b9f7faa43ad0728f0c14f946103da875f52600360205260405f2090565b5050519081529081906020820190565b0390a2005b5163a741a04560e01b8152600490fd5b51631eefc06360e31b8152600490fd5b3461031a575f36600319011261031a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6024359065ffffffffffff8216820361031a57565b6044359065ffffffffffff8216820361031a57565b6064359065ffffffffffff8216820361031a57565b608090600319011261031a576004356105688161031e565b90602435906044356105798161031e565b9060643565ffffffffffff8116810361031a5790565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b3461031a576105e46105d06105c736610550565b929190916115b1565b60405191829160208352602083019061058f565b0390f35b3461031a57604036600319011261031a57602061062f61038460243561060d8161031e565b6004355f526004845260405f209060018060a01b03165f5260205260405f2090565b604051908152f35b3461031a575f36600319011261031a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461031a57604036600319011261031a57610694610511565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036106f8576106db906004355f52600360205260405f20612124565b60408051941515855263ffffffff91909116602085015292915050f35b604051637ca475e560e11b8152600490fd5b3461031a575f36600319011261031a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461031a57604036600319011261031a576004356001600160601b038116810361031a576024359061077e612229565b6040516302910f8b60e31b81523360048201526020816024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa9081156108bd575f9161088e575b501561087c576001600160601b03166bffffffffffffffffffffffff193360601b16179080610808835f52600260205260405f2090565b54146103fe57610861817fc67e7929681aa1bccd63f52b3799bf5805f3009f197db6fdf584b14f7fbf608c92610846855f52600260205260405f2090565b556108518185612258565b6040519081529081906020820190565b0390a261087a60015f8051602061331683398151915255565b005b6040516323d53b9760e21b8152600490fd5b6108b0915060203d6020116108b6575b6108a88183610d7e565b810190611649565b5f6107d1565b503d61089e565b61165d565b3461031a57602036600319011261031a576004355f525f805160206132f68339815191526020526020600160405f200154604051908152f35b3461031a576105e46105d061090f36610550565b9291909161174e565b3461031a575f36600319011261031a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461031a57604036600319011261031a5761087a60243560043561097f8261031e565b805f525f805160206132f68339815191526020526109a3600160405f200154611eb5565b612533565b3461031a57604036600319011261031a576024356109c58161031e565b336001600160a01b038216036109e15761087a90600435612569565b60405163334bd91960e11b8152600490fd5b3461031a57602036600319011261031a57600435610a108161031e565b610a18612229565b335f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c60205260409020547fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c9060ff1615610ace57506001546001600160a01b0391821691811682146103fe576001600160a01b03191681176001557f5bbb1d3ebb6a3ad2a0f17ff35e579a83af60604d1d3c2a4c83c62adecadf666d5f80a260015f8051602061331683398151915255005b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b3461031a57602036600319011261031a576004355f526003602052602061062f60405f206120b3565b9181601f8401121561031a578235916001600160401b03831161031a576020838186019501011161031a57565b3461031a57602036600319011261031a576001600160401b0360043581811161031a57610b73903690600401610b15565b5f80516020613336833981519152549260ff8460401c1615931680159081610c72575b6001149081610c68575b159081610c5f575b50610c4d575f80516020613336833981519152805467ffffffffffffffff19166001179055610bdb9183610c2957612631565b610be157005b5f80516020613336833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f80516020613336833981519152805460ff60401b1916600160401b179055612631565b60405163f92ee8a960e01b8152600490fd5b9050155f610ba8565b303b159150610ba0565b849150610b96565b3461031a575f36600319011261031a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461031a575f36600319011261031a5760206040517f15e7c882d74e8821ebf34aaff46fd0e1d53b9393d91490019124113d28dc32a38152f35b3461031a575f36600319011261031a576020604051614e208152f35b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b03821117610d4357604052565b610d14565b606081019081106001600160401b03821117610d4357604052565b608081019081106001600160401b03821117610d4357604052565b90601f801991011681019081106001600160401b03821117610d4357604052565b60405190610dac82610d63565b565b60405190610dac82610d28565b6001600160401b038111610d4357601f01601f191660200190565b81601f8201121561031a57803590610ded82610dbb565b92610dfb6040519485610d7e565b8284526020838301011161031a57815f926020809301838601378301015290565b3461031a57606036600319011261031a57610e35610511565b6044356001600160401b03811161031a57602091610e5a61062f923690600401610dd6565b906004355f526003845260405f20612798565b3461031a575f36600319011261031a5760206040517fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c8152f35b3461031a575f36600319011261031a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461031a575f36600319011261031a5760206040517e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf8152f35b3461031a575f36600319011261031a576001546040516001600160a01b039091168152602090f35b3461031a57604036600319011261031a57602060ff610f9e602435610f708161031e565b6004355f525f805160206132f6833981519152845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b90608060031983011261031a5760043591602435610fc78161031e565b9160443565ffffffffffff8116810361031a5791606435906001600160401b03821161031a57610ff991600401610dd6565b90565b3461031a57602061062f61103561101236610faa565b939190925f526004865260405f209060018060a01b03165f5260205260405f2090565b612798565b3461031a575f36600319011261031a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461031a57604036600319011261031a5760043561109b8161031e565b6024356001600160401b03811161031a575f916110bd83923690600401610b15565b90816040519283928337810184815203915af461110a6110db6119a3565b916110fc60405193849215156020840152604080840152606083019061058f565b03601f198101835282610d7e565b805190602001fd5b3461031a575f36600319011261031a5760206040515f8152f35b3461031a575f36600319011261031a5760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461031a575f36600319011261031a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461031a57602036600319011261031a576004355f526002602052602060405f2054604051908152f35b3461031a57604036600319011261031a5761087a6024356004356112008261031e565b805f525f805160206132f6833981519152602052611224600160405f200154611eb5565b612569565b3461031a57606036600319011261031a576105e46105d060043561124c8161031e565b611254610526565b90602435906119d2565b3461031a57602061062f61127136610faa565b92919091611ad1565b3461031a5760a036600319011261031a5760243560043561129a8261031e565b604435916112a661053b565b90608435906001600160401b03821161031a576112c860049236908401610dd6565b6112d0612229565b5f546020906112f5906112e9906001600160a01b031681565b6001600160a01b031690565b60405163b134427160e01b815294859182905afa9283156108bd575f93611434575b506001600160a01b039283163303611422576001546001600160a01b0316838116611397575b50506040805195865265ffffffffffff909316602086015216927f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed91819081015b0390a361087a60015f8051602061331683398151915255565b9093604051946113ce866113c0602082019363724ab0f760e11b8552858c898d60248701611c5b565b03601f198101885287610d7e565b62042e305a10611410575f61137e938192827f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed9951926203d090f1509361133d565b604051638072475160e01b8152600490fd5b60405163dabc4ad960e01b8152600490fd5b61145791935060203d60201161145e575b61144f8183610d7e565b8101906116d3565b915f611317565b503d611445565b3461031a57606036600319011261031a576024356114828161031e565b61148a610526565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036106f8576114e46106db926004355f52600460205260405f209060018060a01b03165f5260205260405f2090565b612124565b3461031a575f36600319011261031a575f546040516001600160a01b039091168152602090f35b3461031a57604036600319011261031a57602061062f6024356115328161031e565b600435611cd8565b3461031a575f36600319011261031a5760206040516203d0908152f35b3461031a575f36600319011261031a57602060405160018152f35b5190811515820361031a57565b519063ffffffff8216820361031a57565b919082604091031261031a57610ff960206115aa84611572565b930161157f565b91939265ffffffffffff906060956040519363f7b0554760e01b6020860152602485015260018060a01b031660448401521660648201526064815260a08101908082106001600160401b03831117610d4357611622926116139260405261201a565b60208082518301019101611590565b9061162a5750565b90915063ffffffff6040519116602082015260208152610ff981610d28565b9081602091031261031a57610ff990611572565b6040513d5f823e3d90fd5b81601f8201121561031a5780519061167f82610dbb565b9261168d6040519485610d7e565b8284526020838301011161031a57815f9260208093018386015e8301015290565b9060208282031261031a5781516001600160401b03811161031a57610ff99201611668565b9081602091031261031a5751610ff98161031e565b90610ff9916020815261170782516080602084015260a083019061058f565b906080606061173e61172b602087015195601f19968787830301604088015261058f565b604087015186868303018487015261058f565b940151928285030191015261058f565b604051630df8851f60e11b81526001600160a01b03828116600483015260248201849052848116604483015265ffffffffffff8616606483015295606095909491939091905f856084817f00000000000000000000000000000000000000000000000000000000000000008c165afa9485156108bd575f95611945575b5060405163fbfa77cf60e01b8152602081600481888d165afa9081156108bd57611837995f9286928491611926575b5060405163192c0ff760e21b81526001600160a01b03909116600482015265ffffffffffff909216602483015290998a9190829081906044820190565b03917f0000000000000000000000000000000000000000000000000000000000000000165afa9788156108bd575f986118fa575b50908161187d846118839594876119d2565b946115b1565b908251158015906118f0575b80156118e6575b80156118dc575b6118a957505050909150565b6110fc9450610ff993956118bb610d9f565b938452602084015260408301526060820152604051928391602083016116e8565b508151151561189d565b5080511515611896565b508551151561188f565b611883939291985061191d903d805f833e6119158183610d7e565b8101906116ae565b9790919261186b565b61193f915060203d60201161145e5761144f8183610d7e565b5f6117fa565b61195a9195503d805f833e6119158183610d7e565b935f6117cb565b90610ff992915f52600360205260405f20612798565b5f9081526004602090815260408083206001600160a01b03909416835292905220610ff9929190612798565b3d156119cd573d906119b482610dbb565b916119c26040519384610d7e565b82523d5f602084013e565b606090565b611622916116139194939465ffffffffffff60609660405193630cbd53f560e11b6020860152602485015216604483015260448252611a1082610d63565b61201a565b60405190611a2282610d28565b60606020838281520152565b9060208282031261031a5781516001600160401b039283821161031a57019060408282031261031a5760405192611a6484610d28565b825181811161031a5782611a79918501611668565b8452602083015190811161031a57611a919201611668565b602082015290565b6001600160a01b0391821681529116602082015265ffffffffffff9091166040820152608060608201819052610ff99291019061058f565b92611ae190929192828486612973565b929093611aec611a15565b93805180611c3f575b50508415938415611ba9575b8415611b18575b50505050611b135790565b505f90565b602080949550611b43910151604051958694859463530e1d4360e01b865260601c9060048601611a99565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156108bd575f91611b8a575b50155f808080611b08565b611ba3915060203d6020116108b6576108a88183610d7e565b5f611b7f565b5f549094506001600160a01b0316602084865192611bdc604051948593849363530e1d4360e01b85528960048601611a99565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156108bd575f91611c20575b501593611b01565b611c39915060203d6020116108b6576108a88183610d7e565b5f611c18565b611c53929550602080918301019101611a2e565b925f80611af5565b919360a093610ff9969565ffffffffffff938552600180871b031660208501526040840152166060820152816080820152019061058f565b634e487b7160e01b5f52601160045260245ffd5b8115611cb1570490565b634e487b7160e01b5f52601260045260245ffd5b9060018201809211611cd357565b611c93565b5f546040516308834cb560e21b8082526001600160a01b0385811660048401529283166024830152929392602092909183816044817f000000000000000000000000000000000000000000000000000000000000000086165afa9081156108bd575f91611de5575b5015918215611d61575b50509050611d5b57610ff991612a6e565b50505f90565b6040519081526001600160a01b0385166004820152606086901c602482015291508290829060449082907f0000000000000000000000000000000000000000000000000000000000000000165afa9182156108bd575f92611dc8575b505015805f80611d4a565b611dde9250803d106108b6576108a88183610d7e565b5f80611dbd565b611dfc9150843d86116108b6576108a88183610d7e565b5f611d40565b335f9081527f24e48de785eeca8420b70f73d267a66970ccc187d459f2a4b53e74ed92a5ab86602052604090207f15e7c882d74e8821ebf34aaff46fd0e1d53b9393d91490019124113d28dc32a39060ff905b541615610ace5750565b335f9081527f72a65082a5691803ab2b62c9bc729b34205ba1b183d950896526b2fd8714d0c7602052604090207e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf9060ff90611e55565b5f8181525f805160206132f683398151915260209081526040808320338452909152902060ff90611e55565b634e487b7160e01b5f52603260045260245ffd5b8054821015611f0a575f5260205f2001905f90565b611ee1565b90815491600160401b831015610d435782611f32916001610dac95018155611ef5565b90919082549060031b91821b915f19901b1916179055565b5f19810191908211611cd357565b90929192600182019081548015611fea575b5084611f7584612b50565b50949092845493611f85836120b3565b9681611fd5575b5015611fb2575050505f198101908111611cd357611f328591611fae93611ef5565b9190565b611fae949293611fce926001600160d01b03909116919061317e565b5050611f0f565b65ffffffffffff83811691161490505f611f8c565b600160401b811015610d43578060016120069201845583611ef5565b8154905f199060031b1b191690555f611f6a565b5f9190829160405161204f816110fc6020820194639f86fd8560e01b865230602484015260406044840152606483019061058f565b51915afa5061205c6119a3565b8051810160408282031261031a5761207660208301611572565b916040810151916001600160401b03831161031a5761209c926020809201920101611668565b90156120a55790565b805190811561031a57602001fd5b8054806120e257505f5b6001600160d01b03811615611d5b5760016120d89201611ef5565b90549060031b1c90565b5f19908082810111611cd357825f5260205f2001015460301c6120bd565b9060405161210d81610d28565b915465ffffffffffff8116835260301c6020830152565b91908254905f8291600584116121c2575b612140935085612cb4565b9081156121b6576121af6121a66121a06120d861217261216d61216288611f4a565b895f5260205f200190565b612100565b966001612199602061218a8b5165ffffffffffff1690565b9a01516001600160d01b031690565b9101611ef5565b93611f4a565b63ffffffff1690565b6001939291565b5f925082915081908190565b91926121cd81612b89565b8103908111611cd35761214093865f526122016121f68360205f200165ffffffffffff90541690565b65ffffffffffff1690565b65ffffffffffff85161015612217575091612135565b92915061222390611cc5565b90612135565b5f8051602061331683398151915260028154146122465760029055565b604051633ee5aeb560e01b8152600490fd5b90815f52600360205260405f208161226f82612b50565b9193905083156122cd5761228f916001600160d01b031690600101611ef5565b90549060031b1c5b826122c3575b50506122a7575050565b6122bf915f52600360205260405f206103e342612b1e565b5050565b119050815f61229d565b50505f612297565b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260409020545f805160206132f68339815191529060ff16611d5b575f808052602091825260408082206001600160a01b038516835290925220805460ff1916600117905533906001600160a01b03165f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b6001600160a01b0381165f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c602052604090207fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c905f805160206132f68339815191529060ff905b541661244f575f828152602091825260408082206001600160a01b038616835290925220805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b5050505f90565b6001600160a01b0381165f9081527f72a65082a5691803ab2b62c9bc729b34205ba1b183d950896526b2fd8714d0c7602052604090207e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf905f805160206132f68339815191529060ff906123eb565b6001600160a01b0381165f9081527f24e48de785eeca8420b70f73d267a66970ccc187d459f2a4b53e74ed92a5ab86602052604090207f15e7c882d74e8821ebf34aaff46fd0e1d53b9393d91490019124113d28dc32a3905f805160206132f68339815191529060ff906123eb565b5f8181525f805160206132f6833981519152602081815260408084206001600160a01b038716855290915290912060ff906123eb565b5f8181525f805160206132f6833981519152602081815260408084206001600160a01b03871685529091529091205460ff161561244f575f828152602091825260408082206001600160a01b038616835290925220805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b91909160408184031261031a5780356126138161031e565b9260208201356001600160401b03811161031a57610ff99201610dd6565b61263d918101906125fb565b6040516302910f8b60e31b81526001600160a01b039283166004820181905291906020816024817f000000000000000000000000000000000000000000000000000000000000000088165afa9081156108bd575f91612750575b501561273e576126d26040916126cd612718946126b2612d0b565b60018060a01b03166001600160601b0360a01b5f5416175f55565b612e8b565b6020810151600180546001600160a01b0319166001600160a01b0390921691909117905580516001600160a01b031684811661272e575b5001516001600160a01b031690565b9081166127225750565b61272b90612380565b50565b612737906122d5565b505f612709565b6040516362df054560e01b8152600490fd5b612769915060203d6020116108b6576108a88183610d7e565b5f612697565b9081602091031261031a57610ff99061157f565b90600163ffffffff80931601918211611cd357565b9180511561286657806020806127b39351830101910161276f565b916127be83826130bb565b926127cf845165ffffffffffff1690565b9065ffffffffffff808516921682811461285a5782119182612805575b50506127fc57610ff99250612feb565b50506020015190565b9091506128128354611f4a565b63ffffffff83161491821561282b575b50505f806127ec565b6128529192506128466128406121f692612783565b856130bb565b5165ffffffffffff1690565b115f80612822565b50505050506020015190565b50610ff991612feb565b60405190608082018281106001600160401b03821117610d4357604052606080838181528160208201528160408201520152565b9060208282031261031a5781516001600160401b039283821161031a57019060808282031261031a576128d5610d9f565b92825181811161031a57826128eb918501611668565b8452602083015181811161031a5782612905918501611668565b6020850152604083015181811161031a5782612922918501611668565b6040850152606083015190811161031a5761293d9201611668565b606082015290565b9081602091031261031a575190565b60409065ffffffffffff610ff99493168152816020820152019061058f565b9391909361297f612870565b93805180612a4e575b50506129c992939460206129a86112e96112e95f5460018060a01b031690565b8188015190604051808098819463810da75d60e01b83528960048401612954565b03915afa9182156108bd57612a10945f93612a15575b50612a0490612a0493946129f860408a01518284611961565b9360608a015192611977565b90818082109118021890565b915190565b612a04935090612a3f612a049260203d602011612a47575b612a378183610d7e565b810190612945565b9350906129df565b503d612a2d565b6129c994955090602080612a669383010191016128a4565b93925f612988565b5f5460405163bd49c35f60e01b81529290602090849060049082906001600160a01b03165afa9283156108bd575f93612af5575b50610384612ae091612abf610384855f52600360205260405f2090565b935f52600460205260405f209060018060a01b03165f5260205260405f2090565b90818082109118021890818082109118021890565b612ae0919350612b166103849160203d602011612a4757612a378183610d7e565b939150612aa2565b65ffffffffffff90818111612b31571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b805480612b615750505f905f905f90565b5f19918183810111611cd3575f5260205f2001015460019165ffffffffffff82169160301c90565b6001811115610ff957600181600160801b811015612ca2575b612c4a612c40612c36612c2c612c22612c18612c5697600488600160401b612c519a1015612c95575b640100000000811015612c88575b62010000811015612c7b575b610100811015612c6f575b6010811015612c63575b1015612c5b575b60030260011c612c11818b611ca7565b0160011c90565b612c11818a611ca7565b612c118189611ca7565b612c118188611ca7565b612c118187611ca7565b612c118186611ca7565b8093611ca7565b821190565b900390565b60011b612c01565b811c9160021b91612bfa565b60081c91811b91612bf0565b60101c9160081b91612be5565b60201c9160101b91612bd9565b60401c9160201b91612bcb565b50600160401b9050608082901c612ba2565b905b838310612cc35750505090565b909192612cd0818561325b565b90835f5265ffffffffffff808360205f20015416908416105f14612cf85750925b9190612cb6565b93506001810180911115612cf157611c93565b612d13613270565b612d1b613270565b60015f8051602061331683398151915255565b60405190612d3b82610d48565b5f6040838281528260208201520152565b81601f8201121561031a578051916020916001600160401b038411610d43578360051b9060405194612d8085840187610d7e565b8552838086019282010192831161031a578301905b828210612da3575050505090565b8380918351612db18161031e565b815201910190612d95565b9060208282031261031a5781516001600160401b039283821161031a5701908181039260a0841261031a57606060405194612df686610d48565b1261031a57604051612e0781610d48565b8351612e128161031e565b81526020840151612e228161031e565b60208201526040840151612e358161031e565b60408201528452606083015181811161031a5782612e54918501612d4c565b6020850152608083015190811161031a57612e6f9201612d4c565b604082015290565b8051821015611f0a5760209160051b010190565b612ea790612e97612d2e565b5060208082518301019101612dbc565b8051519091906001600160a01b03161580612fd1575b612fbf579060208101905f5b82518051821015612f43576112e9612ee483612ef193612e77565b516001600160a01b031690565b15612f3157612f13612f0f612f0a612ee4848751612e77565b612456565b1590565b612f1f57600101612ec9565b604051635140fefd60e11b8152600490fd5b6040516323cda06760e01b8152600490fd5b506040925050818101905f5b82518051821015612fb6576112e9612ee483612f6a93612e77565b15612fa557612f88612f0f612f83612ee4848751612e77565b6124c4565b612f9457600101612f4f565b8351635140fefd60e11b8152600490fd5b83516323cda06760e01b8152600490fd5b50509150505190565b6040516303501f5960e11b8152600490fd5b506020820151511580612ebd575060408201515115612ebd565b908154905f829160058411613055575b61300693508461329e565b8061302e57505f905b6001600160d01b03821615611d5b57610ff99160016120d89201611ef5565b61304861303d61304f92611f4a565b835f5260205f200190565b5460301c90565b9061300f565b919261306081612b89565b8103908111611cd35761300693855f5265ffffffffffff808360205f20015416908516105f14613091575091612ffb565b92915061309d90611cc5565b90612ffb565b604051906130b082610d28565b5f6020838281520152565b906130e46130de613105926130ce6130a3565b506130d76130a3565b5084611ef5565b50612100565b91600165ffffffffffff845116936020828060d01b03910151169101611ef5565b9054906040519261311584610d28565b835260031b1c602082015290565b8054600160401b811015610d435761314091600182018155611ef5565b61316b57815160209092015160301b65ffffffffffff191665ffffffffffff92909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b80549293928015613231576131956131a091611f4a565b825f5260205f200190565b9182549265ffffffffffff9182851692811680841161321f578793036131e657506131df92509065ffffffffffff82549181199060301b169116179055565b60301c9190565b91505061321a916132066131f8610dae565b65ffffffffffff9093168352565b6001600160d01b0386166020830152613123565b6131df565b604051632520601d60e01b8152600490fd5b5090613256916132426131f8610dae565b6001600160d01b0385166020830152613123565b5f9190565b90808216911860011c8101809111611cd35790565b60ff5f805160206133368339815191525460401c161561328c57565b604051631afcd79f60e31b8152600490fd5b905b8383106132ad5750505090565b9091926132ba818561325b565b90835f5265ffffffffffff808360205f20015416908416105f146132e25750925b91906132a0565b935060018101809111156132db57611c9356fe02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212204499a4e541806b6efe7986c303b25f7c58d6541a27cb7ee070507be47989947d64736f6c63430008190033","sourceMap":"7866:3473:88:-:0;;;;;;;;;;;;;-1:-1:-1;;7866:3473:88;;;;-1:-1:-1;;;;;7866:3473:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;348:4:89;;332:21;;8837:64:22;7866:3473:88;;;;;;;;;7896:76:22;;7866:3473:88;;;;7985:34:22;7981:146;;-1:-1:-1;525:17:76;;;-1:-1:-1;525:17:76;;-1:-1:-1;552:12:76;;-1:-1:-1;2360:34:83;;2404:28;;-1:-1:-1;2404:28:83;;2442:57;;-1:-1:-1;2442:57:83;;2509:61;;-1:-1:-1;2509:61:83;;8343:41:88;;;;8394:24;;;;8428:40;;;;7866:3473;;;;;;;;332:21:89;7866:3473:88;;;;;;;;;;525:17:76;7866:3473:88;;;;;552:12:76;7866:3473:88;;;;;2360:34:83;7866:3473:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7981:146:22;-1:-1:-1;;;;;;7866:3473:88;;;;;;;;;;;;;8087:29:22;;7866:3473:88;;8087:29:22;7981:146;;;;;7896:76;7866:3473:88;;-1:-1:-1;;;7938:23:22;;;;;7866:3473:88;-1:-1:-1;7866:3473:88;;;;;;-1:-1:-1;7866:3473:88;;;;;-1:-1:-1;7866:3473:88;;;;-1:-1:-1;;;;;7866:3473:88;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a7146102c4578063020cf0c2146102bf57806302145348146102ba578063103f2907146102b557806310a28b5d146102b057806311422095146102ab578063128e5d82146102a6578063197aa7ea146102a15780631a80e5001461029c57806323f752d514610297578063248a9ca31461029257806325dc97081461028d5780632dd31000146102885780632f2ff15d1461028357806336568abe1461027e5780633dfd3873146102795780633eb22c0f14610274578063439fab911461026f57806345e78fcb1461026a578063518504ba14610265578063557cab44146102605780635d32a1c91461025b5780636679191e1461025657806379d89614146102515780637d24bb271461024c5780637f5a7c7b1461024757806391d148541461024257806394d2558a1461023d5780639b656b22146102385780639f86fd8514610233578063a217fddf1461022e578063bb24fe8a14610229578063c0cd7c3e14610224578063d15b740e1461021f578063d547741f1461021a578063da749d2b14610215578063e02f693714610210578063e49561ee1461020b578063f7b0554714610206578063fbfa77cf14610201578063fd4d447c146101fc578063ff54740f146101f75763ffa1ad74146101f2575f80fd5b611557565b61153a565b611510565b6114e9565b611465565b61127a565b61125e565b611229565b6111dd565b6111b3565b61116f565b61112c565b611112565b61107e565b61103a565b610ffc565b610f4c565b610f24565b610eeb565b610ea7565b610e6d565b610e1c565b610cf8565b610cbe565b610c7a565b610b42565b610aec565b6109f3565b6109a8565b61095c565b610918565b6108fb565b6108c2565b61074e565b61070a565b61067b565b610637565b6105e8565b6105b3565b6104cd565b610410565b61032f565b3461031a57602036600319011261031a5760043563ffffffff60e01b811680910361031a57602090637965db0b60e01b8114908115610309575b506040519015158152f35b6301ffc9a760e01b1490505f6102fe565b5f80fd5b6001600160a01b0381160361031a57565b3461031a57606036600319011261031a5760243560043561034f8261031e565b6044359161035b611e02565b815f526004602052826103896103848360405f209060018060a01b03165f5260205260405f2090565b6120b3565b146103fe5760207ffc9545f07ffadfb668efd0144cdcaf2d6e2c8192dce1ea9fc131934f9c90fc7e91835f52600482526103e9856103da8360405f209060018060a01b03165f5260205260405f2090565b6103e342612b1e565b90611f58565b50506040519485526001600160a01b031693a3005b60405163a741a04560e01b8152600490fd5b3461031a5760408060031936011261031a576004359060243590610432611e5f565b825f526002602052805f205482116104bd57825f52600360205281610458825f206120b3565b146104ad57816104a8916104987e899d104fc3d8820bd96540612bcc5c448c8837b13b9f7faa43ad0728f0c14f946103da875f52600360205260405f2090565b5050519081529081906020820190565b0390a2005b5163a741a04560e01b8152600490fd5b51631eefc06360e31b8152600490fd5b3461031a575f36600319011261031a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6024359065ffffffffffff8216820361031a57565b6044359065ffffffffffff8216820361031a57565b6064359065ffffffffffff8216820361031a57565b608090600319011261031a576004356105688161031e565b90602435906044356105798161031e565b9060643565ffffffffffff8116810361031a5790565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b3461031a576105e46105d06105c736610550565b929190916115b1565b60405191829160208352602083019061058f565b0390f35b3461031a57604036600319011261031a57602061062f61038460243561060d8161031e565b6004355f526004845260405f209060018060a01b03165f5260205260405f2090565b604051908152f35b3461031a575f36600319011261031a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461031a57604036600319011261031a57610694610511565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036106f8576106db906004355f52600360205260405f20612124565b60408051941515855263ffffffff91909116602085015292915050f35b604051637ca475e560e11b8152600490fd5b3461031a575f36600319011261031a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461031a57604036600319011261031a576004356001600160601b038116810361031a576024359061077e612229565b6040516302910f8b60e31b81523360048201526020816024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa9081156108bd575f9161088e575b501561087c576001600160601b03166bffffffffffffffffffffffff193360601b16179080610808835f52600260205260405f2090565b54146103fe57610861817fc67e7929681aa1bccd63f52b3799bf5805f3009f197db6fdf584b14f7fbf608c92610846855f52600260205260405f2090565b556108518185612258565b6040519081529081906020820190565b0390a261087a60015f8051602061331683398151915255565b005b6040516323d53b9760e21b8152600490fd5b6108b0915060203d6020116108b6575b6108a88183610d7e565b810190611649565b5f6107d1565b503d61089e565b61165d565b3461031a57602036600319011261031a576004355f525f805160206132f68339815191526020526020600160405f200154604051908152f35b3461031a576105e46105d061090f36610550565b9291909161174e565b3461031a575f36600319011261031a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461031a57604036600319011261031a5761087a60243560043561097f8261031e565b805f525f805160206132f68339815191526020526109a3600160405f200154611eb5565b612533565b3461031a57604036600319011261031a576024356109c58161031e565b336001600160a01b038216036109e15761087a90600435612569565b60405163334bd91960e11b8152600490fd5b3461031a57602036600319011261031a57600435610a108161031e565b610a18612229565b335f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c60205260409020547fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c9060ff1615610ace57506001546001600160a01b0391821691811682146103fe576001600160a01b03191681176001557f5bbb1d3ebb6a3ad2a0f17ff35e579a83af60604d1d3c2a4c83c62adecadf666d5f80a260015f8051602061331683398151915255005b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b3461031a57602036600319011261031a576004355f526003602052602061062f60405f206120b3565b9181601f8401121561031a578235916001600160401b03831161031a576020838186019501011161031a57565b3461031a57602036600319011261031a576001600160401b0360043581811161031a57610b73903690600401610b15565b5f80516020613336833981519152549260ff8460401c1615931680159081610c72575b6001149081610c68575b159081610c5f575b50610c4d575f80516020613336833981519152805467ffffffffffffffff19166001179055610bdb9183610c2957612631565b610be157005b5f80516020613336833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f80516020613336833981519152805460ff60401b1916600160401b179055612631565b60405163f92ee8a960e01b8152600490fd5b9050155f610ba8565b303b159150610ba0565b849150610b96565b3461031a575f36600319011261031a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461031a575f36600319011261031a5760206040517f15e7c882d74e8821ebf34aaff46fd0e1d53b9393d91490019124113d28dc32a38152f35b3461031a575f36600319011261031a576020604051614e208152f35b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b03821117610d4357604052565b610d14565b606081019081106001600160401b03821117610d4357604052565b608081019081106001600160401b03821117610d4357604052565b90601f801991011681019081106001600160401b03821117610d4357604052565b60405190610dac82610d63565b565b60405190610dac82610d28565b6001600160401b038111610d4357601f01601f191660200190565b81601f8201121561031a57803590610ded82610dbb565b92610dfb6040519485610d7e565b8284526020838301011161031a57815f926020809301838601378301015290565b3461031a57606036600319011261031a57610e35610511565b6044356001600160401b03811161031a57602091610e5a61062f923690600401610dd6565b906004355f526003845260405f20612798565b3461031a575f36600319011261031a5760206040517fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c8152f35b3461031a575f36600319011261031a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461031a575f36600319011261031a5760206040517e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf8152f35b3461031a575f36600319011261031a576001546040516001600160a01b039091168152602090f35b3461031a57604036600319011261031a57602060ff610f9e602435610f708161031e565b6004355f525f805160206132f6833981519152845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b90608060031983011261031a5760043591602435610fc78161031e565b9160443565ffffffffffff8116810361031a5791606435906001600160401b03821161031a57610ff991600401610dd6565b90565b3461031a57602061062f61103561101236610faa565b939190925f526004865260405f209060018060a01b03165f5260205260405f2090565b612798565b3461031a575f36600319011261031a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461031a57604036600319011261031a5760043561109b8161031e565b6024356001600160401b03811161031a575f916110bd83923690600401610b15565b90816040519283928337810184815203915af461110a6110db6119a3565b916110fc60405193849215156020840152604080840152606083019061058f565b03601f198101835282610d7e565b805190602001fd5b3461031a575f36600319011261031a5760206040515f8152f35b3461031a575f36600319011261031a5760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461031a575f36600319011261031a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461031a57602036600319011261031a576004355f526002602052602060405f2054604051908152f35b3461031a57604036600319011261031a5761087a6024356004356112008261031e565b805f525f805160206132f6833981519152602052611224600160405f200154611eb5565b612569565b3461031a57606036600319011261031a576105e46105d060043561124c8161031e565b611254610526565b90602435906119d2565b3461031a57602061062f61127136610faa565b92919091611ad1565b3461031a5760a036600319011261031a5760243560043561129a8261031e565b604435916112a661053b565b90608435906001600160401b03821161031a576112c860049236908401610dd6565b6112d0612229565b5f546020906112f5906112e9906001600160a01b031681565b6001600160a01b031690565b60405163b134427160e01b815294859182905afa9283156108bd575f93611434575b506001600160a01b039283163303611422576001546001600160a01b0316838116611397575b50506040805195865265ffffffffffff909316602086015216927f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed91819081015b0390a361087a60015f8051602061331683398151915255565b9093604051946113ce866113c0602082019363724ab0f760e11b8552858c898d60248701611c5b565b03601f198101885287610d7e565b62042e305a10611410575f61137e938192827f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed9951926203d090f1509361133d565b604051638072475160e01b8152600490fd5b60405163dabc4ad960e01b8152600490fd5b61145791935060203d60201161145e575b61144f8183610d7e565b8101906116d3565b915f611317565b503d611445565b3461031a57606036600319011261031a576024356114828161031e565b61148a610526565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036106f8576114e46106db926004355f52600460205260405f209060018060a01b03165f5260205260405f2090565b612124565b3461031a575f36600319011261031a575f546040516001600160a01b039091168152602090f35b3461031a57604036600319011261031a57602061062f6024356115328161031e565b600435611cd8565b3461031a575f36600319011261031a5760206040516203d0908152f35b3461031a575f36600319011261031a57602060405160018152f35b5190811515820361031a57565b519063ffffffff8216820361031a57565b919082604091031261031a57610ff960206115aa84611572565b930161157f565b91939265ffffffffffff906060956040519363f7b0554760e01b6020860152602485015260018060a01b031660448401521660648201526064815260a08101908082106001600160401b03831117610d4357611622926116139260405261201a565b60208082518301019101611590565b9061162a5750565b90915063ffffffff6040519116602082015260208152610ff981610d28565b9081602091031261031a57610ff990611572565b6040513d5f823e3d90fd5b81601f8201121561031a5780519061167f82610dbb565b9261168d6040519485610d7e565b8284526020838301011161031a57815f9260208093018386015e8301015290565b9060208282031261031a5781516001600160401b03811161031a57610ff99201611668565b9081602091031261031a5751610ff98161031e565b90610ff9916020815261170782516080602084015260a083019061058f565b906080606061173e61172b602087015195601f19968787830301604088015261058f565b604087015186868303018487015261058f565b940151928285030191015261058f565b604051630df8851f60e11b81526001600160a01b03828116600483015260248201849052848116604483015265ffffffffffff8616606483015295606095909491939091905f856084817f00000000000000000000000000000000000000000000000000000000000000008c165afa9485156108bd575f95611945575b5060405163fbfa77cf60e01b8152602081600481888d165afa9081156108bd57611837995f9286928491611926575b5060405163192c0ff760e21b81526001600160a01b03909116600482015265ffffffffffff909216602483015290998a9190829081906044820190565b03917f0000000000000000000000000000000000000000000000000000000000000000165afa9788156108bd575f986118fa575b50908161187d846118839594876119d2565b946115b1565b908251158015906118f0575b80156118e6575b80156118dc575b6118a957505050909150565b6110fc9450610ff993956118bb610d9f565b938452602084015260408301526060820152604051928391602083016116e8565b508151151561189d565b5080511515611896565b508551151561188f565b611883939291985061191d903d805f833e6119158183610d7e565b8101906116ae565b9790919261186b565b61193f915060203d60201161145e5761144f8183610d7e565b5f6117fa565b61195a9195503d805f833e6119158183610d7e565b935f6117cb565b90610ff992915f52600360205260405f20612798565b5f9081526004602090815260408083206001600160a01b03909416835292905220610ff9929190612798565b3d156119cd573d906119b482610dbb565b916119c26040519384610d7e565b82523d5f602084013e565b606090565b611622916116139194939465ffffffffffff60609660405193630cbd53f560e11b6020860152602485015216604483015260448252611a1082610d63565b61201a565b60405190611a2282610d28565b60606020838281520152565b9060208282031261031a5781516001600160401b039283821161031a57019060408282031261031a5760405192611a6484610d28565b825181811161031a5782611a79918501611668565b8452602083015190811161031a57611a919201611668565b602082015290565b6001600160a01b0391821681529116602082015265ffffffffffff9091166040820152608060608201819052610ff99291019061058f565b92611ae190929192828486612973565b929093611aec611a15565b93805180611c3f575b50508415938415611ba9575b8415611b18575b50505050611b135790565b505f90565b602080949550611b43910151604051958694859463530e1d4360e01b865260601c9060048601611a99565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156108bd575f91611b8a575b50155f808080611b08565b611ba3915060203d6020116108b6576108a88183610d7e565b5f611b7f565b5f549094506001600160a01b0316602084865192611bdc604051948593849363530e1d4360e01b85528960048601611a99565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156108bd575f91611c20575b501593611b01565b611c39915060203d6020116108b6576108a88183610d7e565b5f611c18565b611c53929550602080918301019101611a2e565b925f80611af5565b919360a093610ff9969565ffffffffffff938552600180871b031660208501526040840152166060820152816080820152019061058f565b634e487b7160e01b5f52601160045260245ffd5b8115611cb1570490565b634e487b7160e01b5f52601260045260245ffd5b9060018201809211611cd357565b611c93565b5f546040516308834cb560e21b8082526001600160a01b0385811660048401529283166024830152929392602092909183816044817f000000000000000000000000000000000000000000000000000000000000000086165afa9081156108bd575f91611de5575b5015918215611d61575b50509050611d5b57610ff991612a6e565b50505f90565b6040519081526001600160a01b0385166004820152606086901c602482015291508290829060449082907f0000000000000000000000000000000000000000000000000000000000000000165afa9182156108bd575f92611dc8575b505015805f80611d4a565b611dde9250803d106108b6576108a88183610d7e565b5f80611dbd565b611dfc9150843d86116108b6576108a88183610d7e565b5f611d40565b335f9081527f24e48de785eeca8420b70f73d267a66970ccc187d459f2a4b53e74ed92a5ab86602052604090207f15e7c882d74e8821ebf34aaff46fd0e1d53b9393d91490019124113d28dc32a39060ff905b541615610ace5750565b335f9081527f72a65082a5691803ab2b62c9bc729b34205ba1b183d950896526b2fd8714d0c7602052604090207e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf9060ff90611e55565b5f8181525f805160206132f683398151915260209081526040808320338452909152902060ff90611e55565b634e487b7160e01b5f52603260045260245ffd5b8054821015611f0a575f5260205f2001905f90565b611ee1565b90815491600160401b831015610d435782611f32916001610dac95018155611ef5565b90919082549060031b91821b915f19901b1916179055565b5f19810191908211611cd357565b90929192600182019081548015611fea575b5084611f7584612b50565b50949092845493611f85836120b3565b9681611fd5575b5015611fb2575050505f198101908111611cd357611f328591611fae93611ef5565b9190565b611fae949293611fce926001600160d01b03909116919061317e565b5050611f0f565b65ffffffffffff83811691161490505f611f8c565b600160401b811015610d43578060016120069201845583611ef5565b8154905f199060031b1b191690555f611f6a565b5f9190829160405161204f816110fc6020820194639f86fd8560e01b865230602484015260406044840152606483019061058f565b51915afa5061205c6119a3565b8051810160408282031261031a5761207660208301611572565b916040810151916001600160401b03831161031a5761209c926020809201920101611668565b90156120a55790565b805190811561031a57602001fd5b8054806120e257505f5b6001600160d01b03811615611d5b5760016120d89201611ef5565b90549060031b1c90565b5f19908082810111611cd357825f5260205f2001015460301c6120bd565b9060405161210d81610d28565b915465ffffffffffff8116835260301c6020830152565b91908254905f8291600584116121c2575b612140935085612cb4565b9081156121b6576121af6121a66121a06120d861217261216d61216288611f4a565b895f5260205f200190565b612100565b966001612199602061218a8b5165ffffffffffff1690565b9a01516001600160d01b031690565b9101611ef5565b93611f4a565b63ffffffff1690565b6001939291565b5f925082915081908190565b91926121cd81612b89565b8103908111611cd35761214093865f526122016121f68360205f200165ffffffffffff90541690565b65ffffffffffff1690565b65ffffffffffff85161015612217575091612135565b92915061222390611cc5565b90612135565b5f8051602061331683398151915260028154146122465760029055565b604051633ee5aeb560e01b8152600490fd5b90815f52600360205260405f208161226f82612b50565b9193905083156122cd5761228f916001600160d01b031690600101611ef5565b90549060031b1c5b826122c3575b50506122a7575050565b6122bf915f52600360205260405f206103e342612b1e565b5050565b119050815f61229d565b50505f612297565b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260409020545f805160206132f68339815191529060ff16611d5b575f808052602091825260408082206001600160a01b038516835290925220805460ff1916600117905533906001600160a01b03165f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b6001600160a01b0381165f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c602052604090207fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c905f805160206132f68339815191529060ff905b541661244f575f828152602091825260408082206001600160a01b038616835290925220805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b5050505f90565b6001600160a01b0381165f9081527f72a65082a5691803ab2b62c9bc729b34205ba1b183d950896526b2fd8714d0c7602052604090207e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf905f805160206132f68339815191529060ff906123eb565b6001600160a01b0381165f9081527f24e48de785eeca8420b70f73d267a66970ccc187d459f2a4b53e74ed92a5ab86602052604090207f15e7c882d74e8821ebf34aaff46fd0e1d53b9393d91490019124113d28dc32a3905f805160206132f68339815191529060ff906123eb565b5f8181525f805160206132f6833981519152602081815260408084206001600160a01b038716855290915290912060ff906123eb565b5f8181525f805160206132f6833981519152602081815260408084206001600160a01b03871685529091529091205460ff161561244f575f828152602091825260408082206001600160a01b038616835290925220805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b91909160408184031261031a5780356126138161031e565b9260208201356001600160401b03811161031a57610ff99201610dd6565b61263d918101906125fb565b6040516302910f8b60e31b81526001600160a01b039283166004820181905291906020816024817f000000000000000000000000000000000000000000000000000000000000000088165afa9081156108bd575f91612750575b501561273e576126d26040916126cd612718946126b2612d0b565b60018060a01b03166001600160601b0360a01b5f5416175f55565b612e8b565b6020810151600180546001600160a01b0319166001600160a01b0390921691909117905580516001600160a01b031684811661272e575b5001516001600160a01b031690565b9081166127225750565b61272b90612380565b50565b612737906122d5565b505f612709565b6040516362df054560e01b8152600490fd5b612769915060203d6020116108b6576108a88183610d7e565b5f612697565b9081602091031261031a57610ff99061157f565b90600163ffffffff80931601918211611cd357565b9180511561286657806020806127b39351830101910161276f565b916127be83826130bb565b926127cf845165ffffffffffff1690565b9065ffffffffffff808516921682811461285a5782119182612805575b50506127fc57610ff99250612feb565b50506020015190565b9091506128128354611f4a565b63ffffffff83161491821561282b575b50505f806127ec565b6128529192506128466128406121f692612783565b856130bb565b5165ffffffffffff1690565b115f80612822565b50505050506020015190565b50610ff991612feb565b60405190608082018281106001600160401b03821117610d4357604052606080838181528160208201528160408201520152565b9060208282031261031a5781516001600160401b039283821161031a57019060808282031261031a576128d5610d9f565b92825181811161031a57826128eb918501611668565b8452602083015181811161031a5782612905918501611668565b6020850152604083015181811161031a5782612922918501611668565b6040850152606083015190811161031a5761293d9201611668565b606082015290565b9081602091031261031a575190565b60409065ffffffffffff610ff99493168152816020820152019061058f565b9391909361297f612870565b93805180612a4e575b50506129c992939460206129a86112e96112e95f5460018060a01b031690565b8188015190604051808098819463810da75d60e01b83528960048401612954565b03915afa9182156108bd57612a10945f93612a15575b50612a0490612a0493946129f860408a01518284611961565b9360608a015192611977565b90818082109118021890565b915190565b612a04935090612a3f612a049260203d602011612a47575b612a378183610d7e565b810190612945565b9350906129df565b503d612a2d565b6129c994955090602080612a669383010191016128a4565b93925f612988565b5f5460405163bd49c35f60e01b81529290602090849060049082906001600160a01b03165afa9283156108bd575f93612af5575b50610384612ae091612abf610384855f52600360205260405f2090565b935f52600460205260405f209060018060a01b03165f5260205260405f2090565b90818082109118021890818082109118021890565b612ae0919350612b166103849160203d602011612a4757612a378183610d7e565b939150612aa2565b65ffffffffffff90818111612b31571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b805480612b615750505f905f905f90565b5f19918183810111611cd3575f5260205f2001015460019165ffffffffffff82169160301c90565b6001811115610ff957600181600160801b811015612ca2575b612c4a612c40612c36612c2c612c22612c18612c5697600488600160401b612c519a1015612c95575b640100000000811015612c88575b62010000811015612c7b575b610100811015612c6f575b6010811015612c63575b1015612c5b575b60030260011c612c11818b611ca7565b0160011c90565b612c11818a611ca7565b612c118189611ca7565b612c118188611ca7565b612c118187611ca7565b612c118186611ca7565b8093611ca7565b821190565b900390565b60011b612c01565b811c9160021b91612bfa565b60081c91811b91612bf0565b60101c9160081b91612be5565b60201c9160101b91612bd9565b60401c9160201b91612bcb565b50600160401b9050608082901c612ba2565b905b838310612cc35750505090565b909192612cd0818561325b565b90835f5265ffffffffffff808360205f20015416908416105f14612cf85750925b9190612cb6565b93506001810180911115612cf157611c93565b612d13613270565b612d1b613270565b60015f8051602061331683398151915255565b60405190612d3b82610d48565b5f6040838281528260208201520152565b81601f8201121561031a578051916020916001600160401b038411610d43578360051b9060405194612d8085840187610d7e565b8552838086019282010192831161031a578301905b828210612da3575050505090565b8380918351612db18161031e565b815201910190612d95565b9060208282031261031a5781516001600160401b039283821161031a5701908181039260a0841261031a57606060405194612df686610d48565b1261031a57604051612e0781610d48565b8351612e128161031e565b81526020840151612e228161031e565b60208201526040840151612e358161031e565b60408201528452606083015181811161031a5782612e54918501612d4c565b6020850152608083015190811161031a57612e6f9201612d4c565b604082015290565b8051821015611f0a5760209160051b010190565b612ea790612e97612d2e565b5060208082518301019101612dbc565b8051519091906001600160a01b03161580612fd1575b612fbf579060208101905f5b82518051821015612f43576112e9612ee483612ef193612e77565b516001600160a01b031690565b15612f3157612f13612f0f612f0a612ee4848751612e77565b612456565b1590565b612f1f57600101612ec9565b604051635140fefd60e11b8152600490fd5b6040516323cda06760e01b8152600490fd5b506040925050818101905f5b82518051821015612fb6576112e9612ee483612f6a93612e77565b15612fa557612f88612f0f612f83612ee4848751612e77565b6124c4565b612f9457600101612f4f565b8351635140fefd60e11b8152600490fd5b83516323cda06760e01b8152600490fd5b50509150505190565b6040516303501f5960e11b8152600490fd5b506020820151511580612ebd575060408201515115612ebd565b908154905f829160058411613055575b61300693508461329e565b8061302e57505f905b6001600160d01b03821615611d5b57610ff99160016120d89201611ef5565b61304861303d61304f92611f4a565b835f5260205f200190565b5460301c90565b9061300f565b919261306081612b89565b8103908111611cd35761300693855f5265ffffffffffff808360205f20015416908516105f14613091575091612ffb565b92915061309d90611cc5565b90612ffb565b604051906130b082610d28565b5f6020838281520152565b906130e46130de613105926130ce6130a3565b506130d76130a3565b5084611ef5565b50612100565b91600165ffffffffffff845116936020828060d01b03910151169101611ef5565b9054906040519261311584610d28565b835260031b1c602082015290565b8054600160401b811015610d435761314091600182018155611ef5565b61316b57815160209092015160301b65ffffffffffff191665ffffffffffff92909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b80549293928015613231576131956131a091611f4a565b825f5260205f200190565b9182549265ffffffffffff9182851692811680841161321f578793036131e657506131df92509065ffffffffffff82549181199060301b169116179055565b60301c9190565b91505061321a916132066131f8610dae565b65ffffffffffff9093168352565b6001600160d01b0386166020830152613123565b6131df565b604051632520601d60e01b8152600490fd5b5090613256916132426131f8610dae565b6001600160d01b0385166020830152613123565b5f9190565b90808216911860011c8101809111611cd35790565b60ff5f805160206133368339815191525460401c161561328c57565b604051631afcd79f60e31b8152600490fd5b905b8383106132ad5750505090565b9091926132ba818561325b565b90835f5265ffffffffffff808360205f20015416908416105f146132e25750925b91906132a0565b935060018101809111156132db57611c9356fe02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212204499a4e541806b6efe7986c303b25f7c58d6541a27cb7ee070507be47989947d64736f6c63430008190033","sourceMap":"7866:3473:88:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;-1:-1:-1;;7866:3473:88;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3551:47:19;;;:87;;;;7866:3473:88;;;;;;;;;;3551:87:19;-1:-1:-1;;;1134:40:28;;-1:-1:-1;3551:87:19;;;7866:3473:88;-1:-1:-1;7866:3473:88;;;-1:-1:-1;;;;;7866:3473:88;;;;;:::o;:::-;;;;;;-1:-1:-1;;7866:3473:88;;;;;;;;;;;:::i;:::-;;;3202:4:19;;;:::i;:::-;7866:3473:88;-1:-1:-1;7866:3473:88;;;;;2662:52:84;:43;7866:3473:88;;-1:-1:-1;7866:3473:88;;;;;;;;;;;;;;;;;2662:43:84;:52;:::i;:::-;3458;3454:102;;7866:3473:88;3656:53:84;7866:3473:88;;-1:-1:-1;7866:3473:88;;;;3566:74:84;7866:3473:88;3566:43:84;7866:3473:88;;-1:-1:-1;7866:3473:88;;;;;;;;;;;;;;;;;3566:43:84;819:34:68;837:15;819:34;:::i;:::-;3566:74:84;;:::i;:::-;-1:-1:-1;;7866:3473:88;;;;;-1:-1:-1;;;;;7866:3473:88;;3656:53:84;7866:3473:88;3454:102:84;7866:3473:88;;-1:-1:-1;;;3533:12:84;;7866:3473:88;;3533:12:84;7866:3473:88;;;;;;;;;;;;;;;;;;3202:4:19;;;:::i;:::-;7866:3473:88;-1:-1:-1;7866:3473:88;2910:15:84;7866:3473:88;;;-1:-1:-1;7866:3473:88;;2901:36:84;;2897:98;;7866:3473:88;-1:-1:-1;7866:3473:88;2103:13:84;7866:3473:88;;;2103:34:84;7866:3473:88;-1:-1:-1;7866:3473:88;2103:34:84;:::i;:::-;3009;3005:84;;3099:25;3171:35;3099:25;:56;3171:35;3099:25;;;7866:3473:88;;2103:13:84;7866:3473:88;;;;;;;3099:56:84;-1:-1:-1;;7866:3473:88;;;;;;;;;;;;3171:35:84;;;;7866:3473:88;3005:84:84;7866:3473:88;-1:-1:-1;;;3066:12:84;;7866:3473:88;;3066:12:84;2897:98;7866:3473:88;-1:-1:-1;;;2960:24:84;;7866:3473:88;;2960:24:84;7866:3473:88;;;;;;-1:-1:-1;;7866:3473:88;;;;;;1537:38:83;-1:-1:-1;;;;;7866:3473:88;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;7866:3473:88;;;;;;;;-1:-1:-1;;7866:3473:88;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;7866:3473:88;;;;;2662:52:84;:43;7866:3473:88;;;;;:::i;:::-;;;-1:-1:-1;7866:3473:88;;;;;-1:-1:-1;7866:3473:88;;;;;;;;;;;;;;;;;2662:52:84;7866:3473:88;;;;;;;;;;;;-1:-1:-1;;7866:3473:88;;;;;;1632:54:83;-1:-1:-1;;;;;7866:3473:88;;;;;;;;;;;;-1:-1:-1;;7866:3473:88;;;;;;:::i;:::-;449:5:89;-1:-1:-1;;;;;7866:3473:88;435:10:89;:19;431:71;;8670:64:88;7866:3473;;;-1:-1:-1;7866:3473:88;8670:13;7866:3473;;;-1:-1:-1;7866:3473:88;8670:64;:::i;:::-;7866:3473;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7866:3473:88;431:71:89;7866:3473:88;;-1:-1:-1;;;477:14:89;;7866:3473:88;;477:14:89;7866:3473:88;;;;;;-1:-1:-1;;7866:3473:88;;;;;;1743:56:83;-1:-1:-1;;;;;7866:3473:88;;;;;;;;;;;;-1:-1:-1;;7866:3473:88;;;;;;-1:-1:-1;;;;;7866:3473:88;;;;;;;;3361:103:26;;;:::i;:::-;7866:3473:88;;-1:-1:-1;;;4285:48:83;;4322:10;7866:3473:88;4285:48:83;;7866:3473:88;;;;;-1:-1:-1;;;;;4295:16:83;7866:3473:88;4285:48:83;;;;;;;-1:-1:-1;4285:48:83;;;7866:3473:88;4284:49:83;;4280:99;;-1:-1:-1;;;;;7866:3473:88;-1:-1:-1;;4322:10:83;297:2:95;7866:3473:88;;267:46:95;4459:27:83;;;;7866:3473:88;;4459:15:83;7866:3473:88;;;;;;;4459:27:83;7866:3473:88;4459:37:83;4455:87;;4654:38;4552:27;4654:38;4552:27;;;7866:3473:88;;4459:15:83;7866:3473:88;;;;;;;4552:27:83;7866:3473:88;4631:6:83;;;;:::i;:::-;7866:3473:88;;;;;;;;;;;;;4654:38:83;;;;3426:1:26;1949;-1:-1:-1;;;;;;;;;;;7866:3473:88;3860:283:26;3426:1;7866:3473:88;4280:99:83;7866:3473:88;;-1:-1:-1;;;4356:12:83;;7866:3473:88;;4356:12:83;4285:48;;;;7866:3473:88;4285:48:83;7866:3473:88;4285:48:83;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;7866:3473:88:-;;;;;;-1:-1:-1;;7866:3473:88;;;;;;-1:-1:-1;7866:3473:88;-1:-1:-1;;;;;;;;;;;7866:3473:88;;;4919:24:19;7866:3473:88;-1:-1:-1;7866:3473:88;4919:24:19;7866:3473:88;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;-1:-1:-1;;7866:3473:88;;;;;;322:32:76;-1:-1:-1;;;;;7866:3473:88;;;;;;;;;;;;-1:-1:-1;;7866:3473:88;;;;5350:25:19;7866:3473:88;;;;;;;:::i;:::-;;-1:-1:-1;7866:3473:88;-1:-1:-1;;;;;;;;;;;7866:3473:88;;3202:4:19;4919:24;7866:3473:88;-1:-1:-1;7866:3473:88;4919:24:19;7866:3473:88;3202:4:19;:::i;:::-;5350:25;:::i;7866:3473:88:-;;;;;;-1:-1:-1;;7866:3473:88;;;;;;;;;:::i;:::-;966:10:24;-1:-1:-1;;;;;7866:3473:88;;6441:34:19;6437:102;;6549:37;7866:3473:88;;;6549:37:19;:::i;6437:102::-;7866:3473:88;;-1:-1:-1;;;6498:30:19;;7866:3473:88;;6498:30:19;7866:3473:88;;;;;;-1:-1:-1;;7866:3473:88;;;;;;;;;:::i;:::-;3361:103:26;;:::i;:::-;966:10:24;-1:-1:-1;7866:3473:88;;;;;;;;;;1356:26:83;;7866:3473:88;;4468:23:19;4464:108;;-1:-1:-1;4861:4:83;7866:3473:88;-1:-1:-1;;;;;7866:3473:88;;;;;;4861:13:83;;4857:63;;-1:-1:-1;;;;;;7866:3473:88;;;4861:4:83;7866:3473:88;4958:14:83;-1:-1:-1;;4958:14:83;4861:4;-1:-1:-1;;;;;;;;;;;7866:3473:88;;4464:108:19;7866:3473:88;;;;4514:47:19;;;;;;966:10:24;7866:3473:88;4514:47:19;;7866:3473:88;;;;;4514:47:19;7866:3473:88;;;;;;-1:-1:-1;;7866:3473:88;;;;;;-1:-1:-1;7866:3473:88;2103:13:84;7866:3473:88;;;2103:34:84;7866:3473:88;-1:-1:-1;7866:3473:88;2103:34:84;:::i;7866:3473:88:-;;;;;;;;;;;;;-1:-1:-1;;;;;7866:3473:88;;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;7866:3473:88;;;;-1:-1:-1;;;;;7866:3473:88;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;7866:3473:88;;;;;;;4301:16:22;7866:3473:88;;4726:16:22;;:34;;;;7866:3473:88;4805:1:22;4790:16;:50;;;;7866:3473:88;4855:13:22;:30;;;;7866:3473:88;4851:91:22;;;-1:-1:-1;;;;;;;;;;;7866:3473:88;;-1:-1:-1;;7866:3473:88;;;;;718:4:76;;4951:18:22;4979:67;;718:4:76;:::i;:::-;5066:101:22;;7866:3473:88;5066:101:22;-1:-1:-1;;;;;;;;;;;7866:3473:88;;-1:-1:-1;;;;7866:3473:88;;;;;-1:-1:-1;7866:3473:88;;5142:14:22;;7866:3473:88;;5142:14:22;7866:3473:88;4979:67:22;-1:-1:-1;;;;;;;;;;;7866:3473:88;;-1:-1:-1;;;;7866:3473:88;-1:-1:-1;;;7866:3473:88;;;718:4:76;:::i;4851:91:22:-;7866:3473:88;;-1:-1:-1;;;4908:23:22;;7866:3473:88;;4908:23:22;4855:30;4872:13;;;4855:30;;;4790:50;4818:4;4810:25;:30;;-1:-1:-1;4790:50:22;;4726:34;;;-1:-1:-1;4726:34:22;;7866:3473:88;;;;;;-1:-1:-1;;7866:3473:88;;;;;;8038:36;-1:-1:-1;;;;;7866:3473:88;;;;;;;;;;;;-1:-1:-1;;7866:3473:88;;;;;;;952:44:84;7866:3473:88;;;;;;;;;-1:-1:-1;;7866:3473:88;;;;;;;1253:6:83;7866:3473:88;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7866:3473:88;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;-1:-1:-1;;;;;7866:3473:88;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;7866:3473:88;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;7866:3473:88;;;;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;:::i;:::-;-1:-1:-1;;;;;7866:3473:88;;;;;;-1:-1:-1;;7866:3473:88;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;7866:3473:88;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;7866:3473:88;;;;;;:::i;:::-;;;-1:-1:-1;;;;;7866:3473:88;;;;;;;1870:60:84;7866:3473:88;;;;;;:::i;:::-;;;;-1:-1:-1;7866:3473:88;1870:13:84;7866:3473:88;;;-1:-1:-1;7866:3473:88;1870:60:84;:::i;7866:3473:88:-;;;;;;-1:-1:-1;;7866:3473:88;;;;;;;1356:26:83;7866:3473:88;;;;;;;;;-1:-1:-1;;7866:3473:88;;;;;;7987:45;-1:-1:-1;;;;;7866:3473:88;;;;;;;;;;;;-1:-1:-1;;7866:3473:88;;;;;;;795:35:84;7866:3473:88;;;;;;;;;-1:-1:-1;;7866:3473:88;;;;;;;;-1:-1:-1;;;;;7866:3473:88;;;;;;;;;;;;;;-1:-1:-1;;7866:3473:88;;;;;;3901:31:19;7866:3473:88;;;;;:::i;:::-;;;-1:-1:-1;7866:3473:88;-1:-1:-1;;;;;;;;;;;7866:3473:88;;;-1:-1:-1;7866:3473:88;;;;;;;;;;;;;;;;;3901:31:19;7866:3473:88;;;;;;;;;;;;;-1:-1:-1;;7866:3473:88;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;;;;7866:3473:88;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;2399:78:84;:43;7866:3473:88;;;:::i;:::-;;;;;-1:-1:-1;7866:3473:88;;;;;-1:-1:-1;7866:3473:88;;;;;;;;;;;;;;;;;2399:43:84;:78;:::i;7866:3473:88:-;;;;;;-1:-1:-1;;7866:3473:88;;;;;;8080:45;-1:-1:-1;;;;;7866:3473:88;;;;;;;;;;;;-1:-1:-1;;7866:3473:88;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;7866:3473:88;;;;-1:-1:-1;7866:3473:88;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;416:25:82;;;;477:31;416:25;;:::i;:::-;7866:3473:88;;;;;;;;;;477:31:82;;7866:3473:88;;;;;;;;;;;:::i;:::-;477:31:82;7866:3473:88;;477:31:82;;;;;;:::i;:::-;518:79;;;7866:3473:88;518:79:82;;7866:3473:88;;;;;;-1:-1:-1;;7866:3473:88;;;;;;;;;;;;;;;;;-1:-1:-1;;7866:3473:88;;;;;;;-1:-1:-1;;;;;404:28:76;7866:3473:88;;;;;;;;;;-1:-1:-1;;7866:3473:88;;;;;;1439:41:83;-1:-1:-1;;;;;7866:3473:88;;;;;;;;;;;;-1:-1:-1;;7866:3473:88;;;;;;-1:-1:-1;7866:3473:88;2009:67:83;7866:3473:88;;;;-1:-1:-1;7866:3473:88;;;;;;;;;;;;;;-1:-1:-1;;7866:3473:88;;;;5767:26:19;7866:3473:88;;;;;;;:::i;:::-;;-1:-1:-1;7866:3473:88;-1:-1:-1;;;;;;;;;;;7866:3473:88;;3202:4:19;4919:24;7866:3473:88;-1:-1:-1;7866:3473:88;4919:24:19;7866:3473:88;3202:4:19;:::i;:::-;5767:26;:::i;7866:3473:88:-;;;;;;-1:-1:-1;;7866:3473:88;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;-1:-1:-1;;7866:3473:88;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;7866:3473:88;;;;;;;;;;;;:::i;:::-;3361:103:26;;:::i;:::-;-1:-1:-1;7866:3473:88;;;5246:21:83;;:13;;-1:-1:-1;;;;;7866:3473:88;5246:13:83;7866:3473:88;;-1:-1:-1;;;;;7866:3473:88;;;5246:21:83;7866:3473:88;;-1:-1:-1;;;5246:23:83;;7866:3473:88;;;;;5246:23:83;;;;;;;-1:-1:-1;5246:23:83;;;7866:3473:88;-1:-1:-1;;;;;;7866:3473:88;;;5232:10:83;:37;5228:87;;5341:4;7866:3473:88;-1:-1:-1;;;;;7866:3473:88;;;;5355:469:83;;7866:3473:88;-1:-1:-1;;7866:3473:88;;;;;;;;;;;;;;;;5839:55:83;;7866:3473:88;;;;5839:55:83;;;;3426:1:26;1949;-1:-1:-1;;;;;;;;;;;7866:3473:88;3860:283:26;5355:469:83;7866:3473:88;;;;5435:94:83;;;;7866:3473:88;5435:94:83;;;;;;;;;;;;7866:3473:88;5435:94:83;;;:::i;:::-;;7866:3473:88;;5435:94:83;;;;;;:::i;:::-;7866:3473:88;5548:9:83;:51;5544:118;;-1:-1:-1;5839:55:83;5676:138;;;;5839:55;5676:138;;;1150:7;5676:138;;5355:469;;;5544:118;7866:3473:88;;-1:-1:-1;;;5626:21:83;;7866:3473:88;;5626:21:83;5228:87;7866:3473:88;;-1:-1:-1;;;5292:12:83;;7866:3473:88;;5292:12:83;5246:23;;;;;7866:3473:88;5246:23:83;7866:3473:88;5246:23:83;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;7866:3473:88;;;;;;-1:-1:-1;;7866:3473:88;;;;;;;;;:::i;:::-;;;:::i;:::-;449:5:89;-1:-1:-1;;;;;7866:3473:88;435:10:89;:19;431:71;;9461:43:88;:82;7866:3473;;;-1:-1:-1;7866:3473:88;;;;;-1:-1:-1;7866:3473:88;;;;;;;;;;;;;;;;;9461:43;:82;:::i;7866:3473::-;;;;;;-1:-1:-1;;7866:3473:88;;;;;;;;-1:-1:-1;;;;;7866:3473:88;;;;;;;;;;;;;;-1:-1:-1;;7866:3473:88;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;-1:-1:-1;;7866:3473:88;;;;;;;1150:7:83;7866:3473:88;;;;;;;;;-1:-1:-1;;7866:3473:88;;;;;;;2700:1:83;7866:3473:88;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;9556:591::-;;;;7866:3473;9556:591;7866:3473;;;;9870:147;;;;;;;;;;;7866:3473;;;;;;;;;;;;;;;;;9870:147;;7866:3473;;;;;;;-1:-1:-1;;;;;7866:3473:88;;;;;9778:291;7866:3473;9802:229;7866:3473;;;9802:229;:::i;:::-;9870:147;7866:3473;;;9778:291;;;;;;:::i;:::-;10080:61;;;9556:591;:::o;10080:61::-;7866:3473;;;;;;;;9870:147;10113:17;;7866:3473;9870:147;10113:17;;;;;:::i;7866:3473::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;7866:3473:88;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;7866:3473:88;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;10153:1184::-;7866:3473;;-1:-1:-1;;;10370:99:88;;-1:-1:-1;;;;;7866:3473:88;;;10370:99;;;7866:3473;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7866:3473:88;;;10389:20;7866:3473;;10370:99;;;;;;;;;;;10153:1184;-1:-1:-1;7866:3473:88;;-1:-1:-1;;;10563:32:88;;;7866:3473;10370:99;7866:3473;;;;10563:32;;;;;;;10523:84;10563:32;10370:99;10563:32;;;;;;;10153:1184;-1:-1:-1;7866:3473:88;;-1:-1:-1;;;10523:84:88;;-1:-1:-1;;;;;7866:3473:88;;;10370:99;10523:84;;7866:3473;;;;;;;;;;;;;-1:-1:-1;7866:3473:88;;;;;;;;;10523:84;;10534:11;;7866:3473;10523:84;;;;;;;10370:99;10523:84;;;10153:1184;10651:50;;;;;10752:68;10651:50;;;;:::i;:::-;10752:68;;:::i;:::-;7866:3473;;;10848:21;;;:52;;;10153:1184;10848:85;;;;10153:1184;10848:142;;;;10153:1184;10831:500;;10153:1184;;;;;;:::o;10831:500::-;11022:298;7866:3473;;11022:298;7866:3473;;;;:::i;:::-;;;;10563:32;11050:256;;7866:3473;;11050:256;;7866:3473;;11050:256;;7866:3473;;;11022:298;;;10563:32;11022:298;;;:::i;10848:142::-;7866:3473;;;10953:37;;10848:142;;:85;7866:3473;;;10904:29;;10848:85;;:52;7866:3473;;;10873:27;;10848:52;;10523:84;10752:68;10523:84;;;;;;;;;10370:99;10523:84;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;10563:32;;;;;;;;;;;;;;:::i;:::-;;;;10370:99;;;;;;;;;;;;;;:::i;:::-;;;;;1742:195:84;;1870:60;1742:195;;-1:-1:-1;7866:3473:88;1870:13:84;7866:3473:88;;;-1:-1:-1;7866:3473:88;1870:60:84;:::i;2207:277::-;-1:-1:-1;7866:3473:88;;;2399:21:84;7866:3473:88;;;;;;;;-1:-1:-1;;;;;7866:3473:88;;;;;;;;;2399:78:84;;2207:277;;2399:78;:::i;7866:3473:88:-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;7866:3473:88;;;;:::o;:::-;;;:::o;8747:485::-;8935:219;8747:485;8959:157;8747:485;;;;7866:3473;;;;;9011:91;;;;;;;;;;;7866:3473;;;;;;;9011:91;;;;;:::i;:::-;8959:157;:::i;7866:3473::-;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;7866:3473:88;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;-1:-1:-1;;;;;7866:3473:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2764:920:83:-;;2978:48;2764:920;;;;2978:48;;;;:::i;:::-;3036:36;;;7866:3473:88;;:::i;:::-;;;;3086:20:83;3082:107;;2764:920;3216:11;;;;:193;;;;;2764:920;3216:394;;;;2764:920;3199:455;;;;;;2764:920;:::o;3199:455::-;3635:8;-1:-1:-1;3635:8:83;:::o;3216:394::-;3553:39;;;;;3430:180;3553:39;;;7866:3473:88;;;;;;;;;;3430:180:83;;467:2:95;7866:3473:88;3430:180:83;;;;;:::i;:::-;;7866:3473:88;3444:31:83;-1:-1:-1;;;;;7866:3473:88;3430:180:83;;;;;;;-1:-1:-1;3430:180:83;;;3216:394;3429:181;;3216:394;;;;;;3430:180;;;;3553:39;3430:180;3553:39;3430:180;;;;;;;:::i;:::-;;;;3216:193;-1:-1:-1;7866:3473:88;;;-1:-1:-1;;;;;;7866:3473:88;3248:161:83;3354:37;;;7866:3473:88;3248:161:83;7866:3473:88;;;;;;;;;;3248:161:83;;;;;;;:::i;:::-;;7866:3473:88;3262:29:83;-1:-1:-1;;;;;7866:3473:88;3248:161:83;;;;;;;-1:-1:-1;3248:161:83;;;3216:193;3247:162;;3216:193;;;3248:161;;;;;;;;;;;;;;:::i;:::-;;;;3082:107;3139:39;;;;;;;;;;;;;:::i;:::-;3082:107;;;;;7866:3473:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;8889:1:93;7866:3473:88;;;;;;;:::o;:::-;;:::i;3740:389:83:-;3918:5;7866:3473:88;;;-1:-1:-1;;;3853:71:83;;;-1:-1:-1;;;;;7866:3473:88;;;3853:71:83;;;7866:3473:88;;;;;;;;3740:389:83;;7866:3473:88;3853:71:83;;7866:3473:88;;3853:71:83;7866:3473:88;;;3867:29:83;7866:3473:88;;3853:71:83;;;;;;;3918:5;3853:71;;;3740:389;3852:72;;7866:3473:88;;;3852:181:83;;3740:389;3835:242;;;;;;4094:28;;;:::i;3835:242::-;4058:8;;3918:5;4058:8;:::o;3852:181::-;7866:3473:88;;3945:88:83;;;-1:-1:-1;;;;;7866:3473:88;;3853:71:83;3945:88;;7866:3473:88;467:2:95;7866:3473:88;;;;;;;;-1:-1:-1;7866:3473:88;;;;;;;;3959:31:83;7866:3473:88;3945:88:83;;;;;;;3918:5;3945:88;;;3852:181;3944:89;;;3852:181;;;;;3945:88;;;;;;-1:-1:-1;3945:88:83;;;;;;:::i;:::-;;;;;3853:71;;;;;;;;;;;;;;:::i;:::-;;;;4148:103:19;966:10:24;-1:-1:-1;7866:3473:88;;;;;;;;;952:44:84;;7866:3473:88;;3901:31:19;7866:3473:88;;4468:23:19;4464:108;;4148:103;:::o;:::-;966:10:24;-1:-1:-1;7866:3473:88;;;;;;;;;795:35:84;;7866:3473:88;;3901:31:19;7866:3473:88;4148:103:19;-1:-1:-1;7866:3473:88;;;-1:-1:-1;;;;;;;;;;;7866:3473:88;;;;;;;;966:10:24;7866:3473:88;;;;;;;;;3901:31:19;7866:3473:88;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7866:3473:88;;-1:-1:-1;7866:3473:88;;;-1:-1:-1;7866:3473:88;:::o;:::-;;:::i;:::-;;;;;-1:-1:-1;;;7866:3473:88;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7866:3473:88;;;;;;;;:::o;6246:584:93:-;;;;;6360:12;;;7866:3473:88;;;6360:24:93;;6356:75;;6246:584;6474:30;;;;;:::i;:::-;7866:3473:88;;;;;;6578:12:93;;;;:::i;:::-;6604:24;;;;6246:584;-1:-1:-1;6600:188:93;;;-1:-1:-1;;;;;7866:3473:88;;;;;;;6644:21:93;;;:29;:21;;:::i;:29::-;6798:25;6246:584;:::o;6600:188::-;6753:24;;7866:3473:88;;8310:38:66;;-1:-1:-1;;;;;7866:3473:88;;;;;8310:38:66;:::i;:::-;6753:24:93;;;:::i;6604:::-;7866:3473:88;;;;;;6614:14:93;;-1:-1:-1;6604:24:93;;;6356:75;-1:-1:-1;;;7866:3473:88;;;;;;6360:12:93;7866:3473:88;;;;;;;:::i;:::-;;;;;;;;;;;;;;6356:75:93;;;525:595:89;-1:-1:-1;525:595:89;;;;7866:3473:88;;716:88:89;;7866:3473:88;716:88:89;;;;;;;;;783:4;716:88;;;7866:3473:88;;;;;;;;;;;:::i;716:88:89:-;698:107;;;;;;;:::i;:::-;7866:3473:88;;857:45:89;;7866:3473:88;;;;;;;;716:88:89;857:45;;7866:3473:88;:::i;:::-;;;;;;;-1:-1:-1;;;;;7866:3473:88;;;;;857:45:89;716:88;857:45;;;7866:3473:88;;;;:::i;:::-;916:8:89;;912:175;;525:595;:::o;912:175::-;7866:3473:88;;944:22:89;;;940:36;;716:88;990:87;;10580:184:93;7866:3473:88;;10446:8:66;;;:63;-1:-1:-1;10446:63:66;-1:-1:-1;;;;;7866:3473:88;;10726:7:93;7866:3473:88;;10736:12:93;:17;:12;;:17;:::i;:::-;7866:3473:88;;;;;;10580:184:93;:::o;10446:63:66:-;7866:3473:88;;;;;;;;;;13267:109:93;-1:-1:-1;13267:109:93;;-1:-1:-1;13267:109:93;;;7866:3473:88;;;10446:63:66;;7866:3473:88;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;8406:869:93:-;;;7866:3473:88;;8620:15:93;8578:11;8645:18;8678:7;8684:1;8678:7;;8674:241;;8406:869;8939:60;;;;;:::i;:::-;9014:8;;;9010:62;;9252:15;9259:7;7866:3473:88;9219:31:93;7866:3473:88;9130:48:93;9170:7;;;:::i;:::-;9130:48;13267:109;;;;;;13089:293;;9130:48;7866:3473:88;:::i;:::-;;9176:1:93;7866:3473:88;9232:17:93;7866:3473:88;;;;;;;;9232:17:93;;7866:3473:88;-1:-1:-1;;;;;7866:3473:88;;;;9219:12:93;;:31;:::i;7866:3473:88:-;9259:7:93;;:::i;:::-;7866:3473:88;;;;9252:15:93;9176:1;;9188:80;;8406:869::o;9010:62::-;8578:11;;-1:-1:-1;8578:11:93;;-1:-1:-1;8578:11:93;;;;9038:23::o;8674:241::-;8721:14;;;;;:::i;:::-;7866:3473:88;;;;;;;8939:60:93;13267:109;;8578:11;13267:109;8753:55;8759:49;13267:109;;8578:11;13267:109;;7866:3473:88;;;;;;8759:49:93;7866:3473:88;;;;8753:55:93;7866:3473:88;;;8753:55:93;13267:109;;;8828:10;8749:156;8674:241;;8749:156;8883:7;;;;;;:::i;:::-;8749:156;8674:241;;3470:384:26;-1:-1:-1;;;;;;;;;;;1991:1:26;7866:3473:88;;3670:20:26;3666:88;;1991:1;7866:3473:88;;3470:384:26:o;3666:88::-;7866:3473:88;;-1:-1:-1;;;3713:30:26;;;;;4758:308:84;;7866:3473:88;-1:-1:-1;7866:3473:88;4889:13:84;7866:3473:88;;;-1:-1:-1;7866:3473:88;11124:30:93;;;;:::i;:::-;11173;;;-1:-1:-1;11173:30:93;;;;11182:17;;-1:-1:-1;;;;;7866:3473:88;;11182:12:93;;:17;:::i;:::-;7866:3473:88;;;4889:13:84;7866:3473:88;;11173:30:93;4947::84;;;11173::93;4943:117:84;;;;4758:308;;:::o;4943:117::-;4993:56;7866:3473:88;-1:-1:-1;7866:3473:88;4889:13:84;7866:3473:88;;;-1:-1:-1;7866:3473:88;819:34:68;837:15;819:34;:::i;4993:56:84:-;4758:308;;:::o;4947:30::-;4957:20;;-1:-1:-1;4947:30:84;;;;11173::93;;;-1:-1:-1;11173:30:93;;7270:387:19;-1:-1:-1;;;;;7866:3473:88;;-1:-1:-1;7866:3473:88;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2887:71:19;7866:3473:88;;;;-1:-1:-1;7866:3473:88;;;;;;;;;;;-1:-1:-1;;;;;7866:3473:88;;;;;;;;;;-1:-1:-1;;7866:3473:88;7509:4:19;7866:3473:88;;;966:10:24;;-1:-1:-1;;;;;7866:3473:88;-1:-1:-1;7532:40:19;-1:-1:-1;;7532:40:19;7509:4;7586:11;:::o;7270:387::-;-1:-1:-1;;;;;7866:3473:88;;-1:-1:-1;7866:3473:88;;;;;;;;;1356:26:83;;-1:-1:-1;;;;;;;;;;;2887:71:19;7866:3473:88;;3901:31:19;7866:3473:88;;;;-1:-1:-1;7866:3473:88;;;;;;;;;;;-1:-1:-1;;;;;7866:3473:88;;;;;;;;;;-1:-1:-1;;7866:3473:88;7509:4:19;7866:3473:88;;;966:10:24;;-1:-1:-1;;;;;7866:3473:88;;7532:40:19;-1:-1:-1;;7532:40:19;7509:4;7586:11;:::o;7432:219::-;7628:12;;;-1:-1:-1;7628:12:19;:::o;7270:387::-;-1:-1:-1;;;;;7866:3473:88;;-1:-1:-1;7866:3473:88;;;;;;;;;795:35:84;;-1:-1:-1;;;;;;;;;;;2887:71:19;7866:3473:88;;3901:31:19;7866:3473:88;7270:387:19;-1:-1:-1;;;;;7866:3473:88;;-1:-1:-1;7866:3473:88;;;;;;;;;952:44:84;;-1:-1:-1;;;;;;;;;;;2887:71:19;7866:3473:88;;3901:31:19;7866:3473:88;7270:387:19;-1:-1:-1;7866:3473:88;;;-1:-1:-1;;;;;;;;;;;7866:3473:88;;;;;;;;-1:-1:-1;;;;;7866:3473:88;;;;;;;;;;;;3901:31:19;7866:3473:88;7892:388:19;-1:-1:-1;7866:3473:88;;;-1:-1:-1;;;;;;;;;;;7866:3473:88;;;;;;;;-1:-1:-1;;;;;7866:3473:88;;;;;;;;;;;;;;;;-1:-1:-1;7866:3473:88;;;;;;;;;;;-1:-1:-1;;;;;7866:3473:88;;;;;;;;;;-1:-1:-1;;7866:3473:88;;;966:10:24;;-1:-1:-1;;;;;7866:3473:88;;8155:40:19;-1:-1:-1;;8155:40:19;7866:3473:88;8209:11:19;:::o;7866:3473:88:-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;7866:3473:88;;;;;;;;:::i;5907:716:83:-;6030:34;5907:716;6030:34;;;;:::i;:::-;7866:3473:88;;-1:-1:-1;;;6080:41:83;;-1:-1:-1;;;;;7866:3473:88;;;6080:41:83;;;7866:3473:88;;;;;6080:41:83;7866:3473:88;;;6090:13:83;7866:3473:88;;6080:41:83;;;;;;;-1:-1:-1;6080:41:83;;;5907:716;6079:42;;6075:90;;6266:27;7866:3473:88;2684:111:26;6210:14:83;7866:3473:88;2684:111:26;;;:::i;:::-;7866:3473:88;;;;;;-1:-1:-1;;;;;7866:3473:88;;-1:-1:-1;7866:3473:88;;;-1:-1:-1;7866:3473:88;;6210:14:83;6266:27;:::i;:::-;6080:41;6311:15;;7866:3473:88;;;;-1:-1:-1;;;;;;7866:3473:88;-1:-1:-1;;;;;7866:3473:88;;;;;;;;;;;-1:-1:-1;;;;;7866:3473:88;;;;6337:143:83;;5907:716;-1:-1:-1;6493:28:83;7866:3473:88;-1:-1:-1;;;;;7866:3473:88;;;;;;;6489:128:83;;5907:716;:::o;6489:128::-;6551:55;;;:::i;:::-;;5907:716::o;6337:143::-;6404:65;;;:::i;:::-;;6337:143;;;6075:90;7866:3473:88;;-1:-1:-1;;;6144:10:83;;6080:41;;6144:10;6080:41;;;;;;;;;;;;;;:::i;:::-;;;;7866:3473:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::o;7558:604:93:-;;7866:3473:88;;7686:17:93;7682:83;;7866:3473:88;7789:27:93;7866:3473:88;7789:27:93;7866:3473:88;;7789:27:93;;;;;;:::i;:::-;7860:14;;;;;:::i;:::-;7866:3473:88;;;;;;;;;;;;;;;;7888:22:93;;;7884:77;;7975:21;-1:-1:-1;7975:84:93;;;;7558:604;7971:139;;;;8127:28;;;;:::i;7971:139::-;8082:17;;7789:27;8082:17;7866:3473:88;8075:24:93;:::o;7975:84::-;7866:3473:88;;;8009:16:93;7866:3473:88;;8009:16:93;:::i;:::-;7866:3473:88;;;8001:24:93;:57;;;;;7975:84;;;;;;;8001:57;8029:29;8038:8;;;8029:18;8038:8;8029:23;8038:8;;:::i;:::-;8029:18;;:::i;:::-;7866:3473:88;;;;;8029:29:93;;8001:57;;;;7884:77;7933:17;;;;;7789:27;7933:17;7866:3473:88;7926:24:93;:::o;7682:83::-;7726:28;;;;:::i;7866:3473:88:-;;;;;;;;;;-1:-1:-1;;;;;7866:3473:88;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;7866:3473:88;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;3722:766:84:-;;;;;7866:3473:88;;:::i;:::-;;;;3962:16:84;3958:92;;3722:766;7866:3473:88;;4107:67:84;7866:3473:88;;;4146:27:84;4107;:13;7866:3473:88;-1:-1:-1;7866:3473:88;;;;;;;;;4107:27:84;4146;;;;7866:3473:88;;;;;;;;;;;4107:67:84;;;;;;;:::i;:::-;;;;;;;;;;4081:355;4107:67;-1:-1:-1;4107:67:84;;;3722:766;4260:28;4311:93;4260:28;4192:230;4260:28;;4222:67;7866:3473:88;4260:28:84;;;4222:67;;;:::i;:::-;4367:36;;;;;4311:93;;:::i;:::-;4192:230;3463:5:63;;;;3066;;7866:3473:88;3060:42:63;3371:111;;4081:355:84;4450:21;;3722:766;:::o;4107:67::-;4192:230;4107:67;;;;4311:93;4107:67;4146:27;4107:67;4146:27;4107:67;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;3958:92;4107:67;4008:31;;;;;;;;;;;;;;:::i;:::-;3958:92;;;;;4494:258;4635:5;7866:3473:88;;;-1:-1:-1;;;4628:27:84;;7866:3473:88;4494:258:84;4628:27;;7866:3473:88;;4628:27:84;;7866:3473:88;;-1:-1:-1;;;;;7866:3473:88;4628:27:84;;;;;;;4635:5;4628:27;;;4494:258;2103:25;2662:43;:52;2103:25;:34;:25;;7866:3473:88;;2103:13:84;7866:3473:88;;;;;;;2103:34:84;7866:3473:88;4635:5:84;7866:3473:88;4628:27:84;;7866:3473:88;;4635:5:84;7866:3473:88;;;;;;;;;;;;;;;;;2662:52:84;3463:5:63;;;;;3066;;7866:3473:88;3060:42:63;3463:5;;;;;3066;;7866:3473:88;3060:42:63;4494:258:84;:::o;4628:27::-;2662:52;4628:27;;;;2662:43;4628:27;;;;;;;;;;;:::i;:::-;;;;;;14296:213:64;7866:3473:88;14374:24:64;;;;14370:103;;7866:3473:88;14296:213:64;:::o;14370:103::-;7866:3473:88;;;;14421:41:64;;;;;;14452:2;14421:41;;;7866:3473:88;;;;;14421:41:64;10695:389:66;7866:3473:88;;10871:8:66;;;10895:20;;10833:17;10895:20;10833:17;10895:20;10833:17;10895:20;:::o;10867:211::-;7866:3473:88;;;;;;;;;;10833:17:66;13267:109:93;;10833:17:66;13267:109:93;;;7866:3473:88;11014:1:66;7866:3473:88;;;;;;;11030:37:66;:::o;18080:5181:63:-;18246:1;18241:6;;;18237:53;;18246:1;19217:14;-1:-1:-1;;;19278:16:63;;;19274:92;;18080:5181;22827:18;22717;22607;22498;22387;22278;23216:28;19383:15;19898:6;19383:15;-1:-1:-1;;;23237:6:63;19383:15;;;19379:90;;18080:5181;19493:7;19486:15;;;19482:90;;18080:5181;19596:7;19589:15;;;19585:89;;18080:5181;19698:6;19691:14;;;19687:87;;18080:5181;19798:6;19791:14;;;19787:87;;18080:5181;19891:14;;19887:61;;18080:5181;20374:1;7866:3473:88;18246:1:63;7866:3473:88;22284:6:63;;;;:::i;:::-;7866:3473:88;;;;;22278:18:63;22393:6;;;;:::i;22387:18::-;22504:6;;;;:::i;22498:18::-;22613:6;;;;:::i;22607:18::-;22723:6;;;;:::i;22717:18::-;22833:6;;;;:::i;22827:18::-;23237:6;;;:::i;:::-;23232:11;;;7866:3473:88;23216:28:63;7866:3473:88;;18080:5181:63;:::o;19887:61::-;18246:1;7866:3473:88;19887:61:63;;19787:87;7866:3473:88;;;;;19787:87:63;;;19687;7866:3473:88;;;;;19687:87:63;;;19585:89;7866:3473:88;;;;;19585:89:63;;;19482:90;7866:3473:88;;;;;19482:90:63;;;19379;7866:3473:88;;;;;19379:90:63;;;19274:92;-1:-1:-1;;;;7866:3473:88;-1:-1:-1;7866:3473:88;;;;19274:92:63;;12497:447:93;;12694:10;;;;;;12926:11;;;12497:447;:::o;12687:230::-;12734:23;;;;;;;:::i;:::-;13267:109;;-1:-1:-1;13267:109:93;7866:3473:88;13267:109:93;;;-1:-1:-1;13267:109:93;;7866:3473:88;;;;;-1:-1:-1;12771:136:93;7866:3473:88;;;12830:10:93;12771:136;;12687:230;;;;12771:136;7866:3473:88;;12891:1:93;7866:3473:88;;;;;;12771:136:93;7866:3473:88;;:::i;6893:76:22:-;;;:::i;:::-;;;:::i;:::-;1949:1:26;-1:-1:-1;;;;;;;;;;;7866:3473:88;6893:76:22:o;7866:3473:88:-;;;;;;;:::i;:::-;-1:-1:-1;7866:3473:88;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;7866:3473:88;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7866:3473:88;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;5072:1269:84:-;5220:30;5072:1269;7866:3473:88;;:::i;:::-;;5220:30:84;7866:3473:88;;;5220:30:84;;;;;;:::i;:::-;5278:17;;7866:3473:88;5278:17:84;;7866:3473:88;-1:-1:-1;;;;;7866:3473:88;5278:54:84;;:178;;5072:1269;5261:258;;5534:9;5220:30;5549:33;;;5278:17;5591:3;5549:33;;7866:3473:88;;5545:44:84;;;;;5614:36;;;:50;:36;;:::i;:::-;7866:3473:88;-1:-1:-1;;;;;7866:3473:88;;;5614:50:84;;5610:119;;5747:73;5748:72;5783:36;;:33;;;:36;:::i;:::-;5748:72;:::i;:::-;5747:73;;7866:3473:88;5747:73:84;5743:140;;7866:3473:88;;5534:9:84;;5743:140;7866:3473:88;;-1:-1:-1;;;5847:21:84;;;;;5610:119;7866:3473:88;;-1:-1:-1;;;5691:23:84;;;;;5545:44;-1:-1:-1;5923:41:84;;-1:-1:-1;;5923:41:84;;;;5278:17;5973:3;5923:41;;7866:3473:88;;5919:52:84;;;;;5996:44;;;:58;:44;;:::i;:58::-;;5992:127;;6137:90;6138:89;6182:44;;:41;;;:44;:::i;:::-;6138:89;:::i;6137:90::-;6133:157;;7866:3473:88;;5908:9:84;;6133:157;7866:3473:88;;-1:-1:-1;;;6254:21:84;;;;;5992:127;7866:3473:88;;-1:-1:-1;;;6081:23:84;;;;;5919:52;;;;;;6317:17;5072:1269;:::o;5261:258::-;7866:3473:88;;-1:-1:-1;;;5488:20:84;;;;;5278:178;5353:33;5220:30;5353:33;;;7866:3473:88;5353:45:84;:102;5278:178;5353:102;5402:41;;;;;7866:3473:88;5402:53:84;5278:178;;6999:207:93;;7866:3473:88;;9737:15:66;-1:-1:-1;9762:18:66;9795:7;9801:1;9795:7;;9791:234;;6999:207:93;10049:53:66;;;;;:::i;:::-;10120:8;;;:63;-1:-1:-1;10120:63:66;;-1:-1:-1;;;;;7866:3473:88;;7168:7:93;7866:3473:88;;;7178:12:93;;:17;:12;;:17;:::i;10120:63:66:-;10135:41;10168:7;10135:48;10168:7;;:::i;:::-;10135:41;13267:109:93;;;;;;13089:293;;10135:41:66;7866:3473:88;;;;;10135:48:66;10120:63;;;9791:234;9838:14;;;;;:::i;:::-;7866:3473:88;;;;;;;10049:53:66;13267:109:93;;-1:-1:-1;13267:109:93;7866:3473:88;13267:109:93;;;-1:-1:-1;13267:109:93;;7866:3473:88;;;;;9870:48:66;9866:149;7866:3473:88;;;9938:10:66;9866:149;9791:234;;9866:149;9993:7;;;;;;:::i;:::-;9866:149;9791:234;;7866:3473:88;;;;;;;:::i;:::-;-1:-1:-1;7866:3473:88;;;;;;;:::o;11486:272:93:-;;7866:3473:88;11452:22:66;11718:31:93;11486:272;7866:3473:88;;:::i;:::-;;;;:::i;:::-;;11452:22:66;;:::i;:::-;7866:3473:88;;:::i;:::-;;11718:12:93;7866:3473:88;;;;;11731:17:93;7866:3473:88;;;;;11731:17:93;;7866:3473:88;;11718:12:93;;:31;:::i;:::-;7866:3473:88;;;;;;;;;:::i;:::-;;;;;;11731:17:93;11672:79;;7866:3473:88;11486:272:93;:::o;7866:3473:88:-;;;-1:-1:-1;;;7866:3473:88;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;7866:3473:88;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;11657:922:66;7866:3473:88;;11657:922:66;;;11864:7;;;;11936;11916:28;11936:7;;:::i;:::-;11916:28;13267:109:93;;;;;;13089:293;;11916:28:66;7866:3473:88;;;;;;;;;;;;12103:13:66;;;12099:89;;12251:14;;;;;12285:19;;;;7866:3473:88;;;;;;;;;;;;;;;;;12285:19:66;7866:3473:88;;12423:25:66;;:::o;12247:163::-;7866:3473:88;;;12343:52:66;7866:3473:88;12353:41:66;7866:3473:88;;:::i;:::-;;;;;;;;12353:41:66;-1:-1:-1;;;;;7866:3473:88;;12353:41:66;;;7866:3473:88;12343:52:66;:::i;:::-;12247:163;;12099:89;7866:3473:88;;-1:-1:-1;;;12143:30:66;;;;;11860:713;7866:3473:88;;12479:52:66;7866:3473:88;12489:41:66;7866:3473:88;;:::i;12489:41:66:-;-1:-1:-1;;;;;7866:3473:88;;12489:41:66;;;7866:3473:88;12343:52:66;:::i;12479:::-;11870:1;12545:17;;:::o;3595:153:63:-;;3721:5;;;3731;;7866:3473:88;;;;;;;;;3595:153:63;:::o;7084:141:22:-;7866:3473:88;-1:-1:-1;;;;;;;;;;;7866:3473:88;;;;7150:18:22;7146:73;;7084:141::o;7146:73::-;7866:3473:88;;-1:-1:-1;;;7191:17:22;;;;;12929:433:66;;13112:10;;;;;;13344:11;;;12929:433;:::o;13105:230::-;13152:23;;;;;;;:::i;:::-;13267:109:93;;-1:-1:-1;13267:109:93;7866:3473:88;13267:109:93;;;-1:-1:-1;13267:109:93;;7866:3473:88;;;;;-1:-1:-1;13189:136:66;7866:3473:88;;;13248:10:66;13189:136;;13105:230;;;;13189:136;7866:3473:88;;13309:1:66;7866:3473:88;;;;;;13189:136:66;7866:3473:88;;:::i","linkReferences":{},"immutableReferences":{"56598":[{"start":2349,"length":32}],"56601":[{"start":4427,"length":32}],"57552":[{"start":1953,"length":32},{"start":4484,"length":32}],"57555":[{"start":1250,"length":32},{"start":9830,"length":32}],"57558":[{"start":1612,"length":32},{"start":7136,"length":32},{"start":7439,"length":32}],"57561":[{"start":1823,"length":32},{"start":6983,"length":32},{"start":7565,"length":32}],"60452":[{"start":3772,"length":32},{"start":6042,"length":32}],"60454":[{"start":3215,"length":32},{"start":6203,"length":32}],"60456":[{"start":4175,"length":32}],"61158":[{"start":1686,"length":32},{"start":5260,"length":32}]}},"methodIdentifiers":{"BASE_DELEGATOR_HINTS()":"79d89614","DEFAULT_ADMIN_ROLE()":"a217fddf","FACTORY()":"2dd31000","HOOK_GAS_LIMIT()":"ff54740f","HOOK_RESERVE()":"557cab44","HOOK_SET_ROLE()":"6679191e","NETWORK_LIMIT_SET_ROLE()":"7d24bb27","NETWORK_REGISTRY()":"c0cd7c3e","OPERATOR_NETWORK_LIMIT_SET_ROLE()":"518504ba","OPERATOR_NETWORK_OPT_IN_SERVICE()":"1a80e500","OPERATOR_VAULT_OPT_IN_SERVICE()":"128e5d82","OPT_IN_SERVICE_HINTS()":"9b656b22","TYPE()":"bb24fe8a","VAULT_FACTORY()":"103f2907","VAULT_HINTS()":"45e78fcb","VERSION()":"ffa1ad74","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","hook()":"7f5a7c7b","initialize(bytes)":"439fab91","maxNetworkLimit(bytes32)":"d15b740e","networkLimit(bytes32)":"3eb22c0f","networkLimitAt(bytes32,uint48,bytes)":"5d32a1c9","networkLimitHint(address,bytes32,uint48)":"da749d2b","networkLimitHintInternal(bytes32,uint48)":"197aa7ea","onSlash(bytes32,address,uint256,uint48,bytes)":"e49561ee","operatorNetworkLimit(bytes32,address)":"11422095","operatorNetworkLimitAt(bytes32,address,uint48,bytes)":"94d2558a","operatorNetworkLimitHint(address,bytes32,address,uint48)":"10a28b5d","operatorNetworkLimitHintInternal(bytes32,address,uint48)":"f7b05547","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","setHook(address)":"3dfd3873","setMaxNetworkLimit(uint96,uint256)":"23f752d5","setNetworkLimit(bytes32,uint256)":"02145348","setOperatorNetworkLimit(bytes32,address,uint256)":"020cf0c2","stake(bytes32,address)":"fd4d447c","stakeAt(bytes32,address,uint48,bytes)":"e02f6937","stakeHints(address,bytes32,address,uint48)":"25dc9708","staticDelegateCall(address,bytes)":"9f86fd85","supportsInterface(bytes4)":"01ffc9a7","vault()":"fbfa77cf"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"baseDelegatorHints\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"vaultHints\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"optInServiceHints\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadySet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CheckpointUnorderedInsertion\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DuplicateRoleHolder\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedsMaxNetworkLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExternalCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientHookGas\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingRoleHolders\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotNetwork\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotSlasher\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressRoleHolder\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"}],\"name\":\"OnSlash\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"hook\",\"type\":\"address\"}],\"name\":\"SetHook\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"SetMaxNetworkLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"SetNetworkLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"SetOperatorNetworkLimit\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BASE_DELEGATOR_HINTS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HOOK_GAS_LIMIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HOOK_RESERVE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HOOK_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NETWORK_LIMIT_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NETWORK_REGISTRY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_NETWORK_LIMIT_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_NETWORK_OPT_IN_SERVICE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_VAULT_OPT_IN_SERVICE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPT_IN_SERVICE_HINTS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TYPE\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VAULT_FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VAULT_HINTS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VERSION\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hook\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"}],\"name\":\"maxNetworkLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"}],\"name\":\"networkLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"networkLimitAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"networkLimitHint\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"networkLimitHintInternal\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"exists\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"hint\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"operatorNetworkLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"operatorNetworkLimitAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"operatorNetworkLimitHint\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"operatorNetworkLimitHintInternal\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"exists\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"hint\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"hook_\",\"type\":\"address\"}],\"name\":\"setHook\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint96\",\"name\":\"identifier\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"setMaxNetworkLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"setNetworkLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"setOperatorNetworkLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"stake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hints\",\"type\":\"bytes\"}],\"name\":\"stakeAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"stakeHints\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"staticDelegateCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"CheckpointUnorderedInsertion()\":[{\"details\":\"A value was attempted to be inserted on a past checkpoint.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"OnSlash(bytes32,address,uint256,uint48)\":{\"params\":{\"amount\":\"amount of the collateral to be slashed\",\"captureTimestamp\":\"time point when the stake was captured\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"SetHook(address)\":{\"params\":{\"hook\":\"address of the hook\"}},\"SetMaxNetworkLimit(bytes32,uint256)\":{\"params\":{\"amount\":\"new maximum subnetwork's limit (how much stake the subnetwork is ready to get)\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"SetNetworkLimit(bytes32,uint256)\":{\"params\":{\"amount\":\"new subnetwork's limit (how much stake the vault curator is ready to give to the subnetwork)\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"SetOperatorNetworkLimit(bytes32,address,uint256)\":{\"params\":{\"amount\":\"new operator's limit for the subnetwork (how much stake the vault curator is ready to give to the operator for the subnetwork)\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}}},\"kind\":\"dev\",\"methods\":{\"VERSION()\":{\"details\":\"Must return 1 for this one.\",\"returns\":{\"_0\":\"version of the delegator\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize(bytes)\":{\"params\":{\"data\":\"some data to use\"}},\"networkLimit(bytes32)\":{\"params\":{\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"_0\":\"limit of the subnetwork\"}},\"networkLimitAt(bytes32,uint48,bytes)\":{\"params\":{\"hint\":\"hint for checkpoint index\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\",\"timestamp\":\"time point to get the subnetwork limit at\"},\"returns\":{\"_0\":\"limit of the subnetwork at the given timestamp\"}},\"onSlash(bytes32,address,uint256,uint48,bytes)\":{\"details\":\"Only the vault's slasher can call this function.\",\"params\":{\"amount\":\"amount of the collateral slashed\",\"captureTimestamp\":\"time point when the stake was captured\",\"data\":\"some additional data\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"operatorNetworkLimit(bytes32,address)\":{\"params\":{\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"_0\":\"limit of the operator for the subnetwork\"}},\"operatorNetworkLimitAt(bytes32,address,uint48,bytes)\":{\"params\":{\"hint\":\"hint for checkpoint index\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\",\"timestamp\":\"time point to get the operator's limit for the subnetwork at\"},\"returns\":{\"_0\":\"limit of the operator for the subnetwork at the given timestamp\"}},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"setHook(address)\":{\"details\":\"Only a HOOK_SET_ROLE holder can call this function. The hook can have arbitrary logic under certain functions, however, it doesn't affect the stake guarantees.\",\"params\":{\"hook\":\"address of the hook\"}},\"setMaxNetworkLimit(uint96,uint256)\":{\"details\":\"Only a network can call this function.\",\"params\":{\"amount\":\"new maximum subnetwork's limit\"}},\"setNetworkLimit(bytes32,uint256)\":{\"details\":\"Only a NETWORK_LIMIT_SET_ROLE holder can call this function.\",\"params\":{\"amount\":\"new limit of the subnetwork\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"setOperatorNetworkLimit(bytes32,address,uint256)\":{\"details\":\"Only an OPERATOR_NETWORK_LIMIT_SET_ROLE holder can call this function.\",\"params\":{\"amount\":\"new limit of the operator for the subnetwork\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"stake(bytes32,address)\":{\"details\":\"Warning: this function is not safe to use for stake capturing, as it can change by the end of the block.\",\"params\":{\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"_0\":\"slashable stake until the end of the next epoch\"}},\"stakeAt(bytes32,address,uint48,bytes)\":{\"details\":\"Warning: it is not safe to use timestamp >= current one for the stake capturing, as it can change later.\",\"params\":{\"hints\":\"hints for the checkpoints' indexes\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\",\"timestamp\":\"time point to capture the stake at\"},\"returns\":{\"_0\":\"slashable stake at the given timestamp until the end of the consequent epoch\"}},\"staticDelegateCall(address,bytes)\":{\"details\":\"It allows to use this contract's storage on-chain.\",\"params\":{\"data\":\"data to make a delegatecall with\",\"target\":\"address of the contract to make a delegatecall to\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"events\":{\"OnSlash(bytes32,address,uint256,uint48)\":{\"notice\":\"Emitted when a slash happens.\"},\"SetHook(address)\":{\"notice\":\"Emitted when a hook is set.\"},\"SetMaxNetworkLimit(bytes32,uint256)\":{\"notice\":\"Emitted when a subnetwork's maximum limit is set.\"},\"SetNetworkLimit(bytes32,uint256)\":{\"notice\":\"Emitted when a subnetwork's limit is set.\"},\"SetOperatorNetworkLimit(bytes32,address,uint256)\":{\"notice\":\"Emitted when an operator's limit for a subnetwork is set.\"}},\"kind\":\"user\",\"methods\":{\"FACTORY()\":{\"notice\":\"Get the factory's address.\"},\"HOOK_GAS_LIMIT()\":{\"notice\":\"Get a gas limit for the hook.\"},\"HOOK_RESERVE()\":{\"notice\":\"Get a reserve gas between the gas limit check and the hook's execution.\"},\"HOOK_SET_ROLE()\":{\"notice\":\"Get a hook setter's role.\"},\"NETWORK_LIMIT_SET_ROLE()\":{\"notice\":\"Get a subnetwork limit setter's role.\"},\"NETWORK_REGISTRY()\":{\"notice\":\"Get the network registry's address.\"},\"OPERATOR_NETWORK_LIMIT_SET_ROLE()\":{\"notice\":\"Get an operator-subnetwork limit setter's role.\"},\"OPERATOR_NETWORK_OPT_IN_SERVICE()\":{\"notice\":\"Get the operator-network opt-in service's address.\"},\"OPERATOR_VAULT_OPT_IN_SERVICE()\":{\"notice\":\"Get the operator-vault opt-in service's address.\"},\"TYPE()\":{\"notice\":\"Get the entity's type.\"},\"VAULT_FACTORY()\":{\"notice\":\"Get the vault factory's address.\"},\"VERSION()\":{\"notice\":\"Get a version of the delegator (different versions mean different interfaces).\"},\"hook()\":{\"notice\":\"Get the hook's address.\"},\"initialize(bytes)\":{\"notice\":\"Initialize this entity contract by using a given data.\"},\"maxNetworkLimit(bytes32)\":{\"notice\":\"Get a particular subnetwork's maximum limit (meaning the subnetwork is not ready to get more as a stake).\"},\"networkLimit(bytes32)\":{\"notice\":\"Get a subnetwork's limit (how much stake the vault curator is ready to give to the subnetwork).\"},\"networkLimitAt(bytes32,uint48,bytes)\":{\"notice\":\"Get a subnetwork's limit at a given timestamp using a hint (how much stake the vault curator is ready to give to the subnetwork).\"},\"onSlash(bytes32,address,uint256,uint48,bytes)\":{\"notice\":\"Called when a slash happens.\"},\"operatorNetworkLimit(bytes32,address)\":{\"notice\":\"Get an operator's limit for a subnetwork. (how much stake the vault curator is ready to give to the operator for the subnetwork)\"},\"operatorNetworkLimitAt(bytes32,address,uint48,bytes)\":{\"notice\":\"Get an operator's limit for a subnetwork at a given timestamp using a hint (how much stake the vault curator is ready to give to the operator for the subnetwork).\"},\"setHook(address)\":{\"notice\":\"Set a new hook.\"},\"setMaxNetworkLimit(uint96,uint256)\":{\"notice\":\"Set a maximum limit for a subnetwork (how much stake the subnetwork is ready to get). identifier identifier of the subnetwork\"},\"setNetworkLimit(bytes32,uint256)\":{\"notice\":\"Set a subnetwork's limit (how much stake the vault curator is ready to give to the subnetwork).\"},\"setOperatorNetworkLimit(bytes32,address,uint256)\":{\"notice\":\"Set an operator's limit for a subnetwork. (how much stake the vault curator is ready to give to the operator for the subnetwork)\"},\"stake(bytes32,address)\":{\"notice\":\"Get a stake that a given subnetwork will be able to slash for a certain operator until the end of the next epoch (if no cross-slashing and no slashings by the subnetwork).\"},\"stakeAt(bytes32,address,uint48,bytes)\":{\"notice\":\"Get a stake that a given subnetwork could be able to slash for a certain operator at a given timestamp until the end of the consequent epoch using hints (if no cross-slashing and no slashings by the subnetwork).\"},\"staticDelegateCall(address,bytes)\":{\"notice\":\"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data).\"},\"vault()\":{\"notice\":\"Get the vault's address.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/hints/DelegatorHints.sol\":\"FullRestakeDelegatorHints\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf\",\"dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89\",\"dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1\",\"dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol\":{\"keccak256\":\"0x4aaaf1c0737dd16e81f0d2b9833c549747a5ede6873bf1444bc72aa572d03e98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eada27d7668eebaea16c3b890aa1b38ffc53965292e26c96f7c44834623f4710\",\"dweb:/ipfs/QmVSWuLtxyCqNbLyY89ptxkvsk4CLLKDQYigEne5Qj8k1L\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x7d94fa0af099a2172eb01f9c8a8a443cbe7e0e43654841563e4e09968efdb549\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65e38fb76b6add407d4557753ae83dd1268e8261195dbe5c19a580d5ba6e4e9a\",\"dweb:/ipfs/QmTkGSJtaQrqjcyWM4AgemeEmKgtDydKPPVRajsUJRQSrK\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0\",\"dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x10eb97d047f8d84fe263a02bb4a656ac6674f6679d74532cc37546289e073a9d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3e41287d40b0c46982f1083d40d32de2761f009c5c51627fe79a7feb0ab1cf5c\",\"dweb:/ipfs/Qme7dbh6HX3ZvUJdbQAcVqXkmyXyfcLiUZRhhon3cU6K8p\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e\",\"dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/SignatureChecker.sol\":{\"keccak256\":\"0xbdc3bb48ccedb818cd75a6d74a16df55a822e9f6d3cc54c59f576f10aab67b5f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2284f25f2478f419d7781573b17a89d0e7c5589a865d55e2d6ed5163aee23aa8\",\"dweb:/ipfs/QmNsr2625APBQiNKpYnX5VcSnYgfUHR9Uzzp9pRXjoDqK7\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44\",\"dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6\",\"dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza\"]},\"src/contracts/common/Entity.sol\":{\"keccak256\":\"0x3d61a932995b8443381f3950542d388223a2c26dd5d29a3274dea3baa7388bd7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7cdf5f03ca72fd263fd32ff59c8d88ddca911ae83896a287d10772c1bbe9b138\",\"dweb:/ipfs/QmbP84r5BWT1Rn9AYTntWSf3xUMTTCohTZJFhbBhDXFoHa\"]},\"src/contracts/common/MigratableEntity.sol\":{\"keccak256\":\"0x303ad40a3de8fa808cc30a6fbd5998633f6a89b982e6db1fa981e0566ab445e7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://fa8fb92995ead02798e013190b87b84b44cc68668262f045c9b0b4783940e2bf\",\"dweb:/ipfs/QmV1uKGVLKwWisc714R8fCt71gXUQJpaKvdc6LQ8WtvMpL\"]},\"src/contracts/common/StaticDelegateCallable.sol\":{\"keccak256\":\"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764\",\"dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD\"]},\"src/contracts/delegator/BaseDelegator.sol\":{\"keccak256\":\"0x7c54d491fdd4415b764a9c8defa068e56d4c0c8c9419be0053a1d377669290e8\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://9238bfbad0f6eeb0dc7727724de14380f1980b395902269703d5e2ef07e52e10\",\"dweb:/ipfs/QmPJn1V4HNXcEghYvogGuSTF24dSQUPosR5qtsXcmNqRm3\"]},\"src/contracts/delegator/FullRestakeDelegator.sol\":{\"keccak256\":\"0x0a81c4f8e72914563a9cb771e93acf889c71ea36b7bec040e4eb562b199d5af1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6fc66b6ba02da77046a0bbbd1dd407a62c08f52e04486c9cbd2cb1cca3da555f\",\"dweb:/ipfs/QmZQivK1ZnMxfRQQ5aLpV9co5u55wQVNev5Rg1hzAqxhkE\"]},\"src/contracts/delegator/NetworkRestakeDelegator.sol\":{\"keccak256\":\"0xd3a8e6522f9c6fdcc2da837c9023afd6bdff2bce45a35590320c475519e3636d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://58b17a87f6554f08376f9ea7fedf486a4aa75801bf0ad8b23ff5a46959b6b7a3\",\"dweb:/ipfs/QmSTmNh67tYt8CmjVZb57r8N3qX5yeYdMApKPJm3qvQgQw\"]},\"src/contracts/delegator/OperatorNetworkSpecificDelegator.sol\":{\"keccak256\":\"0x031a10722b9ec49048f0952710401131290adb87e71caf294e864e7ac3b98a16\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://72428febc875134b2f29205e6f294634a1c22a7d5c78d6a9cb2f8196f107c9b5\",\"dweb:/ipfs/QmTPwXR6h5oytckmkLrHdKeEMdphJxceDhYUR4zvQeWAwY\"]},\"src/contracts/delegator/OperatorSpecificDelegator.sol\":{\"keccak256\":\"0x630ce62fa30b9f3349ab7a8cf8dbf041319febc6dd757be2f94d3d25944ed328\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c2ac59d47ce57d2a6819ae9833e1a618a371eccff93eb5ab367b201b01f42bfa\",\"dweb:/ipfs/QmdBpGMBivpNPv2WbH8vnCUy5xkVeaxQvGgqi33vKCz1kA\"]},\"src/contracts/hints/DelegatorHints.sol\":{\"keccak256\":\"0xd71e9102e99a25ee8b5435779f011a24558f56074aa2b16c18b623b57754ae97\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://29db5552e55dab51bea1ae40ba00ca674cb50fcb10997999a72a94527b6eb591\",\"dweb:/ipfs/QmQrYyTPx73ubNxMhYWJCkprCVFVtuTFcKaabYiKTe71tY\"]},\"src/contracts/hints/Hints.sol\":{\"keccak256\":\"0x8b565df1ae35993c097a9e642002782a8f451f6fd01809cad6bcd345bdf1b99c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://99a19adb01e350a92f534095b3078229df1f2f83077992d75d58d8684be45971\",\"dweb:/ipfs/QmbmwcuswVbzvwHQFTtrJG86oV98GnfxqYTb8cV8u1acox\"]},\"src/contracts/hints/OptInServiceHints.sol\":{\"keccak256\":\"0x95d9407900d27b9f4a1233b772aeed809c07b2dc5b31cfc9fa77ca26514c49e5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://a13a8877e312d7e6b8b85bde3668c5d84ff5ecc83f762cd573f2b7104c64eb42\",\"dweb:/ipfs/QmYV2J55acuGzCNnS3juABuUHY5U1xc8g8o9jwEyFFdeG5\"]},\"src/contracts/hints/VaultHints.sol\":{\"keccak256\":\"0xccb505b7159b769cc114d67b87c2de6b106557f667fc8f3780114baad5c3c442\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6d0c80a908fc16e96a8b5605a0bd53f9e89ad0ef0a738fbbae80ba4d3160749b\",\"dweb:/ipfs/QmXo5UtWoR8YmunqcbBU8rQMm1nvmvjNPoXcVrDhh4pEwR\"]},\"src/contracts/libraries/Checkpoints.sol\":{\"keccak256\":\"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609\",\"dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE\"]},\"src/contracts/libraries/ERC4626Math.sol\":{\"keccak256\":\"0x8441160513c1cbeb1c3b9ee077bcc7e7ce20006b52a77c8dd39ff0ef89699939\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://943f8cc3e26ddf649f465f40c909819f5c864717c4baa339e9e403b9374a4653\",\"dweb:/ipfs/QmXPxi1sUDsrGprZdUgCzoPEosaZMv9ZhygWQ1vAi1phAB\"]},\"src/contracts/libraries/Subnetwork.sol\":{\"keccak256\":\"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56\",\"dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32\"]},\"src/contracts/service/OptInService.sol\":{\"keccak256\":\"0x4e0932077f2686b7990e10d59deb2535334c0d09e52ef6e57c6ab09eca21c4b1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7c00d311032ed4a1743aca7475f3c86ce15cdfc2218108efc3731c03d34a5278\",\"dweb:/ipfs/QmUGGfVwVhaHr5kS4177yKKYiLYzi5qZpkEmvYxBZqazxf\"]},\"src/contracts/vault/Vault.sol\":{\"keccak256\":\"0x7ee6dbf060c45d6eba95315f4ac0b3b467dd9c4999b84c31d6f66d4d8b53a116\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://301948b8ea522db292aa2722ba42def3911dae95f0b376f7023c3fef470f8676\",\"dweb:/ipfs/QmSDbP2HdzhDAzstr8Zz5isEAcSkma8ABc5UwPsoazaumZ\"]},\"src/contracts/vault/VaultStorage.sol\":{\"keccak256\":\"0x57db25b127d77ea3472de53e3a4af3354399655b9268638b99ca5925fa364a56\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://aa763d9a6ec508ae3abfb8228b72b9fd9525279e5135d4962e79ff059feb1173\",\"dweb:/ipfs/QmcbDR6E9wyEpu6V2FkEC4hnWy47zXA9LSKJde6zSGd33Q\"]},\"src/interfaces/common/IEntity.sol\":{\"keccak256\":\"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b\",\"dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv\"]},\"src/interfaces/common/IMigratableEntity.sol\":{\"keccak256\":\"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c\",\"dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds\"]},\"src/interfaces/common/IRegistry.sol\":{\"keccak256\":\"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014\",\"dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK\"]},\"src/interfaces/common/IStaticDelegateCallable.sol\":{\"keccak256\":\"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516\",\"dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi\"]},\"src/interfaces/delegator/IBaseDelegator.sol\":{\"keccak256\":\"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2\",\"dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8\"]},\"src/interfaces/delegator/IDelegatorHook.sol\":{\"keccak256\":\"0xc51aa8d7d1f6c8043ee819b7aeb86da0e993912e1442098df897e299f01f9f46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://adddf5cb2ba282aeb576b26efb28640f865a1721cc9b6eee8b3ee0457a2c9780\",\"dweb:/ipfs/QmNYgAmnLRwWZbhTuQhZs9rx4zcme1df5mEepkrniorSoW\"]},\"src/interfaces/delegator/IFullRestakeDelegator.sol\":{\"keccak256\":\"0xa3c8cb2e45d4d8ce90e95263bea40c01dc400f05ad65bc29597d878606be5e7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://782cf5e201aa4cca037ebafd3807a68ff1cc721d5b8416a35244db0d0607369e\",\"dweb:/ipfs/QmQkJks6x7CKndeTPa9LxgTNygD5uEi7obhADhpq1Lsr9A\"]},\"src/interfaces/delegator/INetworkRestakeDelegator.sol\":{\"keccak256\":\"0xe7030fe30389a147fd710e3436ec346b4842695fd3e65a81b95375c9f1d633fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://739c7e66d301778054f5c90bee45ec9438f68afba8a03eaaac52064c73b115ad\",\"dweb:/ipfs/QmfZ2ytKcTykAc76nxhg8ikUXV8NdBpetqb8W4YWPcox1Z\"]},\"src/interfaces/delegator/IOperatorNetworkSpecificDelegator.sol\":{\"keccak256\":\"0x74b95e64d29769202d45dd277bb830f623ff3d41ce77b80ce3ee4e318a5c71ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e512b903aae5c1b8a028c6e3f4f6223b5cb5d704503cfa6bd37b5346868f5c20\",\"dweb:/ipfs/QmZim9YExsPWtyxyeui993HTKAEmrg8MUcSkZ77Gp2JcuZ\"]},\"src/interfaces/delegator/IOperatorSpecificDelegator.sol\":{\"keccak256\":\"0x72075cab585dc17240cc3e32bc99b92f0d5627ddd988fed680e3e1a52d5a01e4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7448bc90699409ae61d85216b5efc2143a37f0f73354be2aea993bc54afca441\",\"dweb:/ipfs/QmXE4gAxM8pHosZK8mcTcj17puBx484meDCcmrDePskGHZ\"]},\"src/interfaces/service/IOptInService.sol\":{\"keccak256\":\"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337\",\"dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24\"]},\"src/interfaces/slasher/IBaseSlasher.sol\":{\"keccak256\":\"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf\",\"dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx\"]},\"src/interfaces/vault/IVault.sol\":{\"keccak256\":\"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9\",\"dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R\"]},\"src/interfaces/vault/IVaultStorage.sol\":{\"keccak256\":\"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e\",\"dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"baseDelegatorHints","type":"address"},{"internalType":"address","name":"vaultHints","type":"address"},{"internalType":"address","name":"optInServiceHints","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"inputs":[],"type":"error","name":"AlreadySet"},{"inputs":[],"type":"error","name":"CheckpointUnorderedInsertion"},{"inputs":[],"type":"error","name":"DuplicateRoleHolder"},{"inputs":[],"type":"error","name":"ExceedsMaxNetworkLimit"},{"inputs":[],"type":"error","name":"ExternalCall"},{"inputs":[],"type":"error","name":"InsufficientHookGas"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"MissingRoleHolders"},{"inputs":[],"type":"error","name":"NotInitialized"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"NotNetwork"},{"inputs":[],"type":"error","name":"NotSlasher"},{"inputs":[],"type":"error","name":"NotVault"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintDowncast"},{"inputs":[],"type":"error","name":"ZeroAddressRoleHolder"},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint48","name":"captureTimestamp","type":"uint48","indexed":false}],"type":"event","name":"OnSlash","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[{"internalType":"address","name":"hook","type":"address","indexed":true}],"type":"event","name":"SetHook","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"SetMaxNetworkLimit","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"SetNetworkLimit","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"SetOperatorNetworkLimit","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"BASE_DELEGATOR_HINTS","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HOOK_GAS_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HOOK_RESERVE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HOOK_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"NETWORK_LIMIT_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"NETWORK_REGISTRY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_NETWORK_LIMIT_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_NETWORK_OPT_IN_SERVICE","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_VAULT_OPT_IN_SERVICE","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPT_IN_SERVICE_HINTS","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"TYPE","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VAULT_FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VAULT_HINTS","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"VERSION","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"hook","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"}],"stateMutability":"view","type":"function","name":"maxNetworkLimit","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"}],"stateMutability":"view","type":"function","name":"networkLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"networkLimitAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"},{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"networkLimitHint","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"networkLimitHintInternal","outputs":[{"internalType":"bool","name":"exists","type":"bool"},{"internalType":"uint32","name":"hint","type":"uint32"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint48","name":"captureTimestamp","type":"uint48"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"onSlash"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"operatorNetworkLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"operatorNetworkLimitAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"},{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"operatorNetworkLimitHint","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"operatorNetworkLimitHintInternal","outputs":[{"internalType":"bool","name":"exists","type":"bool"},{"internalType":"uint32","name":"hint","type":"uint32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"address","name":"hook_","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setHook"},{"inputs":[{"internalType":"uint96","name":"identifier","type":"uint96"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setMaxNetworkLimit"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setNetworkLimit"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setOperatorNetworkLimit"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"stake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hints","type":"bytes"}],"stateMutability":"view","type":"function","name":"stakeAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"},{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"stakeHints","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"staticDelegateCall"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"vault","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"VERSION()":{"details":"Must return 1 for this one.","returns":{"_0":"version of the delegator"}},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"initialize(bytes)":{"params":{"data":"some data to use"}},"networkLimit(bytes32)":{"params":{"subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"_0":"limit of the subnetwork"}},"networkLimitAt(bytes32,uint48,bytes)":{"params":{"hint":"hint for checkpoint index","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)","timestamp":"time point to get the subnetwork limit at"},"returns":{"_0":"limit of the subnetwork at the given timestamp"}},"onSlash(bytes32,address,uint256,uint48,bytes)":{"details":"Only the vault's slasher can call this function.","params":{"amount":"amount of the collateral slashed","captureTimestamp":"time point when the stake was captured","data":"some additional data","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"}},"operatorNetworkLimit(bytes32,address)":{"params":{"operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"_0":"limit of the operator for the subnetwork"}},"operatorNetworkLimitAt(bytes32,address,uint48,bytes)":{"params":{"hint":"hint for checkpoint index","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)","timestamp":"time point to get the operator's limit for the subnetwork at"},"returns":{"_0":"limit of the operator for the subnetwork at the given timestamp"}},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"setHook(address)":{"details":"Only a HOOK_SET_ROLE holder can call this function. The hook can have arbitrary logic under certain functions, however, it doesn't affect the stake guarantees.","params":{"hook":"address of the hook"}},"setMaxNetworkLimit(uint96,uint256)":{"details":"Only a network can call this function.","params":{"amount":"new maximum subnetwork's limit"}},"setNetworkLimit(bytes32,uint256)":{"details":"Only a NETWORK_LIMIT_SET_ROLE holder can call this function.","params":{"amount":"new limit of the subnetwork","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"}},"setOperatorNetworkLimit(bytes32,address,uint256)":{"details":"Only an OPERATOR_NETWORK_LIMIT_SET_ROLE holder can call this function.","params":{"amount":"new limit of the operator for the subnetwork","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"}},"stake(bytes32,address)":{"details":"Warning: this function is not safe to use for stake capturing, as it can change by the end of the block.","params":{"operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"_0":"slashable stake until the end of the next epoch"}},"stakeAt(bytes32,address,uint48,bytes)":{"details":"Warning: it is not safe to use timestamp >= current one for the stake capturing, as it can change later.","params":{"hints":"hints for the checkpoints' indexes","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)","timestamp":"time point to capture the stake at"},"returns":{"_0":"slashable stake at the given timestamp until the end of the consequent epoch"}},"staticDelegateCall(address,bytes)":{"details":"It allows to use this contract's storage on-chain.","params":{"data":"data to make a delegatecall with","target":"address of the contract to make a delegatecall to"}},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."}},"version":1},"userdoc":{"kind":"user","methods":{"FACTORY()":{"notice":"Get the factory's address."},"HOOK_GAS_LIMIT()":{"notice":"Get a gas limit for the hook."},"HOOK_RESERVE()":{"notice":"Get a reserve gas between the gas limit check and the hook's execution."},"HOOK_SET_ROLE()":{"notice":"Get a hook setter's role."},"NETWORK_LIMIT_SET_ROLE()":{"notice":"Get a subnetwork limit setter's role."},"NETWORK_REGISTRY()":{"notice":"Get the network registry's address."},"OPERATOR_NETWORK_LIMIT_SET_ROLE()":{"notice":"Get an operator-subnetwork limit setter's role."},"OPERATOR_NETWORK_OPT_IN_SERVICE()":{"notice":"Get the operator-network opt-in service's address."},"OPERATOR_VAULT_OPT_IN_SERVICE()":{"notice":"Get the operator-vault opt-in service's address."},"TYPE()":{"notice":"Get the entity's type."},"VAULT_FACTORY()":{"notice":"Get the vault factory's address."},"VERSION()":{"notice":"Get a version of the delegator (different versions mean different interfaces)."},"hook()":{"notice":"Get the hook's address."},"initialize(bytes)":{"notice":"Initialize this entity contract by using a given data."},"maxNetworkLimit(bytes32)":{"notice":"Get a particular subnetwork's maximum limit (meaning the subnetwork is not ready to get more as a stake)."},"networkLimit(bytes32)":{"notice":"Get a subnetwork's limit (how much stake the vault curator is ready to give to the subnetwork)."},"networkLimitAt(bytes32,uint48,bytes)":{"notice":"Get a subnetwork's limit at a given timestamp using a hint (how much stake the vault curator is ready to give to the subnetwork)."},"onSlash(bytes32,address,uint256,uint48,bytes)":{"notice":"Called when a slash happens."},"operatorNetworkLimit(bytes32,address)":{"notice":"Get an operator's limit for a subnetwork. (how much stake the vault curator is ready to give to the operator for the subnetwork)"},"operatorNetworkLimitAt(bytes32,address,uint48,bytes)":{"notice":"Get an operator's limit for a subnetwork at a given timestamp using a hint (how much stake the vault curator is ready to give to the operator for the subnetwork)."},"setHook(address)":{"notice":"Set a new hook."},"setMaxNetworkLimit(uint96,uint256)":{"notice":"Set a maximum limit for a subnetwork (how much stake the subnetwork is ready to get). identifier identifier of the subnetwork"},"setNetworkLimit(bytes32,uint256)":{"notice":"Set a subnetwork's limit (how much stake the vault curator is ready to give to the subnetwork)."},"setOperatorNetworkLimit(bytes32,address,uint256)":{"notice":"Set an operator's limit for a subnetwork. (how much stake the vault curator is ready to give to the operator for the subnetwork)"},"stake(bytes32,address)":{"notice":"Get a stake that a given subnetwork will be able to slash for a certain operator until the end of the next epoch (if no cross-slashing and no slashings by the subnetwork)."},"stakeAt(bytes32,address,uint48,bytes)":{"notice":"Get a stake that a given subnetwork could be able to slash for a certain operator at a given timestamp until the end of the consequent epoch using hints (if no cross-slashing and no slashings by the subnetwork)."},"staticDelegateCall(address,bytes)":{"notice":"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data)."},"vault()":{"notice":"Get the vault's address."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/hints/DelegatorHints.sol":"FullRestakeDelegatorHints"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol":{"keccak256":"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866","urls":["bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf","dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab","urls":["bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89","dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606","urls":["bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1","dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol":{"keccak256":"0x4aaaf1c0737dd16e81f0d2b9833c549747a5ede6873bf1444bc72aa572d03e98","urls":["bzz-raw://eada27d7668eebaea16c3b890aa1b38ffc53965292e26c96f7c44834623f4710","dweb:/ipfs/QmVSWuLtxyCqNbLyY89ptxkvsk4CLLKDQYigEne5Qj8k1L"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol":{"keccak256":"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92","urls":["bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a","dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310","urls":["bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862","dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol":{"keccak256":"0x7d94fa0af099a2172eb01f9c8a8a443cbe7e0e43654841563e4e09968efdb549","urls":["bzz-raw://65e38fb76b6add407d4557753ae83dd1268e8261195dbe5c19a580d5ba6e4e9a","dweb:/ipfs/QmTkGSJtaQrqjcyWM4AgemeEmKgtDydKPPVRajsUJRQSrK"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed","urls":["bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0","dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84","urls":["bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9","dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol":{"keccak256":"0x10eb97d047f8d84fe263a02bb4a656ac6674f6679d74532cc37546289e073a9d","urls":["bzz-raw://3e41287d40b0c46982f1083d40d32de2761f009c5c51627fe79a7feb0ab1cf5c","dweb:/ipfs/Qme7dbh6HX3ZvUJdbQAcVqXkmyXyfcLiUZRhhon3cU6K8p"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575","urls":["bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e","dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/SignatureChecker.sol":{"keccak256":"0xbdc3bb48ccedb818cd75a6d74a16df55a822e9f6d3cc54c59f576f10aab67b5f","urls":["bzz-raw://2284f25f2478f419d7781573b17a89d0e7c5589a865d55e2d6ed5163aee23aa8","dweb:/ipfs/QmNsr2625APBQiNKpYnX5VcSnYgfUHR9Uzzp9pRXjoDqK7"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3","urls":["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03","dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol":{"keccak256":"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f","urls":["bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44","dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc","urls":["bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6","dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza"],"license":"MIT"},"src/contracts/common/Entity.sol":{"keccak256":"0x3d61a932995b8443381f3950542d388223a2c26dd5d29a3274dea3baa7388bd7","urls":["bzz-raw://7cdf5f03ca72fd263fd32ff59c8d88ddca911ae83896a287d10772c1bbe9b138","dweb:/ipfs/QmbP84r5BWT1Rn9AYTntWSf3xUMTTCohTZJFhbBhDXFoHa"],"license":"BUSL-1.1"},"src/contracts/common/MigratableEntity.sol":{"keccak256":"0x303ad40a3de8fa808cc30a6fbd5998633f6a89b982e6db1fa981e0566ab445e7","urls":["bzz-raw://fa8fb92995ead02798e013190b87b84b44cc68668262f045c9b0b4783940e2bf","dweb:/ipfs/QmV1uKGVLKwWisc714R8fCt71gXUQJpaKvdc6LQ8WtvMpL"],"license":"BUSL-1.1"},"src/contracts/common/StaticDelegateCallable.sol":{"keccak256":"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90","urls":["bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764","dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD"],"license":"BUSL-1.1"},"src/contracts/delegator/BaseDelegator.sol":{"keccak256":"0x7c54d491fdd4415b764a9c8defa068e56d4c0c8c9419be0053a1d377669290e8","urls":["bzz-raw://9238bfbad0f6eeb0dc7727724de14380f1980b395902269703d5e2ef07e52e10","dweb:/ipfs/QmPJn1V4HNXcEghYvogGuSTF24dSQUPosR5qtsXcmNqRm3"],"license":"BUSL-1.1"},"src/contracts/delegator/FullRestakeDelegator.sol":{"keccak256":"0x0a81c4f8e72914563a9cb771e93acf889c71ea36b7bec040e4eb562b199d5af1","urls":["bzz-raw://6fc66b6ba02da77046a0bbbd1dd407a62c08f52e04486c9cbd2cb1cca3da555f","dweb:/ipfs/QmZQivK1ZnMxfRQQ5aLpV9co5u55wQVNev5Rg1hzAqxhkE"],"license":"BUSL-1.1"},"src/contracts/delegator/NetworkRestakeDelegator.sol":{"keccak256":"0xd3a8e6522f9c6fdcc2da837c9023afd6bdff2bce45a35590320c475519e3636d","urls":["bzz-raw://58b17a87f6554f08376f9ea7fedf486a4aa75801bf0ad8b23ff5a46959b6b7a3","dweb:/ipfs/QmSTmNh67tYt8CmjVZb57r8N3qX5yeYdMApKPJm3qvQgQw"],"license":"BUSL-1.1"},"src/contracts/delegator/OperatorNetworkSpecificDelegator.sol":{"keccak256":"0x031a10722b9ec49048f0952710401131290adb87e71caf294e864e7ac3b98a16","urls":["bzz-raw://72428febc875134b2f29205e6f294634a1c22a7d5c78d6a9cb2f8196f107c9b5","dweb:/ipfs/QmTPwXR6h5oytckmkLrHdKeEMdphJxceDhYUR4zvQeWAwY"],"license":"BUSL-1.1"},"src/contracts/delegator/OperatorSpecificDelegator.sol":{"keccak256":"0x630ce62fa30b9f3349ab7a8cf8dbf041319febc6dd757be2f94d3d25944ed328","urls":["bzz-raw://c2ac59d47ce57d2a6819ae9833e1a618a371eccff93eb5ab367b201b01f42bfa","dweb:/ipfs/QmdBpGMBivpNPv2WbH8vnCUy5xkVeaxQvGgqi33vKCz1kA"],"license":"BUSL-1.1"},"src/contracts/hints/DelegatorHints.sol":{"keccak256":"0xd71e9102e99a25ee8b5435779f011a24558f56074aa2b16c18b623b57754ae97","urls":["bzz-raw://29db5552e55dab51bea1ae40ba00ca674cb50fcb10997999a72a94527b6eb591","dweb:/ipfs/QmQrYyTPx73ubNxMhYWJCkprCVFVtuTFcKaabYiKTe71tY"],"license":"BUSL-1.1"},"src/contracts/hints/Hints.sol":{"keccak256":"0x8b565df1ae35993c097a9e642002782a8f451f6fd01809cad6bcd345bdf1b99c","urls":["bzz-raw://99a19adb01e350a92f534095b3078229df1f2f83077992d75d58d8684be45971","dweb:/ipfs/QmbmwcuswVbzvwHQFTtrJG86oV98GnfxqYTb8cV8u1acox"],"license":"BUSL-1.1"},"src/contracts/hints/OptInServiceHints.sol":{"keccak256":"0x95d9407900d27b9f4a1233b772aeed809c07b2dc5b31cfc9fa77ca26514c49e5","urls":["bzz-raw://a13a8877e312d7e6b8b85bde3668c5d84ff5ecc83f762cd573f2b7104c64eb42","dweb:/ipfs/QmYV2J55acuGzCNnS3juABuUHY5U1xc8g8o9jwEyFFdeG5"],"license":"BUSL-1.1"},"src/contracts/hints/VaultHints.sol":{"keccak256":"0xccb505b7159b769cc114d67b87c2de6b106557f667fc8f3780114baad5c3c442","urls":["bzz-raw://6d0c80a908fc16e96a8b5605a0bd53f9e89ad0ef0a738fbbae80ba4d3160749b","dweb:/ipfs/QmXo5UtWoR8YmunqcbBU8rQMm1nvmvjNPoXcVrDhh4pEwR"],"license":"BUSL-1.1"},"src/contracts/libraries/Checkpoints.sol":{"keccak256":"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c","urls":["bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609","dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE"],"license":"MIT"},"src/contracts/libraries/ERC4626Math.sol":{"keccak256":"0x8441160513c1cbeb1c3b9ee077bcc7e7ce20006b52a77c8dd39ff0ef89699939","urls":["bzz-raw://943f8cc3e26ddf649f465f40c909819f5c864717c4baa339e9e403b9374a4653","dweb:/ipfs/QmXPxi1sUDsrGprZdUgCzoPEosaZMv9ZhygWQ1vAi1phAB"],"license":"MIT"},"src/contracts/libraries/Subnetwork.sol":{"keccak256":"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe","urls":["bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56","dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32"],"license":"MIT"},"src/contracts/service/OptInService.sol":{"keccak256":"0x4e0932077f2686b7990e10d59deb2535334c0d09e52ef6e57c6ab09eca21c4b1","urls":["bzz-raw://7c00d311032ed4a1743aca7475f3c86ce15cdfc2218108efc3731c03d34a5278","dweb:/ipfs/QmUGGfVwVhaHr5kS4177yKKYiLYzi5qZpkEmvYxBZqazxf"],"license":"BUSL-1.1"},"src/contracts/vault/Vault.sol":{"keccak256":"0x7ee6dbf060c45d6eba95315f4ac0b3b467dd9c4999b84c31d6f66d4d8b53a116","urls":["bzz-raw://301948b8ea522db292aa2722ba42def3911dae95f0b376f7023c3fef470f8676","dweb:/ipfs/QmSDbP2HdzhDAzstr8Zz5isEAcSkma8ABc5UwPsoazaumZ"],"license":"BUSL-1.1"},"src/contracts/vault/VaultStorage.sol":{"keccak256":"0x57db25b127d77ea3472de53e3a4af3354399655b9268638b99ca5925fa364a56","urls":["bzz-raw://aa763d9a6ec508ae3abfb8228b72b9fd9525279e5135d4962e79ff059feb1173","dweb:/ipfs/QmcbDR6E9wyEpu6V2FkEC4hnWy47zXA9LSKJde6zSGd33Q"],"license":"BUSL-1.1"},"src/interfaces/common/IEntity.sol":{"keccak256":"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21","urls":["bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b","dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv"],"license":"MIT"},"src/interfaces/common/IMigratableEntity.sol":{"keccak256":"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4","urls":["bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c","dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds"],"license":"MIT"},"src/interfaces/common/IRegistry.sol":{"keccak256":"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb","urls":["bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014","dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK"],"license":"MIT"},"src/interfaces/common/IStaticDelegateCallable.sol":{"keccak256":"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5","urls":["bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516","dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi"],"license":"MIT"},"src/interfaces/delegator/IBaseDelegator.sol":{"keccak256":"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee","urls":["bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2","dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8"],"license":"MIT"},"src/interfaces/delegator/IDelegatorHook.sol":{"keccak256":"0xc51aa8d7d1f6c8043ee819b7aeb86da0e993912e1442098df897e299f01f9f46","urls":["bzz-raw://adddf5cb2ba282aeb576b26efb28640f865a1721cc9b6eee8b3ee0457a2c9780","dweb:/ipfs/QmNYgAmnLRwWZbhTuQhZs9rx4zcme1df5mEepkrniorSoW"],"license":"MIT"},"src/interfaces/delegator/IFullRestakeDelegator.sol":{"keccak256":"0xa3c8cb2e45d4d8ce90e95263bea40c01dc400f05ad65bc29597d878606be5e7d","urls":["bzz-raw://782cf5e201aa4cca037ebafd3807a68ff1cc721d5b8416a35244db0d0607369e","dweb:/ipfs/QmQkJks6x7CKndeTPa9LxgTNygD5uEi7obhADhpq1Lsr9A"],"license":"MIT"},"src/interfaces/delegator/INetworkRestakeDelegator.sol":{"keccak256":"0xe7030fe30389a147fd710e3436ec346b4842695fd3e65a81b95375c9f1d633fc","urls":["bzz-raw://739c7e66d301778054f5c90bee45ec9438f68afba8a03eaaac52064c73b115ad","dweb:/ipfs/QmfZ2ytKcTykAc76nxhg8ikUXV8NdBpetqb8W4YWPcox1Z"],"license":"MIT"},"src/interfaces/delegator/IOperatorNetworkSpecificDelegator.sol":{"keccak256":"0x74b95e64d29769202d45dd277bb830f623ff3d41ce77b80ce3ee4e318a5c71ec","urls":["bzz-raw://e512b903aae5c1b8a028c6e3f4f6223b5cb5d704503cfa6bd37b5346868f5c20","dweb:/ipfs/QmZim9YExsPWtyxyeui993HTKAEmrg8MUcSkZ77Gp2JcuZ"],"license":"MIT"},"src/interfaces/delegator/IOperatorSpecificDelegator.sol":{"keccak256":"0x72075cab585dc17240cc3e32bc99b92f0d5627ddd988fed680e3e1a52d5a01e4","urls":["bzz-raw://7448bc90699409ae61d85216b5efc2143a37f0f73354be2aea993bc54afca441","dweb:/ipfs/QmXE4gAxM8pHosZK8mcTcj17puBx484meDCcmrDePskGHZ"],"license":"MIT"},"src/interfaces/service/IOptInService.sol":{"keccak256":"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a","urls":["bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337","dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24"],"license":"MIT"},"src/interfaces/slasher/IBaseSlasher.sol":{"keccak256":"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404","urls":["bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf","dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx"],"license":"MIT"},"src/interfaces/vault/IVault.sol":{"keccak256":"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235","urls":["bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9","dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R"],"license":"MIT"},"src/interfaces/vault/IVaultStorage.sol":{"keccak256":"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22","urls":["bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e","dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6"],"license":"MIT"}},"version":1},"id":88} \ No newline at end of file diff --git a/out/DelegatorHints.sol/NetworkRestakeDelegatorHints.json b/out/DelegatorHints.sol/NetworkRestakeDelegatorHints.json index b826bb26..5a71f519 100644 --- a/out/DelegatorHints.sol/NetworkRestakeDelegatorHints.json +++ b/out/DelegatorHints.sol/NetworkRestakeDelegatorHints.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"baseDelegatorHints","type":"address","internalType":"address"},{"name":"vaultHints","type":"address","internalType":"address"},{"name":"optInServiceHints","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"BASE_DELEGATOR_HINTS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"HOOK_GAS_LIMIT","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"HOOK_RESERVE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"HOOK_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"NETWORK_LIMIT_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"NETWORK_REGISTRY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_NETWORK_OPT_IN_SERVICE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_NETWORK_SHARES_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_VAULT_OPT_IN_SERVICE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"OPT_IN_SERVICE_HINTS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"TYPE","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"VAULT_FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"VAULT_HINTS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"VERSION","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"pure"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"hook","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"maxNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"networkLimit","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"networkLimitAt","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"networkLimitHint","inputs":[{"name":"delegator","type":"address","internalType":"address"},{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"networkLimitHintInternal","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"exists","type":"bool","internalType":"bool"},{"name":"hint","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"onSlash","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","internalType":"uint48"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"operatorNetworkShares","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"operatorNetworkSharesAt","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"operatorNetworkSharesHint","inputs":[{"name":"delegator","type":"address","internalType":"address"},{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"operatorNetworkSharesHintInternal","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"exists","type":"bool","internalType":"bool"},{"name":"hint","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setHook","inputs":[{"name":"hook_","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMaxNetworkLimit","inputs":[{"name":"identifier","type":"uint96","internalType":"uint96"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOperatorNetworkShares","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stake","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"stakeAt","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hints","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"stakeHints","inputs":[{"name":"delegator","type":"address","internalType":"address"},{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"staticDelegateCall","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"totalOperatorNetworkShares","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"totalOperatorNetworkSharesAt","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"totalOperatorNetworkSharesHint","inputs":[{"name":"delegator","type":"address","internalType":"address"},{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"totalOperatorNetworkSharesHintInternal","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"exists","type":"bool","internalType":"bool"},{"name":"hint","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"vault","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OnSlash","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","indexed":false,"internalType":"uint48"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SetHook","inputs":[{"name":"hook","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SetMaxNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SetNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SetOperatorNetworkShares","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"AlreadySet","inputs":[]},{"type":"error","name":"CheckpointUnorderedInsertion","inputs":[]},{"type":"error","name":"DuplicateRoleHolder","inputs":[]},{"type":"error","name":"ExceedsMaxNetworkLimit","inputs":[]},{"type":"error","name":"ExternalCall","inputs":[]},{"type":"error","name":"InsufficientHookGas","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"MathOverflowedMulDiv","inputs":[]},{"type":"error","name":"MissingRoleHolders","inputs":[]},{"type":"error","name":"NotInitialized","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"NotNetwork","inputs":[]},{"type":"error","name":"NotSlasher","inputs":[]},{"type":"error","name":"NotVault","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ZeroAddressRoleHolder","inputs":[]}],"bytecode":{"object":"0x6101c0346101cf57601f6138de38819003918201601f19168301916001600160401b0391828411858510176101d35781606092869260409687528339810103126101cf5761004c836101e7565b926100648361005d602084016101e7565b92016101e7565b91306080527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff82871c166101be57808083160361017a575b5050505f60a0525f60c0525f60e052610100935f8552610120935f8552610140905f82526101609283526101809384526101a094855251946136e296876101fc88396080518781816105a001528181610fd70152611629015260a051876109e9015260c051876112ac015260e05187818161084b01526112e5015251868181610512015261298501525185818161055601528181611e330152611f3b0152518481816107c901528181611d9a0152611fb9015251838181610e95015261194d015251828181610d9701526119ee015251816110490152f35b6001600160401b0319909116811790915583519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80806100a2565b855163f92ee8a960e01b8152600490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101cf5756fe60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a71461030457806302145348146102ff57806307f9d5fd146102fa578063103f2907146102f5578063128e5d82146102f0578063197aa7ea146102eb5780631a7a7044146102e65780631a80e500146102e157806323f752d5146102dc578063248a9ca3146102d757806325dc9708146102d25780632dd31000146102cd5780632f2ff15d146102c857806336568abe146102c35780633dfd3873146102be5780633eb22c0f146102b957806342c53e33146102b4578063439fab91146102af57806345e78fcb146102aa578063557cab44146102a55780635d32a1c9146102a05780636679191e1461029b57806379d89614146102965780637d24bb27146102915780637f5a7c7b1461028c5780638b3f10b01461028757806391d1485414610282578063987b3ee81461027d5780639b656b22146102785780639f86fd8514610273578063a217fddf1461026e578063a33bc28714610269578063b549ef1f14610264578063bb24fe8a1461025f578063c0cd7c3e1461025a578063c43dc03f14610255578063d15b740e14610250578063d547741f1461024b578063da749d2b14610246578063e02f693714610241578063e49561ee1461023c578063e78eb6ae14610237578063ed4d89e514610232578063fbfa77cf1461022d578063fd4d447c14610228578063ff54740f146102235763ffa1ad741461021e575f80fd5b6116dc565b6116bf565b611695565b61166e565b61160e565b6115d4565b6113e9565b6113cd565b6113b3565b611367565b61133d565b611314565b6112d0565b61128d565b611273565b611126565b61110c565b611078565b611034565b610fa6565b610f48565b610f25565b610efd565b610ec4565b610e80565b610e46565b610e23565b610dc6565b610d82565b610c4a565b610bd1565b610ba8565b610aaf565b610a64565b610a18565b6109d4565b6109b7565b61097e565b6107f8565b6107b4565b61076e565b610585565b610541565b6104fd565b6104c8565b61035e565b3461035a57602036600319011261035a5760043563ffffffff60e01b811680910361035a57602090637965db0b60e01b8114908115610349575b506040519015158152f35b6301ffc9a760e01b1490505f61033e565b5f80fd5b3461035a5760408060031936011261035a57600435906024359061038061202e565b825f526002602052805f2054821161041a57825f526003602052816103a6825f206128d7565b1461040a5781610405916103f57e899d104fc3d8820bd96540612bcc5c448c8837b13b9f7faa43ad0728f0c14f946103e6875f52600360205260405f2090565b6103ef42612d7a565b90612176565b5050519081529081906020820190565b0390a2005b5163a741a04560e01b8152600490fd5b51631eefc06360e31b8152600490fd5b6001600160a01b0381160361035a57565b6024359065ffffffffffff8216820361035a57565b6064359065ffffffffffff8216820361035a57565b608090600319011261035a5760043561047d8161042a565b906024359060443561048e8161042a565b9060643565ffffffffffff8116810361035a5790565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b3461035a576104f96104e56104dc36610465565b92919091611736565b6040519182916020835260208301906104a4565b0390f35b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a57604036600319011261035a5761059e61043b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610602576105e5906004355f52600360205260405f206122f5565b60408051941515855263ffffffff91909116602085015292915050f35b604051637ca475e560e11b8152600490fd5b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b0382111761064357604052565b610614565b606081019081106001600160401b0382111761064357604052565b60a081019081106001600160401b0382111761064357604052565b90601f801991011681019081106001600160401b0382111761064357604052565b604051906106ac82610663565b565b604051906106ac82610628565b6001600160401b03811161064357601f01601f191660200190565b81601f8201121561035a578035906106ed826106bb565b926106fb604051948561067e565b8284526020838301011161035a57815f926020809301838601378301015290565b90608060031983011261035a57600435916024356107398161042a565b9160443565ffffffffffff8116810361035a5791606435906001600160401b03821161035a5761076b916004016106d6565b90565b3461035a5760206107ac6107a76107843661071c565b939190925f526005865260405f209060018060a01b03165f5260205260405f2090565b61242d565b604051908152f35b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a57604036600319011261035a576004356001600160601b038116810361035a5760243590610828612505565b6040516302910f8b60e31b81523360048201526020816024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa908115610979575f9161094a575b5015610938576001600160601b03166bffffffffffffffffffffffff193360601b161790806108b2835f52600260205260405f2090565b54146109265761090b817fc67e7929681aa1bccd63f52b3799bf5805f3009f197db6fdf584b14f7fbf608c926108f0855f52600260205260405f2090565b556108fb8185612534565b6040519081529081906020820190565b0390a261092460015f8051602061366d83398151915255565b005b60405163a741a04560e01b8152600490fd5b6040516323d53b9760e21b8152600490fd5b61096c915060203d602011610972575b610964818361067e565b8101906117e8565b5f61087b565b503d61095a565b6117fc565b3461035a57602036600319011261035a576004355f525f8051602061364d8339815191526020526020600160405f200154604051908152f35b3461035a576104f96104e56109cb36610465565b92919091611904565b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a57604036600319011261035a57610924602435600435610a3b8261042a565b805f525f8051602061364d833981519152602052610a5f600160405f2001546120e1565b61280f565b3461035a57604036600319011261035a57602435610a818161042a565b336001600160a01b03821603610a9d5761092490600435612845565b60405163334bd91960e11b8152600490fd5b3461035a57602036600319011261035a57600435610acc8161042a565b610ad4612505565b335f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c60205260409020547fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c9060ff1615610b8a57506001546001600160a01b039182169181168214610926576001600160a01b03191681176001557f5bbb1d3ebb6a3ad2a0f17ff35e579a83af60604d1d3c2a4c83c62adecadf666d5f80a260015f8051602061366d83398151915255005b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b3461035a57602036600319011261035a576004355f52600360205260206107ac60405f206128d7565b3461035a57604036600319011261035a5760206107ac610c18602435610bf68161042a565b6004355f526005845260405f209060018060a01b03165f5260205260405f2090565b6128d7565b9181601f8401121561035a578235916001600160401b03831161035a576020838186019501011161035a57565b3461035a57602036600319011261035a576001600160401b0360043581811161035a57610c7b903690600401610c1d565b5f8051602061368d833981519152549260ff8460401c1615931680159081610d7a575b6001149081610d70575b159081610d67575b50610d55575f8051602061368d833981519152805467ffffffffffffffff19166001179055610ce39183610d3157612950565b610ce957005b5f8051602061368d833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f8051602061368d833981519152805460ff60401b1916600160401b179055612950565b60405163f92ee8a960e01b8152600490fd5b9050155f610cb0565b303b159150610ca8565b849150610c9e565b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a575f36600319011261035a576020604051614e208152f35b606060031982011261035a576004359160243565ffffffffffff8116810361035a5791604435906001600160401b03821161035a5761076b916004016106d6565b3461035a5760206107ac610e3636610de2565b915f526003845260405f2061242d565b3461035a575f36600319011261035a5760206040517fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c8152f35b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a575f36600319011261035a5760206040517e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf8152f35b3461035a575f36600319011261035a576001546040516001600160a01b039091168152602090f35b3461035a5760206107ac610f3836610de2565b915f526004845260405f2061242d565b3461035a57604036600319011261035a57602060ff610f9a602435610f6c8161042a565b6004355f525f8051602061364d833981519152845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b3461035a57606036600319011261035a57602435610fc38161042a565b60443565ffffffffffff8116810361035a577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036106025761102f6105e5926004355f52600560205260405f209060018060a01b03165f5260205260405f2090565b6122f5565b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a57604036600319011261035a576004356110958161042a565b6024356001600160401b03811161035a575f916110b783923690600401610c1d565b90816040519283928337810184815203915af46111046110d5611b60565b916110f66040519384921515602084015260408084015260608301906104a4565b03601f19810183528261067e565b805190602001fd5b3461035a575f36600319011261035a5760206040515f8152f35b3461035a57606036600319011261035a576024356004356111468261042a565b6044359161115261208a565b5f8281526005602090815260408083206001600160a01b0385168452909152902061117c906128d7565b838114610926577f739a5a3ec0ff71e2386d0013deac5f44e0935a98def2e2a5ddf9a709518c8294916111ef61123c92855f52600460205260405f20906111e9886111e46111c942612d7a565b936111df610c188c5f52600460205260405f2090565b611bb6565b611bd1565b91612176565b5050611220856103e68361120b885f52600560205260405f2090565b9060018060a01b03165f5260205260405f2090565b50506040519485526001600160a01b0316939081906020820190565b0390a3005b606090600319011261035a576004356112598161042a565b906024359060443565ffffffffffff8116810361035a5790565b3461035a576104f96104e561128736611241565b91611bde565b3461035a575f36600319011261035a5760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a57602036600319011261035a576004355f52600460205260206107ac60405f206128d7565b3461035a57602036600319011261035a576004355f526002602052602060405f2054604051908152f35b3461035a57604036600319011261035a5761092460243560043561138a8261042a565b805f525f8051602061364d8339815191526020526113ae600160405f2001546120e1565b612845565b3461035a576104f96104e56113c736611241565b91611c28565b3461035a5760206107ac6113e03661071c565b92919091611d24565b3461035a5760a036600319011261035a576024356004356114098261042a565b60443591611415610450565b90608435906001600160401b03821161035a57611437600492369084016106d6565b61143f612505565b5f5460209061146490611458906001600160a01b031681565b6001600160a01b031690565b60405163b134427160e01b815294859182905afa928315610979575f936115a3575b506001600160a01b039283163303611591576001546001600160a01b0316838116611506575b50506040805195865265ffffffffffff909316602086015216927f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed91819081015b0390a361092460015f8051602061366d83398151915255565b90936040519461153d8661152f602082019363724ab0f760e11b8552858c898d60248701611eae565b03601f19810188528761067e565b62042e305a1061157f575f6114ed938192827f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed9951926203d090f150936114ac565b604051638072475160e01b8152600490fd5b60405163dabc4ad960e01b8152600490fd5b6115c691935060203d6020116115cd575b6115be818361067e565b810190611872565b915f611486565b503d6115b4565b3461035a575f36600319011261035a5760206040517f1312a1cf530e56add9be4fd84db9051dcc7635952f09f735f9a29405b55846258152f35b3461035a57604036600319011261035a5761162761043b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610602576105e5906004355f52600460205260405f206122f5565b3461035a575f36600319011261035a575f546040516001600160a01b039091168152602090f35b3461035a57604036600319011261035a5760206107ac6024356116b78161042a565b600435611f04565b3461035a575f36600319011261035a5760206040516203d0908152f35b3461035a575f36600319011261035a57602060405160018152f35b5190811515820361035a57565b519063ffffffff8216820361035a57565b919082604091031261035a5761076b602061172f846116f7565b9301611704565b906117869165ffffffffffff6117959496956060976040519463130f67dd60e31b6020870152602486015260018060a01b031660448501521660648301526064825261178182610663565b612238565b60208082518301019101611715565b9061179d5750565b90915063ffffffff604051911660208201526020815261076b81610628565b5f9081526005602090815260408083206001600160a01b0390941683529290522061076b92919061242d565b9081602091031261035a5761076b906116f7565b6040513d5f823e3d90fd5b81601f8201121561035a5780519061181e826106bb565b9261182c604051948561067e565b8284526020838301011161035a57815f9260208093018386015e8301015290565b9060208282031261035a5781516001600160401b03811161035a5761076b9201611807565b9081602091031261035a575161076b8161042a565b9061076b91602081526118a6825160a0602084015260c08301906104a4565b9060a060806118f46118e16118cd602088015196601f1997888883030160408901526104a4565b6040880151878783030160608801526104a4565b60608701518686830301848701526104a4565b94015192828503019101526104a4565b604051630df8851f60e11b81526001600160a01b03828116600483015260248201849052848116604483015265ffffffffffff8616606483015295606095909491935f856084817f00000000000000000000000000000000000000000000000000000000000000008c165afa948515610979575f95611b18575b5060405163fbfa77cf60e01b8152602081600481888d165afa908115610979576119ea995f9285928491611af9575b5060405163192c0ff760e21b81526001600160a01b03909116600482015265ffffffffffff909216602483015290998a9190829081906044820190565b03917f0000000000000000000000000000000000000000000000000000000000000000165afa978815610979575f98611acf575b509081611a3b82611a3381611a419689611c28565b958388611736565b94611bde565b90835115801590611ac5575b8015611abb575b8015611ab1575b8015611aa7575b611a6f5750505050909150565b6110f6955061076b9496611a8161069f565b948552602085015260408401526060830152608082015260405192839160208301611887565b5081511515611a62565b5082511515611a5b565b5080511515611a54565b5086511515611a4d565b611a4192919850611af1903d805f833e611ae9818361067e565b81019061184d565b979091611a1e565b611b12915060203d6020116115cd576115be818361067e565b5f6119ad565b611b2d9195503d805f833e611ae9818361067e565b935f61197e565b9061076b92915f52600360205260405f2061242d565b9061076b92915f52600460205260405f2061242d565b3d15611b8a573d90611b71826106bb565b91611b7f604051938461067e565b82523d5f602084013e565b606090565b634e487b7160e01b5f52601160045260245ffd5b5f19810191908211611bb157565b611b8f565b91908203918211611bb157565b9060018201809211611bb157565b91908201809211611bb157565b60405163ed4d89e560e01b6020820152602481019290925265ffffffffffff909216604482015260609291611795916117869161178182606481015b03601f19810184528361067e565b604051630cbd53f560e11b6020820152602481019290925265ffffffffffff90921660448201526060929161179591611786916117818260648101611c1a565b60405190611c7582610628565b60606020838281520152565b9060208282031261035a5781516001600160401b039283821161035a57019060408282031261035a5760405192611cb784610628565b825181811161035a5782611ccc918501611807565b8452602083015190811161035a57611ce49201611807565b602082015290565b6001600160a01b0391821681529116602082015265ffffffffffff909116604082015260806060820181905261076b929101906104a4565b92611d3490929192828486612bb5565b929093611d3f611c68565b93805180611e92575b50508415938415611dfc575b8415611d6b575b50505050611d665790565b505f90565b602080949550611d96910151604051958694859463530e1d4360e01b865260601c9060048601611cec565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610979575f91611ddd575b50155f808080611d5b565b611df6915060203d60201161097257610964818361067e565b5f611dd2565b5f549094506001600160a01b0316602084865192611e2f604051948593849363530e1d4360e01b85528960048601611cec565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610979575f91611e73575b501593611d54565b611e8c915060203d60201161097257610964818361067e565b5f611e6b565b611ea6929550602080918301019101611c81565b925f80611d48565b919360a09361076b969565ffffffffffff938552600180871b03166020850152604084015216606082015281608082015201906104a4565b8115611ef0570490565b634e487b7160e01b5f52601260045260245ffd5b5f546040516308834cb560e21b8082526001600160a01b0385811660048401529283166024830152929392602092909183816044817f000000000000000000000000000000000000000000000000000000000000000086165afa908115610979575f91612011575b5015918215611f8d575b50509050611f875761076b91612cc5565b50505f90565b6040519081526001600160a01b0385166004820152606086901c602482015291508290829060449082907f0000000000000000000000000000000000000000000000000000000000000000165afa918215610979575f92611ff4575b505015805f80611f76565b61200a9250803d1061097257610964818361067e565b5f80611fe9565b6120289150843d861161097257610964818361067e565b5f611f6c565b335f9081527f72a65082a5691803ab2b62c9bc729b34205ba1b183d950896526b2fd8714d0c7602052604090207e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf9060ff905b541615610b8a5750565b335f9081527f8f2dae99798887da307a4daa2c2d11f840b0cb9a6a67822660c531e9ad14dd00602052604090207f1312a1cf530e56add9be4fd84db9051dcc7635952f09f735f9a29405b55846259060ff90612080565b5f8181525f8051602061364d83398151915260209081526040808320338452909152902060ff90612080565b634e487b7160e01b5f52603260045260245ffd5b8054821015612136575f5260205f2001905f90565b61210d565b90815491600160401b831015610643578261215e9160016106ac95018155612121565b90919082549060031b91821b915f19901b1916179055565b90929192600182019081548015612208575b508461219384612dac565b509490928454936121a3836128d7565b96816121f3575b50156121d0575050505f198101908111611bb15761215e85916121cc93612121565b9190565b6121cc9492936121ec926001600160d01b03909116919061349c565b505061213b565b65ffffffffffff83811691161490505f6121aa565b600160401b811015610643578060016122249201845583612121565b8154905f199060031b1b191690555f612188565b5f9190829160405161226d816110f66020820194639f86fd8560e01b86523060248401526040604484015260648301906104a4565b51915afa5061227a611b60565b8051810160408282031261035a57612294602083016116f7565b916040810151916001600160401b03831161035a576122ba926020809201920101611807565b90156122c35790565b805190811561035a57602001fd5b906040516122de81610628565b915465ffffffffffff8116835260301c6020830152565b91908254905f82916005841161239d575b612311935085612f2e565b9081156123915761238a61238161237b61237161234361233e61233388611ba3565b895f5260205f200190565b6122d1565b96600161236a602061235b8b5165ffffffffffff1690565b9a01516001600160d01b031690565b9101612121565b90549060031b1c90565b93611ba3565b63ffffffff1690565b6001939291565b5f925082915081908190565b91926123a881612dfb565b8103908111611bb15761231193865f526123dc6123d18360205f200165ffffffffffff90541690565b65ffffffffffff1690565b65ffffffffffff851610156123f2575091612306565b9291506123fe90611bc3565b90612306565b9081602091031261035a5761076b90611704565b90600163ffffffff80931601918211611bb157565b918051156124fb578060208061244893518301019101612404565b916124538382613055565b92612464845165ffffffffffff1690565b9065ffffffffffff80851692168281146124ef578211918261249a575b50506124915761076b9250612f85565b50506020015190565b9091506124a78354611ba3565b63ffffffff8316149182156124c0575b50505f80612481565b6124e79192506124db6124d56123d192612418565b85613055565b5165ffffffffffff1690565b115f806124b7565b50505050506020015190565b5061076b91612f85565b5f8051602061366d83398151915260028154146125225760029055565b604051633ee5aeb560e01b8152600490fd5b90815f52600360205260405f208161254b82612dac565b9193905083156125a95761256b916001600160d01b031690600101612121565b90549060031b1c5b8261259f575b5050612583575050565b61259b915f52600360205260405f206103ef42612d7a565b5050565b119050815f612579565b50505f612573565b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260409020545f8051602061364d8339815191529060ff16611f87575f808052602091825260408082206001600160a01b038516835290925220805460ff1916600117905533906001600160a01b03165f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b6001600160a01b0381165f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c602052604090207fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c905f8051602061364d8339815191529060ff905b541661272b575f828152602091825260408082206001600160a01b038616835290925220805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b5050505f90565b6001600160a01b0381165f9081527f72a65082a5691803ab2b62c9bc729b34205ba1b183d950896526b2fd8714d0c7602052604090207e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf905f8051602061364d8339815191529060ff906126c7565b6001600160a01b0381165f9081527f8f2dae99798887da307a4daa2c2d11f840b0cb9a6a67822660c531e9ad14dd00602052604090207f1312a1cf530e56add9be4fd84db9051dcc7635952f09f735f9a29405b5584625905f8051602061364d8339815191529060ff906126c7565b5f8181525f8051602061364d833981519152602081815260408084206001600160a01b038716855290915290912060ff906126c7565b5f8181525f8051602061364d833981519152602081815260408084206001600160a01b03871685529091529091205460ff161561272b575f828152602091825260408082206001600160a01b038616835290925220805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b8054806128fc57505f5b6001600160d01b03811615611f875760016123719201612121565b5f19908082810111611bb157825f5260205f2001015460301c6128e1565b91909160408184031261035a5780356129328161042a565b9260208201356001600160401b03811161035a5761076b92016106d6565b61295c9181019061291a565b6040516302910f8b60e31b81526001600160a01b039283166004820181905291906020816024817f000000000000000000000000000000000000000000000000000000000000000088165afa908115610979575f91612a6f575b5015612a5d576129f16040916129ec612a37946129d16130bd565b60018060a01b03166001600160601b0360a01b5f5416175f55565b61323d565b6020810151600180546001600160a01b0319166001600160a01b0390921691909117905580516001600160a01b0316848116612a4d575b5001516001600160a01b031690565b908116612a415750565b612a4a9061265c565b50565b612a56906125b1565b505f612a28565b6040516362df054560e01b8152600490fd5b612a88915060203d60201161097257610964818361067e565b5f6129b6565b6040519060a082018281106001600160401b038211176106435760405281608060609182815282602082015282604082015282808201520152565b9060208282031261035a5781516001600160401b039283821161035a57019060a08282031261035a57612afa61069f565b92825181811161035a5782612b10918501611807565b8452602083015181811161035a5782612b2a918501611807565b6020850152604083015181811161035a5782612b47918501611807565b6040850152606083015181811161035a5782612b64918501611807565b6060850152608083015190811161035a57612b7f9201611807565b608082015290565b9081602091031261035a575190565b60409065ffffffffffff61076b949316815281602082015201906104a4565b91939293612bc1612a8e565b94805180612ca9575b5050612bdb60608601518285611b4a565b9182612bed57505050509051905f9190565b612c01612c3b9183608089015191876117bc565b916020612c1a6114586114585f5460018060a01b031690565b8189015190604051808096819463810da75d60e01b83528760048401612b96565b03915afa801561097957612c7195612c6b935f92612c76575b50612c65919260408a015191611b34565b9061339d565b906133af565b915190565b612c659250612c9c9060203d602011612ca2575b612c94818361067e565b810190612b87565b91612c54565b503d612c8a565b612cbd929650602080918301019101612ac9565b935f80612bca565b90612cdb610c18835f52600460205260405f2090565b9081612ce8575050505f90565b610c18612d019161120b855f52600560205260405f2090565b5f5460405163bd49c35f60e01b815290602090829060049082906001600160a01b03165afa80156109795761076b94612c6b925f92612d51575b50610c18612c65915f52600360205260405f2090565b612c65919250612d72610c189160203d602011612ca257612c94818361067e565b929150612d3b565b65ffffffffffff90818111612d8d571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b805480612dbd5750505f905f905f90565b5f19908082810111611bb157612dda925f5260205f2001016122d1565b9065ffffffffffff82511691602060018060d01b0391015116906001929190565b8015611d665780612c65612ec6612ebc612eb2612ea8612e9e612e94612e8a600161076b9a5f908b60801c80612f22575b508060401c80612f15575b508060201c80612f08575b508060101c80612efb575b508060081c80612eee575b508060041c80612ee1575b508060021c80612ed4575b50821c612ecd575b811c1b612e83818b611ee6565b0160011c90565b612e83818a611ee6565b612e838189611ee6565b612e838188611ee6565b612e838187611ee6565b612e838186611ee6565b612e838185611ee6565b8092611ee6565b8101612e76565b600291509101905f612e6e565b600491509101905f612e63565b600891509101905f612e58565b601091509101905f612e4d565b602091509101905f612e42565b604091509101905f612e37565b9150506080905f612e2c565b905b838310612f3d5750505090565b909192612f4a81856135b2565b90835f5265ffffffffffff808360205f20015416908416105f14612f725750925b9190612f30565b93506001810180911115612f6b57611b8f565b908154905f829160058411612fef575b612fa09350846135f5565b80612fc857505f905b6001600160d01b03821615611f875761076b9160016123719201612121565b612fe2612fd7612fe992611ba3565b835f5260205f200190565b5460301c90565b90612fa9565b9192612ffa81612dfb565b8103908111611bb157612fa093855f5265ffffffffffff808360205f20015416908516105f1461302b575091612f95565b92915061303790611bc3565b90612f95565b6040519061304a82610628565b5f6020838281520152565b9061307e61307861309f9261306861303d565b5061307161303d565b5084612121565b506122d1565b91600165ffffffffffff845116936020828060d01b03910151169101612121565b905490604051926130af84610628565b835260031b1c602082015290565b6130c56135c7565b6130cd6135c7565b60015f8051602061366d83398151915255565b604051906130ed82610648565b5f6040838281528260208201520152565b81601f8201121561035a578051916020916001600160401b038411610643578360051b90604051946131328584018761067e565b8552838086019282010192831161035a578301905b828210613155575050505090565b83809183516131638161042a565b815201910190613147565b9060208282031261035a5781516001600160401b039283821161035a5701908181039260a0841261035a576060604051946131a886610648565b1261035a576040516131b981610648565b83516131c48161042a565b815260208401516131d48161042a565b602082015260408401516131e78161042a565b60408201528452606083015181811161035a57826132069185016130fe565b6020850152608083015190811161035a5761322192016130fe565b604082015290565b80518210156121365760209160051b010190565b613259906132496130e0565b506020808251830101910161316e565b8051519091906001600160a01b03161580613383575b613371579060208101905f5b825180518210156132f557611458613296836132a393613229565b516001600160a01b031690565b156132e3576132c56132c16132bc613296848751613229565b612732565b1590565b6132d15760010161327b565b604051635140fefd60e11b8152600490fd5b6040516323cda06760e01b8152600490fd5b506040925050818101905f5b82518051821015613368576114586132968361331c93613229565b156133575761333a6132c1613335613296848751613229565b6127a0565b61334657600101613301565b8351635140fefd60e11b8152600490fd5b83516323cda06760e01b8152600490fd5b50509150505190565b6040516303501f5960e11b8152600490fd5b50602082015151158061326f57506040820151511561326f565b90808210156133aa575090565b905090565b9091828202915f1984820993838086109503948086039514613434578483111561342257829109815f038216809204600280826003021880830282030280830282030280830282030280830282030280830282030280920290030293600183805f03040190848311900302920304170290565b60405163227bc15360e01b8152600490fd5b50509061076b9250611ee6565b8054600160401b8110156106435761345e91600182018155612121565b61348957815160209092015160301b65ffffffffffff191665ffffffffffff92909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b805492939291908215613589576134b861233e612fd785611ba3565b906134c9825165ffffffffffff1690565b65ffffffffffff84811691168110613577576121cc9460209488926134f76123d1875165ffffffffffff1690565b0361353f57506135319261350d61351892611ba3565b905f5260205f200190565b9065ffffffffffff82549181199060301b169116179055565b01516001600160d01b031690565b9150506135729161355f6135516106ae565b65ffffffffffff9093168352565b6001600160d01b03881682860152613441565b613531565b604051632520601d60e01b8152600490fd5b6135ad92506135996135516106ae565b6001600160d01b0385166020830152613441565b5f9190565b90808216911860011c8101809111611bb15790565b60ff5f8051602061368d8339815191525460401c16156135e357565b604051631afcd79f60e31b8152600490fd5b905b8383106136045750505090565b90919261361181856135b2565b90835f5265ffffffffffff808360205f20015416908416105f146136395750925b91906135f7565b9350600181018091111561363257611b8f56fe02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a264697066735822122029f0973058268d4c15bb68cd12766d98013081e51e50292e237f8f15461e8b6864736f6c63430008190033","sourceMap":"3228:4636:81:-:0;;;;;;;;;;;;;-1:-1:-1;;3228:4636:81;;;;-1:-1:-1;;;;;3228:4636:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;348:4:82;;332:21;;8837:64:25;3228:4636:81;;;;;;;;;7896:76:25;;3228:4636:81;;;;7985:34:25;7981:146;;-1:-1:-1;525:17:69;;;-1:-1:-1;525:17:69;;-1:-1:-1;552:12:69;;-1:-1:-1;2360:34:76;;2404:28;;-1:-1:-1;2404:28:76;;2442:57;;-1:-1:-1;2442:57:76;;2509:61;;-1:-1:-1;2509:61:76;;3714:41:81;;;;3765:24;;;;3799:40;;;;3228:4636;;;;;;;;332:21:82;3228:4636:81;;;;;;;;;;;;;;;525:17:69;3228:4636:81;;;;;552:12:69;3228:4636:81;;;;;2360:34:76;3228:4636:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7981:146:25;-1:-1:-1;;;;;;3228:4636:81;;;;;;;;;;;;;8087:29:25;;3228:4636:81;;8087:29:25;7981:146;;;;;7896:76;3228:4636:81;;-1:-1:-1;;;7938:23:25;;;;;3228:4636:81;-1:-1:-1;3228:4636:81;;;;;;-1:-1:-1;3228:4636:81;;;;;-1:-1:-1;3228:4636:81;;;;-1:-1:-1;;;;;3228:4636:81;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a71461030457806302145348146102ff57806307f9d5fd146102fa578063103f2907146102f5578063128e5d82146102f0578063197aa7ea146102eb5780631a7a7044146102e65780631a80e500146102e157806323f752d5146102dc578063248a9ca3146102d757806325dc9708146102d25780632dd31000146102cd5780632f2ff15d146102c857806336568abe146102c35780633dfd3873146102be5780633eb22c0f146102b957806342c53e33146102b4578063439fab91146102af57806345e78fcb146102aa578063557cab44146102a55780635d32a1c9146102a05780636679191e1461029b57806379d89614146102965780637d24bb27146102915780637f5a7c7b1461028c5780638b3f10b01461028757806391d1485414610282578063987b3ee81461027d5780639b656b22146102785780639f86fd8514610273578063a217fddf1461026e578063a33bc28714610269578063b549ef1f14610264578063bb24fe8a1461025f578063c0cd7c3e1461025a578063c43dc03f14610255578063d15b740e14610250578063d547741f1461024b578063da749d2b14610246578063e02f693714610241578063e49561ee1461023c578063e78eb6ae14610237578063ed4d89e514610232578063fbfa77cf1461022d578063fd4d447c14610228578063ff54740f146102235763ffa1ad741461021e575f80fd5b6116dc565b6116bf565b611695565b61166e565b61160e565b6115d4565b6113e9565b6113cd565b6113b3565b611367565b61133d565b611314565b6112d0565b61128d565b611273565b611126565b61110c565b611078565b611034565b610fa6565b610f48565b610f25565b610efd565b610ec4565b610e80565b610e46565b610e23565b610dc6565b610d82565b610c4a565b610bd1565b610ba8565b610aaf565b610a64565b610a18565b6109d4565b6109b7565b61097e565b6107f8565b6107b4565b61076e565b610585565b610541565b6104fd565b6104c8565b61035e565b3461035a57602036600319011261035a5760043563ffffffff60e01b811680910361035a57602090637965db0b60e01b8114908115610349575b506040519015158152f35b6301ffc9a760e01b1490505f61033e565b5f80fd5b3461035a5760408060031936011261035a57600435906024359061038061202e565b825f526002602052805f2054821161041a57825f526003602052816103a6825f206128d7565b1461040a5781610405916103f57e899d104fc3d8820bd96540612bcc5c448c8837b13b9f7faa43ad0728f0c14f946103e6875f52600360205260405f2090565b6103ef42612d7a565b90612176565b5050519081529081906020820190565b0390a2005b5163a741a04560e01b8152600490fd5b51631eefc06360e31b8152600490fd5b6001600160a01b0381160361035a57565b6024359065ffffffffffff8216820361035a57565b6064359065ffffffffffff8216820361035a57565b608090600319011261035a5760043561047d8161042a565b906024359060443561048e8161042a565b9060643565ffffffffffff8116810361035a5790565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b3461035a576104f96104e56104dc36610465565b92919091611736565b6040519182916020835260208301906104a4565b0390f35b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a57604036600319011261035a5761059e61043b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610602576105e5906004355f52600360205260405f206122f5565b60408051941515855263ffffffff91909116602085015292915050f35b604051637ca475e560e11b8152600490fd5b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b0382111761064357604052565b610614565b606081019081106001600160401b0382111761064357604052565b60a081019081106001600160401b0382111761064357604052565b90601f801991011681019081106001600160401b0382111761064357604052565b604051906106ac82610663565b565b604051906106ac82610628565b6001600160401b03811161064357601f01601f191660200190565b81601f8201121561035a578035906106ed826106bb565b926106fb604051948561067e565b8284526020838301011161035a57815f926020809301838601378301015290565b90608060031983011261035a57600435916024356107398161042a565b9160443565ffffffffffff8116810361035a5791606435906001600160401b03821161035a5761076b916004016106d6565b90565b3461035a5760206107ac6107a76107843661071c565b939190925f526005865260405f209060018060a01b03165f5260205260405f2090565b61242d565b604051908152f35b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a57604036600319011261035a576004356001600160601b038116810361035a5760243590610828612505565b6040516302910f8b60e31b81523360048201526020816024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa908115610979575f9161094a575b5015610938576001600160601b03166bffffffffffffffffffffffff193360601b161790806108b2835f52600260205260405f2090565b54146109265761090b817fc67e7929681aa1bccd63f52b3799bf5805f3009f197db6fdf584b14f7fbf608c926108f0855f52600260205260405f2090565b556108fb8185612534565b6040519081529081906020820190565b0390a261092460015f8051602061366d83398151915255565b005b60405163a741a04560e01b8152600490fd5b6040516323d53b9760e21b8152600490fd5b61096c915060203d602011610972575b610964818361067e565b8101906117e8565b5f61087b565b503d61095a565b6117fc565b3461035a57602036600319011261035a576004355f525f8051602061364d8339815191526020526020600160405f200154604051908152f35b3461035a576104f96104e56109cb36610465565b92919091611904565b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a57604036600319011261035a57610924602435600435610a3b8261042a565b805f525f8051602061364d833981519152602052610a5f600160405f2001546120e1565b61280f565b3461035a57604036600319011261035a57602435610a818161042a565b336001600160a01b03821603610a9d5761092490600435612845565b60405163334bd91960e11b8152600490fd5b3461035a57602036600319011261035a57600435610acc8161042a565b610ad4612505565b335f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c60205260409020547fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c9060ff1615610b8a57506001546001600160a01b039182169181168214610926576001600160a01b03191681176001557f5bbb1d3ebb6a3ad2a0f17ff35e579a83af60604d1d3c2a4c83c62adecadf666d5f80a260015f8051602061366d83398151915255005b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b3461035a57602036600319011261035a576004355f52600360205260206107ac60405f206128d7565b3461035a57604036600319011261035a5760206107ac610c18602435610bf68161042a565b6004355f526005845260405f209060018060a01b03165f5260205260405f2090565b6128d7565b9181601f8401121561035a578235916001600160401b03831161035a576020838186019501011161035a57565b3461035a57602036600319011261035a576001600160401b0360043581811161035a57610c7b903690600401610c1d565b5f8051602061368d833981519152549260ff8460401c1615931680159081610d7a575b6001149081610d70575b159081610d67575b50610d55575f8051602061368d833981519152805467ffffffffffffffff19166001179055610ce39183610d3157612950565b610ce957005b5f8051602061368d833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f8051602061368d833981519152805460ff60401b1916600160401b179055612950565b60405163f92ee8a960e01b8152600490fd5b9050155f610cb0565b303b159150610ca8565b849150610c9e565b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a575f36600319011261035a576020604051614e208152f35b606060031982011261035a576004359160243565ffffffffffff8116810361035a5791604435906001600160401b03821161035a5761076b916004016106d6565b3461035a5760206107ac610e3636610de2565b915f526003845260405f2061242d565b3461035a575f36600319011261035a5760206040517fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c8152f35b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a575f36600319011261035a5760206040517e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf8152f35b3461035a575f36600319011261035a576001546040516001600160a01b039091168152602090f35b3461035a5760206107ac610f3836610de2565b915f526004845260405f2061242d565b3461035a57604036600319011261035a57602060ff610f9a602435610f6c8161042a565b6004355f525f8051602061364d833981519152845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b3461035a57606036600319011261035a57602435610fc38161042a565b60443565ffffffffffff8116810361035a577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036106025761102f6105e5926004355f52600560205260405f209060018060a01b03165f5260205260405f2090565b6122f5565b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a57604036600319011261035a576004356110958161042a565b6024356001600160401b03811161035a575f916110b783923690600401610c1d565b90816040519283928337810184815203915af46111046110d5611b60565b916110f66040519384921515602084015260408084015260608301906104a4565b03601f19810183528261067e565b805190602001fd5b3461035a575f36600319011261035a5760206040515f8152f35b3461035a57606036600319011261035a576024356004356111468261042a565b6044359161115261208a565b5f8281526005602090815260408083206001600160a01b0385168452909152902061117c906128d7565b838114610926577f739a5a3ec0ff71e2386d0013deac5f44e0935a98def2e2a5ddf9a709518c8294916111ef61123c92855f52600460205260405f20906111e9886111e46111c942612d7a565b936111df610c188c5f52600460205260405f2090565b611bb6565b611bd1565b91612176565b5050611220856103e68361120b885f52600560205260405f2090565b9060018060a01b03165f5260205260405f2090565b50506040519485526001600160a01b0316939081906020820190565b0390a3005b606090600319011261035a576004356112598161042a565b906024359060443565ffffffffffff8116810361035a5790565b3461035a576104f96104e561128736611241565b91611bde565b3461035a575f36600319011261035a5760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a57602036600319011261035a576004355f52600460205260206107ac60405f206128d7565b3461035a57602036600319011261035a576004355f526002602052602060405f2054604051908152f35b3461035a57604036600319011261035a5761092460243560043561138a8261042a565b805f525f8051602061364d8339815191526020526113ae600160405f2001546120e1565b612845565b3461035a576104f96104e56113c736611241565b91611c28565b3461035a5760206107ac6113e03661071c565b92919091611d24565b3461035a5760a036600319011261035a576024356004356114098261042a565b60443591611415610450565b90608435906001600160401b03821161035a57611437600492369084016106d6565b61143f612505565b5f5460209061146490611458906001600160a01b031681565b6001600160a01b031690565b60405163b134427160e01b815294859182905afa928315610979575f936115a3575b506001600160a01b039283163303611591576001546001600160a01b0316838116611506575b50506040805195865265ffffffffffff909316602086015216927f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed91819081015b0390a361092460015f8051602061366d83398151915255565b90936040519461153d8661152f602082019363724ab0f760e11b8552858c898d60248701611eae565b03601f19810188528761067e565b62042e305a1061157f575f6114ed938192827f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed9951926203d090f150936114ac565b604051638072475160e01b8152600490fd5b60405163dabc4ad960e01b8152600490fd5b6115c691935060203d6020116115cd575b6115be818361067e565b810190611872565b915f611486565b503d6115b4565b3461035a575f36600319011261035a5760206040517f1312a1cf530e56add9be4fd84db9051dcc7635952f09f735f9a29405b55846258152f35b3461035a57604036600319011261035a5761162761043b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610602576105e5906004355f52600460205260405f206122f5565b3461035a575f36600319011261035a575f546040516001600160a01b039091168152602090f35b3461035a57604036600319011261035a5760206107ac6024356116b78161042a565b600435611f04565b3461035a575f36600319011261035a5760206040516203d0908152f35b3461035a575f36600319011261035a57602060405160018152f35b5190811515820361035a57565b519063ffffffff8216820361035a57565b919082604091031261035a5761076b602061172f846116f7565b9301611704565b906117869165ffffffffffff6117959496956060976040519463130f67dd60e31b6020870152602486015260018060a01b031660448501521660648301526064825261178182610663565b612238565b60208082518301019101611715565b9061179d5750565b90915063ffffffff604051911660208201526020815261076b81610628565b5f9081526005602090815260408083206001600160a01b0390941683529290522061076b92919061242d565b9081602091031261035a5761076b906116f7565b6040513d5f823e3d90fd5b81601f8201121561035a5780519061181e826106bb565b9261182c604051948561067e565b8284526020838301011161035a57815f9260208093018386015e8301015290565b9060208282031261035a5781516001600160401b03811161035a5761076b9201611807565b9081602091031261035a575161076b8161042a565b9061076b91602081526118a6825160a0602084015260c08301906104a4565b9060a060806118f46118e16118cd602088015196601f1997888883030160408901526104a4565b6040880151878783030160608801526104a4565b60608701518686830301848701526104a4565b94015192828503019101526104a4565b604051630df8851f60e11b81526001600160a01b03828116600483015260248201849052848116604483015265ffffffffffff8616606483015295606095909491935f856084817f00000000000000000000000000000000000000000000000000000000000000008c165afa948515610979575f95611b18575b5060405163fbfa77cf60e01b8152602081600481888d165afa908115610979576119ea995f9285928491611af9575b5060405163192c0ff760e21b81526001600160a01b03909116600482015265ffffffffffff909216602483015290998a9190829081906044820190565b03917f0000000000000000000000000000000000000000000000000000000000000000165afa978815610979575f98611acf575b509081611a3b82611a3381611a419689611c28565b958388611736565b94611bde565b90835115801590611ac5575b8015611abb575b8015611ab1575b8015611aa7575b611a6f5750505050909150565b6110f6955061076b9496611a8161069f565b948552602085015260408401526060830152608082015260405192839160208301611887565b5081511515611a62565b5082511515611a5b565b5080511515611a54565b5086511515611a4d565b611a4192919850611af1903d805f833e611ae9818361067e565b81019061184d565b979091611a1e565b611b12915060203d6020116115cd576115be818361067e565b5f6119ad565b611b2d9195503d805f833e611ae9818361067e565b935f61197e565b9061076b92915f52600360205260405f2061242d565b9061076b92915f52600460205260405f2061242d565b3d15611b8a573d90611b71826106bb565b91611b7f604051938461067e565b82523d5f602084013e565b606090565b634e487b7160e01b5f52601160045260245ffd5b5f19810191908211611bb157565b611b8f565b91908203918211611bb157565b9060018201809211611bb157565b91908201809211611bb157565b60405163ed4d89e560e01b6020820152602481019290925265ffffffffffff909216604482015260609291611795916117869161178182606481015b03601f19810184528361067e565b604051630cbd53f560e11b6020820152602481019290925265ffffffffffff90921660448201526060929161179591611786916117818260648101611c1a565b60405190611c7582610628565b60606020838281520152565b9060208282031261035a5781516001600160401b039283821161035a57019060408282031261035a5760405192611cb784610628565b825181811161035a5782611ccc918501611807565b8452602083015190811161035a57611ce49201611807565b602082015290565b6001600160a01b0391821681529116602082015265ffffffffffff909116604082015260806060820181905261076b929101906104a4565b92611d3490929192828486612bb5565b929093611d3f611c68565b93805180611e92575b50508415938415611dfc575b8415611d6b575b50505050611d665790565b505f90565b602080949550611d96910151604051958694859463530e1d4360e01b865260601c9060048601611cec565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610979575f91611ddd575b50155f808080611d5b565b611df6915060203d60201161097257610964818361067e565b5f611dd2565b5f549094506001600160a01b0316602084865192611e2f604051948593849363530e1d4360e01b85528960048601611cec565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610979575f91611e73575b501593611d54565b611e8c915060203d60201161097257610964818361067e565b5f611e6b565b611ea6929550602080918301019101611c81565b925f80611d48565b919360a09361076b969565ffffffffffff938552600180871b03166020850152604084015216606082015281608082015201906104a4565b8115611ef0570490565b634e487b7160e01b5f52601260045260245ffd5b5f546040516308834cb560e21b8082526001600160a01b0385811660048401529283166024830152929392602092909183816044817f000000000000000000000000000000000000000000000000000000000000000086165afa908115610979575f91612011575b5015918215611f8d575b50509050611f875761076b91612cc5565b50505f90565b6040519081526001600160a01b0385166004820152606086901c602482015291508290829060449082907f0000000000000000000000000000000000000000000000000000000000000000165afa918215610979575f92611ff4575b505015805f80611f76565b61200a9250803d1061097257610964818361067e565b5f80611fe9565b6120289150843d861161097257610964818361067e565b5f611f6c565b335f9081527f72a65082a5691803ab2b62c9bc729b34205ba1b183d950896526b2fd8714d0c7602052604090207e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf9060ff905b541615610b8a5750565b335f9081527f8f2dae99798887da307a4daa2c2d11f840b0cb9a6a67822660c531e9ad14dd00602052604090207f1312a1cf530e56add9be4fd84db9051dcc7635952f09f735f9a29405b55846259060ff90612080565b5f8181525f8051602061364d83398151915260209081526040808320338452909152902060ff90612080565b634e487b7160e01b5f52603260045260245ffd5b8054821015612136575f5260205f2001905f90565b61210d565b90815491600160401b831015610643578261215e9160016106ac95018155612121565b90919082549060031b91821b915f19901b1916179055565b90929192600182019081548015612208575b508461219384612dac565b509490928454936121a3836128d7565b96816121f3575b50156121d0575050505f198101908111611bb15761215e85916121cc93612121565b9190565b6121cc9492936121ec926001600160d01b03909116919061349c565b505061213b565b65ffffffffffff83811691161490505f6121aa565b600160401b811015610643578060016122249201845583612121565b8154905f199060031b1b191690555f612188565b5f9190829160405161226d816110f66020820194639f86fd8560e01b86523060248401526040604484015260648301906104a4565b51915afa5061227a611b60565b8051810160408282031261035a57612294602083016116f7565b916040810151916001600160401b03831161035a576122ba926020809201920101611807565b90156122c35790565b805190811561035a57602001fd5b906040516122de81610628565b915465ffffffffffff8116835260301c6020830152565b91908254905f82916005841161239d575b612311935085612f2e565b9081156123915761238a61238161237b61237161234361233e61233388611ba3565b895f5260205f200190565b6122d1565b96600161236a602061235b8b5165ffffffffffff1690565b9a01516001600160d01b031690565b9101612121565b90549060031b1c90565b93611ba3565b63ffffffff1690565b6001939291565b5f925082915081908190565b91926123a881612dfb565b8103908111611bb15761231193865f526123dc6123d18360205f200165ffffffffffff90541690565b65ffffffffffff1690565b65ffffffffffff851610156123f2575091612306565b9291506123fe90611bc3565b90612306565b9081602091031261035a5761076b90611704565b90600163ffffffff80931601918211611bb157565b918051156124fb578060208061244893518301019101612404565b916124538382613055565b92612464845165ffffffffffff1690565b9065ffffffffffff80851692168281146124ef578211918261249a575b50506124915761076b9250612f85565b50506020015190565b9091506124a78354611ba3565b63ffffffff8316149182156124c0575b50505f80612481565b6124e79192506124db6124d56123d192612418565b85613055565b5165ffffffffffff1690565b115f806124b7565b50505050506020015190565b5061076b91612f85565b5f8051602061366d83398151915260028154146125225760029055565b604051633ee5aeb560e01b8152600490fd5b90815f52600360205260405f208161254b82612dac565b9193905083156125a95761256b916001600160d01b031690600101612121565b90549060031b1c5b8261259f575b5050612583575050565b61259b915f52600360205260405f206103ef42612d7a565b5050565b119050815f612579565b50505f612573565b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260409020545f8051602061364d8339815191529060ff16611f87575f808052602091825260408082206001600160a01b038516835290925220805460ff1916600117905533906001600160a01b03165f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b6001600160a01b0381165f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c602052604090207fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c905f8051602061364d8339815191529060ff905b541661272b575f828152602091825260408082206001600160a01b038616835290925220805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b5050505f90565b6001600160a01b0381165f9081527f72a65082a5691803ab2b62c9bc729b34205ba1b183d950896526b2fd8714d0c7602052604090207e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf905f8051602061364d8339815191529060ff906126c7565b6001600160a01b0381165f9081527f8f2dae99798887da307a4daa2c2d11f840b0cb9a6a67822660c531e9ad14dd00602052604090207f1312a1cf530e56add9be4fd84db9051dcc7635952f09f735f9a29405b5584625905f8051602061364d8339815191529060ff906126c7565b5f8181525f8051602061364d833981519152602081815260408084206001600160a01b038716855290915290912060ff906126c7565b5f8181525f8051602061364d833981519152602081815260408084206001600160a01b03871685529091529091205460ff161561272b575f828152602091825260408082206001600160a01b038616835290925220805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b8054806128fc57505f5b6001600160d01b03811615611f875760016123719201612121565b5f19908082810111611bb157825f5260205f2001015460301c6128e1565b91909160408184031261035a5780356129328161042a565b9260208201356001600160401b03811161035a5761076b92016106d6565b61295c9181019061291a565b6040516302910f8b60e31b81526001600160a01b039283166004820181905291906020816024817f000000000000000000000000000000000000000000000000000000000000000088165afa908115610979575f91612a6f575b5015612a5d576129f16040916129ec612a37946129d16130bd565b60018060a01b03166001600160601b0360a01b5f5416175f55565b61323d565b6020810151600180546001600160a01b0319166001600160a01b0390921691909117905580516001600160a01b0316848116612a4d575b5001516001600160a01b031690565b908116612a415750565b612a4a9061265c565b50565b612a56906125b1565b505f612a28565b6040516362df054560e01b8152600490fd5b612a88915060203d60201161097257610964818361067e565b5f6129b6565b6040519060a082018281106001600160401b038211176106435760405281608060609182815282602082015282604082015282808201520152565b9060208282031261035a5781516001600160401b039283821161035a57019060a08282031261035a57612afa61069f565b92825181811161035a5782612b10918501611807565b8452602083015181811161035a5782612b2a918501611807565b6020850152604083015181811161035a5782612b47918501611807565b6040850152606083015181811161035a5782612b64918501611807565b6060850152608083015190811161035a57612b7f9201611807565b608082015290565b9081602091031261035a575190565b60409065ffffffffffff61076b949316815281602082015201906104a4565b91939293612bc1612a8e565b94805180612ca9575b5050612bdb60608601518285611b4a565b9182612bed57505050509051905f9190565b612c01612c3b9183608089015191876117bc565b916020612c1a6114586114585f5460018060a01b031690565b8189015190604051808096819463810da75d60e01b83528760048401612b96565b03915afa801561097957612c7195612c6b935f92612c76575b50612c65919260408a015191611b34565b9061339d565b906133af565b915190565b612c659250612c9c9060203d602011612ca2575b612c94818361067e565b810190612b87565b91612c54565b503d612c8a565b612cbd929650602080918301019101612ac9565b935f80612bca565b90612cdb610c18835f52600460205260405f2090565b9081612ce8575050505f90565b610c18612d019161120b855f52600560205260405f2090565b5f5460405163bd49c35f60e01b815290602090829060049082906001600160a01b03165afa80156109795761076b94612c6b925f92612d51575b50610c18612c65915f52600360205260405f2090565b612c65919250612d72610c189160203d602011612ca257612c94818361067e565b929150612d3b565b65ffffffffffff90818111612d8d571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b805480612dbd5750505f905f905f90565b5f19908082810111611bb157612dda925f5260205f2001016122d1565b9065ffffffffffff82511691602060018060d01b0391015116906001929190565b8015611d665780612c65612ec6612ebc612eb2612ea8612e9e612e94612e8a600161076b9a5f908b60801c80612f22575b508060401c80612f15575b508060201c80612f08575b508060101c80612efb575b508060081c80612eee575b508060041c80612ee1575b508060021c80612ed4575b50821c612ecd575b811c1b612e83818b611ee6565b0160011c90565b612e83818a611ee6565b612e838189611ee6565b612e838188611ee6565b612e838187611ee6565b612e838186611ee6565b612e838185611ee6565b8092611ee6565b8101612e76565b600291509101905f612e6e565b600491509101905f612e63565b600891509101905f612e58565b601091509101905f612e4d565b602091509101905f612e42565b604091509101905f612e37565b9150506080905f612e2c565b905b838310612f3d5750505090565b909192612f4a81856135b2565b90835f5265ffffffffffff808360205f20015416908416105f14612f725750925b9190612f30565b93506001810180911115612f6b57611b8f565b908154905f829160058411612fef575b612fa09350846135f5565b80612fc857505f905b6001600160d01b03821615611f875761076b9160016123719201612121565b612fe2612fd7612fe992611ba3565b835f5260205f200190565b5460301c90565b90612fa9565b9192612ffa81612dfb565b8103908111611bb157612fa093855f5265ffffffffffff808360205f20015416908516105f1461302b575091612f95565b92915061303790611bc3565b90612f95565b6040519061304a82610628565b5f6020838281520152565b9061307e61307861309f9261306861303d565b5061307161303d565b5084612121565b506122d1565b91600165ffffffffffff845116936020828060d01b03910151169101612121565b905490604051926130af84610628565b835260031b1c602082015290565b6130c56135c7565b6130cd6135c7565b60015f8051602061366d83398151915255565b604051906130ed82610648565b5f6040838281528260208201520152565b81601f8201121561035a578051916020916001600160401b038411610643578360051b90604051946131328584018761067e565b8552838086019282010192831161035a578301905b828210613155575050505090565b83809183516131638161042a565b815201910190613147565b9060208282031261035a5781516001600160401b039283821161035a5701908181039260a0841261035a576060604051946131a886610648565b1261035a576040516131b981610648565b83516131c48161042a565b815260208401516131d48161042a565b602082015260408401516131e78161042a565b60408201528452606083015181811161035a57826132069185016130fe565b6020850152608083015190811161035a5761322192016130fe565b604082015290565b80518210156121365760209160051b010190565b613259906132496130e0565b506020808251830101910161316e565b8051519091906001600160a01b03161580613383575b613371579060208101905f5b825180518210156132f557611458613296836132a393613229565b516001600160a01b031690565b156132e3576132c56132c16132bc613296848751613229565b612732565b1590565b6132d15760010161327b565b604051635140fefd60e11b8152600490fd5b6040516323cda06760e01b8152600490fd5b506040925050818101905f5b82518051821015613368576114586132968361331c93613229565b156133575761333a6132c1613335613296848751613229565b6127a0565b61334657600101613301565b8351635140fefd60e11b8152600490fd5b83516323cda06760e01b8152600490fd5b50509150505190565b6040516303501f5960e11b8152600490fd5b50602082015151158061326f57506040820151511561326f565b90808210156133aa575090565b905090565b9091828202915f1984820993838086109503948086039514613434578483111561342257829109815f038216809204600280826003021880830282030280830282030280830282030280830282030280830282030280920290030293600183805f03040190848311900302920304170290565b60405163227bc15360e01b8152600490fd5b50509061076b9250611ee6565b8054600160401b8110156106435761345e91600182018155612121565b61348957815160209092015160301b65ffffffffffff191665ffffffffffff92909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b805492939291908215613589576134b861233e612fd785611ba3565b906134c9825165ffffffffffff1690565b65ffffffffffff84811691168110613577576121cc9460209488926134f76123d1875165ffffffffffff1690565b0361353f57506135319261350d61351892611ba3565b905f5260205f200190565b9065ffffffffffff82549181199060301b169116179055565b01516001600160d01b031690565b9150506135729161355f6135516106ae565b65ffffffffffff9093168352565b6001600160d01b03881682860152613441565b613531565b604051632520601d60e01b8152600490fd5b6135ad92506135996135516106ae565b6001600160d01b0385166020830152613441565b5f9190565b90808216911860011c8101809111611bb15790565b60ff5f8051602061368d8339815191525460401c16156135e357565b604051631afcd79f60e31b8152600490fd5b905b8383106136045750505090565b90919261361181856135b2565b90835f5265ffffffffffff808360205f20015416908416105f146136395750925b91906135f7565b9350600181018091111561363257611b8f56fe02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a264697066735822122029f0973058268d4c15bb68cd12766d98013081e51e50292e237f8f15461e8b6864736f6c63430008190033","sourceMap":"3228:4636:81:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;-1:-1:-1;;3228:4636:81;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3551:47:23;;;:87;;;;3228:4636:81;;;;;;;;;;3551:87:23;-1:-1:-1;;;1133:40:29;;-1:-1:-1;3551:87:23;;;3228:4636:81;-1:-1:-1;3228:4636:81;;;;;;;;;;;;;;;;;;;;3202:4:23;;;:::i;:::-;3228:4636:81;-1:-1:-1;3228:4636:81;3610:15:78;3228:4636:81;;;-1:-1:-1;3228:4636:81;;3601:36:78;;3597:98;;3228:4636:81;-1:-1:-1;3228:4636:81;2233:13:78;3228:4636:81;;;2233:34:78;3228:4636:81;-1:-1:-1;3228:4636:81;2233:34:78;:::i;:::-;3709;3705:84;;3799:25;3871:35;3799:25;:56;3871:35;3799:25;;;3228:4636:81;;2233:13:78;3228:4636:81;;;;;;;3799:25:78;819:34:62;837:15;819:34;:::i;:::-;3799:56:78;;:::i;:::-;-1:-1:-1;;3228:4636:81;;;;;;;;;;;;3871:35:78;;;;3228:4636:81;3705:84:78;3228:4636:81;-1:-1:-1;;;3766:12:78;;3228:4636:81;;3766:12:78;3597:98;3228:4636:81;-1:-1:-1;;;3660:24:78;;3228:4636:81;;3660:24:78;3228:4636:81;-1:-1:-1;;;;;3228:4636:81;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;3228:4636:81;;;;;;;;-1:-1:-1;;3228:4636:81;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;3228:4636:81;;;;;;1537:38:76;-1:-1:-1;;;;;3228:4636:81;;;;;;;;;;;;-1:-1:-1;;3228:4636:81;;;;;;1632:54:76;-1:-1:-1;;;;;3228:4636:81;;;;;;;;;;;;-1:-1:-1;;3228:4636:81;;;;;;:::i;:::-;449:5:82;-1:-1:-1;;;;;3228:4636:81;435:10:82;:19;431:71;;4041:64:81;3228:4636;;;-1:-1:-1;3228:4636:81;4041:13;3228:4636;;;-1:-1:-1;3228:4636:81;4041:64;:::i;:::-;3228:4636;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3228:4636:81;431:71:82;3228:4636:81;;-1:-1:-1;;;477:14:82;;3228:4636:81;;477:14:82;3228:4636:81;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3228:4636:81;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;-1:-1:-1;;;;;3228:4636:81;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;3228:4636:81;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;3228:4636:81;;;;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;:::i;:::-;-1:-1:-1;;;;;3228:4636:81;;;;;;-1:-1:-1;;3228:4636:81;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;3228:4636:81;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;3228:4636:81;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;;;;3228:4636:81;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;3090:79:78;:44;3228:4636:81;;;:::i;:::-;;;;;-1:-1:-1;3228:4636:81;3090:22:78;3228:4636:81;;;-1:-1:-1;3228:4636:81;;;;;;;;;;;;;;;;;3090:44:78;:79;:::i;:::-;3228:4636:81;;;;;;;;;;;;-1:-1:-1;;3228:4636:81;;;;;;1743:56:76;-1:-1:-1;;;;;3228:4636:81;;;;;;;;;;;;-1:-1:-1;;3228:4636:81;;;;;;-1:-1:-1;;;;;3228:4636:81;;;;;;;;3217:103:28;;;:::i;:::-;3228:4636:81;;-1:-1:-1;;;4285:48:76;;4322:10;3228:4636:81;4285:48:76;;3228:4636:81;;;;;-1:-1:-1;;;;;4295:16:76;3228:4636:81;4285:48:76;;;;;;;-1:-1:-1;4285:48:76;;;3228:4636:81;4284:49:76;;4280:99;;-1:-1:-1;;;;;3228:4636:81;-1:-1:-1;;4322:10:76;297:2:88;3228:4636:81;;267:46:88;4459:27:76;;;;3228:4636:81;;4459:15:76;3228:4636:81;;;;;;;4459:27:76;3228:4636:81;4459:37:76;4455:87;;4654:38;4552:27;4654:38;4552:27;;;3228:4636:81;;4459:15:76;3228:4636:81;;;;;;;4552:27:76;3228:4636:81;4631:6:76;;;;:::i;:::-;3228:4636:81;;;;;;;;;;;;;4654:38:76;;;;3282:1:28;1805;-1:-1:-1;;;;;;;;;;;3228:4636:81;3716:283:28;3282:1;3228:4636:81;4455:87:76;3228:4636:81;;-1:-1:-1;;;4519:12:76;;3228:4636:81;;4519:12:76;4280:99;3228:4636:81;;-1:-1:-1;;;4356:12:76;;3228:4636:81;;4356:12:76;4285:48;;;;3228:4636:81;4285:48:76;3228:4636:81;4285:48:76;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;3228:4636:81:-;;;;;;-1:-1:-1;;3228:4636:81;;;;;;-1:-1:-1;3228:4636:81;-1:-1:-1;;;;;;;;;;;3228:4636:81;;;4919:24:23;3228:4636:81;-1:-1:-1;3228:4636:81;4919:24:23;3228:4636:81;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;-1:-1:-1;;3228:4636:81;;;;;;322:32:69;-1:-1:-1;;;;;3228:4636:81;;;;;;;;;;;;-1:-1:-1;;3228:4636:81;;;;5350:25:23;3228:4636:81;;;;;;;:::i;:::-;;-1:-1:-1;3228:4636:81;-1:-1:-1;;;;;;;;;;;3228:4636:81;;3202:4:23;4919:24;3228:4636:81;-1:-1:-1;3228:4636:81;4919:24:23;3228:4636:81;3202:4:23;:::i;:::-;5350:25;:::i;3228:4636:81:-;;;;;;-1:-1:-1;;3228:4636:81;;;;;;;;;:::i;:::-;966:10:27;-1:-1:-1;;;;;3228:4636:81;;6441:34:23;6437:102;;6549:37;3228:4636:81;;;6549:37:23;:::i;6437:102::-;3228:4636:81;;-1:-1:-1;;;6498:30:23;;3228:4636:81;;6498:30:23;3228:4636:81;;;;;;-1:-1:-1;;3228:4636:81;;;;;;;;;:::i;:::-;3217:103:28;;:::i;:::-;966:10:27;-1:-1:-1;3228:4636:81;;;;;;;;;;1356:26:76;;3228:4636:81;;4468:23:23;4464:108;;-1:-1:-1;4861:4:76;3228:4636:81;-1:-1:-1;;;;;3228:4636:81;;;;;;4861:13:76;;4857:63;;-1:-1:-1;;;;;;3228:4636:81;;;4861:4:76;3228:4636:81;4958:14:76;-1:-1:-1;;4958:14:76;4861:4;-1:-1:-1;;;;;;;;;;;3228:4636:81;;4464:108:23;3228:4636:81;;;;4514:47:23;;;;;;966:10:27;3228:4636:81;4514:47:23;;3228:4636:81;;;;;4514:47:23;3228:4636:81;;;;;;-1:-1:-1;;3228:4636:81;;;;;;-1:-1:-1;3228:4636:81;2233:13:78;3228:4636:81;;;2233:34:78;3228:4636:81;-1:-1:-1;3228:4636:81;2233:34:78;:::i;3228:4636:81:-;;;;;;-1:-1:-1;;3228:4636:81;;;;;3358:53:78;:44;3228:4636:81;;;;;:::i;:::-;;;-1:-1:-1;3228:4636:81;3358:22:78;3228:4636:81;;;-1:-1:-1;3228:4636:81;;;;;;;;;;;;;;;;;3358:44:78;:53;:::i;3228:4636:81:-;;;;;;;;;;;;;-1:-1:-1;;;;;3228:4636:81;;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;3228:4636:81;;;;-1:-1:-1;;;;;3228:4636:81;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;3228:4636:81;;;;;;;4301:16:25;3228:4636:81;;4726:16:25;;:34;;;;3228:4636:81;4805:1:25;4790:16;:50;;;;3228:4636:81;4855:13:25;:30;;;;3228:4636:81;4851:91:25;;;-1:-1:-1;;;;;;;;;;;3228:4636:81;;-1:-1:-1;;3228:4636:81;;;;;718:4:69;;4951:18:25;4979:67;;718:4:69;:::i;:::-;5066:101:25;;3228:4636:81;5066:101:25;-1:-1:-1;;;;;;;;;;;3228:4636:81;;-1:-1:-1;;;;3228:4636:81;;;;;-1:-1:-1;3228:4636:81;;5142:14:25;;3228:4636:81;;5142:14:25;3228:4636:81;4979:67:25;-1:-1:-1;;;;;;;;;;;3228:4636:81;;-1:-1:-1;;;;3228:4636:81;-1:-1:-1;;;3228:4636:81;;;718:4:69;:::i;4851:91:25:-;3228:4636:81;;-1:-1:-1;;;4908:23:25;;3228:4636:81;;4908:23:25;4855:30;4872:13;;;4855:30;;;4790:50;4818:4;4810:25;:30;;-1:-1:-1;4790:50:25;;4726:34;;;-1:-1:-1;4726:34:25;;3228:4636:81;;;;;;-1:-1:-1;;3228:4636:81;;;;;;3406:36;-1:-1:-1;;;;;3228:4636:81;;;;;;;;;;;;-1:-1:-1;;3228:4636:81;;;;;;;1253:6:76;3228:4636:81;;;;;-1:-1:-1;;3228:4636:81;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3228:4636:81;;;;;;;;;:::i;:::-;;;;;1997:60:78;3228:4636:81;;;:::i;:::-;;-1:-1:-1;3228:4636:81;1997:13:78;3228:4636:81;;;-1:-1:-1;3228:4636:81;1997:60:78;:::i;3228:4636:81:-;;;;;;-1:-1:-1;;3228:4636:81;;;;;;;1356:26:76;3228:4636:81;;;;;;;;;-1:-1:-1;;3228:4636:81;;;;;;3355:45;-1:-1:-1;;;;;3228:4636:81;;;;;;;;;;;;-1:-1:-1;;3228:4636:81;;;;;;;810:35:78;3228:4636:81;;;;;;;;;-1:-1:-1;;3228:4636:81;;;;;;;;-1:-1:-1;;;;;3228:4636:81;;;;;;;;;;;;;2512:74:78;3228:4636:81;;;:::i;:::-;;-1:-1:-1;3228:4636:81;;;;;-1:-1:-1;3228:4636:81;2512:74:78;:::i;3228:4636:81:-;;;;;;-1:-1:-1;;3228:4636:81;;;;;;3901:31:23;3228:4636:81;;;;;:::i;:::-;;;-1:-1:-1;3228:4636:81;-1:-1:-1;;;;;;;;;;;3228:4636:81;;;-1:-1:-1;3228:4636:81;;;;;;;;;;;;;;;;;3901:31:23;3228:4636:81;;;;;;;;;;;;;;;;-1:-1:-1;;3228:4636:81;;;;;;;;;:::i;:::-;;;;;;;;;;449:5:82;-1:-1:-1;;;;;3228:4636:81;435:10:82;:19;431:71;;4852:44:81;:83;3228:4636;;;-1:-1:-1;3228:4636:81;4852:22;3228:4636;;;-1:-1:-1;3228:4636:81;;;;;;;;;;;;;;;;;4852:44;:83;:::i;3228:4636::-;;;;;;-1:-1:-1;;3228:4636:81;;;;;;3448:45;-1:-1:-1;;;;;3228:4636:81;;;;;;;;;;;;-1:-1:-1;;3228:4636:81;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;3228:4636:81;;;;-1:-1:-1;3228:4636:81;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;416:25:75;;;;477:31;416:25;;:::i;:::-;3228:4636:81;;;;;;;;;;477:31:75;;3228:4636:81;;;;;;;;;;;:::i;:::-;477:31:75;3228:4636:81;;477:31:75;;;;;;:::i;:::-;518:79;;;3228:4636:81;518:79:75;;3228:4636:81;;;;;;-1:-1:-1;;3228:4636:81;;;;;;;;;;;;;;;;;-1:-1:-1;;3228:4636:81;;;;;;;;;;;:::i;:::-;;;3202:4:23;;;:::i;:::-;-1:-1:-1;3228:4636:81;;;3358:22:78;3228:4636:81;;;;;;;;-1:-1:-1;;;;;3228:4636:81;;;;;;;;;3358:53:78;;;:::i;:::-;4249:32;;;4245:82;;4596:54;3228:4636:81;4337:158:78;4596:54;3228:4636:81;;-1:-1:-1;3228:4636:81;;;;;-1:-1:-1;3228:4636:81;837:15:62;4413:72:78;837:15:62;4413:63:78;819:34:62;837:15;819:34;:::i;:::-;2776:39:78;:48;:39;;3228:4636:81;;;;;;;;;;2776:48:78;4413:63;:::i;:::-;:72;:::i;:::-;4337:158;;:::i;:::-;4505:34;;:75;:34;:44;:34;;;3228:4636:81;;3358:22:78;3228:4636:81;;;;;;;4505:34:78;3228:4636:81;;;;;;;;;;;;;;;;4505:75:78;-1:-1:-1;;3228:4636:81;;;;;-1:-1:-1;;;;;3228:4636:81;;;;;;;;;;4596:54:78;;;;3228:4636:81;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;-1:-1:-1;;3228:4636:81;;;;;;;-1:-1:-1;;;;;404:28:69;3228:4636:81;;;;;;;;;;-1:-1:-1;;3228:4636:81;;;;;;1439:41:76;-1:-1:-1;;;;;3228:4636:81;;;;;;;;;;;;-1:-1:-1;;3228:4636:81;;;;;;-1:-1:-1;3228:4636:81;;;;;2776:48:78;3228:4636:81;-1:-1:-1;3228:4636:81;2776:48:78;:::i;3228:4636:81:-;;;;;;-1:-1:-1;;3228:4636:81;;;;;;-1:-1:-1;3228:4636:81;2009:67:76;3228:4636:81;;;;-1:-1:-1;3228:4636:81;;;;;;;;;;;;;;-1:-1:-1;;3228:4636:81;;;;5767:26:23;3228:4636:81;;;;;;;:::i;:::-;;-1:-1:-1;3228:4636:81;-1:-1:-1;;;;;;;;;;;3228:4636:81;;3202:4:23;4919:24;3228:4636:81;-1:-1:-1;3228:4636:81;4919:24:23;3228:4636:81;3202:4:23;:::i;:::-;5767:26;:::i;3228:4636:81:-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;-1:-1:-1;;3228:4636:81;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;3228:4636:81;;;;;;;;;;;;:::i;:::-;3217:103:28;;:::i;:::-;-1:-1:-1;3228:4636:81;;;5246:21:76;;:13;;-1:-1:-1;;;;;3228:4636:81;5246:13:76;3228:4636:81;;-1:-1:-1;;;;;3228:4636:81;;;5246:21:76;3228:4636:81;;-1:-1:-1;;;5246:23:76;;3228:4636:81;;;;;5246:23:76;;;;;;;-1:-1:-1;5246:23:76;;;3228:4636:81;-1:-1:-1;;;;;;3228:4636:81;;;5232:10:76;:37;5228:87;;5341:4;3228:4636:81;-1:-1:-1;;;;;3228:4636:81;;;;5355:469:76;;3228:4636:81;-1:-1:-1;;3228:4636:81;;;;;;;;;;;;;;;;5839:55:76;;3228:4636:81;;;;5839:55:76;;;;3282:1:28;1805;-1:-1:-1;;;;;;;;;;;3228:4636:81;3716:283:28;5355:469:76;3228:4636:81;;;;5435:94:76;;;;3228:4636:81;5435:94:76;;;;;;;;;;;;3228:4636:81;5435:94:76;;;:::i;:::-;;3228:4636:81;;5435:94:76;;;;;;:::i;:::-;3228:4636:81;5548:9:76;:51;5544:118;;-1:-1:-1;5839:55:76;5676:138;;;;5839:55;5676:138;;;1150:7;5676:138;;5355:469;;;5544:118;3228:4636:81;;-1:-1:-1;;;5626:21:76;;3228:4636:81;;5626:21:76;5228:87;3228:4636:81;;-1:-1:-1;;;5292:12:76;;3228:4636:81;;5292:12:76;5246:23;;;;;3228:4636:81;5246:23:76;3228:4636:81;5246:23:76;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;3228:4636:81;;;;;;-1:-1:-1;;3228:4636:81;;;;;;;971:45:78;3228:4636:81;;;;;;;;;-1:-1:-1;;3228:4636:81;;;;;;:::i;:::-;449:5:82;-1:-1:-1;;;;;3228:4636:81;435:10:82;:19;431:71;;5753:78:81;3228:4636;;;-1:-1:-1;3228:4636:81;;;;;-1:-1:-1;3228:4636:81;5753:78;:::i;3228:4636::-;;;;;;-1:-1:-1;;3228:4636:81;;;;;;;;-1:-1:-1;;;;;3228:4636:81;;;;;;;;;;;;;;-1:-1:-1;;3228:4636:81;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;-1:-1:-1;;3228:4636:81;;;;;;;1150:7:76;3228:4636:81;;;;;;;;;-1:-1:-1;;3228:4636:81;;;;;;;2700:1:76;3228:4636:81;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;4948:596::-;;5195:233;4948:596;3228:4636;5171:295;4948:596;;;3228:4636;;;;5263:151;;;;;;;;;;;3228:4636;;;;;;;;;;;;;;;;;5263:151;;;;;:::i;:::-;5195:233;:::i;:::-;5263:151;3228:4636;;;5171:295;;;;;;:::i;:::-;5477:61;;;4948:596;:::o;5477:61::-;3228:4636;;;;;;;;5263:151;5510:17;;3228:4636;5263:151;5510:17;;;;;:::i;2897:279:78:-;-1:-1:-1;3228:4636:81;;;3090:22:78;3228:4636:81;;;;;;;;-1:-1:-1;;;;;3228:4636:81;;;;;;;;;3090:79:78;;2897:279;;3090:79;:::i;3228:4636:81:-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;3228:4636:81;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;3228:4636:81;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;6420:1442::-;3228:4636;;-1:-1:-1;;;6637:99:81;;-1:-1:-1;;;;;3228:4636:81;;;6637:99;;;3228:4636;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3228:4636:81;;;6656:20;3228:4636;;6637:99;;;;;;;;;;;6420:1442;-1:-1:-1;3228:4636:81;;-1:-1:-1;;;6830:32:81;;;3228:4636;6637:99;3228:4636;;;;6830:32;;;;;;;6790:84;6830:32;6637:99;6830:32;;;;;;;6420:1442;-1:-1:-1;3228:4636:81;;-1:-1:-1;;;6790:84:81;;-1:-1:-1;;;;;3228:4636:81;;;6637:99;6790:84;;3228:4636;;;;;;;;;;;;;-1:-1:-1;3228:4636:81;;;;;;;;;6790:84;;6801:11;;3228:4636;6790:84;;;;;;;6637:99;6790:84;;;6420:1442;6918:50;;;7020:69;6918:50;;;7146:64;6918:50;;;:::i;:::-;7020:69;;;;:::i;:::-;7146:64;;:::i;:::-;3228:4636;;;7238:21;;;:52;;;6420:1442;7238:85;;;;6420:1442;7238:143;;;;6420:1442;7238:190;;;;6420:1442;7221:635;;6420:1442;;;;;;;:::o;7221:635::-;7460:385;3228:4636;;7460:385;3228:4636;;;;:::i;:::-;;;;6830:32;7488:343;;3228:4636;;7488:343;;3228:4636;;7488:343;;3228:4636;7488:343;;;3228:4636;;;7460:385;;;6830:32;7460:385;;;:::i;7238:190::-;3228:4636;;;7385:43;;7238:190;;:143;3228:4636;;;7343:38;;7238:143;;:85;3228:4636;;;7294:29;;7238:85;;:52;3228:4636;;;7263:27;;7238:52;;6790:84;7146:64;6790:84;;;;;;;;6637:99;6790:84;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;6830:32;;;;;;;;;;;;;;:::i;:::-;;;;6637:99;;;;;;;;;;;;;;:::i;:::-;;;;;1869:195:78;;1997:60;1869:195;;-1:-1:-1;3228:4636:81;1997:13:78;3228:4636:81;;;-1:-1:-1;3228:4636:81;1997:60:78;:::i;2340:253::-;;2512:74;2340:253;;-1:-1:-1;3228:4636:81;2512:27:78;3228:4636:81;;;-1:-1:-1;3228:4636:81;2512:74:78;:::i;3228:4636:81:-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;3228:4636:81;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;3228:4636:81;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::o;:::-;;8889:1:86;3228:4636:81;;;;;;;:::o;:::-;;;;;;;;;;:::o;5844:570::-;3228:4636;;-1:-1:-1;;;6138:146:81;;;;;;;3228:4636;;;;;;;;;;;;;;5844:570;6046:290;;6070:228;;6138:146;3228:4636;;;;6138:146;;3228:4636;;6138:146;;;;;;:::i;4118:504::-;3228:4636;;-1:-1:-1;;;4398:94:81;;;;;;;3228:4636;;;;;;;;;;;;;;4118:504;4306:238;;4330:176;;4398:94;3228:4636;;;;4398:94;3228:4636;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;3228:4636:81;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;-1:-1:-1;;;;;3228:4636:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2764:920:76:-;;2978:48;2764:920;;;;2978:48;;;;:::i;:::-;3036:36;;;3228:4636:81;;:::i;:::-;;;;3086:20:76;3082:107;;2764:920;3216:11;;;;:193;;;;;2764:920;3216:394;;;;2764:920;3199:455;;;;;;2764:920;:::o;3199:455::-;3635:8;-1:-1:-1;3635:8:76;:::o;3216:394::-;3553:39;;;;;3430:180;3553:39;;;3228:4636:81;;;;;;;;;;3430:180:76;;467:2:88;3228:4636:81;3430:180:76;;;;;:::i;:::-;;3228:4636:81;3444:31:76;-1:-1:-1;;;;;3228:4636:81;3430:180:76;;;;;;;-1:-1:-1;3430:180:76;;;3216:394;3429:181;;3216:394;;;;;;3430:180;;;;3553:39;3430:180;3553:39;3430:180;;;;;;;:::i;:::-;;;;3216:193;-1:-1:-1;3228:4636:81;;;-1:-1:-1;;;;;;3228:4636:81;3248:161:76;3354:37;;;3228:4636:81;3248:161:76;3228:4636:81;;;;;;;;;;3248:161:76;;;;;;;:::i;:::-;;3228:4636:81;3262:29:76;-1:-1:-1;;;;;3228:4636:81;3248:161:76;;;;;;;-1:-1:-1;3248:161:76;;;3216:193;3247:162;;3216:193;;;3248:161;;;;;;;;;;;;;;:::i;:::-;;;;3082:107;3139:39;;;;;;;;;;;;;:::i;:::-;3082:107;;;;;3228:4636:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;3740:389:76;3918:5;3228:4636:81;;;-1:-1:-1;;;3853:71:76;;;-1:-1:-1;;;;;3228:4636:81;;;3853:71:76;;;3228:4636:81;;;;;;;;3740:389:76;;3228:4636:81;3853:71:76;;3228:4636:81;;3853:71:76;3228:4636:81;;;3867:29:76;3228:4636:81;;3853:71:76;;;;;;;3918:5;3853:71;;;3740:389;3852:72;;3228:4636:81;;;3852:181:76;;3740:389;3835:242;;;;;;4094:28;;;:::i;3835:242::-;4058:8;;3918:5;4058:8;:::o;3852:181::-;3228:4636:81;;3945:88:76;;;-1:-1:-1;;;;;3228:4636:81;;3853:71:76;3945:88;;3228:4636:81;467:2:88;3228:4636:81;;;;;;;;-1:-1:-1;3228:4636:81;;;;;;;;3959:31:76;3228:4636:81;3945:88:76;;;;;;;3918:5;3945:88;;;3852:181;3944:89;;;3852:181;;;;;3945:88;;;;;;-1:-1:-1;3945:88:76;;;;;;:::i;:::-;;;;;3853:71;;;;;;;;;;;;;;:::i;:::-;;;;4148:103:23;966:10:27;-1:-1:-1;3228:4636:81;;;;;;;;;810:35:78;;3228:4636:81;;3901:31:23;3228:4636:81;;4468:23:23;4464:108;;4148:103;:::o;:::-;966:10:27;-1:-1:-1;3228:4636:81;;;;;;;;;971:45:78;;3228:4636:81;;3901:31:23;3228:4636:81;4148:103:23;-1:-1:-1;3228:4636:81;;;-1:-1:-1;;;;;;;;;;;3228:4636:81;;;;;;;;966:10:27;3228:4636:81;;;;;;;;;3901:31:23;3228:4636:81;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3228:4636:81;;-1:-1:-1;3228:4636:81;;;-1:-1:-1;3228:4636:81;:::o;:::-;;:::i;:::-;;;;;-1:-1:-1;;;3228:4636:81;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6246:584:86;;;;;6360:12;;;3228:4636:81;;;6360:24:86;;6356:75;;6246:584;6474:30;;;;;:::i;:::-;3228:4636:81;;;;;;6578:12:86;;;;:::i;:::-;6604:24;;;;6246:584;-1:-1:-1;6600:188:86;;;-1:-1:-1;;;;;3228:4636:81;;;;;;;6644:21:86;;;:29;:21;;:::i;:29::-;6798:25;6246:584;:::o;6600:188::-;6753:24;;3228:4636:81;;8167:38:60;;-1:-1:-1;;;;;3228:4636:81;;;;;8167:38:60;:::i;:::-;6753:24:86;;;:::i;6604:::-;3228:4636:81;;;;;;6614:14:86;;-1:-1:-1;6604:24:86;;;6356:75;-1:-1:-1;;;3228:4636:81;;;;;;6360:12:86;3228:4636:81;;;;;;;:::i;:::-;;;;;;;;;;;;;;6356:75:86;;;525:595:82;-1:-1:-1;525:595:82;;;;3228:4636:81;;716:88:82;;3228:4636:81;716:88:82;;;;;;;;;783:4;716:88;;;3228:4636:81;;;;;;;;;;;:::i;716:88:82:-;698:107;;;;;;;:::i;:::-;3228:4636:81;;857:45:82;;3228:4636:81;;;;;;;;716:88:82;857:45;;3228:4636:81;:::i;:::-;;;;;;;-1:-1:-1;;;;;3228:4636:81;;;;;857:45:82;716:88;857:45;;;3228:4636:81;;;;:::i;:::-;916:8:82;;912:175;;525:595;:::o;912:175::-;3228:4636:81;;944:22:82;;;940:36;;716:88;990:87;;3228:4636:81;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;8406:869:86:-;;;3228:4636:81;;8620:15:86;8578:11;8645:18;8678:7;8684:1;8678:7;;8674:241;;8406:869;8939:60;;;;;:::i;:::-;9014:8;;;9010:62;;9252:15;9259:7;3228:4636:81;9219:31:86;3228:4636:81;9130:48:86;9170:7;;;:::i;:::-;9130:48;13267:109;;;;;;13089:293;;9130:48;3228:4636:81;:::i;:::-;;9176:1:86;3228:4636:81;9232:17:86;3228:4636:81;;;;;;;;9232:17:86;;3228:4636:81;-1:-1:-1;;;;;3228:4636:81;;;;9219:12:86;;:31;:::i;:::-;3228:4636:81;;;;;;;;;9259:7:86;;:::i;:::-;3228:4636:81;;;;9252:15:86;9176:1;;9188:80;;8406:869::o;9010:62::-;8578:11;;-1:-1:-1;8578:11:86;;-1:-1:-1;8578:11:86;;;;9038:23::o;8674:241::-;8721:14;;;;;:::i;:::-;3228:4636:81;;;;;;;8939:60:86;13267:109;;8578:11;13267:109;8753:55;8759:49;13267:109;;8578:11;13267:109;;3228:4636:81;;;;;;8759:49:86;3228:4636:81;;;;8753:55:86;3228:4636:81;;;8753:55:86;13267:109;;;8828:10;8749:156;8674:241;;8749:156;8883:7;;;;;;:::i;:::-;8749:156;8674:241;;3228:4636:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::o;7558:604:86:-;;3228:4636:81;;7686:17:86;7682:83;;3228:4636:81;7789:27:86;3228:4636:81;7789:27:86;3228:4636:81;;7789:27:86;;;;;;:::i;:::-;7860:14;;;;;:::i;:::-;3228:4636:81;;;;;;;;;;;;;;;;7888:22:86;;;7884:77;;7975:21;-1:-1:-1;7975:84:86;;;;7558:604;7971:139;;;;8127:28;;;;:::i;7971:139::-;8082:17;;7789:27;8082:17;3228:4636:81;8075:24:86;:::o;7975:84::-;3228:4636:81;;;8009:16:86;3228:4636:81;;8009:16:86;:::i;:::-;3228:4636:81;;;8001:24:86;:57;;;;;7975:84;;;;;;;8001:57;8029:29;8038:8;;;8029:18;8038:8;8029:23;8038:8;;:::i;:::-;8029:18;;:::i;:::-;3228:4636:81;;;;;8029:29:86;;8001:57;;;;7884:77;7933:17;;;;;7789:27;7933:17;3228:4636:81;7926:24:86;:::o;7682:83::-;7726:28;;;;:::i;3326:384:28:-;-1:-1:-1;;;;;;;;;;;1847:1:28;3228:4636:81;;3526:20:28;3522:88;;1847:1;3228:4636:81;;3326:384:28:o;3522:88::-;3228:4636:81;;-1:-1:-1;;;3569:30:28;;;;;6196:308:78;;3228:4636:81;-1:-1:-1;3228:4636:81;6327:13:78;3228:4636:81;;;-1:-1:-1;3228:4636:81;11124:30:86;;;;:::i;:::-;11173;;;-1:-1:-1;11173:30:86;;;;11182:17;;-1:-1:-1;;;;;3228:4636:81;;11182:12:86;;:17;:::i;:::-;3228:4636:81;;;6327:13:78;3228:4636:81;;11173:30:86;6385::78;;;11173::86;6381:117:78;;;;6196:308;;:::o;6381:117::-;6431:56;3228:4636:81;-1:-1:-1;3228:4636:81;6327:13:78;3228:4636:81;;;-1:-1:-1;3228:4636:81;819:34:62;837:15;819:34;:::i;6431:56:78:-;6196:308;;:::o;6385:30::-;6395:20;;-1:-1:-1;6385:30:78;;;;11173::86;;;-1:-1:-1;11173:30:86;;7270:387:23;-1:-1:-1;;;;;3228:4636:81;;-1:-1:-1;3228:4636:81;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2887:71:23;3228:4636:81;;;;-1:-1:-1;3228:4636:81;;;;;;;;;;;-1:-1:-1;;;;;3228:4636:81;;;;;;;;;;-1:-1:-1;;3228:4636:81;7509:4:23;3228:4636:81;;;966:10:27;;-1:-1:-1;;;;;3228:4636:81;-1:-1:-1;7532:40:23;-1:-1:-1;;7532:40:23;7509:4;7586:11;:::o;7270:387::-;-1:-1:-1;;;;;3228:4636:81;;-1:-1:-1;3228:4636:81;;;;;;;;;1356:26:76;;-1:-1:-1;;;;;;;;;;;2887:71:23;3228:4636:81;;3901:31:23;3228:4636:81;;;;-1:-1:-1;3228:4636:81;;;;;;;;;;;-1:-1:-1;;;;;3228:4636:81;;;;;;;;;;-1:-1:-1;;3228:4636:81;7509:4:23;3228:4636:81;;;966:10:27;;-1:-1:-1;;;;;3228:4636:81;;7532:40:23;-1:-1:-1;;7532:40:23;7509:4;7586:11;:::o;7432:219::-;7628:12;;;-1:-1:-1;7628:12:23;:::o;7270:387::-;-1:-1:-1;;;;;3228:4636:81;;-1:-1:-1;3228:4636:81;;;;;;;;;810:35:78;;-1:-1:-1;;;;;;;;;;;2887:71:23;3228:4636:81;;3901:31:23;3228:4636:81;7270:387:23;-1:-1:-1;;;;;3228:4636:81;;-1:-1:-1;3228:4636:81;;;;;;;;;971:45:78;;-1:-1:-1;;;;;;;;;;;2887:71:23;3228:4636:81;;3901:31:23;3228:4636:81;7270:387:23;-1:-1:-1;3228:4636:81;;;-1:-1:-1;;;;;;;;;;;3228:4636:81;;;;;;;;-1:-1:-1;;;;;3228:4636:81;;;;;;;;;;;;3901:31:23;3228:4636:81;7892:388:23;-1:-1:-1;3228:4636:81;;;-1:-1:-1;;;;;;;;;;;3228:4636:81;;;;;;;;-1:-1:-1;;;;;3228:4636:81;;;;;;;;;;;;;;;;-1:-1:-1;3228:4636:81;;;;;;;;;;;-1:-1:-1;;;;;3228:4636:81;;;;;;;;;;-1:-1:-1;;3228:4636:81;;;966:10:27;;-1:-1:-1;;;;;3228:4636:81;;8155:40:23;-1:-1:-1;;8155:40:23;3228:4636:81;8209:11:23;:::o;10580:184:86:-;3228:4636:81;;10303:8:60;;;:63;-1:-1:-1;10303:63:60;-1:-1:-1;;;;;3228:4636:81;;10726:7:86;3228:4636:81;;10736:12:86;:17;:12;;:17;:::i;10303:63:60:-;3228:4636:81;;;;;;;;;;13267:109:86;-1:-1:-1;13267:109:86;;-1:-1:-1;13267:109:86;;;3228:4636:81;;;10303:63:60;;3228:4636:81;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;3228:4636:81;;;;;;;;:::i;5907:716:76:-;6030:34;5907:716;6030:34;;;;:::i;:::-;3228:4636:81;;-1:-1:-1;;;6080:41:76;;-1:-1:-1;;;;;3228:4636:81;;;6080:41:76;;;3228:4636:81;;;;;6080:41:76;3228:4636:81;;;6090:13:76;3228:4636:81;;6080:41:76;;;;;;;-1:-1:-1;6080:41:76;;;5907:716;6079:42;;6075:90;;6266:27;3228:4636:81;2540:111:28;6210:14:76;3228:4636:81;2540:111:28;;;:::i;:::-;3228:4636:81;;;;;;-1:-1:-1;;;;;3228:4636:81;;-1:-1:-1;3228:4636:81;;;-1:-1:-1;3228:4636:81;;6210:14:76;6266:27;:::i;:::-;6080:41;6311:15;;3228:4636:81;;;;-1:-1:-1;;;;;;3228:4636:81;-1:-1:-1;;;;;3228:4636:81;;;;;;;;;;;-1:-1:-1;;;;;3228:4636:81;;;;6337:143:76;;5907:716;-1:-1:-1;6493:28:76;3228:4636:81;-1:-1:-1;;;;;3228:4636:81;;;;;;;6489:128:76;;5907:716;:::o;6489:128::-;6551:55;;;:::i;:::-;;5907:716::o;6337:143::-;6404:65;;;:::i;:::-;;6337:143;;;6075:90;3228:4636:81;;-1:-1:-1;;;6144:10:76;;6080:41;;6144:10;6080:41;;;;;;;;;;;;;;:::i;:::-;;;;3228:4636:81;;;;;;;;;;-1:-1:-1;;;;;3228:4636:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;3228:4636:81;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;4663:1079:78:-;;;;;3228:4636:81;;:::i;:::-;;;;4903:16:78;4899:92;;4663:1079;5105:42;;5053:95;5105:42;;;;5053:95;;;:::i;:::-;5165:570;:34;;;5218:21;;;;;;5165:570;-1:-1:-1;5158:577:78;4663:1079;:::o;5165:570::-;5273:95;5431:67;5330:37;;;;;;5273:95;;;:::i;:::-;3228:4636:81;5470:27:78;5431;:13;3228:4636:81;-1:-1:-1;3228:4636:81;;;;;;;;;5431:27:78;5470;;;;3228:4636:81;;;;;;;;;;;5431:67:78;;;;;;;:::i;:::-;;;;;;;;;5273:409;5431:67;5397:216;5431:67;-1:-1:-1;5431:67:78;;;5165:570;5562:28;5524:67;5562:28;;3228:4636:81;5562:28:78;;;5524:67;;:::i;:::-;5397:216;;:::i;:::-;5273:409;;:::i;:::-;5700:21;;4663:1079;:::o;5431:67::-;5524;5431;;;;5470:27;5431:67;5470:27;5431:67;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;4899:92;4949:31;;;;;;;;;;;;;:::i;:::-;4899:92;;;;;5748:442;;2776:48;:39;;3228:4636:81;;;;;;;;;;2776:48:78;5946:237;:32;;;:237;;;-1:-1:-1;5748:442:78;:::o;5946:237::-;3358:44;:53;:34;;;3228:4636:81;;3358:22:78;3228:4636:81;;;;;;;3358:53:78;-1:-1:-1;3228:4636:81;;;-1:-1:-1;;;6086:27:78;;3228:4636:81;6086:27:78;;3228:4636:81;;2776:27:78;;3228:4636:81;;-1:-1:-1;;;;;3228:4636:81;6086:27:78;;;;;;6009:174;6086:27;6077:63;6086:27;-1:-1:-1;6086:27:78;;;5946:237;2233:25;;:34;:25;3228:4636:81;;2233:13:78;3228:4636:81;;;;;;;6086:27:78;2233:34;6086:27;;;;2233:25;6086:27;;;;;;;;;;;:::i;:::-;;;;;;14291:213:58;3228:4636:81;14369:24:58;;;;14365:103;;3228:4636:81;14291:213:58;:::o;14365:103::-;3228:4636:81;;;;14416:41:58;;;;;;14447:2;14416:41;;;3228:4636:81;;;;;14416:41:58;10552:388:60;3228:4636:81;;10728:8:60;;;10752:20;;10690:17;10752:20;10690:17;10752:20;10690:17;10752:20;:::o;10724:210::-;3228:4636:81;;;;;;;;;;;13267:109:86;10690:17:60;13267:109:86;;10690:17:60;13267:109:86;;;3228:4636:81;:::i;:::-;;;;;;;13267:109:86;3228:4636:81;;;;;10911:11:60;;3228:4636:81;;10886:37:60;10870:1;10886:37;;;:::o;8587:1642:57:-;8658:6;;8654:45;;9401:7;10201:10;10142:26;10093;10044;9995;9946;9897;9848;3228:4636:81;10189:23:57;9401:7;8663:1;3228:4636:81;;;;10826:16:57;10822:99;;8587:1642;3228:4636:81;;;;10938:15:57;10934:96;;8587:1642;3228:4636:81;;;;11047:15:57;11043:96;;8587:1642;3228:4636:81;;;;11156:15:57;11152:96;;8587:1642;3228:4636:81;;;;11265:14:57;11261:93;;8587:1642;3228:4636:81;;;;11371:14:57;11367:93;;8587:1642;3228:4636:81;;;;11477:14:57;11473:93;;8587:1642;3228:4636:81;;;11579:64:57;;8587:1642;3228:4636:81;;;9858:10:57;;;;:::i;:::-;3228:4636:81;;;;;9848:26:57;9907:10;;;;:::i;9897:26::-;9956:10;;;;:::i;9946:26::-;10005:10;;;;:::i;9995:26::-;10054:10;;;;:::i;10044:26::-;10103:10;;;;:::i;10093:26::-;10152:10;;;;:::i;10142:26::-;10201:10;;;:::i;11579:64::-;3228:4636:81;;11579:64:57;;11473:93;3228:4636:81;11511:11:57;;3228:4636:81;;11473:93:57;;;;11367;3228:4636:81;11405:11:57;;3228:4636:81;;11367:93:57;;;;11261;3228:4636:81;11299:11:57;;3228:4636:81;;11261:93:57;;;;11152:96;3228:4636:81;11191:12:57;;3228:4636:81;;11152:96:57;;;;11043;3228:4636:81;11082:12:57;;3228:4636:81;;11043:96:57;;;;10934;3228:4636:81;10973:12:57;;3228:4636:81;;10934:96:57;;;;10822:99;10862:13;;;3228:4636:81;10822:99:57;;;;12497:447:86;;12694:10;;;;;;12926:11;;;12497:447;:::o;12687:230::-;12734:23;;;;;;;:::i;:::-;13267:109;;-1:-1:-1;13267:109:86;3228:4636:81;13267:109:86;;;-1:-1:-1;13267:109:86;;3228:4636:81;;;;;-1:-1:-1;12771:136:86;3228:4636:81;;;12830:10:86;12771:136;;12687:230;;;;12771:136;3228:4636:81;;12891:1:86;3228:4636:81;;;;;;12771:136:86;3228:4636:81;;:::i;6999:207:86:-;;3228:4636:81;;9594:15:60;-1:-1:-1;9619:18:60;9652:7;9658:1;9652:7;;9648:234;;6999:207:86;9906:53:60;;;;;:::i;:::-;9977:8;;;:63;-1:-1:-1;9977:63:60;;-1:-1:-1;;;;;3228:4636:81;;7168:7:86;3228:4636:81;;;7178:12:86;;:17;:12;;:17;:::i;9977:63:60:-;9992:41;10025:7;9992:48;10025:7;;:::i;:::-;9992:41;13267:109:86;;;;;;13089:293;;9992:41:60;3228:4636:81;;;;;9992:48:60;9977:63;;;9648:234;9695:14;;;;;:::i;:::-;3228:4636:81;;;;;;;9906:53:60;13267:109:86;;-1:-1:-1;13267:109:86;3228:4636:81;13267:109:86;;;-1:-1:-1;13267:109:86;;3228:4636:81;;;;;9727:48:60;9723:149;3228:4636:81;;;9795:10:60;9723:149;9648:234;;9723:149;9850:7;;;;;;:::i;:::-;9723:149;9648:234;;3228:4636:81;;;;;;;:::i;:::-;-1:-1:-1;3228:4636:81;;;;;;;:::o;11486:272:86:-;;3228:4636:81;11308:22:60;11718:31:86;11486:272;3228:4636:81;;:::i;:::-;;;;:::i;:::-;;11308:22:60;;:::i;:::-;3228:4636:81;;:::i;:::-;;11718:12:86;3228:4636:81;;;;;11731:17:86;3228:4636:81;;;;;11731:17:86;;3228:4636:81;;11718:12:86;;:31;:::i;:::-;3228:4636:81;;;;;;;;;:::i;:::-;;;;;;11731:17:86;11672:79;;3228:4636:81;11486:272:86;:::o;6893:76:25:-;;;:::i;:::-;;;:::i;:::-;1805:1:28;-1:-1:-1;;;;;;;;;;;3228:4636:81;6893:76:25:o;3228:4636:81:-;;;;;;;:::i;:::-;-1:-1:-1;3228:4636:81;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;3228:4636:81;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3228:4636:81;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;6510:1274:78:-;6658:30;6510:1274;3228:4636:81;;:::i;:::-;;6658:30:78;3228:4636:81;;;6658:30:78;;;;;;:::i;:::-;6716:17;;3228:4636:81;6716:17:78;;3228:4636:81;-1:-1:-1;;;;;3228:4636:81;6716:54:78;;:179;;6510:1274;6699:259;;6973:9;6658:30;6988:33;;;6716:17;7030:3;6988:33;;3228:4636:81;;6984:44:78;;;;;7053:36;;;:50;:36;;:::i;:::-;3228:4636:81;-1:-1:-1;;;;;3228:4636:81;;;7053:50:78;;7049:119;;7186:73;7187:72;7222:36;;:33;;;:36;:::i;:::-;7187:72;:::i;:::-;7186:73;;3228:4636:81;7186:73:78;7182:140;;3228:4636:81;;6973:9:78;;7182:140;3228:4636:81;;-1:-1:-1;;;7286:21:78;;;;;7049:119;3228:4636:81;;-1:-1:-1;;;7130:23:78;;;;;6984:44;-1:-1:-1;7362:42:78;;-1:-1:-1;;7362:42:78;;;;6716:17;7413:3;7362:42;;3228:4636:81;;7358:53:78;;;;;7436:45;;;:59;:45;;:::i;:59::-;;7432:128;;7578:92;7579:91;7624:45;;:42;;;:45;:::i;:::-;7579:91;:::i;7578:92::-;7574:159;;3228:4636:81;;7347:9:78;;7574:159;3228:4636:81;;-1:-1:-1;;;7697:21:78;;;;;7432:128;3228:4636:81;;-1:-1:-1;;;7522:23:78;;;;;7358:53;;;;;;7760:17;6510:1274;:::o;6699:259::-;3228:4636:81;;-1:-1:-1;;;6927:20:78;;;;;6716:179;6791:33;6658:30;6791:33;;;3228:4636:81;6791:45:78;:103;6716:179;6791:103;6840:42;;;;;3228:4636:81;6840:54:78;6716:179;;2557:104:57;;2641:5;;;;;;:13;2557:104;:::o;2641:13::-;;;2557:104;:::o;3803:4116::-;;;3228:4636:81;;;;-1:-1:-1;;3803:4116:57;;4383:131;;;;;;;;;;;;4595:10;;4591:368;;5065:20;;;;5061:88;;5435:300;;;3228:4636:81;-1:-1:-1;3228:4636:81;5954:31:57;;5999:371;;;6813:1;3228:4636:81;;6794:1:57;3228:4636:81;6793:21:57;3228:4636:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5999:371:57;;;;-1:-1:-1;5999:371:57;;;5435:300;;;;;;3228:4636:81;5435:300:57;;5999:371;6436:21;3228:4636:81;3803:4116:57;:::o;5061:88::-;3228:4636:81;;-1:-1:-1;;;5112:22:57;;;;;4591:368;4925:19;;;;;;;:::i;3228:4636:81:-;;;-1:-1:-1;;;3228:4636:81;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;3228:4636:81;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;11513:870:60;3228:4636:81;;11513:870:60;;;3228:4636:81;11513:870:60;11672:7;;;;3228:4636:81;11775:28:60;11795:7;;;:::i;3228:4636:81:-;;;;;;;;;;;;;;;;11877:15:60;-1:-1:-1;11873:91:60;;3228:4636:81;;12233:11:60;3228:4636:81;;;12027:16:60;3228:4636:81;;;;;;;12027:16:60;;;;12083:7;12063:43;12083:7;;12063:28;12083:7;;:::i;:::-;12063:28;13267:109:86;;;;;;13089:293;;12063:28:60;3228:4636:81;;;;;;;;;;;;;;;;;12063:43:60;12233:11;3228:4636:81;-1:-1:-1;;;;;3228:4636:81;;;12023:189:60;3228:4636:81;;;12145:52:60;3228:4636:81;12155:41:60;3228:4636:81;;:::i;:::-;;;;;;;;12155:41:60;-1:-1:-1;;;;;3228:4636:81;;12155:41:60;;;3228:4636:81;12145:52:60;:::i;:::-;12023:189;;11873:91;3228:4636:81;;-1:-1:-1;;;11919:30:60;;;;;11668:709;12283:52;3228:4636:81;;12293:41:60;3228:4636:81;;:::i;12293:41:60:-;-1:-1:-1;;;;;3228:4636:81;;12293:41:60;;;3228:4636:81;12145:52:60;:::i;12283:::-;11678:1;12349:17;;:::o;2774:153:57:-;;2900:5;;;2910;;3228:4636:81;;;;;;;;;2774:153:57;:::o;7084:141:25:-;3228:4636:81;-1:-1:-1;;;;;;;;;;;3228:4636:81;;;;7150:18:25;7146:73;;7084:141::o;7146:73::-;3228:4636:81;;-1:-1:-1;;;7191:17:25;;;;;12736:433:60;;12919:10;;;;;;13151:11;;;12736:433;:::o;12912:230::-;12959:23;;;;;;;:::i;:::-;13267:109:86;;-1:-1:-1;13267:109:86;3228:4636:81;13267:109:86;;;-1:-1:-1;13267:109:86;;3228:4636:81;;;;;-1:-1:-1;12996:136:60;3228:4636:81;;;13055:10:60;12996:136;;12912:230;;;;12996:136;3228:4636:81;;13116:1:60;3228:4636:81;;;;;;12996:136:60;3228:4636:81;;:::i","linkReferences":{},"immutableReferences":{"57808":[{"start":2537,"length":32}],"57811":[{"start":4780,"length":32}],"58762":[{"start":2123,"length":32},{"start":4837,"length":32}],"58765":[{"start":1298,"length":32},{"start":10629,"length":32}],"58768":[{"start":1366,"length":32},{"start":7731,"length":32},{"start":7995,"length":32}],"58771":[{"start":1993,"length":32},{"start":7578,"length":32},{"start":8121,"length":32}],"61286":[{"start":3733,"length":32},{"start":6477,"length":32}],"61288":[{"start":3479,"length":32},{"start":6638,"length":32}],"61290":[{"start":4169,"length":32}],"62368":[{"start":1440,"length":32},{"start":4055,"length":32},{"start":5673,"length":32}]}},"methodIdentifiers":{"BASE_DELEGATOR_HINTS()":"79d89614","DEFAULT_ADMIN_ROLE()":"a217fddf","FACTORY()":"2dd31000","HOOK_GAS_LIMIT()":"ff54740f","HOOK_RESERVE()":"557cab44","HOOK_SET_ROLE()":"6679191e","NETWORK_LIMIT_SET_ROLE()":"7d24bb27","NETWORK_REGISTRY()":"c0cd7c3e","OPERATOR_NETWORK_OPT_IN_SERVICE()":"1a80e500","OPERATOR_NETWORK_SHARES_SET_ROLE()":"e78eb6ae","OPERATOR_VAULT_OPT_IN_SERVICE()":"128e5d82","OPT_IN_SERVICE_HINTS()":"9b656b22","TYPE()":"bb24fe8a","VAULT_FACTORY()":"103f2907","VAULT_HINTS()":"45e78fcb","VERSION()":"ffa1ad74","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","hook()":"7f5a7c7b","initialize(bytes)":"439fab91","maxNetworkLimit(bytes32)":"d15b740e","networkLimit(bytes32)":"3eb22c0f","networkLimitAt(bytes32,uint48,bytes)":"5d32a1c9","networkLimitHint(address,bytes32,uint48)":"da749d2b","networkLimitHintInternal(bytes32,uint48)":"197aa7ea","onSlash(bytes32,address,uint256,uint48,bytes)":"e49561ee","operatorNetworkShares(bytes32,address)":"42c53e33","operatorNetworkSharesAt(bytes32,address,uint48,bytes)":"1a7a7044","operatorNetworkSharesHint(address,bytes32,address,uint48)":"07f9d5fd","operatorNetworkSharesHintInternal(bytes32,address,uint48)":"987b3ee8","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","setHook(address)":"3dfd3873","setMaxNetworkLimit(uint96,uint256)":"23f752d5","setNetworkLimit(bytes32,uint256)":"02145348","setOperatorNetworkShares(bytes32,address,uint256)":"a33bc287","stake(bytes32,address)":"fd4d447c","stakeAt(bytes32,address,uint48,bytes)":"e02f6937","stakeHints(address,bytes32,address,uint48)":"25dc9708","staticDelegateCall(address,bytes)":"9f86fd85","supportsInterface(bytes4)":"01ffc9a7","totalOperatorNetworkShares(bytes32)":"c43dc03f","totalOperatorNetworkSharesAt(bytes32,uint48,bytes)":"8b3f10b0","totalOperatorNetworkSharesHint(address,bytes32,uint48)":"b549ef1f","totalOperatorNetworkSharesHintInternal(bytes32,uint48)":"ed4d89e5","vault()":"fbfa77cf"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"baseDelegatorHints\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"vaultHints\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"optInServiceHints\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadySet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CheckpointUnorderedInsertion\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DuplicateRoleHolder\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedsMaxNetworkLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExternalCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientHookGas\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MathOverflowedMulDiv\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingRoleHolders\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotNetwork\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotSlasher\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressRoleHolder\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"}],\"name\":\"OnSlash\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"hook\",\"type\":\"address\"}],\"name\":\"SetHook\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"SetMaxNetworkLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"SetNetworkLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"SetOperatorNetworkShares\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BASE_DELEGATOR_HINTS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HOOK_GAS_LIMIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HOOK_RESERVE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HOOK_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NETWORK_LIMIT_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NETWORK_REGISTRY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_NETWORK_OPT_IN_SERVICE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_NETWORK_SHARES_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_VAULT_OPT_IN_SERVICE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPT_IN_SERVICE_HINTS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TYPE\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VAULT_FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VAULT_HINTS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VERSION\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hook\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"}],\"name\":\"maxNetworkLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"}],\"name\":\"networkLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"networkLimitAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"networkLimitHint\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"networkLimitHintInternal\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"exists\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"hint\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"operatorNetworkShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"operatorNetworkSharesAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"operatorNetworkSharesHint\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"operatorNetworkSharesHintInternal\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"exists\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"hint\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"hook_\",\"type\":\"address\"}],\"name\":\"setHook\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint96\",\"name\":\"identifier\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"setMaxNetworkLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"setNetworkLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"setOperatorNetworkShares\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"stake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hints\",\"type\":\"bytes\"}],\"name\":\"stakeAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"stakeHints\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"staticDelegateCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"}],\"name\":\"totalOperatorNetworkShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"totalOperatorNetworkSharesAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"totalOperatorNetworkSharesHint\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"totalOperatorNetworkSharesHintInternal\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"exists\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"hint\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"CheckpointUnorderedInsertion()\":[{\"details\":\"A value was attempted to be inserted on a past checkpoint.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"MathOverflowedMulDiv()\":[{\"details\":\"Muldiv operation overflow.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"OnSlash(bytes32,address,uint256,uint48)\":{\"params\":{\"amount\":\"amount of the collateral to be slashed\",\"captureTimestamp\":\"time point when the stake was captured\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"SetHook(address)\":{\"params\":{\"hook\":\"address of the hook\"}},\"SetMaxNetworkLimit(bytes32,uint256)\":{\"params\":{\"amount\":\"new maximum subnetwork's limit (how much stake the subnetwork is ready to get)\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"SetNetworkLimit(bytes32,uint256)\":{\"params\":{\"amount\":\"new subnetwork's limit (how much stake the vault curator is ready to give to the subnetwork)\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"SetOperatorNetworkShares(bytes32,address,uint256)\":{\"params\":{\"operator\":\"address of the operator\",\"shares\":\"new operator's shares inside the subnetwork (what percentage, which is equal to the shares divided by the total operators' shares, of the subnetwork's stake the vault curator is ready to give to the operator)\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}}},\"kind\":\"dev\",\"methods\":{\"VERSION()\":{\"details\":\"Must return 1 for this one.\",\"returns\":{\"_0\":\"version of the delegator\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize(bytes)\":{\"params\":{\"data\":\"some data to use\"}},\"networkLimit(bytes32)\":{\"params\":{\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"_0\":\"limit of the subnetwork\"}},\"networkLimitAt(bytes32,uint48,bytes)\":{\"params\":{\"hint\":\"hint for checkpoint index\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\",\"timestamp\":\"time point to get the subnetwork limit at\"},\"returns\":{\"_0\":\"limit of the subnetwork at the given timestamp\"}},\"onSlash(bytes32,address,uint256,uint48,bytes)\":{\"details\":\"Only the vault's slasher can call this function.\",\"params\":{\"amount\":\"amount of the collateral slashed\",\"captureTimestamp\":\"time point when the stake was captured\",\"data\":\"some additional data\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"operatorNetworkShares(bytes32,address)\":{\"params\":{\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"_0\":\"shares of the operator for the subnetwork\"}},\"operatorNetworkSharesAt(bytes32,address,uint48,bytes)\":{\"params\":{\"hint\":\"hint for checkpoint index\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\",\"timestamp\":\"time point to get the operator's shares at\"},\"returns\":{\"_0\":\"shares of the operator for the subnetwork at the given timestamp\"}},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"setHook(address)\":{\"details\":\"Only a HOOK_SET_ROLE holder can call this function. The hook can have arbitrary logic under certain functions, however, it doesn't affect the stake guarantees.\",\"params\":{\"hook\":\"address of the hook\"}},\"setMaxNetworkLimit(uint96,uint256)\":{\"details\":\"Only a network can call this function.\",\"params\":{\"amount\":\"new maximum subnetwork's limit\"}},\"setNetworkLimit(bytes32,uint256)\":{\"details\":\"Only a NETWORK_LIMIT_SET_ROLE holder can call this function.\",\"params\":{\"amount\":\"new limit of the subnetwork\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"setOperatorNetworkShares(bytes32,address,uint256)\":{\"details\":\"Only an OPERATOR_NETWORK_SHARES_SET_ROLE holder can call this function.\",\"params\":{\"operator\":\"address of the operator\",\"shares\":\"new shares of the operator for the subnetwork\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"stake(bytes32,address)\":{\"details\":\"Warning: this function is not safe to use for stake capturing, as it can change by the end of the block.\",\"params\":{\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"_0\":\"slashable stake until the end of the next epoch\"}},\"stakeAt(bytes32,address,uint48,bytes)\":{\"details\":\"Warning: it is not safe to use timestamp >= current one for the stake capturing, as it can change later.\",\"params\":{\"hints\":\"hints for the checkpoints' indexes\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\",\"timestamp\":\"time point to capture the stake at\"},\"returns\":{\"_0\":\"slashable stake at the given timestamp until the end of the consequent epoch\"}},\"staticDelegateCall(address,bytes)\":{\"details\":\"It allows to use this contract's storage on-chain.\",\"params\":{\"data\":\"data to make a delegatecall with\",\"target\":\"address of the contract to make a delegatecall to\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"totalOperatorNetworkShares(bytes32)\":{\"params\":{\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"_0\":\"total shares of the operators for the subnetwork\"}},\"totalOperatorNetworkSharesAt(bytes32,uint48,bytes)\":{\"params\":{\"hint\":\"hint for checkpoint index\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\",\"timestamp\":\"time point to get the total operators' shares at\"},\"returns\":{\"_0\":\"total shares of the operators for the subnetwork at the given timestamp\"}}},\"version\":1},\"userdoc\":{\"events\":{\"OnSlash(bytes32,address,uint256,uint48)\":{\"notice\":\"Emitted when a slash happens.\"},\"SetHook(address)\":{\"notice\":\"Emitted when a hook is set.\"},\"SetMaxNetworkLimit(bytes32,uint256)\":{\"notice\":\"Emitted when a subnetwork's maximum limit is set.\"},\"SetNetworkLimit(bytes32,uint256)\":{\"notice\":\"Emitted when a subnetwork's limit is set.\"},\"SetOperatorNetworkShares(bytes32,address,uint256)\":{\"notice\":\"Emitted when an operator's shares inside a subnetwork are set.\"}},\"kind\":\"user\",\"methods\":{\"FACTORY()\":{\"notice\":\"Get the factory's address.\"},\"HOOK_GAS_LIMIT()\":{\"notice\":\"Get a gas limit for the hook.\"},\"HOOK_RESERVE()\":{\"notice\":\"Get a reserve gas between the gas limit check and the hook's execution.\"},\"HOOK_SET_ROLE()\":{\"notice\":\"Get a hook setter's role.\"},\"NETWORK_LIMIT_SET_ROLE()\":{\"notice\":\"Get a subnetwork limit setter's role.\"},\"NETWORK_REGISTRY()\":{\"notice\":\"Get the network registry's address.\"},\"OPERATOR_NETWORK_OPT_IN_SERVICE()\":{\"notice\":\"Get the operator-network opt-in service's address.\"},\"OPERATOR_NETWORK_SHARES_SET_ROLE()\":{\"notice\":\"Get an operator-subnetwork shares setter's role.\"},\"OPERATOR_VAULT_OPT_IN_SERVICE()\":{\"notice\":\"Get the operator-vault opt-in service's address.\"},\"TYPE()\":{\"notice\":\"Get the entity's type.\"},\"VAULT_FACTORY()\":{\"notice\":\"Get the vault factory's address.\"},\"VERSION()\":{\"notice\":\"Get a version of the delegator (different versions mean different interfaces).\"},\"hook()\":{\"notice\":\"Get the hook's address.\"},\"initialize(bytes)\":{\"notice\":\"Initialize this entity contract by using a given data.\"},\"maxNetworkLimit(bytes32)\":{\"notice\":\"Get a particular subnetwork's maximum limit (meaning the subnetwork is not ready to get more as a stake).\"},\"networkLimit(bytes32)\":{\"notice\":\"Get a subnetwork's limit (how much stake the vault curator is ready to give to the subnetwork).\"},\"networkLimitAt(bytes32,uint48,bytes)\":{\"notice\":\"Get a subnetwork's limit at a given timestamp using a hint (how much stake the vault curator is ready to give to the subnetwork).\"},\"onSlash(bytes32,address,uint256,uint48,bytes)\":{\"notice\":\"Called when a slash happens.\"},\"operatorNetworkShares(bytes32,address)\":{\"notice\":\"Get an operator's shares for a subnetwork (what percentage, which is equal to the shares divided by the total operators' shares, of the subnetwork's stake the vault curator is ready to give to the operator).\"},\"operatorNetworkSharesAt(bytes32,address,uint48,bytes)\":{\"notice\":\"Get an operator's shares for a subnetwork at a given timestamp using a hint (what percentage, which is equal to the shares divided by the total operators' shares, of the subnetwork's stake the vault curator is ready to give to the operator).\"},\"setHook(address)\":{\"notice\":\"Set a new hook.\"},\"setMaxNetworkLimit(uint96,uint256)\":{\"notice\":\"Set a maximum limit for a subnetwork (how much stake the subnetwork is ready to get). identifier identifier of the subnetwork\"},\"setNetworkLimit(bytes32,uint256)\":{\"notice\":\"Set a subnetwork's limit (how much stake the vault curator is ready to give to the subnetwork).\"},\"setOperatorNetworkShares(bytes32,address,uint256)\":{\"notice\":\"Set an operator's shares for a subnetwork (what percentage, which is equal to the shares divided by the total operators' shares, of the subnetwork's stake the vault curator is ready to give to the operator).\"},\"stake(bytes32,address)\":{\"notice\":\"Get a stake that a given subnetwork will be able to slash for a certain operator until the end of the next epoch (if no cross-slashing and no slashings by the subnetwork).\"},\"stakeAt(bytes32,address,uint48,bytes)\":{\"notice\":\"Get a stake that a given subnetwork could be able to slash for a certain operator at a given timestamp until the end of the consequent epoch using hints (if no cross-slashing and no slashings by the subnetwork).\"},\"staticDelegateCall(address,bytes)\":{\"notice\":\"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data).\"},\"totalOperatorNetworkShares(bytes32)\":{\"notice\":\"Get a sum of operators' shares for a subnetwork.\"},\"totalOperatorNetworkSharesAt(bytes32,uint48,bytes)\":{\"notice\":\"Get a sum of operators' shares for a subnetwork at a given timestamp using a hint.\"},\"vault()\":{\"notice\":\"Get the vault's address.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/hints/DelegatorHints.sol\":\"NetworkRestakeDelegatorHints\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://942dad22fbdc1669f025540ba63aa3ccfad5f8458fc5d4525b31ebf272e7af45\",\"dweb:/ipfs/Qmdo4X2M82aM3AMoW2kf2jhYkSCyC4T1pHNd6obdsDFnAB\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45\",\"dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26\",\"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol\":{\"keccak256\":\"0x85a45f3f10014a0f8be41157a32b6a5f905753ea64a4b64e29fc12b7deeecf39\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c3c74009ce36136b36c77c23935b8e4a7b4f253be2da2be4fb4a916b1ce43743\",\"dweb:/ipfs/QmcH36v3iN7SJJuF73AunLR2LtNxhVJ1wm63ph4dPZ4pcL\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x18a7171df639a934592915a520ecb97c5bbc9675a1105607aac8a94e72bf62c6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7478e1f13da69a2867ccd883001d836b75620362e743f196376d63ed0c422a1c\",\"dweb:/ipfs/QmWywcQ9TNfwtoqAxbn25d8C5VrV12PrPS9UjtGe6pL2BA\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xeed0a08b0b091f528356cbc7245891a4c748682d4f6a18055e8e6ca77d12a6cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba80ba06c8e6be852847e4c5f4492cef801feb6558ae09ed705ff2e04ea8b13c\",\"dweb:/ipfs/QmXRJDv3xHLVQCVXg1ZvR35QS9sij5y9NDWYzMfUfAdTHF\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x999f705a027ed6dc2d4e0df2cc4a509852c6bfd11de1c8161bf88832d0503fd0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0798def67258d9a3cc20b2b4da7ebf351a5cefe0abfdd665d2d81f8e32f89b21\",\"dweb:/ipfs/QmPEvJosnPfzHNjKvCv2D3891mA2Ww8eUwkqrxBjuYdHCt\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0xba333517a3add42cd35fe877656fc3dfcc9de53baa4f3aabbd6d12a92e4ea435\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ceacff44c0fdc81e48e0e0b1db87a2076d3c1fb497341de077bf1da9f6b406c\",\"dweb:/ipfs/QmRUo1muMRAewxrKQ7TkXUtknyRoR57AyEkoPpiuZQ8FzX\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/SignatureChecker.sol\":{\"keccak256\":\"0x6b11eb41a228cca35d4b662b4df69fcd75192851365102690f57b2ac01e83fe6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab006a2983ed350d2af21ddcdd835dcae3b8340086cc4d088460da5abd041f69\",\"dweb:/ipfs/QmbEacDhkJZiGrgzLjB4pNtE8Z1uudjDw1DvcDUTVQFsLG\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c\",\"dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0xbdc5e074d7dd6678f67e92b1a51a20226801a407b0e1af3da367c5d1ff4519ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a36cca6b22fff3db16fc789ff6c60eea71d4b156065d4d0c83a0bc5e91a77a8b\",\"dweb:/ipfs/QmYN3exd5AemxjBrN8XMB1p5LbbE16uC3sjbYjwi8AjcGR\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0xc7755af115020049e4140f224f9ee88d7e1799ffb0646f37bf0df24bf6213f58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f09bf94d5274334ec021f61a04659db303f31e60460e14b709c9bf187740111\",\"dweb:/ipfs/QmNvgomZYUwFAt4cZbPWAiTeSZQreGehY9BK5xyVJsUttb\"]},\"src/contracts/common/Entity.sol\":{\"keccak256\":\"0x3d61a932995b8443381f3950542d388223a2c26dd5d29a3274dea3baa7388bd7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7cdf5f03ca72fd263fd32ff59c8d88ddca911ae83896a287d10772c1bbe9b138\",\"dweb:/ipfs/QmbP84r5BWT1Rn9AYTntWSf3xUMTTCohTZJFhbBhDXFoHa\"]},\"src/contracts/common/MigratableEntity.sol\":{\"keccak256\":\"0x2d736f4dacd5d7e7697503bc426c78b8250fe1694ca157965ec178da6807de58\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f1237acf96b4b9f9b69156e068eddd726a6e15bd8e87a18dc999cd4ba4da069c\",\"dweb:/ipfs/QmS6M8fiFFSeuJ4ZKKq1z8W7w4ybeHQSy5TLASGoc1LVic\"]},\"src/contracts/common/StaticDelegateCallable.sol\":{\"keccak256\":\"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764\",\"dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD\"]},\"src/contracts/delegator/BaseDelegator.sol\":{\"keccak256\":\"0x7c54d491fdd4415b764a9c8defa068e56d4c0c8c9419be0053a1d377669290e8\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://9238bfbad0f6eeb0dc7727724de14380f1980b395902269703d5e2ef07e52e10\",\"dweb:/ipfs/QmPJn1V4HNXcEghYvogGuSTF24dSQUPosR5qtsXcmNqRm3\"]},\"src/contracts/delegator/FullRestakeDelegator.sol\":{\"keccak256\":\"0x0a81c4f8e72914563a9cb771e93acf889c71ea36b7bec040e4eb562b199d5af1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6fc66b6ba02da77046a0bbbd1dd407a62c08f52e04486c9cbd2cb1cca3da555f\",\"dweb:/ipfs/QmZQivK1ZnMxfRQQ5aLpV9co5u55wQVNev5Rg1hzAqxhkE\"]},\"src/contracts/delegator/NetworkRestakeDelegator.sol\":{\"keccak256\":\"0xd3a8e6522f9c6fdcc2da837c9023afd6bdff2bce45a35590320c475519e3636d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://58b17a87f6554f08376f9ea7fedf486a4aa75801bf0ad8b23ff5a46959b6b7a3\",\"dweb:/ipfs/QmSTmNh67tYt8CmjVZb57r8N3qX5yeYdMApKPJm3qvQgQw\"]},\"src/contracts/delegator/OperatorNetworkSpecificDelegator.sol\":{\"keccak256\":\"0x031a10722b9ec49048f0952710401131290adb87e71caf294e864e7ac3b98a16\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://72428febc875134b2f29205e6f294634a1c22a7d5c78d6a9cb2f8196f107c9b5\",\"dweb:/ipfs/QmTPwXR6h5oytckmkLrHdKeEMdphJxceDhYUR4zvQeWAwY\"]},\"src/contracts/delegator/OperatorSpecificDelegator.sol\":{\"keccak256\":\"0x630ce62fa30b9f3349ab7a8cf8dbf041319febc6dd757be2f94d3d25944ed328\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c2ac59d47ce57d2a6819ae9833e1a618a371eccff93eb5ab367b201b01f42bfa\",\"dweb:/ipfs/QmdBpGMBivpNPv2WbH8vnCUy5xkVeaxQvGgqi33vKCz1kA\"]},\"src/contracts/hints/DelegatorHints.sol\":{\"keccak256\":\"0x44aa0c396311a54afbc7c73e8dadeed41e3165a4fd13f712b27d63d50fc3376d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://2f255214f3531fc707d88be0d56a7a0aed4180439316d099d760d9118aa83093\",\"dweb:/ipfs/QmZD1w5p1ukJSXumUAjvxwGmkPhn7vsr21Y2atLGEZR2oi\"]},\"src/contracts/hints/Hints.sol\":{\"keccak256\":\"0x8b565df1ae35993c097a9e642002782a8f451f6fd01809cad6bcd345bdf1b99c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://99a19adb01e350a92f534095b3078229df1f2f83077992d75d58d8684be45971\",\"dweb:/ipfs/QmbmwcuswVbzvwHQFTtrJG86oV98GnfxqYTb8cV8u1acox\"]},\"src/contracts/hints/OptInServiceHints.sol\":{\"keccak256\":\"0x95d9407900d27b9f4a1233b772aeed809c07b2dc5b31cfc9fa77ca26514c49e5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://a13a8877e312d7e6b8b85bde3668c5d84ff5ecc83f762cd573f2b7104c64eb42\",\"dweb:/ipfs/QmYV2J55acuGzCNnS3juABuUHY5U1xc8g8o9jwEyFFdeG5\"]},\"src/contracts/hints/VaultHints.sol\":{\"keccak256\":\"0xccb505b7159b769cc114d67b87c2de6b106557f667fc8f3780114baad5c3c442\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6d0c80a908fc16e96a8b5605a0bd53f9e89ad0ef0a738fbbae80ba4d3160749b\",\"dweb:/ipfs/QmXo5UtWoR8YmunqcbBU8rQMm1nvmvjNPoXcVrDhh4pEwR\"]},\"src/contracts/libraries/Checkpoints.sol\":{\"keccak256\":\"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609\",\"dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE\"]},\"src/contracts/libraries/ERC4626Math.sol\":{\"keccak256\":\"0x8441160513c1cbeb1c3b9ee077bcc7e7ce20006b52a77c8dd39ff0ef89699939\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://943f8cc3e26ddf649f465f40c909819f5c864717c4baa339e9e403b9374a4653\",\"dweb:/ipfs/QmXPxi1sUDsrGprZdUgCzoPEosaZMv9ZhygWQ1vAi1phAB\"]},\"src/contracts/libraries/Subnetwork.sol\":{\"keccak256\":\"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56\",\"dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32\"]},\"src/contracts/service/OptInService.sol\":{\"keccak256\":\"0x4e0932077f2686b7990e10d59deb2535334c0d09e52ef6e57c6ab09eca21c4b1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7c00d311032ed4a1743aca7475f3c86ce15cdfc2218108efc3731c03d34a5278\",\"dweb:/ipfs/QmUGGfVwVhaHr5kS4177yKKYiLYzi5qZpkEmvYxBZqazxf\"]},\"src/contracts/vault/Vault.sol\":{\"keccak256\":\"0x2ceff6ed3298c4cad144c99fcc79b51cb9397d6ebef00285b915848b476f8c2e\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://11f2fb3581854f3ab6e82e8d4935d9eb510c903a13c3f022346c2956a58f5307\",\"dweb:/ipfs/QmdUnoXoyYoG9SGWyQZCFyLDRUUX3eXyXetkRvw6jxqqBz\"]},\"src/contracts/vault/VaultStorage.sol\":{\"keccak256\":\"0x57db25b127d77ea3472de53e3a4af3354399655b9268638b99ca5925fa364a56\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://aa763d9a6ec508ae3abfb8228b72b9fd9525279e5135d4962e79ff059feb1173\",\"dweb:/ipfs/QmcbDR6E9wyEpu6V2FkEC4hnWy47zXA9LSKJde6zSGd33Q\"]},\"src/interfaces/common/IEntity.sol\":{\"keccak256\":\"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b\",\"dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv\"]},\"src/interfaces/common/IMigratableEntity.sol\":{\"keccak256\":\"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c\",\"dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds\"]},\"src/interfaces/common/IRegistry.sol\":{\"keccak256\":\"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014\",\"dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK\"]},\"src/interfaces/common/IStaticDelegateCallable.sol\":{\"keccak256\":\"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516\",\"dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi\"]},\"src/interfaces/delegator/IBaseDelegator.sol\":{\"keccak256\":\"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2\",\"dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8\"]},\"src/interfaces/delegator/IDelegatorHook.sol\":{\"keccak256\":\"0xc51aa8d7d1f6c8043ee819b7aeb86da0e993912e1442098df897e299f01f9f46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://adddf5cb2ba282aeb576b26efb28640f865a1721cc9b6eee8b3ee0457a2c9780\",\"dweb:/ipfs/QmNYgAmnLRwWZbhTuQhZs9rx4zcme1df5mEepkrniorSoW\"]},\"src/interfaces/delegator/IFullRestakeDelegator.sol\":{\"keccak256\":\"0xa3c8cb2e45d4d8ce90e95263bea40c01dc400f05ad65bc29597d878606be5e7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://782cf5e201aa4cca037ebafd3807a68ff1cc721d5b8416a35244db0d0607369e\",\"dweb:/ipfs/QmQkJks6x7CKndeTPa9LxgTNygD5uEi7obhADhpq1Lsr9A\"]},\"src/interfaces/delegator/INetworkRestakeDelegator.sol\":{\"keccak256\":\"0xe7030fe30389a147fd710e3436ec346b4842695fd3e65a81b95375c9f1d633fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://739c7e66d301778054f5c90bee45ec9438f68afba8a03eaaac52064c73b115ad\",\"dweb:/ipfs/QmfZ2ytKcTykAc76nxhg8ikUXV8NdBpetqb8W4YWPcox1Z\"]},\"src/interfaces/delegator/IOperatorNetworkSpecificDelegator.sol\":{\"keccak256\":\"0x74b95e64d29769202d45dd277bb830f623ff3d41ce77b80ce3ee4e318a5c71ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e512b903aae5c1b8a028c6e3f4f6223b5cb5d704503cfa6bd37b5346868f5c20\",\"dweb:/ipfs/QmZim9YExsPWtyxyeui993HTKAEmrg8MUcSkZ77Gp2JcuZ\"]},\"src/interfaces/delegator/IOperatorSpecificDelegator.sol\":{\"keccak256\":\"0x72075cab585dc17240cc3e32bc99b92f0d5627ddd988fed680e3e1a52d5a01e4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7448bc90699409ae61d85216b5efc2143a37f0f73354be2aea993bc54afca441\",\"dweb:/ipfs/QmXE4gAxM8pHosZK8mcTcj17puBx484meDCcmrDePskGHZ\"]},\"src/interfaces/service/IOptInService.sol\":{\"keccak256\":\"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337\",\"dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24\"]},\"src/interfaces/slasher/IBaseSlasher.sol\":{\"keccak256\":\"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf\",\"dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx\"]},\"src/interfaces/vault/IVault.sol\":{\"keccak256\":\"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9\",\"dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R\"]},\"src/interfaces/vault/IVaultStorage.sol\":{\"keccak256\":\"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e\",\"dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"baseDelegatorHints","type":"address"},{"internalType":"address","name":"vaultHints","type":"address"},{"internalType":"address","name":"optInServiceHints","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"inputs":[],"type":"error","name":"AlreadySet"},{"inputs":[],"type":"error","name":"CheckpointUnorderedInsertion"},{"inputs":[],"type":"error","name":"DuplicateRoleHolder"},{"inputs":[],"type":"error","name":"ExceedsMaxNetworkLimit"},{"inputs":[],"type":"error","name":"ExternalCall"},{"inputs":[],"type":"error","name":"InsufficientHookGas"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"MathOverflowedMulDiv"},{"inputs":[],"type":"error","name":"MissingRoleHolders"},{"inputs":[],"type":"error","name":"NotInitialized"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"NotNetwork"},{"inputs":[],"type":"error","name":"NotSlasher"},{"inputs":[],"type":"error","name":"NotVault"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintDowncast"},{"inputs":[],"type":"error","name":"ZeroAddressRoleHolder"},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint48","name":"captureTimestamp","type":"uint48","indexed":false}],"type":"event","name":"OnSlash","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[{"internalType":"address","name":"hook","type":"address","indexed":true}],"type":"event","name":"SetHook","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"SetMaxNetworkLimit","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"SetNetworkLimit","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false}],"type":"event","name":"SetOperatorNetworkShares","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"BASE_DELEGATOR_HINTS","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HOOK_GAS_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HOOK_RESERVE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HOOK_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"NETWORK_LIMIT_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"NETWORK_REGISTRY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_NETWORK_OPT_IN_SERVICE","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_NETWORK_SHARES_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_VAULT_OPT_IN_SERVICE","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPT_IN_SERVICE_HINTS","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"TYPE","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VAULT_FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VAULT_HINTS","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"VERSION","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"hook","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"}],"stateMutability":"view","type":"function","name":"maxNetworkLimit","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"}],"stateMutability":"view","type":"function","name":"networkLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"networkLimitAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"},{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"networkLimitHint","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"networkLimitHintInternal","outputs":[{"internalType":"bool","name":"exists","type":"bool"},{"internalType":"uint32","name":"hint","type":"uint32"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint48","name":"captureTimestamp","type":"uint48"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"onSlash"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"operatorNetworkShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"operatorNetworkSharesAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"},{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"operatorNetworkSharesHint","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"operatorNetworkSharesHintInternal","outputs":[{"internalType":"bool","name":"exists","type":"bool"},{"internalType":"uint32","name":"hint","type":"uint32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"address","name":"hook_","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setHook"},{"inputs":[{"internalType":"uint96","name":"identifier","type":"uint96"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setMaxNetworkLimit"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setNetworkLimit"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setOperatorNetworkShares"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"stake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hints","type":"bytes"}],"stateMutability":"view","type":"function","name":"stakeAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"},{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"stakeHints","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"staticDelegateCall"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"}],"stateMutability":"view","type":"function","name":"totalOperatorNetworkShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"totalOperatorNetworkSharesAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"},{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"totalOperatorNetworkSharesHint","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"totalOperatorNetworkSharesHintInternal","outputs":[{"internalType":"bool","name":"exists","type":"bool"},{"internalType":"uint32","name":"hint","type":"uint32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"vault","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"VERSION()":{"details":"Must return 1 for this one.","returns":{"_0":"version of the delegator"}},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"initialize(bytes)":{"params":{"data":"some data to use"}},"networkLimit(bytes32)":{"params":{"subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"_0":"limit of the subnetwork"}},"networkLimitAt(bytes32,uint48,bytes)":{"params":{"hint":"hint for checkpoint index","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)","timestamp":"time point to get the subnetwork limit at"},"returns":{"_0":"limit of the subnetwork at the given timestamp"}},"onSlash(bytes32,address,uint256,uint48,bytes)":{"details":"Only the vault's slasher can call this function.","params":{"amount":"amount of the collateral slashed","captureTimestamp":"time point when the stake was captured","data":"some additional data","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"}},"operatorNetworkShares(bytes32,address)":{"params":{"operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"_0":"shares of the operator for the subnetwork"}},"operatorNetworkSharesAt(bytes32,address,uint48,bytes)":{"params":{"hint":"hint for checkpoint index","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)","timestamp":"time point to get the operator's shares at"},"returns":{"_0":"shares of the operator for the subnetwork at the given timestamp"}},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"setHook(address)":{"details":"Only a HOOK_SET_ROLE holder can call this function. The hook can have arbitrary logic under certain functions, however, it doesn't affect the stake guarantees.","params":{"hook":"address of the hook"}},"setMaxNetworkLimit(uint96,uint256)":{"details":"Only a network can call this function.","params":{"amount":"new maximum subnetwork's limit"}},"setNetworkLimit(bytes32,uint256)":{"details":"Only a NETWORK_LIMIT_SET_ROLE holder can call this function.","params":{"amount":"new limit of the subnetwork","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"}},"setOperatorNetworkShares(bytes32,address,uint256)":{"details":"Only an OPERATOR_NETWORK_SHARES_SET_ROLE holder can call this function.","params":{"operator":"address of the operator","shares":"new shares of the operator for the subnetwork","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"}},"stake(bytes32,address)":{"details":"Warning: this function is not safe to use for stake capturing, as it can change by the end of the block.","params":{"operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"_0":"slashable stake until the end of the next epoch"}},"stakeAt(bytes32,address,uint48,bytes)":{"details":"Warning: it is not safe to use timestamp >= current one for the stake capturing, as it can change later.","params":{"hints":"hints for the checkpoints' indexes","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)","timestamp":"time point to capture the stake at"},"returns":{"_0":"slashable stake at the given timestamp until the end of the consequent epoch"}},"staticDelegateCall(address,bytes)":{"details":"It allows to use this contract's storage on-chain.","params":{"data":"data to make a delegatecall with","target":"address of the contract to make a delegatecall to"}},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"totalOperatorNetworkShares(bytes32)":{"params":{"subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"_0":"total shares of the operators for the subnetwork"}},"totalOperatorNetworkSharesAt(bytes32,uint48,bytes)":{"params":{"hint":"hint for checkpoint index","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)","timestamp":"time point to get the total operators' shares at"},"returns":{"_0":"total shares of the operators for the subnetwork at the given timestamp"}}},"version":1},"userdoc":{"kind":"user","methods":{"FACTORY()":{"notice":"Get the factory's address."},"HOOK_GAS_LIMIT()":{"notice":"Get a gas limit for the hook."},"HOOK_RESERVE()":{"notice":"Get a reserve gas between the gas limit check and the hook's execution."},"HOOK_SET_ROLE()":{"notice":"Get a hook setter's role."},"NETWORK_LIMIT_SET_ROLE()":{"notice":"Get a subnetwork limit setter's role."},"NETWORK_REGISTRY()":{"notice":"Get the network registry's address."},"OPERATOR_NETWORK_OPT_IN_SERVICE()":{"notice":"Get the operator-network opt-in service's address."},"OPERATOR_NETWORK_SHARES_SET_ROLE()":{"notice":"Get an operator-subnetwork shares setter's role."},"OPERATOR_VAULT_OPT_IN_SERVICE()":{"notice":"Get the operator-vault opt-in service's address."},"TYPE()":{"notice":"Get the entity's type."},"VAULT_FACTORY()":{"notice":"Get the vault factory's address."},"VERSION()":{"notice":"Get a version of the delegator (different versions mean different interfaces)."},"hook()":{"notice":"Get the hook's address."},"initialize(bytes)":{"notice":"Initialize this entity contract by using a given data."},"maxNetworkLimit(bytes32)":{"notice":"Get a particular subnetwork's maximum limit (meaning the subnetwork is not ready to get more as a stake)."},"networkLimit(bytes32)":{"notice":"Get a subnetwork's limit (how much stake the vault curator is ready to give to the subnetwork)."},"networkLimitAt(bytes32,uint48,bytes)":{"notice":"Get a subnetwork's limit at a given timestamp using a hint (how much stake the vault curator is ready to give to the subnetwork)."},"onSlash(bytes32,address,uint256,uint48,bytes)":{"notice":"Called when a slash happens."},"operatorNetworkShares(bytes32,address)":{"notice":"Get an operator's shares for a subnetwork (what percentage, which is equal to the shares divided by the total operators' shares, of the subnetwork's stake the vault curator is ready to give to the operator)."},"operatorNetworkSharesAt(bytes32,address,uint48,bytes)":{"notice":"Get an operator's shares for a subnetwork at a given timestamp using a hint (what percentage, which is equal to the shares divided by the total operators' shares, of the subnetwork's stake the vault curator is ready to give to the operator)."},"setHook(address)":{"notice":"Set a new hook."},"setMaxNetworkLimit(uint96,uint256)":{"notice":"Set a maximum limit for a subnetwork (how much stake the subnetwork is ready to get). identifier identifier of the subnetwork"},"setNetworkLimit(bytes32,uint256)":{"notice":"Set a subnetwork's limit (how much stake the vault curator is ready to give to the subnetwork)."},"setOperatorNetworkShares(bytes32,address,uint256)":{"notice":"Set an operator's shares for a subnetwork (what percentage, which is equal to the shares divided by the total operators' shares, of the subnetwork's stake the vault curator is ready to give to the operator)."},"stake(bytes32,address)":{"notice":"Get a stake that a given subnetwork will be able to slash for a certain operator until the end of the next epoch (if no cross-slashing and no slashings by the subnetwork)."},"stakeAt(bytes32,address,uint48,bytes)":{"notice":"Get a stake that a given subnetwork could be able to slash for a certain operator at a given timestamp until the end of the consequent epoch using hints (if no cross-slashing and no slashings by the subnetwork)."},"staticDelegateCall(address,bytes)":{"notice":"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data)."},"totalOperatorNetworkShares(bytes32)":{"notice":"Get a sum of operators' shares for a subnetwork."},"totalOperatorNetworkSharesAt(bytes32,uint48,bytes)":{"notice":"Get a sum of operators' shares for a subnetwork at a given timestamp using a hint."},"vault()":{"notice":"Get the vault's address."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/hints/DelegatorHints.sol":"NetworkRestakeDelegatorHints"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol":{"keccak256":"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74","urls":["bzz-raw://942dad22fbdc1669f025540ba63aa3ccfad5f8458fc5d4525b31ebf272e7af45","dweb:/ipfs/Qmdo4X2M82aM3AMoW2kf2jhYkSCyC4T1pHNd6obdsDFnAB"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8","urls":["bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45","dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41","urls":["bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26","dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol":{"keccak256":"0x85a45f3f10014a0f8be41157a32b6a5f905753ea64a4b64e29fc12b7deeecf39","urls":["bzz-raw://c3c74009ce36136b36c77c23935b8e4a7b4f253be2da2be4fb4a916b1ce43743","dweb:/ipfs/QmcH36v3iN7SJJuF73AunLR2LtNxhVJ1wm63ph4dPZ4pcL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol":{"keccak256":"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92","urls":["bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a","dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70","urls":["bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c","dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff","urls":["bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d","dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386","urls":["bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0","dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721","urls":["bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245","dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol":{"keccak256":"0x18a7171df639a934592915a520ecb97c5bbc9675a1105607aac8a94e72bf62c6","urls":["bzz-raw://7478e1f13da69a2867ccd883001d836b75620362e743f196376d63ed0c422a1c","dweb:/ipfs/QmWywcQ9TNfwtoqAxbn25d8C5VrV12PrPS9UjtGe6pL2BA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418","urls":["bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c","dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792","urls":["bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453","dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0xeed0a08b0b091f528356cbc7245891a4c748682d4f6a18055e8e6ca77d12a6cf","urls":["bzz-raw://ba80ba06c8e6be852847e4c5f4492cef801feb6558ae09ed705ff2e04ea8b13c","dweb:/ipfs/QmXRJDv3xHLVQCVXg1ZvR35QS9sij5y9NDWYzMfUfAdTHF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol":{"keccak256":"0x999f705a027ed6dc2d4e0df2cc4a509852c6bfd11de1c8161bf88832d0503fd0","urls":["bzz-raw://0798def67258d9a3cc20b2b4da7ebf351a5cefe0abfdd665d2d81f8e32f89b21","dweb:/ipfs/QmPEvJosnPfzHNjKvCv2D3891mA2Ww8eUwkqrxBjuYdHCt"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0xba333517a3add42cd35fe877656fc3dfcc9de53baa4f3aabbd6d12a92e4ea435","urls":["bzz-raw://2ceacff44c0fdc81e48e0e0b1db87a2076d3c1fb497341de077bf1da9f6b406c","dweb:/ipfs/QmRUo1muMRAewxrKQ7TkXUtknyRoR57AyEkoPpiuZQ8FzX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/SignatureChecker.sol":{"keccak256":"0x6b11eb41a228cca35d4b662b4df69fcd75192851365102690f57b2ac01e83fe6","urls":["bzz-raw://ab006a2983ed350d2af21ddcdd835dcae3b8340086cc4d088460da5abd041f69","dweb:/ipfs/QmbEacDhkJZiGrgzLjB4pNtE8Z1uudjDw1DvcDUTVQFsLG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe","urls":["bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c","dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72","urls":["bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc","dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol":{"keccak256":"0xbdc5e074d7dd6678f67e92b1a51a20226801a407b0e1af3da367c5d1ff4519ad","urls":["bzz-raw://a36cca6b22fff3db16fc789ff6c60eea71d4b156065d4d0c83a0bc5e91a77a8b","dweb:/ipfs/QmYN3exd5AemxjBrN8XMB1p5LbbE16uC3sjbYjwi8AjcGR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0xc7755af115020049e4140f224f9ee88d7e1799ffb0646f37bf0df24bf6213f58","urls":["bzz-raw://7f09bf94d5274334ec021f61a04659db303f31e60460e14b709c9bf187740111","dweb:/ipfs/QmNvgomZYUwFAt4cZbPWAiTeSZQreGehY9BK5xyVJsUttb"],"license":"MIT"},"src/contracts/common/Entity.sol":{"keccak256":"0x3d61a932995b8443381f3950542d388223a2c26dd5d29a3274dea3baa7388bd7","urls":["bzz-raw://7cdf5f03ca72fd263fd32ff59c8d88ddca911ae83896a287d10772c1bbe9b138","dweb:/ipfs/QmbP84r5BWT1Rn9AYTntWSf3xUMTTCohTZJFhbBhDXFoHa"],"license":"BUSL-1.1"},"src/contracts/common/MigratableEntity.sol":{"keccak256":"0x2d736f4dacd5d7e7697503bc426c78b8250fe1694ca157965ec178da6807de58","urls":["bzz-raw://f1237acf96b4b9f9b69156e068eddd726a6e15bd8e87a18dc999cd4ba4da069c","dweb:/ipfs/QmS6M8fiFFSeuJ4ZKKq1z8W7w4ybeHQSy5TLASGoc1LVic"],"license":"BUSL-1.1"},"src/contracts/common/StaticDelegateCallable.sol":{"keccak256":"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90","urls":["bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764","dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD"],"license":"BUSL-1.1"},"src/contracts/delegator/BaseDelegator.sol":{"keccak256":"0x7c54d491fdd4415b764a9c8defa068e56d4c0c8c9419be0053a1d377669290e8","urls":["bzz-raw://9238bfbad0f6eeb0dc7727724de14380f1980b395902269703d5e2ef07e52e10","dweb:/ipfs/QmPJn1V4HNXcEghYvogGuSTF24dSQUPosR5qtsXcmNqRm3"],"license":"BUSL-1.1"},"src/contracts/delegator/FullRestakeDelegator.sol":{"keccak256":"0x0a81c4f8e72914563a9cb771e93acf889c71ea36b7bec040e4eb562b199d5af1","urls":["bzz-raw://6fc66b6ba02da77046a0bbbd1dd407a62c08f52e04486c9cbd2cb1cca3da555f","dweb:/ipfs/QmZQivK1ZnMxfRQQ5aLpV9co5u55wQVNev5Rg1hzAqxhkE"],"license":"BUSL-1.1"},"src/contracts/delegator/NetworkRestakeDelegator.sol":{"keccak256":"0xd3a8e6522f9c6fdcc2da837c9023afd6bdff2bce45a35590320c475519e3636d","urls":["bzz-raw://58b17a87f6554f08376f9ea7fedf486a4aa75801bf0ad8b23ff5a46959b6b7a3","dweb:/ipfs/QmSTmNh67tYt8CmjVZb57r8N3qX5yeYdMApKPJm3qvQgQw"],"license":"BUSL-1.1"},"src/contracts/delegator/OperatorNetworkSpecificDelegator.sol":{"keccak256":"0x031a10722b9ec49048f0952710401131290adb87e71caf294e864e7ac3b98a16","urls":["bzz-raw://72428febc875134b2f29205e6f294634a1c22a7d5c78d6a9cb2f8196f107c9b5","dweb:/ipfs/QmTPwXR6h5oytckmkLrHdKeEMdphJxceDhYUR4zvQeWAwY"],"license":"BUSL-1.1"},"src/contracts/delegator/OperatorSpecificDelegator.sol":{"keccak256":"0x630ce62fa30b9f3349ab7a8cf8dbf041319febc6dd757be2f94d3d25944ed328","urls":["bzz-raw://c2ac59d47ce57d2a6819ae9833e1a618a371eccff93eb5ab367b201b01f42bfa","dweb:/ipfs/QmdBpGMBivpNPv2WbH8vnCUy5xkVeaxQvGgqi33vKCz1kA"],"license":"BUSL-1.1"},"src/contracts/hints/DelegatorHints.sol":{"keccak256":"0x44aa0c396311a54afbc7c73e8dadeed41e3165a4fd13f712b27d63d50fc3376d","urls":["bzz-raw://2f255214f3531fc707d88be0d56a7a0aed4180439316d099d760d9118aa83093","dweb:/ipfs/QmZD1w5p1ukJSXumUAjvxwGmkPhn7vsr21Y2atLGEZR2oi"],"license":"BUSL-1.1"},"src/contracts/hints/Hints.sol":{"keccak256":"0x8b565df1ae35993c097a9e642002782a8f451f6fd01809cad6bcd345bdf1b99c","urls":["bzz-raw://99a19adb01e350a92f534095b3078229df1f2f83077992d75d58d8684be45971","dweb:/ipfs/QmbmwcuswVbzvwHQFTtrJG86oV98GnfxqYTb8cV8u1acox"],"license":"BUSL-1.1"},"src/contracts/hints/OptInServiceHints.sol":{"keccak256":"0x95d9407900d27b9f4a1233b772aeed809c07b2dc5b31cfc9fa77ca26514c49e5","urls":["bzz-raw://a13a8877e312d7e6b8b85bde3668c5d84ff5ecc83f762cd573f2b7104c64eb42","dweb:/ipfs/QmYV2J55acuGzCNnS3juABuUHY5U1xc8g8o9jwEyFFdeG5"],"license":"BUSL-1.1"},"src/contracts/hints/VaultHints.sol":{"keccak256":"0xccb505b7159b769cc114d67b87c2de6b106557f667fc8f3780114baad5c3c442","urls":["bzz-raw://6d0c80a908fc16e96a8b5605a0bd53f9e89ad0ef0a738fbbae80ba4d3160749b","dweb:/ipfs/QmXo5UtWoR8YmunqcbBU8rQMm1nvmvjNPoXcVrDhh4pEwR"],"license":"BUSL-1.1"},"src/contracts/libraries/Checkpoints.sol":{"keccak256":"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c","urls":["bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609","dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE"],"license":"MIT"},"src/contracts/libraries/ERC4626Math.sol":{"keccak256":"0x8441160513c1cbeb1c3b9ee077bcc7e7ce20006b52a77c8dd39ff0ef89699939","urls":["bzz-raw://943f8cc3e26ddf649f465f40c909819f5c864717c4baa339e9e403b9374a4653","dweb:/ipfs/QmXPxi1sUDsrGprZdUgCzoPEosaZMv9ZhygWQ1vAi1phAB"],"license":"MIT"},"src/contracts/libraries/Subnetwork.sol":{"keccak256":"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe","urls":["bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56","dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32"],"license":"MIT"},"src/contracts/service/OptInService.sol":{"keccak256":"0x4e0932077f2686b7990e10d59deb2535334c0d09e52ef6e57c6ab09eca21c4b1","urls":["bzz-raw://7c00d311032ed4a1743aca7475f3c86ce15cdfc2218108efc3731c03d34a5278","dweb:/ipfs/QmUGGfVwVhaHr5kS4177yKKYiLYzi5qZpkEmvYxBZqazxf"],"license":"BUSL-1.1"},"src/contracts/vault/Vault.sol":{"keccak256":"0x2ceff6ed3298c4cad144c99fcc79b51cb9397d6ebef00285b915848b476f8c2e","urls":["bzz-raw://11f2fb3581854f3ab6e82e8d4935d9eb510c903a13c3f022346c2956a58f5307","dweb:/ipfs/QmdUnoXoyYoG9SGWyQZCFyLDRUUX3eXyXetkRvw6jxqqBz"],"license":"BUSL-1.1"},"src/contracts/vault/VaultStorage.sol":{"keccak256":"0x57db25b127d77ea3472de53e3a4af3354399655b9268638b99ca5925fa364a56","urls":["bzz-raw://aa763d9a6ec508ae3abfb8228b72b9fd9525279e5135d4962e79ff059feb1173","dweb:/ipfs/QmcbDR6E9wyEpu6V2FkEC4hnWy47zXA9LSKJde6zSGd33Q"],"license":"BUSL-1.1"},"src/interfaces/common/IEntity.sol":{"keccak256":"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21","urls":["bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b","dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv"],"license":"MIT"},"src/interfaces/common/IMigratableEntity.sol":{"keccak256":"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4","urls":["bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c","dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds"],"license":"MIT"},"src/interfaces/common/IRegistry.sol":{"keccak256":"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb","urls":["bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014","dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK"],"license":"MIT"},"src/interfaces/common/IStaticDelegateCallable.sol":{"keccak256":"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5","urls":["bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516","dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi"],"license":"MIT"},"src/interfaces/delegator/IBaseDelegator.sol":{"keccak256":"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee","urls":["bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2","dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8"],"license":"MIT"},"src/interfaces/delegator/IDelegatorHook.sol":{"keccak256":"0xc51aa8d7d1f6c8043ee819b7aeb86da0e993912e1442098df897e299f01f9f46","urls":["bzz-raw://adddf5cb2ba282aeb576b26efb28640f865a1721cc9b6eee8b3ee0457a2c9780","dweb:/ipfs/QmNYgAmnLRwWZbhTuQhZs9rx4zcme1df5mEepkrniorSoW"],"license":"MIT"},"src/interfaces/delegator/IFullRestakeDelegator.sol":{"keccak256":"0xa3c8cb2e45d4d8ce90e95263bea40c01dc400f05ad65bc29597d878606be5e7d","urls":["bzz-raw://782cf5e201aa4cca037ebafd3807a68ff1cc721d5b8416a35244db0d0607369e","dweb:/ipfs/QmQkJks6x7CKndeTPa9LxgTNygD5uEi7obhADhpq1Lsr9A"],"license":"MIT"},"src/interfaces/delegator/INetworkRestakeDelegator.sol":{"keccak256":"0xe7030fe30389a147fd710e3436ec346b4842695fd3e65a81b95375c9f1d633fc","urls":["bzz-raw://739c7e66d301778054f5c90bee45ec9438f68afba8a03eaaac52064c73b115ad","dweb:/ipfs/QmfZ2ytKcTykAc76nxhg8ikUXV8NdBpetqb8W4YWPcox1Z"],"license":"MIT"},"src/interfaces/delegator/IOperatorNetworkSpecificDelegator.sol":{"keccak256":"0x74b95e64d29769202d45dd277bb830f623ff3d41ce77b80ce3ee4e318a5c71ec","urls":["bzz-raw://e512b903aae5c1b8a028c6e3f4f6223b5cb5d704503cfa6bd37b5346868f5c20","dweb:/ipfs/QmZim9YExsPWtyxyeui993HTKAEmrg8MUcSkZ77Gp2JcuZ"],"license":"MIT"},"src/interfaces/delegator/IOperatorSpecificDelegator.sol":{"keccak256":"0x72075cab585dc17240cc3e32bc99b92f0d5627ddd988fed680e3e1a52d5a01e4","urls":["bzz-raw://7448bc90699409ae61d85216b5efc2143a37f0f73354be2aea993bc54afca441","dweb:/ipfs/QmXE4gAxM8pHosZK8mcTcj17puBx484meDCcmrDePskGHZ"],"license":"MIT"},"src/interfaces/service/IOptInService.sol":{"keccak256":"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a","urls":["bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337","dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24"],"license":"MIT"},"src/interfaces/slasher/IBaseSlasher.sol":{"keccak256":"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404","urls":["bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf","dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx"],"license":"MIT"},"src/interfaces/vault/IVault.sol":{"keccak256":"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235","urls":["bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9","dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R"],"license":"MIT"},"src/interfaces/vault/IVaultStorage.sol":{"keccak256":"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22","urls":["bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e","dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6"],"license":"MIT"}},"version":1},"id":81} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[{"name":"baseDelegatorHints","type":"address","internalType":"address"},{"name":"vaultHints","type":"address","internalType":"address"},{"name":"optInServiceHints","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"BASE_DELEGATOR_HINTS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"HOOK_GAS_LIMIT","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"HOOK_RESERVE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"HOOK_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"NETWORK_LIMIT_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"NETWORK_REGISTRY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_NETWORK_OPT_IN_SERVICE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_NETWORK_SHARES_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_VAULT_OPT_IN_SERVICE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"OPT_IN_SERVICE_HINTS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"TYPE","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"VAULT_FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"VAULT_HINTS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"VERSION","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"pure"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"hook","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"maxNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"networkLimit","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"networkLimitAt","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"networkLimitHint","inputs":[{"name":"delegator","type":"address","internalType":"address"},{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"networkLimitHintInternal","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"exists","type":"bool","internalType":"bool"},{"name":"hint","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"onSlash","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","internalType":"uint48"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"operatorNetworkShares","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"operatorNetworkSharesAt","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"operatorNetworkSharesHint","inputs":[{"name":"delegator","type":"address","internalType":"address"},{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"operatorNetworkSharesHintInternal","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"exists","type":"bool","internalType":"bool"},{"name":"hint","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setHook","inputs":[{"name":"hook_","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMaxNetworkLimit","inputs":[{"name":"identifier","type":"uint96","internalType":"uint96"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOperatorNetworkShares","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stake","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"stakeAt","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hints","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"stakeHints","inputs":[{"name":"delegator","type":"address","internalType":"address"},{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"staticDelegateCall","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"totalOperatorNetworkShares","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"totalOperatorNetworkSharesAt","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"totalOperatorNetworkSharesHint","inputs":[{"name":"delegator","type":"address","internalType":"address"},{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"totalOperatorNetworkSharesHintInternal","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"exists","type":"bool","internalType":"bool"},{"name":"hint","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"vault","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OnSlash","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","indexed":false,"internalType":"uint48"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SetHook","inputs":[{"name":"hook","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SetMaxNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SetNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SetOperatorNetworkShares","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"AlreadySet","inputs":[]},{"type":"error","name":"CheckpointUnorderedInsertion","inputs":[]},{"type":"error","name":"DuplicateRoleHolder","inputs":[]},{"type":"error","name":"ExceedsMaxNetworkLimit","inputs":[]},{"type":"error","name":"ExternalCall","inputs":[]},{"type":"error","name":"InsufficientHookGas","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"MissingRoleHolders","inputs":[]},{"type":"error","name":"NotInitialized","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"NotNetwork","inputs":[]},{"type":"error","name":"NotSlasher","inputs":[]},{"type":"error","name":"NotVault","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ZeroAddressRoleHolder","inputs":[]}],"bytecode":{"object":"0x6101c0346101cf57601f61389438819003918201601f19168301916001600160401b0391828411858510176101d35781606092869260409687528339810103126101cf5761004c836101e7565b926100648361005d602084016101e7565b92016101e7565b91306080527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff82871c166101be57808083160361017a575b5050505f60a0525f60c0525f60e052610100935f8552610120935f8552610140905f82526101609283526101809384526101a0948552519461369896876101fc88396080518781816105a001528181610fd70152611629015260a051876109e9015260c051876112ac015260e05187818161084b01526112e5015251868181610512015261298501525185818161055601528181611e330152611f3b0152518481816107c901528181611d9a0152611fb9015251838181610e95015261194d015251828181610d9701526119ee015251816110490152f35b6001600160401b0319909116811790915583519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80806100a2565b855163f92ee8a960e01b8152600490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101cf5756fe60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a71461030457806302145348146102ff57806307f9d5fd146102fa578063103f2907146102f5578063128e5d82146102f0578063197aa7ea146102eb5780631a7a7044146102e65780631a80e500146102e157806323f752d5146102dc578063248a9ca3146102d757806325dc9708146102d25780632dd31000146102cd5780632f2ff15d146102c857806336568abe146102c35780633dfd3873146102be5780633eb22c0f146102b957806342c53e33146102b4578063439fab91146102af57806345e78fcb146102aa578063557cab44146102a55780635d32a1c9146102a05780636679191e1461029b57806379d89614146102965780637d24bb27146102915780637f5a7c7b1461028c5780638b3f10b01461028757806391d1485414610282578063987b3ee81461027d5780639b656b22146102785780639f86fd8514610273578063a217fddf1461026e578063a33bc28714610269578063b549ef1f14610264578063bb24fe8a1461025f578063c0cd7c3e1461025a578063c43dc03f14610255578063d15b740e14610250578063d547741f1461024b578063da749d2b14610246578063e02f693714610241578063e49561ee1461023c578063e78eb6ae14610237578063ed4d89e514610232578063fbfa77cf1461022d578063fd4d447c14610228578063ff54740f146102235763ffa1ad741461021e575f80fd5b6116dc565b6116bf565b611695565b61166e565b61160e565b6115d4565b6113e9565b6113cd565b6113b3565b611367565b61133d565b611314565b6112d0565b61128d565b611273565b611126565b61110c565b611078565b611034565b610fa6565b610f48565b610f25565b610efd565b610ec4565b610e80565b610e46565b610e23565b610dc6565b610d82565b610c4a565b610bd1565b610ba8565b610aaf565b610a64565b610a18565b6109d4565b6109b7565b61097e565b6107f8565b6107b4565b61076e565b610585565b610541565b6104fd565b6104c8565b61035e565b3461035a57602036600319011261035a5760043563ffffffff60e01b811680910361035a57602090637965db0b60e01b8114908115610349575b506040519015158152f35b6301ffc9a760e01b1490505f61033e565b5f80fd5b3461035a5760408060031936011261035a57600435906024359061038061202e565b825f526002602052805f2054821161041a57825f526003602052816103a6825f206128d7565b1461040a5781610405916103f57e899d104fc3d8820bd96540612bcc5c448c8837b13b9f7faa43ad0728f0c14f946103e6875f52600360205260405f2090565b6103ef42612d8e565b90612176565b5050519081529081906020820190565b0390a2005b5163a741a04560e01b8152600490fd5b51631eefc06360e31b8152600490fd5b6001600160a01b0381160361035a57565b6024359065ffffffffffff8216820361035a57565b6064359065ffffffffffff8216820361035a57565b608090600319011261035a5760043561047d8161042a565b906024359060443561048e8161042a565b9060643565ffffffffffff8116810361035a5790565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b3461035a576104f96104e56104dc36610465565b92919091611736565b6040519182916020835260208301906104a4565b0390f35b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a57604036600319011261035a5761059e61043b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610602576105e5906004355f52600360205260405f206122f5565b60408051941515855263ffffffff91909116602085015292915050f35b604051637ca475e560e11b8152600490fd5b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b0382111761064357604052565b610614565b606081019081106001600160401b0382111761064357604052565b60a081019081106001600160401b0382111761064357604052565b90601f801991011681019081106001600160401b0382111761064357604052565b604051906106ac82610663565b565b604051906106ac82610628565b6001600160401b03811161064357601f01601f191660200190565b81601f8201121561035a578035906106ed826106bb565b926106fb604051948561067e565b8284526020838301011161035a57815f926020809301838601378301015290565b90608060031983011261035a57600435916024356107398161042a565b9160443565ffffffffffff8116810361035a5791606435906001600160401b03821161035a5761076b916004016106d6565b90565b3461035a5760206107ac6107a76107843661071c565b939190925f526005865260405f209060018060a01b03165f5260205260405f2090565b61242d565b604051908152f35b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a57604036600319011261035a576004356001600160601b038116810361035a5760243590610828612505565b6040516302910f8b60e31b81523360048201526020816024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa908115610979575f9161094a575b5015610938576001600160601b03166bffffffffffffffffffffffff193360601b161790806108b2835f52600260205260405f2090565b54146109265761090b817fc67e7929681aa1bccd63f52b3799bf5805f3009f197db6fdf584b14f7fbf608c926108f0855f52600260205260405f2090565b556108fb8185612534565b6040519081529081906020820190565b0390a261092460015f8051602061362383398151915255565b005b60405163a741a04560e01b8152600490fd5b6040516323d53b9760e21b8152600490fd5b61096c915060203d602011610972575b610964818361067e565b8101906117e8565b5f61087b565b503d61095a565b6117fc565b3461035a57602036600319011261035a576004355f525f805160206136038339815191526020526020600160405f200154604051908152f35b3461035a576104f96104e56109cb36610465565b92919091611904565b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a57604036600319011261035a57610924602435600435610a3b8261042a565b805f525f80516020613603833981519152602052610a5f600160405f2001546120e1565b61280f565b3461035a57604036600319011261035a57602435610a818161042a565b336001600160a01b03821603610a9d5761092490600435612845565b60405163334bd91960e11b8152600490fd5b3461035a57602036600319011261035a57600435610acc8161042a565b610ad4612505565b335f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c60205260409020547fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c9060ff1615610b8a57506001546001600160a01b039182169181168214610926576001600160a01b03191681176001557f5bbb1d3ebb6a3ad2a0f17ff35e579a83af60604d1d3c2a4c83c62adecadf666d5f80a260015f8051602061362383398151915255005b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b3461035a57602036600319011261035a576004355f52600360205260206107ac60405f206128d7565b3461035a57604036600319011261035a5760206107ac610c18602435610bf68161042a565b6004355f526005845260405f209060018060a01b03165f5260205260405f2090565b6128d7565b9181601f8401121561035a578235916001600160401b03831161035a576020838186019501011161035a57565b3461035a57602036600319011261035a576001600160401b0360043581811161035a57610c7b903690600401610c1d565b5f80516020613643833981519152549260ff8460401c1615931680159081610d7a575b6001149081610d70575b159081610d67575b50610d55575f80516020613643833981519152805467ffffffffffffffff19166001179055610ce39183610d3157612950565b610ce957005b5f80516020613643833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f80516020613643833981519152805460ff60401b1916600160401b179055612950565b60405163f92ee8a960e01b8152600490fd5b9050155f610cb0565b303b159150610ca8565b849150610c9e565b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a575f36600319011261035a576020604051614e208152f35b606060031982011261035a576004359160243565ffffffffffff8116810361035a5791604435906001600160401b03821161035a5761076b916004016106d6565b3461035a5760206107ac610e3636610de2565b915f526003845260405f2061242d565b3461035a575f36600319011261035a5760206040517fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c8152f35b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a575f36600319011261035a5760206040517e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf8152f35b3461035a575f36600319011261035a576001546040516001600160a01b039091168152602090f35b3461035a5760206107ac610f3836610de2565b915f526004845260405f2061242d565b3461035a57604036600319011261035a57602060ff610f9a602435610f6c8161042a565b6004355f525f80516020613603833981519152845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b3461035a57606036600319011261035a57602435610fc38161042a565b60443565ffffffffffff8116810361035a577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036106025761102f6105e5926004355f52600560205260405f209060018060a01b03165f5260205260405f2090565b6122f5565b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a57604036600319011261035a576004356110958161042a565b6024356001600160401b03811161035a575f916110b783923690600401610c1d565b90816040519283928337810184815203915af46111046110d5611b60565b916110f66040519384921515602084015260408084015260608301906104a4565b03601f19810183528261067e565b805190602001fd5b3461035a575f36600319011261035a5760206040515f8152f35b3461035a57606036600319011261035a576024356004356111468261042a565b6044359161115261208a565b5f8281526005602090815260408083206001600160a01b0385168452909152902061117c906128d7565b838114610926577f739a5a3ec0ff71e2386d0013deac5f44e0935a98def2e2a5ddf9a709518c8294916111ef61123c92855f52600460205260405f20906111e9886111e46111c942612d8e565b936111df610c188c5f52600460205260405f2090565b611bb6565b611bd1565b91612176565b5050611220856103e68361120b885f52600560205260405f2090565b9060018060a01b03165f5260205260405f2090565b50506040519485526001600160a01b0316939081906020820190565b0390a3005b606090600319011261035a576004356112598161042a565b906024359060443565ffffffffffff8116810361035a5790565b3461035a576104f96104e561128736611241565b91611bde565b3461035a575f36600319011261035a5760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a57602036600319011261035a576004355f52600460205260206107ac60405f206128d7565b3461035a57602036600319011261035a576004355f526002602052602060405f2054604051908152f35b3461035a57604036600319011261035a5761092460243560043561138a8261042a565b805f525f805160206136038339815191526020526113ae600160405f2001546120e1565b612845565b3461035a576104f96104e56113c736611241565b91611c28565b3461035a5760206107ac6113e03661071c565b92919091611d24565b3461035a5760a036600319011261035a576024356004356114098261042a565b60443591611415610450565b90608435906001600160401b03821161035a57611437600492369084016106d6565b61143f612505565b5f5460209061146490611458906001600160a01b031681565b6001600160a01b031690565b60405163b134427160e01b815294859182905afa928315610979575f936115a3575b506001600160a01b039283163303611591576001546001600160a01b0316838116611506575b50506040805195865265ffffffffffff909316602086015216927f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed91819081015b0390a361092460015f8051602061362383398151915255565b90936040519461153d8661152f602082019363724ab0f760e11b8552858c898d60248701611eae565b03601f19810188528761067e565b62042e305a1061157f575f6114ed938192827f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed9951926203d090f150936114ac565b604051638072475160e01b8152600490fd5b60405163dabc4ad960e01b8152600490fd5b6115c691935060203d6020116115cd575b6115be818361067e565b810190611872565b915f611486565b503d6115b4565b3461035a575f36600319011261035a5760206040517f1312a1cf530e56add9be4fd84db9051dcc7635952f09f735f9a29405b55846258152f35b3461035a57604036600319011261035a5761162761043b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610602576105e5906004355f52600460205260405f206122f5565b3461035a575f36600319011261035a575f546040516001600160a01b039091168152602090f35b3461035a57604036600319011261035a5760206107ac6024356116b78161042a565b600435611f04565b3461035a575f36600319011261035a5760206040516203d0908152f35b3461035a575f36600319011261035a57602060405160018152f35b5190811515820361035a57565b519063ffffffff8216820361035a57565b919082604091031261035a5761076b602061172f846116f7565b9301611704565b906117869165ffffffffffff6117959496956060976040519463130f67dd60e31b6020870152602486015260018060a01b031660448501521660648301526064825261178182610663565b612238565b60208082518301019101611715565b9061179d5750565b90915063ffffffff604051911660208201526020815261076b81610628565b5f9081526005602090815260408083206001600160a01b0390941683529290522061076b92919061242d565b9081602091031261035a5761076b906116f7565b6040513d5f823e3d90fd5b81601f8201121561035a5780519061181e826106bb565b9261182c604051948561067e565b8284526020838301011161035a57815f9260208093018386015e8301015290565b9060208282031261035a5781516001600160401b03811161035a5761076b9201611807565b9081602091031261035a575161076b8161042a565b9061076b91602081526118a6825160a0602084015260c08301906104a4565b9060a060806118f46118e16118cd602088015196601f1997888883030160408901526104a4565b6040880151878783030160608801526104a4565b60608701518686830301848701526104a4565b94015192828503019101526104a4565b604051630df8851f60e11b81526001600160a01b03828116600483015260248201849052848116604483015265ffffffffffff8616606483015295606095909491935f856084817f00000000000000000000000000000000000000000000000000000000000000008c165afa948515610979575f95611b18575b5060405163fbfa77cf60e01b8152602081600481888d165afa908115610979576119ea995f9285928491611af9575b5060405163192c0ff760e21b81526001600160a01b03909116600482015265ffffffffffff909216602483015290998a9190829081906044820190565b03917f0000000000000000000000000000000000000000000000000000000000000000165afa978815610979575f98611acf575b509081611a3b82611a3381611a419689611c28565b958388611736565b94611bde565b90835115801590611ac5575b8015611abb575b8015611ab1575b8015611aa7575b611a6f5750505050909150565b6110f6955061076b9496611a8161069f565b948552602085015260408401526060830152608082015260405192839160208301611887565b5081511515611a62565b5082511515611a5b565b5080511515611a54565b5086511515611a4d565b611a4192919850611af1903d805f833e611ae9818361067e565b81019061184d565b979091611a1e565b611b12915060203d6020116115cd576115be818361067e565b5f6119ad565b611b2d9195503d805f833e611ae9818361067e565b935f61197e565b9061076b92915f52600360205260405f2061242d565b9061076b92915f52600460205260405f2061242d565b3d15611b8a573d90611b71826106bb565b91611b7f604051938461067e565b82523d5f602084013e565b606090565b634e487b7160e01b5f52601160045260245ffd5b5f19810191908211611bb157565b611b8f565b91908203918211611bb157565b9060018201809211611bb157565b91908201809211611bb157565b60405163ed4d89e560e01b6020820152602481019290925265ffffffffffff909216604482015260609291611795916117869161178182606481015b03601f19810184528361067e565b604051630cbd53f560e11b6020820152602481019290925265ffffffffffff90921660448201526060929161179591611786916117818260648101611c1a565b60405190611c7582610628565b60606020838281520152565b9060208282031261035a5781516001600160401b039283821161035a57019060408282031261035a5760405192611cb784610628565b825181811161035a5782611ccc918501611807565b8452602083015190811161035a57611ce49201611807565b602082015290565b6001600160a01b0391821681529116602082015265ffffffffffff909116604082015260806060820181905261076b929101906104a4565b92611d3490929192828486612bb5565b929093611d3f611c68565b93805180611e92575b50508415938415611dfc575b8415611d6b575b50505050611d665790565b505f90565b602080949550611d96910151604051958694859463530e1d4360e01b865260601c9060048601611cec565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610979575f91611ddd575b50155f808080611d5b565b611df6915060203d60201161097257610964818361067e565b5f611dd2565b5f549094506001600160a01b0316602084865192611e2f604051948593849363530e1d4360e01b85528960048601611cec565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610979575f91611e73575b501593611d54565b611e8c915060203d60201161097257610964818361067e565b5f611e6b565b611ea6929550602080918301019101611c81565b925f80611d48565b919360a09361076b969565ffffffffffff938552600180871b03166020850152604084015216606082015281608082015201906104a4565b8115611ef0570490565b634e487b7160e01b5f52601260045260245ffd5b5f546040516308834cb560e21b8082526001600160a01b0385811660048401529283166024830152929392602092909183816044817f000000000000000000000000000000000000000000000000000000000000000086165afa908115610979575f91612011575b5015918215611f8d575b50509050611f875761076b91612ccb565b50505f90565b6040519081526001600160a01b0385166004820152606086901c602482015291508290829060449082907f0000000000000000000000000000000000000000000000000000000000000000165afa918215610979575f92611ff4575b505015805f80611f76565b61200a9250803d1061097257610964818361067e565b5f80611fe9565b6120289150843d861161097257610964818361067e565b5f611f6c565b335f9081527f72a65082a5691803ab2b62c9bc729b34205ba1b183d950896526b2fd8714d0c7602052604090207e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf9060ff905b541615610b8a5750565b335f9081527f8f2dae99798887da307a4daa2c2d11f840b0cb9a6a67822660c531e9ad14dd00602052604090207f1312a1cf530e56add9be4fd84db9051dcc7635952f09f735f9a29405b55846259060ff90612080565b5f8181525f8051602061360383398151915260209081526040808320338452909152902060ff90612080565b634e487b7160e01b5f52603260045260245ffd5b8054821015612136575f5260205f2001905f90565b61210d565b90815491600160401b831015610643578261215e9160016106ac95018155612121565b90919082549060031b91821b915f19901b1916179055565b90929192600182019081548015612208575b508461219384612dc0565b509490928454936121a3836128d7565b96816121f3575b50156121d0575050505f198101908111611bb15761215e85916121cc93612121565b9190565b6121cc9492936121ec926001600160d01b03909116919061347b565b505061213b565b65ffffffffffff83811691161490505f6121aa565b600160401b811015610643578060016122249201845583612121565b8154905f199060031b1b191690555f612188565b5f9190829160405161226d816110f66020820194639f86fd8560e01b86523060248401526040604484015260648301906104a4565b51915afa5061227a611b60565b8051810160408282031261035a57612294602083016116f7565b916040810151916001600160401b03831161035a576122ba926020809201920101611807565b90156122c35790565b805190811561035a57602001fd5b906040516122de81610628565b915465ffffffffffff8116835260301c6020830152565b91908254905f82916005841161239d575b612311935085612f24565b9081156123915761238a61238161237b61237161234361233e61233388611ba3565b895f5260205f200190565b6122d1565b96600161236a602061235b8b5165ffffffffffff1690565b9a01516001600160d01b031690565b9101612121565b90549060031b1c90565b93611ba3565b63ffffffff1690565b6001939291565b5f925082915081908190565b91926123a881612df9565b8103908111611bb15761231193865f526123dc6123d18360205f200165ffffffffffff90541690565b65ffffffffffff1690565b65ffffffffffff851610156123f2575091612306565b9291506123fe90611bc3565b90612306565b9081602091031261035a5761076b90611704565b90600163ffffffff80931601918211611bb157565b918051156124fb578060208061244893518301019101612404565b91612453838261304b565b92612464845165ffffffffffff1690565b9065ffffffffffff80851692168281146124ef578211918261249a575b50506124915761076b9250612f7b565b50506020015190565b9091506124a78354611ba3565b63ffffffff8316149182156124c0575b50505f80612481565b6124e79192506124db6124d56123d192612418565b8561304b565b5165ffffffffffff1690565b115f806124b7565b50505050506020015190565b5061076b91612f7b565b5f8051602061362383398151915260028154146125225760029055565b604051633ee5aeb560e01b8152600490fd5b90815f52600360205260405f208161254b82612dc0565b9193905083156125a95761256b916001600160d01b031690600101612121565b90549060031b1c5b8261259f575b5050612583575050565b61259b915f52600360205260405f206103ef42612d8e565b5050565b119050815f612579565b50505f612573565b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260409020545f805160206136038339815191529060ff16611f87575f808052602091825260408082206001600160a01b038516835290925220805460ff1916600117905533906001600160a01b03165f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b6001600160a01b0381165f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c602052604090207fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c905f805160206136038339815191529060ff905b541661272b575f828152602091825260408082206001600160a01b038616835290925220805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b5050505f90565b6001600160a01b0381165f9081527f72a65082a5691803ab2b62c9bc729b34205ba1b183d950896526b2fd8714d0c7602052604090207e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf905f805160206136038339815191529060ff906126c7565b6001600160a01b0381165f9081527f8f2dae99798887da307a4daa2c2d11f840b0cb9a6a67822660c531e9ad14dd00602052604090207f1312a1cf530e56add9be4fd84db9051dcc7635952f09f735f9a29405b5584625905f805160206136038339815191529060ff906126c7565b5f8181525f80516020613603833981519152602081815260408084206001600160a01b038716855290915290912060ff906126c7565b5f8181525f80516020613603833981519152602081815260408084206001600160a01b03871685529091529091205460ff161561272b575f828152602091825260408082206001600160a01b038616835290925220805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b8054806128fc57505f5b6001600160d01b03811615611f875760016123719201612121565b5f19908082810111611bb157825f5260205f2001015460301c6128e1565b91909160408184031261035a5780356129328161042a565b9260208201356001600160401b03811161035a5761076b92016106d6565b61295c9181019061291a565b6040516302910f8b60e31b81526001600160a01b039283166004820181905291906020816024817f000000000000000000000000000000000000000000000000000000000000000088165afa908115610979575f91612a6f575b5015612a5d576129f16040916129ec612a37946129d16130b3565b60018060a01b03166001600160601b0360a01b5f5416175f55565b613233565b6020810151600180546001600160a01b0319166001600160a01b0390921691909117905580516001600160a01b0316848116612a4d575b5001516001600160a01b031690565b908116612a415750565b612a4a9061265c565b50565b612a56906125b1565b505f612a28565b6040516362df054560e01b8152600490fd5b612a88915060203d60201161097257610964818361067e565b5f6129b6565b6040519060a082018281106001600160401b038211176106435760405281608060609182815282602082015282604082015282808201520152565b9060208282031261035a5781516001600160401b039283821161035a57019060a08282031261035a57612afa61069f565b92825181811161035a5782612b10918501611807565b8452602083015181811161035a5782612b2a918501611807565b6020850152604083015181811161035a5782612b47918501611807565b6040850152606083015181811161035a5782612b64918501611807565b6060850152608083015190811161035a57612b7f9201611807565b608082015290565b9081602091031261035a575190565b60409065ffffffffffff61076b949316815281602082015201906104a4565b91939293612bc1612a8e565b94805180612caf575b5050612bdb60608601518285611b4a565b9182612bed57505050509051905f9190565b612c01612c3b9183608089015191876117bc565b916020612c1a6114586114585f5460018060a01b031690565b8189015190604051808096819463810da75d60e01b83528760048401612b96565b03915afa801561097957612c7795612c71935f92612c7c575b50612c65919260408a015191611b34565b90818082109118021890565b90613393565b915190565b612c659250612ca29060203d602011612ca8575b612c9a818361067e565b810190612b87565b91612c54565b503d612c90565b612cc3929650602080918301019101612ac9565b935f80612bca565b612ce0610c18825f52600460205260405f2090565b9081612ced575050505f90565b612d08610c1860049461120b845f52600560205260405f2090565b5f5460405163bd49c35f60e01b81529491929160209186919082906001600160a01b03165afa9081156109795761076b945f92612d65575b50610c18612d56915f52600360205260405f2090565b90818082109118021890613393565b612d56919250612d86610c189160203d602011612ca857612c9a818361067e565b929150612d40565b65ffffffffffff90818111612da1571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b805480612dd15750505f905f905f90565b5f19918183810111611bb1575f5260205f2001015460019165ffffffffffff82169160301c90565b600181111561076b57600181600160801b811015612f12575b612eba612eb0612ea6612e9c612e92612e88612ec697600488600160401b612ec19a1015612f05575b640100000000811015612ef8575b62010000811015612eeb575b610100811015612edf575b6010811015612ed3575b1015612ecb575b60030260011c612e81818b611ee6565b0160011c90565b612e81818a611ee6565b612e818189611ee6565b612e818188611ee6565b612e818187611ee6565b612e818186611ee6565b8093611ee6565b821190565b900390565b60011b612e71565b811c9160021b91612e6a565b60081c91811b91612e60565b60101c9160081b91612e55565b60201c9160101b91612e49565b60401c9160201b91612e3b565b50600160401b9050608082901c612e12565b905b838310612f335750505090565b909192612f408185613558565b90835f5265ffffffffffff808360205f20015416908416105f14612f685750925b9190612f26565b93506001810180911115612f6157611b8f565b908154905f829160058411612fe5575b612f969350846135ab565b80612fbe57505f905b6001600160d01b03821615611f875761076b9160016123719201612121565b612fd8612fcd612fdf92611ba3565b835f5260205f200190565b5460301c90565b90612f9f565b9192612ff081612df9565b8103908111611bb157612f9693855f5265ffffffffffff808360205f20015416908516105f14613021575091612f8b565b92915061302d90611bc3565b90612f8b565b6040519061304082610628565b5f6020838281520152565b9061307461306e6130959261305e613033565b50613067613033565b5084612121565b506122d1565b91600165ffffffffffff845116936020828060d01b03910151169101612121565b905490604051926130a584610628565b835260031b1c602082015290565b6130bb61356d565b6130c361356d565b60015f8051602061362383398151915255565b604051906130e382610648565b5f6040838281528260208201520152565b81601f8201121561035a578051916020916001600160401b038411610643578360051b90604051946131288584018761067e565b8552838086019282010192831161035a578301905b82821061314b575050505090565b83809183516131598161042a565b81520191019061313d565b9060208282031261035a5781516001600160401b039283821161035a5701908181039260a0841261035a5760606040519461319e86610648565b1261035a576040516131af81610648565b83516131ba8161042a565b815260208401516131ca8161042a565b602082015260408401516131dd8161042a565b60408201528452606083015181811161035a57826131fc9185016130f4565b6020850152608083015190811161035a5761321792016130f4565b604082015290565b80518210156121365760209160051b010190565b61324f9061323f6130d6565b5060208082518301019101613164565b8051519091906001600160a01b03161580613379575b613367579060208101905f5b825180518210156132eb5761145861328c836132999361321f565b516001600160a01b031690565b156132d9576132bb6132b76132b261328c84875161321f565b612732565b1590565b6132c757600101613271565b604051635140fefd60e11b8152600490fd5b6040516323cda06760e01b8152600490fd5b506040925050818101905f5b8251805182101561335e5761145861328c836133129361321f565b1561334d576133306132b761332b61328c84875161321f565b6127a0565b61333c576001016132f7565b8351635140fefd60e11b8152600490fd5b83516323cda06760e01b8152600490fd5b50509150505190565b6040516303501f5960e11b8152600490fd5b506020820151511580613265575060408201515115613265565b91818302915f198185099383808610950394808603951461341357848311156134065790829109815f038216809204600280826003021880830282030280830282030280830282030280830282030280830282030280920290030293600183805f03040190848311900302920304170290565b821560030260111861359b565b50509061076b9250611ee6565b8054600160401b8110156106435761343d91600182018155612121565b61346857815160209092015160301b65ffffffffffff191665ffffffffffff92909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b8054929392801561352e5761349261349d91611ba3565b825f5260205f200190565b9182549265ffffffffffff9182851692811680841161351c578793036134e357506134dc92509065ffffffffffff82549181199060301b169116179055565b60301c9190565b915050613517916135036134f56106ae565b65ffffffffffff9093168352565b6001600160d01b0386166020830152613420565b6134dc565b604051632520601d60e01b8152600490fd5b50906135539161353f6134f56106ae565b6001600160d01b0385166020830152613420565b5f9190565b90808216911860011c8101809111611bb15790565b60ff5f805160206136438339815191525460401c161561358957565b604051631afcd79f60e31b8152600490fd5b634e487b715f526020526024601cfd5b905b8383106135ba5750505090565b9091926135c78185613558565b90835f5265ffffffffffff808360205f20015416908416105f146135ef5750925b91906135ad565b935060018101809111156135e857611b8f56fe02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220634e3b6b986f1093753acb2fce82d90613d9763273e8cb9fc5d156adf1a11ace64736f6c63430008190033","sourceMap":"3228:4636:88:-:0;;;;;;;;;;;;;-1:-1:-1;;3228:4636:88;;;;-1:-1:-1;;;;;3228:4636:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;348:4:89;;332:21;;8837:64:22;3228:4636:88;;;;;;;;;7896:76:22;;3228:4636:88;;;;7985:34:22;7981:146;;-1:-1:-1;525:17:76;;;-1:-1:-1;525:17:76;;-1:-1:-1;552:12:76;;-1:-1:-1;2360:34:83;;2404:28;;-1:-1:-1;2404:28:83;;2442:57;;-1:-1:-1;2442:57:83;;2509:61;;-1:-1:-1;2509:61:83;;3714:41:88;;;;3765:24;;;;3799:40;;;;3228:4636;;;;;;;;332:21:89;3228:4636:88;;;;;;;;;;;;;;;525:17:76;3228:4636:88;;;;;552:12:76;3228:4636:88;;;;;2360:34:83;3228:4636:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7981:146:22;-1:-1:-1;;;;;;3228:4636:88;;;;;;;;;;;;;8087:29:22;;3228:4636:88;;8087:29:22;7981:146;;;;;7896:76;3228:4636:88;;-1:-1:-1;;;7938:23:22;;;;;3228:4636:88;-1:-1:-1;3228:4636:88;;;;;;-1:-1:-1;3228:4636:88;;;;;-1:-1:-1;3228:4636:88;;;;-1:-1:-1;;;;;3228:4636:88;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a71461030457806302145348146102ff57806307f9d5fd146102fa578063103f2907146102f5578063128e5d82146102f0578063197aa7ea146102eb5780631a7a7044146102e65780631a80e500146102e157806323f752d5146102dc578063248a9ca3146102d757806325dc9708146102d25780632dd31000146102cd5780632f2ff15d146102c857806336568abe146102c35780633dfd3873146102be5780633eb22c0f146102b957806342c53e33146102b4578063439fab91146102af57806345e78fcb146102aa578063557cab44146102a55780635d32a1c9146102a05780636679191e1461029b57806379d89614146102965780637d24bb27146102915780637f5a7c7b1461028c5780638b3f10b01461028757806391d1485414610282578063987b3ee81461027d5780639b656b22146102785780639f86fd8514610273578063a217fddf1461026e578063a33bc28714610269578063b549ef1f14610264578063bb24fe8a1461025f578063c0cd7c3e1461025a578063c43dc03f14610255578063d15b740e14610250578063d547741f1461024b578063da749d2b14610246578063e02f693714610241578063e49561ee1461023c578063e78eb6ae14610237578063ed4d89e514610232578063fbfa77cf1461022d578063fd4d447c14610228578063ff54740f146102235763ffa1ad741461021e575f80fd5b6116dc565b6116bf565b611695565b61166e565b61160e565b6115d4565b6113e9565b6113cd565b6113b3565b611367565b61133d565b611314565b6112d0565b61128d565b611273565b611126565b61110c565b611078565b611034565b610fa6565b610f48565b610f25565b610efd565b610ec4565b610e80565b610e46565b610e23565b610dc6565b610d82565b610c4a565b610bd1565b610ba8565b610aaf565b610a64565b610a18565b6109d4565b6109b7565b61097e565b6107f8565b6107b4565b61076e565b610585565b610541565b6104fd565b6104c8565b61035e565b3461035a57602036600319011261035a5760043563ffffffff60e01b811680910361035a57602090637965db0b60e01b8114908115610349575b506040519015158152f35b6301ffc9a760e01b1490505f61033e565b5f80fd5b3461035a5760408060031936011261035a57600435906024359061038061202e565b825f526002602052805f2054821161041a57825f526003602052816103a6825f206128d7565b1461040a5781610405916103f57e899d104fc3d8820bd96540612bcc5c448c8837b13b9f7faa43ad0728f0c14f946103e6875f52600360205260405f2090565b6103ef42612d8e565b90612176565b5050519081529081906020820190565b0390a2005b5163a741a04560e01b8152600490fd5b51631eefc06360e31b8152600490fd5b6001600160a01b0381160361035a57565b6024359065ffffffffffff8216820361035a57565b6064359065ffffffffffff8216820361035a57565b608090600319011261035a5760043561047d8161042a565b906024359060443561048e8161042a565b9060643565ffffffffffff8116810361035a5790565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b3461035a576104f96104e56104dc36610465565b92919091611736565b6040519182916020835260208301906104a4565b0390f35b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a57604036600319011261035a5761059e61043b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610602576105e5906004355f52600360205260405f206122f5565b60408051941515855263ffffffff91909116602085015292915050f35b604051637ca475e560e11b8152600490fd5b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b0382111761064357604052565b610614565b606081019081106001600160401b0382111761064357604052565b60a081019081106001600160401b0382111761064357604052565b90601f801991011681019081106001600160401b0382111761064357604052565b604051906106ac82610663565b565b604051906106ac82610628565b6001600160401b03811161064357601f01601f191660200190565b81601f8201121561035a578035906106ed826106bb565b926106fb604051948561067e565b8284526020838301011161035a57815f926020809301838601378301015290565b90608060031983011261035a57600435916024356107398161042a565b9160443565ffffffffffff8116810361035a5791606435906001600160401b03821161035a5761076b916004016106d6565b90565b3461035a5760206107ac6107a76107843661071c565b939190925f526005865260405f209060018060a01b03165f5260205260405f2090565b61242d565b604051908152f35b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a57604036600319011261035a576004356001600160601b038116810361035a5760243590610828612505565b6040516302910f8b60e31b81523360048201526020816024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa908115610979575f9161094a575b5015610938576001600160601b03166bffffffffffffffffffffffff193360601b161790806108b2835f52600260205260405f2090565b54146109265761090b817fc67e7929681aa1bccd63f52b3799bf5805f3009f197db6fdf584b14f7fbf608c926108f0855f52600260205260405f2090565b556108fb8185612534565b6040519081529081906020820190565b0390a261092460015f8051602061362383398151915255565b005b60405163a741a04560e01b8152600490fd5b6040516323d53b9760e21b8152600490fd5b61096c915060203d602011610972575b610964818361067e565b8101906117e8565b5f61087b565b503d61095a565b6117fc565b3461035a57602036600319011261035a576004355f525f805160206136038339815191526020526020600160405f200154604051908152f35b3461035a576104f96104e56109cb36610465565b92919091611904565b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a57604036600319011261035a57610924602435600435610a3b8261042a565b805f525f80516020613603833981519152602052610a5f600160405f2001546120e1565b61280f565b3461035a57604036600319011261035a57602435610a818161042a565b336001600160a01b03821603610a9d5761092490600435612845565b60405163334bd91960e11b8152600490fd5b3461035a57602036600319011261035a57600435610acc8161042a565b610ad4612505565b335f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c60205260409020547fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c9060ff1615610b8a57506001546001600160a01b039182169181168214610926576001600160a01b03191681176001557f5bbb1d3ebb6a3ad2a0f17ff35e579a83af60604d1d3c2a4c83c62adecadf666d5f80a260015f8051602061362383398151915255005b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b3461035a57602036600319011261035a576004355f52600360205260206107ac60405f206128d7565b3461035a57604036600319011261035a5760206107ac610c18602435610bf68161042a565b6004355f526005845260405f209060018060a01b03165f5260205260405f2090565b6128d7565b9181601f8401121561035a578235916001600160401b03831161035a576020838186019501011161035a57565b3461035a57602036600319011261035a576001600160401b0360043581811161035a57610c7b903690600401610c1d565b5f80516020613643833981519152549260ff8460401c1615931680159081610d7a575b6001149081610d70575b159081610d67575b50610d55575f80516020613643833981519152805467ffffffffffffffff19166001179055610ce39183610d3157612950565b610ce957005b5f80516020613643833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f80516020613643833981519152805460ff60401b1916600160401b179055612950565b60405163f92ee8a960e01b8152600490fd5b9050155f610cb0565b303b159150610ca8565b849150610c9e565b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a575f36600319011261035a576020604051614e208152f35b606060031982011261035a576004359160243565ffffffffffff8116810361035a5791604435906001600160401b03821161035a5761076b916004016106d6565b3461035a5760206107ac610e3636610de2565b915f526003845260405f2061242d565b3461035a575f36600319011261035a5760206040517fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c8152f35b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a575f36600319011261035a5760206040517e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf8152f35b3461035a575f36600319011261035a576001546040516001600160a01b039091168152602090f35b3461035a5760206107ac610f3836610de2565b915f526004845260405f2061242d565b3461035a57604036600319011261035a57602060ff610f9a602435610f6c8161042a565b6004355f525f80516020613603833981519152845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b3461035a57606036600319011261035a57602435610fc38161042a565b60443565ffffffffffff8116810361035a577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036106025761102f6105e5926004355f52600560205260405f209060018060a01b03165f5260205260405f2090565b6122f5565b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a57604036600319011261035a576004356110958161042a565b6024356001600160401b03811161035a575f916110b783923690600401610c1d565b90816040519283928337810184815203915af46111046110d5611b60565b916110f66040519384921515602084015260408084015260608301906104a4565b03601f19810183528261067e565b805190602001fd5b3461035a575f36600319011261035a5760206040515f8152f35b3461035a57606036600319011261035a576024356004356111468261042a565b6044359161115261208a565b5f8281526005602090815260408083206001600160a01b0385168452909152902061117c906128d7565b838114610926577f739a5a3ec0ff71e2386d0013deac5f44e0935a98def2e2a5ddf9a709518c8294916111ef61123c92855f52600460205260405f20906111e9886111e46111c942612d8e565b936111df610c188c5f52600460205260405f2090565b611bb6565b611bd1565b91612176565b5050611220856103e68361120b885f52600560205260405f2090565b9060018060a01b03165f5260205260405f2090565b50506040519485526001600160a01b0316939081906020820190565b0390a3005b606090600319011261035a576004356112598161042a565b906024359060443565ffffffffffff8116810361035a5790565b3461035a576104f96104e561128736611241565b91611bde565b3461035a575f36600319011261035a5760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a57602036600319011261035a576004355f52600460205260206107ac60405f206128d7565b3461035a57602036600319011261035a576004355f526002602052602060405f2054604051908152f35b3461035a57604036600319011261035a5761092460243560043561138a8261042a565b805f525f805160206136038339815191526020526113ae600160405f2001546120e1565b612845565b3461035a576104f96104e56113c736611241565b91611c28565b3461035a5760206107ac6113e03661071c565b92919091611d24565b3461035a5760a036600319011261035a576024356004356114098261042a565b60443591611415610450565b90608435906001600160401b03821161035a57611437600492369084016106d6565b61143f612505565b5f5460209061146490611458906001600160a01b031681565b6001600160a01b031690565b60405163b134427160e01b815294859182905afa928315610979575f936115a3575b506001600160a01b039283163303611591576001546001600160a01b0316838116611506575b50506040805195865265ffffffffffff909316602086015216927f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed91819081015b0390a361092460015f8051602061362383398151915255565b90936040519461153d8661152f602082019363724ab0f760e11b8552858c898d60248701611eae565b03601f19810188528761067e565b62042e305a1061157f575f6114ed938192827f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed9951926203d090f150936114ac565b604051638072475160e01b8152600490fd5b60405163dabc4ad960e01b8152600490fd5b6115c691935060203d6020116115cd575b6115be818361067e565b810190611872565b915f611486565b503d6115b4565b3461035a575f36600319011261035a5760206040517f1312a1cf530e56add9be4fd84db9051dcc7635952f09f735f9a29405b55846258152f35b3461035a57604036600319011261035a5761162761043b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610602576105e5906004355f52600460205260405f206122f5565b3461035a575f36600319011261035a575f546040516001600160a01b039091168152602090f35b3461035a57604036600319011261035a5760206107ac6024356116b78161042a565b600435611f04565b3461035a575f36600319011261035a5760206040516203d0908152f35b3461035a575f36600319011261035a57602060405160018152f35b5190811515820361035a57565b519063ffffffff8216820361035a57565b919082604091031261035a5761076b602061172f846116f7565b9301611704565b906117869165ffffffffffff6117959496956060976040519463130f67dd60e31b6020870152602486015260018060a01b031660448501521660648301526064825261178182610663565b612238565b60208082518301019101611715565b9061179d5750565b90915063ffffffff604051911660208201526020815261076b81610628565b5f9081526005602090815260408083206001600160a01b0390941683529290522061076b92919061242d565b9081602091031261035a5761076b906116f7565b6040513d5f823e3d90fd5b81601f8201121561035a5780519061181e826106bb565b9261182c604051948561067e565b8284526020838301011161035a57815f9260208093018386015e8301015290565b9060208282031261035a5781516001600160401b03811161035a5761076b9201611807565b9081602091031261035a575161076b8161042a565b9061076b91602081526118a6825160a0602084015260c08301906104a4565b9060a060806118f46118e16118cd602088015196601f1997888883030160408901526104a4565b6040880151878783030160608801526104a4565b60608701518686830301848701526104a4565b94015192828503019101526104a4565b604051630df8851f60e11b81526001600160a01b03828116600483015260248201849052848116604483015265ffffffffffff8616606483015295606095909491935f856084817f00000000000000000000000000000000000000000000000000000000000000008c165afa948515610979575f95611b18575b5060405163fbfa77cf60e01b8152602081600481888d165afa908115610979576119ea995f9285928491611af9575b5060405163192c0ff760e21b81526001600160a01b03909116600482015265ffffffffffff909216602483015290998a9190829081906044820190565b03917f0000000000000000000000000000000000000000000000000000000000000000165afa978815610979575f98611acf575b509081611a3b82611a3381611a419689611c28565b958388611736565b94611bde565b90835115801590611ac5575b8015611abb575b8015611ab1575b8015611aa7575b611a6f5750505050909150565b6110f6955061076b9496611a8161069f565b948552602085015260408401526060830152608082015260405192839160208301611887565b5081511515611a62565b5082511515611a5b565b5080511515611a54565b5086511515611a4d565b611a4192919850611af1903d805f833e611ae9818361067e565b81019061184d565b979091611a1e565b611b12915060203d6020116115cd576115be818361067e565b5f6119ad565b611b2d9195503d805f833e611ae9818361067e565b935f61197e565b9061076b92915f52600360205260405f2061242d565b9061076b92915f52600460205260405f2061242d565b3d15611b8a573d90611b71826106bb565b91611b7f604051938461067e565b82523d5f602084013e565b606090565b634e487b7160e01b5f52601160045260245ffd5b5f19810191908211611bb157565b611b8f565b91908203918211611bb157565b9060018201809211611bb157565b91908201809211611bb157565b60405163ed4d89e560e01b6020820152602481019290925265ffffffffffff909216604482015260609291611795916117869161178182606481015b03601f19810184528361067e565b604051630cbd53f560e11b6020820152602481019290925265ffffffffffff90921660448201526060929161179591611786916117818260648101611c1a565b60405190611c7582610628565b60606020838281520152565b9060208282031261035a5781516001600160401b039283821161035a57019060408282031261035a5760405192611cb784610628565b825181811161035a5782611ccc918501611807565b8452602083015190811161035a57611ce49201611807565b602082015290565b6001600160a01b0391821681529116602082015265ffffffffffff909116604082015260806060820181905261076b929101906104a4565b92611d3490929192828486612bb5565b929093611d3f611c68565b93805180611e92575b50508415938415611dfc575b8415611d6b575b50505050611d665790565b505f90565b602080949550611d96910151604051958694859463530e1d4360e01b865260601c9060048601611cec565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610979575f91611ddd575b50155f808080611d5b565b611df6915060203d60201161097257610964818361067e565b5f611dd2565b5f549094506001600160a01b0316602084865192611e2f604051948593849363530e1d4360e01b85528960048601611cec565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610979575f91611e73575b501593611d54565b611e8c915060203d60201161097257610964818361067e565b5f611e6b565b611ea6929550602080918301019101611c81565b925f80611d48565b919360a09361076b969565ffffffffffff938552600180871b03166020850152604084015216606082015281608082015201906104a4565b8115611ef0570490565b634e487b7160e01b5f52601260045260245ffd5b5f546040516308834cb560e21b8082526001600160a01b0385811660048401529283166024830152929392602092909183816044817f000000000000000000000000000000000000000000000000000000000000000086165afa908115610979575f91612011575b5015918215611f8d575b50509050611f875761076b91612ccb565b50505f90565b6040519081526001600160a01b0385166004820152606086901c602482015291508290829060449082907f0000000000000000000000000000000000000000000000000000000000000000165afa918215610979575f92611ff4575b505015805f80611f76565b61200a9250803d1061097257610964818361067e565b5f80611fe9565b6120289150843d861161097257610964818361067e565b5f611f6c565b335f9081527f72a65082a5691803ab2b62c9bc729b34205ba1b183d950896526b2fd8714d0c7602052604090207e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf9060ff905b541615610b8a5750565b335f9081527f8f2dae99798887da307a4daa2c2d11f840b0cb9a6a67822660c531e9ad14dd00602052604090207f1312a1cf530e56add9be4fd84db9051dcc7635952f09f735f9a29405b55846259060ff90612080565b5f8181525f8051602061360383398151915260209081526040808320338452909152902060ff90612080565b634e487b7160e01b5f52603260045260245ffd5b8054821015612136575f5260205f2001905f90565b61210d565b90815491600160401b831015610643578261215e9160016106ac95018155612121565b90919082549060031b91821b915f19901b1916179055565b90929192600182019081548015612208575b508461219384612dc0565b509490928454936121a3836128d7565b96816121f3575b50156121d0575050505f198101908111611bb15761215e85916121cc93612121565b9190565b6121cc9492936121ec926001600160d01b03909116919061347b565b505061213b565b65ffffffffffff83811691161490505f6121aa565b600160401b811015610643578060016122249201845583612121565b8154905f199060031b1b191690555f612188565b5f9190829160405161226d816110f66020820194639f86fd8560e01b86523060248401526040604484015260648301906104a4565b51915afa5061227a611b60565b8051810160408282031261035a57612294602083016116f7565b916040810151916001600160401b03831161035a576122ba926020809201920101611807565b90156122c35790565b805190811561035a57602001fd5b906040516122de81610628565b915465ffffffffffff8116835260301c6020830152565b91908254905f82916005841161239d575b612311935085612f24565b9081156123915761238a61238161237b61237161234361233e61233388611ba3565b895f5260205f200190565b6122d1565b96600161236a602061235b8b5165ffffffffffff1690565b9a01516001600160d01b031690565b9101612121565b90549060031b1c90565b93611ba3565b63ffffffff1690565b6001939291565b5f925082915081908190565b91926123a881612df9565b8103908111611bb15761231193865f526123dc6123d18360205f200165ffffffffffff90541690565b65ffffffffffff1690565b65ffffffffffff851610156123f2575091612306565b9291506123fe90611bc3565b90612306565b9081602091031261035a5761076b90611704565b90600163ffffffff80931601918211611bb157565b918051156124fb578060208061244893518301019101612404565b91612453838261304b565b92612464845165ffffffffffff1690565b9065ffffffffffff80851692168281146124ef578211918261249a575b50506124915761076b9250612f7b565b50506020015190565b9091506124a78354611ba3565b63ffffffff8316149182156124c0575b50505f80612481565b6124e79192506124db6124d56123d192612418565b8561304b565b5165ffffffffffff1690565b115f806124b7565b50505050506020015190565b5061076b91612f7b565b5f8051602061362383398151915260028154146125225760029055565b604051633ee5aeb560e01b8152600490fd5b90815f52600360205260405f208161254b82612dc0565b9193905083156125a95761256b916001600160d01b031690600101612121565b90549060031b1c5b8261259f575b5050612583575050565b61259b915f52600360205260405f206103ef42612d8e565b5050565b119050815f612579565b50505f612573565b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260409020545f805160206136038339815191529060ff16611f87575f808052602091825260408082206001600160a01b038516835290925220805460ff1916600117905533906001600160a01b03165f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b6001600160a01b0381165f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c602052604090207fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c905f805160206136038339815191529060ff905b541661272b575f828152602091825260408082206001600160a01b038616835290925220805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b5050505f90565b6001600160a01b0381165f9081527f72a65082a5691803ab2b62c9bc729b34205ba1b183d950896526b2fd8714d0c7602052604090207e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf905f805160206136038339815191529060ff906126c7565b6001600160a01b0381165f9081527f8f2dae99798887da307a4daa2c2d11f840b0cb9a6a67822660c531e9ad14dd00602052604090207f1312a1cf530e56add9be4fd84db9051dcc7635952f09f735f9a29405b5584625905f805160206136038339815191529060ff906126c7565b5f8181525f80516020613603833981519152602081815260408084206001600160a01b038716855290915290912060ff906126c7565b5f8181525f80516020613603833981519152602081815260408084206001600160a01b03871685529091529091205460ff161561272b575f828152602091825260408082206001600160a01b038616835290925220805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b8054806128fc57505f5b6001600160d01b03811615611f875760016123719201612121565b5f19908082810111611bb157825f5260205f2001015460301c6128e1565b91909160408184031261035a5780356129328161042a565b9260208201356001600160401b03811161035a5761076b92016106d6565b61295c9181019061291a565b6040516302910f8b60e31b81526001600160a01b039283166004820181905291906020816024817f000000000000000000000000000000000000000000000000000000000000000088165afa908115610979575f91612a6f575b5015612a5d576129f16040916129ec612a37946129d16130b3565b60018060a01b03166001600160601b0360a01b5f5416175f55565b613233565b6020810151600180546001600160a01b0319166001600160a01b0390921691909117905580516001600160a01b0316848116612a4d575b5001516001600160a01b031690565b908116612a415750565b612a4a9061265c565b50565b612a56906125b1565b505f612a28565b6040516362df054560e01b8152600490fd5b612a88915060203d60201161097257610964818361067e565b5f6129b6565b6040519060a082018281106001600160401b038211176106435760405281608060609182815282602082015282604082015282808201520152565b9060208282031261035a5781516001600160401b039283821161035a57019060a08282031261035a57612afa61069f565b92825181811161035a5782612b10918501611807565b8452602083015181811161035a5782612b2a918501611807565b6020850152604083015181811161035a5782612b47918501611807565b6040850152606083015181811161035a5782612b64918501611807565b6060850152608083015190811161035a57612b7f9201611807565b608082015290565b9081602091031261035a575190565b60409065ffffffffffff61076b949316815281602082015201906104a4565b91939293612bc1612a8e565b94805180612caf575b5050612bdb60608601518285611b4a565b9182612bed57505050509051905f9190565b612c01612c3b9183608089015191876117bc565b916020612c1a6114586114585f5460018060a01b031690565b8189015190604051808096819463810da75d60e01b83528760048401612b96565b03915afa801561097957612c7795612c71935f92612c7c575b50612c65919260408a015191611b34565b90818082109118021890565b90613393565b915190565b612c659250612ca29060203d602011612ca8575b612c9a818361067e565b810190612b87565b91612c54565b503d612c90565b612cc3929650602080918301019101612ac9565b935f80612bca565b612ce0610c18825f52600460205260405f2090565b9081612ced575050505f90565b612d08610c1860049461120b845f52600560205260405f2090565b5f5460405163bd49c35f60e01b81529491929160209186919082906001600160a01b03165afa9081156109795761076b945f92612d65575b50610c18612d56915f52600360205260405f2090565b90818082109118021890613393565b612d56919250612d86610c189160203d602011612ca857612c9a818361067e565b929150612d40565b65ffffffffffff90818111612da1571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b805480612dd15750505f905f905f90565b5f19918183810111611bb1575f5260205f2001015460019165ffffffffffff82169160301c90565b600181111561076b57600181600160801b811015612f12575b612eba612eb0612ea6612e9c612e92612e88612ec697600488600160401b612ec19a1015612f05575b640100000000811015612ef8575b62010000811015612eeb575b610100811015612edf575b6010811015612ed3575b1015612ecb575b60030260011c612e81818b611ee6565b0160011c90565b612e81818a611ee6565b612e818189611ee6565b612e818188611ee6565b612e818187611ee6565b612e818186611ee6565b8093611ee6565b821190565b900390565b60011b612e71565b811c9160021b91612e6a565b60081c91811b91612e60565b60101c9160081b91612e55565b60201c9160101b91612e49565b60401c9160201b91612e3b565b50600160401b9050608082901c612e12565b905b838310612f335750505090565b909192612f408185613558565b90835f5265ffffffffffff808360205f20015416908416105f14612f685750925b9190612f26565b93506001810180911115612f6157611b8f565b908154905f829160058411612fe5575b612f969350846135ab565b80612fbe57505f905b6001600160d01b03821615611f875761076b9160016123719201612121565b612fd8612fcd612fdf92611ba3565b835f5260205f200190565b5460301c90565b90612f9f565b9192612ff081612df9565b8103908111611bb157612f9693855f5265ffffffffffff808360205f20015416908516105f14613021575091612f8b565b92915061302d90611bc3565b90612f8b565b6040519061304082610628565b5f6020838281520152565b9061307461306e6130959261305e613033565b50613067613033565b5084612121565b506122d1565b91600165ffffffffffff845116936020828060d01b03910151169101612121565b905490604051926130a584610628565b835260031b1c602082015290565b6130bb61356d565b6130c361356d565b60015f8051602061362383398151915255565b604051906130e382610648565b5f6040838281528260208201520152565b81601f8201121561035a578051916020916001600160401b038411610643578360051b90604051946131288584018761067e565b8552838086019282010192831161035a578301905b82821061314b575050505090565b83809183516131598161042a565b81520191019061313d565b9060208282031261035a5781516001600160401b039283821161035a5701908181039260a0841261035a5760606040519461319e86610648565b1261035a576040516131af81610648565b83516131ba8161042a565b815260208401516131ca8161042a565b602082015260408401516131dd8161042a565b60408201528452606083015181811161035a57826131fc9185016130f4565b6020850152608083015190811161035a5761321792016130f4565b604082015290565b80518210156121365760209160051b010190565b61324f9061323f6130d6565b5060208082518301019101613164565b8051519091906001600160a01b03161580613379575b613367579060208101905f5b825180518210156132eb5761145861328c836132999361321f565b516001600160a01b031690565b156132d9576132bb6132b76132b261328c84875161321f565b612732565b1590565b6132c757600101613271565b604051635140fefd60e11b8152600490fd5b6040516323cda06760e01b8152600490fd5b506040925050818101905f5b8251805182101561335e5761145861328c836133129361321f565b1561334d576133306132b761332b61328c84875161321f565b6127a0565b61333c576001016132f7565b8351635140fefd60e11b8152600490fd5b83516323cda06760e01b8152600490fd5b50509150505190565b6040516303501f5960e11b8152600490fd5b506020820151511580613265575060408201515115613265565b91818302915f198185099383808610950394808603951461341357848311156134065790829109815f038216809204600280826003021880830282030280830282030280830282030280830282030280830282030280920290030293600183805f03040190848311900302920304170290565b821560030260111861359b565b50509061076b9250611ee6565b8054600160401b8110156106435761343d91600182018155612121565b61346857815160209092015160301b65ffffffffffff191665ffffffffffff92909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b8054929392801561352e5761349261349d91611ba3565b825f5260205f200190565b9182549265ffffffffffff9182851692811680841161351c578793036134e357506134dc92509065ffffffffffff82549181199060301b169116179055565b60301c9190565b915050613517916135036134f56106ae565b65ffffffffffff9093168352565b6001600160d01b0386166020830152613420565b6134dc565b604051632520601d60e01b8152600490fd5b50906135539161353f6134f56106ae565b6001600160d01b0385166020830152613420565b5f9190565b90808216911860011c8101809111611bb15790565b60ff5f805160206136438339815191525460401c161561358957565b604051631afcd79f60e31b8152600490fd5b634e487b715f526020526024601cfd5b905b8383106135ba5750505090565b9091926135c78185613558565b90835f5265ffffffffffff808360205f20015416908416105f146135ef5750925b91906135ad565b935060018101809111156135e857611b8f56fe02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220634e3b6b986f1093753acb2fce82d90613d9763273e8cb9fc5d156adf1a11ace64736f6c63430008190033","sourceMap":"3228:4636:88:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;-1:-1:-1;;3228:4636:88;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3551:47:19;;;:87;;;;3228:4636:88;;;;;;;;;;3551:87:19;-1:-1:-1;;;1134:40:28;;-1:-1:-1;3551:87:19;;;3228:4636:88;-1:-1:-1;3228:4636:88;;;;;;;;;;;;;;;;;;;;3202:4:19;;;:::i;:::-;3228:4636:88;-1:-1:-1;3228:4636:88;3610:15:85;3228:4636:88;;;-1:-1:-1;3228:4636:88;;3601:36:85;;3597:98;;3228:4636:88;-1:-1:-1;3228:4636:88;2233:13:85;3228:4636:88;;;2233:34:85;3228:4636:88;-1:-1:-1;3228:4636:88;2233:34:85;:::i;:::-;3709;3705:84;;3799:25;3871:35;3799:25;:56;3871:35;3799:25;;;3228:4636:88;;2233:13:85;3228:4636:88;;;;;;;3799:25:85;819:34:68;837:15;819:34;:::i;:::-;3799:56:85;;:::i;:::-;-1:-1:-1;;3228:4636:88;;;;;;;;;;;;3871:35:85;;;;3228:4636:88;3705:84:85;3228:4636:88;-1:-1:-1;;;3766:12:85;;3228:4636:88;;3766:12:85;3597:98;3228:4636:88;-1:-1:-1;;;3660:24:85;;3228:4636:88;;3660:24:85;3228:4636:88;-1:-1:-1;;;;;3228:4636:88;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;3228:4636:88;;;;;;;;-1:-1:-1;;3228:4636:88;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;3228:4636:88;;;;;;1537:38:83;-1:-1:-1;;;;;3228:4636:88;;;;;;;;;;;;-1:-1:-1;;3228:4636:88;;;;;;1632:54:83;-1:-1:-1;;;;;3228:4636:88;;;;;;;;;;;;-1:-1:-1;;3228:4636:88;;;;;;:::i;:::-;449:5:89;-1:-1:-1;;;;;3228:4636:88;435:10:89;:19;431:71;;4041:64:88;3228:4636;;;-1:-1:-1;3228:4636:88;4041:13;3228:4636;;;-1:-1:-1;3228:4636:88;4041:64;:::i;:::-;3228:4636;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3228:4636:88;431:71:89;3228:4636:88;;-1:-1:-1;;;477:14:89;;3228:4636:88;;477:14:89;3228:4636:88;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3228:4636:88;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;-1:-1:-1;;;;;3228:4636:88;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;3228:4636:88;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;3228:4636:88;;;;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;:::i;:::-;-1:-1:-1;;;;;3228:4636:88;;;;;;-1:-1:-1;;3228:4636:88;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;3228:4636:88;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;3228:4636:88;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;;;;3228:4636:88;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;3090:79:85;:44;3228:4636:88;;;:::i;:::-;;;;;-1:-1:-1;3228:4636:88;3090:22:85;3228:4636:88;;;-1:-1:-1;3228:4636:88;;;;;;;;;;;;;;;;;3090:44:85;:79;:::i;:::-;3228:4636:88;;;;;;;;;;;;-1:-1:-1;;3228:4636:88;;;;;;1743:56:83;-1:-1:-1;;;;;3228:4636:88;;;;;;;;;;;;-1:-1:-1;;3228:4636:88;;;;;;-1:-1:-1;;;;;3228:4636:88;;;;;;;;3361:103:26;;;:::i;:::-;3228:4636:88;;-1:-1:-1;;;4285:48:83;;4322:10;3228:4636:88;4285:48:83;;3228:4636:88;;;;;-1:-1:-1;;;;;4295:16:83;3228:4636:88;4285:48:83;;;;;;;-1:-1:-1;4285:48:83;;;3228:4636:88;4284:49:83;;4280:99;;-1:-1:-1;;;;;3228:4636:88;-1:-1:-1;;4322:10:83;297:2:95;3228:4636:88;;267:46:95;4459:27:83;;;;3228:4636:88;;4459:15:83;3228:4636:88;;;;;;;4459:27:83;3228:4636:88;4459:37:83;4455:87;;4654:38;4552:27;4654:38;4552:27;;;3228:4636:88;;4459:15:83;3228:4636:88;;;;;;;4552:27:83;3228:4636:88;4631:6:83;;;;:::i;:::-;3228:4636:88;;;;;;;;;;;;;4654:38:83;;;;3426:1:26;1949;-1:-1:-1;;;;;;;;;;;3228:4636:88;3860:283:26;3426:1;3228:4636:88;4455:87:83;3228:4636:88;;-1:-1:-1;;;4519:12:83;;3228:4636:88;;4519:12:83;4280:99;3228:4636:88;;-1:-1:-1;;;4356:12:83;;3228:4636:88;;4356:12:83;4285:48;;;;3228:4636:88;4285:48:83;3228:4636:88;4285:48:83;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;3228:4636:88:-;;;;;;-1:-1:-1;;3228:4636:88;;;;;;-1:-1:-1;3228:4636:88;-1:-1:-1;;;;;;;;;;;3228:4636:88;;;4919:24:19;3228:4636:88;-1:-1:-1;3228:4636:88;4919:24:19;3228:4636:88;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;-1:-1:-1;;3228:4636:88;;;;;;322:32:76;-1:-1:-1;;;;;3228:4636:88;;;;;;;;;;;;-1:-1:-1;;3228:4636:88;;;;5350:25:19;3228:4636:88;;;;;;;:::i;:::-;;-1:-1:-1;3228:4636:88;-1:-1:-1;;;;;;;;;;;3228:4636:88;;3202:4:19;4919:24;3228:4636:88;-1:-1:-1;3228:4636:88;4919:24:19;3228:4636:88;3202:4:19;:::i;:::-;5350:25;:::i;3228:4636:88:-;;;;;;-1:-1:-1;;3228:4636:88;;;;;;;;;:::i;:::-;966:10:24;-1:-1:-1;;;;;3228:4636:88;;6441:34:19;6437:102;;6549:37;3228:4636:88;;;6549:37:19;:::i;6437:102::-;3228:4636:88;;-1:-1:-1;;;6498:30:19;;3228:4636:88;;6498:30:19;3228:4636:88;;;;;;-1:-1:-1;;3228:4636:88;;;;;;;;;:::i;:::-;3361:103:26;;:::i;:::-;966:10:24;-1:-1:-1;3228:4636:88;;;;;;;;;;1356:26:83;;3228:4636:88;;4468:23:19;4464:108;;-1:-1:-1;4861:4:83;3228:4636:88;-1:-1:-1;;;;;3228:4636:88;;;;;;4861:13:83;;4857:63;;-1:-1:-1;;;;;;3228:4636:88;;;4861:4:83;3228:4636:88;4958:14:83;-1:-1:-1;;4958:14:83;4861:4;-1:-1:-1;;;;;;;;;;;3228:4636:88;;4464:108:19;3228:4636:88;;;;4514:47:19;;;;;;966:10:24;3228:4636:88;4514:47:19;;3228:4636:88;;;;;4514:47:19;3228:4636:88;;;;;;-1:-1:-1;;3228:4636:88;;;;;;-1:-1:-1;3228:4636:88;2233:13:85;3228:4636:88;;;2233:34:85;3228:4636:88;-1:-1:-1;3228:4636:88;2233:34:85;:::i;3228:4636:88:-;;;;;;-1:-1:-1;;3228:4636:88;;;;;3358:53:85;:44;3228:4636:88;;;;;:::i;:::-;;;-1:-1:-1;3228:4636:88;3358:22:85;3228:4636:88;;;-1:-1:-1;3228:4636:88;;;;;;;;;;;;;;;;;3358:44:85;:53;:::i;3228:4636:88:-;;;;;;;;;;;;;-1:-1:-1;;;;;3228:4636:88;;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;3228:4636:88;;;;-1:-1:-1;;;;;3228:4636:88;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;3228:4636:88;;;;;;;4301:16:22;3228:4636:88;;4726:16:22;;:34;;;;3228:4636:88;4805:1:22;4790:16;:50;;;;3228:4636:88;4855:13:22;:30;;;;3228:4636:88;4851:91:22;;;-1:-1:-1;;;;;;;;;;;3228:4636:88;;-1:-1:-1;;3228:4636:88;;;;;718:4:76;;4951:18:22;4979:67;;718:4:76;:::i;:::-;5066:101:22;;3228:4636:88;5066:101:22;-1:-1:-1;;;;;;;;;;;3228:4636:88;;-1:-1:-1;;;;3228:4636:88;;;;;-1:-1:-1;3228:4636:88;;5142:14:22;;3228:4636:88;;5142:14:22;3228:4636:88;4979:67:22;-1:-1:-1;;;;;;;;;;;3228:4636:88;;-1:-1:-1;;;;3228:4636:88;-1:-1:-1;;;3228:4636:88;;;718:4:76;:::i;4851:91:22:-;3228:4636:88;;-1:-1:-1;;;4908:23:22;;3228:4636:88;;4908:23:22;4855:30;4872:13;;;4855:30;;;4790:50;4818:4;4810:25;:30;;-1:-1:-1;4790:50:22;;4726:34;;;-1:-1:-1;4726:34:22;;3228:4636:88;;;;;;-1:-1:-1;;3228:4636:88;;;;;;3406:36;-1:-1:-1;;;;;3228:4636:88;;;;;;;;;;;;-1:-1:-1;;3228:4636:88;;;;;;;1253:6:83;3228:4636:88;;;;;-1:-1:-1;;3228:4636:88;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3228:4636:88;;;;;;;;;:::i;:::-;;;;;1997:60:85;3228:4636:88;;;:::i;:::-;;-1:-1:-1;3228:4636:88;1997:13:85;3228:4636:88;;;-1:-1:-1;3228:4636:88;1997:60:85;:::i;3228:4636:88:-;;;;;;-1:-1:-1;;3228:4636:88;;;;;;;1356:26:83;3228:4636:88;;;;;;;;;-1:-1:-1;;3228:4636:88;;;;;;3355:45;-1:-1:-1;;;;;3228:4636:88;;;;;;;;;;;;-1:-1:-1;;3228:4636:88;;;;;;;810:35:85;3228:4636:88;;;;;;;;;-1:-1:-1;;3228:4636:88;;;;;;;;-1:-1:-1;;;;;3228:4636:88;;;;;;;;;;;;;2512:74:85;3228:4636:88;;;:::i;:::-;;-1:-1:-1;3228:4636:88;;;;;-1:-1:-1;3228:4636:88;2512:74:85;:::i;3228:4636:88:-;;;;;;-1:-1:-1;;3228:4636:88;;;;;;3901:31:19;3228:4636:88;;;;;:::i;:::-;;;-1:-1:-1;3228:4636:88;-1:-1:-1;;;;;;;;;;;3228:4636:88;;;-1:-1:-1;3228:4636:88;;;;;;;;;;;;;;;;;3901:31:19;3228:4636:88;;;;;;;;;;;;;;;;-1:-1:-1;;3228:4636:88;;;;;;;;;:::i;:::-;;;;;;;;;;449:5:89;-1:-1:-1;;;;;3228:4636:88;435:10:89;:19;431:71;;4852:44:88;:83;3228:4636;;;-1:-1:-1;3228:4636:88;4852:22;3228:4636;;;-1:-1:-1;3228:4636:88;;;;;;;;;;;;;;;;;4852:44;:83;:::i;3228:4636::-;;;;;;-1:-1:-1;;3228:4636:88;;;;;;3448:45;-1:-1:-1;;;;;3228:4636:88;;;;;;;;;;;;-1:-1:-1;;3228:4636:88;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;3228:4636:88;;;;-1:-1:-1;3228:4636:88;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;416:25:82;;;;477:31;416:25;;:::i;:::-;3228:4636:88;;;;;;;;;;477:31:82;;3228:4636:88;;;;;;;;;;;:::i;:::-;477:31:82;3228:4636:88;;477:31:82;;;;;;:::i;:::-;518:79;;;3228:4636:88;518:79:82;;3228:4636:88;;;;;;-1:-1:-1;;3228:4636:88;;;;;;;;;;;;;;;;;-1:-1:-1;;3228:4636:88;;;;;;;;;;;:::i;:::-;;;3202:4:19;;;:::i;:::-;-1:-1:-1;3228:4636:88;;;3358:22:85;3228:4636:88;;;;;;;;-1:-1:-1;;;;;3228:4636:88;;;;;;;;;3358:53:85;;;:::i;:::-;4249:32;;;4245:82;;4596:54;3228:4636:88;4337:158:85;4596:54;3228:4636:88;;-1:-1:-1;3228:4636:88;;;;;-1:-1:-1;3228:4636:88;837:15:68;4413:72:85;837:15:68;4413:63:85;819:34:68;837:15;819:34;:::i;:::-;2776:39:85;:48;:39;;3228:4636:88;;;;;;;;;;2776:48:85;4413:63;:::i;:::-;:72;:::i;:::-;4337:158;;:::i;:::-;4505:34;;:75;:34;:44;:34;;;3228:4636:88;;3358:22:85;3228:4636:88;;;;;;;4505:34:85;3228:4636:88;;;;;;;;;;;;;;;;4505:75:85;-1:-1:-1;;3228:4636:88;;;;;-1:-1:-1;;;;;3228:4636:88;;;;;;;;;;4596:54:85;;;;3228:4636:88;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;-1:-1:-1;;3228:4636:88;;;;;;;-1:-1:-1;;;;;404:28:76;3228:4636:88;;;;;;;;;;-1:-1:-1;;3228:4636:88;;;;;;1439:41:83;-1:-1:-1;;;;;3228:4636:88;;;;;;;;;;;;-1:-1:-1;;3228:4636:88;;;;;;-1:-1:-1;3228:4636:88;;;;;2776:48:85;3228:4636:88;-1:-1:-1;3228:4636:88;2776:48:85;:::i;3228:4636:88:-;;;;;;-1:-1:-1;;3228:4636:88;;;;;;-1:-1:-1;3228:4636:88;2009:67:83;3228:4636:88;;;;-1:-1:-1;3228:4636:88;;;;;;;;;;;;;;-1:-1:-1;;3228:4636:88;;;;5767:26:19;3228:4636:88;;;;;;;:::i;:::-;;-1:-1:-1;3228:4636:88;-1:-1:-1;;;;;;;;;;;3228:4636:88;;3202:4:19;4919:24;3228:4636:88;-1:-1:-1;3228:4636:88;4919:24:19;3228:4636:88;3202:4:19;:::i;:::-;5767:26;:::i;3228:4636:88:-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;-1:-1:-1;;3228:4636:88;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;3228:4636:88;;;;;;;;;;;;:::i;:::-;3361:103:26;;:::i;:::-;-1:-1:-1;3228:4636:88;;;5246:21:83;;:13;;-1:-1:-1;;;;;3228:4636:88;5246:13:83;3228:4636:88;;-1:-1:-1;;;;;3228:4636:88;;;5246:21:83;3228:4636:88;;-1:-1:-1;;;5246:23:83;;3228:4636:88;;;;;5246:23:83;;;;;;;-1:-1:-1;5246:23:83;;;3228:4636:88;-1:-1:-1;;;;;;3228:4636:88;;;5232:10:83;:37;5228:87;;5341:4;3228:4636:88;-1:-1:-1;;;;;3228:4636:88;;;;5355:469:83;;3228:4636:88;-1:-1:-1;;3228:4636:88;;;;;;;;;;;;;;;;5839:55:83;;3228:4636:88;;;;5839:55:83;;;;3426:1:26;1949;-1:-1:-1;;;;;;;;;;;3228:4636:88;3860:283:26;5355:469:83;3228:4636:88;;;;5435:94:83;;;;3228:4636:88;5435:94:83;;;;;;;;;;;;3228:4636:88;5435:94:83;;;:::i;:::-;;3228:4636:88;;5435:94:83;;;;;;:::i;:::-;3228:4636:88;5548:9:83;:51;5544:118;;-1:-1:-1;5839:55:83;5676:138;;;;5839:55;5676:138;;;1150:7;5676:138;;5355:469;;;5544:118;3228:4636:88;;-1:-1:-1;;;5626:21:83;;3228:4636:88;;5626:21:83;5228:87;3228:4636:88;;-1:-1:-1;;;5292:12:83;;3228:4636:88;;5292:12:83;5246:23;;;;;3228:4636:88;5246:23:83;3228:4636:88;5246:23:83;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;3228:4636:88;;;;;;-1:-1:-1;;3228:4636:88;;;;;;;971:45:85;3228:4636:88;;;;;;;;;-1:-1:-1;;3228:4636:88;;;;;;:::i;:::-;449:5:89;-1:-1:-1;;;;;3228:4636:88;435:10:89;:19;431:71;;5753:78:88;3228:4636;;;-1:-1:-1;3228:4636:88;;;;;-1:-1:-1;3228:4636:88;5753:78;:::i;3228:4636::-;;;;;;-1:-1:-1;;3228:4636:88;;;;;;;;-1:-1:-1;;;;;3228:4636:88;;;;;;;;;;;;;;-1:-1:-1;;3228:4636:88;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;-1:-1:-1;;3228:4636:88;;;;;;;1150:7:83;3228:4636:88;;;;;;;;;-1:-1:-1;;3228:4636:88;;;;;;;2700:1:83;3228:4636:88;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;4948:596::-;;5195:233;4948:596;3228:4636;5171:295;4948:596;;;3228:4636;;;;5263:151;;;;;;;;;;;3228:4636;;;;;;;;;;;;;;;;;5263:151;;;;;:::i;:::-;5195:233;:::i;:::-;5263:151;3228:4636;;;5171:295;;;;;;:::i;:::-;5477:61;;;4948:596;:::o;5477:61::-;3228:4636;;;;;;;;5263:151;5510:17;;3228:4636;5263:151;5510:17;;;;;:::i;2897:279:85:-;-1:-1:-1;3228:4636:88;;;3090:22:85;3228:4636:88;;;;;;;;-1:-1:-1;;;;;3228:4636:88;;;;;;;;;3090:79:85;;2897:279;;3090:79;:::i;3228:4636:88:-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;3228:4636:88;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;3228:4636:88;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;6420:1442::-;3228:4636;;-1:-1:-1;;;6637:99:88;;-1:-1:-1;;;;;3228:4636:88;;;6637:99;;;3228:4636;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3228:4636:88;;;6656:20;3228:4636;;6637:99;;;;;;;;;;;6420:1442;-1:-1:-1;3228:4636:88;;-1:-1:-1;;;6830:32:88;;;3228:4636;6637:99;3228:4636;;;;6830:32;;;;;;;6790:84;6830:32;6637:99;6830:32;;;;;;;6420:1442;-1:-1:-1;3228:4636:88;;-1:-1:-1;;;6790:84:88;;-1:-1:-1;;;;;3228:4636:88;;;6637:99;6790:84;;3228:4636;;;;;;;;;;;;;-1:-1:-1;3228:4636:88;;;;;;;;;6790:84;;6801:11;;3228:4636;6790:84;;;;;;;6637:99;6790:84;;;6420:1442;6918:50;;;7020:69;6918:50;;;7146:64;6918:50;;;:::i;:::-;7020:69;;;;:::i;:::-;7146:64;;:::i;:::-;3228:4636;;;7238:21;;;:52;;;6420:1442;7238:85;;;;6420:1442;7238:143;;;;6420:1442;7238:190;;;;6420:1442;7221:635;;6420:1442;;;;;;;:::o;7221:635::-;7460:385;3228:4636;;7460:385;3228:4636;;;;:::i;:::-;;;;6830:32;7488:343;;3228:4636;;7488:343;;3228:4636;;7488:343;;3228:4636;7488:343;;;3228:4636;;;7460:385;;;6830:32;7460:385;;;:::i;7238:190::-;3228:4636;;;7385:43;;7238:190;;:143;3228:4636;;;7343:38;;7238:143;;:85;3228:4636;;;7294:29;;7238:85;;:52;3228:4636;;;7263:27;;7238:52;;6790:84;7146:64;6790:84;;;;;;;;6637:99;6790:84;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;6830:32;;;;;;;;;;;;;;:::i;:::-;;;;6637:99;;;;;;;;;;;;;;:::i;:::-;;;;;1869:195:85;;1997:60;1869:195;;-1:-1:-1;3228:4636:88;1997:13:85;3228:4636:88;;;-1:-1:-1;3228:4636:88;1997:60:85;:::i;2340:253::-;;2512:74;2340:253;;-1:-1:-1;3228:4636:88;2512:27:85;3228:4636:88;;;-1:-1:-1;3228:4636:88;2512:74:85;:::i;3228:4636:88:-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;3228:4636:88;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;3228:4636:88;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::o;:::-;;8889:1:93;3228:4636:88;;;;;;;:::o;:::-;;;;;;;;;;:::o;5844:570::-;3228:4636;;-1:-1:-1;;;6138:146:88;;;;;;;3228:4636;;;;;;;;;;;;;;5844:570;6046:290;;6070:228;;6138:146;3228:4636;;;;6138:146;;3228:4636;;6138:146;;;;;;:::i;4118:504::-;3228:4636;;-1:-1:-1;;;4398:94:88;;;;;;;3228:4636;;;;;;;;;;;;;;4118:504;4306:238;;4330:176;;4398:94;3228:4636;;;;4398:94;3228:4636;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;3228:4636:88;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;-1:-1:-1;;;;;3228:4636:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2764:920:83:-;;2978:48;2764:920;;;;2978:48;;;;:::i;:::-;3036:36;;;3228:4636:88;;:::i;:::-;;;;3086:20:83;3082:107;;2764:920;3216:11;;;;:193;;;;;2764:920;3216:394;;;;2764:920;3199:455;;;;;;2764:920;:::o;3199:455::-;3635:8;-1:-1:-1;3635:8:83;:::o;3216:394::-;3553:39;;;;;3430:180;3553:39;;;3228:4636:88;;;;;;;;;;3430:180:83;;467:2:95;3228:4636:88;3430:180:83;;;;;:::i;:::-;;3228:4636:88;3444:31:83;-1:-1:-1;;;;;3228:4636:88;3430:180:83;;;;;;;-1:-1:-1;3430:180:83;;;3216:394;3429:181;;3216:394;;;;;;3430:180;;;;3553:39;3430:180;3553:39;3430:180;;;;;;;:::i;:::-;;;;3216:193;-1:-1:-1;3228:4636:88;;;-1:-1:-1;;;;;;3228:4636:88;3248:161:83;3354:37;;;3228:4636:88;3248:161:83;3228:4636:88;;;;;;;;;;3248:161:83;;;;;;;:::i;:::-;;3228:4636:88;3262:29:83;-1:-1:-1;;;;;3228:4636:88;3248:161:83;;;;;;;-1:-1:-1;3248:161:83;;;3216:193;3247:162;;3216:193;;;3248:161;;;;;;;;;;;;;;:::i;:::-;;;;3082:107;3139:39;;;;;;;;;;;;;:::i;:::-;3082:107;;;;;3228:4636:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;3740:389:83;3918:5;3228:4636:88;;;-1:-1:-1;;;3853:71:83;;;-1:-1:-1;;;;;3228:4636:88;;;3853:71:83;;;3228:4636:88;;;;;;;;3740:389:83;;3228:4636:88;3853:71:83;;3228:4636:88;;3853:71:83;3228:4636:88;;;3867:29:83;3228:4636:88;;3853:71:83;;;;;;;3918:5;3853:71;;;3740:389;3852:72;;3228:4636:88;;;3852:181:83;;3740:389;3835:242;;;;;;4094:28;;;:::i;3835:242::-;4058:8;;3918:5;4058:8;:::o;3852:181::-;3228:4636:88;;3945:88:83;;;-1:-1:-1;;;;;3228:4636:88;;3853:71:83;3945:88;;3228:4636:88;467:2:95;3228:4636:88;;;;;;;;-1:-1:-1;3228:4636:88;;;;;;;;3959:31:83;3228:4636:88;3945:88:83;;;;;;;3918:5;3945:88;;;3852:181;3944:89;;;3852:181;;;;;3945:88;;;;;;-1:-1:-1;3945:88:83;;;;;;:::i;:::-;;;;;3853:71;;;;;;;;;;;;;;:::i;:::-;;;;4148:103:19;966:10:24;-1:-1:-1;3228:4636:88;;;;;;;;;810:35:85;;3228:4636:88;;3901:31:19;3228:4636:88;;4468:23:19;4464:108;;4148:103;:::o;:::-;966:10:24;-1:-1:-1;3228:4636:88;;;;;;;;;971:45:85;;3228:4636:88;;3901:31:19;3228:4636:88;4148:103:19;-1:-1:-1;3228:4636:88;;;-1:-1:-1;;;;;;;;;;;3228:4636:88;;;;;;;;966:10:24;3228:4636:88;;;;;;;;;3901:31:19;3228:4636:88;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3228:4636:88;;-1:-1:-1;3228:4636:88;;;-1:-1:-1;3228:4636:88;:::o;:::-;;:::i;:::-;;;;;-1:-1:-1;;;3228:4636:88;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6246:584:93;;;;;6360:12;;;3228:4636:88;;;6360:24:93;;6356:75;;6246:584;6474:30;;;;;:::i;:::-;3228:4636:88;;;;;;6578:12:93;;;;:::i;:::-;6604:24;;;;6246:584;-1:-1:-1;6600:188:93;;;-1:-1:-1;;;;;3228:4636:88;;;;;;;6644:21:93;;;:29;:21;;:::i;:29::-;6798:25;6246:584;:::o;6600:188::-;6753:24;;3228:4636:88;;8310:38:66;;-1:-1:-1;;;;;3228:4636:88;;;;;8310:38:66;:::i;:::-;6753:24:93;;;:::i;6604:::-;3228:4636:88;;;;;;6614:14:93;;-1:-1:-1;6604:24:93;;;6356:75;-1:-1:-1;;;3228:4636:88;;;;;;6360:12:93;3228:4636:88;;;;;;;:::i;:::-;;;;;;;;;;;;;;6356:75:93;;;525:595:89;-1:-1:-1;525:595:89;;;;3228:4636:88;;716:88:89;;3228:4636:88;716:88:89;;;;;;;;;783:4;716:88;;;3228:4636:88;;;;;;;;;;;:::i;716:88:89:-;698:107;;;;;;;:::i;:::-;3228:4636:88;;857:45:89;;3228:4636:88;;;;;;;;716:88:89;857:45;;3228:4636:88;:::i;:::-;;;;;;;-1:-1:-1;;;;;3228:4636:88;;;;;857:45:89;716:88;857:45;;;3228:4636:88;;;;:::i;:::-;916:8:89;;912:175;;525:595;:::o;912:175::-;3228:4636:88;;944:22:89;;;940:36;;716:88;990:87;;3228:4636:88;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;8406:869:93:-;;;3228:4636:88;;8620:15:93;8578:11;8645:18;8678:7;8684:1;8678:7;;8674:241;;8406:869;8939:60;;;;;:::i;:::-;9014:8;;;9010:62;;9252:15;9259:7;3228:4636:88;9219:31:93;3228:4636:88;9130:48:93;9170:7;;;:::i;:::-;9130:48;13267:109;;;;;;13089:293;;9130:48;3228:4636:88;:::i;:::-;;9176:1:93;3228:4636:88;9232:17:93;3228:4636:88;;;;;;;;9232:17:93;;3228:4636:88;-1:-1:-1;;;;;3228:4636:88;;;;9219:12:93;;:31;:::i;:::-;3228:4636:88;;;;;;;;;9259:7:93;;:::i;:::-;3228:4636:88;;;;9252:15:93;9176:1;;9188:80;;8406:869::o;9010:62::-;8578:11;;-1:-1:-1;8578:11:93;;-1:-1:-1;8578:11:93;;;;9038:23::o;8674:241::-;8721:14;;;;;:::i;:::-;3228:4636:88;;;;;;;8939:60:93;13267:109;;8578:11;13267:109;8753:55;8759:49;13267:109;;8578:11;13267:109;;3228:4636:88;;;;;;8759:49:93;3228:4636:88;;;;8753:55:93;3228:4636:88;;;8753:55:93;13267:109;;;8828:10;8749:156;8674:241;;8749:156;8883:7;;;;;;:::i;:::-;8749:156;8674:241;;3228:4636:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::o;7558:604:93:-;;3228:4636:88;;7686:17:93;7682:83;;3228:4636:88;7789:27:93;3228:4636:88;7789:27:93;3228:4636:88;;7789:27:93;;;;;;:::i;:::-;7860:14;;;;;:::i;:::-;3228:4636:88;;;;;;;;;;;;;;;;7888:22:93;;;7884:77;;7975:21;-1:-1:-1;7975:84:93;;;;7558:604;7971:139;;;;8127:28;;;;:::i;7971:139::-;8082:17;;7789:27;8082:17;3228:4636:88;8075:24:93;:::o;7975:84::-;3228:4636:88;;;8009:16:93;3228:4636:88;;8009:16:93;:::i;:::-;3228:4636:88;;;8001:24:93;:57;;;;;7975:84;;;;;;;8001:57;8029:29;8038:8;;;8029:18;8038:8;8029:23;8038:8;;:::i;:::-;8029:18;;:::i;:::-;3228:4636:88;;;;;8029:29:93;;8001:57;;;;7884:77;7933:17;;;;;7789:27;7933:17;3228:4636:88;7926:24:93;:::o;7682:83::-;7726:28;;;;:::i;3470:384:26:-;-1:-1:-1;;;;;;;;;;;1991:1:26;3228:4636:88;;3670:20:26;3666:88;;1991:1;3228:4636:88;;3470:384:26:o;3666:88::-;3228:4636:88;;-1:-1:-1;;;3713:30:26;;;;;6196:308:85;;3228:4636:88;-1:-1:-1;3228:4636:88;6327:13:85;3228:4636:88;;;-1:-1:-1;3228:4636:88;11124:30:93;;;;:::i;:::-;11173;;;-1:-1:-1;11173:30:93;;;;11182:17;;-1:-1:-1;;;;;3228:4636:88;;11182:12:93;;:17;:::i;:::-;3228:4636:88;;;6327:13:85;3228:4636:88;;11173:30:93;6385::85;;;11173::93;6381:117:85;;;;6196:308;;:::o;6381:117::-;6431:56;3228:4636:88;-1:-1:-1;3228:4636:88;6327:13:85;3228:4636:88;;;-1:-1:-1;3228:4636:88;819:34:68;837:15;819:34;:::i;6431:56:85:-;6196:308;;:::o;6385:30::-;6395:20;;-1:-1:-1;6385:30:85;;;;11173::93;;;-1:-1:-1;11173:30:93;;7270:387:19;-1:-1:-1;;;;;3228:4636:88;;-1:-1:-1;3228:4636:88;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2887:71:19;3228:4636:88;;;;-1:-1:-1;3228:4636:88;;;;;;;;;;;-1:-1:-1;;;;;3228:4636:88;;;;;;;;;;-1:-1:-1;;3228:4636:88;7509:4:19;3228:4636:88;;;966:10:24;;-1:-1:-1;;;;;3228:4636:88;-1:-1:-1;7532:40:19;-1:-1:-1;;7532:40:19;7509:4;7586:11;:::o;7270:387::-;-1:-1:-1;;;;;3228:4636:88;;-1:-1:-1;3228:4636:88;;;;;;;;;1356:26:83;;-1:-1:-1;;;;;;;;;;;2887:71:19;3228:4636:88;;3901:31:19;3228:4636:88;;;;-1:-1:-1;3228:4636:88;;;;;;;;;;;-1:-1:-1;;;;;3228:4636:88;;;;;;;;;;-1:-1:-1;;3228:4636:88;7509:4:19;3228:4636:88;;;966:10:24;;-1:-1:-1;;;;;3228:4636:88;;7532:40:19;-1:-1:-1;;7532:40:19;7509:4;7586:11;:::o;7432:219::-;7628:12;;;-1:-1:-1;7628:12:19;:::o;7270:387::-;-1:-1:-1;;;;;3228:4636:88;;-1:-1:-1;3228:4636:88;;;;;;;;;810:35:85;;-1:-1:-1;;;;;;;;;;;2887:71:19;3228:4636:88;;3901:31:19;3228:4636:88;7270:387:19;-1:-1:-1;;;;;3228:4636:88;;-1:-1:-1;3228:4636:88;;;;;;;;;971:45:85;;-1:-1:-1;;;;;;;;;;;2887:71:19;3228:4636:88;;3901:31:19;3228:4636:88;7270:387:19;-1:-1:-1;3228:4636:88;;;-1:-1:-1;;;;;;;;;;;3228:4636:88;;;;;;;;-1:-1:-1;;;;;3228:4636:88;;;;;;;;;;;;3901:31:19;3228:4636:88;7892:388:19;-1:-1:-1;3228:4636:88;;;-1:-1:-1;;;;;;;;;;;3228:4636:88;;;;;;;;-1:-1:-1;;;;;3228:4636:88;;;;;;;;;;;;;;;;-1:-1:-1;3228:4636:88;;;;;;;;;;;-1:-1:-1;;;;;3228:4636:88;;;;;;;;;;-1:-1:-1;;3228:4636:88;;;966:10:24;;-1:-1:-1;;;;;3228:4636:88;;8155:40:19;-1:-1:-1;;8155:40:19;3228:4636:88;8209:11:19;:::o;10580:184:93:-;3228:4636:88;;10446:8:66;;;:63;-1:-1:-1;10446:63:66;-1:-1:-1;;;;;3228:4636:88;;10726:7:93;3228:4636:88;;10736:12:93;:17;:12;;:17;:::i;10446:63:66:-;3228:4636:88;;;;;;;;;;13267:109:93;-1:-1:-1;13267:109:93;;-1:-1:-1;13267:109:93;;;3228:4636:88;;;10446:63:66;;3228:4636:88;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;3228:4636:88;;;;;;;;:::i;5907:716:83:-;6030:34;5907:716;6030:34;;;;:::i;:::-;3228:4636:88;;-1:-1:-1;;;6080:41:83;;-1:-1:-1;;;;;3228:4636:88;;;6080:41:83;;;3228:4636:88;;;;;6080:41:83;3228:4636:88;;;6090:13:83;3228:4636:88;;6080:41:83;;;;;;;-1:-1:-1;6080:41:83;;;5907:716;6079:42;;6075:90;;6266:27;3228:4636:88;2684:111:26;6210:14:83;3228:4636:88;2684:111:26;;;:::i;:::-;3228:4636:88;;;;;;-1:-1:-1;;;;;3228:4636:88;;-1:-1:-1;3228:4636:88;;;-1:-1:-1;3228:4636:88;;6210:14:83;6266:27;:::i;:::-;6080:41;6311:15;;3228:4636:88;;;;-1:-1:-1;;;;;;3228:4636:88;-1:-1:-1;;;;;3228:4636:88;;;;;;;;;;;-1:-1:-1;;;;;3228:4636:88;;;;6337:143:83;;5907:716;-1:-1:-1;6493:28:83;3228:4636:88;-1:-1:-1;;;;;3228:4636:88;;;;;;;6489:128:83;;5907:716;:::o;6489:128::-;6551:55;;;:::i;:::-;;5907:716::o;6337:143::-;6404:65;;;:::i;:::-;;6337:143;;;6075:90;3228:4636:88;;-1:-1:-1;;;6144:10:83;;6080:41;;6144:10;6080:41;;;;;;;;;;;;;;:::i;:::-;;;;3228:4636:88;;;;;;;;;;-1:-1:-1;;;;;3228:4636:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;3228:4636:88;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;4663:1079:85:-;;;;;3228:4636:88;;:::i;:::-;;;;4903:16:85;4899:92;;4663:1079;5105:42;;5053:95;5105:42;;;;5053:95;;;:::i;:::-;5165:570;:34;;;5218:21;;;;;;5165:570;-1:-1:-1;5158:577:85;4663:1079;:::o;5165:570::-;5273:95;5431:67;5330:37;;;;;;5273:95;;;:::i;:::-;3228:4636:88;5470:27:85;5431;:13;3228:4636:88;-1:-1:-1;3228:4636:88;;;;;;;;;5431:27:85;5470;;;;3228:4636:88;;;;;;;;;;;5431:67:85;;;;;;;:::i;:::-;;;;;;;;;5273:409;5431:67;5397:216;5431:67;-1:-1:-1;5431:67:85;;;5165:570;5562:28;5524:67;5562:28;;3228:4636:88;5562:28:85;;;5524:67;;:::i;:::-;5397:216;3463:5:63;;;;3066;;3228:4636:88;3060:42:63;3371:111;;5397:216:85;5273:409;;:::i;:::-;5700:21;;4663:1079;:::o;5431:67::-;5524;5431;;;;5470:27;5431:67;5470:27;5431:67;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;4899:92;4949:31;;;;;;;;;;;;;:::i;:::-;4899:92;;;;;5748:442;2776:48;:39;;3228:4636:88;;;;;;;;;;2776:48:85;5946:237;:32;;;:237;;;-1:-1:-1;5748:442:85;:::o;5946:237::-;3358:53;:44;2776:27;3358:34;;;3228:4636:88;;3358:22:85;3228:4636:88;;;;;;;3358:53:85;-1:-1:-1;3228:4636:88;;;-1:-1:-1;;;6086:27:85;;3228:4636:88;;;;6086:27:85;;3228:4636:88;;;;;-1:-1:-1;;;;;3228:4636:88;6086:27:85;;;;;;;6009:174;6086:27;-1:-1:-1;6086:27:85;;;5946:237;2233:25;;:34;:25;3228:4636:88;;2233:13:85;3228:4636:88;;;;;;;2233:34:85;3463:5:63;;;;;3066;;3228:4636:88;3060:42:63;6009:174:85;;:::i;6086:27::-;2233:34;6086:27;;;;2233:25;6086:27;;;;;;;;;;;:::i;:::-;;;;;;14296:213:64;3228:4636:88;14374:24:64;;;;14370:103;;3228:4636:88;14296:213:64;:::o;14370:103::-;3228:4636:88;;;;14421:41:64;;;;;;14452:2;14421:41;;;3228:4636:88;;;;;14421:41:64;10695:389:66;3228:4636:88;;10871:8:66;;;10895:20;;10833:17;10895:20;10833:17;10895:20;10833:17;10895:20;:::o;10867:211::-;3228:4636:88;;;;;;;;;;10833:17:66;13267:109:93;;10833:17:66;13267:109:93;;;3228:4636:88;11014:1:66;3228:4636:88;;;;;;;11030:37:66;:::o;18080:5181:63:-;18246:1;18241:6;;;18237:53;;18246:1;19217:14;-1:-1:-1;;;19278:16:63;;;19274:92;;18080:5181;22827:18;22717;22607;22498;22387;22278;23216:28;19383:15;19898:6;19383:15;-1:-1:-1;;;23237:6:63;19383:15;;;19379:90;;18080:5181;19493:7;19486:15;;;19482:90;;18080:5181;19596:7;19589:15;;;19585:89;;18080:5181;19698:6;19691:14;;;19687:87;;18080:5181;19798:6;19791:14;;;19787:87;;18080:5181;19891:14;;19887:61;;18080:5181;20374:1;3228:4636:88;18246:1:63;3228:4636:88;22284:6:63;;;;:::i;:::-;3228:4636:88;;;;;22278:18:63;22393:6;;;;:::i;22387:18::-;22504:6;;;;:::i;22498:18::-;22613:6;;;;:::i;22607:18::-;22723:6;;;;:::i;22717:18::-;22833:6;;;;:::i;22827:18::-;23237:6;;;:::i;:::-;23232:11;;;3228:4636:88;23216:28:63;3228:4636:88;;18080:5181:63;:::o;19887:61::-;18246:1;3228:4636:88;19887:61:63;;19787:87;3228:4636:88;;;;;19787:87:63;;;19687;3228:4636:88;;;;;19687:87:63;;;19585:89;3228:4636:88;;;;;19585:89:63;;;19482:90;3228:4636:88;;;;;19482:90:63;;;19379;3228:4636:88;;;;;19379:90:63;;;19274:92;-1:-1:-1;;;;3228:4636:88;-1:-1:-1;3228:4636:88;;;;19274:92:63;;12497:447:93;;12694:10;;;;;;12926:11;;;12497:447;:::o;12687:230::-;12734:23;;;;;;;:::i;:::-;13267:109;;-1:-1:-1;13267:109:93;3228:4636:88;13267:109:93;;;-1:-1:-1;13267:109:93;;3228:4636:88;;;;;-1:-1:-1;12771:136:93;3228:4636:88;;;12830:10:93;12771:136;;12687:230;;;;12771:136;3228:4636:88;;12891:1:93;3228:4636:88;;;;;;12771:136:93;3228:4636:88;;:::i;6999:207:93:-;;3228:4636:88;;9737:15:66;-1:-1:-1;9762:18:66;9795:7;9801:1;9795:7;;9791:234;;6999:207:93;10049:53:66;;;;;:::i;:::-;10120:8;;;:63;-1:-1:-1;10120:63:66;;-1:-1:-1;;;;;3228:4636:88;;7168:7:93;3228:4636:88;;;7178:12:93;;:17;:12;;:17;:::i;10120:63:66:-;10135:41;10168:7;10135:48;10168:7;;:::i;:::-;10135:41;13267:109:93;;;;;;13089:293;;10135:41:66;3228:4636:88;;;;;10135:48:66;10120:63;;;9791:234;9838:14;;;;;:::i;:::-;3228:4636:88;;;;;;;10049:53:66;13267:109:93;;-1:-1:-1;13267:109:93;3228:4636:88;13267:109:93;;;-1:-1:-1;13267:109:93;;3228:4636:88;;;;;9870:48:66;9866:149;3228:4636:88;;;9938:10:66;9866:149;9791:234;;9866:149;9993:7;;;;;;:::i;:::-;9866:149;9791:234;;3228:4636:88;;;;;;;:::i;:::-;-1:-1:-1;3228:4636:88;;;;;;;:::o;11486:272:93:-;;3228:4636:88;11452:22:66;11718:31:93;11486:272;3228:4636:88;;:::i;:::-;;;;:::i;:::-;;11452:22:66;;:::i;:::-;3228:4636:88;;:::i;:::-;;11718:12:93;3228:4636:88;;;;;11731:17:93;3228:4636:88;;;;;11731:17:93;;3228:4636:88;;11718:12:93;;:31;:::i;:::-;3228:4636:88;;;;;;;;;:::i;:::-;;;;;;11731:17:93;11672:79;;3228:4636:88;11486:272:93;:::o;6893:76:22:-;;;:::i;:::-;;;:::i;:::-;1949:1:26;-1:-1:-1;;;;;;;;;;;3228:4636:88;6893:76:22:o;3228:4636:88:-;;;;;;;:::i;:::-;-1:-1:-1;3228:4636:88;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;3228:4636:88;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3228:4636:88;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;6510:1274:85:-;6658:30;6510:1274;3228:4636:88;;:::i;:::-;;6658:30:85;3228:4636:88;;;6658:30:85;;;;;;:::i;:::-;6716:17;;3228:4636:88;6716:17:85;;3228:4636:88;-1:-1:-1;;;;;3228:4636:88;6716:54:85;;:179;;6510:1274;6699:259;;6973:9;6658:30;6988:33;;;6716:17;7030:3;6988:33;;3228:4636:88;;6984:44:85;;;;;7053:36;;;:50;:36;;:::i;:::-;3228:4636:88;-1:-1:-1;;;;;3228:4636:88;;;7053:50:85;;7049:119;;7186:73;7187:72;7222:36;;:33;;;:36;:::i;:::-;7187:72;:::i;:::-;7186:73;;3228:4636:88;7186:73:85;7182:140;;3228:4636:88;;6973:9:85;;7182:140;3228:4636:88;;-1:-1:-1;;;7286:21:85;;;;;7049:119;3228:4636:88;;-1:-1:-1;;;7130:23:85;;;;;6984:44;-1:-1:-1;7362:42:85;;-1:-1:-1;;7362:42:85;;;;6716:17;7413:3;7362:42;;3228:4636:88;;7358:53:85;;;;;7436:45;;;:59;:45;;:::i;:59::-;;7432:128;;7578:92;7579:91;7624:45;;:42;;;:45;:::i;:::-;7579:91;:::i;7578:92::-;7574:159;;3228:4636:88;;7347:9:85;;7574:159;3228:4636:88;;-1:-1:-1;;;7697:21:85;;;;;7432:128;3228:4636:88;;-1:-1:-1;;;7522:23:85;;;;;7358:53;;;;;;7760:17;6510:1274;:::o;6699:259::-;3228:4636:88;;-1:-1:-1;;;6927:20:85;;;;;6716:179;6791:33;6658:30;6791:33;;;3228:4636:88;6791:45:85;:103;6716:179;6791:103;6840:42;;;;;3228:4636:88;6840:54:85;6716:179;;4996:4226:63;;3228:4636:88;;;;-1:-1:-1;;3228:4636:88;4996:4226:63;5584:131;;;;;;;;;;;;5796:10;;5792:368;;6270:20;;;;6266:143;;6695:300;;;;3228:4636:88;-1:-1:-1;3228:4636:88;7214:31:63;;7259:375;;;8094:1;3228:4636:88;;8075:1:63;3228:4636:88;8074:21:63;3228:4636:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7259:375:63;;;;-1:-1:-1;7259:375:63;;;6695:300;;;;;;3228:4636:88;6695:300:63;;7259:375;7700:21;3228:4636:88;4996:4226:63;:::o;6266:143::-;6330:16;;3066:5;3228:4636:88;940:4:54;3060:42:63;6322:71;:::i;5792:368::-;6126:19;;;;;;;:::i;3228:4636:88:-;;;-1:-1:-1;;;3228:4636:88;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;3228:4636:88;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;11657:922:66;3228:4636:88;;11657:922:66;;;11864:7;;;;11936;11916:28;11936:7;;:::i;:::-;11916:28;13267:109:93;;;;;;13089:293;;11916:28:66;3228:4636:88;;;;;;;;;;;;12103:13:66;;;12099:89;;12251:14;;;;;12285:19;;;;3228:4636:88;;;;;;;;;;;;;;;;;12285:19:66;3228:4636:88;;12423:25:66;;:::o;12247:163::-;3228:4636:88;;;12343:52:66;3228:4636:88;12353:41:66;3228:4636:88;;:::i;:::-;;;;;;;;12353:41:66;-1:-1:-1;;;;;3228:4636:88;;12353:41:66;;;3228:4636:88;12343:52:66;:::i;:::-;12247:163;;12099:89;3228:4636:88;;-1:-1:-1;;;12143:30:66;;;;;11860:713;3228:4636:88;;12479:52:66;3228:4636:88;12489:41:66;3228:4636:88;;:::i;12489:41:66:-;-1:-1:-1;;;;;3228:4636:88;;12489:41:66;;;3228:4636:88;12343:52:66;:::i;12479:::-;11870:1;12545:17;;:::o;3595:153:63:-;;3721:5;;;3731;;3228:4636:88;;;;;;;;;3595:153:63;:::o;7084:141:22:-;3228:4636:88;-1:-1:-1;;;;;;;;;;;3228:4636:88;;;;7150:18:22;7146:73;;7084:141::o;7146:73::-;3228:4636:88;;-1:-1:-1;;;7191:17:22;;;;;1776:194:54;1829:135;;;;;;;;12929:433:66;;13112:10;;;;;;13344:11;;;12929:433;:::o;13105:230::-;13152:23;;;;;;;:::i;:::-;13267:109:93;;-1:-1:-1;13267:109:93;3228:4636:88;13267:109:93;;;-1:-1:-1;13267:109:93;;3228:4636:88;;;;;-1:-1:-1;13189:136:66;3228:4636:88;;;13248:10:66;13189:136;;13105:230;;;;13189:136;3228:4636:88;;13309:1:66;3228:4636:88;;;;;;13189:136:66;3228:4636:88;;:::i","linkReferences":{},"immutableReferences":{"56598":[{"start":2537,"length":32}],"56601":[{"start":4780,"length":32}],"57552":[{"start":2123,"length":32},{"start":4837,"length":32}],"57555":[{"start":1298,"length":32},{"start":10629,"length":32}],"57558":[{"start":1366,"length":32},{"start":7731,"length":32},{"start":7995,"length":32}],"57561":[{"start":1993,"length":32},{"start":7578,"length":32},{"start":8121,"length":32}],"60076":[{"start":3733,"length":32},{"start":6477,"length":32}],"60078":[{"start":3479,"length":32},{"start":6638,"length":32}],"60080":[{"start":4169,"length":32}],"61158":[{"start":1440,"length":32},{"start":4055,"length":32},{"start":5673,"length":32}]}},"methodIdentifiers":{"BASE_DELEGATOR_HINTS()":"79d89614","DEFAULT_ADMIN_ROLE()":"a217fddf","FACTORY()":"2dd31000","HOOK_GAS_LIMIT()":"ff54740f","HOOK_RESERVE()":"557cab44","HOOK_SET_ROLE()":"6679191e","NETWORK_LIMIT_SET_ROLE()":"7d24bb27","NETWORK_REGISTRY()":"c0cd7c3e","OPERATOR_NETWORK_OPT_IN_SERVICE()":"1a80e500","OPERATOR_NETWORK_SHARES_SET_ROLE()":"e78eb6ae","OPERATOR_VAULT_OPT_IN_SERVICE()":"128e5d82","OPT_IN_SERVICE_HINTS()":"9b656b22","TYPE()":"bb24fe8a","VAULT_FACTORY()":"103f2907","VAULT_HINTS()":"45e78fcb","VERSION()":"ffa1ad74","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","hook()":"7f5a7c7b","initialize(bytes)":"439fab91","maxNetworkLimit(bytes32)":"d15b740e","networkLimit(bytes32)":"3eb22c0f","networkLimitAt(bytes32,uint48,bytes)":"5d32a1c9","networkLimitHint(address,bytes32,uint48)":"da749d2b","networkLimitHintInternal(bytes32,uint48)":"197aa7ea","onSlash(bytes32,address,uint256,uint48,bytes)":"e49561ee","operatorNetworkShares(bytes32,address)":"42c53e33","operatorNetworkSharesAt(bytes32,address,uint48,bytes)":"1a7a7044","operatorNetworkSharesHint(address,bytes32,address,uint48)":"07f9d5fd","operatorNetworkSharesHintInternal(bytes32,address,uint48)":"987b3ee8","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","setHook(address)":"3dfd3873","setMaxNetworkLimit(uint96,uint256)":"23f752d5","setNetworkLimit(bytes32,uint256)":"02145348","setOperatorNetworkShares(bytes32,address,uint256)":"a33bc287","stake(bytes32,address)":"fd4d447c","stakeAt(bytes32,address,uint48,bytes)":"e02f6937","stakeHints(address,bytes32,address,uint48)":"25dc9708","staticDelegateCall(address,bytes)":"9f86fd85","supportsInterface(bytes4)":"01ffc9a7","totalOperatorNetworkShares(bytes32)":"c43dc03f","totalOperatorNetworkSharesAt(bytes32,uint48,bytes)":"8b3f10b0","totalOperatorNetworkSharesHint(address,bytes32,uint48)":"b549ef1f","totalOperatorNetworkSharesHintInternal(bytes32,uint48)":"ed4d89e5","vault()":"fbfa77cf"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"baseDelegatorHints\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"vaultHints\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"optInServiceHints\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadySet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CheckpointUnorderedInsertion\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DuplicateRoleHolder\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedsMaxNetworkLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExternalCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientHookGas\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingRoleHolders\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotNetwork\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotSlasher\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressRoleHolder\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"}],\"name\":\"OnSlash\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"hook\",\"type\":\"address\"}],\"name\":\"SetHook\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"SetMaxNetworkLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"SetNetworkLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"SetOperatorNetworkShares\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BASE_DELEGATOR_HINTS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HOOK_GAS_LIMIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HOOK_RESERVE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HOOK_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NETWORK_LIMIT_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NETWORK_REGISTRY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_NETWORK_OPT_IN_SERVICE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_NETWORK_SHARES_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_VAULT_OPT_IN_SERVICE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPT_IN_SERVICE_HINTS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TYPE\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VAULT_FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VAULT_HINTS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VERSION\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hook\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"}],\"name\":\"maxNetworkLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"}],\"name\":\"networkLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"networkLimitAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"networkLimitHint\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"networkLimitHintInternal\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"exists\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"hint\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"operatorNetworkShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"operatorNetworkSharesAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"operatorNetworkSharesHint\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"operatorNetworkSharesHintInternal\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"exists\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"hint\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"hook_\",\"type\":\"address\"}],\"name\":\"setHook\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint96\",\"name\":\"identifier\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"setMaxNetworkLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"setNetworkLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"setOperatorNetworkShares\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"stake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hints\",\"type\":\"bytes\"}],\"name\":\"stakeAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"stakeHints\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"staticDelegateCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"}],\"name\":\"totalOperatorNetworkShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"totalOperatorNetworkSharesAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"totalOperatorNetworkSharesHint\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"totalOperatorNetworkSharesHintInternal\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"exists\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"hint\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"CheckpointUnorderedInsertion()\":[{\"details\":\"A value was attempted to be inserted on a past checkpoint.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"OnSlash(bytes32,address,uint256,uint48)\":{\"params\":{\"amount\":\"amount of the collateral to be slashed\",\"captureTimestamp\":\"time point when the stake was captured\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"SetHook(address)\":{\"params\":{\"hook\":\"address of the hook\"}},\"SetMaxNetworkLimit(bytes32,uint256)\":{\"params\":{\"amount\":\"new maximum subnetwork's limit (how much stake the subnetwork is ready to get)\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"SetNetworkLimit(bytes32,uint256)\":{\"params\":{\"amount\":\"new subnetwork's limit (how much stake the vault curator is ready to give to the subnetwork)\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"SetOperatorNetworkShares(bytes32,address,uint256)\":{\"params\":{\"operator\":\"address of the operator\",\"shares\":\"new operator's shares inside the subnetwork (what percentage, which is equal to the shares divided by the total operators' shares, of the subnetwork's stake the vault curator is ready to give to the operator)\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}}},\"kind\":\"dev\",\"methods\":{\"VERSION()\":{\"details\":\"Must return 1 for this one.\",\"returns\":{\"_0\":\"version of the delegator\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize(bytes)\":{\"params\":{\"data\":\"some data to use\"}},\"networkLimit(bytes32)\":{\"params\":{\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"_0\":\"limit of the subnetwork\"}},\"networkLimitAt(bytes32,uint48,bytes)\":{\"params\":{\"hint\":\"hint for checkpoint index\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\",\"timestamp\":\"time point to get the subnetwork limit at\"},\"returns\":{\"_0\":\"limit of the subnetwork at the given timestamp\"}},\"onSlash(bytes32,address,uint256,uint48,bytes)\":{\"details\":\"Only the vault's slasher can call this function.\",\"params\":{\"amount\":\"amount of the collateral slashed\",\"captureTimestamp\":\"time point when the stake was captured\",\"data\":\"some additional data\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"operatorNetworkShares(bytes32,address)\":{\"params\":{\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"_0\":\"shares of the operator for the subnetwork\"}},\"operatorNetworkSharesAt(bytes32,address,uint48,bytes)\":{\"params\":{\"hint\":\"hint for checkpoint index\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\",\"timestamp\":\"time point to get the operator's shares at\"},\"returns\":{\"_0\":\"shares of the operator for the subnetwork at the given timestamp\"}},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"setHook(address)\":{\"details\":\"Only a HOOK_SET_ROLE holder can call this function. The hook can have arbitrary logic under certain functions, however, it doesn't affect the stake guarantees.\",\"params\":{\"hook\":\"address of the hook\"}},\"setMaxNetworkLimit(uint96,uint256)\":{\"details\":\"Only a network can call this function.\",\"params\":{\"amount\":\"new maximum subnetwork's limit\"}},\"setNetworkLimit(bytes32,uint256)\":{\"details\":\"Only a NETWORK_LIMIT_SET_ROLE holder can call this function.\",\"params\":{\"amount\":\"new limit of the subnetwork\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"setOperatorNetworkShares(bytes32,address,uint256)\":{\"details\":\"Only an OPERATOR_NETWORK_SHARES_SET_ROLE holder can call this function.\",\"params\":{\"operator\":\"address of the operator\",\"shares\":\"new shares of the operator for the subnetwork\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"stake(bytes32,address)\":{\"details\":\"Warning: this function is not safe to use for stake capturing, as it can change by the end of the block.\",\"params\":{\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"_0\":\"slashable stake until the end of the next epoch\"}},\"stakeAt(bytes32,address,uint48,bytes)\":{\"details\":\"Warning: it is not safe to use timestamp >= current one for the stake capturing, as it can change later.\",\"params\":{\"hints\":\"hints for the checkpoints' indexes\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\",\"timestamp\":\"time point to capture the stake at\"},\"returns\":{\"_0\":\"slashable stake at the given timestamp until the end of the consequent epoch\"}},\"staticDelegateCall(address,bytes)\":{\"details\":\"It allows to use this contract's storage on-chain.\",\"params\":{\"data\":\"data to make a delegatecall with\",\"target\":\"address of the contract to make a delegatecall to\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"totalOperatorNetworkShares(bytes32)\":{\"params\":{\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"_0\":\"total shares of the operators for the subnetwork\"}},\"totalOperatorNetworkSharesAt(bytes32,uint48,bytes)\":{\"params\":{\"hint\":\"hint for checkpoint index\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\",\"timestamp\":\"time point to get the total operators' shares at\"},\"returns\":{\"_0\":\"total shares of the operators for the subnetwork at the given timestamp\"}}},\"version\":1},\"userdoc\":{\"events\":{\"OnSlash(bytes32,address,uint256,uint48)\":{\"notice\":\"Emitted when a slash happens.\"},\"SetHook(address)\":{\"notice\":\"Emitted when a hook is set.\"},\"SetMaxNetworkLimit(bytes32,uint256)\":{\"notice\":\"Emitted when a subnetwork's maximum limit is set.\"},\"SetNetworkLimit(bytes32,uint256)\":{\"notice\":\"Emitted when a subnetwork's limit is set.\"},\"SetOperatorNetworkShares(bytes32,address,uint256)\":{\"notice\":\"Emitted when an operator's shares inside a subnetwork are set.\"}},\"kind\":\"user\",\"methods\":{\"FACTORY()\":{\"notice\":\"Get the factory's address.\"},\"HOOK_GAS_LIMIT()\":{\"notice\":\"Get a gas limit for the hook.\"},\"HOOK_RESERVE()\":{\"notice\":\"Get a reserve gas between the gas limit check and the hook's execution.\"},\"HOOK_SET_ROLE()\":{\"notice\":\"Get a hook setter's role.\"},\"NETWORK_LIMIT_SET_ROLE()\":{\"notice\":\"Get a subnetwork limit setter's role.\"},\"NETWORK_REGISTRY()\":{\"notice\":\"Get the network registry's address.\"},\"OPERATOR_NETWORK_OPT_IN_SERVICE()\":{\"notice\":\"Get the operator-network opt-in service's address.\"},\"OPERATOR_NETWORK_SHARES_SET_ROLE()\":{\"notice\":\"Get an operator-subnetwork shares setter's role.\"},\"OPERATOR_VAULT_OPT_IN_SERVICE()\":{\"notice\":\"Get the operator-vault opt-in service's address.\"},\"TYPE()\":{\"notice\":\"Get the entity's type.\"},\"VAULT_FACTORY()\":{\"notice\":\"Get the vault factory's address.\"},\"VERSION()\":{\"notice\":\"Get a version of the delegator (different versions mean different interfaces).\"},\"hook()\":{\"notice\":\"Get the hook's address.\"},\"initialize(bytes)\":{\"notice\":\"Initialize this entity contract by using a given data.\"},\"maxNetworkLimit(bytes32)\":{\"notice\":\"Get a particular subnetwork's maximum limit (meaning the subnetwork is not ready to get more as a stake).\"},\"networkLimit(bytes32)\":{\"notice\":\"Get a subnetwork's limit (how much stake the vault curator is ready to give to the subnetwork).\"},\"networkLimitAt(bytes32,uint48,bytes)\":{\"notice\":\"Get a subnetwork's limit at a given timestamp using a hint (how much stake the vault curator is ready to give to the subnetwork).\"},\"onSlash(bytes32,address,uint256,uint48,bytes)\":{\"notice\":\"Called when a slash happens.\"},\"operatorNetworkShares(bytes32,address)\":{\"notice\":\"Get an operator's shares for a subnetwork (what percentage, which is equal to the shares divided by the total operators' shares, of the subnetwork's stake the vault curator is ready to give to the operator).\"},\"operatorNetworkSharesAt(bytes32,address,uint48,bytes)\":{\"notice\":\"Get an operator's shares for a subnetwork at a given timestamp using a hint (what percentage, which is equal to the shares divided by the total operators' shares, of the subnetwork's stake the vault curator is ready to give to the operator).\"},\"setHook(address)\":{\"notice\":\"Set a new hook.\"},\"setMaxNetworkLimit(uint96,uint256)\":{\"notice\":\"Set a maximum limit for a subnetwork (how much stake the subnetwork is ready to get). identifier identifier of the subnetwork\"},\"setNetworkLimit(bytes32,uint256)\":{\"notice\":\"Set a subnetwork's limit (how much stake the vault curator is ready to give to the subnetwork).\"},\"setOperatorNetworkShares(bytes32,address,uint256)\":{\"notice\":\"Set an operator's shares for a subnetwork (what percentage, which is equal to the shares divided by the total operators' shares, of the subnetwork's stake the vault curator is ready to give to the operator).\"},\"stake(bytes32,address)\":{\"notice\":\"Get a stake that a given subnetwork will be able to slash for a certain operator until the end of the next epoch (if no cross-slashing and no slashings by the subnetwork).\"},\"stakeAt(bytes32,address,uint48,bytes)\":{\"notice\":\"Get a stake that a given subnetwork could be able to slash for a certain operator at a given timestamp until the end of the consequent epoch using hints (if no cross-slashing and no slashings by the subnetwork).\"},\"staticDelegateCall(address,bytes)\":{\"notice\":\"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data).\"},\"totalOperatorNetworkShares(bytes32)\":{\"notice\":\"Get a sum of operators' shares for a subnetwork.\"},\"totalOperatorNetworkSharesAt(bytes32,uint48,bytes)\":{\"notice\":\"Get a sum of operators' shares for a subnetwork at a given timestamp using a hint.\"},\"vault()\":{\"notice\":\"Get the vault's address.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/hints/DelegatorHints.sol\":\"NetworkRestakeDelegatorHints\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf\",\"dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89\",\"dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1\",\"dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol\":{\"keccak256\":\"0x4aaaf1c0737dd16e81f0d2b9833c549747a5ede6873bf1444bc72aa572d03e98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eada27d7668eebaea16c3b890aa1b38ffc53965292e26c96f7c44834623f4710\",\"dweb:/ipfs/QmVSWuLtxyCqNbLyY89ptxkvsk4CLLKDQYigEne5Qj8k1L\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x7d94fa0af099a2172eb01f9c8a8a443cbe7e0e43654841563e4e09968efdb549\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65e38fb76b6add407d4557753ae83dd1268e8261195dbe5c19a580d5ba6e4e9a\",\"dweb:/ipfs/QmTkGSJtaQrqjcyWM4AgemeEmKgtDydKPPVRajsUJRQSrK\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0\",\"dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x10eb97d047f8d84fe263a02bb4a656ac6674f6679d74532cc37546289e073a9d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3e41287d40b0c46982f1083d40d32de2761f009c5c51627fe79a7feb0ab1cf5c\",\"dweb:/ipfs/Qme7dbh6HX3ZvUJdbQAcVqXkmyXyfcLiUZRhhon3cU6K8p\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e\",\"dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/SignatureChecker.sol\":{\"keccak256\":\"0xbdc3bb48ccedb818cd75a6d74a16df55a822e9f6d3cc54c59f576f10aab67b5f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2284f25f2478f419d7781573b17a89d0e7c5589a865d55e2d6ed5163aee23aa8\",\"dweb:/ipfs/QmNsr2625APBQiNKpYnX5VcSnYgfUHR9Uzzp9pRXjoDqK7\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44\",\"dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6\",\"dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza\"]},\"src/contracts/common/Entity.sol\":{\"keccak256\":\"0x3d61a932995b8443381f3950542d388223a2c26dd5d29a3274dea3baa7388bd7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7cdf5f03ca72fd263fd32ff59c8d88ddca911ae83896a287d10772c1bbe9b138\",\"dweb:/ipfs/QmbP84r5BWT1Rn9AYTntWSf3xUMTTCohTZJFhbBhDXFoHa\"]},\"src/contracts/common/MigratableEntity.sol\":{\"keccak256\":\"0x303ad40a3de8fa808cc30a6fbd5998633f6a89b982e6db1fa981e0566ab445e7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://fa8fb92995ead02798e013190b87b84b44cc68668262f045c9b0b4783940e2bf\",\"dweb:/ipfs/QmV1uKGVLKwWisc714R8fCt71gXUQJpaKvdc6LQ8WtvMpL\"]},\"src/contracts/common/StaticDelegateCallable.sol\":{\"keccak256\":\"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764\",\"dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD\"]},\"src/contracts/delegator/BaseDelegator.sol\":{\"keccak256\":\"0x7c54d491fdd4415b764a9c8defa068e56d4c0c8c9419be0053a1d377669290e8\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://9238bfbad0f6eeb0dc7727724de14380f1980b395902269703d5e2ef07e52e10\",\"dweb:/ipfs/QmPJn1V4HNXcEghYvogGuSTF24dSQUPosR5qtsXcmNqRm3\"]},\"src/contracts/delegator/FullRestakeDelegator.sol\":{\"keccak256\":\"0x0a81c4f8e72914563a9cb771e93acf889c71ea36b7bec040e4eb562b199d5af1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6fc66b6ba02da77046a0bbbd1dd407a62c08f52e04486c9cbd2cb1cca3da555f\",\"dweb:/ipfs/QmZQivK1ZnMxfRQQ5aLpV9co5u55wQVNev5Rg1hzAqxhkE\"]},\"src/contracts/delegator/NetworkRestakeDelegator.sol\":{\"keccak256\":\"0xd3a8e6522f9c6fdcc2da837c9023afd6bdff2bce45a35590320c475519e3636d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://58b17a87f6554f08376f9ea7fedf486a4aa75801bf0ad8b23ff5a46959b6b7a3\",\"dweb:/ipfs/QmSTmNh67tYt8CmjVZb57r8N3qX5yeYdMApKPJm3qvQgQw\"]},\"src/contracts/delegator/OperatorNetworkSpecificDelegator.sol\":{\"keccak256\":\"0x031a10722b9ec49048f0952710401131290adb87e71caf294e864e7ac3b98a16\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://72428febc875134b2f29205e6f294634a1c22a7d5c78d6a9cb2f8196f107c9b5\",\"dweb:/ipfs/QmTPwXR6h5oytckmkLrHdKeEMdphJxceDhYUR4zvQeWAwY\"]},\"src/contracts/delegator/OperatorSpecificDelegator.sol\":{\"keccak256\":\"0x630ce62fa30b9f3349ab7a8cf8dbf041319febc6dd757be2f94d3d25944ed328\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c2ac59d47ce57d2a6819ae9833e1a618a371eccff93eb5ab367b201b01f42bfa\",\"dweb:/ipfs/QmdBpGMBivpNPv2WbH8vnCUy5xkVeaxQvGgqi33vKCz1kA\"]},\"src/contracts/hints/DelegatorHints.sol\":{\"keccak256\":\"0xd71e9102e99a25ee8b5435779f011a24558f56074aa2b16c18b623b57754ae97\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://29db5552e55dab51bea1ae40ba00ca674cb50fcb10997999a72a94527b6eb591\",\"dweb:/ipfs/QmQrYyTPx73ubNxMhYWJCkprCVFVtuTFcKaabYiKTe71tY\"]},\"src/contracts/hints/Hints.sol\":{\"keccak256\":\"0x8b565df1ae35993c097a9e642002782a8f451f6fd01809cad6bcd345bdf1b99c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://99a19adb01e350a92f534095b3078229df1f2f83077992d75d58d8684be45971\",\"dweb:/ipfs/QmbmwcuswVbzvwHQFTtrJG86oV98GnfxqYTb8cV8u1acox\"]},\"src/contracts/hints/OptInServiceHints.sol\":{\"keccak256\":\"0x95d9407900d27b9f4a1233b772aeed809c07b2dc5b31cfc9fa77ca26514c49e5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://a13a8877e312d7e6b8b85bde3668c5d84ff5ecc83f762cd573f2b7104c64eb42\",\"dweb:/ipfs/QmYV2J55acuGzCNnS3juABuUHY5U1xc8g8o9jwEyFFdeG5\"]},\"src/contracts/hints/VaultHints.sol\":{\"keccak256\":\"0xccb505b7159b769cc114d67b87c2de6b106557f667fc8f3780114baad5c3c442\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6d0c80a908fc16e96a8b5605a0bd53f9e89ad0ef0a738fbbae80ba4d3160749b\",\"dweb:/ipfs/QmXo5UtWoR8YmunqcbBU8rQMm1nvmvjNPoXcVrDhh4pEwR\"]},\"src/contracts/libraries/Checkpoints.sol\":{\"keccak256\":\"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609\",\"dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE\"]},\"src/contracts/libraries/ERC4626Math.sol\":{\"keccak256\":\"0x8441160513c1cbeb1c3b9ee077bcc7e7ce20006b52a77c8dd39ff0ef89699939\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://943f8cc3e26ddf649f465f40c909819f5c864717c4baa339e9e403b9374a4653\",\"dweb:/ipfs/QmXPxi1sUDsrGprZdUgCzoPEosaZMv9ZhygWQ1vAi1phAB\"]},\"src/contracts/libraries/Subnetwork.sol\":{\"keccak256\":\"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56\",\"dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32\"]},\"src/contracts/service/OptInService.sol\":{\"keccak256\":\"0x4e0932077f2686b7990e10d59deb2535334c0d09e52ef6e57c6ab09eca21c4b1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7c00d311032ed4a1743aca7475f3c86ce15cdfc2218108efc3731c03d34a5278\",\"dweb:/ipfs/QmUGGfVwVhaHr5kS4177yKKYiLYzi5qZpkEmvYxBZqazxf\"]},\"src/contracts/vault/Vault.sol\":{\"keccak256\":\"0x7ee6dbf060c45d6eba95315f4ac0b3b467dd9c4999b84c31d6f66d4d8b53a116\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://301948b8ea522db292aa2722ba42def3911dae95f0b376f7023c3fef470f8676\",\"dweb:/ipfs/QmSDbP2HdzhDAzstr8Zz5isEAcSkma8ABc5UwPsoazaumZ\"]},\"src/contracts/vault/VaultStorage.sol\":{\"keccak256\":\"0x57db25b127d77ea3472de53e3a4af3354399655b9268638b99ca5925fa364a56\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://aa763d9a6ec508ae3abfb8228b72b9fd9525279e5135d4962e79ff059feb1173\",\"dweb:/ipfs/QmcbDR6E9wyEpu6V2FkEC4hnWy47zXA9LSKJde6zSGd33Q\"]},\"src/interfaces/common/IEntity.sol\":{\"keccak256\":\"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b\",\"dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv\"]},\"src/interfaces/common/IMigratableEntity.sol\":{\"keccak256\":\"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c\",\"dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds\"]},\"src/interfaces/common/IRegistry.sol\":{\"keccak256\":\"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014\",\"dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK\"]},\"src/interfaces/common/IStaticDelegateCallable.sol\":{\"keccak256\":\"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516\",\"dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi\"]},\"src/interfaces/delegator/IBaseDelegator.sol\":{\"keccak256\":\"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2\",\"dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8\"]},\"src/interfaces/delegator/IDelegatorHook.sol\":{\"keccak256\":\"0xc51aa8d7d1f6c8043ee819b7aeb86da0e993912e1442098df897e299f01f9f46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://adddf5cb2ba282aeb576b26efb28640f865a1721cc9b6eee8b3ee0457a2c9780\",\"dweb:/ipfs/QmNYgAmnLRwWZbhTuQhZs9rx4zcme1df5mEepkrniorSoW\"]},\"src/interfaces/delegator/IFullRestakeDelegator.sol\":{\"keccak256\":\"0xa3c8cb2e45d4d8ce90e95263bea40c01dc400f05ad65bc29597d878606be5e7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://782cf5e201aa4cca037ebafd3807a68ff1cc721d5b8416a35244db0d0607369e\",\"dweb:/ipfs/QmQkJks6x7CKndeTPa9LxgTNygD5uEi7obhADhpq1Lsr9A\"]},\"src/interfaces/delegator/INetworkRestakeDelegator.sol\":{\"keccak256\":\"0xe7030fe30389a147fd710e3436ec346b4842695fd3e65a81b95375c9f1d633fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://739c7e66d301778054f5c90bee45ec9438f68afba8a03eaaac52064c73b115ad\",\"dweb:/ipfs/QmfZ2ytKcTykAc76nxhg8ikUXV8NdBpetqb8W4YWPcox1Z\"]},\"src/interfaces/delegator/IOperatorNetworkSpecificDelegator.sol\":{\"keccak256\":\"0x74b95e64d29769202d45dd277bb830f623ff3d41ce77b80ce3ee4e318a5c71ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e512b903aae5c1b8a028c6e3f4f6223b5cb5d704503cfa6bd37b5346868f5c20\",\"dweb:/ipfs/QmZim9YExsPWtyxyeui993HTKAEmrg8MUcSkZ77Gp2JcuZ\"]},\"src/interfaces/delegator/IOperatorSpecificDelegator.sol\":{\"keccak256\":\"0x72075cab585dc17240cc3e32bc99b92f0d5627ddd988fed680e3e1a52d5a01e4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7448bc90699409ae61d85216b5efc2143a37f0f73354be2aea993bc54afca441\",\"dweb:/ipfs/QmXE4gAxM8pHosZK8mcTcj17puBx484meDCcmrDePskGHZ\"]},\"src/interfaces/service/IOptInService.sol\":{\"keccak256\":\"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337\",\"dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24\"]},\"src/interfaces/slasher/IBaseSlasher.sol\":{\"keccak256\":\"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf\",\"dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx\"]},\"src/interfaces/vault/IVault.sol\":{\"keccak256\":\"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9\",\"dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R\"]},\"src/interfaces/vault/IVaultStorage.sol\":{\"keccak256\":\"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e\",\"dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"baseDelegatorHints","type":"address"},{"internalType":"address","name":"vaultHints","type":"address"},{"internalType":"address","name":"optInServiceHints","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"inputs":[],"type":"error","name":"AlreadySet"},{"inputs":[],"type":"error","name":"CheckpointUnorderedInsertion"},{"inputs":[],"type":"error","name":"DuplicateRoleHolder"},{"inputs":[],"type":"error","name":"ExceedsMaxNetworkLimit"},{"inputs":[],"type":"error","name":"ExternalCall"},{"inputs":[],"type":"error","name":"InsufficientHookGas"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"MissingRoleHolders"},{"inputs":[],"type":"error","name":"NotInitialized"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"NotNetwork"},{"inputs":[],"type":"error","name":"NotSlasher"},{"inputs":[],"type":"error","name":"NotVault"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintDowncast"},{"inputs":[],"type":"error","name":"ZeroAddressRoleHolder"},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint48","name":"captureTimestamp","type":"uint48","indexed":false}],"type":"event","name":"OnSlash","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[{"internalType":"address","name":"hook","type":"address","indexed":true}],"type":"event","name":"SetHook","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"SetMaxNetworkLimit","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"SetNetworkLimit","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false}],"type":"event","name":"SetOperatorNetworkShares","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"BASE_DELEGATOR_HINTS","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HOOK_GAS_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HOOK_RESERVE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HOOK_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"NETWORK_LIMIT_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"NETWORK_REGISTRY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_NETWORK_OPT_IN_SERVICE","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_NETWORK_SHARES_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_VAULT_OPT_IN_SERVICE","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPT_IN_SERVICE_HINTS","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"TYPE","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VAULT_FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VAULT_HINTS","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"VERSION","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"hook","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"}],"stateMutability":"view","type":"function","name":"maxNetworkLimit","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"}],"stateMutability":"view","type":"function","name":"networkLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"networkLimitAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"},{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"networkLimitHint","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"networkLimitHintInternal","outputs":[{"internalType":"bool","name":"exists","type":"bool"},{"internalType":"uint32","name":"hint","type":"uint32"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint48","name":"captureTimestamp","type":"uint48"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"onSlash"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"operatorNetworkShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"operatorNetworkSharesAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"},{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"operatorNetworkSharesHint","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"operatorNetworkSharesHintInternal","outputs":[{"internalType":"bool","name":"exists","type":"bool"},{"internalType":"uint32","name":"hint","type":"uint32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"address","name":"hook_","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setHook"},{"inputs":[{"internalType":"uint96","name":"identifier","type":"uint96"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setMaxNetworkLimit"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setNetworkLimit"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setOperatorNetworkShares"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"stake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hints","type":"bytes"}],"stateMutability":"view","type":"function","name":"stakeAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"},{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"stakeHints","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"staticDelegateCall"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"}],"stateMutability":"view","type":"function","name":"totalOperatorNetworkShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"totalOperatorNetworkSharesAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"},{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"totalOperatorNetworkSharesHint","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"totalOperatorNetworkSharesHintInternal","outputs":[{"internalType":"bool","name":"exists","type":"bool"},{"internalType":"uint32","name":"hint","type":"uint32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"vault","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"VERSION()":{"details":"Must return 1 for this one.","returns":{"_0":"version of the delegator"}},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"initialize(bytes)":{"params":{"data":"some data to use"}},"networkLimit(bytes32)":{"params":{"subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"_0":"limit of the subnetwork"}},"networkLimitAt(bytes32,uint48,bytes)":{"params":{"hint":"hint for checkpoint index","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)","timestamp":"time point to get the subnetwork limit at"},"returns":{"_0":"limit of the subnetwork at the given timestamp"}},"onSlash(bytes32,address,uint256,uint48,bytes)":{"details":"Only the vault's slasher can call this function.","params":{"amount":"amount of the collateral slashed","captureTimestamp":"time point when the stake was captured","data":"some additional data","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"}},"operatorNetworkShares(bytes32,address)":{"params":{"operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"_0":"shares of the operator for the subnetwork"}},"operatorNetworkSharesAt(bytes32,address,uint48,bytes)":{"params":{"hint":"hint for checkpoint index","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)","timestamp":"time point to get the operator's shares at"},"returns":{"_0":"shares of the operator for the subnetwork at the given timestamp"}},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"setHook(address)":{"details":"Only a HOOK_SET_ROLE holder can call this function. The hook can have arbitrary logic under certain functions, however, it doesn't affect the stake guarantees.","params":{"hook":"address of the hook"}},"setMaxNetworkLimit(uint96,uint256)":{"details":"Only a network can call this function.","params":{"amount":"new maximum subnetwork's limit"}},"setNetworkLimit(bytes32,uint256)":{"details":"Only a NETWORK_LIMIT_SET_ROLE holder can call this function.","params":{"amount":"new limit of the subnetwork","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"}},"setOperatorNetworkShares(bytes32,address,uint256)":{"details":"Only an OPERATOR_NETWORK_SHARES_SET_ROLE holder can call this function.","params":{"operator":"address of the operator","shares":"new shares of the operator for the subnetwork","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"}},"stake(bytes32,address)":{"details":"Warning: this function is not safe to use for stake capturing, as it can change by the end of the block.","params":{"operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"_0":"slashable stake until the end of the next epoch"}},"stakeAt(bytes32,address,uint48,bytes)":{"details":"Warning: it is not safe to use timestamp >= current one for the stake capturing, as it can change later.","params":{"hints":"hints for the checkpoints' indexes","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)","timestamp":"time point to capture the stake at"},"returns":{"_0":"slashable stake at the given timestamp until the end of the consequent epoch"}},"staticDelegateCall(address,bytes)":{"details":"It allows to use this contract's storage on-chain.","params":{"data":"data to make a delegatecall with","target":"address of the contract to make a delegatecall to"}},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"totalOperatorNetworkShares(bytes32)":{"params":{"subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"_0":"total shares of the operators for the subnetwork"}},"totalOperatorNetworkSharesAt(bytes32,uint48,bytes)":{"params":{"hint":"hint for checkpoint index","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)","timestamp":"time point to get the total operators' shares at"},"returns":{"_0":"total shares of the operators for the subnetwork at the given timestamp"}}},"version":1},"userdoc":{"kind":"user","methods":{"FACTORY()":{"notice":"Get the factory's address."},"HOOK_GAS_LIMIT()":{"notice":"Get a gas limit for the hook."},"HOOK_RESERVE()":{"notice":"Get a reserve gas between the gas limit check and the hook's execution."},"HOOK_SET_ROLE()":{"notice":"Get a hook setter's role."},"NETWORK_LIMIT_SET_ROLE()":{"notice":"Get a subnetwork limit setter's role."},"NETWORK_REGISTRY()":{"notice":"Get the network registry's address."},"OPERATOR_NETWORK_OPT_IN_SERVICE()":{"notice":"Get the operator-network opt-in service's address."},"OPERATOR_NETWORK_SHARES_SET_ROLE()":{"notice":"Get an operator-subnetwork shares setter's role."},"OPERATOR_VAULT_OPT_IN_SERVICE()":{"notice":"Get the operator-vault opt-in service's address."},"TYPE()":{"notice":"Get the entity's type."},"VAULT_FACTORY()":{"notice":"Get the vault factory's address."},"VERSION()":{"notice":"Get a version of the delegator (different versions mean different interfaces)."},"hook()":{"notice":"Get the hook's address."},"initialize(bytes)":{"notice":"Initialize this entity contract by using a given data."},"maxNetworkLimit(bytes32)":{"notice":"Get a particular subnetwork's maximum limit (meaning the subnetwork is not ready to get more as a stake)."},"networkLimit(bytes32)":{"notice":"Get a subnetwork's limit (how much stake the vault curator is ready to give to the subnetwork)."},"networkLimitAt(bytes32,uint48,bytes)":{"notice":"Get a subnetwork's limit at a given timestamp using a hint (how much stake the vault curator is ready to give to the subnetwork)."},"onSlash(bytes32,address,uint256,uint48,bytes)":{"notice":"Called when a slash happens."},"operatorNetworkShares(bytes32,address)":{"notice":"Get an operator's shares for a subnetwork (what percentage, which is equal to the shares divided by the total operators' shares, of the subnetwork's stake the vault curator is ready to give to the operator)."},"operatorNetworkSharesAt(bytes32,address,uint48,bytes)":{"notice":"Get an operator's shares for a subnetwork at a given timestamp using a hint (what percentage, which is equal to the shares divided by the total operators' shares, of the subnetwork's stake the vault curator is ready to give to the operator)."},"setHook(address)":{"notice":"Set a new hook."},"setMaxNetworkLimit(uint96,uint256)":{"notice":"Set a maximum limit for a subnetwork (how much stake the subnetwork is ready to get). identifier identifier of the subnetwork"},"setNetworkLimit(bytes32,uint256)":{"notice":"Set a subnetwork's limit (how much stake the vault curator is ready to give to the subnetwork)."},"setOperatorNetworkShares(bytes32,address,uint256)":{"notice":"Set an operator's shares for a subnetwork (what percentage, which is equal to the shares divided by the total operators' shares, of the subnetwork's stake the vault curator is ready to give to the operator)."},"stake(bytes32,address)":{"notice":"Get a stake that a given subnetwork will be able to slash for a certain operator until the end of the next epoch (if no cross-slashing and no slashings by the subnetwork)."},"stakeAt(bytes32,address,uint48,bytes)":{"notice":"Get a stake that a given subnetwork could be able to slash for a certain operator at a given timestamp until the end of the consequent epoch using hints (if no cross-slashing and no slashings by the subnetwork)."},"staticDelegateCall(address,bytes)":{"notice":"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data)."},"totalOperatorNetworkShares(bytes32)":{"notice":"Get a sum of operators' shares for a subnetwork."},"totalOperatorNetworkSharesAt(bytes32,uint48,bytes)":{"notice":"Get a sum of operators' shares for a subnetwork at a given timestamp using a hint."},"vault()":{"notice":"Get the vault's address."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/hints/DelegatorHints.sol":"NetworkRestakeDelegatorHints"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol":{"keccak256":"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866","urls":["bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf","dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab","urls":["bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89","dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606","urls":["bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1","dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol":{"keccak256":"0x4aaaf1c0737dd16e81f0d2b9833c549747a5ede6873bf1444bc72aa572d03e98","urls":["bzz-raw://eada27d7668eebaea16c3b890aa1b38ffc53965292e26c96f7c44834623f4710","dweb:/ipfs/QmVSWuLtxyCqNbLyY89ptxkvsk4CLLKDQYigEne5Qj8k1L"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol":{"keccak256":"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92","urls":["bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a","dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310","urls":["bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862","dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol":{"keccak256":"0x7d94fa0af099a2172eb01f9c8a8a443cbe7e0e43654841563e4e09968efdb549","urls":["bzz-raw://65e38fb76b6add407d4557753ae83dd1268e8261195dbe5c19a580d5ba6e4e9a","dweb:/ipfs/QmTkGSJtaQrqjcyWM4AgemeEmKgtDydKPPVRajsUJRQSrK"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed","urls":["bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0","dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84","urls":["bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9","dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol":{"keccak256":"0x10eb97d047f8d84fe263a02bb4a656ac6674f6679d74532cc37546289e073a9d","urls":["bzz-raw://3e41287d40b0c46982f1083d40d32de2761f009c5c51627fe79a7feb0ab1cf5c","dweb:/ipfs/Qme7dbh6HX3ZvUJdbQAcVqXkmyXyfcLiUZRhhon3cU6K8p"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575","urls":["bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e","dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/SignatureChecker.sol":{"keccak256":"0xbdc3bb48ccedb818cd75a6d74a16df55a822e9f6d3cc54c59f576f10aab67b5f","urls":["bzz-raw://2284f25f2478f419d7781573b17a89d0e7c5589a865d55e2d6ed5163aee23aa8","dweb:/ipfs/QmNsr2625APBQiNKpYnX5VcSnYgfUHR9Uzzp9pRXjoDqK7"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3","urls":["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03","dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol":{"keccak256":"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f","urls":["bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44","dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc","urls":["bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6","dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza"],"license":"MIT"},"src/contracts/common/Entity.sol":{"keccak256":"0x3d61a932995b8443381f3950542d388223a2c26dd5d29a3274dea3baa7388bd7","urls":["bzz-raw://7cdf5f03ca72fd263fd32ff59c8d88ddca911ae83896a287d10772c1bbe9b138","dweb:/ipfs/QmbP84r5BWT1Rn9AYTntWSf3xUMTTCohTZJFhbBhDXFoHa"],"license":"BUSL-1.1"},"src/contracts/common/MigratableEntity.sol":{"keccak256":"0x303ad40a3de8fa808cc30a6fbd5998633f6a89b982e6db1fa981e0566ab445e7","urls":["bzz-raw://fa8fb92995ead02798e013190b87b84b44cc68668262f045c9b0b4783940e2bf","dweb:/ipfs/QmV1uKGVLKwWisc714R8fCt71gXUQJpaKvdc6LQ8WtvMpL"],"license":"BUSL-1.1"},"src/contracts/common/StaticDelegateCallable.sol":{"keccak256":"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90","urls":["bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764","dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD"],"license":"BUSL-1.1"},"src/contracts/delegator/BaseDelegator.sol":{"keccak256":"0x7c54d491fdd4415b764a9c8defa068e56d4c0c8c9419be0053a1d377669290e8","urls":["bzz-raw://9238bfbad0f6eeb0dc7727724de14380f1980b395902269703d5e2ef07e52e10","dweb:/ipfs/QmPJn1V4HNXcEghYvogGuSTF24dSQUPosR5qtsXcmNqRm3"],"license":"BUSL-1.1"},"src/contracts/delegator/FullRestakeDelegator.sol":{"keccak256":"0x0a81c4f8e72914563a9cb771e93acf889c71ea36b7bec040e4eb562b199d5af1","urls":["bzz-raw://6fc66b6ba02da77046a0bbbd1dd407a62c08f52e04486c9cbd2cb1cca3da555f","dweb:/ipfs/QmZQivK1ZnMxfRQQ5aLpV9co5u55wQVNev5Rg1hzAqxhkE"],"license":"BUSL-1.1"},"src/contracts/delegator/NetworkRestakeDelegator.sol":{"keccak256":"0xd3a8e6522f9c6fdcc2da837c9023afd6bdff2bce45a35590320c475519e3636d","urls":["bzz-raw://58b17a87f6554f08376f9ea7fedf486a4aa75801bf0ad8b23ff5a46959b6b7a3","dweb:/ipfs/QmSTmNh67tYt8CmjVZb57r8N3qX5yeYdMApKPJm3qvQgQw"],"license":"BUSL-1.1"},"src/contracts/delegator/OperatorNetworkSpecificDelegator.sol":{"keccak256":"0x031a10722b9ec49048f0952710401131290adb87e71caf294e864e7ac3b98a16","urls":["bzz-raw://72428febc875134b2f29205e6f294634a1c22a7d5c78d6a9cb2f8196f107c9b5","dweb:/ipfs/QmTPwXR6h5oytckmkLrHdKeEMdphJxceDhYUR4zvQeWAwY"],"license":"BUSL-1.1"},"src/contracts/delegator/OperatorSpecificDelegator.sol":{"keccak256":"0x630ce62fa30b9f3349ab7a8cf8dbf041319febc6dd757be2f94d3d25944ed328","urls":["bzz-raw://c2ac59d47ce57d2a6819ae9833e1a618a371eccff93eb5ab367b201b01f42bfa","dweb:/ipfs/QmdBpGMBivpNPv2WbH8vnCUy5xkVeaxQvGgqi33vKCz1kA"],"license":"BUSL-1.1"},"src/contracts/hints/DelegatorHints.sol":{"keccak256":"0xd71e9102e99a25ee8b5435779f011a24558f56074aa2b16c18b623b57754ae97","urls":["bzz-raw://29db5552e55dab51bea1ae40ba00ca674cb50fcb10997999a72a94527b6eb591","dweb:/ipfs/QmQrYyTPx73ubNxMhYWJCkprCVFVtuTFcKaabYiKTe71tY"],"license":"BUSL-1.1"},"src/contracts/hints/Hints.sol":{"keccak256":"0x8b565df1ae35993c097a9e642002782a8f451f6fd01809cad6bcd345bdf1b99c","urls":["bzz-raw://99a19adb01e350a92f534095b3078229df1f2f83077992d75d58d8684be45971","dweb:/ipfs/QmbmwcuswVbzvwHQFTtrJG86oV98GnfxqYTb8cV8u1acox"],"license":"BUSL-1.1"},"src/contracts/hints/OptInServiceHints.sol":{"keccak256":"0x95d9407900d27b9f4a1233b772aeed809c07b2dc5b31cfc9fa77ca26514c49e5","urls":["bzz-raw://a13a8877e312d7e6b8b85bde3668c5d84ff5ecc83f762cd573f2b7104c64eb42","dweb:/ipfs/QmYV2J55acuGzCNnS3juABuUHY5U1xc8g8o9jwEyFFdeG5"],"license":"BUSL-1.1"},"src/contracts/hints/VaultHints.sol":{"keccak256":"0xccb505b7159b769cc114d67b87c2de6b106557f667fc8f3780114baad5c3c442","urls":["bzz-raw://6d0c80a908fc16e96a8b5605a0bd53f9e89ad0ef0a738fbbae80ba4d3160749b","dweb:/ipfs/QmXo5UtWoR8YmunqcbBU8rQMm1nvmvjNPoXcVrDhh4pEwR"],"license":"BUSL-1.1"},"src/contracts/libraries/Checkpoints.sol":{"keccak256":"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c","urls":["bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609","dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE"],"license":"MIT"},"src/contracts/libraries/ERC4626Math.sol":{"keccak256":"0x8441160513c1cbeb1c3b9ee077bcc7e7ce20006b52a77c8dd39ff0ef89699939","urls":["bzz-raw://943f8cc3e26ddf649f465f40c909819f5c864717c4baa339e9e403b9374a4653","dweb:/ipfs/QmXPxi1sUDsrGprZdUgCzoPEosaZMv9ZhygWQ1vAi1phAB"],"license":"MIT"},"src/contracts/libraries/Subnetwork.sol":{"keccak256":"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe","urls":["bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56","dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32"],"license":"MIT"},"src/contracts/service/OptInService.sol":{"keccak256":"0x4e0932077f2686b7990e10d59deb2535334c0d09e52ef6e57c6ab09eca21c4b1","urls":["bzz-raw://7c00d311032ed4a1743aca7475f3c86ce15cdfc2218108efc3731c03d34a5278","dweb:/ipfs/QmUGGfVwVhaHr5kS4177yKKYiLYzi5qZpkEmvYxBZqazxf"],"license":"BUSL-1.1"},"src/contracts/vault/Vault.sol":{"keccak256":"0x7ee6dbf060c45d6eba95315f4ac0b3b467dd9c4999b84c31d6f66d4d8b53a116","urls":["bzz-raw://301948b8ea522db292aa2722ba42def3911dae95f0b376f7023c3fef470f8676","dweb:/ipfs/QmSDbP2HdzhDAzstr8Zz5isEAcSkma8ABc5UwPsoazaumZ"],"license":"BUSL-1.1"},"src/contracts/vault/VaultStorage.sol":{"keccak256":"0x57db25b127d77ea3472de53e3a4af3354399655b9268638b99ca5925fa364a56","urls":["bzz-raw://aa763d9a6ec508ae3abfb8228b72b9fd9525279e5135d4962e79ff059feb1173","dweb:/ipfs/QmcbDR6E9wyEpu6V2FkEC4hnWy47zXA9LSKJde6zSGd33Q"],"license":"BUSL-1.1"},"src/interfaces/common/IEntity.sol":{"keccak256":"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21","urls":["bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b","dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv"],"license":"MIT"},"src/interfaces/common/IMigratableEntity.sol":{"keccak256":"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4","urls":["bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c","dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds"],"license":"MIT"},"src/interfaces/common/IRegistry.sol":{"keccak256":"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb","urls":["bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014","dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK"],"license":"MIT"},"src/interfaces/common/IStaticDelegateCallable.sol":{"keccak256":"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5","urls":["bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516","dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi"],"license":"MIT"},"src/interfaces/delegator/IBaseDelegator.sol":{"keccak256":"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee","urls":["bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2","dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8"],"license":"MIT"},"src/interfaces/delegator/IDelegatorHook.sol":{"keccak256":"0xc51aa8d7d1f6c8043ee819b7aeb86da0e993912e1442098df897e299f01f9f46","urls":["bzz-raw://adddf5cb2ba282aeb576b26efb28640f865a1721cc9b6eee8b3ee0457a2c9780","dweb:/ipfs/QmNYgAmnLRwWZbhTuQhZs9rx4zcme1df5mEepkrniorSoW"],"license":"MIT"},"src/interfaces/delegator/IFullRestakeDelegator.sol":{"keccak256":"0xa3c8cb2e45d4d8ce90e95263bea40c01dc400f05ad65bc29597d878606be5e7d","urls":["bzz-raw://782cf5e201aa4cca037ebafd3807a68ff1cc721d5b8416a35244db0d0607369e","dweb:/ipfs/QmQkJks6x7CKndeTPa9LxgTNygD5uEi7obhADhpq1Lsr9A"],"license":"MIT"},"src/interfaces/delegator/INetworkRestakeDelegator.sol":{"keccak256":"0xe7030fe30389a147fd710e3436ec346b4842695fd3e65a81b95375c9f1d633fc","urls":["bzz-raw://739c7e66d301778054f5c90bee45ec9438f68afba8a03eaaac52064c73b115ad","dweb:/ipfs/QmfZ2ytKcTykAc76nxhg8ikUXV8NdBpetqb8W4YWPcox1Z"],"license":"MIT"},"src/interfaces/delegator/IOperatorNetworkSpecificDelegator.sol":{"keccak256":"0x74b95e64d29769202d45dd277bb830f623ff3d41ce77b80ce3ee4e318a5c71ec","urls":["bzz-raw://e512b903aae5c1b8a028c6e3f4f6223b5cb5d704503cfa6bd37b5346868f5c20","dweb:/ipfs/QmZim9YExsPWtyxyeui993HTKAEmrg8MUcSkZ77Gp2JcuZ"],"license":"MIT"},"src/interfaces/delegator/IOperatorSpecificDelegator.sol":{"keccak256":"0x72075cab585dc17240cc3e32bc99b92f0d5627ddd988fed680e3e1a52d5a01e4","urls":["bzz-raw://7448bc90699409ae61d85216b5efc2143a37f0f73354be2aea993bc54afca441","dweb:/ipfs/QmXE4gAxM8pHosZK8mcTcj17puBx484meDCcmrDePskGHZ"],"license":"MIT"},"src/interfaces/service/IOptInService.sol":{"keccak256":"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a","urls":["bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337","dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24"],"license":"MIT"},"src/interfaces/slasher/IBaseSlasher.sol":{"keccak256":"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404","urls":["bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf","dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx"],"license":"MIT"},"src/interfaces/vault/IVault.sol":{"keccak256":"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235","urls":["bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9","dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R"],"license":"MIT"},"src/interfaces/vault/IVaultStorage.sol":{"keccak256":"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22","urls":["bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e","dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6"],"license":"MIT"}},"version":1},"id":88} \ No newline at end of file diff --git a/out/DelegatorHints.sol/OperatorNetworkSpecificDelegatorHints.json b/out/DelegatorHints.sol/OperatorNetworkSpecificDelegatorHints.json index 1883f667..6a199848 100644 --- a/out/DelegatorHints.sol/OperatorNetworkSpecificDelegatorHints.json +++ b/out/DelegatorHints.sol/OperatorNetworkSpecificDelegatorHints.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"baseDelegatorHints","type":"address","internalType":"address"},{"name":"vaultHints","type":"address","internalType":"address"},{"name":"optInServiceHints","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"BASE_DELEGATOR_HINTS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"HOOK_GAS_LIMIT","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"HOOK_RESERVE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"HOOK_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"NETWORK_REGISTRY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_NETWORK_OPT_IN_SERVICE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_REGISTRY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_VAULT_OPT_IN_SERVICE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"OPT_IN_SERVICE_HINTS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"TYPE","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"VAULT_FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"VAULT_HINTS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"VERSION","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"pure"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"hook","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"maxNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"maxNetworkLimitAt","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"maxNetworkLimitHint","inputs":[{"name":"delegator","type":"address","internalType":"address"},{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"maxNetworkLimitHintInternal","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"exists","type":"bool","internalType":"bool"},{"name":"hint","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"network","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"onSlash","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","internalType":"uint48"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"operator","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setHook","inputs":[{"name":"hook_","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMaxNetworkLimit","inputs":[{"name":"identifier","type":"uint96","internalType":"uint96"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stake","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"stakeAt","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hints","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"stakeHints","inputs":[{"name":"delegator","type":"address","internalType":"address"},{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"staticDelegateCall","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"vault","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OnSlash","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","indexed":false,"internalType":"uint48"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SetHook","inputs":[{"name":"hook","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SetMaxNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"AlreadySet","inputs":[]},{"type":"error","name":"CheckpointUnorderedInsertion","inputs":[]},{"type":"error","name":"ExternalCall","inputs":[]},{"type":"error","name":"InsufficientHookGas","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"InvalidNetwork","inputs":[]},{"type":"error","name":"NotInitialized","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"NotNetwork","inputs":[]},{"type":"error","name":"NotOperator","inputs":[]},{"type":"error","name":"NotSlasher","inputs":[]},{"type":"error","name":"NotVault","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x6101e0346101dc57601f612f7538819003918201601f19168301916001600160401b0391828411858510176101e05781606092869260409687528339810103126101dc5761004c836101f4565b926100648361005d602084016101f4565b92016101f4565b91306080527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff82871c166101cb578080831603610187575b5050505f60a0525f60c0525f60e052610100935f8552610120935f85526101405f8152610160915f83526101809384526101a09485526101c09586525195612d6c9788610209893960805188610e71015260a0518861062b015260c05188610dee015260e0518881816103dd01528181610e2701526127ae0152518781816102d30152611fd201525186818161031701528181611841015261197001525185818161035b015281816117a801526119ee015251848181610c1b0152612827015251838181610baf0152611369015251828181610ac5015261140a01525181610cf20152f35b6001600160401b0319909116811790915583519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80806100a2565b855163f92ee8a960e01b8152600490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101dc5756fe60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a714610264578063103f29071461025f578063128e5d821461025a5780631a80e5001461025557806323f752d514610250578063248a9ca31461024b57806325dc9708146102465780632dd31000146102415780632f2ff15d1461023c57806336568abe146102375780633dfd387314610232578063437224a31461022d578063439fab911461022857806345e78fcb14610223578063557cab441461021e578063570ca735146102195780636679191e146102145780636739afca1461020f57806379d896141461020a5780637f5a7c7b1461020557806383ce03221461020057806391d14854146101fb578063991d1162146101f65780639b656b22146101f15780639f86fd85146101ec578063a217fddf146101e7578063bb24fe8a146101e2578063c0cd7c3e146101dd578063d0f1f901146101d8578063d15b740e146101d3578063d547741f146101ce578063e02f6937146101c9578063e49561ee146101c4578063fbfa77cf146101bf578063fd4d447c146101ba578063ff54740f146101b55763ffa1ad74146101b0575f80fd5b611207565b6111ea565b6111c0565b611199565b610fae565b610f59565b610f0d565b610ee3565b610e56565b610e12565b610dcf565b610db5565b610d21565b610cdd565b610ca8565b610c4a565b610c06565b610bde565b610b9a565b610b72565b610b38565b610b10565b610af4565b610ab0565b610978565b6108f2565b6106f1565b6106a6565b61065a565b610616565b6105bd565b610510565b61038a565b610346565b610302565b6102be565b346102ba5760203660031901126102ba5760043563ffffffff60e01b81168091036102ba57602090637965db0b60e01b81149081156102a9575b506040519015158152f35b6301ffc9a760e01b1490505f61029e565b5f80fd5b346102ba575f3660031901126102ba576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102ba575f3660031901126102ba576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102ba575f3660031901126102ba576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102ba5760403660031901126102ba576004356001600160601b03811681036102ba57602435906103ba611a63565b6040516302910f8b60e31b81523360048201526020816024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa90811561050b575f916104dc575b50156104ca576001600160601b03166bffffffffffffffffffffffff193360601b16179080610444835f52600260205260405f2090565b54146104b85761049d817fc67e7929681aa1bccd63f52b3799bf5805f3009f197db6fdf584b14f7fbf608c92610482855f52600260205260405f2090565b5561048d8185611a92565b6040519081529081906020820190565b0390a26104b660015f80516020612cf783398151915255565b005b60405163a741a04560e01b8152600490fd5b6040516323d53b9760e21b8152600490fd5b6104fe915060203d602011610504575b6104f68183610854565b81019061122f565b5f61040d565b503d6104ec565b611246565b346102ba5760203660031901126102ba576004355f525f80516020612cd78339815191526020526020600160405f200154604051908152f35b6001600160a01b038116036102ba57565b6064359065ffffffffffff821682036102ba57565b6024359065ffffffffffff821682036102ba57565b6044359065ffffffffffff821682036102ba57565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b346102ba5760803660031901126102ba576106126105fe6004356105e081610549565b6044356105ec81610549565b6105f461055a565b9160243590611320565b604051918291602083526020830190610599565b0390f35b346102ba575f3660031901126102ba576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102ba5760403660031901126102ba576104b660243560043561067d82610549565b805f525f80516020612cd78339815191526020526106a1600160405f200154611bd4565b611d85565b346102ba5760403660031901126102ba576024356106c381610549565b336001600160a01b038216036106df576104b690600435611dbb565b60405163334bd91960e11b8152600490fd5b346102ba5760203660031901126102ba5760043561070e81610549565b610716611a63565b335f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c60205260409020547fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c9060ff16156107cc57506001546001600160a01b0391821691811682146104b8576001600160a01b03191681176001557f5bbb1d3ebb6a3ad2a0f17ff35e579a83af60604d1d3c2a4c83c62adecadf666d5f80a260015f80516020612cf783398151915255005b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b0382111761081957604052565b6107ea565b606081019081106001600160401b0382111761081957604052565b608081019081106001600160401b0382111761081957604052565b90601f801991011681019081106001600160401b0382111761081957604052565b604051906108828261081e565b565b60405190610882826107fe565b6001600160401b03811161081957601f01601f191660200190565b81601f820112156102ba578035906108c382610891565b926108d16040519485610854565b828452602083830101116102ba57815f926020809301838601378301015290565b346102ba5760603660031901126102ba5761090b61056f565b6044356001600160401b0381116102ba576020916109306109439236906004016108ac565b906004355f526003845260405f20611e84565b604051908152f35b9181601f840112156102ba578235916001600160401b0383116102ba57602083818601950101116102ba57565b346102ba5760203660031901126102ba576001600160401b036004358181116102ba576109a990369060040161094b565b5f80516020612d17833981519152549260ff8460401c1615931680159081610aa8575b6001149081610a9e575b159081610a95575b50610a83575f80516020612d17833981519152805467ffffffffffffffff19166001179055610a119183610a5f57611f9d565b610a1757005b5f80516020612d17833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f80516020612d17833981519152805460ff60401b1916600160401b179055611f9d565b60405163f92ee8a960e01b8152600490fd5b9050155f6109de565b303b1591506109d6565b8491506109cc565b346102ba575f3660031901126102ba576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102ba575f3660031901126102ba576020604051614e208152f35b346102ba575f3660031901126102ba576005546040516001600160a01b039091168152602090f35b346102ba575f3660031901126102ba5760206040517fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c8152f35b346102ba575f3660031901126102ba576004546040516001600160a01b039091168152602090f35b346102ba575f3660031901126102ba576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102ba575f3660031901126102ba576001546040516001600160a01b039091168152602090f35b346102ba575f3660031901126102ba576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102ba5760403660031901126102ba57602060ff610c9c602435610c6e81610549565b6004355f525f80516020612cd7833981519152845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b346102ba5760603660031901126102ba576106126105fe600435610ccb81610549565b610cd3610584565b906024359061154e565b346102ba575f3660031901126102ba576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102ba5760403660031901126102ba57600435610d3e81610549565b6024356001600160401b0381116102ba575f91610d608392369060040161094b565b90816040519283928337810184815203915af4610dad610d7e611647565b91610d9f604051938492151560208401526040808401526060830190610599565b03601f198101835282610854565b805190602001fd5b346102ba575f3660031901126102ba5760206040515f8152f35b346102ba575f3660031901126102ba5760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102ba575f3660031901126102ba576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102ba5760403660031901126102ba57610e6f61056f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610ed15763ffffffff610ebc6040926004355f526003602052835f2061215c565b91505083929192519215158352166020820152f35b604051637ca475e560e11b8152600490fd5b346102ba5760203660031901126102ba576004355f526002602052602060405f2054604051908152f35b346102ba5760403660031901126102ba576104b6602435600435610f3082610549565b805f525f80516020612cd7833981519152602052610f54600160405f200154611bd4565b611dbb565b346102ba5760803660031901126102ba57602435610f7681610549565b610f7e610584565b90606435906001600160401b0382116102ba57602092610fa56109439336906004016108ac565b91600435611732565b346102ba5760a03660031901126102ba57602435600435610fce82610549565b60443591610fda61055a565b90608435906001600160401b0382116102ba57610ffc600492369084016108ac565b611004611a63565b5f546020906110299061101d906001600160a01b031681565b6001600160a01b031690565b60405163b134427160e01b815294859182905afa92831561050b575f93611168575b506001600160a01b039283163303611156576001546001600160a01b03168381166110cb575b50506040805195865265ffffffffffff909316602086015216927f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed91819081015b0390a36104b660015f80516020612cf783398151915255565b909360405194611102866110f4602082019363724ab0f760e11b8552858c898d602487016118bc565b03601f198101885287610854565b62042e305a10611144575f6110b2938192827f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed9951926203d090f15093611071565b604051638072475160e01b8152600490fd5b60405163dabc4ad960e01b8152600490fd5b61118b91935060203d602011611192575b6111838183610854565b8101906112bc565b915f61104b565b503d611179565b346102ba575f3660031901126102ba575f546040516001600160a01b039091168152602090f35b346102ba5760403660031901126102ba5760206109436024356111e281610549565b600435611939565b346102ba575f3660031901126102ba5760206040516203d0908152f35b346102ba575f3660031901126102ba57602060405160018152f35b519081151582036102ba57565b908160209103126102ba5761124390611222565b90565b6040513d5f823e3d90fd5b81601f820112156102ba5780519061126882610891565b926112766040519485610854565b828452602083830101116102ba57815f9260208093018386015e8301015290565b906020828203126102ba5781516001600160401b0381116102ba576112439201611251565b908160209103126102ba575161124381610549565b9061124391602081526112f08251606060208401526080830190610599565b9060606040611310602086015194601f1995868683030184870152610599565b9401519282850301910152610599565b604051630df8851f60e11b81526001600160a01b03828116600483015260248201849052938416604482015265ffffffffffff8516606482015260609594909391925f856084817f000000000000000000000000000000000000000000000000000000000000000087165afa94851561050b575f956114ea575b5060405163fbfa77cf60e01b81526020816004818888165afa90811561050b57611406945f92859284916114cb575b5060405163192c0ff760e21b81526001600160a01b03909116600482015265ffffffffffff90921660248301529094859190829081906044820190565b03917f0000000000000000000000000000000000000000000000000000000000000000165afa92831561050b575f936114a5575b50611445929361154e565b9082511580159061149b575b8015611491575b61146157505050565b610d9f939450906112439291611475610875565b92835260208301526040820152604051928391602083016112d1565b5081511515611458565b5080511515611451565b61144593506114c5903d805f833e6114bd8183610854565b810190611297565b9261143a565b6114e4915060203d602011611192576111838183610854565b5f6113c9565b6114ff9195503d805f833e6114bd8183610854565b935f61139a565b9061124392915f52600360205260405f20611e84565b519063ffffffff821682036102ba57565b91908260409103126102ba57611243602061154784611222565b930161151c565b92915f8060609565ffffffffffff6040519460209663d0f1f90160e01b8888015260248701521660448501526044845261158784610839565b60405193846115b487820192639f86fd8560e01b8452306024840152604060448401526064830190610599565b03946115c8601f1996878101835282610854565b51915afa506115e66115d8611647565b8380825183010191016120db565b9015611639578083806115fe9351830101910161152d565b929061160957505050565b6112439293945061162d604051948592830191909163ffffffff6020820193169052565b03908101835282610854565b809150519182156102ba5701fd5b3d15611671573d9061165882610891565b916116666040519384610854565b82523d5f602084013e565b606090565b60405190611683826107fe565b60606020838281520152565b906020828203126102ba5781516001600160401b03928382116102ba5701906040828203126102ba57604051926116c5846107fe565b82518181116102ba57826116da918501611251565b845260208301519081116102ba576116f29201611251565b602082015290565b6001600160a01b0391821681529116602082015265ffffffffffff909116604082015260806060820181905261124392910190610599565b9261174290929192828486612335565b92909361174d611676565b938051806118a0575b5050841593841561180a575b8415611779575b505050506117745790565b505f90565b6020809495506117a4910151604051958694859463530e1d4360e01b865260601c90600486016116fa565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561050b575f916117eb575b50155f808080611769565b611804915060203d602011610504576104f68183610854565b5f6117e0565b5f549094506001600160a01b031660208486519261183d604051948593849363530e1d4360e01b855289600486016116fa565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561050b575f91611881575b501593611762565b61189a915060203d602011610504576104f68183610854565b5f611879565b6118b492955060208091830101910161168f565b925f80611756565b919360a093611243969565ffffffffffff938552600180871b0316602085015260408401521660608201528160808201520190610599565b634e487b7160e01b5f52601160045260245ffd5b8115611912570490565b634e487b7160e01b5f52601260045260245ffd5b906001820180921161193457565b6118f4565b5f546040516308834cb560e21b8082526001600160a01b0385811660048401529283166024830152929392602092909183816044817f000000000000000000000000000000000000000000000000000000000000000086165afa90811561050b575f91611a46575b50159182156119c2575b505090506119bc5761124391612454565b50505f90565b6040519081526001600160a01b0385166004820152606086901c602482015291508290829060449082907f0000000000000000000000000000000000000000000000000000000000000000165afa91821561050b575f92611a29575b505015805f806119ab565b611a3f9250803d10610504576104f68183610854565b5f80611a1e565b611a5d9150843d8611610504576104f68183610854565b5f6119a1565b5f80516020612cf78339815191526002815414611a805760029055565b604051633ee5aeb560e01b8152600490fd5b6004546001600160a01b0316606082901c03611bc2575f52600360205260405f209065ffffffffffff91824211611ba357824216926001820191825415611b95575b611add81612a78565b509590845493835480155f14611b7657505f975b6001600160d01b0398808a1615611b7057611b0c9088612133565b50505b82611b64575b505015611b4e575050610882935090611b30611b3692611e61565b90612133565b90919082549060031b91821b915f19901b1916179055565b61088295611b5d931691612b65565b5050612543565b16821490505f80611b15565b50611b0f565b5f1990808281011161193457855f5260205f2001015460301c97611af1565b611b9e83612516565b611ad4565b6040516306dfcc6560e41b815260306004820152426024820152604490fd5b6040516386eab41b60e01b8152600490fd5b5f8181525f80516020612cd78339815191526020908152604080832033845290915290205460ff16156107cc5750565b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260409020545f80516020612cd78339815191529060ff166119bc575f808052602091825260408082206001600160a01b038516835290925220805460ff1916600117905533906001600160a01b03165f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b6001600160a01b0381165f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c602052604090207fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c905f80516020612cd78339815191529060ff905b5416611d7e575f828152602091825260408082206001600160a01b038616835290925220805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b5050505f90565b5f8181525f80516020612cd7833981519152602081815260408084206001600160a01b038716855290915290912060ff90611d1a565b5f8181525f80516020612cd7833981519152602081815260408084206001600160a01b03871685529091529091205460ff1615611d7e575f828152602091825260408082206001600160a01b038616835290925220805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b908160209103126102ba576112439061151c565b5f1981019190821161193457565b90600163ffffffff8093160191821161193457565b91805115611f5d5780602080611e9f93518301019101611e4d565b91611eaa8382612636565b92611ebb845165ffffffffffff1690565b9065ffffffffffff8085169216828114611f515782119182611ef1575b5050611ee8576112439250612566565b50506020015190565b909150611efe8354611e61565b63ffffffff831614918215611f17575b50505f80611ed8565b611f49919250611f32611f2c611f3e92611e6f565b85612636565b5165ffffffffffff1690565b65ffffffffffff1690565b115f80611f0e565b50505050506020015190565b5061124391612566565b9190916040818403126102ba578035611f7f81610549565b9260208201356001600160401b0381116102ba5761124392016108ac565b611fa991810190611f67565b6040516302910f8b60e31b81526001600160a01b039283166004820181905291906020816024817f000000000000000000000000000000000000000000000000000000000000000088165afa90811561050b575f916120bc575b50156120aa5761203e6040916120396120849461201e61269e565b60018060a01b03166001600160601b0360a01b5f5416175f55565b612761565b6020810151600180546001600160a01b0319166001600160a01b0390921691909117905580516001600160a01b031684811661209a575b5001516001600160a01b031690565b90811661208e5750565b61209790611caf565b50565b6120a390611c04565b505f612075565b6040516362df054560e01b8152600490fd5b6120d5915060203d602011610504576104f68183610854565b5f612003565b9190916040818403126102ba576120f181611222565b9260208201516001600160401b0381116102ba576112439201611251565b9060405161211c816107fe565b915465ffffffffffff8116835260301c6020830152565b8054821015612148575f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b91908254905f829160058411612204575b612178935085612a0f565b9081156121f8576121f16121e86121e26121d86121aa6121a561219a88611e61565b895f5260205f200190565b61210f565b9660016121d160206121c28b5165ffffffffffff1690565b9a01516001600160d01b031690565b9101612133565b90549060031b1c90565b93611e61565b63ffffffff1690565b6001939291565b5f925082915081908190565b919261220f816128dc565b81039081116119345761217893865f52612238611f3e8360205f200165ffffffffffff90541690565b65ffffffffffff8516101561224e57509161216d565b92915061225a90611926565b9061216d565b6040519061226d8261081e565b60606040838281528260208201520152565b906020828203126102ba5781516001600160401b03928382116102ba5701906060828203126102ba57604051926122b58461081e565b82518181116102ba57826122ca918501611251565b845260208301518181116102ba57826122e4918501611251565b602085015260408301519081116102ba576122ff9201611251565b604082015290565b908160209103126102ba575190565b60409065ffffffffffff61124394931681528160208201520190610599565b90939293612341612260565b94805180612438575b5050600454606083901c6001600160a01b0391821614801592919061241d575b5050612415575f546123b092919060209061238f9061101d906001600160a01b031681565b8187015190604051808097819463810da75d60e01b83528860048401612316565b03915afa90811561050b576123dd935f926123e2575b506123d79192604087015191611506565b90612a66565b915190565b6123d792506124089060203d60201161240e575b6124008183610854565b810190612307565b916123c6565b503d6123f6565b505090515f91565b60055481166001600160a01b03169116141590505f8061236a565b61244c92965060208091830101910161227f565b935f8061234a565b6004549091606083901c6001600160a01b0392831614801592906124fb575b5050611774575f54600491906020906124969061101d906001600160a01b031681565b60405163bd49c35f60e01b815293849182905afa90811561050b57611243925f926124d6575b506124cf905f52600260205260405f2090565b5490612a66565b6124cf9192506124f49060203d60201161240e576124008183610854565b91906124bc565b60055481166001600160a01b03169116141590505f80612473565b8054600160401b8110156108195761253391600182018155612133565b8154905f199060031b1b19169055565b90815491600160401b8310156108195782611b3691600161088295018155612133565b908154905f8291600584116125d0575b612581935084612c7f565b806125a957505f905b6001600160d01b038216156119bc576112439160016121d89201612133565b6125c36125b86125ca92611e61565b835f5260205f200190565b5460301c90565b9061258a565b91926125db816128dc565b81039081116119345761258193855f5265ffffffffffff808360205f20015416908516105f1461260c575091612576565b92915061261890611926565b90612576565b6040519061262b826107fe565b5f6020838281520152565b9061265f6126596126809261264961261e565b5061265261261e565b5084612133565b5061210f565b91600165ffffffffffff845116936020828060d01b03910151169101612133565b90549060405192612690846107fe565b835260031b1c602082015290565b6126a6612ac7565b6126ae612ac7565b60015f80516020612cf783398151915255565b604051906126ce8261081e565b5f6040838281528260208201520152565b8091039060a082126102ba576060604051926126fa8461081e565b126102ba5760809060405161270e8161081e565b815161271981610549565b8152602082015161272981610549565b6020820152604082015161273c81610549565b60408201528352606081015161275181610549565b602084015201516122ff81610549565b6127696126c1565b5061277f815191602080809483010191016126df565b80820180516040516302910f8b60e31b8082526001600160a01b039283166004830152939491939082816024817f000000000000000000000000000000000000000000000000000000000000000089165afa90811561050b575f916128bf575b50156104ca57816128239160408701956127ff875160018060a01b031690565b6040519283526001600160a01b031660048301529092839190829081906024820190565b03917f0000000000000000000000000000000000000000000000000000000000000000165afa91821561050b575f926128a2575b5050156128905751600480546001600160a01b039283166001600160a01b03199182161790915591516005805490931691161790555190565b604051631f0853c160e21b8152600490fd5b6128b89250803d10610504576104f68183610854565b5f80612857565b6128d69150833d8511610504576104f68183610854565b5f6127df565b801561177457806123d76129a761299d61299361298961297f61297561296b60016112439a5f908b60801c80612a03575b508060401c806129f6575b508060201c806129e9575b508060101c806129dc575b508060081c806129cf575b508060041c806129c2575b508060021c806129b5575b50821c6129ae575b811c1b612964818b611908565b0160011c90565b612964818a611908565b6129648189611908565b6129648188611908565b6129648187611908565b6129648186611908565b6129648185611908565b8092611908565b8101612957565b600291509101905f61294f565b600491509101905f612944565b600891509101905f612939565b601091509101905f61292e565b602091509101905f612923565b604091509101905f612918565b9150506080905f61290d565b905b838310612a1e5750505090565b909192612a2b8185612af5565b90835f5265ffffffffffff808360205f20015416908416105f14612a535750925b9190612a11565b93506001810180911115612a4c576118f4565b9080821015612a73575090565b905090565b805480612a895750505f905f905f90565b5f1990808281011161193457612aa6925f5260205f20010161210f565b9065ffffffffffff82511691602060018060d01b0391015116906001929190565b60ff5f80516020612d178339815191525460401c1615612ae357565b604051631afcd79f60e31b8152600490fd5b90808216911860011c81018091116119345790565b8054600160401b81101561081957612b2791600182018155612133565b612b5257815160209092015160301b65ffffffffffff191665ffffffffffff92909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b805492939291908215612c5657612b816121a56125b885611e61565b90612b92825165ffffffffffff1690565b65ffffffffffff84811691168110612c4457612c08946020948892612bc0611f3e875165ffffffffffff1690565b03612c0c5750612bfa92612bd6612be192611e61565b905f5260205f200190565b9065ffffffffffff82549181199060301b169116179055565b01516001600160d01b031690565b9190565b915050612c3f91612c2c612c1e610884565b65ffffffffffff9093168352565b6001600160d01b03881682860152612b0a565b612bfa565b604051632520601d60e01b8152600490fd5b612c7a9250612c66612c1e610884565b6001600160d01b0385166020830152612b0a565b5f9190565b905b838310612c8e5750505090565b909192612c9b8185612af5565b90835f5265ffffffffffff808360205f20015416908416105f14612cc35750925b9190612c81565b93506001810180911115612cbc576118f456fe02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220b3d48f3b18b846e419493dd0360a4608f48b3385c35e3d4c6be558d241bcf96364736f6c63430008190033","sourceMap":"13653:2443:81:-:0;;;;;;;;;;;;;-1:-1:-1;;13653:2443:81;;;;-1:-1:-1;;;;;13653:2443:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;348:4:82;;332:21;;8837:64:25;13653:2443:81;;;;;;;;;7896:76:25;;13653:2443:81;;;;7985:34:25;7981:146;;-1:-1:-1;525:17:69;;;-1:-1:-1;525:17:69;;-1:-1:-1;552:12:69;;-1:-1:-1;2360:34:76;;2404:28;;-1:-1:-1;2404:28:76;;2442:57;;-1:-1:-1;2442:57:76;;2509:61;-1:-1:-1;2509:61:76;;1796:36:79;;-1:-1:-1;1796:36:79;;14178:41:81;;;;14229:24;;;;14263:40;;;;13653:2443;;;;;;;;332:21:82;13653:2443:81;;;;;525:17:69;13653:2443:81;;;;;552:12:69;13653:2443:81;;;;;2360:34:76;13653:2443:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7981:146:25;-1:-1:-1;;;;;;13653:2443:81;;;;;;;;;;;;;8087:29:25;;13653:2443:81;;8087:29:25;7981:146;;;;;7896:76;13653:2443:81;;-1:-1:-1;;;7938:23:25;;;;;13653:2443:81;-1:-1:-1;13653:2443:81;;;;;;-1:-1:-1;13653:2443:81;;;;;-1:-1:-1;13653:2443:81;;;;-1:-1:-1;;;;;13653:2443:81;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a714610264578063103f29071461025f578063128e5d821461025a5780631a80e5001461025557806323f752d514610250578063248a9ca31461024b57806325dc9708146102465780632dd31000146102415780632f2ff15d1461023c57806336568abe146102375780633dfd387314610232578063437224a31461022d578063439fab911461022857806345e78fcb14610223578063557cab441461021e578063570ca735146102195780636679191e146102145780636739afca1461020f57806379d896141461020a5780637f5a7c7b1461020557806383ce03221461020057806391d14854146101fb578063991d1162146101f65780639b656b22146101f15780639f86fd85146101ec578063a217fddf146101e7578063bb24fe8a146101e2578063c0cd7c3e146101dd578063d0f1f901146101d8578063d15b740e146101d3578063d547741f146101ce578063e02f6937146101c9578063e49561ee146101c4578063fbfa77cf146101bf578063fd4d447c146101ba578063ff54740f146101b55763ffa1ad74146101b0575f80fd5b611207565b6111ea565b6111c0565b611199565b610fae565b610f59565b610f0d565b610ee3565b610e56565b610e12565b610dcf565b610db5565b610d21565b610cdd565b610ca8565b610c4a565b610c06565b610bde565b610b9a565b610b72565b610b38565b610b10565b610af4565b610ab0565b610978565b6108f2565b6106f1565b6106a6565b61065a565b610616565b6105bd565b610510565b61038a565b610346565b610302565b6102be565b346102ba5760203660031901126102ba5760043563ffffffff60e01b81168091036102ba57602090637965db0b60e01b81149081156102a9575b506040519015158152f35b6301ffc9a760e01b1490505f61029e565b5f80fd5b346102ba575f3660031901126102ba576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102ba575f3660031901126102ba576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102ba575f3660031901126102ba576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102ba5760403660031901126102ba576004356001600160601b03811681036102ba57602435906103ba611a63565b6040516302910f8b60e31b81523360048201526020816024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa90811561050b575f916104dc575b50156104ca576001600160601b03166bffffffffffffffffffffffff193360601b16179080610444835f52600260205260405f2090565b54146104b85761049d817fc67e7929681aa1bccd63f52b3799bf5805f3009f197db6fdf584b14f7fbf608c92610482855f52600260205260405f2090565b5561048d8185611a92565b6040519081529081906020820190565b0390a26104b660015f80516020612cf783398151915255565b005b60405163a741a04560e01b8152600490fd5b6040516323d53b9760e21b8152600490fd5b6104fe915060203d602011610504575b6104f68183610854565b81019061122f565b5f61040d565b503d6104ec565b611246565b346102ba5760203660031901126102ba576004355f525f80516020612cd78339815191526020526020600160405f200154604051908152f35b6001600160a01b038116036102ba57565b6064359065ffffffffffff821682036102ba57565b6024359065ffffffffffff821682036102ba57565b6044359065ffffffffffff821682036102ba57565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b346102ba5760803660031901126102ba576106126105fe6004356105e081610549565b6044356105ec81610549565b6105f461055a565b9160243590611320565b604051918291602083526020830190610599565b0390f35b346102ba575f3660031901126102ba576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102ba5760403660031901126102ba576104b660243560043561067d82610549565b805f525f80516020612cd78339815191526020526106a1600160405f200154611bd4565b611d85565b346102ba5760403660031901126102ba576024356106c381610549565b336001600160a01b038216036106df576104b690600435611dbb565b60405163334bd91960e11b8152600490fd5b346102ba5760203660031901126102ba5760043561070e81610549565b610716611a63565b335f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c60205260409020547fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c9060ff16156107cc57506001546001600160a01b0391821691811682146104b8576001600160a01b03191681176001557f5bbb1d3ebb6a3ad2a0f17ff35e579a83af60604d1d3c2a4c83c62adecadf666d5f80a260015f80516020612cf783398151915255005b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b0382111761081957604052565b6107ea565b606081019081106001600160401b0382111761081957604052565b608081019081106001600160401b0382111761081957604052565b90601f801991011681019081106001600160401b0382111761081957604052565b604051906108828261081e565b565b60405190610882826107fe565b6001600160401b03811161081957601f01601f191660200190565b81601f820112156102ba578035906108c382610891565b926108d16040519485610854565b828452602083830101116102ba57815f926020809301838601378301015290565b346102ba5760603660031901126102ba5761090b61056f565b6044356001600160401b0381116102ba576020916109306109439236906004016108ac565b906004355f526003845260405f20611e84565b604051908152f35b9181601f840112156102ba578235916001600160401b0383116102ba57602083818601950101116102ba57565b346102ba5760203660031901126102ba576001600160401b036004358181116102ba576109a990369060040161094b565b5f80516020612d17833981519152549260ff8460401c1615931680159081610aa8575b6001149081610a9e575b159081610a95575b50610a83575f80516020612d17833981519152805467ffffffffffffffff19166001179055610a119183610a5f57611f9d565b610a1757005b5f80516020612d17833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f80516020612d17833981519152805460ff60401b1916600160401b179055611f9d565b60405163f92ee8a960e01b8152600490fd5b9050155f6109de565b303b1591506109d6565b8491506109cc565b346102ba575f3660031901126102ba576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102ba575f3660031901126102ba576020604051614e208152f35b346102ba575f3660031901126102ba576005546040516001600160a01b039091168152602090f35b346102ba575f3660031901126102ba5760206040517fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c8152f35b346102ba575f3660031901126102ba576004546040516001600160a01b039091168152602090f35b346102ba575f3660031901126102ba576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102ba575f3660031901126102ba576001546040516001600160a01b039091168152602090f35b346102ba575f3660031901126102ba576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102ba5760403660031901126102ba57602060ff610c9c602435610c6e81610549565b6004355f525f80516020612cd7833981519152845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b346102ba5760603660031901126102ba576106126105fe600435610ccb81610549565b610cd3610584565b906024359061154e565b346102ba575f3660031901126102ba576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102ba5760403660031901126102ba57600435610d3e81610549565b6024356001600160401b0381116102ba575f91610d608392369060040161094b565b90816040519283928337810184815203915af4610dad610d7e611647565b91610d9f604051938492151560208401526040808401526060830190610599565b03601f198101835282610854565b805190602001fd5b346102ba575f3660031901126102ba5760206040515f8152f35b346102ba575f3660031901126102ba5760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102ba575f3660031901126102ba576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102ba5760403660031901126102ba57610e6f61056f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610ed15763ffffffff610ebc6040926004355f526003602052835f2061215c565b91505083929192519215158352166020820152f35b604051637ca475e560e11b8152600490fd5b346102ba5760203660031901126102ba576004355f526002602052602060405f2054604051908152f35b346102ba5760403660031901126102ba576104b6602435600435610f3082610549565b805f525f80516020612cd7833981519152602052610f54600160405f200154611bd4565b611dbb565b346102ba5760803660031901126102ba57602435610f7681610549565b610f7e610584565b90606435906001600160401b0382116102ba57602092610fa56109439336906004016108ac565b91600435611732565b346102ba5760a03660031901126102ba57602435600435610fce82610549565b60443591610fda61055a565b90608435906001600160401b0382116102ba57610ffc600492369084016108ac565b611004611a63565b5f546020906110299061101d906001600160a01b031681565b6001600160a01b031690565b60405163b134427160e01b815294859182905afa92831561050b575f93611168575b506001600160a01b039283163303611156576001546001600160a01b03168381166110cb575b50506040805195865265ffffffffffff909316602086015216927f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed91819081015b0390a36104b660015f80516020612cf783398151915255565b909360405194611102866110f4602082019363724ab0f760e11b8552858c898d602487016118bc565b03601f198101885287610854565b62042e305a10611144575f6110b2938192827f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed9951926203d090f15093611071565b604051638072475160e01b8152600490fd5b60405163dabc4ad960e01b8152600490fd5b61118b91935060203d602011611192575b6111838183610854565b8101906112bc565b915f61104b565b503d611179565b346102ba575f3660031901126102ba575f546040516001600160a01b039091168152602090f35b346102ba5760403660031901126102ba5760206109436024356111e281610549565b600435611939565b346102ba575f3660031901126102ba5760206040516203d0908152f35b346102ba575f3660031901126102ba57602060405160018152f35b519081151582036102ba57565b908160209103126102ba5761124390611222565b90565b6040513d5f823e3d90fd5b81601f820112156102ba5780519061126882610891565b926112766040519485610854565b828452602083830101116102ba57815f9260208093018386015e8301015290565b906020828203126102ba5781516001600160401b0381116102ba576112439201611251565b908160209103126102ba575161124381610549565b9061124391602081526112f08251606060208401526080830190610599565b9060606040611310602086015194601f1995868683030184870152610599565b9401519282850301910152610599565b604051630df8851f60e11b81526001600160a01b03828116600483015260248201849052938416604482015265ffffffffffff8516606482015260609594909391925f856084817f000000000000000000000000000000000000000000000000000000000000000087165afa94851561050b575f956114ea575b5060405163fbfa77cf60e01b81526020816004818888165afa90811561050b57611406945f92859284916114cb575b5060405163192c0ff760e21b81526001600160a01b03909116600482015265ffffffffffff90921660248301529094859190829081906044820190565b03917f0000000000000000000000000000000000000000000000000000000000000000165afa92831561050b575f936114a5575b50611445929361154e565b9082511580159061149b575b8015611491575b61146157505050565b610d9f939450906112439291611475610875565b92835260208301526040820152604051928391602083016112d1565b5081511515611458565b5080511515611451565b61144593506114c5903d805f833e6114bd8183610854565b810190611297565b9261143a565b6114e4915060203d602011611192576111838183610854565b5f6113c9565b6114ff9195503d805f833e6114bd8183610854565b935f61139a565b9061124392915f52600360205260405f20611e84565b519063ffffffff821682036102ba57565b91908260409103126102ba57611243602061154784611222565b930161151c565b92915f8060609565ffffffffffff6040519460209663d0f1f90160e01b8888015260248701521660448501526044845261158784610839565b60405193846115b487820192639f86fd8560e01b8452306024840152604060448401526064830190610599565b03946115c8601f1996878101835282610854565b51915afa506115e66115d8611647565b8380825183010191016120db565b9015611639578083806115fe9351830101910161152d565b929061160957505050565b6112439293945061162d604051948592830191909163ffffffff6020820193169052565b03908101835282610854565b809150519182156102ba5701fd5b3d15611671573d9061165882610891565b916116666040519384610854565b82523d5f602084013e565b606090565b60405190611683826107fe565b60606020838281520152565b906020828203126102ba5781516001600160401b03928382116102ba5701906040828203126102ba57604051926116c5846107fe565b82518181116102ba57826116da918501611251565b845260208301519081116102ba576116f29201611251565b602082015290565b6001600160a01b0391821681529116602082015265ffffffffffff909116604082015260806060820181905261124392910190610599565b9261174290929192828486612335565b92909361174d611676565b938051806118a0575b5050841593841561180a575b8415611779575b505050506117745790565b505f90565b6020809495506117a4910151604051958694859463530e1d4360e01b865260601c90600486016116fa565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561050b575f916117eb575b50155f808080611769565b611804915060203d602011610504576104f68183610854565b5f6117e0565b5f549094506001600160a01b031660208486519261183d604051948593849363530e1d4360e01b855289600486016116fa565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561050b575f91611881575b501593611762565b61189a915060203d602011610504576104f68183610854565b5f611879565b6118b492955060208091830101910161168f565b925f80611756565b919360a093611243969565ffffffffffff938552600180871b0316602085015260408401521660608201528160808201520190610599565b634e487b7160e01b5f52601160045260245ffd5b8115611912570490565b634e487b7160e01b5f52601260045260245ffd5b906001820180921161193457565b6118f4565b5f546040516308834cb560e21b8082526001600160a01b0385811660048401529283166024830152929392602092909183816044817f000000000000000000000000000000000000000000000000000000000000000086165afa90811561050b575f91611a46575b50159182156119c2575b505090506119bc5761124391612454565b50505f90565b6040519081526001600160a01b0385166004820152606086901c602482015291508290829060449082907f0000000000000000000000000000000000000000000000000000000000000000165afa91821561050b575f92611a29575b505015805f806119ab565b611a3f9250803d10610504576104f68183610854565b5f80611a1e565b611a5d9150843d8611610504576104f68183610854565b5f6119a1565b5f80516020612cf78339815191526002815414611a805760029055565b604051633ee5aeb560e01b8152600490fd5b6004546001600160a01b0316606082901c03611bc2575f52600360205260405f209065ffffffffffff91824211611ba357824216926001820191825415611b95575b611add81612a78565b509590845493835480155f14611b7657505f975b6001600160d01b0398808a1615611b7057611b0c9088612133565b50505b82611b64575b505015611b4e575050610882935090611b30611b3692611e61565b90612133565b90919082549060031b91821b915f19901b1916179055565b61088295611b5d931691612b65565b5050612543565b16821490505f80611b15565b50611b0f565b5f1990808281011161193457855f5260205f2001015460301c97611af1565b611b9e83612516565b611ad4565b6040516306dfcc6560e41b815260306004820152426024820152604490fd5b6040516386eab41b60e01b8152600490fd5b5f8181525f80516020612cd78339815191526020908152604080832033845290915290205460ff16156107cc5750565b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260409020545f80516020612cd78339815191529060ff166119bc575f808052602091825260408082206001600160a01b038516835290925220805460ff1916600117905533906001600160a01b03165f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b6001600160a01b0381165f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c602052604090207fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c905f80516020612cd78339815191529060ff905b5416611d7e575f828152602091825260408082206001600160a01b038616835290925220805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b5050505f90565b5f8181525f80516020612cd7833981519152602081815260408084206001600160a01b038716855290915290912060ff90611d1a565b5f8181525f80516020612cd7833981519152602081815260408084206001600160a01b03871685529091529091205460ff1615611d7e575f828152602091825260408082206001600160a01b038616835290925220805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b908160209103126102ba576112439061151c565b5f1981019190821161193457565b90600163ffffffff8093160191821161193457565b91805115611f5d5780602080611e9f93518301019101611e4d565b91611eaa8382612636565b92611ebb845165ffffffffffff1690565b9065ffffffffffff8085169216828114611f515782119182611ef1575b5050611ee8576112439250612566565b50506020015190565b909150611efe8354611e61565b63ffffffff831614918215611f17575b50505f80611ed8565b611f49919250611f32611f2c611f3e92611e6f565b85612636565b5165ffffffffffff1690565b65ffffffffffff1690565b115f80611f0e565b50505050506020015190565b5061124391612566565b9190916040818403126102ba578035611f7f81610549565b9260208201356001600160401b0381116102ba5761124392016108ac565b611fa991810190611f67565b6040516302910f8b60e31b81526001600160a01b039283166004820181905291906020816024817f000000000000000000000000000000000000000000000000000000000000000088165afa90811561050b575f916120bc575b50156120aa5761203e6040916120396120849461201e61269e565b60018060a01b03166001600160601b0360a01b5f5416175f55565b612761565b6020810151600180546001600160a01b0319166001600160a01b0390921691909117905580516001600160a01b031684811661209a575b5001516001600160a01b031690565b90811661208e5750565b61209790611caf565b50565b6120a390611c04565b505f612075565b6040516362df054560e01b8152600490fd5b6120d5915060203d602011610504576104f68183610854565b5f612003565b9190916040818403126102ba576120f181611222565b9260208201516001600160401b0381116102ba576112439201611251565b9060405161211c816107fe565b915465ffffffffffff8116835260301c6020830152565b8054821015612148575f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b91908254905f829160058411612204575b612178935085612a0f565b9081156121f8576121f16121e86121e26121d86121aa6121a561219a88611e61565b895f5260205f200190565b61210f565b9660016121d160206121c28b5165ffffffffffff1690565b9a01516001600160d01b031690565b9101612133565b90549060031b1c90565b93611e61565b63ffffffff1690565b6001939291565b5f925082915081908190565b919261220f816128dc565b81039081116119345761217893865f52612238611f3e8360205f200165ffffffffffff90541690565b65ffffffffffff8516101561224e57509161216d565b92915061225a90611926565b9061216d565b6040519061226d8261081e565b60606040838281528260208201520152565b906020828203126102ba5781516001600160401b03928382116102ba5701906060828203126102ba57604051926122b58461081e565b82518181116102ba57826122ca918501611251565b845260208301518181116102ba57826122e4918501611251565b602085015260408301519081116102ba576122ff9201611251565b604082015290565b908160209103126102ba575190565b60409065ffffffffffff61124394931681528160208201520190610599565b90939293612341612260565b94805180612438575b5050600454606083901c6001600160a01b0391821614801592919061241d575b5050612415575f546123b092919060209061238f9061101d906001600160a01b031681565b8187015190604051808097819463810da75d60e01b83528860048401612316565b03915afa90811561050b576123dd935f926123e2575b506123d79192604087015191611506565b90612a66565b915190565b6123d792506124089060203d60201161240e575b6124008183610854565b810190612307565b916123c6565b503d6123f6565b505090515f91565b60055481166001600160a01b03169116141590505f8061236a565b61244c92965060208091830101910161227f565b935f8061234a565b6004549091606083901c6001600160a01b0392831614801592906124fb575b5050611774575f54600491906020906124969061101d906001600160a01b031681565b60405163bd49c35f60e01b815293849182905afa90811561050b57611243925f926124d6575b506124cf905f52600260205260405f2090565b5490612a66565b6124cf9192506124f49060203d60201161240e576124008183610854565b91906124bc565b60055481166001600160a01b03169116141590505f80612473565b8054600160401b8110156108195761253391600182018155612133565b8154905f199060031b1b19169055565b90815491600160401b8310156108195782611b3691600161088295018155612133565b908154905f8291600584116125d0575b612581935084612c7f565b806125a957505f905b6001600160d01b038216156119bc576112439160016121d89201612133565b6125c36125b86125ca92611e61565b835f5260205f200190565b5460301c90565b9061258a565b91926125db816128dc565b81039081116119345761258193855f5265ffffffffffff808360205f20015416908516105f1461260c575091612576565b92915061261890611926565b90612576565b6040519061262b826107fe565b5f6020838281520152565b9061265f6126596126809261264961261e565b5061265261261e565b5084612133565b5061210f565b91600165ffffffffffff845116936020828060d01b03910151169101612133565b90549060405192612690846107fe565b835260031b1c602082015290565b6126a6612ac7565b6126ae612ac7565b60015f80516020612cf783398151915255565b604051906126ce8261081e565b5f6040838281528260208201520152565b8091039060a082126102ba576060604051926126fa8461081e565b126102ba5760809060405161270e8161081e565b815161271981610549565b8152602082015161272981610549565b6020820152604082015161273c81610549565b60408201528352606081015161275181610549565b602084015201516122ff81610549565b6127696126c1565b5061277f815191602080809483010191016126df565b80820180516040516302910f8b60e31b8082526001600160a01b039283166004830152939491939082816024817f000000000000000000000000000000000000000000000000000000000000000089165afa90811561050b575f916128bf575b50156104ca57816128239160408701956127ff875160018060a01b031690565b6040519283526001600160a01b031660048301529092839190829081906024820190565b03917f0000000000000000000000000000000000000000000000000000000000000000165afa91821561050b575f926128a2575b5050156128905751600480546001600160a01b039283166001600160a01b03199182161790915591516005805490931691161790555190565b604051631f0853c160e21b8152600490fd5b6128b89250803d10610504576104f68183610854565b5f80612857565b6128d69150833d8511610504576104f68183610854565b5f6127df565b801561177457806123d76129a761299d61299361298961297f61297561296b60016112439a5f908b60801c80612a03575b508060401c806129f6575b508060201c806129e9575b508060101c806129dc575b508060081c806129cf575b508060041c806129c2575b508060021c806129b5575b50821c6129ae575b811c1b612964818b611908565b0160011c90565b612964818a611908565b6129648189611908565b6129648188611908565b6129648187611908565b6129648186611908565b6129648185611908565b8092611908565b8101612957565b600291509101905f61294f565b600491509101905f612944565b600891509101905f612939565b601091509101905f61292e565b602091509101905f612923565b604091509101905f612918565b9150506080905f61290d565b905b838310612a1e5750505090565b909192612a2b8185612af5565b90835f5265ffffffffffff808360205f20015416908416105f14612a535750925b9190612a11565b93506001810180911115612a4c576118f4565b9080821015612a73575090565b905090565b805480612a895750505f905f905f90565b5f1990808281011161193457612aa6925f5260205f20010161210f565b9065ffffffffffff82511691602060018060d01b0391015116906001929190565b60ff5f80516020612d178339815191525460401c1615612ae357565b604051631afcd79f60e31b8152600490fd5b90808216911860011c81018091116119345790565b8054600160401b81101561081957612b2791600182018155612133565b612b5257815160209092015160301b65ffffffffffff191665ffffffffffff92909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b805492939291908215612c5657612b816121a56125b885611e61565b90612b92825165ffffffffffff1690565b65ffffffffffff84811691168110612c4457612c08946020948892612bc0611f3e875165ffffffffffff1690565b03612c0c5750612bfa92612bd6612be192611e61565b905f5260205f200190565b9065ffffffffffff82549181199060301b169116179055565b01516001600160d01b031690565b9190565b915050612c3f91612c2c612c1e610884565b65ffffffffffff9093168352565b6001600160d01b03881682860152612b0a565b612bfa565b604051632520601d60e01b8152600490fd5b612c7a9250612c66612c1e610884565b6001600160d01b0385166020830152612b0a565b5f9190565b905b838310612c8e5750505090565b909192612c9b8185612af5565b90835f5265ffffffffffff808360205f20015416908416105f14612cc35750925b9190612c81565b93506001810180911115612cbc576118f456fe02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220b3d48f3b18b846e419493dd0360a4608f48b3385c35e3d4c6be558d241bcf96364736f6c63430008190033","sourceMap":"13653:2443:81:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;-1:-1:-1;;13653:2443:81;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3551:47:23;;;:87;;;;13653:2443:81;;;;;;;;;;3551:87:23;-1:-1:-1;;;1133:40:29;;-1:-1:-1;3551:87:23;;;13653:2443:81;-1:-1:-1;13653:2443:81;;;;;;;;-1:-1:-1;;13653:2443:81;;;;;;1537:38:76;-1:-1:-1;;;;;13653:2443:81;;;;;;;;;;;;-1:-1:-1;;13653:2443:81;;;;;;1632:54:76;-1:-1:-1;;;;;13653:2443:81;;;;;;;;;;;;-1:-1:-1;;13653:2443:81;;;;;;1743:56:76;-1:-1:-1;;;;;13653:2443:81;;;;;;;;;;;;-1:-1:-1;;13653:2443:81;;;;;;-1:-1:-1;;;;;13653:2443:81;;;;;;;;3217:103:28;;;:::i;:::-;13653:2443:81;;-1:-1:-1;;;4285:48:76;;4322:10;13653:2443:81;4285:48:76;;13653:2443:81;;;;;-1:-1:-1;;;;;4295:16:76;13653:2443:81;4285:48:76;;;;;;;-1:-1:-1;4285:48:76;;;13653:2443:81;4284:49:76;;4280:99;;-1:-1:-1;;;;;13653:2443:81;-1:-1:-1;;4322:10:76;297:2:88;13653:2443:81;;267:46:88;4459:27:76;;;;13653:2443:81;;4459:15:76;13653:2443:81;;;;;;;4459:27:76;13653:2443:81;4459:37:76;4455:87;;4654:38;4552:27;4654:38;4552:27;;;13653:2443:81;;4459:15:76;13653:2443:81;;;;;;;4552:27:76;13653:2443:81;4631:6:76;;;;:::i;:::-;13653:2443:81;;;;;;;;;;;;;4654:38:76;;;;3282:1:28;1805;-1:-1:-1;;;;;;;;;;;13653:2443:81;3716:283:28;3282:1;13653:2443:81;4455:87:76;13653:2443:81;;-1:-1:-1;;;4519:12:76;;13653:2443:81;;4519:12:76;4280:99;13653:2443:81;;-1:-1:-1;;;4356:12:76;;13653:2443:81;;4356:12:76;4285:48;;;;13653:2443:81;4285:48:76;13653:2443:81;4285:48:76;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;13653:2443:81:-;;;;;;-1:-1:-1;;13653:2443:81;;;;;;-1:-1:-1;13653:2443:81;-1:-1:-1;;;;;;;;;;;13653:2443:81;;;4919:24:23;13653:2443:81;-1:-1:-1;13653:2443:81;4919:24:23;13653:2443:81;;;;;;;;-1:-1:-1;;;;;13653:2443:81;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;13653:2443:81;;;;;;;;-1:-1:-1;;13653:2443:81;;;;:::o;:::-;;;;;;-1:-1:-1;;13653:2443:81;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;13653:2443:81;;;;;;322:32:69;-1:-1:-1;;;;;13653:2443:81;;;;;;;;;;;;-1:-1:-1;;13653:2443:81;;;;5350:25:23;13653:2443:81;;;;;;;:::i;:::-;;-1:-1:-1;13653:2443:81;-1:-1:-1;;;;;;;;;;;13653:2443:81;;3202:4:23;4919:24;13653:2443:81;-1:-1:-1;13653:2443:81;4919:24:23;13653:2443:81;3202:4:23;:::i;:::-;5350:25;:::i;13653:2443:81:-;;;;;;-1:-1:-1;;13653:2443:81;;;;;;;;;:::i;:::-;966:10:27;-1:-1:-1;;;;;13653:2443:81;;6441:34:23;6437:102;;6549:37;13653:2443:81;;;6549:37:23;:::i;6437:102::-;13653:2443:81;;-1:-1:-1;;;6498:30:23;;13653:2443:81;;6498:30:23;13653:2443:81;;;;;;-1:-1:-1;;13653:2443:81;;;;;;;;;:::i;:::-;3217:103:28;;:::i;:::-;966:10:27;-1:-1:-1;13653:2443:81;;;;;;;;;;1356:26:76;;13653:2443:81;;4468:23:23;4464:108;;-1:-1:-1;4861:4:76;13653:2443:81;-1:-1:-1;;;;;13653:2443:81;;;;;;4861:13:76;;4857:63;;-1:-1:-1;;;;;;13653:2443:81;;;4861:4:76;13653:2443:81;4958:14:76;-1:-1:-1;;4958:14:76;4861:4;-1:-1:-1;;;;;;;;;;;13653:2443:81;;4464:108:23;13653:2443:81;;;;4514:47:23;;;;;;966:10:27;13653:2443:81;4514:47:23;;13653:2443:81;;;;;4514:47:23;13653:2443:81;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13653:2443:81;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;-1:-1:-1;;;;;13653:2443:81;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;13653:2443:81;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;13653:2443:81;;;;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;:::i;:::-;-1:-1:-1;;;;;13653:2443:81;;;;;;-1:-1:-1;;13653:2443:81;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;13653:2443:81;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;13653:2443:81;;;;;;:::i;:::-;;;-1:-1:-1;;;;;13653:2443:81;;;;;;;2045:63:79;13653:2443:81;;;;;;:::i;:::-;;;;-1:-1:-1;13653:2443:81;2045:16:79;13653:2443:81;;;-1:-1:-1;13653:2443:81;2045:63:79;:::i;:::-;13653:2443:81;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13653:2443:81;;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;13653:2443:81;;;;-1:-1:-1;;;;;13653:2443:81;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;13653:2443:81;;;;;;;4301:16:25;13653:2443:81;;4726:16:25;;:34;;;;13653:2443:81;4805:1:25;4790:16;:50;;;;13653:2443:81;4855:13:25;:30;;;;13653:2443:81;4851:91:25;;;-1:-1:-1;;;;;;;;;;;13653:2443:81;;-1:-1:-1;;13653:2443:81;;;;;718:4:69;;4951:18:25;4979:67;;718:4:69;:::i;:::-;5066:101:25;;13653:2443:81;5066:101:25;-1:-1:-1;;;;;;;;;;;13653:2443:81;;-1:-1:-1;;;;13653:2443:81;;;;;-1:-1:-1;13653:2443:81;;5142:14:25;;13653:2443:81;;5142:14:25;13653:2443:81;4979:67:25;-1:-1:-1;;;;;;;;;;;13653:2443:81;;-1:-1:-1;;;;13653:2443:81;-1:-1:-1;;;13653:2443:81;;;718:4:69;:::i;4851:91:25:-;13653:2443:81;;-1:-1:-1;;;4908:23:25;;13653:2443:81;;4908:23:25;4855:30;4872:13;;;4855:30;;;4790:50;4818:4;4810:25;:30;;-1:-1:-1;4790:50:25;;4726:34;;;-1:-1:-1;4726:34:25;;13653:2443:81;;;;;;-1:-1:-1;;13653:2443:81;;;;;;13849:36;-1:-1:-1;;;;;13653:2443:81;;;;;;;;;;;;-1:-1:-1;;13653:2443:81;;;;;;;1253:6:76;13653:2443:81;;;;;;;;;-1:-1:-1;;13653:2443:81;;;;1267:23:79;13653:2443:81;;;-1:-1:-1;;;;;13653:2443:81;;;;;;;;;;;;;;-1:-1:-1;;13653:2443:81;;;;;;;1356:26:76;13653:2443:81;;;;;;;;;-1:-1:-1;;13653:2443:81;;;;;;;;-1:-1:-1;;;;;13653:2443:81;;;;;;;;;;;;;;-1:-1:-1;;13653:2443:81;;;;;;13798:45;-1:-1:-1;;;;;13653:2443:81;;;;;;;;;;;;-1:-1:-1;;13653:2443:81;;;;;;;;-1:-1:-1;;;;;13653:2443:81;;;;;;;;;;;;;;-1:-1:-1;;13653:2443:81;;;;;;961:42:79;-1:-1:-1;;;;;13653:2443:81;;;;;;;;;;;;-1:-1:-1;;13653:2443:81;;;;;;3901:31:23;13653:2443:81;;;;;:::i;:::-;;;-1:-1:-1;13653:2443:81;-1:-1:-1;;;;;;;;;;;13653:2443:81;;;-1:-1:-1;13653:2443:81;;;;;;;;;;;;;;;;;3901:31:23;13653:2443:81;;;;;;;;;;;;;;;;-1:-1:-1;;13653:2443:81;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;-1:-1:-1;;13653:2443:81;;;;;;13891:45;-1:-1:-1;;;;;13653:2443:81;;;;;;;;;;;;-1:-1:-1;;13653:2443:81;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;13653:2443:81;;;;-1:-1:-1;13653:2443:81;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;416:25:75;;;;477:31;416:25;;:::i;:::-;13653:2443:81;;;;;;;;;;477:31:75;;13653:2443:81;;;;;;;;;;;:::i;:::-;477:31:75;13653:2443:81;;477:31:75;;;;;;:::i;:::-;518:79;;;13653:2443:81;518:79:75;;13653:2443:81;;;;;;-1:-1:-1;;13653:2443:81;;;;;;;;;;;;;;;;;-1:-1:-1;;13653:2443:81;;;;;;;-1:-1:-1;;;;;404:28:69;13653:2443:81;;;;;;;;;;-1:-1:-1;;13653:2443:81;;;;;;1439:41:76;-1:-1:-1;;;;;13653:2443:81;;;;;;;;;;;;-1:-1:-1;;13653:2443:81;;;;;;:::i;:::-;449:5:82;-1:-1:-1;;;;;13653:2443:81;435:10:82;:19;431:71;;13653:2443:81;14508:67;13653:2443;;;;-1:-1:-1;13653:2443:81;14508:16;13653:2443;;;-1:-1:-1;13653:2443:81;14508:67;:::i;:::-;13653:2443;;;;;;;;;;;;;;;;;;;431:71:82;13653:2443:81;;-1:-1:-1;;;477:14:82;;13653:2443:81;;477:14:82;13653:2443:81;;;;;;-1:-1:-1;;13653:2443:81;;;;;;-1:-1:-1;13653:2443:81;2009:67:76;13653:2443:81;;;;-1:-1:-1;13653:2443:81;;;;;;;;;;;;;;-1:-1:-1;;13653:2443:81;;;;5767:26:23;13653:2443:81;;;;;;;:::i;:::-;;-1:-1:-1;13653:2443:81;-1:-1:-1;;;;;;;;;;;13653:2443:81;;3202:4:23;4919:24;13653:2443:81;-1:-1:-1;13653:2443:81;4919:24:23;13653:2443:81;3202:4:23;:::i;:::-;5767:26;:::i;13653:2443:81:-;;;;;;-1:-1:-1;;13653:2443:81;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;-1:-1:-1;;;;;13653:2443:81;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;-1:-1:-1;;13653:2443:81;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;13653:2443:81;;;;;;;;;;;;:::i;:::-;3217:103:28;;:::i;:::-;-1:-1:-1;13653:2443:81;;;5246:21:76;;:13;;-1:-1:-1;;;;;13653:2443:81;5246:13:76;13653:2443:81;;-1:-1:-1;;;;;13653:2443:81;;;5246:21:76;13653:2443:81;;-1:-1:-1;;;5246:23:76;;13653:2443:81;;;;;5246:23:76;;;;;;;-1:-1:-1;5246:23:76;;;13653:2443:81;-1:-1:-1;;;;;;13653:2443:81;;;5232:10:76;:37;5228:87;;5341:4;13653:2443:81;-1:-1:-1;;;;;13653:2443:81;;;;5355:469:76;;13653:2443:81;-1:-1:-1;;13653:2443:81;;;;;;;;;;;;;;;;5839:55:76;;13653:2443:81;;;;5839:55:76;;;;3282:1:28;1805;-1:-1:-1;;;;;;;;;;;13653:2443:81;3716:283:28;5355:469:76;13653:2443:81;;;;5435:94:76;;;;13653:2443:81;5435:94:76;;;;;;;;;;;;13653:2443:81;5435:94:76;;;:::i;:::-;;13653:2443:81;;5435:94:76;;;;;;:::i;:::-;13653:2443:81;5548:9:76;:51;5544:118;;-1:-1:-1;5839:55:76;5676:138;;;;5839:55;5676:138;;;1150:7;5676:138;;5355:469;;;5544:118;13653:2443:81;;-1:-1:-1;;;5626:21:76;;13653:2443:81;;5626:21:76;5228:87;13653:2443:81;;-1:-1:-1;;;5292:12:76;;13653:2443:81;;5292:12:76;5246:23;;;;;13653:2443:81;5246:23:76;13653:2443:81;5246:23:76;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;13653:2443:81;;;;;;-1:-1:-1;;13653:2443:81;;;;;;;;-1:-1:-1;;;;;13653:2443:81;;;;;;;;;;;;;;-1:-1:-1;;13653:2443:81;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;-1:-1:-1;;13653:2443:81;;;;;;;1150:7:76;13653:2443:81;;;;;;;;;-1:-1:-1;;13653:2443:81;;;;;;;2700:1:76;13653:2443:81;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;13653:2443:81;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;13653:2443:81;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;15166:928::-;13653:2443;;-1:-1:-1;;;15383:99:81;;-1:-1:-1;;;;;13653:2443:81;;;15383:99;;;13653:2443;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13653:2443:81;;;15402:20;13653:2443;;15383:99;;;;;;;;;;;15166:928;-1:-1:-1;13653:2443:81;;-1:-1:-1;;;15576:32:81;;;13653:2443;15383:99;13653:2443;;;;15576:32;;;;;;;15536:84;15576:32;15383:99;15576:32;;;;;;;15166:928;-1:-1:-1;13653:2443:81;;-1:-1:-1;;;15536:84:81;;-1:-1:-1;;;;;13653:2443:81;;;15383:99;15536:84;;13653:2443;;;;;;;;;;;;;-1:-1:-1;13653:2443:81;;;;;;;;;15536:84;;15547:11;;13653:2443;15536:84;;;;;;;15383:99;15536:84;;;15166:928;15667:53;;;;;:::i;:::-;13653:2443;;;15735:21;;;:52;;;15166:928;15735:88;;;;15166:928;15731:357;;15166:928;;;:::o;15731:357::-;15846:231;13653:2443;;;;15846:231;13653:2443;;;;:::i;:::-;;;;15576:32;15874:189;;13653:2443;;15874:189;;13653:2443;;;15846:231;;;15576:32;15846:231;;;:::i;15735:88::-;13653:2443;;;15791:32;;15735:88;;:52;13653:2443;;;15760:27;;15735:52;;15536:84;15667:53;15536:84;;;;;;15383:99;15536:84;;;;;;:::i;:::-;;;;;:::i;:::-;;;;15576:32;;;;;;;;;;;;;;:::i;:::-;;;;15383:99;;;;;;;;;;;;;;:::i;:::-;;;;;1914:201:79;;2045:63;1914:201;;-1:-1:-1;13653:2443:81;2045:16:79;13653:2443:81;;;-1:-1:-1;13653:2443:81;2045:63:79;:::i;13653:2443:81:-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;14588:572::-;;;-1:-1:-1;14725:12:81;13653:2443;;;;;14871:159;;14915:74;;;;14871:159;;;;;;;13653:2443;;;;;;;14871:159;;;;;:::i;:::-;13653:2443;;716:88:82;;13653:2443:81;716:88:82;;;;;;;;;783:4;14871:159:81;716:88:82;;13653:2443:81;;;;;;;;;;;:::i;:::-;716:88:82;13653:2443:81;716:88:82;13653:2443:81;;716:88:82;;;;;;;;:::i;:::-;698:107;;;;;857:45;698:107;;:::i;:::-;13653:2443:81;;;;857:45:82;;;;;;:::i;:::-;916:8;;912:175;;13653:2443:81;;;14779:303;13653:2443;;14779:303;;;;;;:::i;:::-;15093:61;;;;14588:572;;;:::o;15093:61::-;15126:17;13653:2443;;;;15126:17;13653:2443;;15126:17;;;;;13653:2443;;;;;;;;;;;;15126:17;;;;;;;;;:::i;912:175:82:-;13653:2443:81;;;;944:22:82;;;940:36;;990:87;;13653:2443:81;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;13653:2443:81;;;;:::o;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;13653:2443:81;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;-1:-1:-1;;;;;13653:2443:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2764:920:76:-;;2978:48;2764:920;;;;2978:48;;;;:::i;:::-;3036:36;;;13653:2443:81;;:::i;:::-;;;;3086:20:76;3082:107;;2764:920;3216:11;;;;:193;;;;;2764:920;3216:394;;;;2764:920;3199:455;;;;;;2764:920;:::o;3199:455::-;3635:8;-1:-1:-1;3635:8:76;:::o;3216:394::-;3553:39;;;;;3430:180;3553:39;;;13653:2443:81;;;;;;;;;;3430:180:76;;467:2:88;13653:2443:81;3430:180:76;;;;;:::i;:::-;;13653:2443:81;3444:31:76;-1:-1:-1;;;;;13653:2443:81;3430:180:76;;;;;;;-1:-1:-1;3430:180:76;;;3216:394;3429:181;;3216:394;;;;;;3430:180;;;;3553:39;3430:180;3553:39;3430:180;;;;;;;:::i;:::-;;;;3216:193;-1:-1:-1;13653:2443:81;;;-1:-1:-1;;;;;;13653:2443:81;3248:161:76;3354:37;;;13653:2443:81;3248:161:76;13653:2443:81;;;;;;;;;;3248:161:76;;;;;;;:::i;:::-;;13653:2443:81;3262:29:76;-1:-1:-1;;;;;13653:2443:81;3248:161:76;;;;;;;-1:-1:-1;3248:161:76;;;3216:193;3247:162;;3216:193;;;3248:161;;;;;;;;;;;;;;:::i;:::-;;;;3082:107;3139:39;;;;;;;;;;;;;:::i;:::-;3082:107;;;;;13653:2443:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;8889:1:86;13653:2443:81;;;;;;;:::o;:::-;;:::i;3740:389:76:-;3918:5;13653:2443:81;;;-1:-1:-1;;;3853:71:76;;;-1:-1:-1;;;;;13653:2443:81;;;3853:71:76;;;13653:2443:81;;;;;;;;3740:389:76;;13653:2443:81;3853:71:76;;13653:2443:81;;3853:71:76;13653:2443:81;;;3867:29:76;13653:2443:81;;3853:71:76;;;;;;;3918:5;3853:71;;;3740:389;3852:72;;13653:2443:81;;;3852:181:76;;3740:389;3835:242;;;;;;4094:28;;;:::i;3835:242::-;4058:8;;3918:5;4058:8;:::o;3852:181::-;13653:2443:81;;3945:88:76;;;-1:-1:-1;;;;;13653:2443:81;;3853:71:76;3945:88;;13653:2443:81;467:2:88;13653:2443:81;;;;;;;;-1:-1:-1;13653:2443:81;;;;;;;;3959:31:76;13653:2443:81;3945:88:76;;;;;;;3918:5;3945:88;;;3852:181;3944:89;;;3852:181;;;;;3945:88;;;;;;-1:-1:-1;3945:88:76;;;;;;:::i;:::-;;;;;3853:71;;;;;;;;;;;;;;:::i;:::-;;;;3326:384:28;-1:-1:-1;;;;;;;;;;;1847:1:28;13653:2443:81;;3526:20:28;3522:88;;1847:1;13653:2443:81;;3326:384:28:o;3522:88::-;13653:2443:81;;-1:-1:-1;;;3569:30:28;;;;;3164:253:79;3261:7;13653:2443:81;-1:-1:-1;;;;;13653:2443:81;467:2:88;13653:2443:81;;;3261:31:79;3257:85;;-1:-1:-1;13653:2443:81;3351:16:79;13653:2443:81;;;-1:-1:-1;13653:2443:81;;;837:15:62;;;14369:24:58;14365:103;;837:15:62;;13653:2443:81;6360:12:86;;;;13653:2443:81;;;6360:24:86;6356:75;;3164:253:79;6474:30:86;;;:::i;:::-;13653:2443:81;;;;;;;;10303:8:60;;:63;:8;;;:63;-1:-1:-1;10303:63:60;;-1:-1:-1;;;;;13653:2443:81;;;;10726:7:86;13653:2443:81;;10736:17:86;;;;:::i;:::-;10726:31;;;6604:24;;;10726:31;-1:-1:-1;;6600:188:86;;;6657:7;;6644:29;6657:7;;;;6644:21;6657:7;;:::i;:::-;6644:21;;:::i;:::-;:29;13653:2443:81;;;;;;;;;;;;;;;;;;;;;6600:188:86;6753:24;13653:2443:81;8167:38:60;13653:2443:81;;8167:38:60;;:::i;:::-;6753:24:86;;;:::i;6604:::-;13653:2443:81;6614:14:86;;;-1:-1:-1;6604:24:86;;;;10726:31;;;;10303:63:60;13653:2443:81;;;;;;;;;;13267:109:86;-1:-1:-1;13267:109:86;13653:2443:81;-1:-1:-1;13267:109:86;;;13653:2443:81;;;10303:63:60;;;6356:75:86;6400:20;;;:::i;:::-;6356:75;;14365:103:58;13653:2443:81;;-1:-1:-1;;;14416:41:58;;14447:2;3261:7:79;14416:41:58;;13653:2443:81;837:15:62;13653:2443:81;;;;;;14416:41:58;3257:85:79;13653:2443:81;;-1:-1:-1;;;3315:16:79;;3261:7;;3315:16;4148:103:23;-1:-1:-1;13653:2443:81;;;-1:-1:-1;;;;;;;;;;;13653:2443:81;;;;;;;;966:10:27;13653:2443:81;;;;;;;;;;4468:23:23;4464:108;;4148:103;:::o;7270:387::-;-1:-1:-1;;;;;13653:2443:81;;-1:-1:-1;13653:2443:81;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2887:71:23;13653:2443:81;;;;-1:-1:-1;13653:2443:81;;;;;;;;;;;-1:-1:-1;;;;;13653:2443:81;;;;;;;;;;-1:-1:-1;;13653:2443:81;7509:4:23;13653:2443:81;;;966:10:27;;-1:-1:-1;;;;;13653:2443:81;-1:-1:-1;7532:40:23;-1:-1:-1;;7532:40:23;7509:4;7586:11;:::o;7270:387::-;-1:-1:-1;;;;;13653:2443:81;;-1:-1:-1;13653:2443:81;;;;;;;;;1356:26:76;;-1:-1:-1;;;;;;;;;;;2887:71:23;13653:2443:81;;3901:31:23;13653:2443:81;;;;-1:-1:-1;13653:2443:81;;;;;;;;;;;-1:-1:-1;;;;;13653:2443:81;;;;;;;;;;-1:-1:-1;;13653:2443:81;7509:4:23;13653:2443:81;;;966:10:27;;-1:-1:-1;;;;;13653:2443:81;;7532:40:23;-1:-1:-1;;7532:40:23;7509:4;7586:11;:::o;7432:219::-;7628:12;;;-1:-1:-1;7628:12:23;:::o;7270:387::-;-1:-1:-1;13653:2443:81;;;-1:-1:-1;;;;;;;;;;;13653:2443:81;;;;;;;;-1:-1:-1;;;;;13653:2443:81;;;;;;;;;;;;3901:31:23;13653:2443:81;7892:388:23;-1:-1:-1;13653:2443:81;;;-1:-1:-1;;;;;;;;;;;13653:2443:81;;;;;;;;-1:-1:-1;;;;;13653:2443:81;;;;;;;;;;;;;;;;-1:-1:-1;13653:2443:81;;;;;;;;;;;-1:-1:-1;;;;;13653:2443:81;;;;;;;;;;-1:-1:-1;;13653:2443:81;;;966:10:27;;-1:-1:-1;;;;;13653:2443:81;;8155:40:23;-1:-1:-1;;8155:40:23;13653:2443:81;8209:11:23;:::o;13653:2443:81:-;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;13653:2443:81;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::o;7558:604:86:-;;13653:2443:81;;7686:17:86;7682:83;;13653:2443:81;7789:27:86;13653:2443:81;7789:27:86;13653:2443:81;;7789:27:86;;;;;;:::i;:::-;7860:14;;;;;:::i;:::-;13653:2443:81;;;;;;;;;;;;;;;;7888:22:86;;;7884:77;;7975:21;-1:-1:-1;7975:84:86;;;;7558:604;7971:139;;;;8127:28;;;;:::i;7971:139::-;8082:17;;7789:27;8082:17;13653:2443:81;8075:24:86;:::o;7975:84::-;13653:2443:81;;;8009:16:86;13653:2443:81;;8009:16:86;:::i;:::-;13653:2443:81;;;8001:24:86;:57;;;;;7975:84;;;;;;;8001:57;8029:29;8038:8;;;8029:18;8038:8;8029:23;8038:8;;:::i;:::-;8029:18;;:::i;:::-;13653:2443:81;;;;;8029:23:86;13653:2443:81;;;;8029:29:86;;8001:57;;;;7884:77;7933:17;;;;;7789:27;7933:17;13653:2443:81;7926:24:86;:::o;7682:83::-;7726:28;;;;:::i;13653:2443:81:-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;13653:2443:81;;;;;;;;:::i;5907:716:76:-;6030:34;5907:716;6030:34;;;;:::i;:::-;13653:2443:81;;-1:-1:-1;;;6080:41:76;;-1:-1:-1;;;;;13653:2443:81;;;6080:41:76;;;13653:2443:81;;;;;6080:41:76;13653:2443:81;;;6090:13:76;13653:2443:81;;6080:41:76;;;;;;;-1:-1:-1;6080:41:76;;;5907:716;6079:42;;6075:90;;6266:27;13653:2443:81;2540:111:28;6210:14:76;13653:2443:81;2540:111:28;;;:::i;:::-;13653:2443:81;;;;;;-1:-1:-1;;;;;13653:2443:81;;-1:-1:-1;13653:2443:81;;;-1:-1:-1;13653:2443:81;;6210:14:76;6266:27;:::i;:::-;6080:41;6311:15;;13653:2443:81;;;;-1:-1:-1;;;;;;13653:2443:81;-1:-1:-1;;;;;13653:2443:81;;;;;;;;;;;-1:-1:-1;;;;;13653:2443:81;;;;6337:143:76;;5907:716;-1:-1:-1;6493:28:76;13653:2443:81;-1:-1:-1;;;;;13653:2443:81;;;;;;;6489:128:76;;5907:716;:::o;6489:128::-;6551:55;;;:::i;:::-;;5907:716::o;6337:143::-;6404:65;;;:::i;:::-;;6337:143;;;6075:90;13653:2443:81;;-1:-1:-1;;;6144:10:76;;6080:41;;6144:10;6080:41;;;;;;;;;;;;;;:::i;:::-;;;;13653:2443:81;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;13653:2443:81;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;13653:2443:81;;-1:-1:-1;13653:2443:81;;;-1:-1:-1;13653:2443:81;:::o;:::-;;;;;;;;;;;;8406:869:86;;;13653:2443:81;;8620:15:86;8578:11;8645:18;8678:7;8684:1;8678:7;;8674:241;;8406:869;8939:60;;;;;:::i;:::-;9014:8;;;9010:62;;9252:15;9259:7;13653:2443:81;9219:31:86;13653:2443:81;9130:48:86;9170:7;;;:::i;:::-;9130:48;13267:109;;;;;;13089:293;;9130:48;13653:2443:81;:::i;:::-;;9176:1:86;13653:2443:81;9232:17:86;13653:2443:81;;;;;;;;9232:17:86;;13653:2443:81;-1:-1:-1;;;;;13653:2443:81;;;;9219:12:86;;:31;:::i;:::-;13653:2443:81;;;;;;;;;9259:7:86;;:::i;:::-;13653:2443:81;;;;9252:15:86;9176:1;;9188:80;;8406:869::o;9010:62::-;8578:11;;-1:-1:-1;8578:11:86;;-1:-1:-1;8578:11:86;;;;9038:23::o;8674:241::-;8721:14;;;;;:::i;:::-;13653:2443:81;;;;;;;8939:60:86;13267:109;;8578:11;13267:109;8753:55;8759:49;13267:109;;8578:11;13267:109;;13653:2443:81;;;;;;8753:55:86;13653:2443:81;;;8753:55:86;13267:109;;;8828:10;8749:156;8674:241;;8749:156;8883:7;;;;;;:::i;:::-;8749:156;8674:241;;13653:2443:81;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;13653:2443:81;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;2121:740:79:-;;;;;13653:2443:81;;:::i;:::-;;;;2362:16:79;2358:92;;2121:740;-1:-1:-1;;2464:7:79;13653:2443:81;467:2:88;13653:2443:81;;;-1:-1:-1;;;;;13653:2443:81;;;2464:31:79;;;;;13653:2443:81;2464:56:79;;2121:740;2460:120;;;;-1:-1:-1;13653:2443:81;2637:67:79;;13653:2443:81;;2676:27:79;;2637;;:13;;-1:-1:-1;;;;;13653:2443:81;2637:13:79;13653:2443:81;2637:27:79;2676;;;;13653:2443:81;;;;;;;;;;;2637:67:79;;;2464:7;2637:67;;;:::i;:::-;;;;;;;;;;2611:198;2637:67;-1:-1:-1;2637:67:79;;;2121:740;2763:31;2722:73;2763:31;;13653:2443:81;2763:31:79;;;2722:73;;:::i;:::-;2611:198;;:::i;:::-;2823:21;;2121:740;:::o;2637:67::-;2722:73;2637:67;;;;2676:27;2637:67;2676:27;2637:67;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;2460:120;-1:-1:-1;;2547:21:79;;-1:-1:-1;;2536:33:79:o;2464:56::-;2499:8;13653:2443:81;;;-1:-1:-1;;;;;13653:2443:81;;;2499:21:79;;;-1:-1:-1;2464:56:79;;;;2358:92;2408:31;;;;;;;;;;;;;:::i;:::-;2358:92;;;;;2867:291;2977:7;13653:2443:81;2867:291:79;;13653:2443:81;;;;-1:-1:-1;;;;;13653:2443:81;;;2977:31:79;;;;13653:2443:81;2977:56:79;;2867:291;2973:95;;;;-1:-1:-1;13653:2443:81;2977:7:79;;13653:2443:81;3094:27:79;;:25;;:13;;-1:-1:-1;;;;;13653:2443:81;3094:13:79;13653:2443:81;3094:25:79;13653:2443:81;;-1:-1:-1;;;3094:27:79;;13653:2443:81;;;;;3094:27:79;;;;;;;3085:66;3094:27;-1:-1:-1;3094:27:79;;;2867:291;3123:27;;;13653:2443:81;;4459:15:76;13653:2443:81;;;;;;;3123:27:79;13653:2443:81;3085:66:79;;:::i;3094:27::-;3123;3094;;;;;;;;;;;;;;;:::i;:::-;;;;;2977:56;3012:8;13653:2443:81;;;-1:-1:-1;;;;;13653:2443:81;;;3012:21:79;;;-1:-1:-1;2977:56:79;;;;13653:2443:81;;;-1:-1:-1;;;13653:2443:81;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;-1:-1:-1;;;13653:2443:81;;;;;;;;;;;;;;;:::i;6999:207:86:-;;13653:2443:81;;9594:15:60;-1:-1:-1;9619:18:60;9652:7;9658:1;9652:7;;9648:234;;6999:207:86;9906:53:60;;;;;:::i;:::-;9977:8;;;:63;-1:-1:-1;9977:63:60;;-1:-1:-1;;;;;13653:2443:81;;7168:7:86;13653:2443:81;;;7178:12:86;;:17;:12;;:17;:::i;9977:63:60:-;9992:41;10025:7;9992:48;10025:7;;:::i;:::-;9992:41;13267:109:86;;;;;;13089:293;;9992:41:60;13653:2443:81;;;;;9992:48:60;9977:63;;;9648:234;9695:14;;;;;:::i;:::-;13653:2443:81;;;;;;;9906:53:60;13267:109:86;;-1:-1:-1;13267:109:86;13653:2443:81;13267:109:86;;;-1:-1:-1;13267:109:86;;13653:2443:81;;;;;9727:48:60;9723:149;13653:2443:81;;;9795:10:60;9723:149;9648:234;;9723:149;9850:7;;;;;;:::i;:::-;9723:149;9648:234;;13653:2443:81;;;;;;;:::i;:::-;-1:-1:-1;13653:2443:81;;;;;;;:::o;11486:272:86:-;;13653:2443:81;11308:22:60;11718:31:86;11486:272;13653:2443:81;;:::i;:::-;;;;:::i;:::-;;11308:22:60;;:::i;:::-;13653:2443:81;;:::i;:::-;;11718:12:86;13653:2443:81;;;;;11731:17:86;13653:2443:81;;;;;11731:17:86;;13653:2443:81;;11718:12:86;;:31;:::i;:::-;13653:2443:81;;;;;;;;;:::i;:::-;;;;;;11731:17:86;11672:79;;13653:2443:81;11486:272:86;:::o;6893:76:25:-;;;:::i;:::-;;;:::i;:::-;1805:1:28;-1:-1:-1;;;;;;;;;;;13653:2443:81;6893:76:25:o;13653:2443:81:-;;;;;;;:::i;:::-;-1:-1:-1;13653:2443:81;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;3423:520:79:-;13653:2443:81;;:::i;:::-;;3571:30:79;13653:2443:81;;3571:30:79;;;;;;;;;;;:::i;:::-;3654:14;;;13653:2443:81;;;;-1:-1:-1;;;3617:52:79;;;-1:-1:-1;;;;;13653:2443:81;;;3617:52:79;;;13653:2443:81;3654:14:79;;13653:2443:81;;;3654:14:79;13653:2443:81;;;3627:16:79;13653:2443:81;;3617:52:79;;;;;;;-1:-1:-1;3617:52:79;;;3423:520;3616:53;;3612:103;;3768:15;3730:54;3768:15;13653:2443:81;3768:15:79;;13653:2443:81;;;;;;;;;;;;;;;3730:54:79;;;-1:-1:-1;;;;;13653:2443:81;3617:52:79;3730:54;;13653:2443:81;;;;;-1:-1:-1;13653:2443:81;;;;;;;;;3730:54:79;;3740:17;;13653:2443:81;3730:54:79;;;;;;;-1:-1:-1;3730:54:79;;;3423:520;3729:55;;;3725:106;;13653:2443:81;3617:52:79;13653:2443:81;;-1:-1:-1;;;;;13653:2443:81;;;-1:-1:-1;;;;;;13653:2443:81;;;;;;;;;3875:26:79;13653:2443:81;;;;;;;;;;3919:17:79;3423:520;:::o;3725:106::-;13653:2443:81;;-1:-1:-1;;;3807:13:79;;3617:52;;3807:13;3730:54;;;;;;-1:-1:-1;3730:54:79;;;;;;:::i;:::-;;;;;3617:52;;;;;;;;;;;;;;:::i;:::-;;;;8587:1642:57;8658:6;;8654:45;;9401:7;10201:10;10142:26;10093;10044;9995;9946;9897;9848;13653:2443:81;10189:23:57;9401:7;8663:1;13653:2443:81;;;;10826:16:57;10822:99;;8587:1642;13653:2443:81;;;;10938:15:57;10934:96;;8587:1642;13653:2443:81;;;;11047:15:57;11043:96;;8587:1642;13653:2443:81;;;;11156:15:57;11152:96;;8587:1642;13653:2443:81;;;;11265:14:57;11261:93;;8587:1642;13653:2443:81;;;;11371:14:57;11367:93;;8587:1642;13653:2443:81;;;;11477:14:57;11473:93;;8587:1642;13653:2443:81;;;11579:64:57;;8587:1642;13653:2443:81;;;9858:10:57;;;;:::i;:::-;13653:2443:81;;;;;9848:26:57;9907:10;;;;:::i;9897:26::-;9956:10;;;;:::i;9946:26::-;10005:10;;;;:::i;9995:26::-;10054:10;;;;:::i;10044:26::-;10103:10;;;;:::i;10093:26::-;10152:10;;;;:::i;10142:26::-;10201:10;;;:::i;11579:64::-;13653:2443:81;;11579:64:57;;11473:93;13653:2443:81;11511:11:57;;13653:2443:81;;11473:93:57;;;;11367;13653:2443:81;11405:11:57;;13653:2443:81;;11367:93:57;;;;11261;13653:2443:81;11299:11:57;;13653:2443:81;;11261:93:57;;;;11152:96;13653:2443:81;11191:12:57;;13653:2443:81;;11152:96:57;;;;11043;13653:2443:81;11082:12:57;;13653:2443:81;;11043:96:57;;;;10934;13653:2443:81;10973:12:57;;13653:2443:81;;10934:96:57;;;;10822:99;10862:13;;;13653:2443:81;10822:99:57;;;;12497:447:86;;12694:10;;;;;;12926:11;;;12497:447;:::o;12687:230::-;12734:23;;;;;;;:::i;:::-;13267:109;;-1:-1:-1;13267:109:86;13653:2443:81;13267:109:86;;;-1:-1:-1;13267:109:86;;13653:2443:81;;;;;-1:-1:-1;12771:136:86;13653:2443:81;;;12830:10:86;12771:136;;12687:230;;;;12771:136;13653:2443:81;;12891:1:86;13653:2443:81;;;;;;12771:136:86;13653:2443:81;;:::i;2557:104:57:-;;2641:5;;;;;;:13;2557:104;:::o;2641:13::-;;;2557:104;:::o;10552:388:60:-;13653:2443:81;;10728:8:60;;;10752:20;;10690:17;10752:20;10690:17;10752:20;10690:17;10752:20;:::o;10724:210::-;13653:2443:81;;;;;;;;;;;13267:109:86;10690:17:60;13267:109:86;;10690:17:60;13267:109:86;;;13653:2443:81;:::i;:::-;;;;;;;13267:109:86;13653:2443:81;;;;;10911:11:60;;13653:2443:81;;10886:37:60;10870:1;10886:37;;;:::o;7084:141:25:-;13653:2443:81;-1:-1:-1;;;;;;;;;;;13653:2443:81;;;;7150:18:25;7146:73;;7084:141::o;7146:73::-;13653:2443:81;;-1:-1:-1;;;7191:17:25;;;;;2774:153:57;;2900:5;;;2910;;13653:2443:81;;;;;;;;;2774:153:57;:::o;13653:2443:81:-;;;-1:-1:-1;;;13653:2443:81;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;13653:2443:81;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;11513:870:60;13653:2443:81;;11513:870:60;;;13653:2443:81;11513:870:60;11672:7;;;;13653:2443:81;11775:28:60;11795:7;;;:::i;13653:2443:81:-;;;;;;;;;;;;;;;;11877:15:60;-1:-1:-1;11873:91:60;;13653:2443:81;;12233:11:60;13653:2443:81;;;12027:16:60;13653:2443:81;;;;;;;12027:16:60;;;;12083:7;12063:43;12083:7;;12063:28;12083:7;;:::i;:::-;12063:28;13267:109:86;;;;;;13089:293;;12063:28:60;13653:2443:81;;;;;;;;;;;;;;;;;12063:43:60;12233:11;13653:2443:81;-1:-1:-1;;;;;13653:2443:81;;;;12225:27:60;;:::o;12023:189::-;13653:2443:81;;;12145:52:60;13653:2443:81;12155:41:60;13653:2443:81;;:::i;:::-;;;;;;;;12155:41:60;-1:-1:-1;;;;;13653:2443:81;;12155:41:60;;;13653:2443:81;12145:52:60;:::i;:::-;12023:189;;11873:91;13653:2443:81;;-1:-1:-1;;;11919:30:60;;;;;11668:709;12283:52;13653:2443:81;;12293:41:60;13653:2443:81;;:::i;12293:41:60:-;-1:-1:-1;;;;;13653:2443:81;;12293:41:60;;;13653:2443:81;12145:52:60;:::i;12283:::-;11678:1;12349:17;;:::o;12736:433::-;;12919:10;;;;;;13151:11;;;12736:433;:::o;12912:230::-;12959:23;;;;;;;:::i;:::-;13267:109:86;;-1:-1:-1;13267:109:86;13653:2443:81;13267:109:86;;;-1:-1:-1;13267:109:86;;13653:2443:81;;;;;-1:-1:-1;12996:136:60;13653:2443:81;;;13055:10:60;12996:136;;12912:230;;;;12996:136;13653:2443:81;;13116:1:60;13653:2443:81;;;;;;12996:136:60;13653:2443:81;;:::i","linkReferences":{},"immutableReferences":{"57808":[{"start":1579,"length":32}],"57811":[{"start":3566,"length":32}],"58762":[{"start":989,"length":32},{"start":3623,"length":32},{"start":10158,"length":32}],"58765":[{"start":723,"length":32},{"start":8146,"length":32}],"58768":[{"start":791,"length":32},{"start":6209,"length":32},{"start":6512,"length":32}],"58771":[{"start":859,"length":32},{"start":6056,"length":32},{"start":6638,"length":32}],"60387":[{"start":3099,"length":32},{"start":10279,"length":32}],"62161":[{"start":2991,"length":32},{"start":4969,"length":32}],"62163":[{"start":2757,"length":32},{"start":5130,"length":32}],"62165":[{"start":3314,"length":32}],"62368":[{"start":3697,"length":32}]}},"methodIdentifiers":{"BASE_DELEGATOR_HINTS()":"79d89614","DEFAULT_ADMIN_ROLE()":"a217fddf","FACTORY()":"2dd31000","HOOK_GAS_LIMIT()":"ff54740f","HOOK_RESERVE()":"557cab44","HOOK_SET_ROLE()":"6679191e","NETWORK_REGISTRY()":"c0cd7c3e","OPERATOR_NETWORK_OPT_IN_SERVICE()":"1a80e500","OPERATOR_REGISTRY()":"83ce0322","OPERATOR_VAULT_OPT_IN_SERVICE()":"128e5d82","OPT_IN_SERVICE_HINTS()":"9b656b22","TYPE()":"bb24fe8a","VAULT_FACTORY()":"103f2907","VAULT_HINTS()":"45e78fcb","VERSION()":"ffa1ad74","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","hook()":"7f5a7c7b","initialize(bytes)":"439fab91","maxNetworkLimit(bytes32)":"d15b740e","maxNetworkLimitAt(bytes32,uint48,bytes)":"437224a3","maxNetworkLimitHint(address,bytes32,uint48)":"991d1162","maxNetworkLimitHintInternal(bytes32,uint48)":"d0f1f901","network()":"6739afca","onSlash(bytes32,address,uint256,uint48,bytes)":"e49561ee","operator()":"570ca735","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","setHook(address)":"3dfd3873","setMaxNetworkLimit(uint96,uint256)":"23f752d5","stake(bytes32,address)":"fd4d447c","stakeAt(bytes32,address,uint48,bytes)":"e02f6937","stakeHints(address,bytes32,address,uint48)":"25dc9708","staticDelegateCall(address,bytes)":"9f86fd85","supportsInterface(bytes4)":"01ffc9a7","vault()":"fbfa77cf"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"baseDelegatorHints\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"vaultHints\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"optInServiceHints\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadySet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CheckpointUnorderedInsertion\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExternalCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientHookGas\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidNetwork\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotNetwork\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotOperator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotSlasher\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"}],\"name\":\"OnSlash\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"hook\",\"type\":\"address\"}],\"name\":\"SetHook\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"SetMaxNetworkLimit\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BASE_DELEGATOR_HINTS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HOOK_GAS_LIMIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HOOK_RESERVE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HOOK_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NETWORK_REGISTRY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_NETWORK_OPT_IN_SERVICE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_REGISTRY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_VAULT_OPT_IN_SERVICE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPT_IN_SERVICE_HINTS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TYPE\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VAULT_FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VAULT_HINTS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VERSION\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hook\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"}],\"name\":\"maxNetworkLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"maxNetworkLimitAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"maxNetworkLimitHint\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"maxNetworkLimitHintInternal\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"exists\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"hint\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"network\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"hook_\",\"type\":\"address\"}],\"name\":\"setHook\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint96\",\"name\":\"identifier\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"setMaxNetworkLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"stake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hints\",\"type\":\"bytes\"}],\"name\":\"stakeAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"stakeHints\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"staticDelegateCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"CheckpointUnorderedInsertion()\":[{\"details\":\"A value was attempted to be inserted on a past checkpoint.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"OnSlash(bytes32,address,uint256,uint48)\":{\"params\":{\"amount\":\"amount of the collateral to be slashed\",\"captureTimestamp\":\"time point when the stake was captured\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"SetHook(address)\":{\"params\":{\"hook\":\"address of the hook\"}},\"SetMaxNetworkLimit(bytes32,uint256)\":{\"params\":{\"amount\":\"new maximum subnetwork's limit (how much stake the subnetwork is ready to get)\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}}},\"kind\":\"dev\",\"methods\":{\"VERSION()\":{\"details\":\"Must return 1 for this one.\",\"returns\":{\"_0\":\"version of the delegator\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize(bytes)\":{\"params\":{\"data\":\"some data to use\"}},\"maxNetworkLimitAt(bytes32,uint48,bytes)\":{\"params\":{\"hint\":\"hint for checkpoint index\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\",\"timestamp\":\"time point to get the maximum subnetwork limit at\"},\"returns\":{\"_0\":\"maximum limit of the subnetwork\"}},\"onSlash(bytes32,address,uint256,uint48,bytes)\":{\"details\":\"Only the vault's slasher can call this function.\",\"params\":{\"amount\":\"amount of the collateral slashed\",\"captureTimestamp\":\"time point when the stake was captured\",\"data\":\"some additional data\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"setHook(address)\":{\"details\":\"Only a HOOK_SET_ROLE holder can call this function. The hook can have arbitrary logic under certain functions, however, it doesn't affect the stake guarantees.\",\"params\":{\"hook\":\"address of the hook\"}},\"setMaxNetworkLimit(uint96,uint256)\":{\"details\":\"Only a network can call this function.\",\"params\":{\"amount\":\"new maximum subnetwork's limit\"}},\"stake(bytes32,address)\":{\"details\":\"Warning: this function is not safe to use for stake capturing, as it can change by the end of the block.\",\"params\":{\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"_0\":\"slashable stake until the end of the next epoch\"}},\"stakeAt(bytes32,address,uint48,bytes)\":{\"details\":\"Warning: it is not safe to use timestamp >= current one for the stake capturing, as it can change later.\",\"params\":{\"hints\":\"hints for the checkpoints' indexes\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\",\"timestamp\":\"time point to capture the stake at\"},\"returns\":{\"_0\":\"slashable stake at the given timestamp until the end of the consequent epoch\"}},\"staticDelegateCall(address,bytes)\":{\"details\":\"It allows to use this contract's storage on-chain.\",\"params\":{\"data\":\"data to make a delegatecall with\",\"target\":\"address of the contract to make a delegatecall to\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"events\":{\"OnSlash(bytes32,address,uint256,uint48)\":{\"notice\":\"Emitted when a slash happens.\"},\"SetHook(address)\":{\"notice\":\"Emitted when a hook is set.\"},\"SetMaxNetworkLimit(bytes32,uint256)\":{\"notice\":\"Emitted when a subnetwork's maximum limit is set.\"}},\"kind\":\"user\",\"methods\":{\"FACTORY()\":{\"notice\":\"Get the factory's address.\"},\"HOOK_GAS_LIMIT()\":{\"notice\":\"Get a gas limit for the hook.\"},\"HOOK_RESERVE()\":{\"notice\":\"Get a reserve gas between the gas limit check and the hook's execution.\"},\"HOOK_SET_ROLE()\":{\"notice\":\"Get a hook setter's role.\"},\"NETWORK_REGISTRY()\":{\"notice\":\"Get the network registry's address.\"},\"OPERATOR_NETWORK_OPT_IN_SERVICE()\":{\"notice\":\"Get the operator-network opt-in service's address.\"},\"OPERATOR_REGISTRY()\":{\"notice\":\"Get the operator registry's address.\"},\"OPERATOR_VAULT_OPT_IN_SERVICE()\":{\"notice\":\"Get the operator-vault opt-in service's address.\"},\"TYPE()\":{\"notice\":\"Get the entity's type.\"},\"VAULT_FACTORY()\":{\"notice\":\"Get the vault factory's address.\"},\"VERSION()\":{\"notice\":\"Get a version of the delegator (different versions mean different interfaces).\"},\"hook()\":{\"notice\":\"Get the hook's address.\"},\"initialize(bytes)\":{\"notice\":\"Initialize this entity contract by using a given data.\"},\"maxNetworkLimit(bytes32)\":{\"notice\":\"Get a particular subnetwork's maximum limit (meaning the subnetwork is not ready to get more as a stake).\"},\"maxNetworkLimitAt(bytes32,uint48,bytes)\":{\"notice\":\"Get a particular subnetwork's maximum limit at a given timestamp using a hint (meaning the subnetwork is not ready to get more as a stake).\"},\"network()\":{\"notice\":\"Get a network the vault delegates funds to.\"},\"onSlash(bytes32,address,uint256,uint48,bytes)\":{\"notice\":\"Called when a slash happens.\"},\"operator()\":{\"notice\":\"Get an operator managing the vault's funds.\"},\"setHook(address)\":{\"notice\":\"Set a new hook.\"},\"setMaxNetworkLimit(uint96,uint256)\":{\"notice\":\"Set a maximum limit for a subnetwork (how much stake the subnetwork is ready to get). identifier identifier of the subnetwork\"},\"stake(bytes32,address)\":{\"notice\":\"Get a stake that a given subnetwork will be able to slash for a certain operator until the end of the next epoch (if no cross-slashing and no slashings by the subnetwork).\"},\"stakeAt(bytes32,address,uint48,bytes)\":{\"notice\":\"Get a stake that a given subnetwork could be able to slash for a certain operator at a given timestamp until the end of the consequent epoch using hints (if no cross-slashing and no slashings by the subnetwork).\"},\"staticDelegateCall(address,bytes)\":{\"notice\":\"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data).\"},\"vault()\":{\"notice\":\"Get the vault's address.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/hints/DelegatorHints.sol\":\"OperatorNetworkSpecificDelegatorHints\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://942dad22fbdc1669f025540ba63aa3ccfad5f8458fc5d4525b31ebf272e7af45\",\"dweb:/ipfs/Qmdo4X2M82aM3AMoW2kf2jhYkSCyC4T1pHNd6obdsDFnAB\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45\",\"dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26\",\"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol\":{\"keccak256\":\"0x85a45f3f10014a0f8be41157a32b6a5f905753ea64a4b64e29fc12b7deeecf39\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c3c74009ce36136b36c77c23935b8e4a7b4f253be2da2be4fb4a916b1ce43743\",\"dweb:/ipfs/QmcH36v3iN7SJJuF73AunLR2LtNxhVJ1wm63ph4dPZ4pcL\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x18a7171df639a934592915a520ecb97c5bbc9675a1105607aac8a94e72bf62c6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7478e1f13da69a2867ccd883001d836b75620362e743f196376d63ed0c422a1c\",\"dweb:/ipfs/QmWywcQ9TNfwtoqAxbn25d8C5VrV12PrPS9UjtGe6pL2BA\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xeed0a08b0b091f528356cbc7245891a4c748682d4f6a18055e8e6ca77d12a6cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba80ba06c8e6be852847e4c5f4492cef801feb6558ae09ed705ff2e04ea8b13c\",\"dweb:/ipfs/QmXRJDv3xHLVQCVXg1ZvR35QS9sij5y9NDWYzMfUfAdTHF\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x999f705a027ed6dc2d4e0df2cc4a509852c6bfd11de1c8161bf88832d0503fd0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0798def67258d9a3cc20b2b4da7ebf351a5cefe0abfdd665d2d81f8e32f89b21\",\"dweb:/ipfs/QmPEvJosnPfzHNjKvCv2D3891mA2Ww8eUwkqrxBjuYdHCt\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0xba333517a3add42cd35fe877656fc3dfcc9de53baa4f3aabbd6d12a92e4ea435\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ceacff44c0fdc81e48e0e0b1db87a2076d3c1fb497341de077bf1da9f6b406c\",\"dweb:/ipfs/QmRUo1muMRAewxrKQ7TkXUtknyRoR57AyEkoPpiuZQ8FzX\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/SignatureChecker.sol\":{\"keccak256\":\"0x6b11eb41a228cca35d4b662b4df69fcd75192851365102690f57b2ac01e83fe6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab006a2983ed350d2af21ddcdd835dcae3b8340086cc4d088460da5abd041f69\",\"dweb:/ipfs/QmbEacDhkJZiGrgzLjB4pNtE8Z1uudjDw1DvcDUTVQFsLG\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c\",\"dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0xbdc5e074d7dd6678f67e92b1a51a20226801a407b0e1af3da367c5d1ff4519ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a36cca6b22fff3db16fc789ff6c60eea71d4b156065d4d0c83a0bc5e91a77a8b\",\"dweb:/ipfs/QmYN3exd5AemxjBrN8XMB1p5LbbE16uC3sjbYjwi8AjcGR\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0xc7755af115020049e4140f224f9ee88d7e1799ffb0646f37bf0df24bf6213f58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f09bf94d5274334ec021f61a04659db303f31e60460e14b709c9bf187740111\",\"dweb:/ipfs/QmNvgomZYUwFAt4cZbPWAiTeSZQreGehY9BK5xyVJsUttb\"]},\"src/contracts/common/Entity.sol\":{\"keccak256\":\"0x3d61a932995b8443381f3950542d388223a2c26dd5d29a3274dea3baa7388bd7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7cdf5f03ca72fd263fd32ff59c8d88ddca911ae83896a287d10772c1bbe9b138\",\"dweb:/ipfs/QmbP84r5BWT1Rn9AYTntWSf3xUMTTCohTZJFhbBhDXFoHa\"]},\"src/contracts/common/MigratableEntity.sol\":{\"keccak256\":\"0x2d736f4dacd5d7e7697503bc426c78b8250fe1694ca157965ec178da6807de58\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f1237acf96b4b9f9b69156e068eddd726a6e15bd8e87a18dc999cd4ba4da069c\",\"dweb:/ipfs/QmS6M8fiFFSeuJ4ZKKq1z8W7w4ybeHQSy5TLASGoc1LVic\"]},\"src/contracts/common/StaticDelegateCallable.sol\":{\"keccak256\":\"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764\",\"dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD\"]},\"src/contracts/delegator/BaseDelegator.sol\":{\"keccak256\":\"0x7c54d491fdd4415b764a9c8defa068e56d4c0c8c9419be0053a1d377669290e8\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://9238bfbad0f6eeb0dc7727724de14380f1980b395902269703d5e2ef07e52e10\",\"dweb:/ipfs/QmPJn1V4HNXcEghYvogGuSTF24dSQUPosR5qtsXcmNqRm3\"]},\"src/contracts/delegator/FullRestakeDelegator.sol\":{\"keccak256\":\"0x0a81c4f8e72914563a9cb771e93acf889c71ea36b7bec040e4eb562b199d5af1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6fc66b6ba02da77046a0bbbd1dd407a62c08f52e04486c9cbd2cb1cca3da555f\",\"dweb:/ipfs/QmZQivK1ZnMxfRQQ5aLpV9co5u55wQVNev5Rg1hzAqxhkE\"]},\"src/contracts/delegator/NetworkRestakeDelegator.sol\":{\"keccak256\":\"0xd3a8e6522f9c6fdcc2da837c9023afd6bdff2bce45a35590320c475519e3636d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://58b17a87f6554f08376f9ea7fedf486a4aa75801bf0ad8b23ff5a46959b6b7a3\",\"dweb:/ipfs/QmSTmNh67tYt8CmjVZb57r8N3qX5yeYdMApKPJm3qvQgQw\"]},\"src/contracts/delegator/OperatorNetworkSpecificDelegator.sol\":{\"keccak256\":\"0x031a10722b9ec49048f0952710401131290adb87e71caf294e864e7ac3b98a16\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://72428febc875134b2f29205e6f294634a1c22a7d5c78d6a9cb2f8196f107c9b5\",\"dweb:/ipfs/QmTPwXR6h5oytckmkLrHdKeEMdphJxceDhYUR4zvQeWAwY\"]},\"src/contracts/delegator/OperatorSpecificDelegator.sol\":{\"keccak256\":\"0x630ce62fa30b9f3349ab7a8cf8dbf041319febc6dd757be2f94d3d25944ed328\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c2ac59d47ce57d2a6819ae9833e1a618a371eccff93eb5ab367b201b01f42bfa\",\"dweb:/ipfs/QmdBpGMBivpNPv2WbH8vnCUy5xkVeaxQvGgqi33vKCz1kA\"]},\"src/contracts/hints/DelegatorHints.sol\":{\"keccak256\":\"0x44aa0c396311a54afbc7c73e8dadeed41e3165a4fd13f712b27d63d50fc3376d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://2f255214f3531fc707d88be0d56a7a0aed4180439316d099d760d9118aa83093\",\"dweb:/ipfs/QmZD1w5p1ukJSXumUAjvxwGmkPhn7vsr21Y2atLGEZR2oi\"]},\"src/contracts/hints/Hints.sol\":{\"keccak256\":\"0x8b565df1ae35993c097a9e642002782a8f451f6fd01809cad6bcd345bdf1b99c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://99a19adb01e350a92f534095b3078229df1f2f83077992d75d58d8684be45971\",\"dweb:/ipfs/QmbmwcuswVbzvwHQFTtrJG86oV98GnfxqYTb8cV8u1acox\"]},\"src/contracts/hints/OptInServiceHints.sol\":{\"keccak256\":\"0x95d9407900d27b9f4a1233b772aeed809c07b2dc5b31cfc9fa77ca26514c49e5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://a13a8877e312d7e6b8b85bde3668c5d84ff5ecc83f762cd573f2b7104c64eb42\",\"dweb:/ipfs/QmYV2J55acuGzCNnS3juABuUHY5U1xc8g8o9jwEyFFdeG5\"]},\"src/contracts/hints/VaultHints.sol\":{\"keccak256\":\"0xccb505b7159b769cc114d67b87c2de6b106557f667fc8f3780114baad5c3c442\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6d0c80a908fc16e96a8b5605a0bd53f9e89ad0ef0a738fbbae80ba4d3160749b\",\"dweb:/ipfs/QmXo5UtWoR8YmunqcbBU8rQMm1nvmvjNPoXcVrDhh4pEwR\"]},\"src/contracts/libraries/Checkpoints.sol\":{\"keccak256\":\"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609\",\"dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE\"]},\"src/contracts/libraries/ERC4626Math.sol\":{\"keccak256\":\"0x8441160513c1cbeb1c3b9ee077bcc7e7ce20006b52a77c8dd39ff0ef89699939\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://943f8cc3e26ddf649f465f40c909819f5c864717c4baa339e9e403b9374a4653\",\"dweb:/ipfs/QmXPxi1sUDsrGprZdUgCzoPEosaZMv9ZhygWQ1vAi1phAB\"]},\"src/contracts/libraries/Subnetwork.sol\":{\"keccak256\":\"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56\",\"dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32\"]},\"src/contracts/service/OptInService.sol\":{\"keccak256\":\"0x4e0932077f2686b7990e10d59deb2535334c0d09e52ef6e57c6ab09eca21c4b1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7c00d311032ed4a1743aca7475f3c86ce15cdfc2218108efc3731c03d34a5278\",\"dweb:/ipfs/QmUGGfVwVhaHr5kS4177yKKYiLYzi5qZpkEmvYxBZqazxf\"]},\"src/contracts/vault/Vault.sol\":{\"keccak256\":\"0x2ceff6ed3298c4cad144c99fcc79b51cb9397d6ebef00285b915848b476f8c2e\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://11f2fb3581854f3ab6e82e8d4935d9eb510c903a13c3f022346c2956a58f5307\",\"dweb:/ipfs/QmdUnoXoyYoG9SGWyQZCFyLDRUUX3eXyXetkRvw6jxqqBz\"]},\"src/contracts/vault/VaultStorage.sol\":{\"keccak256\":\"0x57db25b127d77ea3472de53e3a4af3354399655b9268638b99ca5925fa364a56\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://aa763d9a6ec508ae3abfb8228b72b9fd9525279e5135d4962e79ff059feb1173\",\"dweb:/ipfs/QmcbDR6E9wyEpu6V2FkEC4hnWy47zXA9LSKJde6zSGd33Q\"]},\"src/interfaces/common/IEntity.sol\":{\"keccak256\":\"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b\",\"dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv\"]},\"src/interfaces/common/IMigratableEntity.sol\":{\"keccak256\":\"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c\",\"dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds\"]},\"src/interfaces/common/IRegistry.sol\":{\"keccak256\":\"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014\",\"dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK\"]},\"src/interfaces/common/IStaticDelegateCallable.sol\":{\"keccak256\":\"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516\",\"dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi\"]},\"src/interfaces/delegator/IBaseDelegator.sol\":{\"keccak256\":\"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2\",\"dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8\"]},\"src/interfaces/delegator/IDelegatorHook.sol\":{\"keccak256\":\"0xc51aa8d7d1f6c8043ee819b7aeb86da0e993912e1442098df897e299f01f9f46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://adddf5cb2ba282aeb576b26efb28640f865a1721cc9b6eee8b3ee0457a2c9780\",\"dweb:/ipfs/QmNYgAmnLRwWZbhTuQhZs9rx4zcme1df5mEepkrniorSoW\"]},\"src/interfaces/delegator/IFullRestakeDelegator.sol\":{\"keccak256\":\"0xa3c8cb2e45d4d8ce90e95263bea40c01dc400f05ad65bc29597d878606be5e7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://782cf5e201aa4cca037ebafd3807a68ff1cc721d5b8416a35244db0d0607369e\",\"dweb:/ipfs/QmQkJks6x7CKndeTPa9LxgTNygD5uEi7obhADhpq1Lsr9A\"]},\"src/interfaces/delegator/INetworkRestakeDelegator.sol\":{\"keccak256\":\"0xe7030fe30389a147fd710e3436ec346b4842695fd3e65a81b95375c9f1d633fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://739c7e66d301778054f5c90bee45ec9438f68afba8a03eaaac52064c73b115ad\",\"dweb:/ipfs/QmfZ2ytKcTykAc76nxhg8ikUXV8NdBpetqb8W4YWPcox1Z\"]},\"src/interfaces/delegator/IOperatorNetworkSpecificDelegator.sol\":{\"keccak256\":\"0x74b95e64d29769202d45dd277bb830f623ff3d41ce77b80ce3ee4e318a5c71ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e512b903aae5c1b8a028c6e3f4f6223b5cb5d704503cfa6bd37b5346868f5c20\",\"dweb:/ipfs/QmZim9YExsPWtyxyeui993HTKAEmrg8MUcSkZ77Gp2JcuZ\"]},\"src/interfaces/delegator/IOperatorSpecificDelegator.sol\":{\"keccak256\":\"0x72075cab585dc17240cc3e32bc99b92f0d5627ddd988fed680e3e1a52d5a01e4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7448bc90699409ae61d85216b5efc2143a37f0f73354be2aea993bc54afca441\",\"dweb:/ipfs/QmXE4gAxM8pHosZK8mcTcj17puBx484meDCcmrDePskGHZ\"]},\"src/interfaces/service/IOptInService.sol\":{\"keccak256\":\"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337\",\"dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24\"]},\"src/interfaces/slasher/IBaseSlasher.sol\":{\"keccak256\":\"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf\",\"dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx\"]},\"src/interfaces/vault/IVault.sol\":{\"keccak256\":\"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9\",\"dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R\"]},\"src/interfaces/vault/IVaultStorage.sol\":{\"keccak256\":\"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e\",\"dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"baseDelegatorHints","type":"address"},{"internalType":"address","name":"vaultHints","type":"address"},{"internalType":"address","name":"optInServiceHints","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"inputs":[],"type":"error","name":"AlreadySet"},{"inputs":[],"type":"error","name":"CheckpointUnorderedInsertion"},{"inputs":[],"type":"error","name":"ExternalCall"},{"inputs":[],"type":"error","name":"InsufficientHookGas"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"InvalidNetwork"},{"inputs":[],"type":"error","name":"NotInitialized"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"NotNetwork"},{"inputs":[],"type":"error","name":"NotOperator"},{"inputs":[],"type":"error","name":"NotSlasher"},{"inputs":[],"type":"error","name":"NotVault"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintDowncast"},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint48","name":"captureTimestamp","type":"uint48","indexed":false}],"type":"event","name":"OnSlash","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[{"internalType":"address","name":"hook","type":"address","indexed":true}],"type":"event","name":"SetHook","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"SetMaxNetworkLimit","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"BASE_DELEGATOR_HINTS","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HOOK_GAS_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HOOK_RESERVE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HOOK_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"NETWORK_REGISTRY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_NETWORK_OPT_IN_SERVICE","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_REGISTRY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_VAULT_OPT_IN_SERVICE","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPT_IN_SERVICE_HINTS","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"TYPE","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VAULT_FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VAULT_HINTS","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"VERSION","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"hook","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"}],"stateMutability":"view","type":"function","name":"maxNetworkLimit","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"maxNetworkLimitAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"},{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"maxNetworkLimitHint","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"maxNetworkLimitHintInternal","outputs":[{"internalType":"bool","name":"exists","type":"bool"},{"internalType":"uint32","name":"hint","type":"uint32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"network","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint48","name":"captureTimestamp","type":"uint48"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"onSlash"},{"inputs":[],"stateMutability":"view","type":"function","name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"address","name":"hook_","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setHook"},{"inputs":[{"internalType":"uint96","name":"identifier","type":"uint96"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setMaxNetworkLimit"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"stake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hints","type":"bytes"}],"stateMutability":"view","type":"function","name":"stakeAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"},{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"stakeHints","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"staticDelegateCall"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"vault","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"VERSION()":{"details":"Must return 1 for this one.","returns":{"_0":"version of the delegator"}},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"initialize(bytes)":{"params":{"data":"some data to use"}},"maxNetworkLimitAt(bytes32,uint48,bytes)":{"params":{"hint":"hint for checkpoint index","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)","timestamp":"time point to get the maximum subnetwork limit at"},"returns":{"_0":"maximum limit of the subnetwork"}},"onSlash(bytes32,address,uint256,uint48,bytes)":{"details":"Only the vault's slasher can call this function.","params":{"amount":"amount of the collateral slashed","captureTimestamp":"time point when the stake was captured","data":"some additional data","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"}},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"setHook(address)":{"details":"Only a HOOK_SET_ROLE holder can call this function. The hook can have arbitrary logic under certain functions, however, it doesn't affect the stake guarantees.","params":{"hook":"address of the hook"}},"setMaxNetworkLimit(uint96,uint256)":{"details":"Only a network can call this function.","params":{"amount":"new maximum subnetwork's limit"}},"stake(bytes32,address)":{"details":"Warning: this function is not safe to use for stake capturing, as it can change by the end of the block.","params":{"operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"_0":"slashable stake until the end of the next epoch"}},"stakeAt(bytes32,address,uint48,bytes)":{"details":"Warning: it is not safe to use timestamp >= current one for the stake capturing, as it can change later.","params":{"hints":"hints for the checkpoints' indexes","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)","timestamp":"time point to capture the stake at"},"returns":{"_0":"slashable stake at the given timestamp until the end of the consequent epoch"}},"staticDelegateCall(address,bytes)":{"details":"It allows to use this contract's storage on-chain.","params":{"data":"data to make a delegatecall with","target":"address of the contract to make a delegatecall to"}},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."}},"version":1},"userdoc":{"kind":"user","methods":{"FACTORY()":{"notice":"Get the factory's address."},"HOOK_GAS_LIMIT()":{"notice":"Get a gas limit for the hook."},"HOOK_RESERVE()":{"notice":"Get a reserve gas between the gas limit check and the hook's execution."},"HOOK_SET_ROLE()":{"notice":"Get a hook setter's role."},"NETWORK_REGISTRY()":{"notice":"Get the network registry's address."},"OPERATOR_NETWORK_OPT_IN_SERVICE()":{"notice":"Get the operator-network opt-in service's address."},"OPERATOR_REGISTRY()":{"notice":"Get the operator registry's address."},"OPERATOR_VAULT_OPT_IN_SERVICE()":{"notice":"Get the operator-vault opt-in service's address."},"TYPE()":{"notice":"Get the entity's type."},"VAULT_FACTORY()":{"notice":"Get the vault factory's address."},"VERSION()":{"notice":"Get a version of the delegator (different versions mean different interfaces)."},"hook()":{"notice":"Get the hook's address."},"initialize(bytes)":{"notice":"Initialize this entity contract by using a given data."},"maxNetworkLimit(bytes32)":{"notice":"Get a particular subnetwork's maximum limit (meaning the subnetwork is not ready to get more as a stake)."},"maxNetworkLimitAt(bytes32,uint48,bytes)":{"notice":"Get a particular subnetwork's maximum limit at a given timestamp using a hint (meaning the subnetwork is not ready to get more as a stake)."},"network()":{"notice":"Get a network the vault delegates funds to."},"onSlash(bytes32,address,uint256,uint48,bytes)":{"notice":"Called when a slash happens."},"operator()":{"notice":"Get an operator managing the vault's funds."},"setHook(address)":{"notice":"Set a new hook."},"setMaxNetworkLimit(uint96,uint256)":{"notice":"Set a maximum limit for a subnetwork (how much stake the subnetwork is ready to get). identifier identifier of the subnetwork"},"stake(bytes32,address)":{"notice":"Get a stake that a given subnetwork will be able to slash for a certain operator until the end of the next epoch (if no cross-slashing and no slashings by the subnetwork)."},"stakeAt(bytes32,address,uint48,bytes)":{"notice":"Get a stake that a given subnetwork could be able to slash for a certain operator at a given timestamp until the end of the consequent epoch using hints (if no cross-slashing and no slashings by the subnetwork)."},"staticDelegateCall(address,bytes)":{"notice":"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data)."},"vault()":{"notice":"Get the vault's address."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/hints/DelegatorHints.sol":"OperatorNetworkSpecificDelegatorHints"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol":{"keccak256":"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74","urls":["bzz-raw://942dad22fbdc1669f025540ba63aa3ccfad5f8458fc5d4525b31ebf272e7af45","dweb:/ipfs/Qmdo4X2M82aM3AMoW2kf2jhYkSCyC4T1pHNd6obdsDFnAB"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8","urls":["bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45","dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41","urls":["bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26","dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol":{"keccak256":"0x85a45f3f10014a0f8be41157a32b6a5f905753ea64a4b64e29fc12b7deeecf39","urls":["bzz-raw://c3c74009ce36136b36c77c23935b8e4a7b4f253be2da2be4fb4a916b1ce43743","dweb:/ipfs/QmcH36v3iN7SJJuF73AunLR2LtNxhVJ1wm63ph4dPZ4pcL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol":{"keccak256":"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92","urls":["bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a","dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70","urls":["bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c","dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff","urls":["bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d","dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386","urls":["bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0","dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721","urls":["bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245","dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol":{"keccak256":"0x18a7171df639a934592915a520ecb97c5bbc9675a1105607aac8a94e72bf62c6","urls":["bzz-raw://7478e1f13da69a2867ccd883001d836b75620362e743f196376d63ed0c422a1c","dweb:/ipfs/QmWywcQ9TNfwtoqAxbn25d8C5VrV12PrPS9UjtGe6pL2BA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418","urls":["bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c","dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792","urls":["bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453","dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0xeed0a08b0b091f528356cbc7245891a4c748682d4f6a18055e8e6ca77d12a6cf","urls":["bzz-raw://ba80ba06c8e6be852847e4c5f4492cef801feb6558ae09ed705ff2e04ea8b13c","dweb:/ipfs/QmXRJDv3xHLVQCVXg1ZvR35QS9sij5y9NDWYzMfUfAdTHF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol":{"keccak256":"0x999f705a027ed6dc2d4e0df2cc4a509852c6bfd11de1c8161bf88832d0503fd0","urls":["bzz-raw://0798def67258d9a3cc20b2b4da7ebf351a5cefe0abfdd665d2d81f8e32f89b21","dweb:/ipfs/QmPEvJosnPfzHNjKvCv2D3891mA2Ww8eUwkqrxBjuYdHCt"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0xba333517a3add42cd35fe877656fc3dfcc9de53baa4f3aabbd6d12a92e4ea435","urls":["bzz-raw://2ceacff44c0fdc81e48e0e0b1db87a2076d3c1fb497341de077bf1da9f6b406c","dweb:/ipfs/QmRUo1muMRAewxrKQ7TkXUtknyRoR57AyEkoPpiuZQ8FzX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/SignatureChecker.sol":{"keccak256":"0x6b11eb41a228cca35d4b662b4df69fcd75192851365102690f57b2ac01e83fe6","urls":["bzz-raw://ab006a2983ed350d2af21ddcdd835dcae3b8340086cc4d088460da5abd041f69","dweb:/ipfs/QmbEacDhkJZiGrgzLjB4pNtE8Z1uudjDw1DvcDUTVQFsLG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe","urls":["bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c","dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72","urls":["bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc","dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol":{"keccak256":"0xbdc5e074d7dd6678f67e92b1a51a20226801a407b0e1af3da367c5d1ff4519ad","urls":["bzz-raw://a36cca6b22fff3db16fc789ff6c60eea71d4b156065d4d0c83a0bc5e91a77a8b","dweb:/ipfs/QmYN3exd5AemxjBrN8XMB1p5LbbE16uC3sjbYjwi8AjcGR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0xc7755af115020049e4140f224f9ee88d7e1799ffb0646f37bf0df24bf6213f58","urls":["bzz-raw://7f09bf94d5274334ec021f61a04659db303f31e60460e14b709c9bf187740111","dweb:/ipfs/QmNvgomZYUwFAt4cZbPWAiTeSZQreGehY9BK5xyVJsUttb"],"license":"MIT"},"src/contracts/common/Entity.sol":{"keccak256":"0x3d61a932995b8443381f3950542d388223a2c26dd5d29a3274dea3baa7388bd7","urls":["bzz-raw://7cdf5f03ca72fd263fd32ff59c8d88ddca911ae83896a287d10772c1bbe9b138","dweb:/ipfs/QmbP84r5BWT1Rn9AYTntWSf3xUMTTCohTZJFhbBhDXFoHa"],"license":"BUSL-1.1"},"src/contracts/common/MigratableEntity.sol":{"keccak256":"0x2d736f4dacd5d7e7697503bc426c78b8250fe1694ca157965ec178da6807de58","urls":["bzz-raw://f1237acf96b4b9f9b69156e068eddd726a6e15bd8e87a18dc999cd4ba4da069c","dweb:/ipfs/QmS6M8fiFFSeuJ4ZKKq1z8W7w4ybeHQSy5TLASGoc1LVic"],"license":"BUSL-1.1"},"src/contracts/common/StaticDelegateCallable.sol":{"keccak256":"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90","urls":["bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764","dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD"],"license":"BUSL-1.1"},"src/contracts/delegator/BaseDelegator.sol":{"keccak256":"0x7c54d491fdd4415b764a9c8defa068e56d4c0c8c9419be0053a1d377669290e8","urls":["bzz-raw://9238bfbad0f6eeb0dc7727724de14380f1980b395902269703d5e2ef07e52e10","dweb:/ipfs/QmPJn1V4HNXcEghYvogGuSTF24dSQUPosR5qtsXcmNqRm3"],"license":"BUSL-1.1"},"src/contracts/delegator/FullRestakeDelegator.sol":{"keccak256":"0x0a81c4f8e72914563a9cb771e93acf889c71ea36b7bec040e4eb562b199d5af1","urls":["bzz-raw://6fc66b6ba02da77046a0bbbd1dd407a62c08f52e04486c9cbd2cb1cca3da555f","dweb:/ipfs/QmZQivK1ZnMxfRQQ5aLpV9co5u55wQVNev5Rg1hzAqxhkE"],"license":"BUSL-1.1"},"src/contracts/delegator/NetworkRestakeDelegator.sol":{"keccak256":"0xd3a8e6522f9c6fdcc2da837c9023afd6bdff2bce45a35590320c475519e3636d","urls":["bzz-raw://58b17a87f6554f08376f9ea7fedf486a4aa75801bf0ad8b23ff5a46959b6b7a3","dweb:/ipfs/QmSTmNh67tYt8CmjVZb57r8N3qX5yeYdMApKPJm3qvQgQw"],"license":"BUSL-1.1"},"src/contracts/delegator/OperatorNetworkSpecificDelegator.sol":{"keccak256":"0x031a10722b9ec49048f0952710401131290adb87e71caf294e864e7ac3b98a16","urls":["bzz-raw://72428febc875134b2f29205e6f294634a1c22a7d5c78d6a9cb2f8196f107c9b5","dweb:/ipfs/QmTPwXR6h5oytckmkLrHdKeEMdphJxceDhYUR4zvQeWAwY"],"license":"BUSL-1.1"},"src/contracts/delegator/OperatorSpecificDelegator.sol":{"keccak256":"0x630ce62fa30b9f3349ab7a8cf8dbf041319febc6dd757be2f94d3d25944ed328","urls":["bzz-raw://c2ac59d47ce57d2a6819ae9833e1a618a371eccff93eb5ab367b201b01f42bfa","dweb:/ipfs/QmdBpGMBivpNPv2WbH8vnCUy5xkVeaxQvGgqi33vKCz1kA"],"license":"BUSL-1.1"},"src/contracts/hints/DelegatorHints.sol":{"keccak256":"0x44aa0c396311a54afbc7c73e8dadeed41e3165a4fd13f712b27d63d50fc3376d","urls":["bzz-raw://2f255214f3531fc707d88be0d56a7a0aed4180439316d099d760d9118aa83093","dweb:/ipfs/QmZD1w5p1ukJSXumUAjvxwGmkPhn7vsr21Y2atLGEZR2oi"],"license":"BUSL-1.1"},"src/contracts/hints/Hints.sol":{"keccak256":"0x8b565df1ae35993c097a9e642002782a8f451f6fd01809cad6bcd345bdf1b99c","urls":["bzz-raw://99a19adb01e350a92f534095b3078229df1f2f83077992d75d58d8684be45971","dweb:/ipfs/QmbmwcuswVbzvwHQFTtrJG86oV98GnfxqYTb8cV8u1acox"],"license":"BUSL-1.1"},"src/contracts/hints/OptInServiceHints.sol":{"keccak256":"0x95d9407900d27b9f4a1233b772aeed809c07b2dc5b31cfc9fa77ca26514c49e5","urls":["bzz-raw://a13a8877e312d7e6b8b85bde3668c5d84ff5ecc83f762cd573f2b7104c64eb42","dweb:/ipfs/QmYV2J55acuGzCNnS3juABuUHY5U1xc8g8o9jwEyFFdeG5"],"license":"BUSL-1.1"},"src/contracts/hints/VaultHints.sol":{"keccak256":"0xccb505b7159b769cc114d67b87c2de6b106557f667fc8f3780114baad5c3c442","urls":["bzz-raw://6d0c80a908fc16e96a8b5605a0bd53f9e89ad0ef0a738fbbae80ba4d3160749b","dweb:/ipfs/QmXo5UtWoR8YmunqcbBU8rQMm1nvmvjNPoXcVrDhh4pEwR"],"license":"BUSL-1.1"},"src/contracts/libraries/Checkpoints.sol":{"keccak256":"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c","urls":["bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609","dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE"],"license":"MIT"},"src/contracts/libraries/ERC4626Math.sol":{"keccak256":"0x8441160513c1cbeb1c3b9ee077bcc7e7ce20006b52a77c8dd39ff0ef89699939","urls":["bzz-raw://943f8cc3e26ddf649f465f40c909819f5c864717c4baa339e9e403b9374a4653","dweb:/ipfs/QmXPxi1sUDsrGprZdUgCzoPEosaZMv9ZhygWQ1vAi1phAB"],"license":"MIT"},"src/contracts/libraries/Subnetwork.sol":{"keccak256":"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe","urls":["bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56","dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32"],"license":"MIT"},"src/contracts/service/OptInService.sol":{"keccak256":"0x4e0932077f2686b7990e10d59deb2535334c0d09e52ef6e57c6ab09eca21c4b1","urls":["bzz-raw://7c00d311032ed4a1743aca7475f3c86ce15cdfc2218108efc3731c03d34a5278","dweb:/ipfs/QmUGGfVwVhaHr5kS4177yKKYiLYzi5qZpkEmvYxBZqazxf"],"license":"BUSL-1.1"},"src/contracts/vault/Vault.sol":{"keccak256":"0x2ceff6ed3298c4cad144c99fcc79b51cb9397d6ebef00285b915848b476f8c2e","urls":["bzz-raw://11f2fb3581854f3ab6e82e8d4935d9eb510c903a13c3f022346c2956a58f5307","dweb:/ipfs/QmdUnoXoyYoG9SGWyQZCFyLDRUUX3eXyXetkRvw6jxqqBz"],"license":"BUSL-1.1"},"src/contracts/vault/VaultStorage.sol":{"keccak256":"0x57db25b127d77ea3472de53e3a4af3354399655b9268638b99ca5925fa364a56","urls":["bzz-raw://aa763d9a6ec508ae3abfb8228b72b9fd9525279e5135d4962e79ff059feb1173","dweb:/ipfs/QmcbDR6E9wyEpu6V2FkEC4hnWy47zXA9LSKJde6zSGd33Q"],"license":"BUSL-1.1"},"src/interfaces/common/IEntity.sol":{"keccak256":"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21","urls":["bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b","dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv"],"license":"MIT"},"src/interfaces/common/IMigratableEntity.sol":{"keccak256":"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4","urls":["bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c","dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds"],"license":"MIT"},"src/interfaces/common/IRegistry.sol":{"keccak256":"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb","urls":["bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014","dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK"],"license":"MIT"},"src/interfaces/common/IStaticDelegateCallable.sol":{"keccak256":"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5","urls":["bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516","dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi"],"license":"MIT"},"src/interfaces/delegator/IBaseDelegator.sol":{"keccak256":"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee","urls":["bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2","dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8"],"license":"MIT"},"src/interfaces/delegator/IDelegatorHook.sol":{"keccak256":"0xc51aa8d7d1f6c8043ee819b7aeb86da0e993912e1442098df897e299f01f9f46","urls":["bzz-raw://adddf5cb2ba282aeb576b26efb28640f865a1721cc9b6eee8b3ee0457a2c9780","dweb:/ipfs/QmNYgAmnLRwWZbhTuQhZs9rx4zcme1df5mEepkrniorSoW"],"license":"MIT"},"src/interfaces/delegator/IFullRestakeDelegator.sol":{"keccak256":"0xa3c8cb2e45d4d8ce90e95263bea40c01dc400f05ad65bc29597d878606be5e7d","urls":["bzz-raw://782cf5e201aa4cca037ebafd3807a68ff1cc721d5b8416a35244db0d0607369e","dweb:/ipfs/QmQkJks6x7CKndeTPa9LxgTNygD5uEi7obhADhpq1Lsr9A"],"license":"MIT"},"src/interfaces/delegator/INetworkRestakeDelegator.sol":{"keccak256":"0xe7030fe30389a147fd710e3436ec346b4842695fd3e65a81b95375c9f1d633fc","urls":["bzz-raw://739c7e66d301778054f5c90bee45ec9438f68afba8a03eaaac52064c73b115ad","dweb:/ipfs/QmfZ2ytKcTykAc76nxhg8ikUXV8NdBpetqb8W4YWPcox1Z"],"license":"MIT"},"src/interfaces/delegator/IOperatorNetworkSpecificDelegator.sol":{"keccak256":"0x74b95e64d29769202d45dd277bb830f623ff3d41ce77b80ce3ee4e318a5c71ec","urls":["bzz-raw://e512b903aae5c1b8a028c6e3f4f6223b5cb5d704503cfa6bd37b5346868f5c20","dweb:/ipfs/QmZim9YExsPWtyxyeui993HTKAEmrg8MUcSkZ77Gp2JcuZ"],"license":"MIT"},"src/interfaces/delegator/IOperatorSpecificDelegator.sol":{"keccak256":"0x72075cab585dc17240cc3e32bc99b92f0d5627ddd988fed680e3e1a52d5a01e4","urls":["bzz-raw://7448bc90699409ae61d85216b5efc2143a37f0f73354be2aea993bc54afca441","dweb:/ipfs/QmXE4gAxM8pHosZK8mcTcj17puBx484meDCcmrDePskGHZ"],"license":"MIT"},"src/interfaces/service/IOptInService.sol":{"keccak256":"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a","urls":["bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337","dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24"],"license":"MIT"},"src/interfaces/slasher/IBaseSlasher.sol":{"keccak256":"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404","urls":["bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf","dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx"],"license":"MIT"},"src/interfaces/vault/IVault.sol":{"keccak256":"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235","urls":["bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9","dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R"],"license":"MIT"},"src/interfaces/vault/IVaultStorage.sol":{"keccak256":"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22","urls":["bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e","dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6"],"license":"MIT"}},"version":1},"id":81} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[{"name":"baseDelegatorHints","type":"address","internalType":"address"},{"name":"vaultHints","type":"address","internalType":"address"},{"name":"optInServiceHints","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"BASE_DELEGATOR_HINTS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"HOOK_GAS_LIMIT","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"HOOK_RESERVE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"HOOK_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"NETWORK_REGISTRY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_NETWORK_OPT_IN_SERVICE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_REGISTRY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_VAULT_OPT_IN_SERVICE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"OPT_IN_SERVICE_HINTS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"TYPE","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"VAULT_FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"VAULT_HINTS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"VERSION","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"pure"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"hook","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"maxNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"maxNetworkLimitAt","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"maxNetworkLimitHint","inputs":[{"name":"delegator","type":"address","internalType":"address"},{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"maxNetworkLimitHintInternal","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"exists","type":"bool","internalType":"bool"},{"name":"hint","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"network","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"onSlash","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","internalType":"uint48"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"operator","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setHook","inputs":[{"name":"hook_","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMaxNetworkLimit","inputs":[{"name":"identifier","type":"uint96","internalType":"uint96"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stake","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"stakeAt","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hints","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"stakeHints","inputs":[{"name":"delegator","type":"address","internalType":"address"},{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"staticDelegateCall","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"vault","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OnSlash","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","indexed":false,"internalType":"uint48"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SetHook","inputs":[{"name":"hook","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SetMaxNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"AlreadySet","inputs":[]},{"type":"error","name":"CheckpointUnorderedInsertion","inputs":[]},{"type":"error","name":"ExternalCall","inputs":[]},{"type":"error","name":"InsufficientHookGas","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"InvalidNetwork","inputs":[]},{"type":"error","name":"NotInitialized","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"NotNetwork","inputs":[]},{"type":"error","name":"NotOperator","inputs":[]},{"type":"error","name":"NotSlasher","inputs":[]},{"type":"error","name":"NotVault","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x6101e0346101dc57601f612f1438819003918201601f19168301916001600160401b0391828411858510176101e05781606092869260409687528339810103126101dc5761004c836101f4565b926100648361005d602084016101f4565b92016101f4565b91306080527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff82871c166101cb578080831603610187575b5050505f60a0525f60c0525f60e052610100935f8552610120935f85526101405f8152610160915f83526101809384526101a09485526101c09586525195612d0b9788610209893960805188610e71015260a0518861062b015260c05188610dee015260e0518881816103dd01528181610e2701526127ba0152518781816102d30152611fd201525186818161031701528181611841015261197001525185818161035b015281816117a801526119ee015251848181610c1b0152612833015251838181610baf0152611369015251828181610ac5015261140a01525181610cf20152f35b6001600160401b0319909116811790915583519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80806100a2565b855163f92ee8a960e01b8152600490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101dc5756fe60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a714610264578063103f29071461025f578063128e5d821461025a5780631a80e5001461025557806323f752d514610250578063248a9ca31461024b57806325dc9708146102465780632dd31000146102415780632f2ff15d1461023c57806336568abe146102375780633dfd387314610232578063437224a31461022d578063439fab911461022857806345e78fcb14610223578063557cab441461021e578063570ca735146102195780636679191e146102145780636739afca1461020f57806379d896141461020a5780637f5a7c7b1461020557806383ce03221461020057806391d14854146101fb578063991d1162146101f65780639b656b22146101f15780639f86fd85146101ec578063a217fddf146101e7578063bb24fe8a146101e2578063c0cd7c3e146101dd578063d0f1f901146101d8578063d15b740e146101d3578063d547741f146101ce578063e02f6937146101c9578063e49561ee146101c4578063fbfa77cf146101bf578063fd4d447c146101ba578063ff54740f146101b55763ffa1ad74146101b0575f80fd5b611207565b6111ea565b6111c0565b611199565b610fae565b610f59565b610f0d565b610ee3565b610e56565b610e12565b610dcf565b610db5565b610d21565b610cdd565b610ca8565b610c4a565b610c06565b610bde565b610b9a565b610b72565b610b38565b610b10565b610af4565b610ab0565b610978565b6108f2565b6106f1565b6106a6565b61065a565b610616565b6105bd565b610510565b61038a565b610346565b610302565b6102be565b346102ba5760203660031901126102ba5760043563ffffffff60e01b81168091036102ba57602090637965db0b60e01b81149081156102a9575b506040519015158152f35b6301ffc9a760e01b1490505f61029e565b5f80fd5b346102ba575f3660031901126102ba576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102ba575f3660031901126102ba576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102ba575f3660031901126102ba576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102ba5760403660031901126102ba576004356001600160601b03811681036102ba57602435906103ba611a63565b6040516302910f8b60e31b81523360048201526020816024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa90811561050b575f916104dc575b50156104ca576001600160601b03166bffffffffffffffffffffffff193360601b16179080610444835f52600260205260405f2090565b54146104b85761049d817fc67e7929681aa1bccd63f52b3799bf5805f3009f197db6fdf584b14f7fbf608c92610482855f52600260205260405f2090565b5561048d8185611a92565b6040519081529081906020820190565b0390a26104b660015f80516020612c9683398151915255565b005b60405163a741a04560e01b8152600490fd5b6040516323d53b9760e21b8152600490fd5b6104fe915060203d602011610504575b6104f68183610854565b81019061122f565b5f61040d565b503d6104ec565b611246565b346102ba5760203660031901126102ba576004355f525f80516020612c768339815191526020526020600160405f200154604051908152f35b6001600160a01b038116036102ba57565b6064359065ffffffffffff821682036102ba57565b6024359065ffffffffffff821682036102ba57565b6044359065ffffffffffff821682036102ba57565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b346102ba5760803660031901126102ba576106126105fe6004356105e081610549565b6044356105ec81610549565b6105f461055a565b9160243590611320565b604051918291602083526020830190610599565b0390f35b346102ba575f3660031901126102ba576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102ba5760403660031901126102ba576104b660243560043561067d82610549565b805f525f80516020612c768339815191526020526106a1600160405f200154611bd4565b611d85565b346102ba5760403660031901126102ba576024356106c381610549565b336001600160a01b038216036106df576104b690600435611dbb565b60405163334bd91960e11b8152600490fd5b346102ba5760203660031901126102ba5760043561070e81610549565b610716611a63565b335f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c60205260409020547fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c9060ff16156107cc57506001546001600160a01b0391821691811682146104b8576001600160a01b03191681176001557f5bbb1d3ebb6a3ad2a0f17ff35e579a83af60604d1d3c2a4c83c62adecadf666d5f80a260015f80516020612c9683398151915255005b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b0382111761081957604052565b6107ea565b606081019081106001600160401b0382111761081957604052565b608081019081106001600160401b0382111761081957604052565b90601f801991011681019081106001600160401b0382111761081957604052565b604051906108828261081e565b565b60405190610882826107fe565b6001600160401b03811161081957601f01601f191660200190565b81601f820112156102ba578035906108c382610891565b926108d16040519485610854565b828452602083830101116102ba57815f926020809301838601378301015290565b346102ba5760603660031901126102ba5761090b61056f565b6044356001600160401b0381116102ba576020916109306109439236906004016108ac565b906004355f526003845260405f20611e84565b604051908152f35b9181601f840112156102ba578235916001600160401b0383116102ba57602083818601950101116102ba57565b346102ba5760203660031901126102ba576001600160401b036004358181116102ba576109a990369060040161094b565b5f80516020612cb6833981519152549260ff8460401c1615931680159081610aa8575b6001149081610a9e575b159081610a95575b50610a83575f80516020612cb6833981519152805467ffffffffffffffff19166001179055610a119183610a5f57611f9d565b610a1757005b5f80516020612cb6833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f80516020612cb6833981519152805460ff60401b1916600160401b179055611f9d565b60405163f92ee8a960e01b8152600490fd5b9050155f6109de565b303b1591506109d6565b8491506109cc565b346102ba575f3660031901126102ba576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102ba575f3660031901126102ba576020604051614e208152f35b346102ba575f3660031901126102ba576005546040516001600160a01b039091168152602090f35b346102ba575f3660031901126102ba5760206040517fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c8152f35b346102ba575f3660031901126102ba576004546040516001600160a01b039091168152602090f35b346102ba575f3660031901126102ba576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102ba575f3660031901126102ba576001546040516001600160a01b039091168152602090f35b346102ba575f3660031901126102ba576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102ba5760403660031901126102ba57602060ff610c9c602435610c6e81610549565b6004355f525f80516020612c76833981519152845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b346102ba5760603660031901126102ba576106126105fe600435610ccb81610549565b610cd3610584565b906024359061154e565b346102ba575f3660031901126102ba576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102ba5760403660031901126102ba57600435610d3e81610549565b6024356001600160401b0381116102ba575f91610d608392369060040161094b565b90816040519283928337810184815203915af4610dad610d7e611647565b91610d9f604051938492151560208401526040808401526060830190610599565b03601f198101835282610854565b805190602001fd5b346102ba575f3660031901126102ba5760206040515f8152f35b346102ba575f3660031901126102ba5760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102ba575f3660031901126102ba576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102ba5760403660031901126102ba57610e6f61056f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610ed15763ffffffff610ebc6040926004355f526003602052835f2061215c565b91505083929192519215158352166020820152f35b604051637ca475e560e11b8152600490fd5b346102ba5760203660031901126102ba576004355f526002602052602060405f2054604051908152f35b346102ba5760403660031901126102ba576104b6602435600435610f3082610549565b805f525f80516020612c76833981519152602052610f54600160405f200154611bd4565b611dbb565b346102ba5760803660031901126102ba57602435610f7681610549565b610f7e610584565b90606435906001600160401b0382116102ba57602092610fa56109439336906004016108ac565b91600435611732565b346102ba5760a03660031901126102ba57602435600435610fce82610549565b60443591610fda61055a565b90608435906001600160401b0382116102ba57610ffc600492369084016108ac565b611004611a63565b5f546020906110299061101d906001600160a01b031681565b6001600160a01b031690565b60405163b134427160e01b815294859182905afa92831561050b575f93611168575b506001600160a01b039283163303611156576001546001600160a01b03168381166110cb575b50506040805195865265ffffffffffff909316602086015216927f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed91819081015b0390a36104b660015f80516020612c9683398151915255565b909360405194611102866110f4602082019363724ab0f760e11b8552858c898d602487016118bc565b03601f198101885287610854565b62042e305a10611144575f6110b2938192827f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed9951926203d090f15093611071565b604051638072475160e01b8152600490fd5b60405163dabc4ad960e01b8152600490fd5b61118b91935060203d602011611192575b6111838183610854565b8101906112bc565b915f61104b565b503d611179565b346102ba575f3660031901126102ba575f546040516001600160a01b039091168152602090f35b346102ba5760403660031901126102ba5760206109436024356111e281610549565b600435611939565b346102ba575f3660031901126102ba5760206040516203d0908152f35b346102ba575f3660031901126102ba57602060405160018152f35b519081151582036102ba57565b908160209103126102ba5761124390611222565b90565b6040513d5f823e3d90fd5b81601f820112156102ba5780519061126882610891565b926112766040519485610854565b828452602083830101116102ba57815f9260208093018386015e8301015290565b906020828203126102ba5781516001600160401b0381116102ba576112439201611251565b908160209103126102ba575161124381610549565b9061124391602081526112f08251606060208401526080830190610599565b9060606040611310602086015194601f1995868683030184870152610599565b9401519282850301910152610599565b604051630df8851f60e11b81526001600160a01b03828116600483015260248201849052938416604482015265ffffffffffff8516606482015260609594909391925f856084817f000000000000000000000000000000000000000000000000000000000000000087165afa94851561050b575f956114ea575b5060405163fbfa77cf60e01b81526020816004818888165afa90811561050b57611406945f92859284916114cb575b5060405163192c0ff760e21b81526001600160a01b03909116600482015265ffffffffffff90921660248301529094859190829081906044820190565b03917f0000000000000000000000000000000000000000000000000000000000000000165afa92831561050b575f936114a5575b50611445929361154e565b9082511580159061149b575b8015611491575b61146157505050565b610d9f939450906112439291611475610875565b92835260208301526040820152604051928391602083016112d1565b5081511515611458565b5080511515611451565b61144593506114c5903d805f833e6114bd8183610854565b810190611297565b9261143a565b6114e4915060203d602011611192576111838183610854565b5f6113c9565b6114ff9195503d805f833e6114bd8183610854565b935f61139a565b9061124392915f52600360205260405f20611e84565b519063ffffffff821682036102ba57565b91908260409103126102ba57611243602061154784611222565b930161151c565b92915f8060609565ffffffffffff6040519460209663d0f1f90160e01b8888015260248701521660448501526044845261158784610839565b60405193846115b487820192639f86fd8560e01b8452306024840152604060448401526064830190610599565b03946115c8601f1996878101835282610854565b51915afa506115e66115d8611647565b8380825183010191016120db565b9015611639578083806115fe9351830101910161152d565b929061160957505050565b6112439293945061162d604051948592830191909163ffffffff6020820193169052565b03908101835282610854565b809150519182156102ba5701fd5b3d15611671573d9061165882610891565b916116666040519384610854565b82523d5f602084013e565b606090565b60405190611683826107fe565b60606020838281520152565b906020828203126102ba5781516001600160401b03928382116102ba5701906040828203126102ba57604051926116c5846107fe565b82518181116102ba57826116da918501611251565b845260208301519081116102ba576116f29201611251565b602082015290565b6001600160a01b0391821681529116602082015265ffffffffffff909116604082015260806060820181905261124392910190610599565b9261174290929192828486612335565b92909361174d611676565b938051806118a0575b5050841593841561180a575b8415611779575b505050506117745790565b505f90565b6020809495506117a4910151604051958694859463530e1d4360e01b865260601c90600486016116fa565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561050b575f916117eb575b50155f808080611769565b611804915060203d602011610504576104f68183610854565b5f6117e0565b5f549094506001600160a01b031660208486519261183d604051948593849363530e1d4360e01b855289600486016116fa565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561050b575f91611881575b501593611762565b61189a915060203d602011610504576104f68183610854565b5f611879565b6118b492955060208091830101910161168f565b925f80611756565b919360a093611243969565ffffffffffff938552600180871b0316602085015260408401521660608201528160808201520190610599565b634e487b7160e01b5f52601160045260245ffd5b8115611912570490565b634e487b7160e01b5f52601260045260245ffd5b906001820180921161193457565b6118f4565b5f546040516308834cb560e21b8082526001600160a01b0385811660048401529283166024830152929392602092909183816044817f000000000000000000000000000000000000000000000000000000000000000086165afa90811561050b575f91611a46575b50159182156119c2575b505090506119bc576112439161245a565b50505f90565b6040519081526001600160a01b0385166004820152606086901c602482015291508290829060449082907f0000000000000000000000000000000000000000000000000000000000000000165afa91821561050b575f92611a29575b505015805f806119ab565b611a3f9250803d10610504576104f68183610854565b5f80611a1e565b611a5d9150843d8611610504576104f68183610854565b5f6119a1565b5f80516020612c968339815191526002815414611a805760029055565b604051633ee5aeb560e01b8152600490fd5b6004546001600160a01b0316606082901c03611bc2575f52600360205260405f209065ffffffffffff91824211611ba357824216926001820191825415611b95575b611add81612a6a565b509590845493835480155f14611b7657505f975b6001600160d01b0398808a1615611b7057611b0c9088612133565b50505b82611b64575b505015611b4e575050610882935090611b30611b3692611e61565b90612133565b90919082549060031b91821b915f19901b1916179055565b61088295611b5d931691612b41565b505061254f565b16821490505f80611b15565b50611b0f565b5f1990808281011161193457855f5260205f2001015460301c97611af1565b611b9e83612522565b611ad4565b6040516306dfcc6560e41b815260306004820152426024820152604490fd5b6040516386eab41b60e01b8152600490fd5b5f8181525f80516020612c768339815191526020908152604080832033845290915290205460ff16156107cc5750565b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260409020545f80516020612c768339815191529060ff166119bc575f808052602091825260408082206001600160a01b038516835290925220805460ff1916600117905533906001600160a01b03165f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b6001600160a01b0381165f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c602052604090207fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c905f80516020612c768339815191529060ff905b5416611d7e575f828152602091825260408082206001600160a01b038616835290925220805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b5050505f90565b5f8181525f80516020612c76833981519152602081815260408084206001600160a01b038716855290915290912060ff90611d1a565b5f8181525f80516020612c76833981519152602081815260408084206001600160a01b03871685529091529091205460ff1615611d7e575f828152602091825260408082206001600160a01b038616835290925220805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b908160209103126102ba576112439061151c565b5f1981019190821161193457565b90600163ffffffff8093160191821161193457565b91805115611f5d5780602080611e9f93518301019101611e4d565b91611eaa8382612642565b92611ebb845165ffffffffffff1690565b9065ffffffffffff8085169216828114611f515782119182611ef1575b5050611ee8576112439250612572565b50506020015190565b909150611efe8354611e61565b63ffffffff831614918215611f17575b50505f80611ed8565b611f49919250611f32611f2c611f3e92611e6f565b85612642565b5165ffffffffffff1690565b65ffffffffffff1690565b115f80611f0e565b50505050506020015190565b5061124391612572565b9190916040818403126102ba578035611f7f81610549565b9260208201356001600160401b0381116102ba5761124392016108ac565b611fa991810190611f67565b6040516302910f8b60e31b81526001600160a01b039283166004820181905291906020816024817f000000000000000000000000000000000000000000000000000000000000000088165afa90811561050b575f916120bc575b50156120aa5761203e6040916120396120849461201e6126aa565b60018060a01b03166001600160601b0360a01b5f5416175f55565b61276d565b6020810151600180546001600160a01b0319166001600160a01b0390921691909117905580516001600160a01b031684811661209a575b5001516001600160a01b031690565b90811661208e5750565b61209790611caf565b50565b6120a390611c04565b505f612075565b6040516362df054560e01b8152600490fd5b6120d5915060203d602011610504576104f68183610854565b5f612003565b9190916040818403126102ba576120f181611222565b9260208201516001600160401b0381116102ba576112439201611251565b9060405161211c816107fe565b915465ffffffffffff8116835260301c6020830152565b8054821015612148575f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b91908254905f829160058411612204575b612178935085612a13565b9081156121f8576121f16121e86121e26121d86121aa6121a561219a88611e61565b895f5260205f200190565b61210f565b9660016121d160206121c28b5165ffffffffffff1690565b9a01516001600160d01b031690565b9101612133565b90549060031b1c90565b93611e61565b63ffffffff1690565b6001939291565b5f925082915081908190565b919261220f816128e8565b81039081116119345761217893865f52612238611f3e8360205f200165ffffffffffff90541690565b65ffffffffffff8516101561224e57509161216d565b92915061225a90611926565b9061216d565b6040519061226d8261081e565b60606040838281528260208201520152565b906020828203126102ba5781516001600160401b03928382116102ba5701906060828203126102ba57604051926122b58461081e565b82518181116102ba57826122ca918501611251565b845260208301518181116102ba57826122e4918501611251565b602085015260408301519081116102ba576122ff9201611251565b604082015290565b908160209103126102ba575190565b60409065ffffffffffff61124394931681528160208201520190610599565b90939293612341612260565b9480518061243e575b5050600454606083901c6001600160a01b03918216148015929190612423575b505061241b575f546123b092919060209061238f9061101d906001600160a01b031681565b8187015190604051808097819463810da75d60e01b83528860048401612316565b03915afa90811561050b576123e3935f926123e8575b506123d79192604087015191611506565b90818082109118021890565b915190565b6123d7925061240e9060203d602011612414575b6124068183610854565b810190612307565b916123c6565b503d6123fc565b505090515f91565b60055481166001600160a01b03169116141590505f8061236a565b61245292965060208091830101910161227f565b935f8061234a565b6004549091606083901c6001600160a01b039283161480159290612507575b5050611774575f546004919060209061249c9061101d906001600160a01b031681565b60405163bd49c35f60e01b815293849182905afa90811561050b57611243925f926124e2575b506124d5905f52600260205260405f2090565b5490818082109118021890565b6124d59192506125009060203d602011612414576124068183610854565b91906124c2565b60055481166001600160a01b03169116141590505f80612479565b8054600160401b8110156108195761253f91600182018155612133565b8154905f199060031b1b19169055565b90815491600160401b8310156108195782611b3691600161088295018155612133565b908154905f8291600584116125dc575b61258d935084612c1e565b806125b557505f905b6001600160d01b038216156119bc576112439160016121d89201612133565b6125cf6125c46125d692611e61565b835f5260205f200190565b5460301c90565b90612596565b91926125e7816128e8565b81039081116119345761258d93855f5265ffffffffffff808360205f20015416908516105f14612618575091612582565b92915061262490611926565b90612582565b60405190612637826107fe565b5f6020838281520152565b9061266b61266561268c9261265561262a565b5061265e61262a565b5084612133565b5061210f565b91600165ffffffffffff845116936020828060d01b03910151169101612133565b9054906040519261269c846107fe565b835260031b1c602082015290565b6126b2612aa3565b6126ba612aa3565b60015f80516020612c9683398151915255565b604051906126da8261081e565b5f6040838281528260208201520152565b8091039060a082126102ba576060604051926127068461081e565b126102ba5760809060405161271a8161081e565b815161272581610549565b8152602082015161273581610549565b6020820152604082015161274881610549565b60408201528352606081015161275d81610549565b602084015201516122ff81610549565b6127756126cd565b5061278b815191602080809483010191016126eb565b80820180516040516302910f8b60e31b8082526001600160a01b039283166004830152939491939082816024817f000000000000000000000000000000000000000000000000000000000000000089165afa90811561050b575f916128cb575b50156104ca578161282f91604087019561280b875160018060a01b031690565b6040519283526001600160a01b031660048301529092839190829081906024820190565b03917f0000000000000000000000000000000000000000000000000000000000000000165afa91821561050b575f926128ae575b50501561289c5751600480546001600160a01b039283166001600160a01b03199182161790915591516005805490931691161790555190565b604051631f0853c160e21b8152600490fd5b6128c49250803d10610504576104f68183610854565b5f80612863565b6128e29150833d8511610504576104f68183610854565b5f6127eb565b600181111561124357600181600160801b811015612a01575b6129a961299f61299561298b6129816129776129b597600488600160401b6129b09a10156129f4575b6401000000008110156129e7575b620100008110156129da575b6101008110156129ce575b60108110156129c2575b10156129ba575b60030260011c612970818b611908565b0160011c90565b612970818a611908565b6129708189611908565b6129708188611908565b6129708187611908565b6129708186611908565b8093611908565b821190565b900390565b60011b612960565b811c9160021b91612959565b60081c91811b9161294f565b60101c9160081b91612944565b60201c9160101b91612938565b60401c9160201b9161292a565b50600160401b9050608082901c612901565b905b838310612a225750505090565b909192612a2f8185612ad1565b90835f5265ffffffffffff808360205f20015416908416105f14612a575750925b9190612a15565b93506001810180911115612a50576118f4565b805480612a7b5750505f905f905f90565b5f19918183810111611934575f5260205f2001015460019165ffffffffffff82169160301c90565b60ff5f80516020612cb68339815191525460401c1615612abf57565b604051631afcd79f60e31b8152600490fd5b90808216911860011c81018091116119345790565b8054600160401b81101561081957612b0391600182018155612133565b612b2e57815160209092015160301b65ffffffffffff191665ffffffffffff92909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b80549293928015612bf457612b58612b6391611e61565b825f5260205f200190565b9182549265ffffffffffff91828516928116808411612be257879303612ba95750612ba292509065ffffffffffff82549181199060301b169116179055565b60301c9190565b915050612bdd91612bc9612bbb610884565b65ffffffffffff9093168352565b6001600160d01b0386166020830152612ae6565b612ba2565b604051632520601d60e01b8152600490fd5b5090612c1991612c05612bbb610884565b6001600160d01b0385166020830152612ae6565b5f9190565b905b838310612c2d5750505090565b909192612c3a8185612ad1565b90835f5265ffffffffffff808360205f20015416908416105f14612c625750925b9190612c20565b93506001810180911115612c5b576118f456fe02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a264697066735822122067aa6510448df950d196b22488023407b46113c92aa0c31e1ef31a245fd1a75664736f6c63430008190033","sourceMap":"13600:2428:88:-:0;;;;;;;;;;;;;-1:-1:-1;;13600:2428:88;;;;-1:-1:-1;;;;;13600:2428:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;348:4:89;;332:21;;8837:64:22;13600:2428:88;;;;;;;;;7896:76:22;;13600:2428:88;;;;7985:34:22;7981:146;;-1:-1:-1;525:17:76;;;-1:-1:-1;525:17:76;;-1:-1:-1;552:12:76;;-1:-1:-1;2360:34:83;;2404:28;;-1:-1:-1;2404:28:83;;2442:57;;-1:-1:-1;2442:57:83;;2509:61;-1:-1:-1;2509:61:83;;1796:36:86;;-1:-1:-1;1796:36:86;;14125:41:88;;;;14176:24;;;;14210:40;;;;13600:2428;;;;;;;;332:21:89;13600:2428:88;;;;;525:17:76;13600:2428:88;;;;;552:12:76;13600:2428:88;;;;;2360:34:83;13600:2428:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7981:146:22;-1:-1:-1;;;;;;13600:2428:88;;;;;;;;;;;;;8087:29:22;;13600:2428:88;;8087:29:22;7981:146;;;;;7896:76;13600:2428:88;;-1:-1:-1;;;7938:23:22;;;;;13600:2428:88;-1:-1:-1;13600:2428:88;;;;;;-1:-1:-1;13600:2428:88;;;;;-1:-1:-1;13600:2428:88;;;;-1:-1:-1;;;;;13600:2428:88;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a714610264578063103f29071461025f578063128e5d821461025a5780631a80e5001461025557806323f752d514610250578063248a9ca31461024b57806325dc9708146102465780632dd31000146102415780632f2ff15d1461023c57806336568abe146102375780633dfd387314610232578063437224a31461022d578063439fab911461022857806345e78fcb14610223578063557cab441461021e578063570ca735146102195780636679191e146102145780636739afca1461020f57806379d896141461020a5780637f5a7c7b1461020557806383ce03221461020057806391d14854146101fb578063991d1162146101f65780639b656b22146101f15780639f86fd85146101ec578063a217fddf146101e7578063bb24fe8a146101e2578063c0cd7c3e146101dd578063d0f1f901146101d8578063d15b740e146101d3578063d547741f146101ce578063e02f6937146101c9578063e49561ee146101c4578063fbfa77cf146101bf578063fd4d447c146101ba578063ff54740f146101b55763ffa1ad74146101b0575f80fd5b611207565b6111ea565b6111c0565b611199565b610fae565b610f59565b610f0d565b610ee3565b610e56565b610e12565b610dcf565b610db5565b610d21565b610cdd565b610ca8565b610c4a565b610c06565b610bde565b610b9a565b610b72565b610b38565b610b10565b610af4565b610ab0565b610978565b6108f2565b6106f1565b6106a6565b61065a565b610616565b6105bd565b610510565b61038a565b610346565b610302565b6102be565b346102ba5760203660031901126102ba5760043563ffffffff60e01b81168091036102ba57602090637965db0b60e01b81149081156102a9575b506040519015158152f35b6301ffc9a760e01b1490505f61029e565b5f80fd5b346102ba575f3660031901126102ba576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102ba575f3660031901126102ba576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102ba575f3660031901126102ba576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102ba5760403660031901126102ba576004356001600160601b03811681036102ba57602435906103ba611a63565b6040516302910f8b60e31b81523360048201526020816024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa90811561050b575f916104dc575b50156104ca576001600160601b03166bffffffffffffffffffffffff193360601b16179080610444835f52600260205260405f2090565b54146104b85761049d817fc67e7929681aa1bccd63f52b3799bf5805f3009f197db6fdf584b14f7fbf608c92610482855f52600260205260405f2090565b5561048d8185611a92565b6040519081529081906020820190565b0390a26104b660015f80516020612c9683398151915255565b005b60405163a741a04560e01b8152600490fd5b6040516323d53b9760e21b8152600490fd5b6104fe915060203d602011610504575b6104f68183610854565b81019061122f565b5f61040d565b503d6104ec565b611246565b346102ba5760203660031901126102ba576004355f525f80516020612c768339815191526020526020600160405f200154604051908152f35b6001600160a01b038116036102ba57565b6064359065ffffffffffff821682036102ba57565b6024359065ffffffffffff821682036102ba57565b6044359065ffffffffffff821682036102ba57565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b346102ba5760803660031901126102ba576106126105fe6004356105e081610549565b6044356105ec81610549565b6105f461055a565b9160243590611320565b604051918291602083526020830190610599565b0390f35b346102ba575f3660031901126102ba576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102ba5760403660031901126102ba576104b660243560043561067d82610549565b805f525f80516020612c768339815191526020526106a1600160405f200154611bd4565b611d85565b346102ba5760403660031901126102ba576024356106c381610549565b336001600160a01b038216036106df576104b690600435611dbb565b60405163334bd91960e11b8152600490fd5b346102ba5760203660031901126102ba5760043561070e81610549565b610716611a63565b335f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c60205260409020547fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c9060ff16156107cc57506001546001600160a01b0391821691811682146104b8576001600160a01b03191681176001557f5bbb1d3ebb6a3ad2a0f17ff35e579a83af60604d1d3c2a4c83c62adecadf666d5f80a260015f80516020612c9683398151915255005b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b0382111761081957604052565b6107ea565b606081019081106001600160401b0382111761081957604052565b608081019081106001600160401b0382111761081957604052565b90601f801991011681019081106001600160401b0382111761081957604052565b604051906108828261081e565b565b60405190610882826107fe565b6001600160401b03811161081957601f01601f191660200190565b81601f820112156102ba578035906108c382610891565b926108d16040519485610854565b828452602083830101116102ba57815f926020809301838601378301015290565b346102ba5760603660031901126102ba5761090b61056f565b6044356001600160401b0381116102ba576020916109306109439236906004016108ac565b906004355f526003845260405f20611e84565b604051908152f35b9181601f840112156102ba578235916001600160401b0383116102ba57602083818601950101116102ba57565b346102ba5760203660031901126102ba576001600160401b036004358181116102ba576109a990369060040161094b565b5f80516020612cb6833981519152549260ff8460401c1615931680159081610aa8575b6001149081610a9e575b159081610a95575b50610a83575f80516020612cb6833981519152805467ffffffffffffffff19166001179055610a119183610a5f57611f9d565b610a1757005b5f80516020612cb6833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f80516020612cb6833981519152805460ff60401b1916600160401b179055611f9d565b60405163f92ee8a960e01b8152600490fd5b9050155f6109de565b303b1591506109d6565b8491506109cc565b346102ba575f3660031901126102ba576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102ba575f3660031901126102ba576020604051614e208152f35b346102ba575f3660031901126102ba576005546040516001600160a01b039091168152602090f35b346102ba575f3660031901126102ba5760206040517fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c8152f35b346102ba575f3660031901126102ba576004546040516001600160a01b039091168152602090f35b346102ba575f3660031901126102ba576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102ba575f3660031901126102ba576001546040516001600160a01b039091168152602090f35b346102ba575f3660031901126102ba576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102ba5760403660031901126102ba57602060ff610c9c602435610c6e81610549565b6004355f525f80516020612c76833981519152845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b346102ba5760603660031901126102ba576106126105fe600435610ccb81610549565b610cd3610584565b906024359061154e565b346102ba575f3660031901126102ba576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102ba5760403660031901126102ba57600435610d3e81610549565b6024356001600160401b0381116102ba575f91610d608392369060040161094b565b90816040519283928337810184815203915af4610dad610d7e611647565b91610d9f604051938492151560208401526040808401526060830190610599565b03601f198101835282610854565b805190602001fd5b346102ba575f3660031901126102ba5760206040515f8152f35b346102ba575f3660031901126102ba5760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102ba575f3660031901126102ba576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102ba5760403660031901126102ba57610e6f61056f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610ed15763ffffffff610ebc6040926004355f526003602052835f2061215c565b91505083929192519215158352166020820152f35b604051637ca475e560e11b8152600490fd5b346102ba5760203660031901126102ba576004355f526002602052602060405f2054604051908152f35b346102ba5760403660031901126102ba576104b6602435600435610f3082610549565b805f525f80516020612c76833981519152602052610f54600160405f200154611bd4565b611dbb565b346102ba5760803660031901126102ba57602435610f7681610549565b610f7e610584565b90606435906001600160401b0382116102ba57602092610fa56109439336906004016108ac565b91600435611732565b346102ba5760a03660031901126102ba57602435600435610fce82610549565b60443591610fda61055a565b90608435906001600160401b0382116102ba57610ffc600492369084016108ac565b611004611a63565b5f546020906110299061101d906001600160a01b031681565b6001600160a01b031690565b60405163b134427160e01b815294859182905afa92831561050b575f93611168575b506001600160a01b039283163303611156576001546001600160a01b03168381166110cb575b50506040805195865265ffffffffffff909316602086015216927f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed91819081015b0390a36104b660015f80516020612c9683398151915255565b909360405194611102866110f4602082019363724ab0f760e11b8552858c898d602487016118bc565b03601f198101885287610854565b62042e305a10611144575f6110b2938192827f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed9951926203d090f15093611071565b604051638072475160e01b8152600490fd5b60405163dabc4ad960e01b8152600490fd5b61118b91935060203d602011611192575b6111838183610854565b8101906112bc565b915f61104b565b503d611179565b346102ba575f3660031901126102ba575f546040516001600160a01b039091168152602090f35b346102ba5760403660031901126102ba5760206109436024356111e281610549565b600435611939565b346102ba575f3660031901126102ba5760206040516203d0908152f35b346102ba575f3660031901126102ba57602060405160018152f35b519081151582036102ba57565b908160209103126102ba5761124390611222565b90565b6040513d5f823e3d90fd5b81601f820112156102ba5780519061126882610891565b926112766040519485610854565b828452602083830101116102ba57815f9260208093018386015e8301015290565b906020828203126102ba5781516001600160401b0381116102ba576112439201611251565b908160209103126102ba575161124381610549565b9061124391602081526112f08251606060208401526080830190610599565b9060606040611310602086015194601f1995868683030184870152610599565b9401519282850301910152610599565b604051630df8851f60e11b81526001600160a01b03828116600483015260248201849052938416604482015265ffffffffffff8516606482015260609594909391925f856084817f000000000000000000000000000000000000000000000000000000000000000087165afa94851561050b575f956114ea575b5060405163fbfa77cf60e01b81526020816004818888165afa90811561050b57611406945f92859284916114cb575b5060405163192c0ff760e21b81526001600160a01b03909116600482015265ffffffffffff90921660248301529094859190829081906044820190565b03917f0000000000000000000000000000000000000000000000000000000000000000165afa92831561050b575f936114a5575b50611445929361154e565b9082511580159061149b575b8015611491575b61146157505050565b610d9f939450906112439291611475610875565b92835260208301526040820152604051928391602083016112d1565b5081511515611458565b5080511515611451565b61144593506114c5903d805f833e6114bd8183610854565b810190611297565b9261143a565b6114e4915060203d602011611192576111838183610854565b5f6113c9565b6114ff9195503d805f833e6114bd8183610854565b935f61139a565b9061124392915f52600360205260405f20611e84565b519063ffffffff821682036102ba57565b91908260409103126102ba57611243602061154784611222565b930161151c565b92915f8060609565ffffffffffff6040519460209663d0f1f90160e01b8888015260248701521660448501526044845261158784610839565b60405193846115b487820192639f86fd8560e01b8452306024840152604060448401526064830190610599565b03946115c8601f1996878101835282610854565b51915afa506115e66115d8611647565b8380825183010191016120db565b9015611639578083806115fe9351830101910161152d565b929061160957505050565b6112439293945061162d604051948592830191909163ffffffff6020820193169052565b03908101835282610854565b809150519182156102ba5701fd5b3d15611671573d9061165882610891565b916116666040519384610854565b82523d5f602084013e565b606090565b60405190611683826107fe565b60606020838281520152565b906020828203126102ba5781516001600160401b03928382116102ba5701906040828203126102ba57604051926116c5846107fe565b82518181116102ba57826116da918501611251565b845260208301519081116102ba576116f29201611251565b602082015290565b6001600160a01b0391821681529116602082015265ffffffffffff909116604082015260806060820181905261124392910190610599565b9261174290929192828486612335565b92909361174d611676565b938051806118a0575b5050841593841561180a575b8415611779575b505050506117745790565b505f90565b6020809495506117a4910151604051958694859463530e1d4360e01b865260601c90600486016116fa565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561050b575f916117eb575b50155f808080611769565b611804915060203d602011610504576104f68183610854565b5f6117e0565b5f549094506001600160a01b031660208486519261183d604051948593849363530e1d4360e01b855289600486016116fa565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561050b575f91611881575b501593611762565b61189a915060203d602011610504576104f68183610854565b5f611879565b6118b492955060208091830101910161168f565b925f80611756565b919360a093611243969565ffffffffffff938552600180871b0316602085015260408401521660608201528160808201520190610599565b634e487b7160e01b5f52601160045260245ffd5b8115611912570490565b634e487b7160e01b5f52601260045260245ffd5b906001820180921161193457565b6118f4565b5f546040516308834cb560e21b8082526001600160a01b0385811660048401529283166024830152929392602092909183816044817f000000000000000000000000000000000000000000000000000000000000000086165afa90811561050b575f91611a46575b50159182156119c2575b505090506119bc576112439161245a565b50505f90565b6040519081526001600160a01b0385166004820152606086901c602482015291508290829060449082907f0000000000000000000000000000000000000000000000000000000000000000165afa91821561050b575f92611a29575b505015805f806119ab565b611a3f9250803d10610504576104f68183610854565b5f80611a1e565b611a5d9150843d8611610504576104f68183610854565b5f6119a1565b5f80516020612c968339815191526002815414611a805760029055565b604051633ee5aeb560e01b8152600490fd5b6004546001600160a01b0316606082901c03611bc2575f52600360205260405f209065ffffffffffff91824211611ba357824216926001820191825415611b95575b611add81612a6a565b509590845493835480155f14611b7657505f975b6001600160d01b0398808a1615611b7057611b0c9088612133565b50505b82611b64575b505015611b4e575050610882935090611b30611b3692611e61565b90612133565b90919082549060031b91821b915f19901b1916179055565b61088295611b5d931691612b41565b505061254f565b16821490505f80611b15565b50611b0f565b5f1990808281011161193457855f5260205f2001015460301c97611af1565b611b9e83612522565b611ad4565b6040516306dfcc6560e41b815260306004820152426024820152604490fd5b6040516386eab41b60e01b8152600490fd5b5f8181525f80516020612c768339815191526020908152604080832033845290915290205460ff16156107cc5750565b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260409020545f80516020612c768339815191529060ff166119bc575f808052602091825260408082206001600160a01b038516835290925220805460ff1916600117905533906001600160a01b03165f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b6001600160a01b0381165f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c602052604090207fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c905f80516020612c768339815191529060ff905b5416611d7e575f828152602091825260408082206001600160a01b038616835290925220805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b5050505f90565b5f8181525f80516020612c76833981519152602081815260408084206001600160a01b038716855290915290912060ff90611d1a565b5f8181525f80516020612c76833981519152602081815260408084206001600160a01b03871685529091529091205460ff1615611d7e575f828152602091825260408082206001600160a01b038616835290925220805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b908160209103126102ba576112439061151c565b5f1981019190821161193457565b90600163ffffffff8093160191821161193457565b91805115611f5d5780602080611e9f93518301019101611e4d565b91611eaa8382612642565b92611ebb845165ffffffffffff1690565b9065ffffffffffff8085169216828114611f515782119182611ef1575b5050611ee8576112439250612572565b50506020015190565b909150611efe8354611e61565b63ffffffff831614918215611f17575b50505f80611ed8565b611f49919250611f32611f2c611f3e92611e6f565b85612642565b5165ffffffffffff1690565b65ffffffffffff1690565b115f80611f0e565b50505050506020015190565b5061124391612572565b9190916040818403126102ba578035611f7f81610549565b9260208201356001600160401b0381116102ba5761124392016108ac565b611fa991810190611f67565b6040516302910f8b60e31b81526001600160a01b039283166004820181905291906020816024817f000000000000000000000000000000000000000000000000000000000000000088165afa90811561050b575f916120bc575b50156120aa5761203e6040916120396120849461201e6126aa565b60018060a01b03166001600160601b0360a01b5f5416175f55565b61276d565b6020810151600180546001600160a01b0319166001600160a01b0390921691909117905580516001600160a01b031684811661209a575b5001516001600160a01b031690565b90811661208e5750565b61209790611caf565b50565b6120a390611c04565b505f612075565b6040516362df054560e01b8152600490fd5b6120d5915060203d602011610504576104f68183610854565b5f612003565b9190916040818403126102ba576120f181611222565b9260208201516001600160401b0381116102ba576112439201611251565b9060405161211c816107fe565b915465ffffffffffff8116835260301c6020830152565b8054821015612148575f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b91908254905f829160058411612204575b612178935085612a13565b9081156121f8576121f16121e86121e26121d86121aa6121a561219a88611e61565b895f5260205f200190565b61210f565b9660016121d160206121c28b5165ffffffffffff1690565b9a01516001600160d01b031690565b9101612133565b90549060031b1c90565b93611e61565b63ffffffff1690565b6001939291565b5f925082915081908190565b919261220f816128e8565b81039081116119345761217893865f52612238611f3e8360205f200165ffffffffffff90541690565b65ffffffffffff8516101561224e57509161216d565b92915061225a90611926565b9061216d565b6040519061226d8261081e565b60606040838281528260208201520152565b906020828203126102ba5781516001600160401b03928382116102ba5701906060828203126102ba57604051926122b58461081e565b82518181116102ba57826122ca918501611251565b845260208301518181116102ba57826122e4918501611251565b602085015260408301519081116102ba576122ff9201611251565b604082015290565b908160209103126102ba575190565b60409065ffffffffffff61124394931681528160208201520190610599565b90939293612341612260565b9480518061243e575b5050600454606083901c6001600160a01b03918216148015929190612423575b505061241b575f546123b092919060209061238f9061101d906001600160a01b031681565b8187015190604051808097819463810da75d60e01b83528860048401612316565b03915afa90811561050b576123e3935f926123e8575b506123d79192604087015191611506565b90818082109118021890565b915190565b6123d7925061240e9060203d602011612414575b6124068183610854565b810190612307565b916123c6565b503d6123fc565b505090515f91565b60055481166001600160a01b03169116141590505f8061236a565b61245292965060208091830101910161227f565b935f8061234a565b6004549091606083901c6001600160a01b039283161480159290612507575b5050611774575f546004919060209061249c9061101d906001600160a01b031681565b60405163bd49c35f60e01b815293849182905afa90811561050b57611243925f926124e2575b506124d5905f52600260205260405f2090565b5490818082109118021890565b6124d59192506125009060203d602011612414576124068183610854565b91906124c2565b60055481166001600160a01b03169116141590505f80612479565b8054600160401b8110156108195761253f91600182018155612133565b8154905f199060031b1b19169055565b90815491600160401b8310156108195782611b3691600161088295018155612133565b908154905f8291600584116125dc575b61258d935084612c1e565b806125b557505f905b6001600160d01b038216156119bc576112439160016121d89201612133565b6125cf6125c46125d692611e61565b835f5260205f200190565b5460301c90565b90612596565b91926125e7816128e8565b81039081116119345761258d93855f5265ffffffffffff808360205f20015416908516105f14612618575091612582565b92915061262490611926565b90612582565b60405190612637826107fe565b5f6020838281520152565b9061266b61266561268c9261265561262a565b5061265e61262a565b5084612133565b5061210f565b91600165ffffffffffff845116936020828060d01b03910151169101612133565b9054906040519261269c846107fe565b835260031b1c602082015290565b6126b2612aa3565b6126ba612aa3565b60015f80516020612c9683398151915255565b604051906126da8261081e565b5f6040838281528260208201520152565b8091039060a082126102ba576060604051926127068461081e565b126102ba5760809060405161271a8161081e565b815161272581610549565b8152602082015161273581610549565b6020820152604082015161274881610549565b60408201528352606081015161275d81610549565b602084015201516122ff81610549565b6127756126cd565b5061278b815191602080809483010191016126eb565b80820180516040516302910f8b60e31b8082526001600160a01b039283166004830152939491939082816024817f000000000000000000000000000000000000000000000000000000000000000089165afa90811561050b575f916128cb575b50156104ca578161282f91604087019561280b875160018060a01b031690565b6040519283526001600160a01b031660048301529092839190829081906024820190565b03917f0000000000000000000000000000000000000000000000000000000000000000165afa91821561050b575f926128ae575b50501561289c5751600480546001600160a01b039283166001600160a01b03199182161790915591516005805490931691161790555190565b604051631f0853c160e21b8152600490fd5b6128c49250803d10610504576104f68183610854565b5f80612863565b6128e29150833d8511610504576104f68183610854565b5f6127eb565b600181111561124357600181600160801b811015612a01575b6129a961299f61299561298b6129816129776129b597600488600160401b6129b09a10156129f4575b6401000000008110156129e7575b620100008110156129da575b6101008110156129ce575b60108110156129c2575b10156129ba575b60030260011c612970818b611908565b0160011c90565b612970818a611908565b6129708189611908565b6129708188611908565b6129708187611908565b6129708186611908565b8093611908565b821190565b900390565b60011b612960565b811c9160021b91612959565b60081c91811b9161294f565b60101c9160081b91612944565b60201c9160101b91612938565b60401c9160201b9161292a565b50600160401b9050608082901c612901565b905b838310612a225750505090565b909192612a2f8185612ad1565b90835f5265ffffffffffff808360205f20015416908416105f14612a575750925b9190612a15565b93506001810180911115612a50576118f4565b805480612a7b5750505f905f905f90565b5f19918183810111611934575f5260205f2001015460019165ffffffffffff82169160301c90565b60ff5f80516020612cb68339815191525460401c1615612abf57565b604051631afcd79f60e31b8152600490fd5b90808216911860011c81018091116119345790565b8054600160401b81101561081957612b0391600182018155612133565b612b2e57815160209092015160301b65ffffffffffff191665ffffffffffff92909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b80549293928015612bf457612b58612b6391611e61565b825f5260205f200190565b9182549265ffffffffffff91828516928116808411612be257879303612ba95750612ba292509065ffffffffffff82549181199060301b169116179055565b60301c9190565b915050612bdd91612bc9612bbb610884565b65ffffffffffff9093168352565b6001600160d01b0386166020830152612ae6565b612ba2565b604051632520601d60e01b8152600490fd5b5090612c1991612c05612bbb610884565b6001600160d01b0385166020830152612ae6565b5f9190565b905b838310612c2d5750505090565b909192612c3a8185612ad1565b90835f5265ffffffffffff808360205f20015416908416105f14612c625750925b9190612c20565b93506001810180911115612c5b576118f456fe02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a264697066735822122067aa6510448df950d196b22488023407b46113c92aa0c31e1ef31a245fd1a75664736f6c63430008190033","sourceMap":"13600:2428:88:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;-1:-1:-1;;13600:2428:88;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3551:47:19;;;:87;;;;13600:2428:88;;;;;;;;;;3551:87:19;-1:-1:-1;;;1134:40:28;;-1:-1:-1;3551:87:19;;;13600:2428:88;-1:-1:-1;13600:2428:88;;;;;;;;-1:-1:-1;;13600:2428:88;;;;;;1537:38:83;-1:-1:-1;;;;;13600:2428:88;;;;;;;;;;;;-1:-1:-1;;13600:2428:88;;;;;;1632:54:83;-1:-1:-1;;;;;13600:2428:88;;;;;;;;;;;;-1:-1:-1;;13600:2428:88;;;;;;1743:56:83;-1:-1:-1;;;;;13600:2428:88;;;;;;;;;;;;-1:-1:-1;;13600:2428:88;;;;;;-1:-1:-1;;;;;13600:2428:88;;;;;;;;3361:103:26;;;:::i;:::-;13600:2428:88;;-1:-1:-1;;;4285:48:83;;4322:10;13600:2428:88;4285:48:83;;13600:2428:88;;;;;-1:-1:-1;;;;;4295:16:83;13600:2428:88;4285:48:83;;;;;;;-1:-1:-1;4285:48:83;;;13600:2428:88;4284:49:83;;4280:99;;-1:-1:-1;;;;;13600:2428:88;-1:-1:-1;;4322:10:83;297:2:95;13600:2428:88;;267:46:95;4459:27:83;;;;13600:2428:88;;4459:15:83;13600:2428:88;;;;;;;4459:27:83;13600:2428:88;4459:37:83;4455:87;;4654:38;4552:27;4654:38;4552:27;;;13600:2428:88;;4459:15:83;13600:2428:88;;;;;;;4552:27:83;13600:2428:88;4631:6:83;;;;:::i;:::-;13600:2428:88;;;;;;;;;;;;;4654:38:83;;;;3426:1:26;1949;-1:-1:-1;;;;;;;;;;;13600:2428:88;3860:283:26;3426:1;13600:2428:88;4455:87:83;13600:2428:88;;-1:-1:-1;;;4519:12:83;;13600:2428:88;;4519:12:83;4280:99;13600:2428:88;;-1:-1:-1;;;4356:12:83;;13600:2428:88;;4356:12:83;4285:48;;;;13600:2428:88;4285:48:83;13600:2428:88;4285:48:83;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;13600:2428:88:-;;;;;;-1:-1:-1;;13600:2428:88;;;;;;-1:-1:-1;13600:2428:88;-1:-1:-1;;;;;;;;;;;13600:2428:88;;;4919:24:19;13600:2428:88;-1:-1:-1;13600:2428:88;4919:24:19;13600:2428:88;;;;;;;;-1:-1:-1;;;;;13600:2428:88;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;13600:2428:88;;;;;;;;-1:-1:-1;;13600:2428:88;;;;:::o;:::-;;;;;;-1:-1:-1;;13600:2428:88;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;13600:2428:88;;;;;;322:32:76;-1:-1:-1;;;;;13600:2428:88;;;;;;;;;;;;-1:-1:-1;;13600:2428:88;;;;5350:25:19;13600:2428:88;;;;;;;:::i;:::-;;-1:-1:-1;13600:2428:88;-1:-1:-1;;;;;;;;;;;13600:2428:88;;3202:4:19;4919:24;13600:2428:88;-1:-1:-1;13600:2428:88;4919:24:19;13600:2428:88;3202:4:19;:::i;:::-;5350:25;:::i;13600:2428:88:-;;;;;;-1:-1:-1;;13600:2428:88;;;;;;;;;:::i;:::-;966:10:24;-1:-1:-1;;;;;13600:2428:88;;6441:34:19;6437:102;;6549:37;13600:2428:88;;;6549:37:19;:::i;6437:102::-;13600:2428:88;;-1:-1:-1;;;6498:30:19;;13600:2428:88;;6498:30:19;13600:2428:88;;;;;;-1:-1:-1;;13600:2428:88;;;;;;;;;:::i;:::-;3361:103:26;;:::i;:::-;966:10:24;-1:-1:-1;13600:2428:88;;;;;;;;;;1356:26:83;;13600:2428:88;;4468:23:19;4464:108;;-1:-1:-1;4861:4:83;13600:2428:88;-1:-1:-1;;;;;13600:2428:88;;;;;;4861:13:83;;4857:63;;-1:-1:-1;;;;;;13600:2428:88;;;4861:4:83;13600:2428:88;4958:14:83;-1:-1:-1;;4958:14:83;4861:4;-1:-1:-1;;;;;;;;;;;13600:2428:88;;4464:108:19;13600:2428:88;;;;4514:47:19;;;;;;966:10:24;13600:2428:88;4514:47:19;;13600:2428:88;;;;;4514:47:19;13600:2428:88;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13600:2428:88;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;-1:-1:-1;;;;;13600:2428:88;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;13600:2428:88;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;13600:2428:88;;;;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;:::i;:::-;-1:-1:-1;;;;;13600:2428:88;;;;;;-1:-1:-1;;13600:2428:88;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;13600:2428:88;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;13600:2428:88;;;;;;:::i;:::-;;;-1:-1:-1;;;;;13600:2428:88;;;;;;;2045:63:86;13600:2428:88;;;;;;:::i;:::-;;;;-1:-1:-1;13600:2428:88;2045:16:86;13600:2428:88;;;-1:-1:-1;13600:2428:88;2045:63:86;:::i;:::-;13600:2428:88;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13600:2428:88;;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;13600:2428:88;;;;-1:-1:-1;;;;;13600:2428:88;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;13600:2428:88;;;;;;;4301:16:22;13600:2428:88;;4726:16:22;;:34;;;;13600:2428:88;4805:1:22;4790:16;:50;;;;13600:2428:88;4855:13:22;:30;;;;13600:2428:88;4851:91:22;;;-1:-1:-1;;;;;;;;;;;13600:2428:88;;-1:-1:-1;;13600:2428:88;;;;;718:4:76;;4951:18:22;4979:67;;718:4:76;:::i;:::-;5066:101:22;;13600:2428:88;5066:101:22;-1:-1:-1;;;;;;;;;;;13600:2428:88;;-1:-1:-1;;;;13600:2428:88;;;;;-1:-1:-1;13600:2428:88;;5142:14:22;;13600:2428:88;;5142:14:22;13600:2428:88;4979:67:22;-1:-1:-1;;;;;;;;;;;13600:2428:88;;-1:-1:-1;;;;13600:2428:88;-1:-1:-1;;;13600:2428:88;;;718:4:76;:::i;4851:91:22:-;13600:2428:88;;-1:-1:-1;;;4908:23:22;;13600:2428:88;;4908:23:22;4855:30;4872:13;;;4855:30;;;4790:50;4818:4;4810:25;:30;;-1:-1:-1;4790:50:22;;4726:34;;;-1:-1:-1;4726:34:22;;13600:2428:88;;;;;;-1:-1:-1;;13600:2428:88;;;;;;13796:36;-1:-1:-1;;;;;13600:2428:88;;;;;;;;;;;;-1:-1:-1;;13600:2428:88;;;;;;;1253:6:83;13600:2428:88;;;;;;;;;-1:-1:-1;;13600:2428:88;;;;1267:23:86;13600:2428:88;;;-1:-1:-1;;;;;13600:2428:88;;;;;;;;;;;;;;-1:-1:-1;;13600:2428:88;;;;;;;1356:26:83;13600:2428:88;;;;;;;;;-1:-1:-1;;13600:2428:88;;;;;;;;-1:-1:-1;;;;;13600:2428:88;;;;;;;;;;;;;;-1:-1:-1;;13600:2428:88;;;;;;13745:45;-1:-1:-1;;;;;13600:2428:88;;;;;;;;;;;;-1:-1:-1;;13600:2428:88;;;;;;;;-1:-1:-1;;;;;13600:2428:88;;;;;;;;;;;;;;-1:-1:-1;;13600:2428:88;;;;;;961:42:86;-1:-1:-1;;;;;13600:2428:88;;;;;;;;;;;;-1:-1:-1;;13600:2428:88;;;;;;3901:31:19;13600:2428:88;;;;;:::i;:::-;;;-1:-1:-1;13600:2428:88;-1:-1:-1;;;;;;;;;;;13600:2428:88;;;-1:-1:-1;13600:2428:88;;;;;;;;;;;;;;;;;3901:31:19;13600:2428:88;;;;;;;;;;;;;;;;-1:-1:-1;;13600:2428:88;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;-1:-1:-1;;13600:2428:88;;;;;;13838:45;-1:-1:-1;;;;;13600:2428:88;;;;;;;;;;;;-1:-1:-1;;13600:2428:88;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;13600:2428:88;;;;-1:-1:-1;13600:2428:88;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;416:25:82;;;;477:31;416:25;;:::i;:::-;13600:2428:88;;;;;;;;;;477:31:82;;13600:2428:88;;;;;;;;;;;:::i;:::-;477:31:82;13600:2428:88;;477:31:82;;;;;;:::i;:::-;518:79;;;13600:2428:88;518:79:82;;13600:2428:88;;;;;;-1:-1:-1;;13600:2428:88;;;;;;;;;;;;;;;;;-1:-1:-1;;13600:2428:88;;;;;;;-1:-1:-1;;;;;404:28:76;13600:2428:88;;;;;;;;;;-1:-1:-1;;13600:2428:88;;;;;;1439:41:83;-1:-1:-1;;;;;13600:2428:88;;;;;;;;;;;;-1:-1:-1;;13600:2428:88;;;;;;:::i;:::-;449:5:89;-1:-1:-1;;;;;13600:2428:88;435:10:89;:19;431:71;;13600:2428:88;14455:67;13600:2428;;;;-1:-1:-1;13600:2428:88;14455:16;13600:2428;;;-1:-1:-1;13600:2428:88;14455:67;:::i;:::-;13600:2428;;;;;;;;;;;;;;;;;;;431:71:89;13600:2428:88;;-1:-1:-1;;;477:14:89;;13600:2428:88;;477:14:89;13600:2428:88;;;;;;-1:-1:-1;;13600:2428:88;;;;;;-1:-1:-1;13600:2428:88;2009:67:83;13600:2428:88;;;;-1:-1:-1;13600:2428:88;;;;;;;;;;;;;;-1:-1:-1;;13600:2428:88;;;;5767:26:19;13600:2428:88;;;;;;;:::i;:::-;;-1:-1:-1;13600:2428:88;-1:-1:-1;;;;;;;;;;;13600:2428:88;;3202:4:19;4919:24;13600:2428:88;-1:-1:-1;13600:2428:88;4919:24:19;13600:2428:88;3202:4:19;:::i;:::-;5767:26;:::i;13600:2428:88:-;;;;;;-1:-1:-1;;13600:2428:88;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;-1:-1:-1;;;;;13600:2428:88;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;-1:-1:-1;;13600:2428:88;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;13600:2428:88;;;;;;;;;;;;:::i;:::-;3361:103:26;;:::i;:::-;-1:-1:-1;13600:2428:88;;;5246:21:83;;:13;;-1:-1:-1;;;;;13600:2428:88;5246:13:83;13600:2428:88;;-1:-1:-1;;;;;13600:2428:88;;;5246:21:83;13600:2428:88;;-1:-1:-1;;;5246:23:83;;13600:2428:88;;;;;5246:23:83;;;;;;;-1:-1:-1;5246:23:83;;;13600:2428:88;-1:-1:-1;;;;;;13600:2428:88;;;5232:10:83;:37;5228:87;;5341:4;13600:2428:88;-1:-1:-1;;;;;13600:2428:88;;;;5355:469:83;;13600:2428:88;-1:-1:-1;;13600:2428:88;;;;;;;;;;;;;;;;5839:55:83;;13600:2428:88;;;;5839:55:83;;;;3426:1:26;1949;-1:-1:-1;;;;;;;;;;;13600:2428:88;3860:283:26;5355:469:83;13600:2428:88;;;;5435:94:83;;;;13600:2428:88;5435:94:83;;;;;;;;;;;;13600:2428:88;5435:94:83;;;:::i;:::-;;13600:2428:88;;5435:94:83;;;;;;:::i;:::-;13600:2428:88;5548:9:83;:51;5544:118;;-1:-1:-1;5839:55:83;5676:138;;;;5839:55;5676:138;;;1150:7;5676:138;;5355:469;;;5544:118;13600:2428:88;;-1:-1:-1;;;5626:21:83;;13600:2428:88;;5626:21:83;5228:87;13600:2428:88;;-1:-1:-1;;;5292:12:83;;13600:2428:88;;5292:12:83;5246:23;;;;;13600:2428:88;5246:23:83;13600:2428:88;5246:23:83;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;13600:2428:88;;;;;;-1:-1:-1;;13600:2428:88;;;;;;;;-1:-1:-1;;;;;13600:2428:88;;;;;;;;;;;;;;-1:-1:-1;;13600:2428:88;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;-1:-1:-1;;13600:2428:88;;;;;;;1150:7:83;13600:2428:88;;;;;;;;;-1:-1:-1;;13600:2428:88;;;;;;;2700:1:83;13600:2428:88;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;13600:2428:88;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;13600:2428:88;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;15098:928::-;13600:2428;;-1:-1:-1;;;15315:99:88;;-1:-1:-1;;;;;13600:2428:88;;;15315:99;;;13600:2428;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13600:2428:88;;;15334:20;13600:2428;;15315:99;;;;;;;;;;;15098:928;-1:-1:-1;13600:2428:88;;-1:-1:-1;;;15508:32:88;;;13600:2428;15315:99;13600:2428;;;;15508:32;;;;;;;15468:84;15508:32;15315:99;15508:32;;;;;;;15098:928;-1:-1:-1;13600:2428:88;;-1:-1:-1;;;15468:84:88;;-1:-1:-1;;;;;13600:2428:88;;;15315:99;15468:84;;13600:2428;;;;;;;;;;;;;-1:-1:-1;13600:2428:88;;;;;;;;;15468:84;;15479:11;;13600:2428;15468:84;;;;;;;15315:99;15468:84;;;15098:928;15599:53;;;;;:::i;:::-;13600:2428;;;15667:21;;;:52;;;15098:928;15667:88;;;;15098:928;15663:357;;15098:928;;;:::o;15663:357::-;15778:231;13600:2428;;;;15778:231;13600:2428;;;;:::i;:::-;;;;15508:32;15806:189;;13600:2428;;15806:189;;13600:2428;;;15778:231;;;15508:32;15778:231;;;:::i;15667:88::-;13600:2428;;;15723:32;;15667:88;;:52;13600:2428;;;15692:27;;15667:52;;15468:84;15599:53;15468:84;;;;;;15315:99;15468:84;;;;;;:::i;:::-;;;;;:::i;:::-;;;;15508:32;;;;;;;;;;;;;;:::i;:::-;;;;15315:99;;;;;;;;;;;;;;:::i;:::-;;;;;1914:201:86;;2045:63;1914:201;;-1:-1:-1;13600:2428:88;2045:16:86;13600:2428:88;;;-1:-1:-1;13600:2428:88;2045:63:86;:::i;13600:2428:88:-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;14535:557::-;;;-1:-1:-1;14672:12:88;13600:2428;;;;;14818:144;;;;;;;;;;;;;13600:2428;;;;;;;14818:144;;;;;:::i;:::-;13600:2428;;716:88:89;;13600:2428:88;716:88:89;;;;;;;;;783:4;14818:144:88;716:88:89;;13600:2428:88;;;;;;;;;;;:::i;:::-;716:88:89;13600:2428:88;716:88:89;13600:2428:88;;716:88:89;;;;;;;;:::i;:::-;698:107;;;;;857:45;698:107;;:::i;:::-;13600:2428:88;;;;857:45:89;;;;;;:::i;:::-;916:8;;912:175;;13600:2428:88;;;14726:288;13600:2428;;14726:288;;;;;;:::i;:::-;15025:61;;;;14535:557;;;:::o;15025:61::-;15058:17;13600:2428;;;;15058:17;13600:2428;;15058:17;;;;;13600:2428;;;;;;;;;;;;15058:17;;;;;;;;;:::i;912:175:89:-;13600:2428:88;;;;944:22:89;;;940:36;;990:87;;13600:2428:88;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;13600:2428:88;;;;:::o;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;13600:2428:88;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;-1:-1:-1;;;;;13600:2428:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2764:920:83:-;;2978:48;2764:920;;;;2978:48;;;;:::i;:::-;3036:36;;;13600:2428:88;;:::i;:::-;;;;3086:20:83;3082:107;;2764:920;3216:11;;;;:193;;;;;2764:920;3216:394;;;;2764:920;3199:455;;;;;;2764:920;:::o;3199:455::-;3635:8;-1:-1:-1;3635:8:83;:::o;3216:394::-;3553:39;;;;;3430:180;3553:39;;;13600:2428:88;;;;;;;;;;3430:180:83;;467:2:95;13600:2428:88;3430:180:83;;;;;:::i;:::-;;13600:2428:88;3444:31:83;-1:-1:-1;;;;;13600:2428:88;3430:180:83;;;;;;;-1:-1:-1;3430:180:83;;;3216:394;3429:181;;3216:394;;;;;;3430:180;;;;3553:39;3430:180;3553:39;3430:180;;;;;;;:::i;:::-;;;;3216:193;-1:-1:-1;13600:2428:88;;;-1:-1:-1;;;;;;13600:2428:88;3248:161:83;3354:37;;;13600:2428:88;3248:161:83;13600:2428:88;;;;;;;;;;3248:161:83;;;;;;;:::i;:::-;;13600:2428:88;3262:29:83;-1:-1:-1;;;;;13600:2428:88;3248:161:83;;;;;;;-1:-1:-1;3248:161:83;;;3216:193;3247:162;;3216:193;;;3248:161;;;;;;;;;;;;;;:::i;:::-;;;;3082:107;3139:39;;;;;;;;;;;;;:::i;:::-;3082:107;;;;;13600:2428:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;8889:1:93;13600:2428:88;;;;;;;:::o;:::-;;:::i;3740:389:83:-;3918:5;13600:2428:88;;;-1:-1:-1;;;3853:71:83;;;-1:-1:-1;;;;;13600:2428:88;;;3853:71:83;;;13600:2428:88;;;;;;;;3740:389:83;;13600:2428:88;3853:71:83;;13600:2428:88;;3853:71:83;13600:2428:88;;;3867:29:83;13600:2428:88;;3853:71:83;;;;;;;3918:5;3853:71;;;3740:389;3852:72;;13600:2428:88;;;3852:181:83;;3740:389;3835:242;;;;;;4094:28;;;:::i;3835:242::-;4058:8;;3918:5;4058:8;:::o;3852:181::-;13600:2428:88;;3945:88:83;;;-1:-1:-1;;;;;13600:2428:88;;3853:71:83;3945:88;;13600:2428:88;467:2:95;13600:2428:88;;;;;;;;-1:-1:-1;13600:2428:88;;;;;;;;3959:31:83;13600:2428:88;3945:88:83;;;;;;;3918:5;3945:88;;;3852:181;3944:89;;;3852:181;;;;;3945:88;;;;;;-1:-1:-1;3945:88:83;;;;;;:::i;:::-;;;;;3853:71;;;;;;;;;;;;;;:::i;:::-;;;;3470:384:26;-1:-1:-1;;;;;;;;;;;1991:1:26;13600:2428:88;;3670:20:26;3666:88;;1991:1;13600:2428:88;;3470:384:26:o;3666:88::-;13600:2428:88;;-1:-1:-1;;;3713:30:26;;;;;3164:253:86;3261:7;13600:2428:88;-1:-1:-1;;;;;13600:2428:88;467:2:95;13600:2428:88;;;3261:31:86;3257:85;;-1:-1:-1;13600:2428:88;3351:16:86;13600:2428:88;;;-1:-1:-1;13600:2428:88;;;837:15:68;;;14374:24:64;14370:103;;837:15:68;;13600:2428:88;6360:12:93;;;;13600:2428:88;;;6360:24:93;6356:75;;3164:253:86;6474:30:93;;;:::i;:::-;13600:2428:88;;;;;;;;10446:8:66;;:63;:8;;;:63;-1:-1:-1;10446:63:66;;-1:-1:-1;;;;;13600:2428:88;;;;10726:7:93;13600:2428:88;;10736:17:93;;;;:::i;:::-;10726:31;;;6604:24;;;10726:31;-1:-1:-1;;6600:188:93;;;6657:7;;6644:29;6657:7;;;;6644:21;6657:7;;:::i;:::-;6644:21;;:::i;:::-;:29;13600:2428:88;;;;;;;;;;;;;;;;;;;;;6600:188:93;6753:24;13600:2428:88;8310:38:66;13600:2428:88;;8310:38:66;;:::i;:::-;6753:24:93;;;:::i;6604:::-;13600:2428:88;6614:14:93;;;-1:-1:-1;6604:24:93;;;;10726:31;;;;10446:63:66;13600:2428:88;;;;;;;;;;13267:109:93;-1:-1:-1;13267:109:93;13600:2428:88;-1:-1:-1;13267:109:93;;;13600:2428:88;;;10446:63:66;;;6356:75:93;6400:20;;;:::i;:::-;6356:75;;14370:103:64;13600:2428:88;;-1:-1:-1;;;14421:41:64;;14452:2;3261:7:86;14421:41:64;;13600:2428:88;837:15:68;13600:2428:88;;;;;;14421:41:64;3257:85:86;13600:2428:88;;-1:-1:-1;;;3315:16:86;;3261:7;;3315:16;4148:103:19;-1:-1:-1;13600:2428:88;;;-1:-1:-1;;;;;;;;;;;13600:2428:88;;;;;;;;966:10:24;13600:2428:88;;;;;;;;;;4468:23:19;4464:108;;4148:103;:::o;7270:387::-;-1:-1:-1;;;;;13600:2428:88;;-1:-1:-1;13600:2428:88;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2887:71:19;13600:2428:88;;;;-1:-1:-1;13600:2428:88;;;;;;;;;;;-1:-1:-1;;;;;13600:2428:88;;;;;;;;;;-1:-1:-1;;13600:2428:88;7509:4:19;13600:2428:88;;;966:10:24;;-1:-1:-1;;;;;13600:2428:88;-1:-1:-1;7532:40:19;-1:-1:-1;;7532:40:19;7509:4;7586:11;:::o;7270:387::-;-1:-1:-1;;;;;13600:2428:88;;-1:-1:-1;13600:2428:88;;;;;;;;;1356:26:83;;-1:-1:-1;;;;;;;;;;;2887:71:19;13600:2428:88;;3901:31:19;13600:2428:88;;;;-1:-1:-1;13600:2428:88;;;;;;;;;;;-1:-1:-1;;;;;13600:2428:88;;;;;;;;;;-1:-1:-1;;13600:2428:88;7509:4:19;13600:2428:88;;;966:10:24;;-1:-1:-1;;;;;13600:2428:88;;7532:40:19;-1:-1:-1;;7532:40:19;7509:4;7586:11;:::o;7432:219::-;7628:12;;;-1:-1:-1;7628:12:19;:::o;7270:387::-;-1:-1:-1;13600:2428:88;;;-1:-1:-1;;;;;;;;;;;13600:2428:88;;;;;;;;-1:-1:-1;;;;;13600:2428:88;;;;;;;;;;;;3901:31:19;13600:2428:88;7892:388:19;-1:-1:-1;13600:2428:88;;;-1:-1:-1;;;;;;;;;;;13600:2428:88;;;;;;;;-1:-1:-1;;;;;13600:2428:88;;;;;;;;;;;;;;;;-1:-1:-1;13600:2428:88;;;;;;;;;;;-1:-1:-1;;;;;13600:2428:88;;;;;;;;;;-1:-1:-1;;13600:2428:88;;;966:10:24;;-1:-1:-1;;;;;13600:2428:88;;8155:40:19;-1:-1:-1;;8155:40:19;13600:2428:88;8209:11:19;:::o;13600:2428:88:-;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;13600:2428:88;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::o;7558:604:93:-;;13600:2428:88;;7686:17:93;7682:83;;13600:2428:88;7789:27:93;13600:2428:88;7789:27:93;13600:2428:88;;7789:27:93;;;;;;:::i;:::-;7860:14;;;;;:::i;:::-;13600:2428:88;;;;;;;;;;;;;;;;7888:22:93;;;7884:77;;7975:21;-1:-1:-1;7975:84:93;;;;7558:604;7971:139;;;;8127:28;;;;:::i;7971:139::-;8082:17;;7789:27;8082:17;13600:2428:88;8075:24:93;:::o;7975:84::-;13600:2428:88;;;8009:16:93;13600:2428:88;;8009:16:93;:::i;:::-;13600:2428:88;;;8001:24:93;:57;;;;;7975:84;;;;;;;8001:57;8029:29;8038:8;;;8029:18;8038:8;8029:23;8038:8;;:::i;:::-;8029:18;;:::i;:::-;13600:2428:88;;;;;8029:23:93;13600:2428:88;;;;8029:29:93;;8001:57;;;;7884:77;7933:17;;;;;7789:27;7933:17;13600:2428:88;7926:24:93;:::o;7682:83::-;7726:28;;;;:::i;13600:2428:88:-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;13600:2428:88;;;;;;;;:::i;5907:716:83:-;6030:34;5907:716;6030:34;;;;:::i;:::-;13600:2428:88;;-1:-1:-1;;;6080:41:83;;-1:-1:-1;;;;;13600:2428:88;;;6080:41:83;;;13600:2428:88;;;;;6080:41:83;13600:2428:88;;;6090:13:83;13600:2428:88;;6080:41:83;;;;;;;-1:-1:-1;6080:41:83;;;5907:716;6079:42;;6075:90;;6266:27;13600:2428:88;2684:111:26;6210:14:83;13600:2428:88;2684:111:26;;;:::i;:::-;13600:2428:88;;;;;;-1:-1:-1;;;;;13600:2428:88;;-1:-1:-1;13600:2428:88;;;-1:-1:-1;13600:2428:88;;6210:14:83;6266:27;:::i;:::-;6080:41;6311:15;;13600:2428:88;;;;-1:-1:-1;;;;;;13600:2428:88;-1:-1:-1;;;;;13600:2428:88;;;;;;;;;;;-1:-1:-1;;;;;13600:2428:88;;;;6337:143:83;;5907:716;-1:-1:-1;6493:28:83;13600:2428:88;-1:-1:-1;;;;;13600:2428:88;;;;;;;6489:128:83;;5907:716;:::o;6489:128::-;6551:55;;;:::i;:::-;;5907:716::o;6337:143::-;6404:65;;;:::i;:::-;;6337:143;;;6075:90;13600:2428:88;;-1:-1:-1;;;6144:10:83;;6080:41;;6144:10;6080:41;;;;;;;;;;;;;;:::i;:::-;;;;13600:2428:88;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;13600:2428:88;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;13600:2428:88;;-1:-1:-1;13600:2428:88;;;-1:-1:-1;13600:2428:88;:::o;:::-;;;;;;;;;;;;8406:869:93;;;13600:2428:88;;8620:15:93;8578:11;8645:18;8678:7;8684:1;8678:7;;8674:241;;8406:869;8939:60;;;;;:::i;:::-;9014:8;;;9010:62;;9252:15;9259:7;13600:2428:88;9219:31:93;13600:2428:88;9130:48:93;9170:7;;;:::i;:::-;9130:48;13267:109;;;;;;13089:293;;9130:48;13600:2428:88;:::i;:::-;;9176:1:93;13600:2428:88;9232:17:93;13600:2428:88;;;;;;;;9232:17:93;;13600:2428:88;-1:-1:-1;;;;;13600:2428:88;;;;9219:12:93;;:31;:::i;:::-;13600:2428:88;;;;;;;;;9259:7:93;;:::i;:::-;13600:2428:88;;;;9252:15:93;9176:1;;9188:80;;8406:869::o;9010:62::-;8578:11;;-1:-1:-1;8578:11:93;;-1:-1:-1;8578:11:93;;;;9038:23::o;8674:241::-;8721:14;;;;;:::i;:::-;13600:2428:88;;;;;;;8939:60:93;13267:109;;8578:11;13267:109;8753:55;8759:49;13267:109;;8578:11;13267:109;;13600:2428:88;;;;;;8753:55:93;13600:2428:88;;;8753:55:93;13267:109;;;8828:10;8749:156;8674:241;;8749:156;8883:7;;;;;;:::i;:::-;8749:156;8674:241;;13600:2428:88;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;13600:2428:88;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;2121:740:86:-;;;;;13600:2428:88;;:::i;:::-;;;;2362:16:86;2358:92;;2121:740;-1:-1:-1;;2464:7:86;13600:2428:88;467:2:95;13600:2428:88;;;-1:-1:-1;;;;;13600:2428:88;;;2464:31:86;;;;;13600:2428:88;2464:56:86;;2121:740;2460:120;;;;-1:-1:-1;13600:2428:88;2637:67:86;;13600:2428:88;;2676:27:86;;2637;;:13;;-1:-1:-1;;;;;13600:2428:88;2637:13:86;13600:2428:88;2637:27:86;2676;;;;13600:2428:88;;;;;;;;;;;2637:67:86;;;2464:7;2637:67;;;:::i;:::-;;;;;;;;;;2611:198;2637:67;-1:-1:-1;2637:67:86;;;2121:740;2763:31;2722:73;2763:31;;13600:2428:88;2763:31:86;;;2722:73;;:::i;:::-;2611:198;3463:5:63;;;;3066;;13600:2428:88;3060:42:63;3371:111;;2611:198:86;2823:21;;2121:740;:::o;2637:67::-;2722:73;2637:67;;;;2676:27;2637:67;2676:27;2637:67;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;2460:120;-1:-1:-1;;2547:21:86;;-1:-1:-1;;2536:33:86:o;2464:56::-;2499:8;13600:2428:88;;;-1:-1:-1;;;;;13600:2428:88;;;2499:21:86;;;-1:-1:-1;2464:56:86;;;;2358:92;2408:31;;;;;;;;;;;;;:::i;:::-;2358:92;;;;;2867:291;2977:7;13600:2428:88;2867:291:86;;13600:2428:88;;;;-1:-1:-1;;;;;13600:2428:88;;;2977:31:86;;;;13600:2428:88;2977:56:86;;2867:291;2973:95;;;;-1:-1:-1;13600:2428:88;2977:7:86;;13600:2428:88;3094:27:86;;:25;;:13;;-1:-1:-1;;;;;13600:2428:88;3094:13:86;13600:2428:88;3094:25:86;13600:2428:88;;-1:-1:-1;;;3094:27:86;;13600:2428:88;;;;;3094:27:86;;;;;;;3085:66;3094:27;-1:-1:-1;3094:27:86;;;2867:291;3123:27;;;13600:2428:88;;4459:15:83;13600:2428:88;;;;;;;3123:27:86;13600:2428:88;3085:66:86;3463:5:63;;;;3066;;13600:2428:88;3060:42:63;3371:111;;3094:27:86;3123;3094;;;;;;;;;;;;;;;:::i;:::-;;;;;2977:56;3012:8;13600:2428:88;;;-1:-1:-1;;;;;13600:2428:88;;;3012:21:86;;;-1:-1:-1;2977:56:86;;;;13600:2428:88;;;-1:-1:-1;;;13600:2428:88;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;-1:-1:-1;;;13600:2428:88;;;;;;;;;;;;;;;:::i;6999:207:93:-;;13600:2428:88;;9737:15:66;-1:-1:-1;9762:18:66;9795:7;9801:1;9795:7;;9791:234;;6999:207:93;10049:53:66;;;;;:::i;:::-;10120:8;;;:63;-1:-1:-1;10120:63:66;;-1:-1:-1;;;;;13600:2428:88;;7168:7:93;13600:2428:88;;;7178:12:93;;:17;:12;;:17;:::i;10120:63:66:-;10135:41;10168:7;10135:48;10168:7;;:::i;:::-;10135:41;13267:109:93;;;;;;13089:293;;10135:41:66;13600:2428:88;;;;;10135:48:66;10120:63;;;9791:234;9838:14;;;;;:::i;:::-;13600:2428:88;;;;;;;10049:53:66;13267:109:93;;-1:-1:-1;13267:109:93;13600:2428:88;13267:109:93;;;-1:-1:-1;13267:109:93;;13600:2428:88;;;;;9870:48:66;9866:149;13600:2428:88;;;9938:10:66;9866:149;9791:234;;9866:149;9993:7;;;;;;:::i;:::-;9866:149;9791:234;;13600:2428:88;;;;;;;:::i;:::-;-1:-1:-1;13600:2428:88;;;;;;;:::o;11486:272:93:-;;13600:2428:88;11452:22:66;11718:31:93;11486:272;13600:2428:88;;:::i;:::-;;;;:::i;:::-;;11452:22:66;;:::i;:::-;13600:2428:88;;:::i;:::-;;11718:12:93;13600:2428:88;;;;;11731:17:93;13600:2428:88;;;;;11731:17:93;;13600:2428:88;;11718:12:93;;:31;:::i;:::-;13600:2428:88;;;;;;;;;:::i;:::-;;;;;;11731:17:93;11672:79;;13600:2428:88;11486:272:93;:::o;6893:76:22:-;;;:::i;:::-;;;:::i;:::-;1949:1:26;-1:-1:-1;;;;;;;;;;;13600:2428:88;6893:76:22:o;13600:2428:88:-;;;;;;;:::i;:::-;-1:-1:-1;13600:2428:88;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;3423:520:86:-;13600:2428:88;;:::i;:::-;;3571:30:86;13600:2428:88;;3571:30:86;;;;;;;;;;;:::i;:::-;3654:14;;;13600:2428:88;;;;-1:-1:-1;;;3617:52:86;;;-1:-1:-1;;;;;13600:2428:88;;;3617:52:86;;;13600:2428:88;3654:14:86;;13600:2428:88;;;3654:14:86;13600:2428:88;;;3627:16:86;13600:2428:88;;3617:52:86;;;;;;;-1:-1:-1;3617:52:86;;;3423:520;3616:53;;3612:103;;3768:15;3730:54;3768:15;13600:2428:88;3768:15:86;;13600:2428:88;;;;;;;;;;;;;;;3730:54:86;;;-1:-1:-1;;;;;13600:2428:88;3617:52:86;3730:54;;13600:2428:88;;;;;-1:-1:-1;13600:2428:88;;;;;;;;;3730:54:86;;3740:17;;13600:2428:88;3730:54:86;;;;;;;-1:-1:-1;3730:54:86;;;3423:520;3729:55;;;3725:106;;13600:2428:88;3617:52:86;13600:2428:88;;-1:-1:-1;;;;;13600:2428:88;;;-1:-1:-1;;;;;;13600:2428:88;;;;;;;;;3875:26:86;13600:2428:88;;;;;;;;;;3919:17:86;3423:520;:::o;3725:106::-;13600:2428:88;;-1:-1:-1;;;3807:13:86;;3617:52;;3807:13;3730:54;;;;;;-1:-1:-1;3730:54:86;;;;;;:::i;:::-;;;;;3617:52;;;;;;;;;;;;;;:::i;:::-;;;;18080:5181:63;18246:1;18241:6;;;18237:53;;18246:1;19217:14;-1:-1:-1;;;19278:16:63;;;19274:92;;18080:5181;22827:18;22717;22607;22498;22387;22278;23216:28;19383:15;19898:6;19383:15;-1:-1:-1;;;23237:6:63;19383:15;;;19379:90;;18080:5181;19493:7;19486:15;;;19482:90;;18080:5181;19596:7;19589:15;;;19585:89;;18080:5181;19698:6;19691:14;;;19687:87;;18080:5181;19798:6;19791:14;;;19787:87;;18080:5181;19891:14;;19887:61;;18080:5181;20374:1;13600:2428:88;18246:1:63;13600:2428:88;22284:6:63;;;;:::i;:::-;13600:2428:88;;;;;22278:18:63;22393:6;;;;:::i;22387:18::-;22504:6;;;;:::i;22498:18::-;22613:6;;;;:::i;22607:18::-;22723:6;;;;:::i;22717:18::-;22833:6;;;;:::i;22827:18::-;23237:6;;;:::i;:::-;23232:11;;;13600:2428:88;23216:28:63;13600:2428:88;;18080:5181:63;:::o;19887:61::-;18246:1;13600:2428:88;19887:61:63;;19787:87;13600:2428:88;;;;;19787:87:63;;;19687;13600:2428:88;;;;;19687:87:63;;;19585:89;13600:2428:88;;;;;19585:89:63;;;19482:90;13600:2428:88;;;;;19482:90:63;;;19379;13600:2428:88;;;;;19379:90:63;;;19274:92;-1:-1:-1;;;;13600:2428:88;-1:-1:-1;13600:2428:88;;;;19274:92:63;;12497:447:93;;12694:10;;;;;;12926:11;;;12497:447;:::o;12687:230::-;12734:23;;;;;;;:::i;:::-;13267:109;;-1:-1:-1;13267:109:93;13600:2428:88;13267:109:93;;;-1:-1:-1;13267:109:93;;13600:2428:88;;;;;-1:-1:-1;12771:136:93;13600:2428:88;;;12830:10:93;12771:136;;12687:230;;;;12771:136;13600:2428:88;;12891:1:93;13600:2428:88;;;;;;12771:136:93;13600:2428:88;;:::i;10695:389:66:-;13600:2428:88;;10871:8:66;;;10895:20;;10833:17;10895:20;10833:17;10895:20;10833:17;10895:20;:::o;10867:211::-;13600:2428:88;;;;;;;;;;10833:17:66;13267:109:93;;10833:17:66;13267:109:93;;;13600:2428:88;11014:1:66;13600:2428:88;;;;;;;11030:37:66;:::o;7084:141:22:-;13600:2428:88;-1:-1:-1;;;;;;;;;;;13600:2428:88;;;;7150:18:22;7146:73;;7084:141::o;7146:73::-;13600:2428:88;;-1:-1:-1;;;7191:17:22;;;;;3595:153:63;;3721:5;;;3731;;13600:2428:88;;;;;;;;;3595:153:63;:::o;13600:2428:88:-;;;-1:-1:-1;;;13600:2428:88;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;13600:2428:88;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;11657:922:66;13600:2428:88;;11657:922:66;;;11864:7;;;;11936;11916:28;11936:7;;:::i;:::-;11916:28;13267:109:93;;;;;;13089:293;;11916:28:66;13600:2428:88;;;;;;;;;;;;12103:13:66;;;12099:89;;12251:14;;;;;12285:19;;;;13600:2428:88;;;;;;;;;;;;;;;;;12285:19:66;13600:2428:88;;12423:25:66;;:::o;12247:163::-;13600:2428:88;;;12343:52:66;13600:2428:88;12353:41:66;13600:2428:88;;:::i;:::-;;;;;;;;12353:41:66;-1:-1:-1;;;;;13600:2428:88;;12353:41:66;;;13600:2428:88;12343:52:66;:::i;:::-;12247:163;;12099:89;13600:2428:88;;-1:-1:-1;;;12143:30:66;;;;;11860:713;13600:2428:88;;12479:52:66;13600:2428:88;12489:41:66;13600:2428:88;;:::i;12489:41:66:-;-1:-1:-1;;;;;13600:2428:88;;12489:41:66;;;13600:2428:88;12343:52:66;:::i;12479:::-;11870:1;12545:17;;:::o;12929:433::-;;13112:10;;;;;;13344:11;;;12929:433;:::o;13105:230::-;13152:23;;;;;;;:::i;:::-;13267:109:93;;-1:-1:-1;13267:109:93;13600:2428:88;13267:109:93;;;-1:-1:-1;13267:109:93;;13600:2428:88;;;;;-1:-1:-1;13189:136:66;13600:2428:88;;;13248:10:66;13189:136;;13105:230;;;;13189:136;13600:2428:88;;13309:1:66;13600:2428:88;;;;;;13189:136:66;13600:2428:88;;:::i","linkReferences":{},"immutableReferences":{"56598":[{"start":1579,"length":32}],"56601":[{"start":3566,"length":32}],"57552":[{"start":989,"length":32},{"start":3623,"length":32},{"start":10170,"length":32}],"57555":[{"start":723,"length":32},{"start":8146,"length":32}],"57558":[{"start":791,"length":32},{"start":6209,"length":32},{"start":6512,"length":32}],"57561":[{"start":859,"length":32},{"start":6056,"length":32},{"start":6638,"length":32}],"59177":[{"start":3099,"length":32},{"start":10291,"length":32}],"60951":[{"start":2991,"length":32},{"start":4969,"length":32}],"60953":[{"start":2757,"length":32},{"start":5130,"length":32}],"60955":[{"start":3314,"length":32}],"61158":[{"start":3697,"length":32}]}},"methodIdentifiers":{"BASE_DELEGATOR_HINTS()":"79d89614","DEFAULT_ADMIN_ROLE()":"a217fddf","FACTORY()":"2dd31000","HOOK_GAS_LIMIT()":"ff54740f","HOOK_RESERVE()":"557cab44","HOOK_SET_ROLE()":"6679191e","NETWORK_REGISTRY()":"c0cd7c3e","OPERATOR_NETWORK_OPT_IN_SERVICE()":"1a80e500","OPERATOR_REGISTRY()":"83ce0322","OPERATOR_VAULT_OPT_IN_SERVICE()":"128e5d82","OPT_IN_SERVICE_HINTS()":"9b656b22","TYPE()":"bb24fe8a","VAULT_FACTORY()":"103f2907","VAULT_HINTS()":"45e78fcb","VERSION()":"ffa1ad74","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","hook()":"7f5a7c7b","initialize(bytes)":"439fab91","maxNetworkLimit(bytes32)":"d15b740e","maxNetworkLimitAt(bytes32,uint48,bytes)":"437224a3","maxNetworkLimitHint(address,bytes32,uint48)":"991d1162","maxNetworkLimitHintInternal(bytes32,uint48)":"d0f1f901","network()":"6739afca","onSlash(bytes32,address,uint256,uint48,bytes)":"e49561ee","operator()":"570ca735","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","setHook(address)":"3dfd3873","setMaxNetworkLimit(uint96,uint256)":"23f752d5","stake(bytes32,address)":"fd4d447c","stakeAt(bytes32,address,uint48,bytes)":"e02f6937","stakeHints(address,bytes32,address,uint48)":"25dc9708","staticDelegateCall(address,bytes)":"9f86fd85","supportsInterface(bytes4)":"01ffc9a7","vault()":"fbfa77cf"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"baseDelegatorHints\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"vaultHints\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"optInServiceHints\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadySet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CheckpointUnorderedInsertion\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExternalCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientHookGas\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidNetwork\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotNetwork\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotOperator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotSlasher\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"}],\"name\":\"OnSlash\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"hook\",\"type\":\"address\"}],\"name\":\"SetHook\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"SetMaxNetworkLimit\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BASE_DELEGATOR_HINTS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HOOK_GAS_LIMIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HOOK_RESERVE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HOOK_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NETWORK_REGISTRY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_NETWORK_OPT_IN_SERVICE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_REGISTRY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_VAULT_OPT_IN_SERVICE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPT_IN_SERVICE_HINTS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TYPE\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VAULT_FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VAULT_HINTS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VERSION\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hook\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"}],\"name\":\"maxNetworkLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"maxNetworkLimitAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"maxNetworkLimitHint\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"maxNetworkLimitHintInternal\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"exists\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"hint\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"network\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"hook_\",\"type\":\"address\"}],\"name\":\"setHook\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint96\",\"name\":\"identifier\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"setMaxNetworkLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"stake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hints\",\"type\":\"bytes\"}],\"name\":\"stakeAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"stakeHints\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"staticDelegateCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"CheckpointUnorderedInsertion()\":[{\"details\":\"A value was attempted to be inserted on a past checkpoint.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"OnSlash(bytes32,address,uint256,uint48)\":{\"params\":{\"amount\":\"amount of the collateral to be slashed\",\"captureTimestamp\":\"time point when the stake was captured\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"SetHook(address)\":{\"params\":{\"hook\":\"address of the hook\"}},\"SetMaxNetworkLimit(bytes32,uint256)\":{\"params\":{\"amount\":\"new maximum subnetwork's limit (how much stake the subnetwork is ready to get)\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}}},\"kind\":\"dev\",\"methods\":{\"VERSION()\":{\"details\":\"Must return 1 for this one.\",\"returns\":{\"_0\":\"version of the delegator\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize(bytes)\":{\"params\":{\"data\":\"some data to use\"}},\"maxNetworkLimitAt(bytes32,uint48,bytes)\":{\"params\":{\"hint\":\"hint for checkpoint index\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\",\"timestamp\":\"time point to get the maximum subnetwork limit at\"},\"returns\":{\"_0\":\"maximum limit of the subnetwork\"}},\"onSlash(bytes32,address,uint256,uint48,bytes)\":{\"details\":\"Only the vault's slasher can call this function.\",\"params\":{\"amount\":\"amount of the collateral slashed\",\"captureTimestamp\":\"time point when the stake was captured\",\"data\":\"some additional data\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"setHook(address)\":{\"details\":\"Only a HOOK_SET_ROLE holder can call this function. The hook can have arbitrary logic under certain functions, however, it doesn't affect the stake guarantees.\",\"params\":{\"hook\":\"address of the hook\"}},\"setMaxNetworkLimit(uint96,uint256)\":{\"details\":\"Only a network can call this function.\",\"params\":{\"amount\":\"new maximum subnetwork's limit\"}},\"stake(bytes32,address)\":{\"details\":\"Warning: this function is not safe to use for stake capturing, as it can change by the end of the block.\",\"params\":{\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"_0\":\"slashable stake until the end of the next epoch\"}},\"stakeAt(bytes32,address,uint48,bytes)\":{\"details\":\"Warning: it is not safe to use timestamp >= current one for the stake capturing, as it can change later.\",\"params\":{\"hints\":\"hints for the checkpoints' indexes\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\",\"timestamp\":\"time point to capture the stake at\"},\"returns\":{\"_0\":\"slashable stake at the given timestamp until the end of the consequent epoch\"}},\"staticDelegateCall(address,bytes)\":{\"details\":\"It allows to use this contract's storage on-chain.\",\"params\":{\"data\":\"data to make a delegatecall with\",\"target\":\"address of the contract to make a delegatecall to\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"events\":{\"OnSlash(bytes32,address,uint256,uint48)\":{\"notice\":\"Emitted when a slash happens.\"},\"SetHook(address)\":{\"notice\":\"Emitted when a hook is set.\"},\"SetMaxNetworkLimit(bytes32,uint256)\":{\"notice\":\"Emitted when a subnetwork's maximum limit is set.\"}},\"kind\":\"user\",\"methods\":{\"FACTORY()\":{\"notice\":\"Get the factory's address.\"},\"HOOK_GAS_LIMIT()\":{\"notice\":\"Get a gas limit for the hook.\"},\"HOOK_RESERVE()\":{\"notice\":\"Get a reserve gas between the gas limit check and the hook's execution.\"},\"HOOK_SET_ROLE()\":{\"notice\":\"Get a hook setter's role.\"},\"NETWORK_REGISTRY()\":{\"notice\":\"Get the network registry's address.\"},\"OPERATOR_NETWORK_OPT_IN_SERVICE()\":{\"notice\":\"Get the operator-network opt-in service's address.\"},\"OPERATOR_REGISTRY()\":{\"notice\":\"Get the operator registry's address.\"},\"OPERATOR_VAULT_OPT_IN_SERVICE()\":{\"notice\":\"Get the operator-vault opt-in service's address.\"},\"TYPE()\":{\"notice\":\"Get the entity's type.\"},\"VAULT_FACTORY()\":{\"notice\":\"Get the vault factory's address.\"},\"VERSION()\":{\"notice\":\"Get a version of the delegator (different versions mean different interfaces).\"},\"hook()\":{\"notice\":\"Get the hook's address.\"},\"initialize(bytes)\":{\"notice\":\"Initialize this entity contract by using a given data.\"},\"maxNetworkLimit(bytes32)\":{\"notice\":\"Get a particular subnetwork's maximum limit (meaning the subnetwork is not ready to get more as a stake).\"},\"maxNetworkLimitAt(bytes32,uint48,bytes)\":{\"notice\":\"Get a particular subnetwork's maximum limit at a given timestamp using a hint (meaning the subnetwork is not ready to get more as a stake).\"},\"network()\":{\"notice\":\"Get a network the vault delegates funds to.\"},\"onSlash(bytes32,address,uint256,uint48,bytes)\":{\"notice\":\"Called when a slash happens.\"},\"operator()\":{\"notice\":\"Get an operator managing the vault's funds.\"},\"setHook(address)\":{\"notice\":\"Set a new hook.\"},\"setMaxNetworkLimit(uint96,uint256)\":{\"notice\":\"Set a maximum limit for a subnetwork (how much stake the subnetwork is ready to get). identifier identifier of the subnetwork\"},\"stake(bytes32,address)\":{\"notice\":\"Get a stake that a given subnetwork will be able to slash for a certain operator until the end of the next epoch (if no cross-slashing and no slashings by the subnetwork).\"},\"stakeAt(bytes32,address,uint48,bytes)\":{\"notice\":\"Get a stake that a given subnetwork could be able to slash for a certain operator at a given timestamp until the end of the consequent epoch using hints (if no cross-slashing and no slashings by the subnetwork).\"},\"staticDelegateCall(address,bytes)\":{\"notice\":\"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data).\"},\"vault()\":{\"notice\":\"Get the vault's address.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/hints/DelegatorHints.sol\":\"OperatorNetworkSpecificDelegatorHints\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf\",\"dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89\",\"dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1\",\"dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol\":{\"keccak256\":\"0x4aaaf1c0737dd16e81f0d2b9833c549747a5ede6873bf1444bc72aa572d03e98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eada27d7668eebaea16c3b890aa1b38ffc53965292e26c96f7c44834623f4710\",\"dweb:/ipfs/QmVSWuLtxyCqNbLyY89ptxkvsk4CLLKDQYigEne5Qj8k1L\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x7d94fa0af099a2172eb01f9c8a8a443cbe7e0e43654841563e4e09968efdb549\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65e38fb76b6add407d4557753ae83dd1268e8261195dbe5c19a580d5ba6e4e9a\",\"dweb:/ipfs/QmTkGSJtaQrqjcyWM4AgemeEmKgtDydKPPVRajsUJRQSrK\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0\",\"dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x10eb97d047f8d84fe263a02bb4a656ac6674f6679d74532cc37546289e073a9d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3e41287d40b0c46982f1083d40d32de2761f009c5c51627fe79a7feb0ab1cf5c\",\"dweb:/ipfs/Qme7dbh6HX3ZvUJdbQAcVqXkmyXyfcLiUZRhhon3cU6K8p\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e\",\"dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/SignatureChecker.sol\":{\"keccak256\":\"0xbdc3bb48ccedb818cd75a6d74a16df55a822e9f6d3cc54c59f576f10aab67b5f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2284f25f2478f419d7781573b17a89d0e7c5589a865d55e2d6ed5163aee23aa8\",\"dweb:/ipfs/QmNsr2625APBQiNKpYnX5VcSnYgfUHR9Uzzp9pRXjoDqK7\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44\",\"dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6\",\"dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza\"]},\"src/contracts/common/Entity.sol\":{\"keccak256\":\"0x3d61a932995b8443381f3950542d388223a2c26dd5d29a3274dea3baa7388bd7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7cdf5f03ca72fd263fd32ff59c8d88ddca911ae83896a287d10772c1bbe9b138\",\"dweb:/ipfs/QmbP84r5BWT1Rn9AYTntWSf3xUMTTCohTZJFhbBhDXFoHa\"]},\"src/contracts/common/MigratableEntity.sol\":{\"keccak256\":\"0x303ad40a3de8fa808cc30a6fbd5998633f6a89b982e6db1fa981e0566ab445e7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://fa8fb92995ead02798e013190b87b84b44cc68668262f045c9b0b4783940e2bf\",\"dweb:/ipfs/QmV1uKGVLKwWisc714R8fCt71gXUQJpaKvdc6LQ8WtvMpL\"]},\"src/contracts/common/StaticDelegateCallable.sol\":{\"keccak256\":\"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764\",\"dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD\"]},\"src/contracts/delegator/BaseDelegator.sol\":{\"keccak256\":\"0x7c54d491fdd4415b764a9c8defa068e56d4c0c8c9419be0053a1d377669290e8\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://9238bfbad0f6eeb0dc7727724de14380f1980b395902269703d5e2ef07e52e10\",\"dweb:/ipfs/QmPJn1V4HNXcEghYvogGuSTF24dSQUPosR5qtsXcmNqRm3\"]},\"src/contracts/delegator/FullRestakeDelegator.sol\":{\"keccak256\":\"0x0a81c4f8e72914563a9cb771e93acf889c71ea36b7bec040e4eb562b199d5af1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6fc66b6ba02da77046a0bbbd1dd407a62c08f52e04486c9cbd2cb1cca3da555f\",\"dweb:/ipfs/QmZQivK1ZnMxfRQQ5aLpV9co5u55wQVNev5Rg1hzAqxhkE\"]},\"src/contracts/delegator/NetworkRestakeDelegator.sol\":{\"keccak256\":\"0xd3a8e6522f9c6fdcc2da837c9023afd6bdff2bce45a35590320c475519e3636d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://58b17a87f6554f08376f9ea7fedf486a4aa75801bf0ad8b23ff5a46959b6b7a3\",\"dweb:/ipfs/QmSTmNh67tYt8CmjVZb57r8N3qX5yeYdMApKPJm3qvQgQw\"]},\"src/contracts/delegator/OperatorNetworkSpecificDelegator.sol\":{\"keccak256\":\"0x031a10722b9ec49048f0952710401131290adb87e71caf294e864e7ac3b98a16\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://72428febc875134b2f29205e6f294634a1c22a7d5c78d6a9cb2f8196f107c9b5\",\"dweb:/ipfs/QmTPwXR6h5oytckmkLrHdKeEMdphJxceDhYUR4zvQeWAwY\"]},\"src/contracts/delegator/OperatorSpecificDelegator.sol\":{\"keccak256\":\"0x630ce62fa30b9f3349ab7a8cf8dbf041319febc6dd757be2f94d3d25944ed328\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c2ac59d47ce57d2a6819ae9833e1a618a371eccff93eb5ab367b201b01f42bfa\",\"dweb:/ipfs/QmdBpGMBivpNPv2WbH8vnCUy5xkVeaxQvGgqi33vKCz1kA\"]},\"src/contracts/hints/DelegatorHints.sol\":{\"keccak256\":\"0xd71e9102e99a25ee8b5435779f011a24558f56074aa2b16c18b623b57754ae97\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://29db5552e55dab51bea1ae40ba00ca674cb50fcb10997999a72a94527b6eb591\",\"dweb:/ipfs/QmQrYyTPx73ubNxMhYWJCkprCVFVtuTFcKaabYiKTe71tY\"]},\"src/contracts/hints/Hints.sol\":{\"keccak256\":\"0x8b565df1ae35993c097a9e642002782a8f451f6fd01809cad6bcd345bdf1b99c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://99a19adb01e350a92f534095b3078229df1f2f83077992d75d58d8684be45971\",\"dweb:/ipfs/QmbmwcuswVbzvwHQFTtrJG86oV98GnfxqYTb8cV8u1acox\"]},\"src/contracts/hints/OptInServiceHints.sol\":{\"keccak256\":\"0x95d9407900d27b9f4a1233b772aeed809c07b2dc5b31cfc9fa77ca26514c49e5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://a13a8877e312d7e6b8b85bde3668c5d84ff5ecc83f762cd573f2b7104c64eb42\",\"dweb:/ipfs/QmYV2J55acuGzCNnS3juABuUHY5U1xc8g8o9jwEyFFdeG5\"]},\"src/contracts/hints/VaultHints.sol\":{\"keccak256\":\"0xccb505b7159b769cc114d67b87c2de6b106557f667fc8f3780114baad5c3c442\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6d0c80a908fc16e96a8b5605a0bd53f9e89ad0ef0a738fbbae80ba4d3160749b\",\"dweb:/ipfs/QmXo5UtWoR8YmunqcbBU8rQMm1nvmvjNPoXcVrDhh4pEwR\"]},\"src/contracts/libraries/Checkpoints.sol\":{\"keccak256\":\"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609\",\"dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE\"]},\"src/contracts/libraries/ERC4626Math.sol\":{\"keccak256\":\"0x8441160513c1cbeb1c3b9ee077bcc7e7ce20006b52a77c8dd39ff0ef89699939\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://943f8cc3e26ddf649f465f40c909819f5c864717c4baa339e9e403b9374a4653\",\"dweb:/ipfs/QmXPxi1sUDsrGprZdUgCzoPEosaZMv9ZhygWQ1vAi1phAB\"]},\"src/contracts/libraries/Subnetwork.sol\":{\"keccak256\":\"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56\",\"dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32\"]},\"src/contracts/service/OptInService.sol\":{\"keccak256\":\"0x4e0932077f2686b7990e10d59deb2535334c0d09e52ef6e57c6ab09eca21c4b1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7c00d311032ed4a1743aca7475f3c86ce15cdfc2218108efc3731c03d34a5278\",\"dweb:/ipfs/QmUGGfVwVhaHr5kS4177yKKYiLYzi5qZpkEmvYxBZqazxf\"]},\"src/contracts/vault/Vault.sol\":{\"keccak256\":\"0x7ee6dbf060c45d6eba95315f4ac0b3b467dd9c4999b84c31d6f66d4d8b53a116\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://301948b8ea522db292aa2722ba42def3911dae95f0b376f7023c3fef470f8676\",\"dweb:/ipfs/QmSDbP2HdzhDAzstr8Zz5isEAcSkma8ABc5UwPsoazaumZ\"]},\"src/contracts/vault/VaultStorage.sol\":{\"keccak256\":\"0x57db25b127d77ea3472de53e3a4af3354399655b9268638b99ca5925fa364a56\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://aa763d9a6ec508ae3abfb8228b72b9fd9525279e5135d4962e79ff059feb1173\",\"dweb:/ipfs/QmcbDR6E9wyEpu6V2FkEC4hnWy47zXA9LSKJde6zSGd33Q\"]},\"src/interfaces/common/IEntity.sol\":{\"keccak256\":\"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b\",\"dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv\"]},\"src/interfaces/common/IMigratableEntity.sol\":{\"keccak256\":\"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c\",\"dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds\"]},\"src/interfaces/common/IRegistry.sol\":{\"keccak256\":\"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014\",\"dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK\"]},\"src/interfaces/common/IStaticDelegateCallable.sol\":{\"keccak256\":\"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516\",\"dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi\"]},\"src/interfaces/delegator/IBaseDelegator.sol\":{\"keccak256\":\"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2\",\"dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8\"]},\"src/interfaces/delegator/IDelegatorHook.sol\":{\"keccak256\":\"0xc51aa8d7d1f6c8043ee819b7aeb86da0e993912e1442098df897e299f01f9f46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://adddf5cb2ba282aeb576b26efb28640f865a1721cc9b6eee8b3ee0457a2c9780\",\"dweb:/ipfs/QmNYgAmnLRwWZbhTuQhZs9rx4zcme1df5mEepkrniorSoW\"]},\"src/interfaces/delegator/IFullRestakeDelegator.sol\":{\"keccak256\":\"0xa3c8cb2e45d4d8ce90e95263bea40c01dc400f05ad65bc29597d878606be5e7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://782cf5e201aa4cca037ebafd3807a68ff1cc721d5b8416a35244db0d0607369e\",\"dweb:/ipfs/QmQkJks6x7CKndeTPa9LxgTNygD5uEi7obhADhpq1Lsr9A\"]},\"src/interfaces/delegator/INetworkRestakeDelegator.sol\":{\"keccak256\":\"0xe7030fe30389a147fd710e3436ec346b4842695fd3e65a81b95375c9f1d633fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://739c7e66d301778054f5c90bee45ec9438f68afba8a03eaaac52064c73b115ad\",\"dweb:/ipfs/QmfZ2ytKcTykAc76nxhg8ikUXV8NdBpetqb8W4YWPcox1Z\"]},\"src/interfaces/delegator/IOperatorNetworkSpecificDelegator.sol\":{\"keccak256\":\"0x74b95e64d29769202d45dd277bb830f623ff3d41ce77b80ce3ee4e318a5c71ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e512b903aae5c1b8a028c6e3f4f6223b5cb5d704503cfa6bd37b5346868f5c20\",\"dweb:/ipfs/QmZim9YExsPWtyxyeui993HTKAEmrg8MUcSkZ77Gp2JcuZ\"]},\"src/interfaces/delegator/IOperatorSpecificDelegator.sol\":{\"keccak256\":\"0x72075cab585dc17240cc3e32bc99b92f0d5627ddd988fed680e3e1a52d5a01e4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7448bc90699409ae61d85216b5efc2143a37f0f73354be2aea993bc54afca441\",\"dweb:/ipfs/QmXE4gAxM8pHosZK8mcTcj17puBx484meDCcmrDePskGHZ\"]},\"src/interfaces/service/IOptInService.sol\":{\"keccak256\":\"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337\",\"dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24\"]},\"src/interfaces/slasher/IBaseSlasher.sol\":{\"keccak256\":\"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf\",\"dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx\"]},\"src/interfaces/vault/IVault.sol\":{\"keccak256\":\"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9\",\"dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R\"]},\"src/interfaces/vault/IVaultStorage.sol\":{\"keccak256\":\"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e\",\"dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"baseDelegatorHints","type":"address"},{"internalType":"address","name":"vaultHints","type":"address"},{"internalType":"address","name":"optInServiceHints","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"inputs":[],"type":"error","name":"AlreadySet"},{"inputs":[],"type":"error","name":"CheckpointUnorderedInsertion"},{"inputs":[],"type":"error","name":"ExternalCall"},{"inputs":[],"type":"error","name":"InsufficientHookGas"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"InvalidNetwork"},{"inputs":[],"type":"error","name":"NotInitialized"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"NotNetwork"},{"inputs":[],"type":"error","name":"NotOperator"},{"inputs":[],"type":"error","name":"NotSlasher"},{"inputs":[],"type":"error","name":"NotVault"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintDowncast"},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint48","name":"captureTimestamp","type":"uint48","indexed":false}],"type":"event","name":"OnSlash","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[{"internalType":"address","name":"hook","type":"address","indexed":true}],"type":"event","name":"SetHook","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"SetMaxNetworkLimit","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"BASE_DELEGATOR_HINTS","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HOOK_GAS_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HOOK_RESERVE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HOOK_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"NETWORK_REGISTRY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_NETWORK_OPT_IN_SERVICE","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_REGISTRY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_VAULT_OPT_IN_SERVICE","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPT_IN_SERVICE_HINTS","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"TYPE","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VAULT_FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VAULT_HINTS","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"VERSION","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"hook","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"}],"stateMutability":"view","type":"function","name":"maxNetworkLimit","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"maxNetworkLimitAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"},{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"maxNetworkLimitHint","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"maxNetworkLimitHintInternal","outputs":[{"internalType":"bool","name":"exists","type":"bool"},{"internalType":"uint32","name":"hint","type":"uint32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"network","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint48","name":"captureTimestamp","type":"uint48"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"onSlash"},{"inputs":[],"stateMutability":"view","type":"function","name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"address","name":"hook_","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setHook"},{"inputs":[{"internalType":"uint96","name":"identifier","type":"uint96"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setMaxNetworkLimit"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"stake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hints","type":"bytes"}],"stateMutability":"view","type":"function","name":"stakeAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"},{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"stakeHints","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"staticDelegateCall"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"vault","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"VERSION()":{"details":"Must return 1 for this one.","returns":{"_0":"version of the delegator"}},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"initialize(bytes)":{"params":{"data":"some data to use"}},"maxNetworkLimitAt(bytes32,uint48,bytes)":{"params":{"hint":"hint for checkpoint index","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)","timestamp":"time point to get the maximum subnetwork limit at"},"returns":{"_0":"maximum limit of the subnetwork"}},"onSlash(bytes32,address,uint256,uint48,bytes)":{"details":"Only the vault's slasher can call this function.","params":{"amount":"amount of the collateral slashed","captureTimestamp":"time point when the stake was captured","data":"some additional data","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"}},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"setHook(address)":{"details":"Only a HOOK_SET_ROLE holder can call this function. The hook can have arbitrary logic under certain functions, however, it doesn't affect the stake guarantees.","params":{"hook":"address of the hook"}},"setMaxNetworkLimit(uint96,uint256)":{"details":"Only a network can call this function.","params":{"amount":"new maximum subnetwork's limit"}},"stake(bytes32,address)":{"details":"Warning: this function is not safe to use for stake capturing, as it can change by the end of the block.","params":{"operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"_0":"slashable stake until the end of the next epoch"}},"stakeAt(bytes32,address,uint48,bytes)":{"details":"Warning: it is not safe to use timestamp >= current one for the stake capturing, as it can change later.","params":{"hints":"hints for the checkpoints' indexes","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)","timestamp":"time point to capture the stake at"},"returns":{"_0":"slashable stake at the given timestamp until the end of the consequent epoch"}},"staticDelegateCall(address,bytes)":{"details":"It allows to use this contract's storage on-chain.","params":{"data":"data to make a delegatecall with","target":"address of the contract to make a delegatecall to"}},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."}},"version":1},"userdoc":{"kind":"user","methods":{"FACTORY()":{"notice":"Get the factory's address."},"HOOK_GAS_LIMIT()":{"notice":"Get a gas limit for the hook."},"HOOK_RESERVE()":{"notice":"Get a reserve gas between the gas limit check and the hook's execution."},"HOOK_SET_ROLE()":{"notice":"Get a hook setter's role."},"NETWORK_REGISTRY()":{"notice":"Get the network registry's address."},"OPERATOR_NETWORK_OPT_IN_SERVICE()":{"notice":"Get the operator-network opt-in service's address."},"OPERATOR_REGISTRY()":{"notice":"Get the operator registry's address."},"OPERATOR_VAULT_OPT_IN_SERVICE()":{"notice":"Get the operator-vault opt-in service's address."},"TYPE()":{"notice":"Get the entity's type."},"VAULT_FACTORY()":{"notice":"Get the vault factory's address."},"VERSION()":{"notice":"Get a version of the delegator (different versions mean different interfaces)."},"hook()":{"notice":"Get the hook's address."},"initialize(bytes)":{"notice":"Initialize this entity contract by using a given data."},"maxNetworkLimit(bytes32)":{"notice":"Get a particular subnetwork's maximum limit (meaning the subnetwork is not ready to get more as a stake)."},"maxNetworkLimitAt(bytes32,uint48,bytes)":{"notice":"Get a particular subnetwork's maximum limit at a given timestamp using a hint (meaning the subnetwork is not ready to get more as a stake)."},"network()":{"notice":"Get a network the vault delegates funds to."},"onSlash(bytes32,address,uint256,uint48,bytes)":{"notice":"Called when a slash happens."},"operator()":{"notice":"Get an operator managing the vault's funds."},"setHook(address)":{"notice":"Set a new hook."},"setMaxNetworkLimit(uint96,uint256)":{"notice":"Set a maximum limit for a subnetwork (how much stake the subnetwork is ready to get). identifier identifier of the subnetwork"},"stake(bytes32,address)":{"notice":"Get a stake that a given subnetwork will be able to slash for a certain operator until the end of the next epoch (if no cross-slashing and no slashings by the subnetwork)."},"stakeAt(bytes32,address,uint48,bytes)":{"notice":"Get a stake that a given subnetwork could be able to slash for a certain operator at a given timestamp until the end of the consequent epoch using hints (if no cross-slashing and no slashings by the subnetwork)."},"staticDelegateCall(address,bytes)":{"notice":"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data)."},"vault()":{"notice":"Get the vault's address."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/hints/DelegatorHints.sol":"OperatorNetworkSpecificDelegatorHints"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol":{"keccak256":"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866","urls":["bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf","dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab","urls":["bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89","dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606","urls":["bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1","dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol":{"keccak256":"0x4aaaf1c0737dd16e81f0d2b9833c549747a5ede6873bf1444bc72aa572d03e98","urls":["bzz-raw://eada27d7668eebaea16c3b890aa1b38ffc53965292e26c96f7c44834623f4710","dweb:/ipfs/QmVSWuLtxyCqNbLyY89ptxkvsk4CLLKDQYigEne5Qj8k1L"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol":{"keccak256":"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92","urls":["bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a","dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310","urls":["bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862","dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol":{"keccak256":"0x7d94fa0af099a2172eb01f9c8a8a443cbe7e0e43654841563e4e09968efdb549","urls":["bzz-raw://65e38fb76b6add407d4557753ae83dd1268e8261195dbe5c19a580d5ba6e4e9a","dweb:/ipfs/QmTkGSJtaQrqjcyWM4AgemeEmKgtDydKPPVRajsUJRQSrK"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed","urls":["bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0","dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84","urls":["bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9","dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol":{"keccak256":"0x10eb97d047f8d84fe263a02bb4a656ac6674f6679d74532cc37546289e073a9d","urls":["bzz-raw://3e41287d40b0c46982f1083d40d32de2761f009c5c51627fe79a7feb0ab1cf5c","dweb:/ipfs/Qme7dbh6HX3ZvUJdbQAcVqXkmyXyfcLiUZRhhon3cU6K8p"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575","urls":["bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e","dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/SignatureChecker.sol":{"keccak256":"0xbdc3bb48ccedb818cd75a6d74a16df55a822e9f6d3cc54c59f576f10aab67b5f","urls":["bzz-raw://2284f25f2478f419d7781573b17a89d0e7c5589a865d55e2d6ed5163aee23aa8","dweb:/ipfs/QmNsr2625APBQiNKpYnX5VcSnYgfUHR9Uzzp9pRXjoDqK7"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3","urls":["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03","dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol":{"keccak256":"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f","urls":["bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44","dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc","urls":["bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6","dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza"],"license":"MIT"},"src/contracts/common/Entity.sol":{"keccak256":"0x3d61a932995b8443381f3950542d388223a2c26dd5d29a3274dea3baa7388bd7","urls":["bzz-raw://7cdf5f03ca72fd263fd32ff59c8d88ddca911ae83896a287d10772c1bbe9b138","dweb:/ipfs/QmbP84r5BWT1Rn9AYTntWSf3xUMTTCohTZJFhbBhDXFoHa"],"license":"BUSL-1.1"},"src/contracts/common/MigratableEntity.sol":{"keccak256":"0x303ad40a3de8fa808cc30a6fbd5998633f6a89b982e6db1fa981e0566ab445e7","urls":["bzz-raw://fa8fb92995ead02798e013190b87b84b44cc68668262f045c9b0b4783940e2bf","dweb:/ipfs/QmV1uKGVLKwWisc714R8fCt71gXUQJpaKvdc6LQ8WtvMpL"],"license":"BUSL-1.1"},"src/contracts/common/StaticDelegateCallable.sol":{"keccak256":"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90","urls":["bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764","dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD"],"license":"BUSL-1.1"},"src/contracts/delegator/BaseDelegator.sol":{"keccak256":"0x7c54d491fdd4415b764a9c8defa068e56d4c0c8c9419be0053a1d377669290e8","urls":["bzz-raw://9238bfbad0f6eeb0dc7727724de14380f1980b395902269703d5e2ef07e52e10","dweb:/ipfs/QmPJn1V4HNXcEghYvogGuSTF24dSQUPosR5qtsXcmNqRm3"],"license":"BUSL-1.1"},"src/contracts/delegator/FullRestakeDelegator.sol":{"keccak256":"0x0a81c4f8e72914563a9cb771e93acf889c71ea36b7bec040e4eb562b199d5af1","urls":["bzz-raw://6fc66b6ba02da77046a0bbbd1dd407a62c08f52e04486c9cbd2cb1cca3da555f","dweb:/ipfs/QmZQivK1ZnMxfRQQ5aLpV9co5u55wQVNev5Rg1hzAqxhkE"],"license":"BUSL-1.1"},"src/contracts/delegator/NetworkRestakeDelegator.sol":{"keccak256":"0xd3a8e6522f9c6fdcc2da837c9023afd6bdff2bce45a35590320c475519e3636d","urls":["bzz-raw://58b17a87f6554f08376f9ea7fedf486a4aa75801bf0ad8b23ff5a46959b6b7a3","dweb:/ipfs/QmSTmNh67tYt8CmjVZb57r8N3qX5yeYdMApKPJm3qvQgQw"],"license":"BUSL-1.1"},"src/contracts/delegator/OperatorNetworkSpecificDelegator.sol":{"keccak256":"0x031a10722b9ec49048f0952710401131290adb87e71caf294e864e7ac3b98a16","urls":["bzz-raw://72428febc875134b2f29205e6f294634a1c22a7d5c78d6a9cb2f8196f107c9b5","dweb:/ipfs/QmTPwXR6h5oytckmkLrHdKeEMdphJxceDhYUR4zvQeWAwY"],"license":"BUSL-1.1"},"src/contracts/delegator/OperatorSpecificDelegator.sol":{"keccak256":"0x630ce62fa30b9f3349ab7a8cf8dbf041319febc6dd757be2f94d3d25944ed328","urls":["bzz-raw://c2ac59d47ce57d2a6819ae9833e1a618a371eccff93eb5ab367b201b01f42bfa","dweb:/ipfs/QmdBpGMBivpNPv2WbH8vnCUy5xkVeaxQvGgqi33vKCz1kA"],"license":"BUSL-1.1"},"src/contracts/hints/DelegatorHints.sol":{"keccak256":"0xd71e9102e99a25ee8b5435779f011a24558f56074aa2b16c18b623b57754ae97","urls":["bzz-raw://29db5552e55dab51bea1ae40ba00ca674cb50fcb10997999a72a94527b6eb591","dweb:/ipfs/QmQrYyTPx73ubNxMhYWJCkprCVFVtuTFcKaabYiKTe71tY"],"license":"BUSL-1.1"},"src/contracts/hints/Hints.sol":{"keccak256":"0x8b565df1ae35993c097a9e642002782a8f451f6fd01809cad6bcd345bdf1b99c","urls":["bzz-raw://99a19adb01e350a92f534095b3078229df1f2f83077992d75d58d8684be45971","dweb:/ipfs/QmbmwcuswVbzvwHQFTtrJG86oV98GnfxqYTb8cV8u1acox"],"license":"BUSL-1.1"},"src/contracts/hints/OptInServiceHints.sol":{"keccak256":"0x95d9407900d27b9f4a1233b772aeed809c07b2dc5b31cfc9fa77ca26514c49e5","urls":["bzz-raw://a13a8877e312d7e6b8b85bde3668c5d84ff5ecc83f762cd573f2b7104c64eb42","dweb:/ipfs/QmYV2J55acuGzCNnS3juABuUHY5U1xc8g8o9jwEyFFdeG5"],"license":"BUSL-1.1"},"src/contracts/hints/VaultHints.sol":{"keccak256":"0xccb505b7159b769cc114d67b87c2de6b106557f667fc8f3780114baad5c3c442","urls":["bzz-raw://6d0c80a908fc16e96a8b5605a0bd53f9e89ad0ef0a738fbbae80ba4d3160749b","dweb:/ipfs/QmXo5UtWoR8YmunqcbBU8rQMm1nvmvjNPoXcVrDhh4pEwR"],"license":"BUSL-1.1"},"src/contracts/libraries/Checkpoints.sol":{"keccak256":"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c","urls":["bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609","dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE"],"license":"MIT"},"src/contracts/libraries/ERC4626Math.sol":{"keccak256":"0x8441160513c1cbeb1c3b9ee077bcc7e7ce20006b52a77c8dd39ff0ef89699939","urls":["bzz-raw://943f8cc3e26ddf649f465f40c909819f5c864717c4baa339e9e403b9374a4653","dweb:/ipfs/QmXPxi1sUDsrGprZdUgCzoPEosaZMv9ZhygWQ1vAi1phAB"],"license":"MIT"},"src/contracts/libraries/Subnetwork.sol":{"keccak256":"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe","urls":["bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56","dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32"],"license":"MIT"},"src/contracts/service/OptInService.sol":{"keccak256":"0x4e0932077f2686b7990e10d59deb2535334c0d09e52ef6e57c6ab09eca21c4b1","urls":["bzz-raw://7c00d311032ed4a1743aca7475f3c86ce15cdfc2218108efc3731c03d34a5278","dweb:/ipfs/QmUGGfVwVhaHr5kS4177yKKYiLYzi5qZpkEmvYxBZqazxf"],"license":"BUSL-1.1"},"src/contracts/vault/Vault.sol":{"keccak256":"0x7ee6dbf060c45d6eba95315f4ac0b3b467dd9c4999b84c31d6f66d4d8b53a116","urls":["bzz-raw://301948b8ea522db292aa2722ba42def3911dae95f0b376f7023c3fef470f8676","dweb:/ipfs/QmSDbP2HdzhDAzstr8Zz5isEAcSkma8ABc5UwPsoazaumZ"],"license":"BUSL-1.1"},"src/contracts/vault/VaultStorage.sol":{"keccak256":"0x57db25b127d77ea3472de53e3a4af3354399655b9268638b99ca5925fa364a56","urls":["bzz-raw://aa763d9a6ec508ae3abfb8228b72b9fd9525279e5135d4962e79ff059feb1173","dweb:/ipfs/QmcbDR6E9wyEpu6V2FkEC4hnWy47zXA9LSKJde6zSGd33Q"],"license":"BUSL-1.1"},"src/interfaces/common/IEntity.sol":{"keccak256":"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21","urls":["bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b","dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv"],"license":"MIT"},"src/interfaces/common/IMigratableEntity.sol":{"keccak256":"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4","urls":["bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c","dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds"],"license":"MIT"},"src/interfaces/common/IRegistry.sol":{"keccak256":"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb","urls":["bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014","dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK"],"license":"MIT"},"src/interfaces/common/IStaticDelegateCallable.sol":{"keccak256":"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5","urls":["bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516","dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi"],"license":"MIT"},"src/interfaces/delegator/IBaseDelegator.sol":{"keccak256":"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee","urls":["bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2","dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8"],"license":"MIT"},"src/interfaces/delegator/IDelegatorHook.sol":{"keccak256":"0xc51aa8d7d1f6c8043ee819b7aeb86da0e993912e1442098df897e299f01f9f46","urls":["bzz-raw://adddf5cb2ba282aeb576b26efb28640f865a1721cc9b6eee8b3ee0457a2c9780","dweb:/ipfs/QmNYgAmnLRwWZbhTuQhZs9rx4zcme1df5mEepkrniorSoW"],"license":"MIT"},"src/interfaces/delegator/IFullRestakeDelegator.sol":{"keccak256":"0xa3c8cb2e45d4d8ce90e95263bea40c01dc400f05ad65bc29597d878606be5e7d","urls":["bzz-raw://782cf5e201aa4cca037ebafd3807a68ff1cc721d5b8416a35244db0d0607369e","dweb:/ipfs/QmQkJks6x7CKndeTPa9LxgTNygD5uEi7obhADhpq1Lsr9A"],"license":"MIT"},"src/interfaces/delegator/INetworkRestakeDelegator.sol":{"keccak256":"0xe7030fe30389a147fd710e3436ec346b4842695fd3e65a81b95375c9f1d633fc","urls":["bzz-raw://739c7e66d301778054f5c90bee45ec9438f68afba8a03eaaac52064c73b115ad","dweb:/ipfs/QmfZ2ytKcTykAc76nxhg8ikUXV8NdBpetqb8W4YWPcox1Z"],"license":"MIT"},"src/interfaces/delegator/IOperatorNetworkSpecificDelegator.sol":{"keccak256":"0x74b95e64d29769202d45dd277bb830f623ff3d41ce77b80ce3ee4e318a5c71ec","urls":["bzz-raw://e512b903aae5c1b8a028c6e3f4f6223b5cb5d704503cfa6bd37b5346868f5c20","dweb:/ipfs/QmZim9YExsPWtyxyeui993HTKAEmrg8MUcSkZ77Gp2JcuZ"],"license":"MIT"},"src/interfaces/delegator/IOperatorSpecificDelegator.sol":{"keccak256":"0x72075cab585dc17240cc3e32bc99b92f0d5627ddd988fed680e3e1a52d5a01e4","urls":["bzz-raw://7448bc90699409ae61d85216b5efc2143a37f0f73354be2aea993bc54afca441","dweb:/ipfs/QmXE4gAxM8pHosZK8mcTcj17puBx484meDCcmrDePskGHZ"],"license":"MIT"},"src/interfaces/service/IOptInService.sol":{"keccak256":"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a","urls":["bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337","dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24"],"license":"MIT"},"src/interfaces/slasher/IBaseSlasher.sol":{"keccak256":"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404","urls":["bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf","dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx"],"license":"MIT"},"src/interfaces/vault/IVault.sol":{"keccak256":"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235","urls":["bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9","dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R"],"license":"MIT"},"src/interfaces/vault/IVaultStorage.sol":{"keccak256":"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22","urls":["bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e","dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6"],"license":"MIT"}},"version":1},"id":88} \ No newline at end of file diff --git a/out/DelegatorHints.sol/OperatorSpecificDelegatorHints.json b/out/DelegatorHints.sol/OperatorSpecificDelegatorHints.json index 874ccf82..fe24ce47 100644 --- a/out/DelegatorHints.sol/OperatorSpecificDelegatorHints.json +++ b/out/DelegatorHints.sol/OperatorSpecificDelegatorHints.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"baseDelegatorHints","type":"address","internalType":"address"},{"name":"vaultHints","type":"address","internalType":"address"},{"name":"optInServiceHints","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"BASE_DELEGATOR_HINTS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"HOOK_GAS_LIMIT","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"HOOK_RESERVE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"HOOK_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"NETWORK_LIMIT_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"NETWORK_REGISTRY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_NETWORK_OPT_IN_SERVICE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_REGISTRY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_VAULT_OPT_IN_SERVICE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"OPT_IN_SERVICE_HINTS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"TYPE","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"VAULT_FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"VAULT_HINTS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"VERSION","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"pure"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"hook","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"maxNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"networkLimit","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"networkLimitAt","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"networkLimitHint","inputs":[{"name":"delegator","type":"address","internalType":"address"},{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"networkLimitHintInternal","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"exists","type":"bool","internalType":"bool"},{"name":"hint","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"onSlash","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","internalType":"uint48"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"operator","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setHook","inputs":[{"name":"hook_","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMaxNetworkLimit","inputs":[{"name":"identifier","type":"uint96","internalType":"uint96"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stake","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"stakeAt","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hints","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"stakeHints","inputs":[{"name":"delegator","type":"address","internalType":"address"},{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"staticDelegateCall","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"vault","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OnSlash","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","indexed":false,"internalType":"uint48"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SetHook","inputs":[{"name":"hook","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SetMaxNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SetNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"AlreadySet","inputs":[]},{"type":"error","name":"CheckpointUnorderedInsertion","inputs":[]},{"type":"error","name":"DuplicateRoleHolder","inputs":[]},{"type":"error","name":"ExceedsMaxNetworkLimit","inputs":[]},{"type":"error","name":"ExternalCall","inputs":[]},{"type":"error","name":"InsufficientHookGas","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"MissingRoleHolders","inputs":[]},{"type":"error","name":"NotInitialized","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"NotNetwork","inputs":[]},{"type":"error","name":"NotOperator","inputs":[]},{"type":"error","name":"NotSlasher","inputs":[]},{"type":"error","name":"NotVault","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ZeroAddressRoleHolder","inputs":[]}],"bytecode":{"object":"0x6101e0346101d557601f61322e38819003918201601f19168301916001600160401b0391828411858510176101d95781606092869260409687528339810103126101d55761004c836101ed565b926100648361005d602084016101ed565b92016101ed565b91306080527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff82871c166101c4578080831603610180575b5050505f60a0525f60c0525f60e052610100935f8552610120935f85526101405f8152610160915f83526101809384526101a09485526101c0958652519561302c978861020289396080518861048c015260a051886107a4015260c05188610f6c015260e0518881816105950152610fa50152518781816103bf0152612299015251868181610403015281816119720152611aa1015251858181610513015281816118d90152611b1f015251848181610dce0152612b10015251838181610d29015261149a015251828181610b0e015261153b01525181610e700152f35b6001600160401b0319909116811790915583519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80806100a2565b855163f92ee8a960e01b8152600490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101d55756fe60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a714610284578063021453481461027f578063103f29071461027a578063128e5d8214610275578063197aa7ea146102705780631a80e5001461026b57806323f752d514610266578063248a9ca31461026157806325dc97081461025c5780632dd31000146102575780632f2ff15d1461025257806336568abe1461024d5780633dfd3873146102485780633eb22c0f14610243578063439fab911461023e57806345e78fcb14610239578063557cab4414610234578063570ca7351461022f5780635d32a1c91461022a5780636679191e1461022557806379d89614146102205780637d24bb271461021b5780637f5a7c7b1461021657806383ce03221461021157806391d148541461020c5780639b656b22146102075780639f86fd8514610202578063a217fddf146101fd578063bb24fe8a146101f8578063c0cd7c3e146101f3578063d15b740e146101ee578063d547741f146101e9578063da749d2b146101e4578063e02f6937146101df578063e49561ee146101da578063fbfa77cf146101d5578063fd4d447c146101d0578063ff54740f146101cb5763ffa1ad74146101c6575f80fd5b61132d565b611310565b6112e6565b6112bf565b6110d4565b61107f565b61104a565b610ffe565b610fd4565b610f90565b610f4d565b610f33565b610e9f565b610e5b565b610dfd565b610db9565b610d91565b610d58565b610d14565b610cda565b610c89565b610b59565b610b3d565b610af9565b6109c1565b610963565b61086a565b61081f565b6107d3565b61078f565b610736565b6106c8565b610542565b6104fe565b610471565b6103ee565b6103aa565b6102de565b346102da5760203660031901126102da5760043563ffffffff60e01b81168091036102da57602090637965db0b60e01b81149081156102c9575b506040519015158152f35b6301ffc9a760e01b1490505f6102be565b5f80fd5b346102da576040806003193601126102da576004359060243590610300611b94565b825f526002602052805f2054821161039a57825f52600360205281610326825f206121eb565b1461038a5781610385916103757e899d104fc3d8820bd96540612bcc5c448c8837b13b9f7faa43ad0728f0c14f94610366875f52600360205260405f2090565b61036f42612729565b90611c93565b5050519081529081906020820190565b0390a2005b5163a741a04560e01b8152600490fd5b51631eefc06360e31b8152600490fd5b346102da575f3660031901126102da576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102da575f3660031901126102da576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6024359065ffffffffffff821682036102da57565b6064359065ffffffffffff821682036102da57565b6044359065ffffffffffff821682036102da57565b346102da5760403660031901126102da5761048a610432565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036104ec5763ffffffff6104d76040926004355f526003602052835f20611d79565b91505083929192519215158352166020820152f35b604051637ca475e560e11b8152600490fd5b346102da575f3660031901126102da576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102da5760403660031901126102da576004356001600160601b03811681036102da5760243590610572611e88565b6040516302910f8b60e31b81523360048201526020816024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa9081156106c3575f91610694575b5015610682576001600160601b03166bffffffffffffffffffffffff193360601b161790806105fc835f52600260205260405f2090565b541461067057610655817fc67e7929681aa1bccd63f52b3799bf5805f3009f197db6fdf584b14f7fbf608c9261063a855f52600260205260405f2090565b556106458185611eb7565b6040519081529081906020820190565b0390a261066e60015f80516020612fb783398151915255565b005b60405163a741a04560e01b8152600490fd5b6040516323d53b9760e21b8152600490fd5b6106b6915060203d6020116106bc575b6106ae8183610beb565b810190611355565b5f6105c5565b503d6106a4565b61136c565b346102da5760203660031901126102da576004355f525f80516020612f978339815191526020526020600160405f200154604051908152f35b6001600160a01b038116036102da57565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b346102da5760803660031901126102da5761078b61077760043561075981610701565b60443561076581610701565b61076d610447565b9160243590611451565b604051918291602083526020830190610712565b0390f35b346102da575f3660031901126102da576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102da5760403660031901126102da5761066e6024356004356107f682610701565b805f525f80516020612f9783398151915260205261081a600160405f200154611bf0565b612123565b346102da5760403660031901126102da5760243561083c81610701565b336001600160a01b038216036108585761066e90600435612159565b60405163334bd91960e11b8152600490fd5b346102da5760203660031901126102da5760043561088781610701565b61088f611e88565b335f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c60205260409020547fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c9060ff161561094557506001546001600160a01b039182169181168214610670576001600160a01b03191681176001557f5bbb1d3ebb6a3ad2a0f17ff35e579a83af60604d1d3c2a4c83c62adecadf666d5f80a260015f80516020612fb783398151915255005b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b346102da5760203660031901126102da576004355f526003602052602061098c60405f206121eb565b604051908152f35b9181601f840112156102da578235916001600160401b0383116102da57602083818601950101116102da57565b346102da5760203660031901126102da576001600160401b036004358181116102da576109f2903690600401610994565b5f80516020612fd7833981519152549260ff8460401c1615931680159081610af1575b6001149081610ae7575b159081610ade575b50610acc575f80516020612fd7833981519152805467ffffffffffffffff19166001179055610a5a9183610aa857612264565b610a6057005b5f80516020612fd7833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f80516020612fd7833981519152805460ff60401b1916600160401b179055612264565b60405163f92ee8a960e01b8152600490fd5b9050155f610a27565b303b159150610a1f565b849150610a15565b346102da575f3660031901126102da576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102da575f3660031901126102da576020604051614e208152f35b346102da575f3660031901126102da576004546040516001600160a01b039091168152602090f35b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b03821117610bb057604052565b610b81565b606081019081106001600160401b03821117610bb057604052565b608081019081106001600160401b03821117610bb057604052565b90601f801991011681019081106001600160401b03821117610bb057604052565b60405190610c1982610bb5565b565b60405190610c1982610b95565b6001600160401b038111610bb057601f01601f191660200190565b81601f820112156102da57803590610c5a82610c28565b92610c686040519485610beb565b828452602083830101116102da57815f926020809301838601378301015290565b346102da5760603660031901126102da57610ca2610432565b6044356001600160401b0381116102da57602091610cc761098c923690600401610c43565b906004355f526003845260405f206123cb565b346102da575f3660031901126102da5760206040517fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c8152f35b346102da575f3660031901126102da576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102da575f3660031901126102da5760206040517e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf8152f35b346102da575f3660031901126102da576001546040516001600160a01b039091168152602090f35b346102da575f3660031901126102da576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102da5760403660031901126102da57602060ff610e4f602435610e2181610701565b6004355f525f80516020612f97833981519152845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b346102da575f3660031901126102da576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102da5760403660031901126102da57600435610ebc81610701565b6024356001600160401b0381116102da575f91610ede83923690600401610994565b90816040519283928337810184815203915af4610f2b610efc61164d565b91610f1d604051938492151560208401526040808401526060830190610712565b03601f198101835282610beb565b805190602001fd5b346102da575f3660031901126102da5760206040515f8152f35b346102da575f3660031901126102da5760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102da575f3660031901126102da576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102da5760203660031901126102da576004355f526002602052602060405f2054604051908152f35b346102da5760403660031901126102da5761066e60243560043561102182610701565b805f525f80516020612f97833981519152602052611045600160405f200154611bf0565b612159565b346102da5760603660031901126102da5761078b61077760043561106d81610701565b61107561045c565b90602435906116ae565b346102da5760803660031901126102da5760243561109c81610701565b6110a461045c565b90606435906001600160401b0382116102da576020926110cb61098c933690600401610c43565b91600435611863565b346102da5760a03660031901126102da576024356004356110f482610701565b60443591611100610447565b90608435906001600160401b0382116102da5761112260049236908401610c43565b61112a611e88565b5f5460209061114f90611143906001600160a01b031681565b6001600160a01b031690565b60405163b134427160e01b815294859182905afa9283156106c3575f9361128e575b506001600160a01b03928316330361127c576001546001600160a01b03168381166111f1575b50506040805195865265ffffffffffff909316602086015216927f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed91819081015b0390a361066e60015f80516020612fb783398151915255565b9093604051946112288661121a602082019363724ab0f760e11b8552858c898d602487016119ed565b03601f198101885287610beb565b62042e305a1061126a575f6111d8938192827f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed9951926203d090f15093611197565b604051638072475160e01b8152600490fd5b60405163dabc4ad960e01b8152600490fd5b6112b191935060203d6020116112b8575b6112a98183610beb565b8101906113ed565b915f611171565b503d61129f565b346102da575f3660031901126102da575f546040516001600160a01b039091168152602090f35b346102da5760403660031901126102da57602061098c60243561130881610701565b600435611a6a565b346102da575f3660031901126102da5760206040516203d0908152f35b346102da575f3660031901126102da57602060405160018152f35b519081151582036102da57565b908160209103126102da5761136990611348565b90565b6040513d5f823e3d90fd5b81601f820112156102da5780519061138e82610c28565b9261139c6040519485610beb565b828452602083830101116102da57815f9260208093018386015e8301015290565b906020828203126102da5781516001600160401b0381116102da576113699201611377565b5190610c1982610701565b908160209103126102da575161136981610701565b9061136991602081526114218251606060208401526080830190610712565b9060606040611441602086015194601f1995868683030184870152610712565b9401519282850301910152610712565b604051630df8851f60e11b81526001600160a01b03828116600483015260248201849052938416604482015265ffffffffffff8516606482015260609594909391925f856084817f000000000000000000000000000000000000000000000000000000000000000087165afa9485156106c3575f9561161b575b5060405163fbfa77cf60e01b81526020816004818888165afa9081156106c357611537945f92859284916115fc575b5060405163192c0ff760e21b81526001600160a01b03909116600482015265ffffffffffff90921660248301529094859190829081906044820190565b03917f0000000000000000000000000000000000000000000000000000000000000000165afa9283156106c3575f936115d6575b5061157692936116ae565b908251158015906115cc575b80156115c2575b61159257505050565b610f1d9394509061136992916115a6610c0c565b9283526020830152604082015260405192839160208301611402565b5081511515611589565b5080511515611582565b61157693506115f6903d805f833e6115ee8183610beb565b8101906113bd565b9261156b565b611615915060203d6020116112b8576112a98183610beb565b5f6114fa565b6116309195503d805f833e6115ee8183610beb565b935f6114cb565b9061136992915f52600360205260405f206123cb565b3d15611677573d9061165e82610c28565b9161166c6040519384610beb565b82523d5f602084013e565b606090565b519063ffffffff821682036102da57565b91908260409103126102da5761136960206116a784611348565b930161167c565b92915f8060609565ffffffffffff60405194602096630cbd53f560e11b888801526024870152166044850152604484526116e784610bd0565b604051938461171487820192639f86fd8560e01b8452306024840152604060448401526064830190610712565b0394611728601f1996878101835282610beb565b51915afa5061174661173861164d565b8380825183010191016124a3565b90156117995780838061175e9351830101910161168d565b929061176957505050565b6113699293945061178d604051948592830191909163ffffffff6020820193169052565b03908101835282610beb565b809150519182156102da5701fd5b604051906117b482610b95565b60606020838281520152565b906020828203126102da5781516001600160401b03928382116102da5701906040828203126102da57604051926117f684610b95565b82518181116102da578261180b918501611377565b845260208301519081116102da576118239201611377565b602082015290565b6001600160a01b0391821681529116602082015265ffffffffffff909116604082015260806060820181905261136992910190610712565b92611873909291928284866125ac565b92909361187e6117a7565b938051806119d1575b5050841593841561193b575b84156118aa575b505050506118a55790565b505f90565b6020809495506118d5910151604051958694859463530e1d4360e01b865260601c906004860161182b565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156106c3575f9161191c575b50155f80808061189a565b611935915060203d6020116106bc576106ae8183610beb565b5f611911565b5f549094506001600160a01b031660208486519261196e604051948593849363530e1d4360e01b8552896004860161182b565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156106c3575f916119b2575b501593611893565b6119cb915060203d6020116106bc576106ae8183610beb565b5f6119aa565b6119e59295506020809183010191016117c0565b925f80611887565b919360a093611369969565ffffffffffff938552600180871b0316602085015260408401521660608201528160808201520190610712565b634e487b7160e01b5f52601160045260245ffd5b8115611a43570490565b634e487b7160e01b5f52601260045260245ffd5b9060018201809211611a6557565b611a25565b5f546040516308834cb560e21b8082526001600160a01b0385811660048401529283166024830152929392602092909183816044817f000000000000000000000000000000000000000000000000000000000000000086165afa9081156106c3575f91611b77575b5015918215611af3575b50509050611aed57611369916126a1565b50505f90565b6040519081526001600160a01b0385166004820152606086901c602482015291508290829060449082907f0000000000000000000000000000000000000000000000000000000000000000165afa9182156106c3575f92611b5a575b505015805f80611adc565b611b709250803d106106bc576106ae8183610beb565b5f80611b4f565b611b8e9150843d86116106bc576106ae8183610beb565b5f611ad2565b335f9081527f72a65082a5691803ab2b62c9bc729b34205ba1b183d950896526b2fd8714d0c7602052604090207e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf9060ff905b5416156109455750565b5f8181525f80516020612f9783398151915260209081526040808320338452909152902060ff90611be6565b634e487b7160e01b5f52603260045260245ffd5b8054821015611c45575f5260205f2001905f90565b611c1c565b90815491600160401b831015610bb05782611c6d916001610c1995018155611c30565b90919082549060031b91821b915f19901b1916179055565b5f19810191908211611a6557565b90929192600182019081548015611d25575b5084611cb08461275b565b50949092845493611cc0836121eb565b9681611d10575b5015611ced575050505f198101908111611a6557611c6d8591611ce993611c30565b9190565b611ce9949293611d09926001600160d01b039091169190612de6565b5050611c4a565b65ffffffffffff83811691161490505f611cc7565b600160401b811015610bb057806001611d419201845583611c30565b8154905f199060031b1b191690555f611ca5565b90604051611d6281610b95565b915465ffffffffffff8116835260301c6020830152565b91908254905f829160058411611e21575b611d959350856128dd565b908115611e1557611e0e611e05611dff611df5611dc7611dc2611db788611c85565b895f5260205f200190565b611d55565b966001611dee6020611ddf8b5165ffffffffffff1690565b9a01516001600160d01b031690565b9101611c30565b90549060031b1c90565b93611c85565b63ffffffff1690565b6001939291565b5f925082915081908190565b9192611e2c816127aa565b8103908111611a6557611d9593865f52611e60611e558360205f200165ffffffffffff90541690565b65ffffffffffff1690565b65ffffffffffff85161015611e76575091611d8a565b929150611e8290611a57565b90611d8a565b5f80516020612fb78339815191526002815414611ea55760029055565b604051633ee5aeb560e01b8152600490fd5b90815f52600360205260405f2081611ece8261275b565b919390508315611f2c57611eee916001600160d01b031690600101611c30565b90549060031b1c5b82611f22575b5050611f06575050565b611f1e915f52600360205260405f2061036f42612729565b5050565b119050815f611efc565b50505f611ef6565b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260409020545f80516020612f978339815191529060ff16611aed575f808052602091825260408082206001600160a01b038516835290925220805460ff1916600117905533906001600160a01b03165f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b6001600160a01b0381165f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c602052604090207fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c905f80516020612f978339815191529060ff905b54166120ae575f828152602091825260408082206001600160a01b038616835290925220805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b5050505f90565b6001600160a01b0381165f9081527f72a65082a5691803ab2b62c9bc729b34205ba1b183d950896526b2fd8714d0c7602052604090207e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf905f80516020612f978339815191529060ff9061204a565b5f8181525f80516020612f97833981519152602081815260408084206001600160a01b038716855290915290912060ff9061204a565b5f8181525f80516020612f97833981519152602081815260408084206001600160a01b03871685529091529091205460ff16156120ae575f828152602091825260408082206001600160a01b038616835290925220805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b80548061221057505f5b6001600160d01b03811615611aed576001611df59201611c30565b5f19908082810111611a6557825f5260205f2001015460301c6121f5565b9190916040818403126102da57803561224681610701565b9260208201356001600160401b0381116102da576113699201610c43565b6122709181019061222e565b6040516302910f8b60e31b81526001600160a01b039283166004820181905291906020816024817f000000000000000000000000000000000000000000000000000000000000000088165afa9081156106c3575f91612383575b50156123715761230560409161230061234b946122e5612934565b60018060a01b03166001600160601b0360a01b5f5416175f55565b612aa0565b6020810151600180546001600160a01b0319166001600160a01b0390921691909117905580516001600160a01b0316848116612361575b5001516001600160a01b031690565b9081166123555750565b61235e90611fdf565b50565b61236a90611f34565b505f61233c565b6040516362df054560e01b8152600490fd5b61239c915060203d6020116106bc576106ae8183610beb565b5f6122ca565b908160209103126102da576113699061167c565b90600163ffffffff80931601918211611a6557565b9180511561249957806020806123e6935183010191016123a2565b916123f18382612d11565b92612402845165ffffffffffff1690565b9065ffffffffffff808516921682811461248d5782119182612438575b505061242f576113699250612c41565b50506020015190565b9091506124458354611c85565b63ffffffff83161491821561245e575b50505f8061241f565b612485919250612479612473611e55926123b6565b85612d11565b5165ffffffffffff1690565b115f80612455565b50505050506020015190565b5061136991612c41565b9190916040818403126102da576124b981611348565b9260208201516001600160401b0381116102da576113699201611377565b604051906124e482610bb5565b60606040838281528260208201520152565b906020828203126102da5781516001600160401b03928382116102da5701906060828203126102da576040519261252c84610bb5565b82518181116102da5782612541918501611377565b845260208301518181116102da578261255b918501611377565b602085015260408301519081116102da576125769201611377565b604082015290565b908160209103126102da575190565b60409065ffffffffffff61136994931681528160208201520190610712565b909392936125b86124d7565b94805180612685575b50506004546001600160a01b0391821691160361267d575f546126189291906020906125f790611143906001600160a01b031681565b8187015190604051808097819463810da75d60e01b8352886004840161258d565b03915afa9081156106c357612645935f9261264a575b5061263f9192604087015191611637565b90612d79565b915190565b61263f92506126709060203d602011612676575b6126688183610beb565b81019061257e565b9161262e565b503d61265e565b505090515f91565b6126999296506020809183010191016124f6565b935f806125c1565b6004546001600160a01b039290831690831603611aed5760206004925f54166040519384809263bd49c35f60e01b82525afa9081156106c357611369925f92612700575b506126fb61263f915f52600360205260405f2090565b6121eb565b61263f9192506127216126fb9160203d602011612676576126688183610beb565b9291506126e5565b65ffffffffffff9081811161273c571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b80548061276c5750505f905f905f90565b5f19908082810111611a6557612789925f5260205f200101611d55565b9065ffffffffffff82511691602060018060d01b0391015116906001929190565b80156118a5578061263f61287561286b61286161285761284d61284361283960016113699a5f908b60801c806128d1575b508060401c806128c4575b508060201c806128b7575b508060101c806128aa575b508060081c8061289d575b508060041c80612890575b508060021c80612883575b50821c61287c575b811c1b612832818b611a39565b0160011c90565b612832818a611a39565b6128328189611a39565b6128328188611a39565b6128328187611a39565b6128328186611a39565b6128328185611a39565b8092611a39565b8101612825565b600291509101905f61281d565b600491509101905f612812565b600891509101905f612807565b601091509101905f6127fc565b602091509101905f6127f1565b604091509101905f6127e6565b9150506080905f6127db565b905b8383106128ec5750505090565b9091926128f98185612efc565b90835f5265ffffffffffff808360205f20015416908416105f146129215750925b91906128df565b9350600181018091111561291a57611a25565b61293c612f11565b612944612f11565b60015f80516020612fb783398151915255565b6040519061296482610bb5565b5f6040838281528260208201520152565b81601f820112156102da578051916020916001600160401b038411610bb0578360051b90604051946129a985840187610beb565b855283808601928201019283116102da578301905b8282106129cc575050505090565b83809183516129da81610701565b8152019101906129be565b6020818303126102da5780516001600160401b03918282116102da5701918281039260a084126102da57606060405194612a1e86610bb5565b126102da57604051612a2f81610bb5565b8151612a3a81610701565b81526020820151612a4a81610701565b60208201526040820151612a5d81610701565b6040820152845260608101519283116102da57612a81608092612576948301612975565b6020850152016113e2565b8051821015611c455760209160051b010190565b612aa8612957565b50612abe815191602080809483010191016129e5565b8051516001600160a01b0393919084161580612c35575b612c23576040818101805182516302910f8b60e31b81526001600160a01b0390911660048083019190915296929491928690829060249082907f0000000000000000000000000000000000000000000000000000000000000000165afa9081156106c3575f91612c06575b5015612bf45791938401915f5b83518051821015612bc357611143612b6883612b7593612a8c565b516001600160a01b031690565b15612bb357612b97612b93612b8e612b68848851612a8c565b6120b5565b1590565b612ba357600101612b4d565b8451635140fefd60e11b81528790fd5b84516323cda06760e01b81528790fd5b50509051600480546001600160a01b0319166001600160a01b039092169190911790559350612bf0915050565b5190565b604051631f0853c160e21b8152600490fd5b612c1d9150863d88116106bc576106ae8183610beb565b5f612b40565b6040516303501f5960e11b8152600490fd5b50828101515115612ad5565b908154905f829160058411612cab575b612c5c935084612f3f565b80612c8457505f905b6001600160d01b03821615611aed57611369916001611df59201611c30565b612c9e612c93612ca592611c85565b835f5260205f200190565b5460301c90565b90612c65565b9192612cb6816127aa565b8103908111611a6557612c5c93855f5265ffffffffffff808360205f20015416908516105f14612ce7575091612c51565b929150612cf390611a57565b90612c51565b60405190612d0682610b95565b5f6020838281520152565b90612d3a612d34612d5b92612d24612cf9565b50612d2d612cf9565b5084611c30565b50611d55565b91600165ffffffffffff845116936020828060d01b03910151169101611c30565b90549060405192612d6b84610b95565b835260031b1c602082015290565b9080821015612d86575090565b905090565b8054600160401b811015610bb057612da891600182018155611c30565b612dd357815160209092015160301b65ffffffffffff191665ffffffffffff92909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b805492939291908215612ed357612e02611dc2612c9385611c85565b90612e13825165ffffffffffff1690565b65ffffffffffff84811691168110612ec157611ce9946020948892612e41611e55875165ffffffffffff1690565b03612e895750612e7b92612e57612e6292611c85565b905f5260205f200190565b9065ffffffffffff82549181199060301b169116179055565b01516001600160d01b031690565b915050612ebc91612ea9612e9b610c1b565b65ffffffffffff9093168352565b6001600160d01b03881682860152612d8b565b612e7b565b604051632520601d60e01b8152600490fd5b612ef79250612ee3612e9b610c1b565b6001600160d01b0385166020830152612d8b565b5f9190565b90808216911860011c8101809111611a655790565b60ff5f80516020612fd78339815191525460401c1615612f2d57565b604051631afcd79f60e31b8152600490fd5b905b838310612f4e5750505090565b909192612f5b8185612efc565b90835f5265ffffffffffff808360205f20015416908416105f14612f835750925b9190612f41565b93506001810180911115612f7c57611a2556fe02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212202077fedb9993c6133279d30f1d446f0f32fbff7e0bf1efb91c3d996684e117c464736f6c63430008190033","sourceMap":"11341:2310:81:-:0;;;;;;;;;;;;;-1:-1:-1;;11341:2310:81;;;;-1:-1:-1;;;;;11341:2310:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;348:4:82;;332:21;;8837:64:25;11341:2310:81;;;;;;;;;7896:76:25;;11341:2310:81;;;;7985:34:25;7981:146;;-1:-1:-1;525:17:69;;;-1:-1:-1;525:17:69;;-1:-1:-1;552:12:69;;-1:-1:-1;2360:34:76;;2404:28;;-1:-1:-1;2404:28:76;;2442:57;;-1:-1:-1;2442:57:76;;2509:61;-1:-1:-1;2509:61:76;;1716:36:80;;-1:-1:-1;1716:36:80;;11845:41:81;;;;11896:24;;;;11930:40;;;;11341:2310;;;;;;;;332:21:82;11341:2310:81;;;;;525:17:69;11341:2310:81;;;;;552:12:69;11341:2310:81;;;;;2360:34:76;11341:2310:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7981:146:25;-1:-1:-1;;;;;;11341:2310:81;;;;;;;;;;;;;8087:29:25;;11341:2310:81;;8087:29:25;7981:146;;;;;7896:76;11341:2310:81;;-1:-1:-1;;;7938:23:25;;;;;11341:2310:81;-1:-1:-1;11341:2310:81;;;;;;-1:-1:-1;11341:2310:81;;;;;-1:-1:-1;11341:2310:81;;;;-1:-1:-1;;;;;11341:2310:81;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a714610284578063021453481461027f578063103f29071461027a578063128e5d8214610275578063197aa7ea146102705780631a80e5001461026b57806323f752d514610266578063248a9ca31461026157806325dc97081461025c5780632dd31000146102575780632f2ff15d1461025257806336568abe1461024d5780633dfd3873146102485780633eb22c0f14610243578063439fab911461023e57806345e78fcb14610239578063557cab4414610234578063570ca7351461022f5780635d32a1c91461022a5780636679191e1461022557806379d89614146102205780637d24bb271461021b5780637f5a7c7b1461021657806383ce03221461021157806391d148541461020c5780639b656b22146102075780639f86fd8514610202578063a217fddf146101fd578063bb24fe8a146101f8578063c0cd7c3e146101f3578063d15b740e146101ee578063d547741f146101e9578063da749d2b146101e4578063e02f6937146101df578063e49561ee146101da578063fbfa77cf146101d5578063fd4d447c146101d0578063ff54740f146101cb5763ffa1ad74146101c6575f80fd5b61132d565b611310565b6112e6565b6112bf565b6110d4565b61107f565b61104a565b610ffe565b610fd4565b610f90565b610f4d565b610f33565b610e9f565b610e5b565b610dfd565b610db9565b610d91565b610d58565b610d14565b610cda565b610c89565b610b59565b610b3d565b610af9565b6109c1565b610963565b61086a565b61081f565b6107d3565b61078f565b610736565b6106c8565b610542565b6104fe565b610471565b6103ee565b6103aa565b6102de565b346102da5760203660031901126102da5760043563ffffffff60e01b81168091036102da57602090637965db0b60e01b81149081156102c9575b506040519015158152f35b6301ffc9a760e01b1490505f6102be565b5f80fd5b346102da576040806003193601126102da576004359060243590610300611b94565b825f526002602052805f2054821161039a57825f52600360205281610326825f206121eb565b1461038a5781610385916103757e899d104fc3d8820bd96540612bcc5c448c8837b13b9f7faa43ad0728f0c14f94610366875f52600360205260405f2090565b61036f42612729565b90611c93565b5050519081529081906020820190565b0390a2005b5163a741a04560e01b8152600490fd5b51631eefc06360e31b8152600490fd5b346102da575f3660031901126102da576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102da575f3660031901126102da576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6024359065ffffffffffff821682036102da57565b6064359065ffffffffffff821682036102da57565b6044359065ffffffffffff821682036102da57565b346102da5760403660031901126102da5761048a610432565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036104ec5763ffffffff6104d76040926004355f526003602052835f20611d79565b91505083929192519215158352166020820152f35b604051637ca475e560e11b8152600490fd5b346102da575f3660031901126102da576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102da5760403660031901126102da576004356001600160601b03811681036102da5760243590610572611e88565b6040516302910f8b60e31b81523360048201526020816024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa9081156106c3575f91610694575b5015610682576001600160601b03166bffffffffffffffffffffffff193360601b161790806105fc835f52600260205260405f2090565b541461067057610655817fc67e7929681aa1bccd63f52b3799bf5805f3009f197db6fdf584b14f7fbf608c9261063a855f52600260205260405f2090565b556106458185611eb7565b6040519081529081906020820190565b0390a261066e60015f80516020612fb783398151915255565b005b60405163a741a04560e01b8152600490fd5b6040516323d53b9760e21b8152600490fd5b6106b6915060203d6020116106bc575b6106ae8183610beb565b810190611355565b5f6105c5565b503d6106a4565b61136c565b346102da5760203660031901126102da576004355f525f80516020612f978339815191526020526020600160405f200154604051908152f35b6001600160a01b038116036102da57565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b346102da5760803660031901126102da5761078b61077760043561075981610701565b60443561076581610701565b61076d610447565b9160243590611451565b604051918291602083526020830190610712565b0390f35b346102da575f3660031901126102da576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102da5760403660031901126102da5761066e6024356004356107f682610701565b805f525f80516020612f9783398151915260205261081a600160405f200154611bf0565b612123565b346102da5760403660031901126102da5760243561083c81610701565b336001600160a01b038216036108585761066e90600435612159565b60405163334bd91960e11b8152600490fd5b346102da5760203660031901126102da5760043561088781610701565b61088f611e88565b335f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c60205260409020547fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c9060ff161561094557506001546001600160a01b039182169181168214610670576001600160a01b03191681176001557f5bbb1d3ebb6a3ad2a0f17ff35e579a83af60604d1d3c2a4c83c62adecadf666d5f80a260015f80516020612fb783398151915255005b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b346102da5760203660031901126102da576004355f526003602052602061098c60405f206121eb565b604051908152f35b9181601f840112156102da578235916001600160401b0383116102da57602083818601950101116102da57565b346102da5760203660031901126102da576001600160401b036004358181116102da576109f2903690600401610994565b5f80516020612fd7833981519152549260ff8460401c1615931680159081610af1575b6001149081610ae7575b159081610ade575b50610acc575f80516020612fd7833981519152805467ffffffffffffffff19166001179055610a5a9183610aa857612264565b610a6057005b5f80516020612fd7833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f80516020612fd7833981519152805460ff60401b1916600160401b179055612264565b60405163f92ee8a960e01b8152600490fd5b9050155f610a27565b303b159150610a1f565b849150610a15565b346102da575f3660031901126102da576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102da575f3660031901126102da576020604051614e208152f35b346102da575f3660031901126102da576004546040516001600160a01b039091168152602090f35b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b03821117610bb057604052565b610b81565b606081019081106001600160401b03821117610bb057604052565b608081019081106001600160401b03821117610bb057604052565b90601f801991011681019081106001600160401b03821117610bb057604052565b60405190610c1982610bb5565b565b60405190610c1982610b95565b6001600160401b038111610bb057601f01601f191660200190565b81601f820112156102da57803590610c5a82610c28565b92610c686040519485610beb565b828452602083830101116102da57815f926020809301838601378301015290565b346102da5760603660031901126102da57610ca2610432565b6044356001600160401b0381116102da57602091610cc761098c923690600401610c43565b906004355f526003845260405f206123cb565b346102da575f3660031901126102da5760206040517fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c8152f35b346102da575f3660031901126102da576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102da575f3660031901126102da5760206040517e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf8152f35b346102da575f3660031901126102da576001546040516001600160a01b039091168152602090f35b346102da575f3660031901126102da576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102da5760403660031901126102da57602060ff610e4f602435610e2181610701565b6004355f525f80516020612f97833981519152845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b346102da575f3660031901126102da576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102da5760403660031901126102da57600435610ebc81610701565b6024356001600160401b0381116102da575f91610ede83923690600401610994565b90816040519283928337810184815203915af4610f2b610efc61164d565b91610f1d604051938492151560208401526040808401526060830190610712565b03601f198101835282610beb565b805190602001fd5b346102da575f3660031901126102da5760206040515f8152f35b346102da575f3660031901126102da5760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102da575f3660031901126102da576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102da5760203660031901126102da576004355f526002602052602060405f2054604051908152f35b346102da5760403660031901126102da5761066e60243560043561102182610701565b805f525f80516020612f97833981519152602052611045600160405f200154611bf0565b612159565b346102da5760603660031901126102da5761078b61077760043561106d81610701565b61107561045c565b90602435906116ae565b346102da5760803660031901126102da5760243561109c81610701565b6110a461045c565b90606435906001600160401b0382116102da576020926110cb61098c933690600401610c43565b91600435611863565b346102da5760a03660031901126102da576024356004356110f482610701565b60443591611100610447565b90608435906001600160401b0382116102da5761112260049236908401610c43565b61112a611e88565b5f5460209061114f90611143906001600160a01b031681565b6001600160a01b031690565b60405163b134427160e01b815294859182905afa9283156106c3575f9361128e575b506001600160a01b03928316330361127c576001546001600160a01b03168381166111f1575b50506040805195865265ffffffffffff909316602086015216927f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed91819081015b0390a361066e60015f80516020612fb783398151915255565b9093604051946112288661121a602082019363724ab0f760e11b8552858c898d602487016119ed565b03601f198101885287610beb565b62042e305a1061126a575f6111d8938192827f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed9951926203d090f15093611197565b604051638072475160e01b8152600490fd5b60405163dabc4ad960e01b8152600490fd5b6112b191935060203d6020116112b8575b6112a98183610beb565b8101906113ed565b915f611171565b503d61129f565b346102da575f3660031901126102da575f546040516001600160a01b039091168152602090f35b346102da5760403660031901126102da57602061098c60243561130881610701565b600435611a6a565b346102da575f3660031901126102da5760206040516203d0908152f35b346102da575f3660031901126102da57602060405160018152f35b519081151582036102da57565b908160209103126102da5761136990611348565b90565b6040513d5f823e3d90fd5b81601f820112156102da5780519061138e82610c28565b9261139c6040519485610beb565b828452602083830101116102da57815f9260208093018386015e8301015290565b906020828203126102da5781516001600160401b0381116102da576113699201611377565b5190610c1982610701565b908160209103126102da575161136981610701565b9061136991602081526114218251606060208401526080830190610712565b9060606040611441602086015194601f1995868683030184870152610712565b9401519282850301910152610712565b604051630df8851f60e11b81526001600160a01b03828116600483015260248201849052938416604482015265ffffffffffff8516606482015260609594909391925f856084817f000000000000000000000000000000000000000000000000000000000000000087165afa9485156106c3575f9561161b575b5060405163fbfa77cf60e01b81526020816004818888165afa9081156106c357611537945f92859284916115fc575b5060405163192c0ff760e21b81526001600160a01b03909116600482015265ffffffffffff90921660248301529094859190829081906044820190565b03917f0000000000000000000000000000000000000000000000000000000000000000165afa9283156106c3575f936115d6575b5061157692936116ae565b908251158015906115cc575b80156115c2575b61159257505050565b610f1d9394509061136992916115a6610c0c565b9283526020830152604082015260405192839160208301611402565b5081511515611589565b5080511515611582565b61157693506115f6903d805f833e6115ee8183610beb565b8101906113bd565b9261156b565b611615915060203d6020116112b8576112a98183610beb565b5f6114fa565b6116309195503d805f833e6115ee8183610beb565b935f6114cb565b9061136992915f52600360205260405f206123cb565b3d15611677573d9061165e82610c28565b9161166c6040519384610beb565b82523d5f602084013e565b606090565b519063ffffffff821682036102da57565b91908260409103126102da5761136960206116a784611348565b930161167c565b92915f8060609565ffffffffffff60405194602096630cbd53f560e11b888801526024870152166044850152604484526116e784610bd0565b604051938461171487820192639f86fd8560e01b8452306024840152604060448401526064830190610712565b0394611728601f1996878101835282610beb565b51915afa5061174661173861164d565b8380825183010191016124a3565b90156117995780838061175e9351830101910161168d565b929061176957505050565b6113699293945061178d604051948592830191909163ffffffff6020820193169052565b03908101835282610beb565b809150519182156102da5701fd5b604051906117b482610b95565b60606020838281520152565b906020828203126102da5781516001600160401b03928382116102da5701906040828203126102da57604051926117f684610b95565b82518181116102da578261180b918501611377565b845260208301519081116102da576118239201611377565b602082015290565b6001600160a01b0391821681529116602082015265ffffffffffff909116604082015260806060820181905261136992910190610712565b92611873909291928284866125ac565b92909361187e6117a7565b938051806119d1575b5050841593841561193b575b84156118aa575b505050506118a55790565b505f90565b6020809495506118d5910151604051958694859463530e1d4360e01b865260601c906004860161182b565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156106c3575f9161191c575b50155f80808061189a565b611935915060203d6020116106bc576106ae8183610beb565b5f611911565b5f549094506001600160a01b031660208486519261196e604051948593849363530e1d4360e01b8552896004860161182b565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156106c3575f916119b2575b501593611893565b6119cb915060203d6020116106bc576106ae8183610beb565b5f6119aa565b6119e59295506020809183010191016117c0565b925f80611887565b919360a093611369969565ffffffffffff938552600180871b0316602085015260408401521660608201528160808201520190610712565b634e487b7160e01b5f52601160045260245ffd5b8115611a43570490565b634e487b7160e01b5f52601260045260245ffd5b9060018201809211611a6557565b611a25565b5f546040516308834cb560e21b8082526001600160a01b0385811660048401529283166024830152929392602092909183816044817f000000000000000000000000000000000000000000000000000000000000000086165afa9081156106c3575f91611b77575b5015918215611af3575b50509050611aed57611369916126a1565b50505f90565b6040519081526001600160a01b0385166004820152606086901c602482015291508290829060449082907f0000000000000000000000000000000000000000000000000000000000000000165afa9182156106c3575f92611b5a575b505015805f80611adc565b611b709250803d106106bc576106ae8183610beb565b5f80611b4f565b611b8e9150843d86116106bc576106ae8183610beb565b5f611ad2565b335f9081527f72a65082a5691803ab2b62c9bc729b34205ba1b183d950896526b2fd8714d0c7602052604090207e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf9060ff905b5416156109455750565b5f8181525f80516020612f9783398151915260209081526040808320338452909152902060ff90611be6565b634e487b7160e01b5f52603260045260245ffd5b8054821015611c45575f5260205f2001905f90565b611c1c565b90815491600160401b831015610bb05782611c6d916001610c1995018155611c30565b90919082549060031b91821b915f19901b1916179055565b5f19810191908211611a6557565b90929192600182019081548015611d25575b5084611cb08461275b565b50949092845493611cc0836121eb565b9681611d10575b5015611ced575050505f198101908111611a6557611c6d8591611ce993611c30565b9190565b611ce9949293611d09926001600160d01b039091169190612de6565b5050611c4a565b65ffffffffffff83811691161490505f611cc7565b600160401b811015610bb057806001611d419201845583611c30565b8154905f199060031b1b191690555f611ca5565b90604051611d6281610b95565b915465ffffffffffff8116835260301c6020830152565b91908254905f829160058411611e21575b611d959350856128dd565b908115611e1557611e0e611e05611dff611df5611dc7611dc2611db788611c85565b895f5260205f200190565b611d55565b966001611dee6020611ddf8b5165ffffffffffff1690565b9a01516001600160d01b031690565b9101611c30565b90549060031b1c90565b93611c85565b63ffffffff1690565b6001939291565b5f925082915081908190565b9192611e2c816127aa565b8103908111611a6557611d9593865f52611e60611e558360205f200165ffffffffffff90541690565b65ffffffffffff1690565b65ffffffffffff85161015611e76575091611d8a565b929150611e8290611a57565b90611d8a565b5f80516020612fb78339815191526002815414611ea55760029055565b604051633ee5aeb560e01b8152600490fd5b90815f52600360205260405f2081611ece8261275b565b919390508315611f2c57611eee916001600160d01b031690600101611c30565b90549060031b1c5b82611f22575b5050611f06575050565b611f1e915f52600360205260405f2061036f42612729565b5050565b119050815f611efc565b50505f611ef6565b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260409020545f80516020612f978339815191529060ff16611aed575f808052602091825260408082206001600160a01b038516835290925220805460ff1916600117905533906001600160a01b03165f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b6001600160a01b0381165f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c602052604090207fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c905f80516020612f978339815191529060ff905b54166120ae575f828152602091825260408082206001600160a01b038616835290925220805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b5050505f90565b6001600160a01b0381165f9081527f72a65082a5691803ab2b62c9bc729b34205ba1b183d950896526b2fd8714d0c7602052604090207e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf905f80516020612f978339815191529060ff9061204a565b5f8181525f80516020612f97833981519152602081815260408084206001600160a01b038716855290915290912060ff9061204a565b5f8181525f80516020612f97833981519152602081815260408084206001600160a01b03871685529091529091205460ff16156120ae575f828152602091825260408082206001600160a01b038616835290925220805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b80548061221057505f5b6001600160d01b03811615611aed576001611df59201611c30565b5f19908082810111611a6557825f5260205f2001015460301c6121f5565b9190916040818403126102da57803561224681610701565b9260208201356001600160401b0381116102da576113699201610c43565b6122709181019061222e565b6040516302910f8b60e31b81526001600160a01b039283166004820181905291906020816024817f000000000000000000000000000000000000000000000000000000000000000088165afa9081156106c3575f91612383575b50156123715761230560409161230061234b946122e5612934565b60018060a01b03166001600160601b0360a01b5f5416175f55565b612aa0565b6020810151600180546001600160a01b0319166001600160a01b0390921691909117905580516001600160a01b0316848116612361575b5001516001600160a01b031690565b9081166123555750565b61235e90611fdf565b50565b61236a90611f34565b505f61233c565b6040516362df054560e01b8152600490fd5b61239c915060203d6020116106bc576106ae8183610beb565b5f6122ca565b908160209103126102da576113699061167c565b90600163ffffffff80931601918211611a6557565b9180511561249957806020806123e6935183010191016123a2565b916123f18382612d11565b92612402845165ffffffffffff1690565b9065ffffffffffff808516921682811461248d5782119182612438575b505061242f576113699250612c41565b50506020015190565b9091506124458354611c85565b63ffffffff83161491821561245e575b50505f8061241f565b612485919250612479612473611e55926123b6565b85612d11565b5165ffffffffffff1690565b115f80612455565b50505050506020015190565b5061136991612c41565b9190916040818403126102da576124b981611348565b9260208201516001600160401b0381116102da576113699201611377565b604051906124e482610bb5565b60606040838281528260208201520152565b906020828203126102da5781516001600160401b03928382116102da5701906060828203126102da576040519261252c84610bb5565b82518181116102da5782612541918501611377565b845260208301518181116102da578261255b918501611377565b602085015260408301519081116102da576125769201611377565b604082015290565b908160209103126102da575190565b60409065ffffffffffff61136994931681528160208201520190610712565b909392936125b86124d7565b94805180612685575b50506004546001600160a01b0391821691160361267d575f546126189291906020906125f790611143906001600160a01b031681565b8187015190604051808097819463810da75d60e01b8352886004840161258d565b03915afa9081156106c357612645935f9261264a575b5061263f9192604087015191611637565b90612d79565b915190565b61263f92506126709060203d602011612676575b6126688183610beb565b81019061257e565b9161262e565b503d61265e565b505090515f91565b6126999296506020809183010191016124f6565b935f806125c1565b6004546001600160a01b039290831690831603611aed5760206004925f54166040519384809263bd49c35f60e01b82525afa9081156106c357611369925f92612700575b506126fb61263f915f52600360205260405f2090565b6121eb565b61263f9192506127216126fb9160203d602011612676576126688183610beb565b9291506126e5565b65ffffffffffff9081811161273c571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b80548061276c5750505f905f905f90565b5f19908082810111611a6557612789925f5260205f200101611d55565b9065ffffffffffff82511691602060018060d01b0391015116906001929190565b80156118a5578061263f61287561286b61286161285761284d61284361283960016113699a5f908b60801c806128d1575b508060401c806128c4575b508060201c806128b7575b508060101c806128aa575b508060081c8061289d575b508060041c80612890575b508060021c80612883575b50821c61287c575b811c1b612832818b611a39565b0160011c90565b612832818a611a39565b6128328189611a39565b6128328188611a39565b6128328187611a39565b6128328186611a39565b6128328185611a39565b8092611a39565b8101612825565b600291509101905f61281d565b600491509101905f612812565b600891509101905f612807565b601091509101905f6127fc565b602091509101905f6127f1565b604091509101905f6127e6565b9150506080905f6127db565b905b8383106128ec5750505090565b9091926128f98185612efc565b90835f5265ffffffffffff808360205f20015416908416105f146129215750925b91906128df565b9350600181018091111561291a57611a25565b61293c612f11565b612944612f11565b60015f80516020612fb783398151915255565b6040519061296482610bb5565b5f6040838281528260208201520152565b81601f820112156102da578051916020916001600160401b038411610bb0578360051b90604051946129a985840187610beb565b855283808601928201019283116102da578301905b8282106129cc575050505090565b83809183516129da81610701565b8152019101906129be565b6020818303126102da5780516001600160401b03918282116102da5701918281039260a084126102da57606060405194612a1e86610bb5565b126102da57604051612a2f81610bb5565b8151612a3a81610701565b81526020820151612a4a81610701565b60208201526040820151612a5d81610701565b6040820152845260608101519283116102da57612a81608092612576948301612975565b6020850152016113e2565b8051821015611c455760209160051b010190565b612aa8612957565b50612abe815191602080809483010191016129e5565b8051516001600160a01b0393919084161580612c35575b612c23576040818101805182516302910f8b60e31b81526001600160a01b0390911660048083019190915296929491928690829060249082907f0000000000000000000000000000000000000000000000000000000000000000165afa9081156106c3575f91612c06575b5015612bf45791938401915f5b83518051821015612bc357611143612b6883612b7593612a8c565b516001600160a01b031690565b15612bb357612b97612b93612b8e612b68848851612a8c565b6120b5565b1590565b612ba357600101612b4d565b8451635140fefd60e11b81528790fd5b84516323cda06760e01b81528790fd5b50509051600480546001600160a01b0319166001600160a01b039092169190911790559350612bf0915050565b5190565b604051631f0853c160e21b8152600490fd5b612c1d9150863d88116106bc576106ae8183610beb565b5f612b40565b6040516303501f5960e11b8152600490fd5b50828101515115612ad5565b908154905f829160058411612cab575b612c5c935084612f3f565b80612c8457505f905b6001600160d01b03821615611aed57611369916001611df59201611c30565b612c9e612c93612ca592611c85565b835f5260205f200190565b5460301c90565b90612c65565b9192612cb6816127aa565b8103908111611a6557612c5c93855f5265ffffffffffff808360205f20015416908516105f14612ce7575091612c51565b929150612cf390611a57565b90612c51565b60405190612d0682610b95565b5f6020838281520152565b90612d3a612d34612d5b92612d24612cf9565b50612d2d612cf9565b5084611c30565b50611d55565b91600165ffffffffffff845116936020828060d01b03910151169101611c30565b90549060405192612d6b84610b95565b835260031b1c602082015290565b9080821015612d86575090565b905090565b8054600160401b811015610bb057612da891600182018155611c30565b612dd357815160209092015160301b65ffffffffffff191665ffffffffffff92909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b805492939291908215612ed357612e02611dc2612c9385611c85565b90612e13825165ffffffffffff1690565b65ffffffffffff84811691168110612ec157611ce9946020948892612e41611e55875165ffffffffffff1690565b03612e895750612e7b92612e57612e6292611c85565b905f5260205f200190565b9065ffffffffffff82549181199060301b169116179055565b01516001600160d01b031690565b915050612ebc91612ea9612e9b610c1b565b65ffffffffffff9093168352565b6001600160d01b03881682860152612d8b565b612e7b565b604051632520601d60e01b8152600490fd5b612ef79250612ee3612e9b610c1b565b6001600160d01b0385166020830152612d8b565b5f9190565b90808216911860011c8101809111611a655790565b60ff5f80516020612fd78339815191525460401c1615612f2d57565b604051631afcd79f60e31b8152600490fd5b905b838310612f4e5750505090565b909192612f5b8185612efc565b90835f5265ffffffffffff808360205f20015416908416105f14612f835750925b9190612f41565b93506001810180911115612f7c57611a2556fe02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212202077fedb9993c6133279d30f1d446f0f32fbff7e0bf1efb91c3d996684e117c464736f6c63430008190033","sourceMap":"11341:2310:81:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;-1:-1:-1;;11341:2310:81;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3551:47:23;;;:87;;;;11341:2310:81;;;;;;;;;;3551:87:23;-1:-1:-1;;;1133:40:29;;-1:-1:-1;3551:87:23;;;11341:2310:81;-1:-1:-1;11341:2310:81;;;;;;;;;;;;;;;;;;;;3202:4:23;;;:::i;:::-;11341:2310:81;-1:-1:-1;11341:2310:81;2428:15:80;11341:2310:81;;;-1:-1:-1;11341:2310:81;;2419:36:80;;2415:98;;11341:2310:81;-1:-1:-1;11341:2310:81;2193:13:80;11341:2310:81;;;2193:34:80;11341:2310:81;-1:-1:-1;11341:2310:81;2193:34:80;:::i;:::-;2527;2523:84;;2617:25;2689:35;2617:25;:56;2689:35;2617:25;;;11341:2310:81;;2193:13:80;11341:2310:81;;;;;;;2617:25:80;819:34:62;837:15;819:34;:::i;:::-;2617:56:80;;:::i;:::-;-1:-1:-1;;11341:2310:81;;;;;;;;;;;;2689:35:80;;;;11341:2310:81;2523:84:80;11341:2310:81;-1:-1:-1;;;2584:12:80;;11341:2310:81;;2584:12:80;2415:98;11341:2310:81;-1:-1:-1;;;2478:24:80;;11341:2310:81;;2478:24:80;11341:2310:81;;;;;;-1:-1:-1;;11341:2310:81;;;;;;1537:38:76;-1:-1:-1;;;;;11341:2310:81;;;;;;;;;;;;-1:-1:-1;;11341:2310:81;;;;;;1632:54:76;-1:-1:-1;;;;;11341:2310:81;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;11341:2310:81;;;;;;:::i;:::-;449:5:82;-1:-1:-1;;;;;11341:2310:81;435:10:82;:19;431:71;;11341:2310:81;12172:64;11341:2310;;;;-1:-1:-1;11341:2310:81;12172:13;11341:2310;;;-1:-1:-1;11341:2310:81;12172:64;:::i;:::-;11341:2310;;;;;;;;;;;;;;;;;;;431:71:82;11341:2310:81;;-1:-1:-1;;;477:14:82;;11341:2310:81;;477:14:82;11341:2310:81;;;;;;-1:-1:-1;;11341:2310:81;;;;;;1743:56:76;-1:-1:-1;;;;;11341:2310:81;;;;;;;;;;;;-1:-1:-1;;11341:2310:81;;;;;;-1:-1:-1;;;;;11341:2310:81;;;;;;;;3217:103:28;;;:::i;:::-;11341:2310:81;;-1:-1:-1;;;4285:48:76;;4322:10;11341:2310:81;4285:48:76;;11341:2310:81;;;;;-1:-1:-1;;;;;4295:16:76;11341:2310:81;4285:48:76;;;;;;;-1:-1:-1;4285:48:76;;;11341:2310:81;4284:49:76;;4280:99;;-1:-1:-1;;;;;11341:2310:81;-1:-1:-1;;4322:10:76;297:2:88;11341:2310:81;;267:46:88;4459:27:76;;;;11341:2310:81;;4459:15:76;11341:2310:81;;;;;;;4459:27:76;11341:2310:81;4459:37:76;4455:87;;4654:38;4552:27;4654:38;4552:27;;;11341:2310:81;;4459:15:76;11341:2310:81;;;;;;;4552:27:76;11341:2310:81;4631:6:76;;;;:::i;:::-;11341:2310:81;;;;;;;;;;;;;4654:38:76;;;;3282:1:28;1805;-1:-1:-1;;;;;;;;;;;11341:2310:81;3716:283:28;3282:1;11341:2310:81;4455:87:76;11341:2310:81;;-1:-1:-1;;;4519:12:76;;11341:2310:81;;4519:12:76;4280:99;11341:2310:81;;-1:-1:-1;;;4356:12:76;;11341:2310:81;;4356:12:76;4285:48;;;;11341:2310:81;4285:48:76;11341:2310:81;4285:48:76;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;11341:2310:81:-;;;;;;-1:-1:-1;;11341:2310:81;;;;;;-1:-1:-1;11341:2310:81;-1:-1:-1;;;;;;;;;;;11341:2310:81;;;4919:24:23;11341:2310:81;-1:-1:-1;11341:2310:81;4919:24:23;11341:2310:81;;;;;;;;-1:-1:-1;;;;;11341:2310:81;;;;;:::o;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;11341:2310:81;;;;;;;;-1:-1:-1;;11341:2310:81;;;;:::o;:::-;;;;;;-1:-1:-1;;11341:2310:81;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;11341:2310:81;;;;;;322:32:69;-1:-1:-1;;;;;11341:2310:81;;;;;;;;;;;;-1:-1:-1;;11341:2310:81;;;;5350:25:23;11341:2310:81;;;;;;;:::i;:::-;;-1:-1:-1;11341:2310:81;-1:-1:-1;;;;;;;;;;;11341:2310:81;;3202:4:23;4919:24;11341:2310:81;-1:-1:-1;11341:2310:81;4919:24:23;11341:2310:81;3202:4:23;:::i;:::-;5350:25;:::i;11341:2310:81:-;;;;;;-1:-1:-1;;11341:2310:81;;;;;;;;;:::i;:::-;966:10:27;-1:-1:-1;;;;;11341:2310:81;;6441:34:23;6437:102;;6549:37;11341:2310:81;;;6549:37:23;:::i;6437:102::-;11341:2310:81;;-1:-1:-1;;;6498:30:23;;11341:2310:81;;6498:30:23;11341:2310:81;;;;;;-1:-1:-1;;11341:2310:81;;;;;;;;;:::i;:::-;3217:103:28;;:::i;:::-;966:10:27;-1:-1:-1;11341:2310:81;;;;;;;;;;1356:26:76;;11341:2310:81;;4468:23:23;4464:108;;-1:-1:-1;4861:4:76;11341:2310:81;-1:-1:-1;;;;;11341:2310:81;;;;;;4861:13:76;;4857:63;;-1:-1:-1;;;;;;11341:2310:81;;;4861:4:76;11341:2310:81;4958:14:76;-1:-1:-1;;4958:14:76;4861:4;-1:-1:-1;;;;;;;;;;;11341:2310:81;;4464:108:23;11341:2310:81;;;;4514:47:23;;;;;;966:10:27;11341:2310:81;4514:47:23;;11341:2310:81;;;;;4514:47:23;11341:2310:81;;;;;;-1:-1:-1;;11341:2310:81;;;;;;-1:-1:-1;11341:2310:81;2193:13:80;11341:2310:81;;;2193:34:80;11341:2310:81;-1:-1:-1;11341:2310:81;2193:34:80;:::i;:::-;11341:2310:81;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11341:2310:81;;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;11341:2310:81;;;;-1:-1:-1;;;;;11341:2310:81;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;11341:2310:81;;;;;;;4301:16:25;11341:2310:81;;4726:16:25;;:34;;;;11341:2310:81;4805:1:25;4790:16;:50;;;;11341:2310:81;4855:13:25;:30;;;;11341:2310:81;4851:91:25;;;-1:-1:-1;;;;;;;;;;;11341:2310:81;;-1:-1:-1;;11341:2310:81;;;;;718:4:69;;4951:18:25;4979:67;;718:4:69;:::i;:::-;5066:101:25;;11341:2310:81;5066:101:25;-1:-1:-1;;;;;;;;;;;11341:2310:81;;-1:-1:-1;;;;11341:2310:81;;;;;-1:-1:-1;11341:2310:81;;5142:14:25;;11341:2310:81;;5142:14:25;11341:2310:81;4979:67:25;-1:-1:-1;;;;;;;;;;;11341:2310:81;;-1:-1:-1;;;;11341:2310:81;-1:-1:-1;;;11341:2310:81;;;718:4:69;:::i;4851:91:25:-;11341:2310:81;;-1:-1:-1;;;4908:23:25;;11341:2310:81;;4908:23:25;4855:30;4872:13;;;4855:30;;;4790:50;4818:4;4810:25;:30;;-1:-1:-1;4790:50:25;;4726:34;;;-1:-1:-1;4726:34:25;;11341:2310:81;;;;;;-1:-1:-1;;11341:2310:81;;;;;;11523:36;-1:-1:-1;;;;;11341:2310:81;;;;;;;;;;;;-1:-1:-1;;11341:2310:81;;;;;;;1253:6:76;11341:2310:81;;;;;;;;;-1:-1:-1;;11341:2310:81;;;;;;;;-1:-1:-1;;;;;11341:2310:81;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11341:2310:81;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;-1:-1:-1;;;;;11341:2310:81;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;11341:2310:81;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;11341:2310:81;;;;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;:::i;:::-;-1:-1:-1;;;;;11341:2310:81;;;;;;-1:-1:-1;;11341:2310:81;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;11341:2310:81;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;11341:2310:81;;;;;;:::i;:::-;;;-1:-1:-1;;;;;11341:2310:81;;;;;;;1955:60:80;11341:2310:81;;;;;;:::i;:::-;;;;-1:-1:-1;11341:2310:81;1955:13:80;11341:2310:81;;;-1:-1:-1;11341:2310:81;1955:60:80;:::i;11341:2310:81:-;;;;;;-1:-1:-1;;11341:2310:81;;;;;;;1356:26:76;11341:2310:81;;;;;;;;;-1:-1:-1;;11341:2310:81;;;;;;11472:45;-1:-1:-1;;;;;11341:2310:81;;;;;;;;;;;;-1:-1:-1;;11341:2310:81;;;;;;;885:35:80;11341:2310:81;;;;;;;;;-1:-1:-1;;11341:2310:81;;;;;;;;-1:-1:-1;;;;;11341:2310:81;;;;;;;;;;;;;;-1:-1:-1;;11341:2310:81;;;;;;989:42:80;-1:-1:-1;;;;;11341:2310:81;;;;;;;;;;;;-1:-1:-1;;11341:2310:81;;;;;;3901:31:23;11341:2310:81;;;;;:::i;:::-;;;-1:-1:-1;11341:2310:81;-1:-1:-1;;;;;;;;;;;11341:2310:81;;;-1:-1:-1;11341:2310:81;;;;;;;;;;;;;;;;;3901:31:23;11341:2310:81;;;;;;;;;;;;;;;;-1:-1:-1;;11341:2310:81;;;;;;11565:45;-1:-1:-1;;;;;11341:2310:81;;;;;;;;;;;;-1:-1:-1;;11341:2310:81;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;11341:2310:81;;;;-1:-1:-1;11341:2310:81;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;416:25:75;;;;477:31;416:25;;:::i;:::-;11341:2310:81;;;;;;;;;;477:31:75;;11341:2310:81;;;;;;;;;;;:::i;:::-;477:31:75;11341:2310:81;;477:31:75;;;;;;:::i;:::-;518:79;;;11341:2310:81;518:79:75;;11341:2310:81;;;;;;-1:-1:-1;;11341:2310:81;;;;;;;;;;;;;;;;;-1:-1:-1;;11341:2310:81;;;;;;;-1:-1:-1;;;;;404:28:69;11341:2310:81;;;;;;;;;;-1:-1:-1;;11341:2310:81;;;;;;1439:41:76;-1:-1:-1;;;;;11341:2310:81;;;;;;;;;;;;-1:-1:-1;;11341:2310:81;;;;;;-1:-1:-1;11341:2310:81;2009:67:76;11341:2310:81;;;;-1:-1:-1;11341:2310:81;;;;;;;;;;;;;;-1:-1:-1;;11341:2310:81;;;;5767:26:23;11341:2310:81;;;;;;;:::i;:::-;;-1:-1:-1;11341:2310:81;-1:-1:-1;;;;;;;;;;;11341:2310:81;;3202:4:23;4919:24;11341:2310:81;-1:-1:-1;11341:2310:81;4919:24:23;11341:2310:81;3202:4:23;:::i;:::-;5767:26;:::i;11341:2310:81:-;;;;;;-1:-1:-1;;11341:2310:81;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;-1:-1:-1;;11341:2310:81;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;-1:-1:-1;;;;;11341:2310:81;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;-1:-1:-1;;11341:2310:81;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;11341:2310:81;;;;;;;;;;;;:::i;:::-;3217:103:28;;:::i;:::-;-1:-1:-1;11341:2310:81;;;5246:21:76;;:13;;-1:-1:-1;;;;;11341:2310:81;5246:13:76;11341:2310:81;;-1:-1:-1;;;;;11341:2310:81;;;5246:21:76;11341:2310:81;;-1:-1:-1;;;5246:23:76;;11341:2310:81;;;;;5246:23:76;;;;;;;-1:-1:-1;5246:23:76;;;11341:2310:81;-1:-1:-1;;;;;;11341:2310:81;;;5232:10:76;:37;5228:87;;5341:4;11341:2310:81;-1:-1:-1;;;;;11341:2310:81;;;;5355:469:76;;11341:2310:81;-1:-1:-1;;11341:2310:81;;;;;;;;;;;;;;;;5839:55:76;;11341:2310:81;;;;5839:55:76;;;;3282:1:28;1805;-1:-1:-1;;;;;;;;;;;11341:2310:81;3716:283:28;5355:469:76;11341:2310:81;;;;5435:94:76;;;;11341:2310:81;5435:94:76;;;;;;;;;;;;11341:2310:81;5435:94:76;;;:::i;:::-;;11341:2310:81;;5435:94:76;;;;;;:::i;:::-;11341:2310:81;5548:9:76;:51;5544:118;;-1:-1:-1;5839:55:76;5676:138;;;;5839:55;5676:138;;;1150:7;5676:138;;5355:469;;;5544:118;11341:2310:81;;-1:-1:-1;;;5626:21:76;;11341:2310:81;;5626:21:76;5228:87;11341:2310:81;;-1:-1:-1;;;5292:12:76;;11341:2310:81;;5292:12:76;5246:23;;;;;11341:2310:81;5246:23:76;11341:2310:81;5246:23:76;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;11341:2310:81;;;;;;-1:-1:-1;;11341:2310:81;;;;;;;;-1:-1:-1;;;;;11341:2310:81;;;;;;;;;;;;;;-1:-1:-1;;11341:2310:81;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;-1:-1:-1;;11341:2310:81;;;;;;;1150:7:76;11341:2310:81;;;;;;;;;-1:-1:-1;;11341:2310:81;;;;;;;2700:1:76;11341:2310:81;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;11341:2310:81;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;11341:2310:81;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;12814:835::-;11341:2310;;-1:-1:-1;;;13031:99:81;;-1:-1:-1;;;;;11341:2310:81;;;13031:99;;;11341:2310;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11341:2310:81;;;13050:20;11341:2310;;13031:99;;;;;;;;;;;12814:835;-1:-1:-1;11341:2310:81;;-1:-1:-1;;;13224:32:81;;;11341:2310;13031:99;11341:2310;;;;13224:32;;;;;;;13184:84;13224:32;13031:99;13224:32;;;;;;;12814:835;-1:-1:-1;11341:2310:81;;-1:-1:-1;;;13184:84:81;;-1:-1:-1;;;;;11341:2310:81;;;13031:99;13184:84;;11341:2310;;;;;;;;;;;;;-1:-1:-1;11341:2310:81;;;;;;;;;13184:84;;13195:11;;11341:2310;13184:84;;;;;;;13031:99;13184:84;;;12814:835;13312:50;;;;;:::i;:::-;11341:2310;;;13377:21;;;:52;;;12814:835;13377:85;;;;12814:835;13373:270;;12814:835;;;:::o;13373:270::-;13485:147;11341:2310;;;;13485:147;11341:2310;;;;:::i;:::-;;;;13224:32;13513:105;;11341:2310;;13513:105;;11341:2310;;;13485:147;;;13224:32;13485:147;;;:::i;13377:85::-;11341:2310;;;13433:29;;13377:85;;:52;11341:2310;;;13402:27;;13377:52;;13184:84;13312:50;13184:84;;;;;;13031:99;13184:84;;;;;;:::i;:::-;;;;;:::i;:::-;;;;13224:32;;;;;;;;;;;;;;:::i;:::-;;;;13031:99;;;;;;;;;;;;;;:::i;:::-;;;;;1827:195:80;;1955:60;1827:195;;-1:-1:-1;11341:2310:81;1955:13:80;11341:2310:81;;;-1:-1:-1;11341:2310:81;1955:60:80;:::i;11341:2310:81:-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;11341:2310:81;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;12249:559::-;;;-1:-1:-1;12383:12:81;11341:2310;;;;;12529:149;;12573:64;;;;12529:149;;;;;;;11341:2310;;;;;;;12529:149;;;;;:::i;:::-;11341:2310;;716:88:82;;11341:2310:81;716:88:82;;;;;;;;;783:4;12529:149:81;716:88:82;;11341:2310:81;;;;;;;;;;;:::i;:::-;716:88:82;11341:2310:81;716:88:82;11341:2310:81;;716:88:82;;;;;;;;:::i;:::-;698:107;;;;;857:45;698:107;;:::i;:::-;11341:2310:81;;;;857:45:82;;;;;;:::i;:::-;916:8;;912:175;;11341:2310:81;;;12437:293;11341:2310;;12437:293;;;;;;:::i;:::-;12741:61;;;;12249:559;;;:::o;12741:61::-;12774:17;11341:2310;;;;12774:17;11341:2310;;12774:17;;;;;11341:2310;;;;;;;;;;;;12774:17;;;;;;;;;:::i;912:175:82:-;11341:2310:81;;;;944:22:82;;;940:36;;990:87;;11341:2310:81;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;11341:2310:81;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;-1:-1:-1;;;;;11341:2310:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2764:920:76:-;;2978:48;2764:920;;;;2978:48;;;;:::i;:::-;3036:36;;;11341:2310:81;;:::i;:::-;;;;3086:20:76;3082:107;;2764:920;3216:11;;;;:193;;;;;2764:920;3216:394;;;;2764:920;3199:455;;;;;;2764:920;:::o;3199:455::-;3635:8;-1:-1:-1;3635:8:76;:::o;3216:394::-;3553:39;;;;;3430:180;3553:39;;;11341:2310:81;;;;;;;;;;3430:180:76;;467:2:88;11341:2310:81;3430:180:76;;;;;:::i;:::-;;11341:2310:81;3444:31:76;-1:-1:-1;;;;;11341:2310:81;3430:180:76;;;;;;;-1:-1:-1;3430:180:76;;;3216:394;3429:181;;3216:394;;;;;;3430:180;;;;3553:39;3430:180;3553:39;3430:180;;;;;;;:::i;:::-;;;;3216:193;-1:-1:-1;11341:2310:81;;;-1:-1:-1;;;;;;11341:2310:81;3248:161:76;3354:37;;;11341:2310:81;3248:161:76;11341:2310:81;;;;;;;;;;3248:161:76;;;;;;;:::i;:::-;;11341:2310:81;3262:29:76;-1:-1:-1;;;;;11341:2310:81;3248:161:76;;;;;;;-1:-1:-1;3248:161:76;;;3216:193;3247:162;;3216:193;;;3248:161;;;;;;;;;;;;;;:::i;:::-;;;;3082:107;3139:39;;;;;;;;;;;;;:::i;:::-;3082:107;;;;;11341:2310:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;8889:1:86;11341:2310:81;;;;;;;:::o;:::-;;:::i;3740:389:76:-;3918:5;11341:2310:81;;;-1:-1:-1;;;3853:71:76;;;-1:-1:-1;;;;;11341:2310:81;;;3853:71:76;;;11341:2310:81;;;;;;;;3740:389:76;;11341:2310:81;3853:71:76;;11341:2310:81;;3853:71:76;11341:2310:81;;;3867:29:76;11341:2310:81;;3853:71:76;;;;;;;3918:5;3853:71;;;3740:389;3852:72;;11341:2310:81;;;3852:181:76;;3740:389;3835:242;;;;;;4094:28;;;:::i;3835:242::-;4058:8;;3918:5;4058:8;:::o;3852:181::-;11341:2310:81;;3945:88:76;;;-1:-1:-1;;;;;11341:2310:81;;3853:71:76;3945:88;;11341:2310:81;467:2:88;11341:2310:81;;;;;;;;-1:-1:-1;11341:2310:81;;;;;;;;3959:31:76;11341:2310:81;3945:88:76;;;;;;;3918:5;3945:88;;;3852:181;3944:89;;;3852:181;;;;;3945:88;;;;;;-1:-1:-1;3945:88:76;;;;;;:::i;:::-;;;;;3853:71;;;;;;;;;;;;;;:::i;:::-;;;;4148:103:23;966:10:27;-1:-1:-1;11341:2310:81;;;;;;;;;885:35:80;;11341:2310:81;;3901:31:23;11341:2310:81;;4468:23:23;4464:108;;4148:103;:::o;:::-;-1:-1:-1;11341:2310:81;;;-1:-1:-1;;;;;;;;;;;11341:2310:81;;;;;;;;966:10:27;11341:2310:81;;;;;;;;;3901:31:23;11341:2310:81;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11341:2310:81;;-1:-1:-1;11341:2310:81;;;-1:-1:-1;11341:2310:81;:::o;:::-;;:::i;:::-;;;;;-1:-1:-1;;;11341:2310:81;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11341:2310:81;;;;;;;;:::o;6246:584:86:-;;;;;6360:12;;;11341:2310:81;;;6360:24:86;;6356:75;;6246:584;6474:30;;;;;:::i;:::-;11341:2310:81;;;;;;6578:12:86;;;;:::i;:::-;6604:24;;;;6246:584;-1:-1:-1;6600:188:86;;;-1:-1:-1;;;;;11341:2310:81;;;;;;;6644:21:86;;;:29;:21;;:::i;:29::-;6798:25;6246:584;:::o;6600:188::-;6753:24;;11341:2310:81;;8167:38:60;;-1:-1:-1;;;;;11341:2310:81;;;;;8167:38:60;:::i;:::-;6753:24:86;;;:::i;6604:::-;11341:2310:81;;;;;;6614:14:86;;-1:-1:-1;6604:24:86;;;6356:75;-1:-1:-1;;;11341:2310:81;;;;;;6360:12:86;11341:2310:81;;;;;;;:::i;:::-;;;;;;;;;;;;;;6356:75:86;;;11341:2310:81;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;8406:869:86:-;;;11341:2310:81;;8620:15:86;8578:11;8645:18;8678:7;8684:1;8678:7;;8674:241;;8406:869;8939:60;;;;;:::i;:::-;9014:8;;;9010:62;;9252:15;9259:7;11341:2310:81;9219:31:86;11341:2310:81;9130:48:86;9170:7;;;:::i;:::-;9130:48;13267:109;;;;;;13089:293;;9130:48;11341:2310:81;:::i;:::-;;9176:1:86;11341:2310:81;9232:17:86;11341:2310:81;;;;;;;;9232:17:86;;11341:2310:81;-1:-1:-1;;;;;11341:2310:81;;;;9219:12:86;;:31;:::i;:::-;11341:2310:81;;;;;;;;;9259:7:86;;:::i;:::-;11341:2310:81;;;;9252:15:86;9176:1;;9188:80;;8406:869::o;9010:62::-;8578:11;;-1:-1:-1;8578:11:86;;-1:-1:-1;8578:11:86;;;;9038:23::o;8674:241::-;8721:14;;;;;:::i;:::-;11341:2310:81;;;;;;;8939:60:86;13267:109;;8578:11;13267:109;8753:55;8759:49;13267:109;;8578:11;13267:109;;11341:2310:81;;;;;;8759:49:86;11341:2310:81;;;;8753:55:86;11341:2310:81;;;8753:55:86;13267:109;;;8828:10;8749:156;8674:241;;8749:156;8883:7;;;;;;:::i;:::-;8749:156;8674:241;;3326:384:28;-1:-1:-1;;;;;;;;;;;1847:1:28;11341:2310:81;;3526:20:28;3522:88;;1847:1;11341:2310:81;;3326:384:28:o;3522:88::-;11341:2310:81;;-1:-1:-1;;;3569:30:28;;;;;3701:308:80;;11341:2310:81;-1:-1:-1;11341:2310:81;3832:13:80;11341:2310:81;;;-1:-1:-1;11341:2310:81;11124:30:86;;;;:::i;:::-;11173;;;-1:-1:-1;11173:30:86;;;;11182:17;;-1:-1:-1;;;;;11341:2310:81;;11182:12:86;;:17;:::i;:::-;11341:2310:81;;;3832:13:80;11341:2310:81;;11173:30:86;3890::80;;;11173::86;3886:117:80;;;;3701:308;;:::o;3886:117::-;3936:56;11341:2310:81;-1:-1:-1;11341:2310:81;3832:13:80;11341:2310:81;;;-1:-1:-1;11341:2310:81;819:34:62;837:15;819:34;:::i;3936:56:80:-;3701:308;;:::o;3890:30::-;3900:20;;-1:-1:-1;3890:30:80;;;;11173::86;;;-1:-1:-1;11173:30:86;;7270:387:23;-1:-1:-1;;;;;11341:2310:81;;-1:-1:-1;11341:2310:81;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2887:71:23;11341:2310:81;;;;-1:-1:-1;11341:2310:81;;;;;;;;;;;-1:-1:-1;;;;;11341:2310:81;;;;;;;;;;-1:-1:-1;;11341:2310:81;7509:4:23;11341:2310:81;;;966:10:27;;-1:-1:-1;;;;;11341:2310:81;-1:-1:-1;7532:40:23;-1:-1:-1;;7532:40:23;7509:4;7586:11;:::o;7270:387::-;-1:-1:-1;;;;;11341:2310:81;;-1:-1:-1;11341:2310:81;;;;;;;;;1356:26:76;;-1:-1:-1;;;;;;;;;;;2887:71:23;11341:2310:81;;3901:31:23;11341:2310:81;;;;-1:-1:-1;11341:2310:81;;;;;;;;;;;-1:-1:-1;;;;;11341:2310:81;;;;;;;;;;-1:-1:-1;;11341:2310:81;7509:4:23;11341:2310:81;;;966:10:27;;-1:-1:-1;;;;;11341:2310:81;;7532:40:23;-1:-1:-1;;7532:40:23;7509:4;7586:11;:::o;7432:219::-;7628:12;;;-1:-1:-1;7628:12:23;:::o;7270:387::-;-1:-1:-1;;;;;11341:2310:81;;-1:-1:-1;11341:2310:81;;;;;;;;;885:35:80;;-1:-1:-1;;;;;;;;;;;2887:71:23;11341:2310:81;;3901:31:23;11341:2310:81;7270:387:23;-1:-1:-1;11341:2310:81;;;-1:-1:-1;;;;;;;;;;;11341:2310:81;;;;;;;;-1:-1:-1;;;;;11341:2310:81;;;;;;;;;;;;3901:31:23;11341:2310:81;7892:388:23;-1:-1:-1;11341:2310:81;;;-1:-1:-1;;;;;;;;;;;11341:2310:81;;;;;;;;-1:-1:-1;;;;;11341:2310:81;;;;;;;;;;;;;;;;-1:-1:-1;11341:2310:81;;;;;;;;;;;-1:-1:-1;;;;;11341:2310:81;;;;;;;;;;-1:-1:-1;;11341:2310:81;;;966:10:27;;-1:-1:-1;;;;;11341:2310:81;;8155:40:23;-1:-1:-1;;8155:40:23;11341:2310:81;8209:11:23;:::o;10580:184:86:-;11341:2310:81;;10303:8:60;;;:63;-1:-1:-1;10303:63:60;-1:-1:-1;;;;;11341:2310:81;;10726:7:86;11341:2310:81;;10736:12:86;:17;:12;;:17;:::i;10303:63:60:-;11341:2310:81;;;;;;;;;;13267:109:86;-1:-1:-1;13267:109:86;;-1:-1:-1;13267:109:86;;;11341:2310:81;;;10303:63:60;;11341:2310:81;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;11341:2310:81;;;;;;;;:::i;5907:716:76:-;6030:34;5907:716;6030:34;;;;:::i;:::-;11341:2310:81;;-1:-1:-1;;;6080:41:76;;-1:-1:-1;;;;;11341:2310:81;;;6080:41:76;;;11341:2310:81;;;;;6080:41:76;11341:2310:81;;;6090:13:76;11341:2310:81;;6080:41:76;;;;;;;-1:-1:-1;6080:41:76;;;5907:716;6079:42;;6075:90;;6266:27;11341:2310:81;2540:111:28;6210:14:76;11341:2310:81;2540:111:28;;;:::i;:::-;11341:2310:81;;;;;;-1:-1:-1;;;;;11341:2310:81;;-1:-1:-1;11341:2310:81;;;-1:-1:-1;11341:2310:81;;6210:14:76;6266:27;:::i;:::-;6080:41;6311:15;;11341:2310:81;;;;-1:-1:-1;;;;;;11341:2310:81;-1:-1:-1;;;;;11341:2310:81;;;;;;;;;;;-1:-1:-1;;;;;11341:2310:81;;;;6337:143:76;;5907:716;-1:-1:-1;6493:28:76;11341:2310:81;-1:-1:-1;;;;;11341:2310:81;;;;;;;6489:128:76;;5907:716;:::o;6489:128::-;6551:55;;;:::i;:::-;;5907:716::o;6337:143::-;6404:65;;;:::i;:::-;;6337:143;;;6075:90;11341:2310:81;;-1:-1:-1;;;6144:10:76;;6080:41;;6144:10;6080:41;;;;;;;;;;;;;;:::i;:::-;;;;11341:2310:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::o;7558:604:86:-;;11341:2310:81;;7686:17:86;7682:83;;11341:2310:81;7789:27:86;11341:2310:81;7789:27:86;11341:2310:81;;7789:27:86;;;;;;:::i;:::-;7860:14;;;;;:::i;:::-;11341:2310:81;;;;;;;;;;;;;;;;7888:22:86;;;7884:77;;7975:21;-1:-1:-1;7975:84:86;;;;7558:604;7971:139;;;;8127:28;;;;:::i;7971:139::-;8082:17;;7789:27;8082:17;11341:2310:81;8075:24:86;:::o;7975:84::-;11341:2310:81;;;8009:16:86;11341:2310:81;;8009:16:86;:::i;:::-;11341:2310:81;;;8001:24:86;:57;;;;;7975:84;;;;;;;8001:57;8029:29;8038:8;;;8029:18;8038:8;8029:23;8038:8;;:::i;:::-;8029:18;;:::i;:::-;11341:2310:81;;;;;8029:29:86;;8001:57;;;;7884:77;7933:17;;;;;7789:27;7933:17;11341:2310:81;7926:24:86;:::o;7682:83::-;7726:28;;;;:::i;11341:2310:81:-;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;11341:2310:81;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;11341:2310:81;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;2737:699:80:-;;;;;11341:2310:81;;:::i;:::-;;;;2978:16:80;2974:92;;2737:699;-1:-1:-1;;3080:8:80;11341:2310:81;-1:-1:-1;;;;;11341:2310:81;;;;;3080:21:80;3076:85;;-1:-1:-1;11341:2310:81;3218:67:80;;11341:2310:81;;3257:27:80;;3218;;:13;;-1:-1:-1;;;;;11341:2310:81;3218:13:80;11341:2310:81;3218:27:80;3257;;;;11341:2310:81;;;;;;;;;;;3218:67:80;;;3080:8;3218:67;;;:::i;:::-;;;;;;;;;;3192:192;3218:67;-1:-1:-1;3218:67:80;;;2737:699;3341:28;3303:67;3341:28;;11341:2310:81;3341:28:80;;;3303:67;;:::i;:::-;3192:192;;:::i;:::-;3398:21;;2737:699;:::o;3218:67::-;3303;3218;;;;3257:27;3218:67;3257:27;3218:67;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;3076:85;-1:-1:-1;;3128:21:80;;-1:-1:-1;;3117:33:80:o;2974:92::-;3024:31;;;;;;;;;;;;;:::i;:::-;2974:92;;;;;3442:253;3552:8;11341:2310:81;-1:-1:-1;;;;;11341:2310:81;;;;;;;3552:21:80;3548:60;;3634:27;3552:8;11341:2310:81;-1:-1:-1;11341:2310:81;;;;;;;;;;;3634:27:80;;;;;;;;;3625:63;3634:27;-1:-1:-1;3634:27:80;;;3442:253;2193:25;;:34;:25;11341:2310:81;;2193:13:80;11341:2310:81;;;;;;;2193:25:80;:34;:::i;3634:27::-;2193:34;3634:27;;;;2193:25;3634:27;;;;;;;;;;;:::i;:::-;;;;;;14291:213:58;11341:2310:81;14369:24:58;;;;14365:103;;11341:2310:81;14291:213:58;:::o;14365:103::-;11341:2310:81;;;;14416:41:58;;;;;;14447:2;14416:41;;;11341:2310:81;;;;;14416:41:58;10552:388:60;11341:2310:81;;10728:8:60;;;10752:20;;10690:17;10752:20;10690:17;10752:20;10690:17;10752:20;:::o;10724:210::-;11341:2310:81;;;;;;;;;;;13267:109:86;10690:17:60;13267:109:86;;10690:17:60;13267:109:86;;;11341:2310:81;:::i;:::-;;;;;;;13267:109:86;11341:2310:81;;;;;10911:11:60;;11341:2310:81;;10886:37:60;10870:1;10886:37;;;:::o;8587:1642:57:-;8658:6;;8654:45;;9401:7;10201:10;10142:26;10093;10044;9995;9946;9897;9848;11341:2310:81;10189:23:57;9401:7;8663:1;11341:2310:81;;;;10826:16:57;10822:99;;8587:1642;11341:2310:81;;;;10938:15:57;10934:96;;8587:1642;11341:2310:81;;;;11047:15:57;11043:96;;8587:1642;11341:2310:81;;;;11156:15:57;11152:96;;8587:1642;11341:2310:81;;;;11265:14:57;11261:93;;8587:1642;11341:2310:81;;;;11371:14:57;11367:93;;8587:1642;11341:2310:81;;;;11477:14:57;11473:93;;8587:1642;11341:2310:81;;;11579:64:57;;8587:1642;11341:2310:81;;;9858:10:57;;;;:::i;:::-;11341:2310:81;;;;;9848:26:57;9907:10;;;;:::i;9897:26::-;9956:10;;;;:::i;9946:26::-;10005:10;;;;:::i;9995:26::-;10054:10;;;;:::i;10044:26::-;10103:10;;;;:::i;10093:26::-;10152:10;;;;:::i;10142:26::-;10201:10;;;:::i;11579:64::-;11341:2310:81;;11579:64:57;;11473:93;11341:2310:81;11511:11:57;;11341:2310:81;;11473:93:57;;;;11367;11341:2310:81;11405:11:57;;11341:2310:81;;11367:93:57;;;;11261;11341:2310:81;11299:11:57;;11341:2310:81;;11261:93:57;;;;11152:96;11341:2310:81;11191:12:57;;11341:2310:81;;11152:96:57;;;;11043;11341:2310:81;11082:12:57;;11341:2310:81;;11043:96:57;;;;10934;11341:2310:81;10973:12:57;;11341:2310:81;;10934:96:57;;;;10822:99;10862:13;;;11341:2310:81;10822:99:57;;;;12497:447:86;;12694:10;;;;;;12926:11;;;12497:447;:::o;12687:230::-;12734:23;;;;;;;:::i;:::-;13267:109;;-1:-1:-1;13267:109:86;11341:2310:81;13267:109:86;;;-1:-1:-1;13267:109:86;;11341:2310:81;;;;;-1:-1:-1;12771:136:86;11341:2310:81;;;12830:10:86;12771:136;;12687:230;;;;12771:136;11341:2310:81;;12891:1:86;11341:2310:81;;;;;;12771:136:86;11341:2310:81;;:::i;6893:76:25:-;;;:::i;:::-;;;:::i;:::-;1805:1:28;-1:-1:-1;;;;;;;;;;;11341:2310:81;6893:76:25:o;11341:2310:81:-;;;;;;;:::i;:::-;-1:-1:-1;11341:2310:81;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;11341:2310:81;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11341:2310:81;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::o;4015:918:80:-;11341:2310:81;;:::i;:::-;;4163:30:80;11341:2310:81;;4163:30:80;;;;;;;;;;;:::i;:::-;4208:17;;11341:2310:81;-1:-1:-1;;;;;11341:2310:81;;4208:17:80;11341:2310:81;;4208:54:80;;:103;;4015:918;4204:161;;4418:15;;;;11341:2310:81;;;;-1:-1:-1;;;4380:54:80;;-1:-1:-1;;;;;11341:2310:81;;;4380:54:80;;;;11341:2310:81;;;;4380:54:80;4418:15;;;;11341:2310:81;;;;;;;;4390:17:80;11341:2310:81;4380:54:80;;;;;;;4208:17;4380:54;;;4015:918;4379:55;;4375:106;;4496:9;;4511:33;;;4208:17;4553:3;4511:33;;11341:2310:81;;4507:44:80;;;;;4576:36;;;:50;:36;;:::i;:::-;11341:2310:81;-1:-1:-1;;;;;11341:2310:81;;;4576:50:80;;4572:119;;4709:73;4710:72;4745:36;;:33;;;:36;:::i;:::-;4710:72;:::i;:::-;4709:73;;11341:2310:81;4709:73:80;4705:140;;11341:2310:81;;4496:9:80;;4705:140;11341:2310:81;;-1:-1:-1;;;4809:21:80;;11341:2310:81;;4809:21:80;4572:119;11341:2310:81;;-1:-1:-1;;;4653:23:80;;11341:2310:81;;4653:23:80;4507:44;-1:-1:-1;;11341:2310:81;;4380:54:80;11341:2310:81;;-1:-1:-1;;;;;;11341:2310:81;-1:-1:-1;;;;;11341:2310:81;;;;;;;;;;-1:-1:-1;4865:26:80;;-1:-1:-1;;11341:2310:81;4865:26:80;4909:17;4015:918;:::o;4375:106::-;4418:15;11341:2310:81;-1:-1:-1;;;4457:13:80;;4380:54;;4457:13;4380:54;;;;;;;;;;;;;;:::i;:::-;;;;4204:161;11341:2310:81;;-1:-1:-1;;;4334:20:80;;;;;4208:103;4266:33;;;;;11341:2310:81;4266:45:80;4208:103;;6999:207:86;;11341:2310:81;;9594:15:60;-1:-1:-1;9619:18:60;9652:7;9658:1;9652:7;;9648:234;;6999:207:86;9906:53:60;;;;;:::i;:::-;9977:8;;;:63;-1:-1:-1;9977:63:60;;-1:-1:-1;;;;;11341:2310:81;;7168:7:86;11341:2310:81;;;7178:12:86;;:17;:12;;:17;:::i;9977:63:60:-;9992:41;10025:7;9992:48;10025:7;;:::i;:::-;9992:41;13267:109:86;;;;;;13089:293;;9992:41:60;11341:2310:81;;;;;9992:48:60;9977:63;;;9648:234;9695:14;;;;;:::i;:::-;11341:2310:81;;;;;;;9906:53:60;13267:109:86;;-1:-1:-1;13267:109:86;11341:2310:81;13267:109:86;;;-1:-1:-1;13267:109:86;;11341:2310:81;;;;;9727:48:60;9723:149;11341:2310:81;;;9795:10:60;9723:149;9648:234;;9723:149;9850:7;;;;;;:::i;:::-;9723:149;9648:234;;11341:2310:81;;;;;;;:::i;:::-;-1:-1:-1;11341:2310:81;;;;;;;:::o;11486:272:86:-;;11341:2310:81;11308:22:60;11718:31:86;11486:272;11341:2310:81;;:::i;:::-;;;;:::i;:::-;;11308:22:60;;:::i;:::-;11341:2310:81;;:::i;:::-;;11718:12:86;11341:2310:81;;;;;11731:17:86;11341:2310:81;;;;;11731:17:86;;11341:2310:81;;11718:12:86;;:31;:::i;:::-;11341:2310:81;;;;;;;;;:::i;:::-;;;;;;11731:17:86;11672:79;;11341:2310:81;11486:272:86;:::o;2557:104:57:-;;2641:5;;;;;;:13;2557:104;:::o;2641:13::-;;;2557:104;:::o;11341:2310:81:-;;;-1:-1:-1;;;11341:2310:81;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;11341:2310:81;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;11513:870:60;11341:2310:81;;11513:870:60;;;11341:2310:81;11513:870:60;11672:7;;;;11341:2310:81;11775:28:60;11795:7;;;:::i;11341:2310:81:-;;;;;;;;;;;;;;;;11877:15:60;-1:-1:-1;11873:91:60;;11341:2310:81;;12233:11:60;11341:2310:81;;;12027:16:60;11341:2310:81;;;;;;;12027:16:60;;;;12083:7;12063:43;12083:7;;12063:28;12083:7;;:::i;:::-;12063:28;13267:109:86;;;;;;13089:293;;12063:28:60;11341:2310:81;;;;;;;;;;;;;;;;;12063:43:60;12233:11;11341:2310:81;-1:-1:-1;;;;;11341:2310:81;;;12023:189:60;11341:2310:81;;;12145:52:60;11341:2310:81;12155:41:60;11341:2310:81;;:::i;:::-;;;;;;;;12155:41:60;-1:-1:-1;;;;;11341:2310:81;;12155:41:60;;;11341:2310:81;12145:52:60;:::i;:::-;12023:189;;11873:91;11341:2310:81;;-1:-1:-1;;;11919:30:60;;;;;11668:709;12283:52;11341:2310:81;;12293:41:60;11341:2310:81;;:::i;12293:41:60:-;-1:-1:-1;;;;;11341:2310:81;;12293:41:60;;;11341:2310:81;12145:52:60;:::i;12283:::-;11678:1;12349:17;;:::o;2774:153:57:-;;2900:5;;;2910;;11341:2310:81;;;;;;;;;2774:153:57;:::o;7084:141:25:-;11341:2310:81;-1:-1:-1;;;;;;;;;;;11341:2310:81;;;;7150:18:25;7146:73;;7084:141::o;7146:73::-;11341:2310:81;;-1:-1:-1;;;7191:17:25;;;;;12736:433:60;;12919:10;;;;;;13151:11;;;12736:433;:::o;12912:230::-;12959:23;;;;;;;:::i;:::-;13267:109:86;;-1:-1:-1;13267:109:86;11341:2310:81;13267:109:86;;;-1:-1:-1;13267:109:86;;11341:2310:81;;;;;-1:-1:-1;12996:136:60;11341:2310:81;;;13055:10:60;12996:136;;12912:230;;;;12996:136;11341:2310:81;;13116:1:60;11341:2310:81;;;;;;12996:136:60;11341:2310:81;;:::i","linkReferences":{},"immutableReferences":{"57808":[{"start":1956,"length":32}],"57811":[{"start":3948,"length":32}],"58762":[{"start":1429,"length":32},{"start":4005,"length":32}],"58765":[{"start":959,"length":32},{"start":8857,"length":32}],"58768":[{"start":1027,"length":32},{"start":6514,"length":32},{"start":6817,"length":32}],"58771":[{"start":1299,"length":32},{"start":6361,"length":32},{"start":6943,"length":32}],"60687":[{"start":3534,"length":32},{"start":11024,"length":32}],"61955":[{"start":3369,"length":32},{"start":5274,"length":32}],"61957":[{"start":2830,"length":32},{"start":5435,"length":32}],"61959":[{"start":3696,"length":32}],"62368":[{"start":1164,"length":32}]}},"methodIdentifiers":{"BASE_DELEGATOR_HINTS()":"79d89614","DEFAULT_ADMIN_ROLE()":"a217fddf","FACTORY()":"2dd31000","HOOK_GAS_LIMIT()":"ff54740f","HOOK_RESERVE()":"557cab44","HOOK_SET_ROLE()":"6679191e","NETWORK_LIMIT_SET_ROLE()":"7d24bb27","NETWORK_REGISTRY()":"c0cd7c3e","OPERATOR_NETWORK_OPT_IN_SERVICE()":"1a80e500","OPERATOR_REGISTRY()":"83ce0322","OPERATOR_VAULT_OPT_IN_SERVICE()":"128e5d82","OPT_IN_SERVICE_HINTS()":"9b656b22","TYPE()":"bb24fe8a","VAULT_FACTORY()":"103f2907","VAULT_HINTS()":"45e78fcb","VERSION()":"ffa1ad74","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","hook()":"7f5a7c7b","initialize(bytes)":"439fab91","maxNetworkLimit(bytes32)":"d15b740e","networkLimit(bytes32)":"3eb22c0f","networkLimitAt(bytes32,uint48,bytes)":"5d32a1c9","networkLimitHint(address,bytes32,uint48)":"da749d2b","networkLimitHintInternal(bytes32,uint48)":"197aa7ea","onSlash(bytes32,address,uint256,uint48,bytes)":"e49561ee","operator()":"570ca735","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","setHook(address)":"3dfd3873","setMaxNetworkLimit(uint96,uint256)":"23f752d5","setNetworkLimit(bytes32,uint256)":"02145348","stake(bytes32,address)":"fd4d447c","stakeAt(bytes32,address,uint48,bytes)":"e02f6937","stakeHints(address,bytes32,address,uint48)":"25dc9708","staticDelegateCall(address,bytes)":"9f86fd85","supportsInterface(bytes4)":"01ffc9a7","vault()":"fbfa77cf"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"baseDelegatorHints\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"vaultHints\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"optInServiceHints\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadySet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CheckpointUnorderedInsertion\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DuplicateRoleHolder\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedsMaxNetworkLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExternalCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientHookGas\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingRoleHolders\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotNetwork\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotOperator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotSlasher\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressRoleHolder\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"}],\"name\":\"OnSlash\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"hook\",\"type\":\"address\"}],\"name\":\"SetHook\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"SetMaxNetworkLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"SetNetworkLimit\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BASE_DELEGATOR_HINTS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HOOK_GAS_LIMIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HOOK_RESERVE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HOOK_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NETWORK_LIMIT_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NETWORK_REGISTRY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_NETWORK_OPT_IN_SERVICE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_REGISTRY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_VAULT_OPT_IN_SERVICE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPT_IN_SERVICE_HINTS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TYPE\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VAULT_FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VAULT_HINTS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VERSION\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hook\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"}],\"name\":\"maxNetworkLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"}],\"name\":\"networkLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"networkLimitAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"networkLimitHint\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"networkLimitHintInternal\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"exists\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"hint\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"hook_\",\"type\":\"address\"}],\"name\":\"setHook\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint96\",\"name\":\"identifier\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"setMaxNetworkLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"setNetworkLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"stake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hints\",\"type\":\"bytes\"}],\"name\":\"stakeAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"stakeHints\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"staticDelegateCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"CheckpointUnorderedInsertion()\":[{\"details\":\"A value was attempted to be inserted on a past checkpoint.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"OnSlash(bytes32,address,uint256,uint48)\":{\"params\":{\"amount\":\"amount of the collateral to be slashed\",\"captureTimestamp\":\"time point when the stake was captured\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"SetHook(address)\":{\"params\":{\"hook\":\"address of the hook\"}},\"SetMaxNetworkLimit(bytes32,uint256)\":{\"params\":{\"amount\":\"new maximum subnetwork's limit (how much stake the subnetwork is ready to get)\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"SetNetworkLimit(bytes32,uint256)\":{\"params\":{\"amount\":\"new subnetwork's limit (how much stake the vault curator is ready to give to the subnetwork)\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}}},\"kind\":\"dev\",\"methods\":{\"VERSION()\":{\"details\":\"Must return 1 for this one.\",\"returns\":{\"_0\":\"version of the delegator\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize(bytes)\":{\"params\":{\"data\":\"some data to use\"}},\"networkLimit(bytes32)\":{\"params\":{\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"_0\":\"limit of the subnetwork\"}},\"networkLimitAt(bytes32,uint48,bytes)\":{\"params\":{\"hint\":\"hint for checkpoint index\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\",\"timestamp\":\"time point to get the subnetwork limit at\"},\"returns\":{\"_0\":\"limit of the subnetwork at the given timestamp\"}},\"onSlash(bytes32,address,uint256,uint48,bytes)\":{\"details\":\"Only the vault's slasher can call this function.\",\"params\":{\"amount\":\"amount of the collateral slashed\",\"captureTimestamp\":\"time point when the stake was captured\",\"data\":\"some additional data\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"setHook(address)\":{\"details\":\"Only a HOOK_SET_ROLE holder can call this function. The hook can have arbitrary logic under certain functions, however, it doesn't affect the stake guarantees.\",\"params\":{\"hook\":\"address of the hook\"}},\"setMaxNetworkLimit(uint96,uint256)\":{\"details\":\"Only a network can call this function.\",\"params\":{\"amount\":\"new maximum subnetwork's limit\"}},\"setNetworkLimit(bytes32,uint256)\":{\"details\":\"Only a NETWORK_LIMIT_SET_ROLE holder can call this function.\",\"params\":{\"amount\":\"new limit of the subnetwork\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"stake(bytes32,address)\":{\"details\":\"Warning: this function is not safe to use for stake capturing, as it can change by the end of the block.\",\"params\":{\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"_0\":\"slashable stake until the end of the next epoch\"}},\"stakeAt(bytes32,address,uint48,bytes)\":{\"details\":\"Warning: it is not safe to use timestamp >= current one for the stake capturing, as it can change later.\",\"params\":{\"hints\":\"hints for the checkpoints' indexes\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\",\"timestamp\":\"time point to capture the stake at\"},\"returns\":{\"_0\":\"slashable stake at the given timestamp until the end of the consequent epoch\"}},\"staticDelegateCall(address,bytes)\":{\"details\":\"It allows to use this contract's storage on-chain.\",\"params\":{\"data\":\"data to make a delegatecall with\",\"target\":\"address of the contract to make a delegatecall to\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"events\":{\"OnSlash(bytes32,address,uint256,uint48)\":{\"notice\":\"Emitted when a slash happens.\"},\"SetHook(address)\":{\"notice\":\"Emitted when a hook is set.\"},\"SetMaxNetworkLimit(bytes32,uint256)\":{\"notice\":\"Emitted when a subnetwork's maximum limit is set.\"},\"SetNetworkLimit(bytes32,uint256)\":{\"notice\":\"Emitted when a subnetwork's limit is set.\"}},\"kind\":\"user\",\"methods\":{\"FACTORY()\":{\"notice\":\"Get the factory's address.\"},\"HOOK_GAS_LIMIT()\":{\"notice\":\"Get a gas limit for the hook.\"},\"HOOK_RESERVE()\":{\"notice\":\"Get a reserve gas between the gas limit check and the hook's execution.\"},\"HOOK_SET_ROLE()\":{\"notice\":\"Get a hook setter's role.\"},\"NETWORK_LIMIT_SET_ROLE()\":{\"notice\":\"Get a subnetwork limit setter's role.\"},\"NETWORK_REGISTRY()\":{\"notice\":\"Get the network registry's address.\"},\"OPERATOR_NETWORK_OPT_IN_SERVICE()\":{\"notice\":\"Get the operator-network opt-in service's address.\"},\"OPERATOR_REGISTRY()\":{\"notice\":\"Get the operator registry's address.\"},\"OPERATOR_VAULT_OPT_IN_SERVICE()\":{\"notice\":\"Get the operator-vault opt-in service's address.\"},\"TYPE()\":{\"notice\":\"Get the entity's type.\"},\"VAULT_FACTORY()\":{\"notice\":\"Get the vault factory's address.\"},\"VERSION()\":{\"notice\":\"Get a version of the delegator (different versions mean different interfaces).\"},\"hook()\":{\"notice\":\"Get the hook's address.\"},\"initialize(bytes)\":{\"notice\":\"Initialize this entity contract by using a given data.\"},\"maxNetworkLimit(bytes32)\":{\"notice\":\"Get a particular subnetwork's maximum limit (meaning the subnetwork is not ready to get more as a stake).\"},\"networkLimit(bytes32)\":{\"notice\":\"Get a subnetwork's limit (how much stake the vault curator is ready to give to the subnetwork).\"},\"networkLimitAt(bytes32,uint48,bytes)\":{\"notice\":\"Get a subnetwork's limit at a given timestamp using a hint (how much stake the vault curator is ready to give to the subnetwork).\"},\"onSlash(bytes32,address,uint256,uint48,bytes)\":{\"notice\":\"Called when a slash happens.\"},\"operator()\":{\"notice\":\"Get an operator managing the vault's funds.\"},\"setHook(address)\":{\"notice\":\"Set a new hook.\"},\"setMaxNetworkLimit(uint96,uint256)\":{\"notice\":\"Set a maximum limit for a subnetwork (how much stake the subnetwork is ready to get). identifier identifier of the subnetwork\"},\"setNetworkLimit(bytes32,uint256)\":{\"notice\":\"Set a subnetwork's limit (how much stake the vault curator is ready to give to the subnetwork).\"},\"stake(bytes32,address)\":{\"notice\":\"Get a stake that a given subnetwork will be able to slash for a certain operator until the end of the next epoch (if no cross-slashing and no slashings by the subnetwork).\"},\"stakeAt(bytes32,address,uint48,bytes)\":{\"notice\":\"Get a stake that a given subnetwork could be able to slash for a certain operator at a given timestamp until the end of the consequent epoch using hints (if no cross-slashing and no slashings by the subnetwork).\"},\"staticDelegateCall(address,bytes)\":{\"notice\":\"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data).\"},\"vault()\":{\"notice\":\"Get the vault's address.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/hints/DelegatorHints.sol\":\"OperatorSpecificDelegatorHints\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://942dad22fbdc1669f025540ba63aa3ccfad5f8458fc5d4525b31ebf272e7af45\",\"dweb:/ipfs/Qmdo4X2M82aM3AMoW2kf2jhYkSCyC4T1pHNd6obdsDFnAB\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45\",\"dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26\",\"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol\":{\"keccak256\":\"0x85a45f3f10014a0f8be41157a32b6a5f905753ea64a4b64e29fc12b7deeecf39\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c3c74009ce36136b36c77c23935b8e4a7b4f253be2da2be4fb4a916b1ce43743\",\"dweb:/ipfs/QmcH36v3iN7SJJuF73AunLR2LtNxhVJ1wm63ph4dPZ4pcL\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x18a7171df639a934592915a520ecb97c5bbc9675a1105607aac8a94e72bf62c6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7478e1f13da69a2867ccd883001d836b75620362e743f196376d63ed0c422a1c\",\"dweb:/ipfs/QmWywcQ9TNfwtoqAxbn25d8C5VrV12PrPS9UjtGe6pL2BA\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xeed0a08b0b091f528356cbc7245891a4c748682d4f6a18055e8e6ca77d12a6cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba80ba06c8e6be852847e4c5f4492cef801feb6558ae09ed705ff2e04ea8b13c\",\"dweb:/ipfs/QmXRJDv3xHLVQCVXg1ZvR35QS9sij5y9NDWYzMfUfAdTHF\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x999f705a027ed6dc2d4e0df2cc4a509852c6bfd11de1c8161bf88832d0503fd0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0798def67258d9a3cc20b2b4da7ebf351a5cefe0abfdd665d2d81f8e32f89b21\",\"dweb:/ipfs/QmPEvJosnPfzHNjKvCv2D3891mA2Ww8eUwkqrxBjuYdHCt\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0xba333517a3add42cd35fe877656fc3dfcc9de53baa4f3aabbd6d12a92e4ea435\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ceacff44c0fdc81e48e0e0b1db87a2076d3c1fb497341de077bf1da9f6b406c\",\"dweb:/ipfs/QmRUo1muMRAewxrKQ7TkXUtknyRoR57AyEkoPpiuZQ8FzX\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/SignatureChecker.sol\":{\"keccak256\":\"0x6b11eb41a228cca35d4b662b4df69fcd75192851365102690f57b2ac01e83fe6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab006a2983ed350d2af21ddcdd835dcae3b8340086cc4d088460da5abd041f69\",\"dweb:/ipfs/QmbEacDhkJZiGrgzLjB4pNtE8Z1uudjDw1DvcDUTVQFsLG\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c\",\"dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0xbdc5e074d7dd6678f67e92b1a51a20226801a407b0e1af3da367c5d1ff4519ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a36cca6b22fff3db16fc789ff6c60eea71d4b156065d4d0c83a0bc5e91a77a8b\",\"dweb:/ipfs/QmYN3exd5AemxjBrN8XMB1p5LbbE16uC3sjbYjwi8AjcGR\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0xc7755af115020049e4140f224f9ee88d7e1799ffb0646f37bf0df24bf6213f58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f09bf94d5274334ec021f61a04659db303f31e60460e14b709c9bf187740111\",\"dweb:/ipfs/QmNvgomZYUwFAt4cZbPWAiTeSZQreGehY9BK5xyVJsUttb\"]},\"src/contracts/common/Entity.sol\":{\"keccak256\":\"0x3d61a932995b8443381f3950542d388223a2c26dd5d29a3274dea3baa7388bd7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7cdf5f03ca72fd263fd32ff59c8d88ddca911ae83896a287d10772c1bbe9b138\",\"dweb:/ipfs/QmbP84r5BWT1Rn9AYTntWSf3xUMTTCohTZJFhbBhDXFoHa\"]},\"src/contracts/common/MigratableEntity.sol\":{\"keccak256\":\"0x2d736f4dacd5d7e7697503bc426c78b8250fe1694ca157965ec178da6807de58\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f1237acf96b4b9f9b69156e068eddd726a6e15bd8e87a18dc999cd4ba4da069c\",\"dweb:/ipfs/QmS6M8fiFFSeuJ4ZKKq1z8W7w4ybeHQSy5TLASGoc1LVic\"]},\"src/contracts/common/StaticDelegateCallable.sol\":{\"keccak256\":\"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764\",\"dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD\"]},\"src/contracts/delegator/BaseDelegator.sol\":{\"keccak256\":\"0x7c54d491fdd4415b764a9c8defa068e56d4c0c8c9419be0053a1d377669290e8\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://9238bfbad0f6eeb0dc7727724de14380f1980b395902269703d5e2ef07e52e10\",\"dweb:/ipfs/QmPJn1V4HNXcEghYvogGuSTF24dSQUPosR5qtsXcmNqRm3\"]},\"src/contracts/delegator/FullRestakeDelegator.sol\":{\"keccak256\":\"0x0a81c4f8e72914563a9cb771e93acf889c71ea36b7bec040e4eb562b199d5af1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6fc66b6ba02da77046a0bbbd1dd407a62c08f52e04486c9cbd2cb1cca3da555f\",\"dweb:/ipfs/QmZQivK1ZnMxfRQQ5aLpV9co5u55wQVNev5Rg1hzAqxhkE\"]},\"src/contracts/delegator/NetworkRestakeDelegator.sol\":{\"keccak256\":\"0xd3a8e6522f9c6fdcc2da837c9023afd6bdff2bce45a35590320c475519e3636d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://58b17a87f6554f08376f9ea7fedf486a4aa75801bf0ad8b23ff5a46959b6b7a3\",\"dweb:/ipfs/QmSTmNh67tYt8CmjVZb57r8N3qX5yeYdMApKPJm3qvQgQw\"]},\"src/contracts/delegator/OperatorNetworkSpecificDelegator.sol\":{\"keccak256\":\"0x031a10722b9ec49048f0952710401131290adb87e71caf294e864e7ac3b98a16\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://72428febc875134b2f29205e6f294634a1c22a7d5c78d6a9cb2f8196f107c9b5\",\"dweb:/ipfs/QmTPwXR6h5oytckmkLrHdKeEMdphJxceDhYUR4zvQeWAwY\"]},\"src/contracts/delegator/OperatorSpecificDelegator.sol\":{\"keccak256\":\"0x630ce62fa30b9f3349ab7a8cf8dbf041319febc6dd757be2f94d3d25944ed328\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c2ac59d47ce57d2a6819ae9833e1a618a371eccff93eb5ab367b201b01f42bfa\",\"dweb:/ipfs/QmdBpGMBivpNPv2WbH8vnCUy5xkVeaxQvGgqi33vKCz1kA\"]},\"src/contracts/hints/DelegatorHints.sol\":{\"keccak256\":\"0x44aa0c396311a54afbc7c73e8dadeed41e3165a4fd13f712b27d63d50fc3376d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://2f255214f3531fc707d88be0d56a7a0aed4180439316d099d760d9118aa83093\",\"dweb:/ipfs/QmZD1w5p1ukJSXumUAjvxwGmkPhn7vsr21Y2atLGEZR2oi\"]},\"src/contracts/hints/Hints.sol\":{\"keccak256\":\"0x8b565df1ae35993c097a9e642002782a8f451f6fd01809cad6bcd345bdf1b99c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://99a19adb01e350a92f534095b3078229df1f2f83077992d75d58d8684be45971\",\"dweb:/ipfs/QmbmwcuswVbzvwHQFTtrJG86oV98GnfxqYTb8cV8u1acox\"]},\"src/contracts/hints/OptInServiceHints.sol\":{\"keccak256\":\"0x95d9407900d27b9f4a1233b772aeed809c07b2dc5b31cfc9fa77ca26514c49e5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://a13a8877e312d7e6b8b85bde3668c5d84ff5ecc83f762cd573f2b7104c64eb42\",\"dweb:/ipfs/QmYV2J55acuGzCNnS3juABuUHY5U1xc8g8o9jwEyFFdeG5\"]},\"src/contracts/hints/VaultHints.sol\":{\"keccak256\":\"0xccb505b7159b769cc114d67b87c2de6b106557f667fc8f3780114baad5c3c442\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6d0c80a908fc16e96a8b5605a0bd53f9e89ad0ef0a738fbbae80ba4d3160749b\",\"dweb:/ipfs/QmXo5UtWoR8YmunqcbBU8rQMm1nvmvjNPoXcVrDhh4pEwR\"]},\"src/contracts/libraries/Checkpoints.sol\":{\"keccak256\":\"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609\",\"dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE\"]},\"src/contracts/libraries/ERC4626Math.sol\":{\"keccak256\":\"0x8441160513c1cbeb1c3b9ee077bcc7e7ce20006b52a77c8dd39ff0ef89699939\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://943f8cc3e26ddf649f465f40c909819f5c864717c4baa339e9e403b9374a4653\",\"dweb:/ipfs/QmXPxi1sUDsrGprZdUgCzoPEosaZMv9ZhygWQ1vAi1phAB\"]},\"src/contracts/libraries/Subnetwork.sol\":{\"keccak256\":\"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56\",\"dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32\"]},\"src/contracts/service/OptInService.sol\":{\"keccak256\":\"0x4e0932077f2686b7990e10d59deb2535334c0d09e52ef6e57c6ab09eca21c4b1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7c00d311032ed4a1743aca7475f3c86ce15cdfc2218108efc3731c03d34a5278\",\"dweb:/ipfs/QmUGGfVwVhaHr5kS4177yKKYiLYzi5qZpkEmvYxBZqazxf\"]},\"src/contracts/vault/Vault.sol\":{\"keccak256\":\"0x2ceff6ed3298c4cad144c99fcc79b51cb9397d6ebef00285b915848b476f8c2e\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://11f2fb3581854f3ab6e82e8d4935d9eb510c903a13c3f022346c2956a58f5307\",\"dweb:/ipfs/QmdUnoXoyYoG9SGWyQZCFyLDRUUX3eXyXetkRvw6jxqqBz\"]},\"src/contracts/vault/VaultStorage.sol\":{\"keccak256\":\"0x57db25b127d77ea3472de53e3a4af3354399655b9268638b99ca5925fa364a56\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://aa763d9a6ec508ae3abfb8228b72b9fd9525279e5135d4962e79ff059feb1173\",\"dweb:/ipfs/QmcbDR6E9wyEpu6V2FkEC4hnWy47zXA9LSKJde6zSGd33Q\"]},\"src/interfaces/common/IEntity.sol\":{\"keccak256\":\"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b\",\"dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv\"]},\"src/interfaces/common/IMigratableEntity.sol\":{\"keccak256\":\"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c\",\"dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds\"]},\"src/interfaces/common/IRegistry.sol\":{\"keccak256\":\"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014\",\"dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK\"]},\"src/interfaces/common/IStaticDelegateCallable.sol\":{\"keccak256\":\"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516\",\"dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi\"]},\"src/interfaces/delegator/IBaseDelegator.sol\":{\"keccak256\":\"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2\",\"dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8\"]},\"src/interfaces/delegator/IDelegatorHook.sol\":{\"keccak256\":\"0xc51aa8d7d1f6c8043ee819b7aeb86da0e993912e1442098df897e299f01f9f46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://adddf5cb2ba282aeb576b26efb28640f865a1721cc9b6eee8b3ee0457a2c9780\",\"dweb:/ipfs/QmNYgAmnLRwWZbhTuQhZs9rx4zcme1df5mEepkrniorSoW\"]},\"src/interfaces/delegator/IFullRestakeDelegator.sol\":{\"keccak256\":\"0xa3c8cb2e45d4d8ce90e95263bea40c01dc400f05ad65bc29597d878606be5e7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://782cf5e201aa4cca037ebafd3807a68ff1cc721d5b8416a35244db0d0607369e\",\"dweb:/ipfs/QmQkJks6x7CKndeTPa9LxgTNygD5uEi7obhADhpq1Lsr9A\"]},\"src/interfaces/delegator/INetworkRestakeDelegator.sol\":{\"keccak256\":\"0xe7030fe30389a147fd710e3436ec346b4842695fd3e65a81b95375c9f1d633fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://739c7e66d301778054f5c90bee45ec9438f68afba8a03eaaac52064c73b115ad\",\"dweb:/ipfs/QmfZ2ytKcTykAc76nxhg8ikUXV8NdBpetqb8W4YWPcox1Z\"]},\"src/interfaces/delegator/IOperatorNetworkSpecificDelegator.sol\":{\"keccak256\":\"0x74b95e64d29769202d45dd277bb830f623ff3d41ce77b80ce3ee4e318a5c71ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e512b903aae5c1b8a028c6e3f4f6223b5cb5d704503cfa6bd37b5346868f5c20\",\"dweb:/ipfs/QmZim9YExsPWtyxyeui993HTKAEmrg8MUcSkZ77Gp2JcuZ\"]},\"src/interfaces/delegator/IOperatorSpecificDelegator.sol\":{\"keccak256\":\"0x72075cab585dc17240cc3e32bc99b92f0d5627ddd988fed680e3e1a52d5a01e4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7448bc90699409ae61d85216b5efc2143a37f0f73354be2aea993bc54afca441\",\"dweb:/ipfs/QmXE4gAxM8pHosZK8mcTcj17puBx484meDCcmrDePskGHZ\"]},\"src/interfaces/service/IOptInService.sol\":{\"keccak256\":\"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337\",\"dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24\"]},\"src/interfaces/slasher/IBaseSlasher.sol\":{\"keccak256\":\"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf\",\"dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx\"]},\"src/interfaces/vault/IVault.sol\":{\"keccak256\":\"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9\",\"dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R\"]},\"src/interfaces/vault/IVaultStorage.sol\":{\"keccak256\":\"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e\",\"dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"baseDelegatorHints","type":"address"},{"internalType":"address","name":"vaultHints","type":"address"},{"internalType":"address","name":"optInServiceHints","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"inputs":[],"type":"error","name":"AlreadySet"},{"inputs":[],"type":"error","name":"CheckpointUnorderedInsertion"},{"inputs":[],"type":"error","name":"DuplicateRoleHolder"},{"inputs":[],"type":"error","name":"ExceedsMaxNetworkLimit"},{"inputs":[],"type":"error","name":"ExternalCall"},{"inputs":[],"type":"error","name":"InsufficientHookGas"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"MissingRoleHolders"},{"inputs":[],"type":"error","name":"NotInitialized"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"NotNetwork"},{"inputs":[],"type":"error","name":"NotOperator"},{"inputs":[],"type":"error","name":"NotSlasher"},{"inputs":[],"type":"error","name":"NotVault"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintDowncast"},{"inputs":[],"type":"error","name":"ZeroAddressRoleHolder"},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint48","name":"captureTimestamp","type":"uint48","indexed":false}],"type":"event","name":"OnSlash","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[{"internalType":"address","name":"hook","type":"address","indexed":true}],"type":"event","name":"SetHook","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"SetMaxNetworkLimit","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"SetNetworkLimit","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"BASE_DELEGATOR_HINTS","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HOOK_GAS_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HOOK_RESERVE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HOOK_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"NETWORK_LIMIT_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"NETWORK_REGISTRY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_NETWORK_OPT_IN_SERVICE","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_REGISTRY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_VAULT_OPT_IN_SERVICE","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPT_IN_SERVICE_HINTS","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"TYPE","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VAULT_FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VAULT_HINTS","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"VERSION","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"hook","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"}],"stateMutability":"view","type":"function","name":"maxNetworkLimit","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"}],"stateMutability":"view","type":"function","name":"networkLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"networkLimitAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"},{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"networkLimitHint","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"networkLimitHintInternal","outputs":[{"internalType":"bool","name":"exists","type":"bool"},{"internalType":"uint32","name":"hint","type":"uint32"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint48","name":"captureTimestamp","type":"uint48"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"onSlash"},{"inputs":[],"stateMutability":"view","type":"function","name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"address","name":"hook_","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setHook"},{"inputs":[{"internalType":"uint96","name":"identifier","type":"uint96"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setMaxNetworkLimit"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setNetworkLimit"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"stake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hints","type":"bytes"}],"stateMutability":"view","type":"function","name":"stakeAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"},{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"stakeHints","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"staticDelegateCall"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"vault","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"VERSION()":{"details":"Must return 1 for this one.","returns":{"_0":"version of the delegator"}},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"initialize(bytes)":{"params":{"data":"some data to use"}},"networkLimit(bytes32)":{"params":{"subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"_0":"limit of the subnetwork"}},"networkLimitAt(bytes32,uint48,bytes)":{"params":{"hint":"hint for checkpoint index","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)","timestamp":"time point to get the subnetwork limit at"},"returns":{"_0":"limit of the subnetwork at the given timestamp"}},"onSlash(bytes32,address,uint256,uint48,bytes)":{"details":"Only the vault's slasher can call this function.","params":{"amount":"amount of the collateral slashed","captureTimestamp":"time point when the stake was captured","data":"some additional data","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"}},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"setHook(address)":{"details":"Only a HOOK_SET_ROLE holder can call this function. The hook can have arbitrary logic under certain functions, however, it doesn't affect the stake guarantees.","params":{"hook":"address of the hook"}},"setMaxNetworkLimit(uint96,uint256)":{"details":"Only a network can call this function.","params":{"amount":"new maximum subnetwork's limit"}},"setNetworkLimit(bytes32,uint256)":{"details":"Only a NETWORK_LIMIT_SET_ROLE holder can call this function.","params":{"amount":"new limit of the subnetwork","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"}},"stake(bytes32,address)":{"details":"Warning: this function is not safe to use for stake capturing, as it can change by the end of the block.","params":{"operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"_0":"slashable stake until the end of the next epoch"}},"stakeAt(bytes32,address,uint48,bytes)":{"details":"Warning: it is not safe to use timestamp >= current one for the stake capturing, as it can change later.","params":{"hints":"hints for the checkpoints' indexes","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)","timestamp":"time point to capture the stake at"},"returns":{"_0":"slashable stake at the given timestamp until the end of the consequent epoch"}},"staticDelegateCall(address,bytes)":{"details":"It allows to use this contract's storage on-chain.","params":{"data":"data to make a delegatecall with","target":"address of the contract to make a delegatecall to"}},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."}},"version":1},"userdoc":{"kind":"user","methods":{"FACTORY()":{"notice":"Get the factory's address."},"HOOK_GAS_LIMIT()":{"notice":"Get a gas limit for the hook."},"HOOK_RESERVE()":{"notice":"Get a reserve gas between the gas limit check and the hook's execution."},"HOOK_SET_ROLE()":{"notice":"Get a hook setter's role."},"NETWORK_LIMIT_SET_ROLE()":{"notice":"Get a subnetwork limit setter's role."},"NETWORK_REGISTRY()":{"notice":"Get the network registry's address."},"OPERATOR_NETWORK_OPT_IN_SERVICE()":{"notice":"Get the operator-network opt-in service's address."},"OPERATOR_REGISTRY()":{"notice":"Get the operator registry's address."},"OPERATOR_VAULT_OPT_IN_SERVICE()":{"notice":"Get the operator-vault opt-in service's address."},"TYPE()":{"notice":"Get the entity's type."},"VAULT_FACTORY()":{"notice":"Get the vault factory's address."},"VERSION()":{"notice":"Get a version of the delegator (different versions mean different interfaces)."},"hook()":{"notice":"Get the hook's address."},"initialize(bytes)":{"notice":"Initialize this entity contract by using a given data."},"maxNetworkLimit(bytes32)":{"notice":"Get a particular subnetwork's maximum limit (meaning the subnetwork is not ready to get more as a stake)."},"networkLimit(bytes32)":{"notice":"Get a subnetwork's limit (how much stake the vault curator is ready to give to the subnetwork)."},"networkLimitAt(bytes32,uint48,bytes)":{"notice":"Get a subnetwork's limit at a given timestamp using a hint (how much stake the vault curator is ready to give to the subnetwork)."},"onSlash(bytes32,address,uint256,uint48,bytes)":{"notice":"Called when a slash happens."},"operator()":{"notice":"Get an operator managing the vault's funds."},"setHook(address)":{"notice":"Set a new hook."},"setMaxNetworkLimit(uint96,uint256)":{"notice":"Set a maximum limit for a subnetwork (how much stake the subnetwork is ready to get). identifier identifier of the subnetwork"},"setNetworkLimit(bytes32,uint256)":{"notice":"Set a subnetwork's limit (how much stake the vault curator is ready to give to the subnetwork)."},"stake(bytes32,address)":{"notice":"Get a stake that a given subnetwork will be able to slash for a certain operator until the end of the next epoch (if no cross-slashing and no slashings by the subnetwork)."},"stakeAt(bytes32,address,uint48,bytes)":{"notice":"Get a stake that a given subnetwork could be able to slash for a certain operator at a given timestamp until the end of the consequent epoch using hints (if no cross-slashing and no slashings by the subnetwork)."},"staticDelegateCall(address,bytes)":{"notice":"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data)."},"vault()":{"notice":"Get the vault's address."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/hints/DelegatorHints.sol":"OperatorSpecificDelegatorHints"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol":{"keccak256":"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74","urls":["bzz-raw://942dad22fbdc1669f025540ba63aa3ccfad5f8458fc5d4525b31ebf272e7af45","dweb:/ipfs/Qmdo4X2M82aM3AMoW2kf2jhYkSCyC4T1pHNd6obdsDFnAB"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8","urls":["bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45","dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41","urls":["bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26","dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol":{"keccak256":"0x85a45f3f10014a0f8be41157a32b6a5f905753ea64a4b64e29fc12b7deeecf39","urls":["bzz-raw://c3c74009ce36136b36c77c23935b8e4a7b4f253be2da2be4fb4a916b1ce43743","dweb:/ipfs/QmcH36v3iN7SJJuF73AunLR2LtNxhVJ1wm63ph4dPZ4pcL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol":{"keccak256":"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92","urls":["bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a","dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70","urls":["bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c","dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff","urls":["bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d","dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386","urls":["bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0","dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721","urls":["bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245","dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol":{"keccak256":"0x18a7171df639a934592915a520ecb97c5bbc9675a1105607aac8a94e72bf62c6","urls":["bzz-raw://7478e1f13da69a2867ccd883001d836b75620362e743f196376d63ed0c422a1c","dweb:/ipfs/QmWywcQ9TNfwtoqAxbn25d8C5VrV12PrPS9UjtGe6pL2BA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418","urls":["bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c","dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792","urls":["bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453","dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0xeed0a08b0b091f528356cbc7245891a4c748682d4f6a18055e8e6ca77d12a6cf","urls":["bzz-raw://ba80ba06c8e6be852847e4c5f4492cef801feb6558ae09ed705ff2e04ea8b13c","dweb:/ipfs/QmXRJDv3xHLVQCVXg1ZvR35QS9sij5y9NDWYzMfUfAdTHF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol":{"keccak256":"0x999f705a027ed6dc2d4e0df2cc4a509852c6bfd11de1c8161bf88832d0503fd0","urls":["bzz-raw://0798def67258d9a3cc20b2b4da7ebf351a5cefe0abfdd665d2d81f8e32f89b21","dweb:/ipfs/QmPEvJosnPfzHNjKvCv2D3891mA2Ww8eUwkqrxBjuYdHCt"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0xba333517a3add42cd35fe877656fc3dfcc9de53baa4f3aabbd6d12a92e4ea435","urls":["bzz-raw://2ceacff44c0fdc81e48e0e0b1db87a2076d3c1fb497341de077bf1da9f6b406c","dweb:/ipfs/QmRUo1muMRAewxrKQ7TkXUtknyRoR57AyEkoPpiuZQ8FzX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/SignatureChecker.sol":{"keccak256":"0x6b11eb41a228cca35d4b662b4df69fcd75192851365102690f57b2ac01e83fe6","urls":["bzz-raw://ab006a2983ed350d2af21ddcdd835dcae3b8340086cc4d088460da5abd041f69","dweb:/ipfs/QmbEacDhkJZiGrgzLjB4pNtE8Z1uudjDw1DvcDUTVQFsLG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe","urls":["bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c","dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72","urls":["bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc","dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol":{"keccak256":"0xbdc5e074d7dd6678f67e92b1a51a20226801a407b0e1af3da367c5d1ff4519ad","urls":["bzz-raw://a36cca6b22fff3db16fc789ff6c60eea71d4b156065d4d0c83a0bc5e91a77a8b","dweb:/ipfs/QmYN3exd5AemxjBrN8XMB1p5LbbE16uC3sjbYjwi8AjcGR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0xc7755af115020049e4140f224f9ee88d7e1799ffb0646f37bf0df24bf6213f58","urls":["bzz-raw://7f09bf94d5274334ec021f61a04659db303f31e60460e14b709c9bf187740111","dweb:/ipfs/QmNvgomZYUwFAt4cZbPWAiTeSZQreGehY9BK5xyVJsUttb"],"license":"MIT"},"src/contracts/common/Entity.sol":{"keccak256":"0x3d61a932995b8443381f3950542d388223a2c26dd5d29a3274dea3baa7388bd7","urls":["bzz-raw://7cdf5f03ca72fd263fd32ff59c8d88ddca911ae83896a287d10772c1bbe9b138","dweb:/ipfs/QmbP84r5BWT1Rn9AYTntWSf3xUMTTCohTZJFhbBhDXFoHa"],"license":"BUSL-1.1"},"src/contracts/common/MigratableEntity.sol":{"keccak256":"0x2d736f4dacd5d7e7697503bc426c78b8250fe1694ca157965ec178da6807de58","urls":["bzz-raw://f1237acf96b4b9f9b69156e068eddd726a6e15bd8e87a18dc999cd4ba4da069c","dweb:/ipfs/QmS6M8fiFFSeuJ4ZKKq1z8W7w4ybeHQSy5TLASGoc1LVic"],"license":"BUSL-1.1"},"src/contracts/common/StaticDelegateCallable.sol":{"keccak256":"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90","urls":["bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764","dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD"],"license":"BUSL-1.1"},"src/contracts/delegator/BaseDelegator.sol":{"keccak256":"0x7c54d491fdd4415b764a9c8defa068e56d4c0c8c9419be0053a1d377669290e8","urls":["bzz-raw://9238bfbad0f6eeb0dc7727724de14380f1980b395902269703d5e2ef07e52e10","dweb:/ipfs/QmPJn1V4HNXcEghYvogGuSTF24dSQUPosR5qtsXcmNqRm3"],"license":"BUSL-1.1"},"src/contracts/delegator/FullRestakeDelegator.sol":{"keccak256":"0x0a81c4f8e72914563a9cb771e93acf889c71ea36b7bec040e4eb562b199d5af1","urls":["bzz-raw://6fc66b6ba02da77046a0bbbd1dd407a62c08f52e04486c9cbd2cb1cca3da555f","dweb:/ipfs/QmZQivK1ZnMxfRQQ5aLpV9co5u55wQVNev5Rg1hzAqxhkE"],"license":"BUSL-1.1"},"src/contracts/delegator/NetworkRestakeDelegator.sol":{"keccak256":"0xd3a8e6522f9c6fdcc2da837c9023afd6bdff2bce45a35590320c475519e3636d","urls":["bzz-raw://58b17a87f6554f08376f9ea7fedf486a4aa75801bf0ad8b23ff5a46959b6b7a3","dweb:/ipfs/QmSTmNh67tYt8CmjVZb57r8N3qX5yeYdMApKPJm3qvQgQw"],"license":"BUSL-1.1"},"src/contracts/delegator/OperatorNetworkSpecificDelegator.sol":{"keccak256":"0x031a10722b9ec49048f0952710401131290adb87e71caf294e864e7ac3b98a16","urls":["bzz-raw://72428febc875134b2f29205e6f294634a1c22a7d5c78d6a9cb2f8196f107c9b5","dweb:/ipfs/QmTPwXR6h5oytckmkLrHdKeEMdphJxceDhYUR4zvQeWAwY"],"license":"BUSL-1.1"},"src/contracts/delegator/OperatorSpecificDelegator.sol":{"keccak256":"0x630ce62fa30b9f3349ab7a8cf8dbf041319febc6dd757be2f94d3d25944ed328","urls":["bzz-raw://c2ac59d47ce57d2a6819ae9833e1a618a371eccff93eb5ab367b201b01f42bfa","dweb:/ipfs/QmdBpGMBivpNPv2WbH8vnCUy5xkVeaxQvGgqi33vKCz1kA"],"license":"BUSL-1.1"},"src/contracts/hints/DelegatorHints.sol":{"keccak256":"0x44aa0c396311a54afbc7c73e8dadeed41e3165a4fd13f712b27d63d50fc3376d","urls":["bzz-raw://2f255214f3531fc707d88be0d56a7a0aed4180439316d099d760d9118aa83093","dweb:/ipfs/QmZD1w5p1ukJSXumUAjvxwGmkPhn7vsr21Y2atLGEZR2oi"],"license":"BUSL-1.1"},"src/contracts/hints/Hints.sol":{"keccak256":"0x8b565df1ae35993c097a9e642002782a8f451f6fd01809cad6bcd345bdf1b99c","urls":["bzz-raw://99a19adb01e350a92f534095b3078229df1f2f83077992d75d58d8684be45971","dweb:/ipfs/QmbmwcuswVbzvwHQFTtrJG86oV98GnfxqYTb8cV8u1acox"],"license":"BUSL-1.1"},"src/contracts/hints/OptInServiceHints.sol":{"keccak256":"0x95d9407900d27b9f4a1233b772aeed809c07b2dc5b31cfc9fa77ca26514c49e5","urls":["bzz-raw://a13a8877e312d7e6b8b85bde3668c5d84ff5ecc83f762cd573f2b7104c64eb42","dweb:/ipfs/QmYV2J55acuGzCNnS3juABuUHY5U1xc8g8o9jwEyFFdeG5"],"license":"BUSL-1.1"},"src/contracts/hints/VaultHints.sol":{"keccak256":"0xccb505b7159b769cc114d67b87c2de6b106557f667fc8f3780114baad5c3c442","urls":["bzz-raw://6d0c80a908fc16e96a8b5605a0bd53f9e89ad0ef0a738fbbae80ba4d3160749b","dweb:/ipfs/QmXo5UtWoR8YmunqcbBU8rQMm1nvmvjNPoXcVrDhh4pEwR"],"license":"BUSL-1.1"},"src/contracts/libraries/Checkpoints.sol":{"keccak256":"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c","urls":["bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609","dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE"],"license":"MIT"},"src/contracts/libraries/ERC4626Math.sol":{"keccak256":"0x8441160513c1cbeb1c3b9ee077bcc7e7ce20006b52a77c8dd39ff0ef89699939","urls":["bzz-raw://943f8cc3e26ddf649f465f40c909819f5c864717c4baa339e9e403b9374a4653","dweb:/ipfs/QmXPxi1sUDsrGprZdUgCzoPEosaZMv9ZhygWQ1vAi1phAB"],"license":"MIT"},"src/contracts/libraries/Subnetwork.sol":{"keccak256":"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe","urls":["bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56","dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32"],"license":"MIT"},"src/contracts/service/OptInService.sol":{"keccak256":"0x4e0932077f2686b7990e10d59deb2535334c0d09e52ef6e57c6ab09eca21c4b1","urls":["bzz-raw://7c00d311032ed4a1743aca7475f3c86ce15cdfc2218108efc3731c03d34a5278","dweb:/ipfs/QmUGGfVwVhaHr5kS4177yKKYiLYzi5qZpkEmvYxBZqazxf"],"license":"BUSL-1.1"},"src/contracts/vault/Vault.sol":{"keccak256":"0x2ceff6ed3298c4cad144c99fcc79b51cb9397d6ebef00285b915848b476f8c2e","urls":["bzz-raw://11f2fb3581854f3ab6e82e8d4935d9eb510c903a13c3f022346c2956a58f5307","dweb:/ipfs/QmdUnoXoyYoG9SGWyQZCFyLDRUUX3eXyXetkRvw6jxqqBz"],"license":"BUSL-1.1"},"src/contracts/vault/VaultStorage.sol":{"keccak256":"0x57db25b127d77ea3472de53e3a4af3354399655b9268638b99ca5925fa364a56","urls":["bzz-raw://aa763d9a6ec508ae3abfb8228b72b9fd9525279e5135d4962e79ff059feb1173","dweb:/ipfs/QmcbDR6E9wyEpu6V2FkEC4hnWy47zXA9LSKJde6zSGd33Q"],"license":"BUSL-1.1"},"src/interfaces/common/IEntity.sol":{"keccak256":"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21","urls":["bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b","dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv"],"license":"MIT"},"src/interfaces/common/IMigratableEntity.sol":{"keccak256":"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4","urls":["bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c","dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds"],"license":"MIT"},"src/interfaces/common/IRegistry.sol":{"keccak256":"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb","urls":["bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014","dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK"],"license":"MIT"},"src/interfaces/common/IStaticDelegateCallable.sol":{"keccak256":"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5","urls":["bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516","dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi"],"license":"MIT"},"src/interfaces/delegator/IBaseDelegator.sol":{"keccak256":"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee","urls":["bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2","dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8"],"license":"MIT"},"src/interfaces/delegator/IDelegatorHook.sol":{"keccak256":"0xc51aa8d7d1f6c8043ee819b7aeb86da0e993912e1442098df897e299f01f9f46","urls":["bzz-raw://adddf5cb2ba282aeb576b26efb28640f865a1721cc9b6eee8b3ee0457a2c9780","dweb:/ipfs/QmNYgAmnLRwWZbhTuQhZs9rx4zcme1df5mEepkrniorSoW"],"license":"MIT"},"src/interfaces/delegator/IFullRestakeDelegator.sol":{"keccak256":"0xa3c8cb2e45d4d8ce90e95263bea40c01dc400f05ad65bc29597d878606be5e7d","urls":["bzz-raw://782cf5e201aa4cca037ebafd3807a68ff1cc721d5b8416a35244db0d0607369e","dweb:/ipfs/QmQkJks6x7CKndeTPa9LxgTNygD5uEi7obhADhpq1Lsr9A"],"license":"MIT"},"src/interfaces/delegator/INetworkRestakeDelegator.sol":{"keccak256":"0xe7030fe30389a147fd710e3436ec346b4842695fd3e65a81b95375c9f1d633fc","urls":["bzz-raw://739c7e66d301778054f5c90bee45ec9438f68afba8a03eaaac52064c73b115ad","dweb:/ipfs/QmfZ2ytKcTykAc76nxhg8ikUXV8NdBpetqb8W4YWPcox1Z"],"license":"MIT"},"src/interfaces/delegator/IOperatorNetworkSpecificDelegator.sol":{"keccak256":"0x74b95e64d29769202d45dd277bb830f623ff3d41ce77b80ce3ee4e318a5c71ec","urls":["bzz-raw://e512b903aae5c1b8a028c6e3f4f6223b5cb5d704503cfa6bd37b5346868f5c20","dweb:/ipfs/QmZim9YExsPWtyxyeui993HTKAEmrg8MUcSkZ77Gp2JcuZ"],"license":"MIT"},"src/interfaces/delegator/IOperatorSpecificDelegator.sol":{"keccak256":"0x72075cab585dc17240cc3e32bc99b92f0d5627ddd988fed680e3e1a52d5a01e4","urls":["bzz-raw://7448bc90699409ae61d85216b5efc2143a37f0f73354be2aea993bc54afca441","dweb:/ipfs/QmXE4gAxM8pHosZK8mcTcj17puBx484meDCcmrDePskGHZ"],"license":"MIT"},"src/interfaces/service/IOptInService.sol":{"keccak256":"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a","urls":["bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337","dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24"],"license":"MIT"},"src/interfaces/slasher/IBaseSlasher.sol":{"keccak256":"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404","urls":["bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf","dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx"],"license":"MIT"},"src/interfaces/vault/IVault.sol":{"keccak256":"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235","urls":["bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9","dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R"],"license":"MIT"},"src/interfaces/vault/IVaultStorage.sol":{"keccak256":"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22","urls":["bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e","dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6"],"license":"MIT"}},"version":1},"id":81} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[{"name":"baseDelegatorHints","type":"address","internalType":"address"},{"name":"vaultHints","type":"address","internalType":"address"},{"name":"optInServiceHints","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"BASE_DELEGATOR_HINTS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"HOOK_GAS_LIMIT","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"HOOK_RESERVE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"HOOK_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"NETWORK_LIMIT_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"NETWORK_REGISTRY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_NETWORK_OPT_IN_SERVICE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_REGISTRY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_VAULT_OPT_IN_SERVICE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"OPT_IN_SERVICE_HINTS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"TYPE","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"VAULT_FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"VAULT_HINTS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"VERSION","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"pure"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"hook","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"maxNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"networkLimit","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"networkLimitAt","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"networkLimitHint","inputs":[{"name":"delegator","type":"address","internalType":"address"},{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"networkLimitHintInternal","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"exists","type":"bool","internalType":"bool"},{"name":"hint","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"onSlash","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","internalType":"uint48"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"operator","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setHook","inputs":[{"name":"hook_","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMaxNetworkLimit","inputs":[{"name":"identifier","type":"uint96","internalType":"uint96"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stake","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"stakeAt","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hints","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"stakeHints","inputs":[{"name":"delegator","type":"address","internalType":"address"},{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"staticDelegateCall","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"vault","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OnSlash","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","indexed":false,"internalType":"uint48"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SetHook","inputs":[{"name":"hook","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SetMaxNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SetNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"AlreadySet","inputs":[]},{"type":"error","name":"CheckpointUnorderedInsertion","inputs":[]},{"type":"error","name":"DuplicateRoleHolder","inputs":[]},{"type":"error","name":"ExceedsMaxNetworkLimit","inputs":[]},{"type":"error","name":"ExternalCall","inputs":[]},{"type":"error","name":"InsufficientHookGas","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"MissingRoleHolders","inputs":[]},{"type":"error","name":"NotInitialized","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"NotNetwork","inputs":[]},{"type":"error","name":"NotOperator","inputs":[]},{"type":"error","name":"NotSlasher","inputs":[]},{"type":"error","name":"NotVault","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ZeroAddressRoleHolder","inputs":[]}],"bytecode":{"object":"0x6101e0346101d557601f6131c738819003918201601f19168301916001600160401b0391828411858510176101d95781606092869260409687528339810103126101d55761004c836101ed565b926100648361005d602084016101ed565b92016101ed565b91306080527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff82871c166101c4578080831603610180575b5050505f60a0525f60c0525f60e052610100935f8552610120935f85526101405f8152610160915f83526101809384526101a09485526101c09586525195612fc5978861020289396080518861048c015260a051886107a4015260c05188610f6c015260e0518881816105950152610fa50152518781816103bf0152612299015251868181610403015281816119720152611aa1015251858181610513015281816118d90152611b1f015251848181610dce0152612af4015251838181610d29015261149a015251828181610b0e015261153b01525181610e700152f35b6001600160401b0319909116811790915583519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80806100a2565b855163f92ee8a960e01b8152600490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101d55756fe60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a714610284578063021453481461027f578063103f29071461027a578063128e5d8214610275578063197aa7ea146102705780631a80e5001461026b57806323f752d514610266578063248a9ca31461026157806325dc97081461025c5780632dd31000146102575780632f2ff15d1461025257806336568abe1461024d5780633dfd3873146102485780633eb22c0f14610243578063439fab911461023e57806345e78fcb14610239578063557cab4414610234578063570ca7351461022f5780635d32a1c91461022a5780636679191e1461022557806379d89614146102205780637d24bb271461021b5780637f5a7c7b1461021657806383ce03221461021157806391d148541461020c5780639b656b22146102075780639f86fd8514610202578063a217fddf146101fd578063bb24fe8a146101f8578063c0cd7c3e146101f3578063d15b740e146101ee578063d547741f146101e9578063da749d2b146101e4578063e02f6937146101df578063e49561ee146101da578063fbfa77cf146101d5578063fd4d447c146101d0578063ff54740f146101cb5763ffa1ad74146101c6575f80fd5b61132d565b611310565b6112e6565b6112bf565b6110d4565b61107f565b61104a565b610ffe565b610fd4565b610f90565b610f4d565b610f33565b610e9f565b610e5b565b610dfd565b610db9565b610d91565b610d58565b610d14565b610cda565b610c89565b610b59565b610b3d565b610af9565b6109c1565b610963565b61086a565b61081f565b6107d3565b61078f565b610736565b6106c8565b610542565b6104fe565b610471565b6103ee565b6103aa565b6102de565b346102da5760203660031901126102da5760043563ffffffff60e01b81168091036102da57602090637965db0b60e01b81149081156102c9575b506040519015158152f35b6301ffc9a760e01b1490505f6102be565b5f80fd5b346102da576040806003193601126102da576004359060243590610300611b94565b825f526002602052805f2054821161039a57825f52600360205281610326825f206121eb565b1461038a5781610385916103757e899d104fc3d8820bd96540612bcc5c448c8837b13b9f7faa43ad0728f0c14f94610366875f52600360205260405f2090565b61036f4261272b565b90611c93565b5050519081529081906020820190565b0390a2005b5163a741a04560e01b8152600490fd5b51631eefc06360e31b8152600490fd5b346102da575f3660031901126102da576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102da575f3660031901126102da576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6024359065ffffffffffff821682036102da57565b6064359065ffffffffffff821682036102da57565b6044359065ffffffffffff821682036102da57565b346102da5760403660031901126102da5761048a610432565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036104ec5763ffffffff6104d76040926004355f526003602052835f20611d79565b91505083929192519215158352166020820152f35b604051637ca475e560e11b8152600490fd5b346102da575f3660031901126102da576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102da5760403660031901126102da576004356001600160601b03811681036102da5760243590610572611e88565b6040516302910f8b60e31b81523360048201526020816024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa9081156106c3575f91610694575b5015610682576001600160601b03166bffffffffffffffffffffffff193360601b161790806105fc835f52600260205260405f2090565b541461067057610655817fc67e7929681aa1bccd63f52b3799bf5805f3009f197db6fdf584b14f7fbf608c9261063a855f52600260205260405f2090565b556106458185611eb7565b6040519081529081906020820190565b0390a261066e60015f80516020612f5083398151915255565b005b60405163a741a04560e01b8152600490fd5b6040516323d53b9760e21b8152600490fd5b6106b6915060203d6020116106bc575b6106ae8183610beb565b810190611355565b5f6105c5565b503d6106a4565b61136c565b346102da5760203660031901126102da576004355f525f80516020612f308339815191526020526020600160405f200154604051908152f35b6001600160a01b038116036102da57565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b346102da5760803660031901126102da5761078b61077760043561075981610701565b60443561076581610701565b61076d610447565b9160243590611451565b604051918291602083526020830190610712565b0390f35b346102da575f3660031901126102da576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102da5760403660031901126102da5761066e6024356004356107f682610701565b805f525f80516020612f3083398151915260205261081a600160405f200154611bf0565b612123565b346102da5760403660031901126102da5760243561083c81610701565b336001600160a01b038216036108585761066e90600435612159565b60405163334bd91960e11b8152600490fd5b346102da5760203660031901126102da5760043561088781610701565b61088f611e88565b335f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c60205260409020547fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c9060ff161561094557506001546001600160a01b039182169181168214610670576001600160a01b03191681176001557f5bbb1d3ebb6a3ad2a0f17ff35e579a83af60604d1d3c2a4c83c62adecadf666d5f80a260015f80516020612f5083398151915255005b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b346102da5760203660031901126102da576004355f526003602052602061098c60405f206121eb565b604051908152f35b9181601f840112156102da578235916001600160401b0383116102da57602083818601950101116102da57565b346102da5760203660031901126102da576001600160401b036004358181116102da576109f2903690600401610994565b5f80516020612f70833981519152549260ff8460401c1615931680159081610af1575b6001149081610ae7575b159081610ade575b50610acc575f80516020612f70833981519152805467ffffffffffffffff19166001179055610a5a9183610aa857612264565b610a6057005b5f80516020612f70833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f80516020612f70833981519152805460ff60401b1916600160401b179055612264565b60405163f92ee8a960e01b8152600490fd5b9050155f610a27565b303b159150610a1f565b849150610a15565b346102da575f3660031901126102da576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102da575f3660031901126102da576020604051614e208152f35b346102da575f3660031901126102da576004546040516001600160a01b039091168152602090f35b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b03821117610bb057604052565b610b81565b606081019081106001600160401b03821117610bb057604052565b608081019081106001600160401b03821117610bb057604052565b90601f801991011681019081106001600160401b03821117610bb057604052565b60405190610c1982610bb5565b565b60405190610c1982610b95565b6001600160401b038111610bb057601f01601f191660200190565b81601f820112156102da57803590610c5a82610c28565b92610c686040519485610beb565b828452602083830101116102da57815f926020809301838601378301015290565b346102da5760603660031901126102da57610ca2610432565b6044356001600160401b0381116102da57602091610cc761098c923690600401610c43565b906004355f526003845260405f206123cb565b346102da575f3660031901126102da5760206040517fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c8152f35b346102da575f3660031901126102da576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102da575f3660031901126102da5760206040517e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf8152f35b346102da575f3660031901126102da576001546040516001600160a01b039091168152602090f35b346102da575f3660031901126102da576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102da5760403660031901126102da57602060ff610e4f602435610e2181610701565b6004355f525f80516020612f30833981519152845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b346102da575f3660031901126102da576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102da5760403660031901126102da57600435610ebc81610701565b6024356001600160401b0381116102da575f91610ede83923690600401610994565b90816040519283928337810184815203915af4610f2b610efc61164d565b91610f1d604051938492151560208401526040808401526060830190610712565b03601f198101835282610beb565b805190602001fd5b346102da575f3660031901126102da5760206040515f8152f35b346102da575f3660031901126102da5760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102da575f3660031901126102da576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102da5760203660031901126102da576004355f526002602052602060405f2054604051908152f35b346102da5760403660031901126102da5761066e60243560043561102182610701565b805f525f80516020612f30833981519152602052611045600160405f200154611bf0565b612159565b346102da5760603660031901126102da5761078b61077760043561106d81610701565b61107561045c565b90602435906116ae565b346102da5760803660031901126102da5760243561109c81610701565b6110a461045c565b90606435906001600160401b0382116102da576020926110cb61098c933690600401610c43565b91600435611863565b346102da5760a03660031901126102da576024356004356110f482610701565b60443591611100610447565b90608435906001600160401b0382116102da5761112260049236908401610c43565b61112a611e88565b5f5460209061114f90611143906001600160a01b031681565b6001600160a01b031690565b60405163b134427160e01b815294859182905afa9283156106c3575f9361128e575b506001600160a01b03928316330361127c576001546001600160a01b03168381166111f1575b50506040805195865265ffffffffffff909316602086015216927f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed91819081015b0390a361066e60015f80516020612f5083398151915255565b9093604051946112288661121a602082019363724ab0f760e11b8552858c898d602487016119ed565b03601f198101885287610beb565b62042e305a1061126a575f6111d8938192827f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed9951926203d090f15093611197565b604051638072475160e01b8152600490fd5b60405163dabc4ad960e01b8152600490fd5b6112b191935060203d6020116112b8575b6112a98183610beb565b8101906113ed565b915f611171565b503d61129f565b346102da575f3660031901126102da575f546040516001600160a01b039091168152602090f35b346102da5760403660031901126102da57602061098c60243561130881610701565b600435611a6a565b346102da575f3660031901126102da5760206040516203d0908152f35b346102da575f3660031901126102da57602060405160018152f35b519081151582036102da57565b908160209103126102da5761136990611348565b90565b6040513d5f823e3d90fd5b81601f820112156102da5780519061138e82610c28565b9261139c6040519485610beb565b828452602083830101116102da57815f9260208093018386015e8301015290565b906020828203126102da5781516001600160401b0381116102da576113699201611377565b5190610c1982610701565b908160209103126102da575161136981610701565b9061136991602081526114218251606060208401526080830190610712565b9060606040611441602086015194601f1995868683030184870152610712565b9401519282850301910152610712565b604051630df8851f60e11b81526001600160a01b03828116600483015260248201849052938416604482015265ffffffffffff8516606482015260609594909391925f856084817f000000000000000000000000000000000000000000000000000000000000000087165afa9485156106c3575f9561161b575b5060405163fbfa77cf60e01b81526020816004818888165afa9081156106c357611537945f92859284916115fc575b5060405163192c0ff760e21b81526001600160a01b03909116600482015265ffffffffffff90921660248301529094859190829081906044820190565b03917f0000000000000000000000000000000000000000000000000000000000000000165afa9283156106c3575f936115d6575b5061157692936116ae565b908251158015906115cc575b80156115c2575b61159257505050565b610f1d9394509061136992916115a6610c0c565b9283526020830152604082015260405192839160208301611402565b5081511515611589565b5080511515611582565b61157693506115f6903d805f833e6115ee8183610beb565b8101906113bd565b9261156b565b611615915060203d6020116112b8576112a98183610beb565b5f6114fa565b6116309195503d805f833e6115ee8183610beb565b935f6114cb565b9061136992915f52600360205260405f206123cb565b3d15611677573d9061165e82610c28565b9161166c6040519384610beb565b82523d5f602084013e565b606090565b519063ffffffff821682036102da57565b91908260409103126102da5761136960206116a784611348565b930161167c565b92915f8060609565ffffffffffff60405194602096630cbd53f560e11b888801526024870152166044850152604484526116e784610bd0565b604051938461171487820192639f86fd8560e01b8452306024840152604060448401526064830190610712565b0394611728601f1996878101835282610beb565b51915afa5061174661173861164d565b8380825183010191016124a3565b90156117995780838061175e9351830101910161168d565b929061176957505050565b6113699293945061178d604051948592830191909163ffffffff6020820193169052565b03908101835282610beb565b809150519182156102da5701fd5b604051906117b482610b95565b60606020838281520152565b906020828203126102da5781516001600160401b03928382116102da5701906040828203126102da57604051926117f684610b95565b82518181116102da578261180b918501611377565b845260208301519081116102da576118239201611377565b602082015290565b6001600160a01b0391821681529116602082015265ffffffffffff909116604082015260806060820181905261136992910190610712565b92611873909291928284866125ac565b92909361187e6117a7565b938051806119d1575b5050841593841561193b575b84156118aa575b505050506118a55790565b505f90565b6020809495506118d5910151604051958694859463530e1d4360e01b865260601c906004860161182b565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156106c3575f9161191c575b50155f80808061189a565b611935915060203d6020116106bc576106ae8183610beb565b5f611911565b5f549094506001600160a01b031660208486519261196e604051948593849363530e1d4360e01b8552896004860161182b565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156106c3575f916119b2575b501593611893565b6119cb915060203d6020116106bc576106ae8183610beb565b5f6119aa565b6119e59295506020809183010191016117c0565b925f80611887565b919360a093611369969565ffffffffffff938552600180871b0316602085015260408401521660608201528160808201520190610712565b634e487b7160e01b5f52601160045260245ffd5b8115611a43570490565b634e487b7160e01b5f52601260045260245ffd5b9060018201809211611a6557565b611a25565b5f546040516308834cb560e21b8082526001600160a01b0385811660048401529283166024830152929392602092909183816044817f000000000000000000000000000000000000000000000000000000000000000086165afa9081156106c3575f91611b77575b5015918215611af3575b50509050611aed57611369916126a7565b50505f90565b6040519081526001600160a01b0385166004820152606086901c602482015291508290829060449082907f0000000000000000000000000000000000000000000000000000000000000000165afa9182156106c3575f92611b5a575b505015805f80611adc565b611b709250803d106106bc576106ae8183610beb565b5f80611b4f565b611b8e9150843d86116106bc576106ae8183610beb565b5f611ad2565b335f9081527f72a65082a5691803ab2b62c9bc729b34205ba1b183d950896526b2fd8714d0c7602052604090207e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf9060ff905b5416156109455750565b5f8181525f80516020612f3083398151915260209081526040808320338452909152902060ff90611be6565b634e487b7160e01b5f52603260045260245ffd5b8054821015611c45575f5260205f2001905f90565b611c1c565b90815491600160401b831015610bb05782611c6d916001610c1995018155611c30565b90919082549060031b91821b915f19901b1916179055565b5f19810191908211611a6557565b90929192600182019081548015611d25575b5084611cb08461275d565b50949092845493611cc0836121eb565b9681611d10575b5015611ced575050505f198101908111611a6557611c6d8591611ce993611c30565b9190565b611ce9949293611d09926001600160d01b039091169190612db8565b5050611c4a565b65ffffffffffff83811691161490505f611cc7565b600160401b811015610bb057806001611d419201845583611c30565b8154905f199060031b1b191690555f611ca5565b90604051611d6281610b95565b915465ffffffffffff8116835260301c6020830152565b91908254905f829160058411611e21575b611d959350856128c1565b908115611e1557611e0e611e05611dff611df5611dc7611dc2611db788611c85565b895f5260205f200190565b611d55565b966001611dee6020611ddf8b5165ffffffffffff1690565b9a01516001600160d01b031690565b9101611c30565b90549060031b1c90565b93611c85565b63ffffffff1690565b6001939291565b5f925082915081908190565b9192611e2c81612796565b8103908111611a6557611d9593865f52611e60611e558360205f200165ffffffffffff90541690565b65ffffffffffff1690565b65ffffffffffff85161015611e76575091611d8a565b929150611e8290611a57565b90611d8a565b5f80516020612f508339815191526002815414611ea55760029055565b604051633ee5aeb560e01b8152600490fd5b90815f52600360205260405f2081611ece8261275d565b919390508315611f2c57611eee916001600160d01b031690600101611c30565b90549060031b1c5b82611f22575b5050611f06575050565b611f1e915f52600360205260405f2061036f4261272b565b5050565b119050815f611efc565b50505f611ef6565b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260409020545f80516020612f308339815191529060ff16611aed575f808052602091825260408082206001600160a01b038516835290925220805460ff1916600117905533906001600160a01b03165f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b6001600160a01b0381165f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c602052604090207fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c905f80516020612f308339815191529060ff905b54166120ae575f828152602091825260408082206001600160a01b038616835290925220805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b5050505f90565b6001600160a01b0381165f9081527f72a65082a5691803ab2b62c9bc729b34205ba1b183d950896526b2fd8714d0c7602052604090207e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf905f80516020612f308339815191529060ff9061204a565b5f8181525f80516020612f30833981519152602081815260408084206001600160a01b038716855290915290912060ff9061204a565b5f8181525f80516020612f30833981519152602081815260408084206001600160a01b03871685529091529091205460ff16156120ae575f828152602091825260408082206001600160a01b038616835290925220805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b80548061221057505f5b6001600160d01b03811615611aed576001611df59201611c30565b5f19908082810111611a6557825f5260205f2001015460301c6121f5565b9190916040818403126102da57803561224681610701565b9260208201356001600160401b0381116102da576113699201610c43565b6122709181019061222e565b6040516302910f8b60e31b81526001600160a01b039283166004820181905291906020816024817f000000000000000000000000000000000000000000000000000000000000000088165afa9081156106c3575f91612383575b50156123715761230560409161230061234b946122e5612918565b60018060a01b03166001600160601b0360a01b5f5416175f55565b612a84565b6020810151600180546001600160a01b0319166001600160a01b0390921691909117905580516001600160a01b0316848116612361575b5001516001600160a01b031690565b9081166123555750565b61235e90611fdf565b50565b61236a90611f34565b505f61233c565b6040516362df054560e01b8152600490fd5b61239c915060203d6020116106bc576106ae8183610beb565b5f6122ca565b908160209103126102da576113699061167c565b90600163ffffffff80931601918211611a6557565b9180511561249957806020806123e6935183010191016123a2565b916123f18382612cf5565b92612402845165ffffffffffff1690565b9065ffffffffffff808516921682811461248d5782119182612438575b505061242f576113699250612c25565b50506020015190565b9091506124458354611c85565b63ffffffff83161491821561245e575b50505f8061241f565b612485919250612479612473611e55926123b6565b85612cf5565b5165ffffffffffff1690565b115f80612455565b50505050506020015190565b5061136991612c25565b9190916040818403126102da576124b981611348565b9260208201516001600160401b0381116102da576113699201611377565b604051906124e482610bb5565b60606040838281528260208201520152565b906020828203126102da5781516001600160401b03928382116102da5701906060828203126102da576040519261252c84610bb5565b82518181116102da5782612541918501611377565b845260208301518181116102da578261255b918501611377565b602085015260408301519081116102da576125769201611377565b604082015290565b908160209103126102da575190565b60409065ffffffffffff61136994931681528160208201520190610712565b909392936125b86124d7565b9480518061268b575b50506004546001600160a01b03918216911603612683575f546126189291906020906125f790611143906001600160a01b031681565b8187015190604051808097819463810da75d60e01b8352886004840161258d565b03915afa9081156106c35761264b935f92612650575b5061263f9192604087015191611637565b90818082109118021890565b915190565b61263f92506126769060203d60201161267c575b61266e8183610beb565b81019061257e565b9161262e565b503d612664565b505090515f91565b61269f9296506020809183010191016124f6565b935f806125c1565b6004546001600160a01b039290831690831603611aed5760206004925f54166040519384809263bd49c35f60e01b82525afa9182156106c3575f92612702575b506126fd61263f915f52600360205260405f2090565b6121eb565b61263f9192506127236126fd9160203d60201161267c5761266e8183610beb565b9291506126e7565b65ffffffffffff9081811161273e571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b80548061276e5750505f905f905f90565b5f19918183810111611a65575f5260205f2001015460019165ffffffffffff82169160301c90565b600181111561136957600181600160801b8110156128af575b61285761284d61284361283961282f61282561286397600488600160401b61285e9a10156128a2575b640100000000811015612895575b62010000811015612888575b61010081101561287c575b6010811015612870575b1015612868575b60030260011c61281e818b611a39565b0160011c90565b61281e818a611a39565b61281e8189611a39565b61281e8188611a39565b61281e8187611a39565b61281e8186611a39565b8093611a39565b821190565b900390565b60011b61280e565b811c9160021b91612807565b60081c91811b916127fd565b60101c9160081b916127f2565b60201c9160101b916127e6565b60401c9160201b916127d8565b50600160401b9050608082901c6127af565b905b8383106128d05750505090565b9091926128dd8185612e95565b90835f5265ffffffffffff808360205f20015416908416105f146129055750925b91906128c3565b935060018101809111156128fe57611a25565b612920612eaa565b612928612eaa565b60015f80516020612f5083398151915255565b6040519061294882610bb5565b5f6040838281528260208201520152565b81601f820112156102da578051916020916001600160401b038411610bb0578360051b906040519461298d85840187610beb565b855283808601928201019283116102da578301905b8282106129b0575050505090565b83809183516129be81610701565b8152019101906129a2565b6020818303126102da5780516001600160401b03918282116102da5701918281039260a084126102da57606060405194612a0286610bb5565b126102da57604051612a1381610bb5565b8151612a1e81610701565b81526020820151612a2e81610701565b60208201526040820151612a4181610701565b6040820152845260608101519283116102da57612a65608092612576948301612959565b6020850152016113e2565b8051821015611c455760209160051b010190565b612a8c61293b565b50612aa2815191602080809483010191016129c9565b8051516001600160a01b0393919084161580612c19575b612c07576040818101805182516302910f8b60e31b81526001600160a01b0390911660048083019190915296929491928690829060249082907f0000000000000000000000000000000000000000000000000000000000000000165afa9081156106c3575f91612bea575b5015612bd85791938401915f5b83518051821015612ba757611143612b4c83612b5993612a70565b516001600160a01b031690565b15612b9757612b7b612b77612b72612b4c848851612a70565b6120b5565b1590565b612b8757600101612b31565b8451635140fefd60e11b81528790fd5b84516323cda06760e01b81528790fd5b50509051600480546001600160a01b0319166001600160a01b039092169190911790559350612bd4915050565b5190565b604051631f0853c160e21b8152600490fd5b612c019150863d88116106bc576106ae8183610beb565b5f612b24565b6040516303501f5960e11b8152600490fd5b50828101515115612ab9565b908154905f829160058411612c8f575b612c40935084612ed8565b80612c6857505f905b6001600160d01b03821615611aed57611369916001611df59201611c30565b612c82612c77612c8992611c85565b835f5260205f200190565b5460301c90565b90612c49565b9192612c9a81612796565b8103908111611a6557612c4093855f5265ffffffffffff808360205f20015416908516105f14612ccb575091612c35565b929150612cd790611a57565b90612c35565b60405190612cea82610b95565b5f6020838281520152565b90612d1e612d18612d3f92612d08612cdd565b50612d11612cdd565b5084611c30565b50611d55565b91600165ffffffffffff845116936020828060d01b03910151169101611c30565b90549060405192612d4f84610b95565b835260031b1c602082015290565b8054600160401b811015610bb057612d7a91600182018155611c30565b612da557815160209092015160301b65ffffffffffff191665ffffffffffff92909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b80549293928015612e6b57612dcf612dda91611c85565b825f5260205f200190565b9182549265ffffffffffff91828516928116808411612e5957879303612e205750612e1992509065ffffffffffff82549181199060301b169116179055565b60301c9190565b915050612e5491612e40612e32610c1b565b65ffffffffffff9093168352565b6001600160d01b0386166020830152612d5d565b612e19565b604051632520601d60e01b8152600490fd5b5090612e9091612e7c612e32610c1b565b6001600160d01b0385166020830152612d5d565b5f9190565b90808216911860011c8101809111611a655790565b60ff5f80516020612f708339815191525460401c1615612ec657565b604051631afcd79f60e31b8152600490fd5b905b838310612ee75750505090565b909192612ef48185612e95565b90835f5265ffffffffffff808360205f20015416908416105f14612f1c5750925b9190612eda565b93506001810180911115612f1557611a2556fe02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a264697066735822122001234d11bd31f1e4a2b60a7eec5ad2899ab1230e73d3d5f2aab566a8d4ef5db464736f6c63430008190033","sourceMap":"11341:2257:88:-:0;;;;;;;;;;;;;-1:-1:-1;;11341:2257:88;;;;-1:-1:-1;;;;;11341:2257:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;348:4:89;;332:21;;8837:64:22;11341:2257:88;;;;;;;;;7896:76:22;;11341:2257:88;;;;7985:34:22;7981:146;;-1:-1:-1;525:17:76;;;-1:-1:-1;525:17:76;;-1:-1:-1;552:12:76;;-1:-1:-1;2360:34:83;;2404:28;;-1:-1:-1;2404:28:83;;2442:57;;-1:-1:-1;2442:57:83;;2509:61;-1:-1:-1;2509:61:83;;1716:36:87;;-1:-1:-1;1716:36:87;;11845:41:88;;;;11896:24;;;;11930:40;;;;11341:2257;;;;;;;;332:21:89;11341:2257:88;;;;;525:17:76;11341:2257:88;;;;;552:12:76;11341:2257:88;;;;;2360:34:83;11341:2257:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7981:146:22;-1:-1:-1;;;;;;11341:2257:88;;;;;;;;;;;;;8087:29:22;;11341:2257:88;;8087:29:22;7981:146;;;;;7896:76;11341:2257:88;;-1:-1:-1;;;7938:23:22;;;;;11341:2257:88;-1:-1:-1;11341:2257:88;;;;;;-1:-1:-1;11341:2257:88;;;;;-1:-1:-1;11341:2257:88;;;;-1:-1:-1;;;;;11341:2257:88;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a714610284578063021453481461027f578063103f29071461027a578063128e5d8214610275578063197aa7ea146102705780631a80e5001461026b57806323f752d514610266578063248a9ca31461026157806325dc97081461025c5780632dd31000146102575780632f2ff15d1461025257806336568abe1461024d5780633dfd3873146102485780633eb22c0f14610243578063439fab911461023e57806345e78fcb14610239578063557cab4414610234578063570ca7351461022f5780635d32a1c91461022a5780636679191e1461022557806379d89614146102205780637d24bb271461021b5780637f5a7c7b1461021657806383ce03221461021157806391d148541461020c5780639b656b22146102075780639f86fd8514610202578063a217fddf146101fd578063bb24fe8a146101f8578063c0cd7c3e146101f3578063d15b740e146101ee578063d547741f146101e9578063da749d2b146101e4578063e02f6937146101df578063e49561ee146101da578063fbfa77cf146101d5578063fd4d447c146101d0578063ff54740f146101cb5763ffa1ad74146101c6575f80fd5b61132d565b611310565b6112e6565b6112bf565b6110d4565b61107f565b61104a565b610ffe565b610fd4565b610f90565b610f4d565b610f33565b610e9f565b610e5b565b610dfd565b610db9565b610d91565b610d58565b610d14565b610cda565b610c89565b610b59565b610b3d565b610af9565b6109c1565b610963565b61086a565b61081f565b6107d3565b61078f565b610736565b6106c8565b610542565b6104fe565b610471565b6103ee565b6103aa565b6102de565b346102da5760203660031901126102da5760043563ffffffff60e01b81168091036102da57602090637965db0b60e01b81149081156102c9575b506040519015158152f35b6301ffc9a760e01b1490505f6102be565b5f80fd5b346102da576040806003193601126102da576004359060243590610300611b94565b825f526002602052805f2054821161039a57825f52600360205281610326825f206121eb565b1461038a5781610385916103757e899d104fc3d8820bd96540612bcc5c448c8837b13b9f7faa43ad0728f0c14f94610366875f52600360205260405f2090565b61036f4261272b565b90611c93565b5050519081529081906020820190565b0390a2005b5163a741a04560e01b8152600490fd5b51631eefc06360e31b8152600490fd5b346102da575f3660031901126102da576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102da575f3660031901126102da576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6024359065ffffffffffff821682036102da57565b6064359065ffffffffffff821682036102da57565b6044359065ffffffffffff821682036102da57565b346102da5760403660031901126102da5761048a610432565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036104ec5763ffffffff6104d76040926004355f526003602052835f20611d79565b91505083929192519215158352166020820152f35b604051637ca475e560e11b8152600490fd5b346102da575f3660031901126102da576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102da5760403660031901126102da576004356001600160601b03811681036102da5760243590610572611e88565b6040516302910f8b60e31b81523360048201526020816024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa9081156106c3575f91610694575b5015610682576001600160601b03166bffffffffffffffffffffffff193360601b161790806105fc835f52600260205260405f2090565b541461067057610655817fc67e7929681aa1bccd63f52b3799bf5805f3009f197db6fdf584b14f7fbf608c9261063a855f52600260205260405f2090565b556106458185611eb7565b6040519081529081906020820190565b0390a261066e60015f80516020612f5083398151915255565b005b60405163a741a04560e01b8152600490fd5b6040516323d53b9760e21b8152600490fd5b6106b6915060203d6020116106bc575b6106ae8183610beb565b810190611355565b5f6105c5565b503d6106a4565b61136c565b346102da5760203660031901126102da576004355f525f80516020612f308339815191526020526020600160405f200154604051908152f35b6001600160a01b038116036102da57565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b346102da5760803660031901126102da5761078b61077760043561075981610701565b60443561076581610701565b61076d610447565b9160243590611451565b604051918291602083526020830190610712565b0390f35b346102da575f3660031901126102da576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102da5760403660031901126102da5761066e6024356004356107f682610701565b805f525f80516020612f3083398151915260205261081a600160405f200154611bf0565b612123565b346102da5760403660031901126102da5760243561083c81610701565b336001600160a01b038216036108585761066e90600435612159565b60405163334bd91960e11b8152600490fd5b346102da5760203660031901126102da5760043561088781610701565b61088f611e88565b335f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c60205260409020547fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c9060ff161561094557506001546001600160a01b039182169181168214610670576001600160a01b03191681176001557f5bbb1d3ebb6a3ad2a0f17ff35e579a83af60604d1d3c2a4c83c62adecadf666d5f80a260015f80516020612f5083398151915255005b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b346102da5760203660031901126102da576004355f526003602052602061098c60405f206121eb565b604051908152f35b9181601f840112156102da578235916001600160401b0383116102da57602083818601950101116102da57565b346102da5760203660031901126102da576001600160401b036004358181116102da576109f2903690600401610994565b5f80516020612f70833981519152549260ff8460401c1615931680159081610af1575b6001149081610ae7575b159081610ade575b50610acc575f80516020612f70833981519152805467ffffffffffffffff19166001179055610a5a9183610aa857612264565b610a6057005b5f80516020612f70833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f80516020612f70833981519152805460ff60401b1916600160401b179055612264565b60405163f92ee8a960e01b8152600490fd5b9050155f610a27565b303b159150610a1f565b849150610a15565b346102da575f3660031901126102da576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102da575f3660031901126102da576020604051614e208152f35b346102da575f3660031901126102da576004546040516001600160a01b039091168152602090f35b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b03821117610bb057604052565b610b81565b606081019081106001600160401b03821117610bb057604052565b608081019081106001600160401b03821117610bb057604052565b90601f801991011681019081106001600160401b03821117610bb057604052565b60405190610c1982610bb5565b565b60405190610c1982610b95565b6001600160401b038111610bb057601f01601f191660200190565b81601f820112156102da57803590610c5a82610c28565b92610c686040519485610beb565b828452602083830101116102da57815f926020809301838601378301015290565b346102da5760603660031901126102da57610ca2610432565b6044356001600160401b0381116102da57602091610cc761098c923690600401610c43565b906004355f526003845260405f206123cb565b346102da575f3660031901126102da5760206040517fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c8152f35b346102da575f3660031901126102da576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102da575f3660031901126102da5760206040517e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf8152f35b346102da575f3660031901126102da576001546040516001600160a01b039091168152602090f35b346102da575f3660031901126102da576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102da5760403660031901126102da57602060ff610e4f602435610e2181610701565b6004355f525f80516020612f30833981519152845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b346102da575f3660031901126102da576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102da5760403660031901126102da57600435610ebc81610701565b6024356001600160401b0381116102da575f91610ede83923690600401610994565b90816040519283928337810184815203915af4610f2b610efc61164d565b91610f1d604051938492151560208401526040808401526060830190610712565b03601f198101835282610beb565b805190602001fd5b346102da575f3660031901126102da5760206040515f8152f35b346102da575f3660031901126102da5760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102da575f3660031901126102da576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102da5760203660031901126102da576004355f526002602052602060405f2054604051908152f35b346102da5760403660031901126102da5761066e60243560043561102182610701565b805f525f80516020612f30833981519152602052611045600160405f200154611bf0565b612159565b346102da5760603660031901126102da5761078b61077760043561106d81610701565b61107561045c565b90602435906116ae565b346102da5760803660031901126102da5760243561109c81610701565b6110a461045c565b90606435906001600160401b0382116102da576020926110cb61098c933690600401610c43565b91600435611863565b346102da5760a03660031901126102da576024356004356110f482610701565b60443591611100610447565b90608435906001600160401b0382116102da5761112260049236908401610c43565b61112a611e88565b5f5460209061114f90611143906001600160a01b031681565b6001600160a01b031690565b60405163b134427160e01b815294859182905afa9283156106c3575f9361128e575b506001600160a01b03928316330361127c576001546001600160a01b03168381166111f1575b50506040805195865265ffffffffffff909316602086015216927f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed91819081015b0390a361066e60015f80516020612f5083398151915255565b9093604051946112288661121a602082019363724ab0f760e11b8552858c898d602487016119ed565b03601f198101885287610beb565b62042e305a1061126a575f6111d8938192827f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed9951926203d090f15093611197565b604051638072475160e01b8152600490fd5b60405163dabc4ad960e01b8152600490fd5b6112b191935060203d6020116112b8575b6112a98183610beb565b8101906113ed565b915f611171565b503d61129f565b346102da575f3660031901126102da575f546040516001600160a01b039091168152602090f35b346102da5760403660031901126102da57602061098c60243561130881610701565b600435611a6a565b346102da575f3660031901126102da5760206040516203d0908152f35b346102da575f3660031901126102da57602060405160018152f35b519081151582036102da57565b908160209103126102da5761136990611348565b90565b6040513d5f823e3d90fd5b81601f820112156102da5780519061138e82610c28565b9261139c6040519485610beb565b828452602083830101116102da57815f9260208093018386015e8301015290565b906020828203126102da5781516001600160401b0381116102da576113699201611377565b5190610c1982610701565b908160209103126102da575161136981610701565b9061136991602081526114218251606060208401526080830190610712565b9060606040611441602086015194601f1995868683030184870152610712565b9401519282850301910152610712565b604051630df8851f60e11b81526001600160a01b03828116600483015260248201849052938416604482015265ffffffffffff8516606482015260609594909391925f856084817f000000000000000000000000000000000000000000000000000000000000000087165afa9485156106c3575f9561161b575b5060405163fbfa77cf60e01b81526020816004818888165afa9081156106c357611537945f92859284916115fc575b5060405163192c0ff760e21b81526001600160a01b03909116600482015265ffffffffffff90921660248301529094859190829081906044820190565b03917f0000000000000000000000000000000000000000000000000000000000000000165afa9283156106c3575f936115d6575b5061157692936116ae565b908251158015906115cc575b80156115c2575b61159257505050565b610f1d9394509061136992916115a6610c0c565b9283526020830152604082015260405192839160208301611402565b5081511515611589565b5080511515611582565b61157693506115f6903d805f833e6115ee8183610beb565b8101906113bd565b9261156b565b611615915060203d6020116112b8576112a98183610beb565b5f6114fa565b6116309195503d805f833e6115ee8183610beb565b935f6114cb565b9061136992915f52600360205260405f206123cb565b3d15611677573d9061165e82610c28565b9161166c6040519384610beb565b82523d5f602084013e565b606090565b519063ffffffff821682036102da57565b91908260409103126102da5761136960206116a784611348565b930161167c565b92915f8060609565ffffffffffff60405194602096630cbd53f560e11b888801526024870152166044850152604484526116e784610bd0565b604051938461171487820192639f86fd8560e01b8452306024840152604060448401526064830190610712565b0394611728601f1996878101835282610beb565b51915afa5061174661173861164d565b8380825183010191016124a3565b90156117995780838061175e9351830101910161168d565b929061176957505050565b6113699293945061178d604051948592830191909163ffffffff6020820193169052565b03908101835282610beb565b809150519182156102da5701fd5b604051906117b482610b95565b60606020838281520152565b906020828203126102da5781516001600160401b03928382116102da5701906040828203126102da57604051926117f684610b95565b82518181116102da578261180b918501611377565b845260208301519081116102da576118239201611377565b602082015290565b6001600160a01b0391821681529116602082015265ffffffffffff909116604082015260806060820181905261136992910190610712565b92611873909291928284866125ac565b92909361187e6117a7565b938051806119d1575b5050841593841561193b575b84156118aa575b505050506118a55790565b505f90565b6020809495506118d5910151604051958694859463530e1d4360e01b865260601c906004860161182b565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156106c3575f9161191c575b50155f80808061189a565b611935915060203d6020116106bc576106ae8183610beb565b5f611911565b5f549094506001600160a01b031660208486519261196e604051948593849363530e1d4360e01b8552896004860161182b565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156106c3575f916119b2575b501593611893565b6119cb915060203d6020116106bc576106ae8183610beb565b5f6119aa565b6119e59295506020809183010191016117c0565b925f80611887565b919360a093611369969565ffffffffffff938552600180871b0316602085015260408401521660608201528160808201520190610712565b634e487b7160e01b5f52601160045260245ffd5b8115611a43570490565b634e487b7160e01b5f52601260045260245ffd5b9060018201809211611a6557565b611a25565b5f546040516308834cb560e21b8082526001600160a01b0385811660048401529283166024830152929392602092909183816044817f000000000000000000000000000000000000000000000000000000000000000086165afa9081156106c3575f91611b77575b5015918215611af3575b50509050611aed57611369916126a7565b50505f90565b6040519081526001600160a01b0385166004820152606086901c602482015291508290829060449082907f0000000000000000000000000000000000000000000000000000000000000000165afa9182156106c3575f92611b5a575b505015805f80611adc565b611b709250803d106106bc576106ae8183610beb565b5f80611b4f565b611b8e9150843d86116106bc576106ae8183610beb565b5f611ad2565b335f9081527f72a65082a5691803ab2b62c9bc729b34205ba1b183d950896526b2fd8714d0c7602052604090207e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf9060ff905b5416156109455750565b5f8181525f80516020612f3083398151915260209081526040808320338452909152902060ff90611be6565b634e487b7160e01b5f52603260045260245ffd5b8054821015611c45575f5260205f2001905f90565b611c1c565b90815491600160401b831015610bb05782611c6d916001610c1995018155611c30565b90919082549060031b91821b915f19901b1916179055565b5f19810191908211611a6557565b90929192600182019081548015611d25575b5084611cb08461275d565b50949092845493611cc0836121eb565b9681611d10575b5015611ced575050505f198101908111611a6557611c6d8591611ce993611c30565b9190565b611ce9949293611d09926001600160d01b039091169190612db8565b5050611c4a565b65ffffffffffff83811691161490505f611cc7565b600160401b811015610bb057806001611d419201845583611c30565b8154905f199060031b1b191690555f611ca5565b90604051611d6281610b95565b915465ffffffffffff8116835260301c6020830152565b91908254905f829160058411611e21575b611d959350856128c1565b908115611e1557611e0e611e05611dff611df5611dc7611dc2611db788611c85565b895f5260205f200190565b611d55565b966001611dee6020611ddf8b5165ffffffffffff1690565b9a01516001600160d01b031690565b9101611c30565b90549060031b1c90565b93611c85565b63ffffffff1690565b6001939291565b5f925082915081908190565b9192611e2c81612796565b8103908111611a6557611d9593865f52611e60611e558360205f200165ffffffffffff90541690565b65ffffffffffff1690565b65ffffffffffff85161015611e76575091611d8a565b929150611e8290611a57565b90611d8a565b5f80516020612f508339815191526002815414611ea55760029055565b604051633ee5aeb560e01b8152600490fd5b90815f52600360205260405f2081611ece8261275d565b919390508315611f2c57611eee916001600160d01b031690600101611c30565b90549060031b1c5b82611f22575b5050611f06575050565b611f1e915f52600360205260405f2061036f4261272b565b5050565b119050815f611efc565b50505f611ef6565b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260409020545f80516020612f308339815191529060ff16611aed575f808052602091825260408082206001600160a01b038516835290925220805460ff1916600117905533906001600160a01b03165f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b6001600160a01b0381165f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c602052604090207fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c905f80516020612f308339815191529060ff905b54166120ae575f828152602091825260408082206001600160a01b038616835290925220805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b5050505f90565b6001600160a01b0381165f9081527f72a65082a5691803ab2b62c9bc729b34205ba1b183d950896526b2fd8714d0c7602052604090207e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf905f80516020612f308339815191529060ff9061204a565b5f8181525f80516020612f30833981519152602081815260408084206001600160a01b038716855290915290912060ff9061204a565b5f8181525f80516020612f30833981519152602081815260408084206001600160a01b03871685529091529091205460ff16156120ae575f828152602091825260408082206001600160a01b038616835290925220805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b80548061221057505f5b6001600160d01b03811615611aed576001611df59201611c30565b5f19908082810111611a6557825f5260205f2001015460301c6121f5565b9190916040818403126102da57803561224681610701565b9260208201356001600160401b0381116102da576113699201610c43565b6122709181019061222e565b6040516302910f8b60e31b81526001600160a01b039283166004820181905291906020816024817f000000000000000000000000000000000000000000000000000000000000000088165afa9081156106c3575f91612383575b50156123715761230560409161230061234b946122e5612918565b60018060a01b03166001600160601b0360a01b5f5416175f55565b612a84565b6020810151600180546001600160a01b0319166001600160a01b0390921691909117905580516001600160a01b0316848116612361575b5001516001600160a01b031690565b9081166123555750565b61235e90611fdf565b50565b61236a90611f34565b505f61233c565b6040516362df054560e01b8152600490fd5b61239c915060203d6020116106bc576106ae8183610beb565b5f6122ca565b908160209103126102da576113699061167c565b90600163ffffffff80931601918211611a6557565b9180511561249957806020806123e6935183010191016123a2565b916123f18382612cf5565b92612402845165ffffffffffff1690565b9065ffffffffffff808516921682811461248d5782119182612438575b505061242f576113699250612c25565b50506020015190565b9091506124458354611c85565b63ffffffff83161491821561245e575b50505f8061241f565b612485919250612479612473611e55926123b6565b85612cf5565b5165ffffffffffff1690565b115f80612455565b50505050506020015190565b5061136991612c25565b9190916040818403126102da576124b981611348565b9260208201516001600160401b0381116102da576113699201611377565b604051906124e482610bb5565b60606040838281528260208201520152565b906020828203126102da5781516001600160401b03928382116102da5701906060828203126102da576040519261252c84610bb5565b82518181116102da5782612541918501611377565b845260208301518181116102da578261255b918501611377565b602085015260408301519081116102da576125769201611377565b604082015290565b908160209103126102da575190565b60409065ffffffffffff61136994931681528160208201520190610712565b909392936125b86124d7565b9480518061268b575b50506004546001600160a01b03918216911603612683575f546126189291906020906125f790611143906001600160a01b031681565b8187015190604051808097819463810da75d60e01b8352886004840161258d565b03915afa9081156106c35761264b935f92612650575b5061263f9192604087015191611637565b90818082109118021890565b915190565b61263f92506126769060203d60201161267c575b61266e8183610beb565b81019061257e565b9161262e565b503d612664565b505090515f91565b61269f9296506020809183010191016124f6565b935f806125c1565b6004546001600160a01b039290831690831603611aed5760206004925f54166040519384809263bd49c35f60e01b82525afa9182156106c3575f92612702575b506126fd61263f915f52600360205260405f2090565b6121eb565b61263f9192506127236126fd9160203d60201161267c5761266e8183610beb565b9291506126e7565b65ffffffffffff9081811161273e571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b80548061276e5750505f905f905f90565b5f19918183810111611a65575f5260205f2001015460019165ffffffffffff82169160301c90565b600181111561136957600181600160801b8110156128af575b61285761284d61284361283961282f61282561286397600488600160401b61285e9a10156128a2575b640100000000811015612895575b62010000811015612888575b61010081101561287c575b6010811015612870575b1015612868575b60030260011c61281e818b611a39565b0160011c90565b61281e818a611a39565b61281e8189611a39565b61281e8188611a39565b61281e8187611a39565b61281e8186611a39565b8093611a39565b821190565b900390565b60011b61280e565b811c9160021b91612807565b60081c91811b916127fd565b60101c9160081b916127f2565b60201c9160101b916127e6565b60401c9160201b916127d8565b50600160401b9050608082901c6127af565b905b8383106128d05750505090565b9091926128dd8185612e95565b90835f5265ffffffffffff808360205f20015416908416105f146129055750925b91906128c3565b935060018101809111156128fe57611a25565b612920612eaa565b612928612eaa565b60015f80516020612f5083398151915255565b6040519061294882610bb5565b5f6040838281528260208201520152565b81601f820112156102da578051916020916001600160401b038411610bb0578360051b906040519461298d85840187610beb565b855283808601928201019283116102da578301905b8282106129b0575050505090565b83809183516129be81610701565b8152019101906129a2565b6020818303126102da5780516001600160401b03918282116102da5701918281039260a084126102da57606060405194612a0286610bb5565b126102da57604051612a1381610bb5565b8151612a1e81610701565b81526020820151612a2e81610701565b60208201526040820151612a4181610701565b6040820152845260608101519283116102da57612a65608092612576948301612959565b6020850152016113e2565b8051821015611c455760209160051b010190565b612a8c61293b565b50612aa2815191602080809483010191016129c9565b8051516001600160a01b0393919084161580612c19575b612c07576040818101805182516302910f8b60e31b81526001600160a01b0390911660048083019190915296929491928690829060249082907f0000000000000000000000000000000000000000000000000000000000000000165afa9081156106c3575f91612bea575b5015612bd85791938401915f5b83518051821015612ba757611143612b4c83612b5993612a70565b516001600160a01b031690565b15612b9757612b7b612b77612b72612b4c848851612a70565b6120b5565b1590565b612b8757600101612b31565b8451635140fefd60e11b81528790fd5b84516323cda06760e01b81528790fd5b50509051600480546001600160a01b0319166001600160a01b039092169190911790559350612bd4915050565b5190565b604051631f0853c160e21b8152600490fd5b612c019150863d88116106bc576106ae8183610beb565b5f612b24565b6040516303501f5960e11b8152600490fd5b50828101515115612ab9565b908154905f829160058411612c8f575b612c40935084612ed8565b80612c6857505f905b6001600160d01b03821615611aed57611369916001611df59201611c30565b612c82612c77612c8992611c85565b835f5260205f200190565b5460301c90565b90612c49565b9192612c9a81612796565b8103908111611a6557612c4093855f5265ffffffffffff808360205f20015416908516105f14612ccb575091612c35565b929150612cd790611a57565b90612c35565b60405190612cea82610b95565b5f6020838281520152565b90612d1e612d18612d3f92612d08612cdd565b50612d11612cdd565b5084611c30565b50611d55565b91600165ffffffffffff845116936020828060d01b03910151169101611c30565b90549060405192612d4f84610b95565b835260031b1c602082015290565b8054600160401b811015610bb057612d7a91600182018155611c30565b612da557815160209092015160301b65ffffffffffff191665ffffffffffff92909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b80549293928015612e6b57612dcf612dda91611c85565b825f5260205f200190565b9182549265ffffffffffff91828516928116808411612e5957879303612e205750612e1992509065ffffffffffff82549181199060301b169116179055565b60301c9190565b915050612e5491612e40612e32610c1b565b65ffffffffffff9093168352565b6001600160d01b0386166020830152612d5d565b612e19565b604051632520601d60e01b8152600490fd5b5090612e9091612e7c612e32610c1b565b6001600160d01b0385166020830152612d5d565b5f9190565b90808216911860011c8101809111611a655790565b60ff5f80516020612f708339815191525460401c1615612ec657565b604051631afcd79f60e31b8152600490fd5b905b838310612ee75750505090565b909192612ef48185612e95565b90835f5265ffffffffffff808360205f20015416908416105f14612f1c5750925b9190612eda565b93506001810180911115612f1557611a2556fe02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a264697066735822122001234d11bd31f1e4a2b60a7eec5ad2899ab1230e73d3d5f2aab566a8d4ef5db464736f6c63430008190033","sourceMap":"11341:2257:88:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;-1:-1:-1;;11341:2257:88;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3551:47:19;;;:87;;;;11341:2257:88;;;;;;;;;;3551:87:19;-1:-1:-1;;;1134:40:28;;-1:-1:-1;3551:87:19;;;11341:2257:88;-1:-1:-1;11341:2257:88;;;;;;;;;;;;;;;;;;;;3202:4:19;;;:::i;:::-;11341:2257:88;-1:-1:-1;11341:2257:88;2428:15:87;11341:2257:88;;;-1:-1:-1;11341:2257:88;;2419:36:87;;2415:98;;11341:2257:88;-1:-1:-1;11341:2257:88;2193:13:87;11341:2257:88;;;2193:34:87;11341:2257:88;-1:-1:-1;11341:2257:88;2193:34:87;:::i;:::-;2527;2523:84;;2617:25;2689:35;2617:25;:56;2689:35;2617:25;;;11341:2257:88;;2193:13:87;11341:2257:88;;;;;;;2617:25:87;819:34:68;837:15;819:34;:::i;:::-;2617:56:87;;:::i;:::-;-1:-1:-1;;11341:2257:88;;;;;;;;;;;;2689:35:87;;;;11341:2257:88;2523:84:87;11341:2257:88;-1:-1:-1;;;2584:12:87;;11341:2257:88;;2584:12:87;2415:98;11341:2257:88;-1:-1:-1;;;2478:24:87;;11341:2257:88;;2478:24:87;11341:2257:88;;;;;;-1:-1:-1;;11341:2257:88;;;;;;1537:38:83;-1:-1:-1;;;;;11341:2257:88;;;;;;;;;;;;-1:-1:-1;;11341:2257:88;;;;;;1632:54:83;-1:-1:-1;;;;;11341:2257:88;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;11341:2257:88;;;;;;:::i;:::-;449:5:89;-1:-1:-1;;;;;11341:2257:88;435:10:89;:19;431:71;;11341:2257:88;12172:64;11341:2257;;;;-1:-1:-1;11341:2257:88;12172:13;11341:2257;;;-1:-1:-1;11341:2257:88;12172:64;:::i;:::-;11341:2257;;;;;;;;;;;;;;;;;;;431:71:89;11341:2257:88;;-1:-1:-1;;;477:14:89;;11341:2257:88;;477:14:89;11341:2257:88;;;;;;-1:-1:-1;;11341:2257:88;;;;;;1743:56:83;-1:-1:-1;;;;;11341:2257:88;;;;;;;;;;;;-1:-1:-1;;11341:2257:88;;;;;;-1:-1:-1;;;;;11341:2257:88;;;;;;;;3361:103:26;;;:::i;:::-;11341:2257:88;;-1:-1:-1;;;4285:48:83;;4322:10;11341:2257:88;4285:48:83;;11341:2257:88;;;;;-1:-1:-1;;;;;4295:16:83;11341:2257:88;4285:48:83;;;;;;;-1:-1:-1;4285:48:83;;;11341:2257:88;4284:49:83;;4280:99;;-1:-1:-1;;;;;11341:2257:88;-1:-1:-1;;4322:10:83;297:2:95;11341:2257:88;;267:46:95;4459:27:83;;;;11341:2257:88;;4459:15:83;11341:2257:88;;;;;;;4459:27:83;11341:2257:88;4459:37:83;4455:87;;4654:38;4552:27;4654:38;4552:27;;;11341:2257:88;;4459:15:83;11341:2257:88;;;;;;;4552:27:83;11341:2257:88;4631:6:83;;;;:::i;:::-;11341:2257:88;;;;;;;;;;;;;4654:38:83;;;;3426:1:26;1949;-1:-1:-1;;;;;;;;;;;11341:2257:88;3860:283:26;3426:1;11341:2257:88;4455:87:83;11341:2257:88;;-1:-1:-1;;;4519:12:83;;11341:2257:88;;4519:12:83;4280:99;11341:2257:88;;-1:-1:-1;;;4356:12:83;;11341:2257:88;;4356:12:83;4285:48;;;;11341:2257:88;4285:48:83;11341:2257:88;4285:48:83;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;11341:2257:88:-;;;;;;-1:-1:-1;;11341:2257:88;;;;;;-1:-1:-1;11341:2257:88;-1:-1:-1;;;;;;;;;;;11341:2257:88;;;4919:24:19;11341:2257:88;-1:-1:-1;11341:2257:88;4919:24:19;11341:2257:88;;;;;;;;-1:-1:-1;;;;;11341:2257:88;;;;;:::o;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;11341:2257:88;;;;;;;;-1:-1:-1;;11341:2257:88;;;;:::o;:::-;;;;;;-1:-1:-1;;11341:2257:88;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;11341:2257:88;;;;;;322:32:76;-1:-1:-1;;;;;11341:2257:88;;;;;;;;;;;;-1:-1:-1;;11341:2257:88;;;;5350:25:19;11341:2257:88;;;;;;;:::i;:::-;;-1:-1:-1;11341:2257:88;-1:-1:-1;;;;;;;;;;;11341:2257:88;;3202:4:19;4919:24;11341:2257:88;-1:-1:-1;11341:2257:88;4919:24:19;11341:2257:88;3202:4:19;:::i;:::-;5350:25;:::i;11341:2257:88:-;;;;;;-1:-1:-1;;11341:2257:88;;;;;;;;;:::i;:::-;966:10:24;-1:-1:-1;;;;;11341:2257:88;;6441:34:19;6437:102;;6549:37;11341:2257:88;;;6549:37:19;:::i;6437:102::-;11341:2257:88;;-1:-1:-1;;;6498:30:19;;11341:2257:88;;6498:30:19;11341:2257:88;;;;;;-1:-1:-1;;11341:2257:88;;;;;;;;;:::i;:::-;3361:103:26;;:::i;:::-;966:10:24;-1:-1:-1;11341:2257:88;;;;;;;;;;1356:26:83;;11341:2257:88;;4468:23:19;4464:108;;-1:-1:-1;4861:4:83;11341:2257:88;-1:-1:-1;;;;;11341:2257:88;;;;;;4861:13:83;;4857:63;;-1:-1:-1;;;;;;11341:2257:88;;;4861:4:83;11341:2257:88;4958:14:83;-1:-1:-1;;4958:14:83;4861:4;-1:-1:-1;;;;;;;;;;;11341:2257:88;;4464:108:19;11341:2257:88;;;;4514:47:19;;;;;;966:10:24;11341:2257:88;4514:47:19;;11341:2257:88;;;;;4514:47:19;11341:2257:88;;;;;;-1:-1:-1;;11341:2257:88;;;;;;-1:-1:-1;11341:2257:88;2193:13:87;11341:2257:88;;;2193:34:87;11341:2257:88;-1:-1:-1;11341:2257:88;2193:34:87;:::i;:::-;11341:2257:88;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11341:2257:88;;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;11341:2257:88;;;;-1:-1:-1;;;;;11341:2257:88;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;11341:2257:88;;;;;;;4301:16:22;11341:2257:88;;4726:16:22;;:34;;;;11341:2257:88;4805:1:22;4790:16;:50;;;;11341:2257:88;4855:13:22;:30;;;;11341:2257:88;4851:91:22;;;-1:-1:-1;;;;;;;;;;;11341:2257:88;;-1:-1:-1;;11341:2257:88;;;;;718:4:76;;4951:18:22;4979:67;;718:4:76;:::i;:::-;5066:101:22;;11341:2257:88;5066:101:22;-1:-1:-1;;;;;;;;;;;11341:2257:88;;-1:-1:-1;;;;11341:2257:88;;;;;-1:-1:-1;11341:2257:88;;5142:14:22;;11341:2257:88;;5142:14:22;11341:2257:88;4979:67:22;-1:-1:-1;;;;;;;;;;;11341:2257:88;;-1:-1:-1;;;;11341:2257:88;-1:-1:-1;;;11341:2257:88;;;718:4:76;:::i;4851:91:22:-;11341:2257:88;;-1:-1:-1;;;4908:23:22;;11341:2257:88;;4908:23:22;4855:30;4872:13;;;4855:30;;;4790:50;4818:4;4810:25;:30;;-1:-1:-1;4790:50:22;;4726:34;;;-1:-1:-1;4726:34:22;;11341:2257:88;;;;;;-1:-1:-1;;11341:2257:88;;;;;;11523:36;-1:-1:-1;;;;;11341:2257:88;;;;;;;;;;;;-1:-1:-1;;11341:2257:88;;;;;;;1253:6:83;11341:2257:88;;;;;;;;;-1:-1:-1;;11341:2257:88;;;;;;;;-1:-1:-1;;;;;11341:2257:88;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11341:2257:88;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;-1:-1:-1;;;;;11341:2257:88;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;11341:2257:88;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;11341:2257:88;;;;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;:::i;:::-;-1:-1:-1;;;;;11341:2257:88;;;;;;-1:-1:-1;;11341:2257:88;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;11341:2257:88;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;11341:2257:88;;;;;;:::i;:::-;;;-1:-1:-1;;;;;11341:2257:88;;;;;;;1955:60:87;11341:2257:88;;;;;;:::i;:::-;;;;-1:-1:-1;11341:2257:88;1955:13:87;11341:2257:88;;;-1:-1:-1;11341:2257:88;1955:60:87;:::i;11341:2257:88:-;;;;;;-1:-1:-1;;11341:2257:88;;;;;;;1356:26:83;11341:2257:88;;;;;;;;;-1:-1:-1;;11341:2257:88;;;;;;11472:45;-1:-1:-1;;;;;11341:2257:88;;;;;;;;;;;;-1:-1:-1;;11341:2257:88;;;;;;;885:35:87;11341:2257:88;;;;;;;;;-1:-1:-1;;11341:2257:88;;;;;;;;-1:-1:-1;;;;;11341:2257:88;;;;;;;;;;;;;;-1:-1:-1;;11341:2257:88;;;;;;989:42:87;-1:-1:-1;;;;;11341:2257:88;;;;;;;;;;;;-1:-1:-1;;11341:2257:88;;;;;;3901:31:19;11341:2257:88;;;;;:::i;:::-;;;-1:-1:-1;11341:2257:88;-1:-1:-1;;;;;;;;;;;11341:2257:88;;;-1:-1:-1;11341:2257:88;;;;;;;;;;;;;;;;;3901:31:19;11341:2257:88;;;;;;;;;;;;;;;;-1:-1:-1;;11341:2257:88;;;;;;11565:45;-1:-1:-1;;;;;11341:2257:88;;;;;;;;;;;;-1:-1:-1;;11341:2257:88;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;11341:2257:88;;;;-1:-1:-1;11341:2257:88;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;416:25:82;;;;477:31;416:25;;:::i;:::-;11341:2257:88;;;;;;;;;;477:31:82;;11341:2257:88;;;;;;;;;;;:::i;:::-;477:31:82;11341:2257:88;;477:31:82;;;;;;:::i;:::-;518:79;;;11341:2257:88;518:79:82;;11341:2257:88;;;;;;-1:-1:-1;;11341:2257:88;;;;;;;;;;;;;;;;;-1:-1:-1;;11341:2257:88;;;;;;;-1:-1:-1;;;;;404:28:76;11341:2257:88;;;;;;;;;;-1:-1:-1;;11341:2257:88;;;;;;1439:41:83;-1:-1:-1;;;;;11341:2257:88;;;;;;;;;;;;-1:-1:-1;;11341:2257:88;;;;;;-1:-1:-1;11341:2257:88;2009:67:83;11341:2257:88;;;;-1:-1:-1;11341:2257:88;;;;;;;;;;;;;;-1:-1:-1;;11341:2257:88;;;;5767:26:19;11341:2257:88;;;;;;;:::i;:::-;;-1:-1:-1;11341:2257:88;-1:-1:-1;;;;;;;;;;;11341:2257:88;;3202:4:19;4919:24;11341:2257:88;-1:-1:-1;11341:2257:88;4919:24:19;11341:2257:88;3202:4:19;:::i;:::-;5767:26;:::i;11341:2257:88:-;;;;;;-1:-1:-1;;11341:2257:88;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;-1:-1:-1;;11341:2257:88;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;-1:-1:-1;;;;;11341:2257:88;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;-1:-1:-1;;11341:2257:88;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;11341:2257:88;;;;;;;;;;;;:::i;:::-;3361:103:26;;:::i;:::-;-1:-1:-1;11341:2257:88;;;5246:21:83;;:13;;-1:-1:-1;;;;;11341:2257:88;5246:13:83;11341:2257:88;;-1:-1:-1;;;;;11341:2257:88;;;5246:21:83;11341:2257:88;;-1:-1:-1;;;5246:23:83;;11341:2257:88;;;;;5246:23:83;;;;;;;-1:-1:-1;5246:23:83;;;11341:2257:88;-1:-1:-1;;;;;;11341:2257:88;;;5232:10:83;:37;5228:87;;5341:4;11341:2257:88;-1:-1:-1;;;;;11341:2257:88;;;;5355:469:83;;11341:2257:88;-1:-1:-1;;11341:2257:88;;;;;;;;;;;;;;;;5839:55:83;;11341:2257:88;;;;5839:55:83;;;;3426:1:26;1949;-1:-1:-1;;;;;;;;;;;11341:2257:88;3860:283:26;5355:469:83;11341:2257:88;;;;5435:94:83;;;;11341:2257:88;5435:94:83;;;;;;;;;;;;11341:2257:88;5435:94:83;;;:::i;:::-;;11341:2257:88;;5435:94:83;;;;;;:::i;:::-;11341:2257:88;5548:9:83;:51;5544:118;;-1:-1:-1;5839:55:83;5676:138;;;;5839:55;5676:138;;;1150:7;5676:138;;5355:469;;;5544:118;11341:2257:88;;-1:-1:-1;;;5626:21:83;;11341:2257:88;;5626:21:83;5228:87;11341:2257:88;;-1:-1:-1;;;5292:12:83;;11341:2257:88;;5292:12:83;5246:23;;;;;11341:2257:88;5246:23:83;11341:2257:88;5246:23:83;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;11341:2257:88;;;;;;-1:-1:-1;;11341:2257:88;;;;;;;;-1:-1:-1;;;;;11341:2257:88;;;;;;;;;;;;;;-1:-1:-1;;11341:2257:88;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;-1:-1:-1;;11341:2257:88;;;;;;;1150:7:83;11341:2257:88;;;;;;;;;-1:-1:-1;;11341:2257:88;;;;;;;2700:1:83;11341:2257:88;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;11341:2257:88;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;11341:2257:88;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;12761:835::-;11341:2257;;-1:-1:-1;;;12978:99:88;;-1:-1:-1;;;;;11341:2257:88;;;12978:99;;;11341:2257;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11341:2257:88;;;12997:20;11341:2257;;12978:99;;;;;;;;;;;12761:835;-1:-1:-1;11341:2257:88;;-1:-1:-1;;;13171:32:88;;;11341:2257;12978:99;11341:2257;;;;13171:32;;;;;;;13131:84;13171:32;12978:99;13171:32;;;;;;;12761:835;-1:-1:-1;11341:2257:88;;-1:-1:-1;;;13131:84:88;;-1:-1:-1;;;;;11341:2257:88;;;12978:99;13131:84;;11341:2257;;;;;;;;;;;;;-1:-1:-1;11341:2257:88;;;;;;;;;13131:84;;13142:11;;11341:2257;13131:84;;;;;;;12978:99;13131:84;;;12761:835;13259:50;;;;;:::i;:::-;11341:2257;;;13324:21;;;:52;;;12761:835;13324:85;;;;12761:835;13320:270;;12761:835;;;:::o;13320:270::-;13432:147;11341:2257;;;;13432:147;11341:2257;;;;:::i;:::-;;;;13171:32;13460:105;;11341:2257;;13460:105;;11341:2257;;;13432:147;;;13171:32;13432:147;;;:::i;13324:85::-;11341:2257;;;13380:29;;13324:85;;:52;11341:2257;;;13349:27;;13324:52;;13131:84;13259:50;13131:84;;;;;;12978:99;13131:84;;;;;;:::i;:::-;;;;;:::i;:::-;;;;13171:32;;;;;;;;;;;;;;:::i;:::-;;;;12978:99;;;;;;;;;;;;;;:::i;:::-;;;;;1827:195:87;;1955:60;1827:195;;-1:-1:-1;11341:2257:88;1955:13:87;11341:2257:88;;;-1:-1:-1;11341:2257:88;1955:60:87;:::i;11341:2257:88:-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;11341:2257:88;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;12249:506::-;;;-1:-1:-1;12383:12:88;11341:2257;;;;;12529:96;;;;;;;;;;;;;11341:2257;;;;;;;12529:96;;;;;:::i;:::-;11341:2257;;716:88:89;;11341:2257:88;716:88:89;;;;;;;;;783:4;12529:96:88;716:88:89;;11341:2257:88;;;;;;;;;;;:::i;:::-;716:88:89;11341:2257:88;716:88:89;11341:2257:88;;716:88:89;;;;;;;;:::i;:::-;698:107;;;;;857:45;698:107;;:::i;:::-;11341:2257:88;;;;857:45:89;;;;;;:::i;:::-;916:8;;912:175;;11341:2257:88;;;12437:240;11341:2257;;12437:240;;;;;;:::i;:::-;12688:61;;;;12249:506;;;:::o;12688:61::-;12721:17;11341:2257;;;;12721:17;11341:2257;;12721:17;;;;;11341:2257;;;;;;;;;;;;12721:17;;;;;;;;;:::i;912:175:89:-;11341:2257:88;;;;944:22:89;;;940:36;;990:87;;11341:2257:88;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;11341:2257:88;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;-1:-1:-1;;;;;11341:2257:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2764:920:83:-;;2978:48;2764:920;;;;2978:48;;;;:::i;:::-;3036:36;;;11341:2257:88;;:::i;:::-;;;;3086:20:83;3082:107;;2764:920;3216:11;;;;:193;;;;;2764:920;3216:394;;;;2764:920;3199:455;;;;;;2764:920;:::o;3199:455::-;3635:8;-1:-1:-1;3635:8:83;:::o;3216:394::-;3553:39;;;;;3430:180;3553:39;;;11341:2257:88;;;;;;;;;;3430:180:83;;467:2:95;11341:2257:88;3430:180:83;;;;;:::i;:::-;;11341:2257:88;3444:31:83;-1:-1:-1;;;;;11341:2257:88;3430:180:83;;;;;;;-1:-1:-1;3430:180:83;;;3216:394;3429:181;;3216:394;;;;;;3430:180;;;;3553:39;3430:180;3553:39;3430:180;;;;;;;:::i;:::-;;;;3216:193;-1:-1:-1;11341:2257:88;;;-1:-1:-1;;;;;;11341:2257:88;3248:161:83;3354:37;;;11341:2257:88;3248:161:83;11341:2257:88;;;;;;;;;;3248:161:83;;;;;;;:::i;:::-;;11341:2257:88;3262:29:83;-1:-1:-1;;;;;11341:2257:88;3248:161:83;;;;;;;-1:-1:-1;3248:161:83;;;3216:193;3247:162;;3216:193;;;3248:161;;;;;;;;;;;;;;:::i;:::-;;;;3082:107;3139:39;;;;;;;;;;;;;:::i;:::-;3082:107;;;;;11341:2257:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;8889:1:93;11341:2257:88;;;;;;;:::o;:::-;;:::i;3740:389:83:-;3918:5;11341:2257:88;;;-1:-1:-1;;;3853:71:83;;;-1:-1:-1;;;;;11341:2257:88;;;3853:71:83;;;11341:2257:88;;;;;;;;3740:389:83;;11341:2257:88;3853:71:83;;11341:2257:88;;3853:71:83;11341:2257:88;;;3867:29:83;11341:2257:88;;3853:71:83;;;;;;;3918:5;3853:71;;;3740:389;3852:72;;11341:2257:88;;;3852:181:83;;3740:389;3835:242;;;;;;4094:28;;;:::i;3835:242::-;4058:8;;3918:5;4058:8;:::o;3852:181::-;11341:2257:88;;3945:88:83;;;-1:-1:-1;;;;;11341:2257:88;;3853:71:83;3945:88;;11341:2257:88;467:2:95;11341:2257:88;;;;;;;;-1:-1:-1;11341:2257:88;;;;;;;;3959:31:83;11341:2257:88;3945:88:83;;;;;;;3918:5;3945:88;;;3852:181;3944:89;;;3852:181;;;;;3945:88;;;;;;-1:-1:-1;3945:88:83;;;;;;:::i;:::-;;;;;3853:71;;;;;;;;;;;;;;:::i;:::-;;;;4148:103:19;966:10:24;-1:-1:-1;11341:2257:88;;;;;;;;;885:35:87;;11341:2257:88;;3901:31:19;11341:2257:88;;4468:23:19;4464:108;;4148:103;:::o;:::-;-1:-1:-1;11341:2257:88;;;-1:-1:-1;;;;;;;;;;;11341:2257:88;;;;;;;;966:10:24;11341:2257:88;;;;;;;;;3901:31:19;11341:2257:88;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11341:2257:88;;-1:-1:-1;11341:2257:88;;;-1:-1:-1;11341:2257:88;:::o;:::-;;:::i;:::-;;;;;-1:-1:-1;;;11341:2257:88;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11341:2257:88;;;;;;;;:::o;6246:584:93:-;;;;;6360:12;;;11341:2257:88;;;6360:24:93;;6356:75;;6246:584;6474:30;;;;;:::i;:::-;11341:2257:88;;;;;;6578:12:93;;;;:::i;:::-;6604:24;;;;6246:584;-1:-1:-1;6600:188:93;;;-1:-1:-1;;;;;11341:2257:88;;;;;;;6644:21:93;;;:29;:21;;:::i;:29::-;6798:25;6246:584;:::o;6600:188::-;6753:24;;11341:2257:88;;8310:38:66;;-1:-1:-1;;;;;11341:2257:88;;;;;8310:38:66;:::i;:::-;6753:24:93;;;:::i;6604:::-;11341:2257:88;;;;;;6614:14:93;;-1:-1:-1;6604:24:93;;;6356:75;-1:-1:-1;;;11341:2257:88;;;;;;6360:12:93;11341:2257:88;;;;;;;:::i;:::-;;;;;;;;;;;;;;6356:75:93;;;11341:2257:88;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;8406:869:93:-;;;11341:2257:88;;8620:15:93;8578:11;8645:18;8678:7;8684:1;8678:7;;8674:241;;8406:869;8939:60;;;;;:::i;:::-;9014:8;;;9010:62;;9252:15;9259:7;11341:2257:88;9219:31:93;11341:2257:88;9130:48:93;9170:7;;;:::i;:::-;9130:48;13267:109;;;;;;13089:293;;9130:48;11341:2257:88;:::i;:::-;;9176:1:93;11341:2257:88;9232:17:93;11341:2257:88;;;;;;;;9232:17:93;;11341:2257:88;-1:-1:-1;;;;;11341:2257:88;;;;9219:12:93;;:31;:::i;:::-;11341:2257:88;;;;;;;;;9259:7:93;;:::i;:::-;11341:2257:88;;;;9252:15:93;9176:1;;9188:80;;8406:869::o;9010:62::-;8578:11;;-1:-1:-1;8578:11:93;;-1:-1:-1;8578:11:93;;;;9038:23::o;8674:241::-;8721:14;;;;;:::i;:::-;11341:2257:88;;;;;;;8939:60:93;13267:109;;8578:11;13267:109;8753:55;8759:49;13267:109;;8578:11;13267:109;;11341:2257:88;;;;;;8759:49:93;11341:2257:88;;;;8753:55:93;11341:2257:88;;;8753:55:93;13267:109;;;8828:10;8749:156;8674:241;;8749:156;8883:7;;;;;;:::i;:::-;8749:156;8674:241;;3470:384:26;-1:-1:-1;;;;;;;;;;;1991:1:26;11341:2257:88;;3670:20:26;3666:88;;1991:1;11341:2257:88;;3470:384:26:o;3666:88::-;11341:2257:88;;-1:-1:-1;;;3713:30:26;;;;;3701:308:87;;11341:2257:88;-1:-1:-1;11341:2257:88;3832:13:87;11341:2257:88;;;-1:-1:-1;11341:2257:88;11124:30:93;;;;:::i;:::-;11173;;;-1:-1:-1;11173:30:93;;;;11182:17;;-1:-1:-1;;;;;11341:2257:88;;11182:12:93;;:17;:::i;:::-;11341:2257:88;;;3832:13:87;11341:2257:88;;11173:30:93;3890::87;;;11173::93;3886:117:87;;;;3701:308;;:::o;3886:117::-;3936:56;11341:2257:88;-1:-1:-1;11341:2257:88;3832:13:87;11341:2257:88;;;-1:-1:-1;11341:2257:88;819:34:68;837:15;819:34;:::i;3936:56:87:-;3701:308;;:::o;3890:30::-;3900:20;;-1:-1:-1;3890:30:87;;;;11173::93;;;-1:-1:-1;11173:30:93;;7270:387:19;-1:-1:-1;;;;;11341:2257:88;;-1:-1:-1;11341:2257:88;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2887:71:19;11341:2257:88;;;;-1:-1:-1;11341:2257:88;;;;;;;;;;;-1:-1:-1;;;;;11341:2257:88;;;;;;;;;;-1:-1:-1;;11341:2257:88;7509:4:19;11341:2257:88;;;966:10:24;;-1:-1:-1;;;;;11341:2257:88;-1:-1:-1;7532:40:19;-1:-1:-1;;7532:40:19;7509:4;7586:11;:::o;7270:387::-;-1:-1:-1;;;;;11341:2257:88;;-1:-1:-1;11341:2257:88;;;;;;;;;1356:26:83;;-1:-1:-1;;;;;;;;;;;2887:71:19;11341:2257:88;;3901:31:19;11341:2257:88;;;;-1:-1:-1;11341:2257:88;;;;;;;;;;;-1:-1:-1;;;;;11341:2257:88;;;;;;;;;;-1:-1:-1;;11341:2257:88;7509:4:19;11341:2257:88;;;966:10:24;;-1:-1:-1;;;;;11341:2257:88;;7532:40:19;-1:-1:-1;;7532:40:19;7509:4;7586:11;:::o;7432:219::-;7628:12;;;-1:-1:-1;7628:12:19;:::o;7270:387::-;-1:-1:-1;;;;;11341:2257:88;;-1:-1:-1;11341:2257:88;;;;;;;;;885:35:87;;-1:-1:-1;;;;;;;;;;;2887:71:19;11341:2257:88;;3901:31:19;11341:2257:88;7270:387:19;-1:-1:-1;11341:2257:88;;;-1:-1:-1;;;;;;;;;;;11341:2257:88;;;;;;;;-1:-1:-1;;;;;11341:2257:88;;;;;;;;;;;;3901:31:19;11341:2257:88;7892:388:19;-1:-1:-1;11341:2257:88;;;-1:-1:-1;;;;;;;;;;;11341:2257:88;;;;;;;;-1:-1:-1;;;;;11341:2257:88;;;;;;;;;;;;;;;;-1:-1:-1;11341:2257:88;;;;;;;;;;;-1:-1:-1;;;;;11341:2257:88;;;;;;;;;;-1:-1:-1;;11341:2257:88;;;966:10:24;;-1:-1:-1;;;;;11341:2257:88;;8155:40:19;-1:-1:-1;;8155:40:19;11341:2257:88;8209:11:19;:::o;10580:184:93:-;11341:2257:88;;10446:8:66;;;:63;-1:-1:-1;10446:63:66;-1:-1:-1;;;;;11341:2257:88;;10726:7:93;11341:2257:88;;10736:12:93;:17;:12;;:17;:::i;10446:63:66:-;11341:2257:88;;;;;;;;;;13267:109:93;-1:-1:-1;13267:109:93;;-1:-1:-1;13267:109:93;;;11341:2257:88;;;10446:63:66;;11341:2257:88;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;11341:2257:88;;;;;;;;:::i;5907:716:83:-;6030:34;5907:716;6030:34;;;;:::i;:::-;11341:2257:88;;-1:-1:-1;;;6080:41:83;;-1:-1:-1;;;;;11341:2257:88;;;6080:41:83;;;11341:2257:88;;;;;6080:41:83;11341:2257:88;;;6090:13:83;11341:2257:88;;6080:41:83;;;;;;;-1:-1:-1;6080:41:83;;;5907:716;6079:42;;6075:90;;6266:27;11341:2257:88;2684:111:26;6210:14:83;11341:2257:88;2684:111:26;;;:::i;:::-;11341:2257:88;;;;;;-1:-1:-1;;;;;11341:2257:88;;-1:-1:-1;11341:2257:88;;;-1:-1:-1;11341:2257:88;;6210:14:83;6266:27;:::i;:::-;6080:41;6311:15;;11341:2257:88;;;;-1:-1:-1;;;;;;11341:2257:88;-1:-1:-1;;;;;11341:2257:88;;;;;;;;;;;-1:-1:-1;;;;;11341:2257:88;;;;6337:143:83;;5907:716;-1:-1:-1;6493:28:83;11341:2257:88;-1:-1:-1;;;;;11341:2257:88;;;;;;;6489:128:83;;5907:716;:::o;6489:128::-;6551:55;;;:::i;:::-;;5907:716::o;6337:143::-;6404:65;;;:::i;:::-;;6337:143;;;6075:90;11341:2257:88;;-1:-1:-1;;;6144:10:83;;6080:41;;6144:10;6080:41;;;;;;;;;;;;;;:::i;:::-;;;;11341:2257:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::o;7558:604:93:-;;11341:2257:88;;7686:17:93;7682:83;;11341:2257:88;7789:27:93;11341:2257:88;7789:27:93;11341:2257:88;;7789:27:93;;;;;;:::i;:::-;7860:14;;;;;:::i;:::-;11341:2257:88;;;;;;;;;;;;;;;;7888:22:93;;;7884:77;;7975:21;-1:-1:-1;7975:84:93;;;;7558:604;7971:139;;;;8127:28;;;;:::i;7971:139::-;8082:17;;7789:27;8082:17;11341:2257:88;8075:24:93;:::o;7975:84::-;11341:2257:88;;;8009:16:93;11341:2257:88;;8009:16:93;:::i;:::-;11341:2257:88;;;8001:24:93;:57;;;;;7975:84;;;;;;;8001:57;8029:29;8038:8;;;8029:18;8038:8;8029:23;8038:8;;:::i;:::-;8029:18;;:::i;:::-;11341:2257:88;;;;;8029:29:93;;8001:57;;;;7884:77;7933:17;;;;;7789:27;7933:17;11341:2257:88;7926:24:93;:::o;7682:83::-;7726:28;;;;:::i;11341:2257:88:-;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;11341:2257:88;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;11341:2257:88;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;2737:699:87:-;;;;;11341:2257:88;;:::i;:::-;;;;2978:16:87;2974:92;;2737:699;-1:-1:-1;;3080:8:87;11341:2257:88;-1:-1:-1;;;;;11341:2257:88;;;;;3080:21:87;3076:85;;-1:-1:-1;11341:2257:88;3218:67:87;;11341:2257:88;;3257:27:87;;3218;;:13;;-1:-1:-1;;;;;11341:2257:88;3218:13:87;11341:2257:88;3218:27:87;3257;;;;11341:2257:88;;;;;;;;;;;3218:67:87;;;3080:8;3218:67;;;:::i;:::-;;;;;;;;;;3192:192;3218:67;-1:-1:-1;3218:67:87;;;2737:699;3341:28;3303:67;3341:28;;11341:2257:88;3341:28:87;;;3303:67;;:::i;:::-;3192:192;3463:5:63;;;;3066;;11341:2257:88;3060:42:63;3371:111;;3192:192:87;3398:21;;2737:699;:::o;3218:67::-;3303;3218;;;;3257:27;3218:67;3257:27;3218:67;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;3076:85;-1:-1:-1;;3128:21:87;;-1:-1:-1;;3117:33:87:o;2974:92::-;3024:31;;;;;;;;;;;;;:::i;:::-;2974:92;;;;;3442:253;3552:8;11341:2257:88;-1:-1:-1;;;;;11341:2257:88;;;;;;;3552:21:87;3548:60;;3634:27;3552:8;11341:2257:88;-1:-1:-1;11341:2257:88;;;;;;;;;;;3634:27:87;;;;;;;;;-1:-1:-1;3634:27:87;;;3442:253;2193:25;;:34;:25;11341:2257:88;;2193:13:87;11341:2257:88;;;;;;;2193:25:87;:34;:::i;3634:27::-;2193:34;3634:27;;;;2193:25;3634:27;;;;;;;;;;;:::i;:::-;;;;;;14296:213:64;11341:2257:88;14374:24:64;;;;14370:103;;11341:2257:88;14296:213:64;:::o;14370:103::-;11341:2257:88;;;;14421:41:64;;;;;;14452:2;14421:41;;;11341:2257:88;;;;;14421:41:64;10695:389:66;11341:2257:88;;10871:8:66;;;10895:20;;10833:17;10895:20;10833:17;10895:20;10833:17;10895:20;:::o;10867:211::-;11341:2257:88;;;;;;;;;;10833:17:66;13267:109:93;;10833:17:66;13267:109:93;;;11341:2257:88;11014:1:66;11341:2257:88;;;;;;;11030:37:66;:::o;18080:5181:63:-;18246:1;18241:6;;;18237:53;;18246:1;19217:14;-1:-1:-1;;;19278:16:63;;;19274:92;;18080:5181;22827:18;22717;22607;22498;22387;22278;23216:28;19383:15;19898:6;19383:15;-1:-1:-1;;;23237:6:63;19383:15;;;19379:90;;18080:5181;19493:7;19486:15;;;19482:90;;18080:5181;19596:7;19589:15;;;19585:89;;18080:5181;19698:6;19691:14;;;19687:87;;18080:5181;19798:6;19791:14;;;19787:87;;18080:5181;19891:14;;19887:61;;18080:5181;20374:1;11341:2257:88;18246:1:63;11341:2257:88;22284:6:63;;;;:::i;:::-;11341:2257:88;;;;;22278:18:63;22393:6;;;;:::i;22387:18::-;22504:6;;;;:::i;22498:18::-;22613:6;;;;:::i;22607:18::-;22723:6;;;;:::i;22717:18::-;22833:6;;;;:::i;22827:18::-;23237:6;;;:::i;:::-;23232:11;;;11341:2257:88;23216:28:63;11341:2257:88;;18080:5181:63;:::o;19887:61::-;18246:1;11341:2257:88;19887:61:63;;19787:87;11341:2257:88;;;;;19787:87:63;;;19687;11341:2257:88;;;;;19687:87:63;;;19585:89;11341:2257:88;;;;;19585:89:63;;;19482:90;11341:2257:88;;;;;19482:90:63;;;19379;11341:2257:88;;;;;19379:90:63;;;19274:92;-1:-1:-1;;;;11341:2257:88;-1:-1:-1;11341:2257:88;;;;19274:92:63;;12497:447:93;;12694:10;;;;;;12926:11;;;12497:447;:::o;12687:230::-;12734:23;;;;;;;:::i;:::-;13267:109;;-1:-1:-1;13267:109:93;11341:2257:88;13267:109:93;;;-1:-1:-1;13267:109:93;;11341:2257:88;;;;;-1:-1:-1;12771:136:93;11341:2257:88;;;12830:10:93;12771:136;;12687:230;;;;12771:136;11341:2257:88;;12891:1:93;11341:2257:88;;;;;;12771:136:93;11341:2257:88;;:::i;6893:76:22:-;;;:::i;:::-;;;:::i;:::-;1949:1:26;-1:-1:-1;;;;;;;;;;;11341:2257:88;6893:76:22:o;11341:2257:88:-;;;;;;;:::i;:::-;-1:-1:-1;11341:2257:88;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;11341:2257:88;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11341:2257:88;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::o;4015:918:87:-;11341:2257:88;;:::i;:::-;;4163:30:87;11341:2257:88;;4163:30:87;;;;;;;;;;;:::i;:::-;4208:17;;11341:2257:88;-1:-1:-1;;;;;11341:2257:88;;4208:17:87;11341:2257:88;;4208:54:87;;:103;;4015:918;4204:161;;4418:15;;;;11341:2257:88;;;;-1:-1:-1;;;4380:54:87;;-1:-1:-1;;;;;11341:2257:88;;;4380:54:87;;;;11341:2257:88;;;;4380:54:87;4418:15;;;;11341:2257:88;;;;;;;;4390:17:87;11341:2257:88;4380:54:87;;;;;;;4208:17;4380:54;;;4015:918;4379:55;;4375:106;;4496:9;;4511:33;;;4208:17;4553:3;4511:33;;11341:2257:88;;4507:44:87;;;;;4576:36;;;:50;:36;;:::i;:::-;11341:2257:88;-1:-1:-1;;;;;11341:2257:88;;;4576:50:87;;4572:119;;4709:73;4710:72;4745:36;;:33;;;:36;:::i;:::-;4710:72;:::i;:::-;4709:73;;11341:2257:88;4709:73:87;4705:140;;11341:2257:88;;4496:9:87;;4705:140;11341:2257:88;;-1:-1:-1;;;4809:21:87;;11341:2257:88;;4809:21:87;4572:119;11341:2257:88;;-1:-1:-1;;;4653:23:87;;11341:2257:88;;4653:23:87;4507:44;-1:-1:-1;;11341:2257:88;;4380:54:87;11341:2257:88;;-1:-1:-1;;;;;;11341:2257:88;-1:-1:-1;;;;;11341:2257:88;;;;;;;;;;-1:-1:-1;4865:26:87;;-1:-1:-1;;11341:2257:88;4865:26:87;4909:17;4015:918;:::o;4375:106::-;4418:15;11341:2257:88;-1:-1:-1;;;4457:13:87;;4380:54;;4457:13;4380:54;;;;;;;;;;;;;;:::i;:::-;;;;4204:161;11341:2257:88;;-1:-1:-1;;;4334:20:87;;;;;4208:103;4266:33;;;;;11341:2257:88;4266:45:87;4208:103;;6999:207:93;;11341:2257:88;;9737:15:66;-1:-1:-1;9762:18:66;9795:7;9801:1;9795:7;;9791:234;;6999:207:93;10049:53:66;;;;;:::i;:::-;10120:8;;;:63;-1:-1:-1;10120:63:66;;-1:-1:-1;;;;;11341:2257:88;;7168:7:93;11341:2257:88;;;7178:12:93;;:17;:12;;:17;:::i;10120:63:66:-;10135:41;10168:7;10135:48;10168:7;;:::i;:::-;10135:41;13267:109:93;;;;;;13089:293;;10135:41:66;11341:2257:88;;;;;10135:48:66;10120:63;;;9791:234;9838:14;;;;;:::i;:::-;11341:2257:88;;;;;;;10049:53:66;13267:109:93;;-1:-1:-1;13267:109:93;11341:2257:88;13267:109:93;;;-1:-1:-1;13267:109:93;;11341:2257:88;;;;;9870:48:66;9866:149;11341:2257:88;;;9938:10:66;9866:149;9791:234;;9866:149;9993:7;;;;;;:::i;:::-;9866:149;9791:234;;11341:2257:88;;;;;;;:::i;:::-;-1:-1:-1;11341:2257:88;;;;;;;:::o;11486:272:93:-;;11341:2257:88;11452:22:66;11718:31:93;11486:272;11341:2257:88;;:::i;:::-;;;;:::i;:::-;;11452:22:66;;:::i;:::-;11341:2257:88;;:::i;:::-;;11718:12:93;11341:2257:88;;;;;11731:17:93;11341:2257:88;;;;;11731:17:93;;11341:2257:88;;11718:12:93;;:31;:::i;:::-;11341:2257:88;;;;;;;;;:::i;:::-;;;;;;11731:17:93;11672:79;;11341:2257:88;11486:272:93;:::o;11341:2257:88:-;;;-1:-1:-1;;;11341:2257:88;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;11341:2257:88;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;11657:922:66;11341:2257:88;;11657:922:66;;;11864:7;;;;11936;11916:28;11936:7;;:::i;:::-;11916:28;13267:109:93;;;;;;13089:293;;11916:28:66;11341:2257:88;;;;;;;;;;;;12103:13:66;;;12099:89;;12251:14;;;;;12285:19;;;;11341:2257:88;;;;;;;;;;;;;;;;;12285:19:66;11341:2257:88;;12423:25:66;;:::o;12247:163::-;11341:2257:88;;;12343:52:66;11341:2257:88;12353:41:66;11341:2257:88;;:::i;:::-;;;;;;;;12353:41:66;-1:-1:-1;;;;;11341:2257:88;;12353:41:66;;;11341:2257:88;12343:52:66;:::i;:::-;12247:163;;12099:89;11341:2257:88;;-1:-1:-1;;;12143:30:66;;;;;11860:713;11341:2257:88;;12479:52:66;11341:2257:88;12489:41:66;11341:2257:88;;:::i;12489:41:66:-;-1:-1:-1;;;;;11341:2257:88;;12489:41:66;;;11341:2257:88;12343:52:66;:::i;12479:::-;11870:1;12545:17;;:::o;3595:153:63:-;;3721:5;;;3731;;11341:2257:88;;;;;;;;;3595:153:63;:::o;7084:141:22:-;11341:2257:88;-1:-1:-1;;;;;;;;;;;11341:2257:88;;;;7150:18:22;7146:73;;7084:141::o;7146:73::-;11341:2257:88;;-1:-1:-1;;;7191:17:22;;;;;12929:433:66;;13112:10;;;;;;13344:11;;;12929:433;:::o;13105:230::-;13152:23;;;;;;;:::i;:::-;13267:109:93;;-1:-1:-1;13267:109:93;11341:2257:88;13267:109:93;;;-1:-1:-1;13267:109:93;;11341:2257:88;;;;;-1:-1:-1;13189:136:66;11341:2257:88;;;13248:10:66;13189:136;;13105:230;;;;13189:136;11341:2257:88;;13309:1:66;11341:2257:88;;;;;;13189:136:66;11341:2257:88;;:::i","linkReferences":{},"immutableReferences":{"56598":[{"start":1956,"length":32}],"56601":[{"start":3948,"length":32}],"57552":[{"start":1429,"length":32},{"start":4005,"length":32}],"57555":[{"start":959,"length":32},{"start":8857,"length":32}],"57558":[{"start":1027,"length":32},{"start":6514,"length":32},{"start":6817,"length":32}],"57561":[{"start":1299,"length":32},{"start":6361,"length":32},{"start":6943,"length":32}],"59477":[{"start":3534,"length":32},{"start":10996,"length":32}],"60745":[{"start":3369,"length":32},{"start":5274,"length":32}],"60747":[{"start":2830,"length":32},{"start":5435,"length":32}],"60749":[{"start":3696,"length":32}],"61158":[{"start":1164,"length":32}]}},"methodIdentifiers":{"BASE_DELEGATOR_HINTS()":"79d89614","DEFAULT_ADMIN_ROLE()":"a217fddf","FACTORY()":"2dd31000","HOOK_GAS_LIMIT()":"ff54740f","HOOK_RESERVE()":"557cab44","HOOK_SET_ROLE()":"6679191e","NETWORK_LIMIT_SET_ROLE()":"7d24bb27","NETWORK_REGISTRY()":"c0cd7c3e","OPERATOR_NETWORK_OPT_IN_SERVICE()":"1a80e500","OPERATOR_REGISTRY()":"83ce0322","OPERATOR_VAULT_OPT_IN_SERVICE()":"128e5d82","OPT_IN_SERVICE_HINTS()":"9b656b22","TYPE()":"bb24fe8a","VAULT_FACTORY()":"103f2907","VAULT_HINTS()":"45e78fcb","VERSION()":"ffa1ad74","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","hook()":"7f5a7c7b","initialize(bytes)":"439fab91","maxNetworkLimit(bytes32)":"d15b740e","networkLimit(bytes32)":"3eb22c0f","networkLimitAt(bytes32,uint48,bytes)":"5d32a1c9","networkLimitHint(address,bytes32,uint48)":"da749d2b","networkLimitHintInternal(bytes32,uint48)":"197aa7ea","onSlash(bytes32,address,uint256,uint48,bytes)":"e49561ee","operator()":"570ca735","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","setHook(address)":"3dfd3873","setMaxNetworkLimit(uint96,uint256)":"23f752d5","setNetworkLimit(bytes32,uint256)":"02145348","stake(bytes32,address)":"fd4d447c","stakeAt(bytes32,address,uint48,bytes)":"e02f6937","stakeHints(address,bytes32,address,uint48)":"25dc9708","staticDelegateCall(address,bytes)":"9f86fd85","supportsInterface(bytes4)":"01ffc9a7","vault()":"fbfa77cf"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"baseDelegatorHints\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"vaultHints\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"optInServiceHints\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadySet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CheckpointUnorderedInsertion\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DuplicateRoleHolder\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedsMaxNetworkLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExternalCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientHookGas\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingRoleHolders\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotNetwork\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotOperator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotSlasher\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressRoleHolder\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"}],\"name\":\"OnSlash\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"hook\",\"type\":\"address\"}],\"name\":\"SetHook\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"SetMaxNetworkLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"SetNetworkLimit\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BASE_DELEGATOR_HINTS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HOOK_GAS_LIMIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HOOK_RESERVE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HOOK_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NETWORK_LIMIT_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NETWORK_REGISTRY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_NETWORK_OPT_IN_SERVICE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_REGISTRY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_VAULT_OPT_IN_SERVICE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPT_IN_SERVICE_HINTS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TYPE\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VAULT_FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VAULT_HINTS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VERSION\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hook\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"}],\"name\":\"maxNetworkLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"}],\"name\":\"networkLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"networkLimitAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"networkLimitHint\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"networkLimitHintInternal\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"exists\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"hint\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"hook_\",\"type\":\"address\"}],\"name\":\"setHook\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint96\",\"name\":\"identifier\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"setMaxNetworkLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"setNetworkLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"stake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hints\",\"type\":\"bytes\"}],\"name\":\"stakeAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"stakeHints\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"staticDelegateCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"CheckpointUnorderedInsertion()\":[{\"details\":\"A value was attempted to be inserted on a past checkpoint.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"OnSlash(bytes32,address,uint256,uint48)\":{\"params\":{\"amount\":\"amount of the collateral to be slashed\",\"captureTimestamp\":\"time point when the stake was captured\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"SetHook(address)\":{\"params\":{\"hook\":\"address of the hook\"}},\"SetMaxNetworkLimit(bytes32,uint256)\":{\"params\":{\"amount\":\"new maximum subnetwork's limit (how much stake the subnetwork is ready to get)\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"SetNetworkLimit(bytes32,uint256)\":{\"params\":{\"amount\":\"new subnetwork's limit (how much stake the vault curator is ready to give to the subnetwork)\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}}},\"kind\":\"dev\",\"methods\":{\"VERSION()\":{\"details\":\"Must return 1 for this one.\",\"returns\":{\"_0\":\"version of the delegator\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize(bytes)\":{\"params\":{\"data\":\"some data to use\"}},\"networkLimit(bytes32)\":{\"params\":{\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"_0\":\"limit of the subnetwork\"}},\"networkLimitAt(bytes32,uint48,bytes)\":{\"params\":{\"hint\":\"hint for checkpoint index\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\",\"timestamp\":\"time point to get the subnetwork limit at\"},\"returns\":{\"_0\":\"limit of the subnetwork at the given timestamp\"}},\"onSlash(bytes32,address,uint256,uint48,bytes)\":{\"details\":\"Only the vault's slasher can call this function.\",\"params\":{\"amount\":\"amount of the collateral slashed\",\"captureTimestamp\":\"time point when the stake was captured\",\"data\":\"some additional data\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"setHook(address)\":{\"details\":\"Only a HOOK_SET_ROLE holder can call this function. The hook can have arbitrary logic under certain functions, however, it doesn't affect the stake guarantees.\",\"params\":{\"hook\":\"address of the hook\"}},\"setMaxNetworkLimit(uint96,uint256)\":{\"details\":\"Only a network can call this function.\",\"params\":{\"amount\":\"new maximum subnetwork's limit\"}},\"setNetworkLimit(bytes32,uint256)\":{\"details\":\"Only a NETWORK_LIMIT_SET_ROLE holder can call this function.\",\"params\":{\"amount\":\"new limit of the subnetwork\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"stake(bytes32,address)\":{\"details\":\"Warning: this function is not safe to use for stake capturing, as it can change by the end of the block.\",\"params\":{\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"_0\":\"slashable stake until the end of the next epoch\"}},\"stakeAt(bytes32,address,uint48,bytes)\":{\"details\":\"Warning: it is not safe to use timestamp >= current one for the stake capturing, as it can change later.\",\"params\":{\"hints\":\"hints for the checkpoints' indexes\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\",\"timestamp\":\"time point to capture the stake at\"},\"returns\":{\"_0\":\"slashable stake at the given timestamp until the end of the consequent epoch\"}},\"staticDelegateCall(address,bytes)\":{\"details\":\"It allows to use this contract's storage on-chain.\",\"params\":{\"data\":\"data to make a delegatecall with\",\"target\":\"address of the contract to make a delegatecall to\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"events\":{\"OnSlash(bytes32,address,uint256,uint48)\":{\"notice\":\"Emitted when a slash happens.\"},\"SetHook(address)\":{\"notice\":\"Emitted when a hook is set.\"},\"SetMaxNetworkLimit(bytes32,uint256)\":{\"notice\":\"Emitted when a subnetwork's maximum limit is set.\"},\"SetNetworkLimit(bytes32,uint256)\":{\"notice\":\"Emitted when a subnetwork's limit is set.\"}},\"kind\":\"user\",\"methods\":{\"FACTORY()\":{\"notice\":\"Get the factory's address.\"},\"HOOK_GAS_LIMIT()\":{\"notice\":\"Get a gas limit for the hook.\"},\"HOOK_RESERVE()\":{\"notice\":\"Get a reserve gas between the gas limit check and the hook's execution.\"},\"HOOK_SET_ROLE()\":{\"notice\":\"Get a hook setter's role.\"},\"NETWORK_LIMIT_SET_ROLE()\":{\"notice\":\"Get a subnetwork limit setter's role.\"},\"NETWORK_REGISTRY()\":{\"notice\":\"Get the network registry's address.\"},\"OPERATOR_NETWORK_OPT_IN_SERVICE()\":{\"notice\":\"Get the operator-network opt-in service's address.\"},\"OPERATOR_REGISTRY()\":{\"notice\":\"Get the operator registry's address.\"},\"OPERATOR_VAULT_OPT_IN_SERVICE()\":{\"notice\":\"Get the operator-vault opt-in service's address.\"},\"TYPE()\":{\"notice\":\"Get the entity's type.\"},\"VAULT_FACTORY()\":{\"notice\":\"Get the vault factory's address.\"},\"VERSION()\":{\"notice\":\"Get a version of the delegator (different versions mean different interfaces).\"},\"hook()\":{\"notice\":\"Get the hook's address.\"},\"initialize(bytes)\":{\"notice\":\"Initialize this entity contract by using a given data.\"},\"maxNetworkLimit(bytes32)\":{\"notice\":\"Get a particular subnetwork's maximum limit (meaning the subnetwork is not ready to get more as a stake).\"},\"networkLimit(bytes32)\":{\"notice\":\"Get a subnetwork's limit (how much stake the vault curator is ready to give to the subnetwork).\"},\"networkLimitAt(bytes32,uint48,bytes)\":{\"notice\":\"Get a subnetwork's limit at a given timestamp using a hint (how much stake the vault curator is ready to give to the subnetwork).\"},\"onSlash(bytes32,address,uint256,uint48,bytes)\":{\"notice\":\"Called when a slash happens.\"},\"operator()\":{\"notice\":\"Get an operator managing the vault's funds.\"},\"setHook(address)\":{\"notice\":\"Set a new hook.\"},\"setMaxNetworkLimit(uint96,uint256)\":{\"notice\":\"Set a maximum limit for a subnetwork (how much stake the subnetwork is ready to get). identifier identifier of the subnetwork\"},\"setNetworkLimit(bytes32,uint256)\":{\"notice\":\"Set a subnetwork's limit (how much stake the vault curator is ready to give to the subnetwork).\"},\"stake(bytes32,address)\":{\"notice\":\"Get a stake that a given subnetwork will be able to slash for a certain operator until the end of the next epoch (if no cross-slashing and no slashings by the subnetwork).\"},\"stakeAt(bytes32,address,uint48,bytes)\":{\"notice\":\"Get a stake that a given subnetwork could be able to slash for a certain operator at a given timestamp until the end of the consequent epoch using hints (if no cross-slashing and no slashings by the subnetwork).\"},\"staticDelegateCall(address,bytes)\":{\"notice\":\"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data).\"},\"vault()\":{\"notice\":\"Get the vault's address.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/hints/DelegatorHints.sol\":\"OperatorSpecificDelegatorHints\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf\",\"dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89\",\"dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1\",\"dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol\":{\"keccak256\":\"0x4aaaf1c0737dd16e81f0d2b9833c549747a5ede6873bf1444bc72aa572d03e98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eada27d7668eebaea16c3b890aa1b38ffc53965292e26c96f7c44834623f4710\",\"dweb:/ipfs/QmVSWuLtxyCqNbLyY89ptxkvsk4CLLKDQYigEne5Qj8k1L\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x7d94fa0af099a2172eb01f9c8a8a443cbe7e0e43654841563e4e09968efdb549\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65e38fb76b6add407d4557753ae83dd1268e8261195dbe5c19a580d5ba6e4e9a\",\"dweb:/ipfs/QmTkGSJtaQrqjcyWM4AgemeEmKgtDydKPPVRajsUJRQSrK\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0\",\"dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x10eb97d047f8d84fe263a02bb4a656ac6674f6679d74532cc37546289e073a9d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3e41287d40b0c46982f1083d40d32de2761f009c5c51627fe79a7feb0ab1cf5c\",\"dweb:/ipfs/Qme7dbh6HX3ZvUJdbQAcVqXkmyXyfcLiUZRhhon3cU6K8p\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e\",\"dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/SignatureChecker.sol\":{\"keccak256\":\"0xbdc3bb48ccedb818cd75a6d74a16df55a822e9f6d3cc54c59f576f10aab67b5f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2284f25f2478f419d7781573b17a89d0e7c5589a865d55e2d6ed5163aee23aa8\",\"dweb:/ipfs/QmNsr2625APBQiNKpYnX5VcSnYgfUHR9Uzzp9pRXjoDqK7\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44\",\"dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6\",\"dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza\"]},\"src/contracts/common/Entity.sol\":{\"keccak256\":\"0x3d61a932995b8443381f3950542d388223a2c26dd5d29a3274dea3baa7388bd7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7cdf5f03ca72fd263fd32ff59c8d88ddca911ae83896a287d10772c1bbe9b138\",\"dweb:/ipfs/QmbP84r5BWT1Rn9AYTntWSf3xUMTTCohTZJFhbBhDXFoHa\"]},\"src/contracts/common/MigratableEntity.sol\":{\"keccak256\":\"0x303ad40a3de8fa808cc30a6fbd5998633f6a89b982e6db1fa981e0566ab445e7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://fa8fb92995ead02798e013190b87b84b44cc68668262f045c9b0b4783940e2bf\",\"dweb:/ipfs/QmV1uKGVLKwWisc714R8fCt71gXUQJpaKvdc6LQ8WtvMpL\"]},\"src/contracts/common/StaticDelegateCallable.sol\":{\"keccak256\":\"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764\",\"dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD\"]},\"src/contracts/delegator/BaseDelegator.sol\":{\"keccak256\":\"0x7c54d491fdd4415b764a9c8defa068e56d4c0c8c9419be0053a1d377669290e8\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://9238bfbad0f6eeb0dc7727724de14380f1980b395902269703d5e2ef07e52e10\",\"dweb:/ipfs/QmPJn1V4HNXcEghYvogGuSTF24dSQUPosR5qtsXcmNqRm3\"]},\"src/contracts/delegator/FullRestakeDelegator.sol\":{\"keccak256\":\"0x0a81c4f8e72914563a9cb771e93acf889c71ea36b7bec040e4eb562b199d5af1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6fc66b6ba02da77046a0bbbd1dd407a62c08f52e04486c9cbd2cb1cca3da555f\",\"dweb:/ipfs/QmZQivK1ZnMxfRQQ5aLpV9co5u55wQVNev5Rg1hzAqxhkE\"]},\"src/contracts/delegator/NetworkRestakeDelegator.sol\":{\"keccak256\":\"0xd3a8e6522f9c6fdcc2da837c9023afd6bdff2bce45a35590320c475519e3636d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://58b17a87f6554f08376f9ea7fedf486a4aa75801bf0ad8b23ff5a46959b6b7a3\",\"dweb:/ipfs/QmSTmNh67tYt8CmjVZb57r8N3qX5yeYdMApKPJm3qvQgQw\"]},\"src/contracts/delegator/OperatorNetworkSpecificDelegator.sol\":{\"keccak256\":\"0x031a10722b9ec49048f0952710401131290adb87e71caf294e864e7ac3b98a16\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://72428febc875134b2f29205e6f294634a1c22a7d5c78d6a9cb2f8196f107c9b5\",\"dweb:/ipfs/QmTPwXR6h5oytckmkLrHdKeEMdphJxceDhYUR4zvQeWAwY\"]},\"src/contracts/delegator/OperatorSpecificDelegator.sol\":{\"keccak256\":\"0x630ce62fa30b9f3349ab7a8cf8dbf041319febc6dd757be2f94d3d25944ed328\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c2ac59d47ce57d2a6819ae9833e1a618a371eccff93eb5ab367b201b01f42bfa\",\"dweb:/ipfs/QmdBpGMBivpNPv2WbH8vnCUy5xkVeaxQvGgqi33vKCz1kA\"]},\"src/contracts/hints/DelegatorHints.sol\":{\"keccak256\":\"0xd71e9102e99a25ee8b5435779f011a24558f56074aa2b16c18b623b57754ae97\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://29db5552e55dab51bea1ae40ba00ca674cb50fcb10997999a72a94527b6eb591\",\"dweb:/ipfs/QmQrYyTPx73ubNxMhYWJCkprCVFVtuTFcKaabYiKTe71tY\"]},\"src/contracts/hints/Hints.sol\":{\"keccak256\":\"0x8b565df1ae35993c097a9e642002782a8f451f6fd01809cad6bcd345bdf1b99c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://99a19adb01e350a92f534095b3078229df1f2f83077992d75d58d8684be45971\",\"dweb:/ipfs/QmbmwcuswVbzvwHQFTtrJG86oV98GnfxqYTb8cV8u1acox\"]},\"src/contracts/hints/OptInServiceHints.sol\":{\"keccak256\":\"0x95d9407900d27b9f4a1233b772aeed809c07b2dc5b31cfc9fa77ca26514c49e5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://a13a8877e312d7e6b8b85bde3668c5d84ff5ecc83f762cd573f2b7104c64eb42\",\"dweb:/ipfs/QmYV2J55acuGzCNnS3juABuUHY5U1xc8g8o9jwEyFFdeG5\"]},\"src/contracts/hints/VaultHints.sol\":{\"keccak256\":\"0xccb505b7159b769cc114d67b87c2de6b106557f667fc8f3780114baad5c3c442\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6d0c80a908fc16e96a8b5605a0bd53f9e89ad0ef0a738fbbae80ba4d3160749b\",\"dweb:/ipfs/QmXo5UtWoR8YmunqcbBU8rQMm1nvmvjNPoXcVrDhh4pEwR\"]},\"src/contracts/libraries/Checkpoints.sol\":{\"keccak256\":\"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609\",\"dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE\"]},\"src/contracts/libraries/ERC4626Math.sol\":{\"keccak256\":\"0x8441160513c1cbeb1c3b9ee077bcc7e7ce20006b52a77c8dd39ff0ef89699939\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://943f8cc3e26ddf649f465f40c909819f5c864717c4baa339e9e403b9374a4653\",\"dweb:/ipfs/QmXPxi1sUDsrGprZdUgCzoPEosaZMv9ZhygWQ1vAi1phAB\"]},\"src/contracts/libraries/Subnetwork.sol\":{\"keccak256\":\"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56\",\"dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32\"]},\"src/contracts/service/OptInService.sol\":{\"keccak256\":\"0x4e0932077f2686b7990e10d59deb2535334c0d09e52ef6e57c6ab09eca21c4b1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7c00d311032ed4a1743aca7475f3c86ce15cdfc2218108efc3731c03d34a5278\",\"dweb:/ipfs/QmUGGfVwVhaHr5kS4177yKKYiLYzi5qZpkEmvYxBZqazxf\"]},\"src/contracts/vault/Vault.sol\":{\"keccak256\":\"0x7ee6dbf060c45d6eba95315f4ac0b3b467dd9c4999b84c31d6f66d4d8b53a116\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://301948b8ea522db292aa2722ba42def3911dae95f0b376f7023c3fef470f8676\",\"dweb:/ipfs/QmSDbP2HdzhDAzstr8Zz5isEAcSkma8ABc5UwPsoazaumZ\"]},\"src/contracts/vault/VaultStorage.sol\":{\"keccak256\":\"0x57db25b127d77ea3472de53e3a4af3354399655b9268638b99ca5925fa364a56\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://aa763d9a6ec508ae3abfb8228b72b9fd9525279e5135d4962e79ff059feb1173\",\"dweb:/ipfs/QmcbDR6E9wyEpu6V2FkEC4hnWy47zXA9LSKJde6zSGd33Q\"]},\"src/interfaces/common/IEntity.sol\":{\"keccak256\":\"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b\",\"dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv\"]},\"src/interfaces/common/IMigratableEntity.sol\":{\"keccak256\":\"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c\",\"dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds\"]},\"src/interfaces/common/IRegistry.sol\":{\"keccak256\":\"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014\",\"dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK\"]},\"src/interfaces/common/IStaticDelegateCallable.sol\":{\"keccak256\":\"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516\",\"dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi\"]},\"src/interfaces/delegator/IBaseDelegator.sol\":{\"keccak256\":\"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2\",\"dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8\"]},\"src/interfaces/delegator/IDelegatorHook.sol\":{\"keccak256\":\"0xc51aa8d7d1f6c8043ee819b7aeb86da0e993912e1442098df897e299f01f9f46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://adddf5cb2ba282aeb576b26efb28640f865a1721cc9b6eee8b3ee0457a2c9780\",\"dweb:/ipfs/QmNYgAmnLRwWZbhTuQhZs9rx4zcme1df5mEepkrniorSoW\"]},\"src/interfaces/delegator/IFullRestakeDelegator.sol\":{\"keccak256\":\"0xa3c8cb2e45d4d8ce90e95263bea40c01dc400f05ad65bc29597d878606be5e7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://782cf5e201aa4cca037ebafd3807a68ff1cc721d5b8416a35244db0d0607369e\",\"dweb:/ipfs/QmQkJks6x7CKndeTPa9LxgTNygD5uEi7obhADhpq1Lsr9A\"]},\"src/interfaces/delegator/INetworkRestakeDelegator.sol\":{\"keccak256\":\"0xe7030fe30389a147fd710e3436ec346b4842695fd3e65a81b95375c9f1d633fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://739c7e66d301778054f5c90bee45ec9438f68afba8a03eaaac52064c73b115ad\",\"dweb:/ipfs/QmfZ2ytKcTykAc76nxhg8ikUXV8NdBpetqb8W4YWPcox1Z\"]},\"src/interfaces/delegator/IOperatorNetworkSpecificDelegator.sol\":{\"keccak256\":\"0x74b95e64d29769202d45dd277bb830f623ff3d41ce77b80ce3ee4e318a5c71ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e512b903aae5c1b8a028c6e3f4f6223b5cb5d704503cfa6bd37b5346868f5c20\",\"dweb:/ipfs/QmZim9YExsPWtyxyeui993HTKAEmrg8MUcSkZ77Gp2JcuZ\"]},\"src/interfaces/delegator/IOperatorSpecificDelegator.sol\":{\"keccak256\":\"0x72075cab585dc17240cc3e32bc99b92f0d5627ddd988fed680e3e1a52d5a01e4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7448bc90699409ae61d85216b5efc2143a37f0f73354be2aea993bc54afca441\",\"dweb:/ipfs/QmXE4gAxM8pHosZK8mcTcj17puBx484meDCcmrDePskGHZ\"]},\"src/interfaces/service/IOptInService.sol\":{\"keccak256\":\"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337\",\"dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24\"]},\"src/interfaces/slasher/IBaseSlasher.sol\":{\"keccak256\":\"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf\",\"dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx\"]},\"src/interfaces/vault/IVault.sol\":{\"keccak256\":\"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9\",\"dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R\"]},\"src/interfaces/vault/IVaultStorage.sol\":{\"keccak256\":\"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e\",\"dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"baseDelegatorHints","type":"address"},{"internalType":"address","name":"vaultHints","type":"address"},{"internalType":"address","name":"optInServiceHints","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"inputs":[],"type":"error","name":"AlreadySet"},{"inputs":[],"type":"error","name":"CheckpointUnorderedInsertion"},{"inputs":[],"type":"error","name":"DuplicateRoleHolder"},{"inputs":[],"type":"error","name":"ExceedsMaxNetworkLimit"},{"inputs":[],"type":"error","name":"ExternalCall"},{"inputs":[],"type":"error","name":"InsufficientHookGas"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"MissingRoleHolders"},{"inputs":[],"type":"error","name":"NotInitialized"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"NotNetwork"},{"inputs":[],"type":"error","name":"NotOperator"},{"inputs":[],"type":"error","name":"NotSlasher"},{"inputs":[],"type":"error","name":"NotVault"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintDowncast"},{"inputs":[],"type":"error","name":"ZeroAddressRoleHolder"},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint48","name":"captureTimestamp","type":"uint48","indexed":false}],"type":"event","name":"OnSlash","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[{"internalType":"address","name":"hook","type":"address","indexed":true}],"type":"event","name":"SetHook","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"SetMaxNetworkLimit","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"SetNetworkLimit","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"BASE_DELEGATOR_HINTS","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HOOK_GAS_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HOOK_RESERVE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HOOK_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"NETWORK_LIMIT_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"NETWORK_REGISTRY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_NETWORK_OPT_IN_SERVICE","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_REGISTRY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_VAULT_OPT_IN_SERVICE","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPT_IN_SERVICE_HINTS","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"TYPE","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VAULT_FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VAULT_HINTS","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"VERSION","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"hook","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"}],"stateMutability":"view","type":"function","name":"maxNetworkLimit","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"}],"stateMutability":"view","type":"function","name":"networkLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"networkLimitAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"},{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"networkLimitHint","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"networkLimitHintInternal","outputs":[{"internalType":"bool","name":"exists","type":"bool"},{"internalType":"uint32","name":"hint","type":"uint32"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint48","name":"captureTimestamp","type":"uint48"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"onSlash"},{"inputs":[],"stateMutability":"view","type":"function","name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"address","name":"hook_","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setHook"},{"inputs":[{"internalType":"uint96","name":"identifier","type":"uint96"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setMaxNetworkLimit"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setNetworkLimit"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"stake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hints","type":"bytes"}],"stateMutability":"view","type":"function","name":"stakeAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"},{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"stakeHints","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"staticDelegateCall"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"vault","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"VERSION()":{"details":"Must return 1 for this one.","returns":{"_0":"version of the delegator"}},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"initialize(bytes)":{"params":{"data":"some data to use"}},"networkLimit(bytes32)":{"params":{"subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"_0":"limit of the subnetwork"}},"networkLimitAt(bytes32,uint48,bytes)":{"params":{"hint":"hint for checkpoint index","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)","timestamp":"time point to get the subnetwork limit at"},"returns":{"_0":"limit of the subnetwork at the given timestamp"}},"onSlash(bytes32,address,uint256,uint48,bytes)":{"details":"Only the vault's slasher can call this function.","params":{"amount":"amount of the collateral slashed","captureTimestamp":"time point when the stake was captured","data":"some additional data","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"}},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"setHook(address)":{"details":"Only a HOOK_SET_ROLE holder can call this function. The hook can have arbitrary logic under certain functions, however, it doesn't affect the stake guarantees.","params":{"hook":"address of the hook"}},"setMaxNetworkLimit(uint96,uint256)":{"details":"Only a network can call this function.","params":{"amount":"new maximum subnetwork's limit"}},"setNetworkLimit(bytes32,uint256)":{"details":"Only a NETWORK_LIMIT_SET_ROLE holder can call this function.","params":{"amount":"new limit of the subnetwork","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"}},"stake(bytes32,address)":{"details":"Warning: this function is not safe to use for stake capturing, as it can change by the end of the block.","params":{"operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"_0":"slashable stake until the end of the next epoch"}},"stakeAt(bytes32,address,uint48,bytes)":{"details":"Warning: it is not safe to use timestamp >= current one for the stake capturing, as it can change later.","params":{"hints":"hints for the checkpoints' indexes","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)","timestamp":"time point to capture the stake at"},"returns":{"_0":"slashable stake at the given timestamp until the end of the consequent epoch"}},"staticDelegateCall(address,bytes)":{"details":"It allows to use this contract's storage on-chain.","params":{"data":"data to make a delegatecall with","target":"address of the contract to make a delegatecall to"}},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."}},"version":1},"userdoc":{"kind":"user","methods":{"FACTORY()":{"notice":"Get the factory's address."},"HOOK_GAS_LIMIT()":{"notice":"Get a gas limit for the hook."},"HOOK_RESERVE()":{"notice":"Get a reserve gas between the gas limit check and the hook's execution."},"HOOK_SET_ROLE()":{"notice":"Get a hook setter's role."},"NETWORK_LIMIT_SET_ROLE()":{"notice":"Get a subnetwork limit setter's role."},"NETWORK_REGISTRY()":{"notice":"Get the network registry's address."},"OPERATOR_NETWORK_OPT_IN_SERVICE()":{"notice":"Get the operator-network opt-in service's address."},"OPERATOR_REGISTRY()":{"notice":"Get the operator registry's address."},"OPERATOR_VAULT_OPT_IN_SERVICE()":{"notice":"Get the operator-vault opt-in service's address."},"TYPE()":{"notice":"Get the entity's type."},"VAULT_FACTORY()":{"notice":"Get the vault factory's address."},"VERSION()":{"notice":"Get a version of the delegator (different versions mean different interfaces)."},"hook()":{"notice":"Get the hook's address."},"initialize(bytes)":{"notice":"Initialize this entity contract by using a given data."},"maxNetworkLimit(bytes32)":{"notice":"Get a particular subnetwork's maximum limit (meaning the subnetwork is not ready to get more as a stake)."},"networkLimit(bytes32)":{"notice":"Get a subnetwork's limit (how much stake the vault curator is ready to give to the subnetwork)."},"networkLimitAt(bytes32,uint48,bytes)":{"notice":"Get a subnetwork's limit at a given timestamp using a hint (how much stake the vault curator is ready to give to the subnetwork)."},"onSlash(bytes32,address,uint256,uint48,bytes)":{"notice":"Called when a slash happens."},"operator()":{"notice":"Get an operator managing the vault's funds."},"setHook(address)":{"notice":"Set a new hook."},"setMaxNetworkLimit(uint96,uint256)":{"notice":"Set a maximum limit for a subnetwork (how much stake the subnetwork is ready to get). identifier identifier of the subnetwork"},"setNetworkLimit(bytes32,uint256)":{"notice":"Set a subnetwork's limit (how much stake the vault curator is ready to give to the subnetwork)."},"stake(bytes32,address)":{"notice":"Get a stake that a given subnetwork will be able to slash for a certain operator until the end of the next epoch (if no cross-slashing and no slashings by the subnetwork)."},"stakeAt(bytes32,address,uint48,bytes)":{"notice":"Get a stake that a given subnetwork could be able to slash for a certain operator at a given timestamp until the end of the consequent epoch using hints (if no cross-slashing and no slashings by the subnetwork)."},"staticDelegateCall(address,bytes)":{"notice":"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data)."},"vault()":{"notice":"Get the vault's address."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/hints/DelegatorHints.sol":"OperatorSpecificDelegatorHints"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol":{"keccak256":"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866","urls":["bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf","dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab","urls":["bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89","dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606","urls":["bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1","dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol":{"keccak256":"0x4aaaf1c0737dd16e81f0d2b9833c549747a5ede6873bf1444bc72aa572d03e98","urls":["bzz-raw://eada27d7668eebaea16c3b890aa1b38ffc53965292e26c96f7c44834623f4710","dweb:/ipfs/QmVSWuLtxyCqNbLyY89ptxkvsk4CLLKDQYigEne5Qj8k1L"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol":{"keccak256":"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92","urls":["bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a","dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310","urls":["bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862","dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol":{"keccak256":"0x7d94fa0af099a2172eb01f9c8a8a443cbe7e0e43654841563e4e09968efdb549","urls":["bzz-raw://65e38fb76b6add407d4557753ae83dd1268e8261195dbe5c19a580d5ba6e4e9a","dweb:/ipfs/QmTkGSJtaQrqjcyWM4AgemeEmKgtDydKPPVRajsUJRQSrK"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed","urls":["bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0","dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84","urls":["bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9","dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol":{"keccak256":"0x10eb97d047f8d84fe263a02bb4a656ac6674f6679d74532cc37546289e073a9d","urls":["bzz-raw://3e41287d40b0c46982f1083d40d32de2761f009c5c51627fe79a7feb0ab1cf5c","dweb:/ipfs/Qme7dbh6HX3ZvUJdbQAcVqXkmyXyfcLiUZRhhon3cU6K8p"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575","urls":["bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e","dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/SignatureChecker.sol":{"keccak256":"0xbdc3bb48ccedb818cd75a6d74a16df55a822e9f6d3cc54c59f576f10aab67b5f","urls":["bzz-raw://2284f25f2478f419d7781573b17a89d0e7c5589a865d55e2d6ed5163aee23aa8","dweb:/ipfs/QmNsr2625APBQiNKpYnX5VcSnYgfUHR9Uzzp9pRXjoDqK7"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3","urls":["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03","dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol":{"keccak256":"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f","urls":["bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44","dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc","urls":["bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6","dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza"],"license":"MIT"},"src/contracts/common/Entity.sol":{"keccak256":"0x3d61a932995b8443381f3950542d388223a2c26dd5d29a3274dea3baa7388bd7","urls":["bzz-raw://7cdf5f03ca72fd263fd32ff59c8d88ddca911ae83896a287d10772c1bbe9b138","dweb:/ipfs/QmbP84r5BWT1Rn9AYTntWSf3xUMTTCohTZJFhbBhDXFoHa"],"license":"BUSL-1.1"},"src/contracts/common/MigratableEntity.sol":{"keccak256":"0x303ad40a3de8fa808cc30a6fbd5998633f6a89b982e6db1fa981e0566ab445e7","urls":["bzz-raw://fa8fb92995ead02798e013190b87b84b44cc68668262f045c9b0b4783940e2bf","dweb:/ipfs/QmV1uKGVLKwWisc714R8fCt71gXUQJpaKvdc6LQ8WtvMpL"],"license":"BUSL-1.1"},"src/contracts/common/StaticDelegateCallable.sol":{"keccak256":"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90","urls":["bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764","dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD"],"license":"BUSL-1.1"},"src/contracts/delegator/BaseDelegator.sol":{"keccak256":"0x7c54d491fdd4415b764a9c8defa068e56d4c0c8c9419be0053a1d377669290e8","urls":["bzz-raw://9238bfbad0f6eeb0dc7727724de14380f1980b395902269703d5e2ef07e52e10","dweb:/ipfs/QmPJn1V4HNXcEghYvogGuSTF24dSQUPosR5qtsXcmNqRm3"],"license":"BUSL-1.1"},"src/contracts/delegator/FullRestakeDelegator.sol":{"keccak256":"0x0a81c4f8e72914563a9cb771e93acf889c71ea36b7bec040e4eb562b199d5af1","urls":["bzz-raw://6fc66b6ba02da77046a0bbbd1dd407a62c08f52e04486c9cbd2cb1cca3da555f","dweb:/ipfs/QmZQivK1ZnMxfRQQ5aLpV9co5u55wQVNev5Rg1hzAqxhkE"],"license":"BUSL-1.1"},"src/contracts/delegator/NetworkRestakeDelegator.sol":{"keccak256":"0xd3a8e6522f9c6fdcc2da837c9023afd6bdff2bce45a35590320c475519e3636d","urls":["bzz-raw://58b17a87f6554f08376f9ea7fedf486a4aa75801bf0ad8b23ff5a46959b6b7a3","dweb:/ipfs/QmSTmNh67tYt8CmjVZb57r8N3qX5yeYdMApKPJm3qvQgQw"],"license":"BUSL-1.1"},"src/contracts/delegator/OperatorNetworkSpecificDelegator.sol":{"keccak256":"0x031a10722b9ec49048f0952710401131290adb87e71caf294e864e7ac3b98a16","urls":["bzz-raw://72428febc875134b2f29205e6f294634a1c22a7d5c78d6a9cb2f8196f107c9b5","dweb:/ipfs/QmTPwXR6h5oytckmkLrHdKeEMdphJxceDhYUR4zvQeWAwY"],"license":"BUSL-1.1"},"src/contracts/delegator/OperatorSpecificDelegator.sol":{"keccak256":"0x630ce62fa30b9f3349ab7a8cf8dbf041319febc6dd757be2f94d3d25944ed328","urls":["bzz-raw://c2ac59d47ce57d2a6819ae9833e1a618a371eccff93eb5ab367b201b01f42bfa","dweb:/ipfs/QmdBpGMBivpNPv2WbH8vnCUy5xkVeaxQvGgqi33vKCz1kA"],"license":"BUSL-1.1"},"src/contracts/hints/DelegatorHints.sol":{"keccak256":"0xd71e9102e99a25ee8b5435779f011a24558f56074aa2b16c18b623b57754ae97","urls":["bzz-raw://29db5552e55dab51bea1ae40ba00ca674cb50fcb10997999a72a94527b6eb591","dweb:/ipfs/QmQrYyTPx73ubNxMhYWJCkprCVFVtuTFcKaabYiKTe71tY"],"license":"BUSL-1.1"},"src/contracts/hints/Hints.sol":{"keccak256":"0x8b565df1ae35993c097a9e642002782a8f451f6fd01809cad6bcd345bdf1b99c","urls":["bzz-raw://99a19adb01e350a92f534095b3078229df1f2f83077992d75d58d8684be45971","dweb:/ipfs/QmbmwcuswVbzvwHQFTtrJG86oV98GnfxqYTb8cV8u1acox"],"license":"BUSL-1.1"},"src/contracts/hints/OptInServiceHints.sol":{"keccak256":"0x95d9407900d27b9f4a1233b772aeed809c07b2dc5b31cfc9fa77ca26514c49e5","urls":["bzz-raw://a13a8877e312d7e6b8b85bde3668c5d84ff5ecc83f762cd573f2b7104c64eb42","dweb:/ipfs/QmYV2J55acuGzCNnS3juABuUHY5U1xc8g8o9jwEyFFdeG5"],"license":"BUSL-1.1"},"src/contracts/hints/VaultHints.sol":{"keccak256":"0xccb505b7159b769cc114d67b87c2de6b106557f667fc8f3780114baad5c3c442","urls":["bzz-raw://6d0c80a908fc16e96a8b5605a0bd53f9e89ad0ef0a738fbbae80ba4d3160749b","dweb:/ipfs/QmXo5UtWoR8YmunqcbBU8rQMm1nvmvjNPoXcVrDhh4pEwR"],"license":"BUSL-1.1"},"src/contracts/libraries/Checkpoints.sol":{"keccak256":"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c","urls":["bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609","dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE"],"license":"MIT"},"src/contracts/libraries/ERC4626Math.sol":{"keccak256":"0x8441160513c1cbeb1c3b9ee077bcc7e7ce20006b52a77c8dd39ff0ef89699939","urls":["bzz-raw://943f8cc3e26ddf649f465f40c909819f5c864717c4baa339e9e403b9374a4653","dweb:/ipfs/QmXPxi1sUDsrGprZdUgCzoPEosaZMv9ZhygWQ1vAi1phAB"],"license":"MIT"},"src/contracts/libraries/Subnetwork.sol":{"keccak256":"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe","urls":["bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56","dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32"],"license":"MIT"},"src/contracts/service/OptInService.sol":{"keccak256":"0x4e0932077f2686b7990e10d59deb2535334c0d09e52ef6e57c6ab09eca21c4b1","urls":["bzz-raw://7c00d311032ed4a1743aca7475f3c86ce15cdfc2218108efc3731c03d34a5278","dweb:/ipfs/QmUGGfVwVhaHr5kS4177yKKYiLYzi5qZpkEmvYxBZqazxf"],"license":"BUSL-1.1"},"src/contracts/vault/Vault.sol":{"keccak256":"0x7ee6dbf060c45d6eba95315f4ac0b3b467dd9c4999b84c31d6f66d4d8b53a116","urls":["bzz-raw://301948b8ea522db292aa2722ba42def3911dae95f0b376f7023c3fef470f8676","dweb:/ipfs/QmSDbP2HdzhDAzstr8Zz5isEAcSkma8ABc5UwPsoazaumZ"],"license":"BUSL-1.1"},"src/contracts/vault/VaultStorage.sol":{"keccak256":"0x57db25b127d77ea3472de53e3a4af3354399655b9268638b99ca5925fa364a56","urls":["bzz-raw://aa763d9a6ec508ae3abfb8228b72b9fd9525279e5135d4962e79ff059feb1173","dweb:/ipfs/QmcbDR6E9wyEpu6V2FkEC4hnWy47zXA9LSKJde6zSGd33Q"],"license":"BUSL-1.1"},"src/interfaces/common/IEntity.sol":{"keccak256":"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21","urls":["bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b","dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv"],"license":"MIT"},"src/interfaces/common/IMigratableEntity.sol":{"keccak256":"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4","urls":["bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c","dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds"],"license":"MIT"},"src/interfaces/common/IRegistry.sol":{"keccak256":"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb","urls":["bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014","dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK"],"license":"MIT"},"src/interfaces/common/IStaticDelegateCallable.sol":{"keccak256":"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5","urls":["bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516","dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi"],"license":"MIT"},"src/interfaces/delegator/IBaseDelegator.sol":{"keccak256":"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee","urls":["bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2","dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8"],"license":"MIT"},"src/interfaces/delegator/IDelegatorHook.sol":{"keccak256":"0xc51aa8d7d1f6c8043ee819b7aeb86da0e993912e1442098df897e299f01f9f46","urls":["bzz-raw://adddf5cb2ba282aeb576b26efb28640f865a1721cc9b6eee8b3ee0457a2c9780","dweb:/ipfs/QmNYgAmnLRwWZbhTuQhZs9rx4zcme1df5mEepkrniorSoW"],"license":"MIT"},"src/interfaces/delegator/IFullRestakeDelegator.sol":{"keccak256":"0xa3c8cb2e45d4d8ce90e95263bea40c01dc400f05ad65bc29597d878606be5e7d","urls":["bzz-raw://782cf5e201aa4cca037ebafd3807a68ff1cc721d5b8416a35244db0d0607369e","dweb:/ipfs/QmQkJks6x7CKndeTPa9LxgTNygD5uEi7obhADhpq1Lsr9A"],"license":"MIT"},"src/interfaces/delegator/INetworkRestakeDelegator.sol":{"keccak256":"0xe7030fe30389a147fd710e3436ec346b4842695fd3e65a81b95375c9f1d633fc","urls":["bzz-raw://739c7e66d301778054f5c90bee45ec9438f68afba8a03eaaac52064c73b115ad","dweb:/ipfs/QmfZ2ytKcTykAc76nxhg8ikUXV8NdBpetqb8W4YWPcox1Z"],"license":"MIT"},"src/interfaces/delegator/IOperatorNetworkSpecificDelegator.sol":{"keccak256":"0x74b95e64d29769202d45dd277bb830f623ff3d41ce77b80ce3ee4e318a5c71ec","urls":["bzz-raw://e512b903aae5c1b8a028c6e3f4f6223b5cb5d704503cfa6bd37b5346868f5c20","dweb:/ipfs/QmZim9YExsPWtyxyeui993HTKAEmrg8MUcSkZ77Gp2JcuZ"],"license":"MIT"},"src/interfaces/delegator/IOperatorSpecificDelegator.sol":{"keccak256":"0x72075cab585dc17240cc3e32bc99b92f0d5627ddd988fed680e3e1a52d5a01e4","urls":["bzz-raw://7448bc90699409ae61d85216b5efc2143a37f0f73354be2aea993bc54afca441","dweb:/ipfs/QmXE4gAxM8pHosZK8mcTcj17puBx484meDCcmrDePskGHZ"],"license":"MIT"},"src/interfaces/service/IOptInService.sol":{"keccak256":"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a","urls":["bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337","dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24"],"license":"MIT"},"src/interfaces/slasher/IBaseSlasher.sol":{"keccak256":"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404","urls":["bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf","dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx"],"license":"MIT"},"src/interfaces/vault/IVault.sol":{"keccak256":"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235","urls":["bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9","dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R"],"license":"MIT"},"src/interfaces/vault/IVaultStorage.sol":{"keccak256":"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22","urls":["bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e","dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6"],"license":"MIT"}},"version":1},"id":88} \ No newline at end of file diff --git a/out/FullRestakeDelegator.sol/FullRestakeDelegator.json b/out/FullRestakeDelegator.sol/FullRestakeDelegator.json index c9e0ec0f..df10931f 100644 --- a/out/FullRestakeDelegator.sol/FullRestakeDelegator.json +++ b/out/FullRestakeDelegator.sol/FullRestakeDelegator.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"networkRegistry","type":"address","internalType":"address"},{"name":"vaultFactory","type":"address","internalType":"address"},{"name":"operatorVaultOptInService","type":"address","internalType":"address"},{"name":"operatorNetworkOptInService","type":"address","internalType":"address"},{"name":"delegatorFactory","type":"address","internalType":"address"},{"name":"entityType","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"HOOK_GAS_LIMIT","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"HOOK_RESERVE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"HOOK_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"NETWORK_LIMIT_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"NETWORK_REGISTRY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_NETWORK_LIMIT_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_NETWORK_OPT_IN_SERVICE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_VAULT_OPT_IN_SERVICE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"TYPE","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"VAULT_FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"VERSION","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"pure"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"hook","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"maxNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"networkLimit","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"networkLimitAt","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"onSlash","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","internalType":"uint48"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"operatorNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"operatorNetworkLimitAt","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setHook","inputs":[{"name":"hook_","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMaxNetworkLimit","inputs":[{"name":"identifier","type":"uint96","internalType":"uint96"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOperatorNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stake","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"stakeAt","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hints","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"staticDelegateCall","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"vault","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OnSlash","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","indexed":false,"internalType":"uint48"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SetHook","inputs":[{"name":"hook","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SetMaxNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SetNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SetOperatorNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"AlreadySet","inputs":[]},{"type":"error","name":"CheckpointUnorderedInsertion","inputs":[]},{"type":"error","name":"DuplicateRoleHolder","inputs":[]},{"type":"error","name":"ExceedsMaxNetworkLimit","inputs":[]},{"type":"error","name":"InsufficientHookGas","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"MissingRoleHolders","inputs":[]},{"type":"error","name":"NotInitialized","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"NotNetwork","inputs":[]},{"type":"error","name":"NotSlasher","inputs":[]},{"type":"error","name":"NotVault","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ZeroAddressRoleHolder","inputs":[]}],"bytecode":{"object":"0x610140346101a1576001600160401b0390601f612cbd38819003918201601f191683019190848311848410176101a5578160c092859260409586528339810103126101a15761004d826101b9565b610059602084016101b9565b906100658385016101b9565b94610072606086016101b9565b9460a0610081608083016101b9565b9101519180831683036101a1577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff82891c1661019057808083160361014c575b50505060805260a05260c05260e0526101009283526101209182525190612aef92836101ce84396080518361072a015260a05183610eb8015260c0518381816105bb0152610ef1015260e0518381816104620152611d990152518281816104f5015281816114c001526116040152518181816105390152818161142701526116820152f35b6001600160401b0319909116811790915585519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80806100c7565b875163f92ee8a960e01b8152600490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101a15756fe60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a714610244578063020cf0c21461023f578063021453481461023a578063103f2907146102355780631142209514610230578063128e5d821461022b5780631a80e5001461022657806323f752d514610221578063248a9ca31461021c5780632dd31000146102175780632f2ff15d1461021257806336568abe1461020d5780633dfd3873146102085780633eb22c0f14610203578063439fab91146101fe578063518504ba146101f9578063557cab44146101f45780635d32a1c9146101ef5780636679191e146101ea5780637d24bb27146101e55780637f5a7c7b146101e057806391d14854146101db57806394d2558a146101d65780639f86fd85146101d1578063a217fddf146101cc578063bb24fe8a146101c7578063c0cd7c3e146101c2578063d15b740e146101bd578063d547741f146101b8578063e02f6937146101b3578063e49561ee146101ae578063fbfa77cf146101a9578063fd4d447c146101a4578063ff54740f1461019f5763ffa1ad741461019a575f80fd5b61120b565b6111ee565b6111c4565b61119d565b610fb2565b610f96565b610f4a565b610f20565b610edc565b610e99565b610e7f565b610dc5565b610d87565b610cd7565b610caf565b610c76565b610c3c565b610be1565b610ab1565b610a77565b61093f565b6108e9565b6107f0565b6107a5565b610759565b610715565b6106dc565b610568565b610524565b6104e0565b610491565b61044d565b610390565b6102af565b3461029a57602036600319011261029a5760043563ffffffff60e01b811680910361029a57602090637965db0b60e01b8114908115610289575b506040519015158152f35b6301ffc9a760e01b1490505f61027e565b5f80fd5b6001600160a01b0381160361029a57565b3461029a57606036600319011261029a576024356004356102cf8261029e565b604435916102db6116f7565b815f526004602052826103096103048360405f209060018060a01b03165f5260205260405f2090565b61190f565b1461037e5760207ffc9545f07ffadfb668efd0144cdcaf2d6e2c8192dce1ea9fc131934f9c90fc7e91835f52600482526103698561035a8360405f209060018060a01b03165f5260205260405f2090565b61036342612254565b9061184d565b50506040519485526001600160a01b031693a3005b60405163a741a04560e01b8152600490fd5b3461029a5760408060031936011261029a5760043590602435906103b2611754565b825f526002602052805f2054821161043d57825f526003602052816103d8825f2061190f565b1461042d5781610428916104187e899d104fc3d8820bd96540612bcc5c448c8837b13b9f7faa43ad0728f0c14f9461035a875f52600360205260405f2090565b5050519081529081906020820190565b0390a2005b5163a741a04560e01b8152600490fd5b51631eefc06360e31b8152600490fd5b3461029a575f36600319011261029a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461029a57604036600319011261029a5760206104d86103046024356104b68161029e565b6004355f526004845260405f209060018060a01b03165f5260205260405f2090565b604051908152f35b3461029a575f36600319011261029a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461029a575f36600319011261029a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461029a57604036600319011261029a576004356001600160601b038116810361029a576024359061059861195c565b6040516302910f8b60e31b81523360048201526020816024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa9081156106d7575f916106a8575b5015610696576001600160601b03166bffffffffffffffffffffffff193360601b16179080610622835f52600260205260405f2090565b541461037e5761067b817fc67e7929681aa1bccd63f52b3799bf5805f3009f197db6fdf584b14f7fbf608c92610660855f52600260205260405f2090565b5561066b818561198b565b6040519081529081906020820190565b0390a261069460015f80516020612a7a83398151915255565b005b6040516323d53b9760e21b8152600490fd5b6106ca915060203d6020116106d0575b6106c28183610b31565b810190611226565b5f6105eb565b503d6106b8565b61123e565b3461029a57602036600319011261029a576004355f525f80516020612a5a8339815191526020526020600160405f200154604051908152f35b3461029a575f36600319011261029a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461029a57604036600319011261029a5761069460243560043561077c8261029e565b805f525f80516020612a5a8339815191526020526107a0600160405f2001546117aa565b611c66565b3461029a57604036600319011261029a576024356107c28161029e565b336001600160a01b038216036107de5761069490600435611c9c565b60405163334bd91960e11b8152600490fd5b3461029a57602036600319011261029a5760043561080d8161029e565b61081561195c565b335f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c60205260409020547fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c9060ff16156108cb57506001546001600160a01b03918216918116821461037e576001600160a01b03191681176001557f5bbb1d3ebb6a3ad2a0f17ff35e579a83af60604d1d3c2a4c83c62adecadf666d5f80a260015f80516020612a7a83398151915255005b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b3461029a57602036600319011261029a576004355f52600360205260206104d860405f2061190f565b9181601f8401121561029a578235916001600160401b03831161029a576020838186019501011161029a57565b3461029a57602036600319011261029a576001600160401b0360043581811161029a57610970903690600401610912565b5f80516020612a9a833981519152549260ff8460401c1615931680159081610a6f575b6001149081610a65575b159081610a5c575b50610a4a575f80516020612a9a833981519152805467ffffffffffffffff191660011790556109d89183610a2657611d64565b6109de57005b5f80516020612a9a833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f80516020612a9a833981519152805460ff60401b1916600160401b179055611d64565b60405163f92ee8a960e01b8152600490fd5b9050155f6109a5565b303b15915061099d565b849150610993565b3461029a575f36600319011261029a5760206040517f15e7c882d74e8821ebf34aaff46fd0e1d53b9393d91490019124113d28dc32a38152f35b3461029a575f36600319011261029a576020604051614e208152f35b6064359065ffffffffffff8216820361029a57565b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b03821117610b1157604052565b610ae2565b606081019081106001600160401b03821117610b1157604052565b90601f801991011681019081106001600160401b03821117610b1157604052565b60405190608082018281106001600160401b03821117610b1157604052565b60405190610b7e82610af6565b565b6001600160401b038111610b1157601f01601f191660200190565b81601f8201121561029a57803590610bb282610b80565b92610bc06040519485610b31565b8284526020838301011161029a57815f926020809301838601378301015290565b3461029a57606036600319011261029a5760243565ffffffffffff8116810361029a576044356001600160401b03811161029a57602091610c296104d8923690600401610b9b565b906004355f526003845260405f20611ed3565b3461029a575f36600319011261029a5760206040517fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c8152f35b3461029a575f36600319011261029a5760206040517e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf8152f35b3461029a575f36600319011261029a576001546040516001600160a01b039091168152602090f35b3461029a57604036600319011261029a57602060ff610d29602435610cfb8161029e565b6004355f525f80516020612a5a833981519152845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b90608060031983011261029a5760043591602435610d528161029e565b9160443565ffffffffffff8116810361029a5791606435906001600160401b03821161029a57610d8491600401610b9b565b90565b3461029a5760206104d8610dc0610d9d36610d35565b939190925f526004865260405f209060018060a01b03165f5260205260405f2090565b611ed3565b3461029a5760408060031936011261029a57600435610de38161029e565b602435906001600160401b03821161029a575f8091610e09610e6d943690600401610912565b908187519283928337810184815203915af43d15610e7557610e5f3d610e2e81610b80565b90610e3b86519283610b31565b81523d5f602083013e5b84519485931515602085015280840152606083019061128b565b03601f198101835282610b31565b805190602001fd5b610e5f6060610e45565b3461029a575f36600319011261029a5760206040515f8152f35b3461029a575f36600319011261029a5760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461029a575f36600319011261029a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461029a57602036600319011261029a576004355f526002602052602060405f2054604051908152f35b3461029a57604036600319011261029a57610694602435600435610f6d8261029e565b805f525f80516020612a5a833981519152602052610f91600160405f2001546117aa565b611c9c565b3461029a5760206104d8610fa936610d35565b929190916113b1565b3461029a5760a036600319011261029a57602435600435610fd28261029e565b60443591610fde610acd565b90608435906001600160401b03821161029a5761100060049236908401610b9b565b61100861195c565b5f5460209061102d90611021906001600160a01b031681565b6001600160a01b031690565b60405163b134427160e01b815294859182905afa9283156106d7575f9361116c575b506001600160a01b03928316330361115a576001546001600160a01b03168381166110cf575b50506040805195865265ffffffffffff909316602086015216927f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed91819081015b0390a361069460015f80516020612a7a83398151915255565b909360405194611106866110f8602082019363724ab0f760e11b8552858c898d60248701611550565b03601f198101885287610b31565b62042e305a10611148575f6110b6938192827f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed9951926203d090f15093611075565b604051638072475160e01b8152600490fd5b60405163dabc4ad960e01b8152600490fd5b61118f91935060203d602011611196575b6111878183610b31565b81019061153b565b915f61104f565b503d61117d565b3461029a575f36600319011261029a575f546040516001600160a01b039091168152602090f35b3461029a57604036600319011261029a5760206104d86024356111e68161029e565b6004356115cd565b3461029a575f36600319011261029a5760206040516203d0908152f35b3461029a575f36600319011261029a57602060405160018152f35b9081602091031261029a5751801515810361029a5790565b6040513d5f823e3d90fd5b90610d8492915f52600360205260405f20611ed3565b5f9081526004602090815260408083206001600160a01b03909416835292905220610d84929190611ed3565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b604051906112bc82610af6565b60606020838281520152565b81601f8201121561029a578051906112df82610b80565b926112ed6040519485610b31565b8284526020838301011161029a57815f9260208093018386015e8301015290565b9060208282031261029a5781516001600160401b039283821161029a57019060408282031261029a576040519261134484610af6565b825181811161029a57826113599185016112c8565b8452602083015190811161029a5761137192016112c8565b602082015290565b6001600160a01b0391821681529116602082015265ffffffffffff9091166040820152608060608201819052610d849291019061128b565b926113c1909291928284866120b9565b9290936113cc6112af565b9380518061151f575b50508415938415611489575b84156113f8575b505050506113f35790565b505f90565b602080949550611423910151604051958694859463530e1d4360e01b865260601c9060048601611379565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156106d7575f9161146a575b50155f8080806113e8565b611483915060203d6020116106d0576106c28183610b31565b5f61145f565b5f549094506001600160a01b03166020848651926114bc604051948593849363530e1d4360e01b85528960048601611379565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156106d7575f91611500575b5015936113e1565b611519915060203d6020116106d0576106c28183610b31565b5f6114f8565b61153392955060208091830101910161130e565b925f806113d5565b9081602091031261029a5751610d848161029e565b919360a093610d84969565ffffffffffff938552600180871b031660208501526040840152166060820152816080820152019061128b565b634e487b7160e01b5f52601160045260245ffd5b81156115a6570490565b634e487b7160e01b5f52601260045260245ffd5b90600182018092116115c857565b611588565b5f546040516308834cb560e21b8082526001600160a01b0385811660048401529283166024830152929392602092909183816044817f000000000000000000000000000000000000000000000000000000000000000086165afa9081156106d7575f916116da575b5015918215611656575b5050905061165057610d84916121ae565b50505f90565b6040519081526001600160a01b0385166004820152606086901c602482015291508290829060449082907f0000000000000000000000000000000000000000000000000000000000000000165afa9182156106d7575f926116bd575b505015805f8061163f565b6116d39250803d106106d0576106c28183610b31565b5f806116b2565b6116f19150843d86116106d0576106c28183610b31565b5f611635565b335f9081527f24e48de785eeca8420b70f73d267a66970ccc187d459f2a4b53e74ed92a5ab86602052604090207f15e7c882d74e8821ebf34aaff46fd0e1d53b9393d91490019124113d28dc32a39060ff905b5416156108cb5750565b335f9081527f72a65082a5691803ab2b62c9bc729b34205ba1b183d950896526b2fd8714d0c7602052604090207e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf9060ff9061174a565b5f8181525f80516020612a5a83398151915260209081526040808320338452909152902060ff9061174a565b634e487b7160e01b5f52603260045260245ffd5b80548210156117ff575f5260205f2001905f90565b6117d6565b90815491600160401b831015610b115782611827916001610b7e950181556117ea565b90919082549060031b91821b915f19901b1916179055565b5f198101919082116115c857565b909291926001820190815480156118df575b508461186a846122aa565b5094909284549361187a8361190f565b96816118ca575b50156118a7575050505f1981019081116115c85761182785916118a3936117ea565b9190565b6118a39492936118c3926001600160d01b03909116919061277e565b5050611804565b65ffffffffffff83811691161490505f611881565b600160401b811015610b11578060016118fb92018455836117ea565b8154905f199060031b1b191690555f61185f565b80548061193e57505f5b6001600160d01b0381161561165057600161193492016117ea565b90549060031b1c90565b5f199080828101116115c857825f5260205f2001015460301c611919565b5f80516020612a7a83398151915260028154146119795760029055565b604051633ee5aeb560e01b8152600490fd5b90815f52600360205260405f20816119a2826122aa565b919390508315611a00576119c2916001600160d01b0316906001016117ea565b90549060031b1c5b826119f6575b50506119da575050565b6119f2915f52600360205260405f2061036342612254565b5050565b119050815f6119d0565b50505f6119ca565b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260409020545f80516020612a5a8339815191529060ff16611650575f808052602091825260408082206001600160a01b038516835290925220805460ff1916600117905533906001600160a01b03165f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b6001600160a01b0381165f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c602052604090207fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c905f80516020612a5a8339815191529060ff905b5416611b82575f828152602091825260408082206001600160a01b038616835290925220805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b5050505f90565b6001600160a01b0381165f9081527f72a65082a5691803ab2b62c9bc729b34205ba1b183d950896526b2fd8714d0c7602052604090207e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf905f80516020612a5a8339815191529060ff90611b1e565b6001600160a01b0381165f9081527f24e48de785eeca8420b70f73d267a66970ccc187d459f2a4b53e74ed92a5ab86602052604090207f15e7c882d74e8821ebf34aaff46fd0e1d53b9393d91490019124113d28dc32a3905f80516020612a5a8339815191529060ff90611b1e565b5f8181525f80516020612a5a833981519152602081815260408084206001600160a01b038716855290915290912060ff90611b1e565b5f8181525f80516020612a5a833981519152602081815260408084206001600160a01b03871685529091529091205460ff1615611b82575f828152602091825260408082206001600160a01b038616835290925220805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b91909160408184031261029a578035611d468161029e565b9260208201356001600160401b03811161029a57610d849201610b9b565b611d7091810190611d2e565b6040516302910f8b60e31b81526001600160a01b039283166004820181905291906020816024817f000000000000000000000000000000000000000000000000000000000000000088165afa9081156106d7575f91611e83575b5015611e7157611e05604091611e00611e4b94611de56122f9565b60018060a01b03166001600160601b0360a01b5f5416175f55565b612479565b6020810151600180546001600160a01b0319166001600160a01b0390921691909117905580516001600160a01b0316848116611e61575b5001516001600160a01b031690565b908116611e555750565b611e5e90611ab3565b50565b611e6a90611a08565b505f611e3c565b6040516362df054560e01b8152600490fd5b611e9c915060203d6020116106d0576106c28183610b31565b5f611dca565b9081602091031261029a575163ffffffff8116810361029a5790565b90600163ffffffff809316019182116115c857565b91805115611fac5780602080611eee93518301019101611ea2565b91611ef983826126a9565b92611f0a845165ffffffffffff1690565b9065ffffffffffff8085169216828114611fa05782119182611f40575b5050611f3757610d8492506125d9565b50506020015190565b909150611f4d835461183f565b63ffffffff831614918215611f66575b50505f80611f27565b611f98919250611f81611f7b611f8d92611ebe565b856126a9565b5165ffffffffffff1690565b65ffffffffffff1690565b115f80611f5d565b50505050506020015190565b50610d84916125d9565b60405190608082018281106001600160401b03821117610b1157604052606080838181528160208201528160408201520152565b9060208282031261029a5781516001600160401b039283821161029a57019060808282031261029a5761201b610b52565b92825181811161029a57826120319185016112c8565b8452602083015181811161029a578261204b9185016112c8565b6020850152604083015181811161029a57826120689185016112c8565b6040850152606083015190811161029a5761208392016112c8565b606082015290565b9081602091031261029a575190565b60409065ffffffffffff610d849493168152816020820152019061128b565b939190936120c5611fb6565b9380518061218e575b505061210f92939460206120ee6110216110215f5460018060a01b031690565b8188015190604051808098819463810da75d60e01b8352896004840161209a565b03915afa9182156106d757612150945f93612155575b5061214a9061214a939461213e60408a01518284611249565b9360608a01519261125f565b90612711565b915190565b61214a93509061217f61214a9260203d602011612187575b6121778183610b31565b81019061208b565b935090612125565b503d61216d565b61210f949550906020806121a6938301019101611fea565b93925f6120ce565b5f5460405163bd49c35f60e01b8152929190602090849060049082906001600160a01b03165afa9081156106d757610d84935f92612229575b5061214a61030461214a9394612208610304855f52600360205260405f2090565b935f52600460205260405f209060018060a01b03165f5260205260405f2090565b61214a925061030461224c61214a9260203d602011612187576121778183610b31565b9350506121e7565b65ffffffffffff90818111612267571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b9060405161229381610af6565b915465ffffffffffff8116835260301c6020830152565b8054806122bb5750505f905f905f90565b5f199080828101116115c8576122d8925f5260205f200101612286565b9065ffffffffffff82511691602060018060d01b0391015116906001929190565b612301612899565b612309612899565b60015f80516020612a7a83398151915255565b6040519061232982610b16565b5f6040838281528260208201520152565b81601f8201121561029a578051916020916001600160401b038411610b11578360051b906040519461236e85840187610b31565b8552838086019282010192831161029a578301905b828210612391575050505090565b838091835161239f8161029e565b815201910190612383565b9060208282031261029a5781516001600160401b039283821161029a5701908181039260a0841261029a576060604051946123e486610b16565b1261029a576040516123f581610b16565b83516124008161029e565b815260208401516124108161029e565b602082015260408401516124238161029e565b60408201528452606083015181811161029a578261244291850161233a565b6020850152608083015190811161029a5761245d920161233a565b604082015290565b80518210156117ff5760209160051b010190565b6124959061248561231c565b50602080825183010191016123aa565b8051519091906001600160a01b031615806125bf575b6125ad579060208101905f5b82518051821015612531576110216124d2836124df93612465565b516001600160a01b031690565b1561251f576125016124fd6124f86124d2848751612465565b611b89565b1590565b61250d576001016124b7565b604051635140fefd60e11b8152600490fd5b6040516323cda06760e01b8152600490fd5b506040925050818101905f5b825180518210156125a4576110216124d28361255893612465565b15612593576125766124fd6125716124d2848751612465565b611bf7565b6125825760010161253d565b8351635140fefd60e11b8152600490fd5b83516323cda06760e01b8152600490fd5b50509150505190565b6040516303501f5960e11b8152600490fd5b5060208201515115806124ab5750604082015151156124ab565b908154905f829160058411612643575b6125f49350846129fa565b8061261c57505f905b6001600160d01b0382161561165057610d8491600161193492016117ea565b61263661262b61263d9261183f565b835f5260205f200190565b5460301c90565b906125fd565b919261264e816128c7565b81039081116115c8576125f493855f5265ffffffffffff808360205f20015416908516105f1461267f5750916125e9565b92915061268b906115ba565b906125e9565b6040519061269e82610af6565b5f6020838281520152565b906126d26126cc6126f3926126bc612691565b506126c5612691565b50846117ea565b50612286565b91600165ffffffffffff845116936020828060d01b039101511691016117ea565b9054906040519261270384610af6565b835260031b1c602082015290565b908082101561271e575090565b905090565b8054600160401b811015610b1157612740916001820181556117ea565b61276b57815160209092015160301b65ffffffffffff191665ffffffffffff92909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b8054929392919082156128705761279f61279a61262b8561183f565b612286565b906127b0825165ffffffffffff1690565b65ffffffffffff8481169116811061285e576118a39460209488926127de611f8d875165ffffffffffff1690565b036128265750612818926127f46127ff9261183f565b905f5260205f200190565b9065ffffffffffff82549181199060301b169116179055565b01516001600160d01b031690565b91505061285991612846612838610b71565b65ffffffffffff9093168352565b6001600160d01b03881682860152612723565b612818565b604051632520601d60e01b8152600490fd5b6128949250612880612838610b71565b6001600160d01b0385166020830152612723565b5f9190565b60ff5f80516020612a9a8339815191525460401c16156128b557565b604051631afcd79f60e31b8152600490fd5b80156113f3578061214a61299261298861297e61297461296a6129606129566001610d849a5f908b60801c806129ee575b508060401c806129e1575b508060201c806129d4575b508060101c806129c7575b508060081c806129ba575b508060041c806129ad575b508060021c806129a0575b50821c612999575b811c1b61294f818b61159c565b0160011c90565b61294f818a61159c565b61294f818961159c565b61294f818861159c565b61294f818761159c565b61294f818661159c565b61294f818561159c565b809261159c565b8101612942565b600291509101905f61293a565b600491509101905f61292f565b600891509101905f612924565b601091509101905f612919565b602091509101905f61290e565b604091509101905f612903565b9150506080905f6128f8565b91905b838210612a0a5750505090565b9091928083169080841860011c82018092116115c857845f5265ffffffffffff808360205f20015416908416105f14612a475750925b91906129fd565b939250612a53906115ba565b91612a4056fe02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212205a47ef0800ec8586221910bfda595b4c0690e3271bc72e3aaf2a5da09d84aada64736f6c63430008190033","sourceMap":"536:5807:77:-:0;;;;-1:-1:-1;;;;;536:5807:77;;;;;;;;;;-1:-1:-1;;536:5807:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;8837:64:25;536:5807:77;;;;;;;;;7896:76:25;;536:5807:77;;;;7985:34:25;7981:146;;-1:-1:-1;525:17:69;;;536:5807:77;525:17:69;536:5807:77;552:12:69;536:5807:77;2360:34:76;2404:28;;2442:57;;;;2509:61;;;;536:5807:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2404:28:76;536:5807:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7981:146:25;-1:-1:-1;;;;;;536:5807:77;;;;;;;;;;;;;8087:29:25;;536:5807:77;;8087:29:25;7981:146;;;;;7896:76;536:5807:77;;-1:-1:-1;;;7938:23:25;;;;;536:5807:77;-1:-1:-1;536:5807:77;;;;;;-1:-1:-1;536:5807:77;;;;;-1:-1:-1;536:5807:77;;;;-1:-1:-1;;;;;536:5807:77;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a714610244578063020cf0c21461023f578063021453481461023a578063103f2907146102355780631142209514610230578063128e5d821461022b5780631a80e5001461022657806323f752d514610221578063248a9ca31461021c5780632dd31000146102175780632f2ff15d1461021257806336568abe1461020d5780633dfd3873146102085780633eb22c0f14610203578063439fab91146101fe578063518504ba146101f9578063557cab44146101f45780635d32a1c9146101ef5780636679191e146101ea5780637d24bb27146101e55780637f5a7c7b146101e057806391d14854146101db57806394d2558a146101d65780639f86fd85146101d1578063a217fddf146101cc578063bb24fe8a146101c7578063c0cd7c3e146101c2578063d15b740e146101bd578063d547741f146101b8578063e02f6937146101b3578063e49561ee146101ae578063fbfa77cf146101a9578063fd4d447c146101a4578063ff54740f1461019f5763ffa1ad741461019a575f80fd5b61120b565b6111ee565b6111c4565b61119d565b610fb2565b610f96565b610f4a565b610f20565b610edc565b610e99565b610e7f565b610dc5565b610d87565b610cd7565b610caf565b610c76565b610c3c565b610be1565b610ab1565b610a77565b61093f565b6108e9565b6107f0565b6107a5565b610759565b610715565b6106dc565b610568565b610524565b6104e0565b610491565b61044d565b610390565b6102af565b3461029a57602036600319011261029a5760043563ffffffff60e01b811680910361029a57602090637965db0b60e01b8114908115610289575b506040519015158152f35b6301ffc9a760e01b1490505f61027e565b5f80fd5b6001600160a01b0381160361029a57565b3461029a57606036600319011261029a576024356004356102cf8261029e565b604435916102db6116f7565b815f526004602052826103096103048360405f209060018060a01b03165f5260205260405f2090565b61190f565b1461037e5760207ffc9545f07ffadfb668efd0144cdcaf2d6e2c8192dce1ea9fc131934f9c90fc7e91835f52600482526103698561035a8360405f209060018060a01b03165f5260205260405f2090565b61036342612254565b9061184d565b50506040519485526001600160a01b031693a3005b60405163a741a04560e01b8152600490fd5b3461029a5760408060031936011261029a5760043590602435906103b2611754565b825f526002602052805f2054821161043d57825f526003602052816103d8825f2061190f565b1461042d5781610428916104187e899d104fc3d8820bd96540612bcc5c448c8837b13b9f7faa43ad0728f0c14f9461035a875f52600360205260405f2090565b5050519081529081906020820190565b0390a2005b5163a741a04560e01b8152600490fd5b51631eefc06360e31b8152600490fd5b3461029a575f36600319011261029a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461029a57604036600319011261029a5760206104d86103046024356104b68161029e565b6004355f526004845260405f209060018060a01b03165f5260205260405f2090565b604051908152f35b3461029a575f36600319011261029a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461029a575f36600319011261029a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461029a57604036600319011261029a576004356001600160601b038116810361029a576024359061059861195c565b6040516302910f8b60e31b81523360048201526020816024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa9081156106d7575f916106a8575b5015610696576001600160601b03166bffffffffffffffffffffffff193360601b16179080610622835f52600260205260405f2090565b541461037e5761067b817fc67e7929681aa1bccd63f52b3799bf5805f3009f197db6fdf584b14f7fbf608c92610660855f52600260205260405f2090565b5561066b818561198b565b6040519081529081906020820190565b0390a261069460015f80516020612a7a83398151915255565b005b6040516323d53b9760e21b8152600490fd5b6106ca915060203d6020116106d0575b6106c28183610b31565b810190611226565b5f6105eb565b503d6106b8565b61123e565b3461029a57602036600319011261029a576004355f525f80516020612a5a8339815191526020526020600160405f200154604051908152f35b3461029a575f36600319011261029a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461029a57604036600319011261029a5761069460243560043561077c8261029e565b805f525f80516020612a5a8339815191526020526107a0600160405f2001546117aa565b611c66565b3461029a57604036600319011261029a576024356107c28161029e565b336001600160a01b038216036107de5761069490600435611c9c565b60405163334bd91960e11b8152600490fd5b3461029a57602036600319011261029a5760043561080d8161029e565b61081561195c565b335f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c60205260409020547fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c9060ff16156108cb57506001546001600160a01b03918216918116821461037e576001600160a01b03191681176001557f5bbb1d3ebb6a3ad2a0f17ff35e579a83af60604d1d3c2a4c83c62adecadf666d5f80a260015f80516020612a7a83398151915255005b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b3461029a57602036600319011261029a576004355f52600360205260206104d860405f2061190f565b9181601f8401121561029a578235916001600160401b03831161029a576020838186019501011161029a57565b3461029a57602036600319011261029a576001600160401b0360043581811161029a57610970903690600401610912565b5f80516020612a9a833981519152549260ff8460401c1615931680159081610a6f575b6001149081610a65575b159081610a5c575b50610a4a575f80516020612a9a833981519152805467ffffffffffffffff191660011790556109d89183610a2657611d64565b6109de57005b5f80516020612a9a833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f80516020612a9a833981519152805460ff60401b1916600160401b179055611d64565b60405163f92ee8a960e01b8152600490fd5b9050155f6109a5565b303b15915061099d565b849150610993565b3461029a575f36600319011261029a5760206040517f15e7c882d74e8821ebf34aaff46fd0e1d53b9393d91490019124113d28dc32a38152f35b3461029a575f36600319011261029a576020604051614e208152f35b6064359065ffffffffffff8216820361029a57565b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b03821117610b1157604052565b610ae2565b606081019081106001600160401b03821117610b1157604052565b90601f801991011681019081106001600160401b03821117610b1157604052565b60405190608082018281106001600160401b03821117610b1157604052565b60405190610b7e82610af6565b565b6001600160401b038111610b1157601f01601f191660200190565b81601f8201121561029a57803590610bb282610b80565b92610bc06040519485610b31565b8284526020838301011161029a57815f926020809301838601378301015290565b3461029a57606036600319011261029a5760243565ffffffffffff8116810361029a576044356001600160401b03811161029a57602091610c296104d8923690600401610b9b565b906004355f526003845260405f20611ed3565b3461029a575f36600319011261029a5760206040517fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c8152f35b3461029a575f36600319011261029a5760206040517e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf8152f35b3461029a575f36600319011261029a576001546040516001600160a01b039091168152602090f35b3461029a57604036600319011261029a57602060ff610d29602435610cfb8161029e565b6004355f525f80516020612a5a833981519152845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b90608060031983011261029a5760043591602435610d528161029e565b9160443565ffffffffffff8116810361029a5791606435906001600160401b03821161029a57610d8491600401610b9b565b90565b3461029a5760206104d8610dc0610d9d36610d35565b939190925f526004865260405f209060018060a01b03165f5260205260405f2090565b611ed3565b3461029a5760408060031936011261029a57600435610de38161029e565b602435906001600160401b03821161029a575f8091610e09610e6d943690600401610912565b908187519283928337810184815203915af43d15610e7557610e5f3d610e2e81610b80565b90610e3b86519283610b31565b81523d5f602083013e5b84519485931515602085015280840152606083019061128b565b03601f198101835282610b31565b805190602001fd5b610e5f6060610e45565b3461029a575f36600319011261029a5760206040515f8152f35b3461029a575f36600319011261029a5760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461029a575f36600319011261029a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461029a57602036600319011261029a576004355f526002602052602060405f2054604051908152f35b3461029a57604036600319011261029a57610694602435600435610f6d8261029e565b805f525f80516020612a5a833981519152602052610f91600160405f2001546117aa565b611c9c565b3461029a5760206104d8610fa936610d35565b929190916113b1565b3461029a5760a036600319011261029a57602435600435610fd28261029e565b60443591610fde610acd565b90608435906001600160401b03821161029a5761100060049236908401610b9b565b61100861195c565b5f5460209061102d90611021906001600160a01b031681565b6001600160a01b031690565b60405163b134427160e01b815294859182905afa9283156106d7575f9361116c575b506001600160a01b03928316330361115a576001546001600160a01b03168381166110cf575b50506040805195865265ffffffffffff909316602086015216927f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed91819081015b0390a361069460015f80516020612a7a83398151915255565b909360405194611106866110f8602082019363724ab0f760e11b8552858c898d60248701611550565b03601f198101885287610b31565b62042e305a10611148575f6110b6938192827f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed9951926203d090f15093611075565b604051638072475160e01b8152600490fd5b60405163dabc4ad960e01b8152600490fd5b61118f91935060203d602011611196575b6111878183610b31565b81019061153b565b915f61104f565b503d61117d565b3461029a575f36600319011261029a575f546040516001600160a01b039091168152602090f35b3461029a57604036600319011261029a5760206104d86024356111e68161029e565b6004356115cd565b3461029a575f36600319011261029a5760206040516203d0908152f35b3461029a575f36600319011261029a57602060405160018152f35b9081602091031261029a5751801515810361029a5790565b6040513d5f823e3d90fd5b90610d8492915f52600360205260405f20611ed3565b5f9081526004602090815260408083206001600160a01b03909416835292905220610d84929190611ed3565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b604051906112bc82610af6565b60606020838281520152565b81601f8201121561029a578051906112df82610b80565b926112ed6040519485610b31565b8284526020838301011161029a57815f9260208093018386015e8301015290565b9060208282031261029a5781516001600160401b039283821161029a57019060408282031261029a576040519261134484610af6565b825181811161029a57826113599185016112c8565b8452602083015190811161029a5761137192016112c8565b602082015290565b6001600160a01b0391821681529116602082015265ffffffffffff9091166040820152608060608201819052610d849291019061128b565b926113c1909291928284866120b9565b9290936113cc6112af565b9380518061151f575b50508415938415611489575b84156113f8575b505050506113f35790565b505f90565b602080949550611423910151604051958694859463530e1d4360e01b865260601c9060048601611379565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156106d7575f9161146a575b50155f8080806113e8565b611483915060203d6020116106d0576106c28183610b31565b5f61145f565b5f549094506001600160a01b03166020848651926114bc604051948593849363530e1d4360e01b85528960048601611379565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156106d7575f91611500575b5015936113e1565b611519915060203d6020116106d0576106c28183610b31565b5f6114f8565b61153392955060208091830101910161130e565b925f806113d5565b9081602091031261029a5751610d848161029e565b919360a093610d84969565ffffffffffff938552600180871b031660208501526040840152166060820152816080820152019061128b565b634e487b7160e01b5f52601160045260245ffd5b81156115a6570490565b634e487b7160e01b5f52601260045260245ffd5b90600182018092116115c857565b611588565b5f546040516308834cb560e21b8082526001600160a01b0385811660048401529283166024830152929392602092909183816044817f000000000000000000000000000000000000000000000000000000000000000086165afa9081156106d7575f916116da575b5015918215611656575b5050905061165057610d84916121ae565b50505f90565b6040519081526001600160a01b0385166004820152606086901c602482015291508290829060449082907f0000000000000000000000000000000000000000000000000000000000000000165afa9182156106d7575f926116bd575b505015805f8061163f565b6116d39250803d106106d0576106c28183610b31565b5f806116b2565b6116f19150843d86116106d0576106c28183610b31565b5f611635565b335f9081527f24e48de785eeca8420b70f73d267a66970ccc187d459f2a4b53e74ed92a5ab86602052604090207f15e7c882d74e8821ebf34aaff46fd0e1d53b9393d91490019124113d28dc32a39060ff905b5416156108cb5750565b335f9081527f72a65082a5691803ab2b62c9bc729b34205ba1b183d950896526b2fd8714d0c7602052604090207e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf9060ff9061174a565b5f8181525f80516020612a5a83398151915260209081526040808320338452909152902060ff9061174a565b634e487b7160e01b5f52603260045260245ffd5b80548210156117ff575f5260205f2001905f90565b6117d6565b90815491600160401b831015610b115782611827916001610b7e950181556117ea565b90919082549060031b91821b915f19901b1916179055565b5f198101919082116115c857565b909291926001820190815480156118df575b508461186a846122aa565b5094909284549361187a8361190f565b96816118ca575b50156118a7575050505f1981019081116115c85761182785916118a3936117ea565b9190565b6118a39492936118c3926001600160d01b03909116919061277e565b5050611804565b65ffffffffffff83811691161490505f611881565b600160401b811015610b11578060016118fb92018455836117ea565b8154905f199060031b1b191690555f61185f565b80548061193e57505f5b6001600160d01b0381161561165057600161193492016117ea565b90549060031b1c90565b5f199080828101116115c857825f5260205f2001015460301c611919565b5f80516020612a7a83398151915260028154146119795760029055565b604051633ee5aeb560e01b8152600490fd5b90815f52600360205260405f20816119a2826122aa565b919390508315611a00576119c2916001600160d01b0316906001016117ea565b90549060031b1c5b826119f6575b50506119da575050565b6119f2915f52600360205260405f2061036342612254565b5050565b119050815f6119d0565b50505f6119ca565b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260409020545f80516020612a5a8339815191529060ff16611650575f808052602091825260408082206001600160a01b038516835290925220805460ff1916600117905533906001600160a01b03165f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b6001600160a01b0381165f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c602052604090207fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c905f80516020612a5a8339815191529060ff905b5416611b82575f828152602091825260408082206001600160a01b038616835290925220805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b5050505f90565b6001600160a01b0381165f9081527f72a65082a5691803ab2b62c9bc729b34205ba1b183d950896526b2fd8714d0c7602052604090207e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf905f80516020612a5a8339815191529060ff90611b1e565b6001600160a01b0381165f9081527f24e48de785eeca8420b70f73d267a66970ccc187d459f2a4b53e74ed92a5ab86602052604090207f15e7c882d74e8821ebf34aaff46fd0e1d53b9393d91490019124113d28dc32a3905f80516020612a5a8339815191529060ff90611b1e565b5f8181525f80516020612a5a833981519152602081815260408084206001600160a01b038716855290915290912060ff90611b1e565b5f8181525f80516020612a5a833981519152602081815260408084206001600160a01b03871685529091529091205460ff1615611b82575f828152602091825260408082206001600160a01b038616835290925220805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b91909160408184031261029a578035611d468161029e565b9260208201356001600160401b03811161029a57610d849201610b9b565b611d7091810190611d2e565b6040516302910f8b60e31b81526001600160a01b039283166004820181905291906020816024817f000000000000000000000000000000000000000000000000000000000000000088165afa9081156106d7575f91611e83575b5015611e7157611e05604091611e00611e4b94611de56122f9565b60018060a01b03166001600160601b0360a01b5f5416175f55565b612479565b6020810151600180546001600160a01b0319166001600160a01b0390921691909117905580516001600160a01b0316848116611e61575b5001516001600160a01b031690565b908116611e555750565b611e5e90611ab3565b50565b611e6a90611a08565b505f611e3c565b6040516362df054560e01b8152600490fd5b611e9c915060203d6020116106d0576106c28183610b31565b5f611dca565b9081602091031261029a575163ffffffff8116810361029a5790565b90600163ffffffff809316019182116115c857565b91805115611fac5780602080611eee93518301019101611ea2565b91611ef983826126a9565b92611f0a845165ffffffffffff1690565b9065ffffffffffff8085169216828114611fa05782119182611f40575b5050611f3757610d8492506125d9565b50506020015190565b909150611f4d835461183f565b63ffffffff831614918215611f66575b50505f80611f27565b611f98919250611f81611f7b611f8d92611ebe565b856126a9565b5165ffffffffffff1690565b65ffffffffffff1690565b115f80611f5d565b50505050506020015190565b50610d84916125d9565b60405190608082018281106001600160401b03821117610b1157604052606080838181528160208201528160408201520152565b9060208282031261029a5781516001600160401b039283821161029a57019060808282031261029a5761201b610b52565b92825181811161029a57826120319185016112c8565b8452602083015181811161029a578261204b9185016112c8565b6020850152604083015181811161029a57826120689185016112c8565b6040850152606083015190811161029a5761208392016112c8565b606082015290565b9081602091031261029a575190565b60409065ffffffffffff610d849493168152816020820152019061128b565b939190936120c5611fb6565b9380518061218e575b505061210f92939460206120ee6110216110215f5460018060a01b031690565b8188015190604051808098819463810da75d60e01b8352896004840161209a565b03915afa9182156106d757612150945f93612155575b5061214a9061214a939461213e60408a01518284611249565b9360608a01519261125f565b90612711565b915190565b61214a93509061217f61214a9260203d602011612187575b6121778183610b31565b81019061208b565b935090612125565b503d61216d565b61210f949550906020806121a6938301019101611fea565b93925f6120ce565b5f5460405163bd49c35f60e01b8152929190602090849060049082906001600160a01b03165afa9081156106d757610d84935f92612229575b5061214a61030461214a9394612208610304855f52600360205260405f2090565b935f52600460205260405f209060018060a01b03165f5260205260405f2090565b61214a925061030461224c61214a9260203d602011612187576121778183610b31565b9350506121e7565b65ffffffffffff90818111612267571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b9060405161229381610af6565b915465ffffffffffff8116835260301c6020830152565b8054806122bb5750505f905f905f90565b5f199080828101116115c8576122d8925f5260205f200101612286565b9065ffffffffffff82511691602060018060d01b0391015116906001929190565b612301612899565b612309612899565b60015f80516020612a7a83398151915255565b6040519061232982610b16565b5f6040838281528260208201520152565b81601f8201121561029a578051916020916001600160401b038411610b11578360051b906040519461236e85840187610b31565b8552838086019282010192831161029a578301905b828210612391575050505090565b838091835161239f8161029e565b815201910190612383565b9060208282031261029a5781516001600160401b039283821161029a5701908181039260a0841261029a576060604051946123e486610b16565b1261029a576040516123f581610b16565b83516124008161029e565b815260208401516124108161029e565b602082015260408401516124238161029e565b60408201528452606083015181811161029a578261244291850161233a565b6020850152608083015190811161029a5761245d920161233a565b604082015290565b80518210156117ff5760209160051b010190565b6124959061248561231c565b50602080825183010191016123aa565b8051519091906001600160a01b031615806125bf575b6125ad579060208101905f5b82518051821015612531576110216124d2836124df93612465565b516001600160a01b031690565b1561251f576125016124fd6124f86124d2848751612465565b611b89565b1590565b61250d576001016124b7565b604051635140fefd60e11b8152600490fd5b6040516323cda06760e01b8152600490fd5b506040925050818101905f5b825180518210156125a4576110216124d28361255893612465565b15612593576125766124fd6125716124d2848751612465565b611bf7565b6125825760010161253d565b8351635140fefd60e11b8152600490fd5b83516323cda06760e01b8152600490fd5b50509150505190565b6040516303501f5960e11b8152600490fd5b5060208201515115806124ab5750604082015151156124ab565b908154905f829160058411612643575b6125f49350846129fa565b8061261c57505f905b6001600160d01b0382161561165057610d8491600161193492016117ea565b61263661262b61263d9261183f565b835f5260205f200190565b5460301c90565b906125fd565b919261264e816128c7565b81039081116115c8576125f493855f5265ffffffffffff808360205f20015416908516105f1461267f5750916125e9565b92915061268b906115ba565b906125e9565b6040519061269e82610af6565b5f6020838281520152565b906126d26126cc6126f3926126bc612691565b506126c5612691565b50846117ea565b50612286565b91600165ffffffffffff845116936020828060d01b039101511691016117ea565b9054906040519261270384610af6565b835260031b1c602082015290565b908082101561271e575090565b905090565b8054600160401b811015610b1157612740916001820181556117ea565b61276b57815160209092015160301b65ffffffffffff191665ffffffffffff92909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b8054929392919082156128705761279f61279a61262b8561183f565b612286565b906127b0825165ffffffffffff1690565b65ffffffffffff8481169116811061285e576118a39460209488926127de611f8d875165ffffffffffff1690565b036128265750612818926127f46127ff9261183f565b905f5260205f200190565b9065ffffffffffff82549181199060301b169116179055565b01516001600160d01b031690565b91505061285991612846612838610b71565b65ffffffffffff9093168352565b6001600160d01b03881682860152612723565b612818565b604051632520601d60e01b8152600490fd5b6128949250612880612838610b71565b6001600160d01b0385166020830152612723565b5f9190565b60ff5f80516020612a9a8339815191525460401c16156128b557565b604051631afcd79f60e31b8152600490fd5b80156113f3578061214a61299261298861297e61297461296a6129606129566001610d849a5f908b60801c806129ee575b508060401c806129e1575b508060201c806129d4575b508060101c806129c7575b508060081c806129ba575b508060041c806129ad575b508060021c806129a0575b50821c612999575b811c1b61294f818b61159c565b0160011c90565b61294f818a61159c565b61294f818961159c565b61294f818861159c565b61294f818761159c565b61294f818661159c565b61294f818561159c565b809261159c565b8101612942565b600291509101905f61293a565b600491509101905f61292f565b600891509101905f612924565b601091509101905f612919565b602091509101905f61290e565b604091509101905f612903565b9150506080905f6128f8565b91905b838210612a0a5750505090565b9091928083169080841860011c82018092116115c857845f5265ffffffffffff808360205f20015416908416105f14612a475750925b91906129fd565b939250612a53906115ba565b91612a4056fe02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212205a47ef0800ec8586221910bfda595b4c0690e3271bc72e3aaf2a5da09d84aada64736f6c63430008190033","sourceMap":"536:5807:77:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;-1:-1:-1;;536:5807:77;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3551:47:23;;;:87;;;;536:5807:77;;;;;;;;;;3551:87:23;-1:-1:-1;;;1133:40:29;;-1:-1:-1;3551:87:23;;;536:5807:77;-1:-1:-1;536:5807:77;;;-1:-1:-1;;;;;536:5807:77;;;;;:::o;:::-;;;;;;-1:-1:-1;;536:5807:77;;;;;;;;;;;:::i;:::-;;;3202:4:23;;;:::i;:::-;536:5807:77;-1:-1:-1;536:5807:77;;;;;2662:52;:43;536:5807;;-1:-1:-1;536:5807:77;;;;;;;;;;;;;;;;;2662:43;:52;:::i;:::-;3458;3454:102;;536:5807;3656:53;536:5807;;-1:-1:-1;536:5807:77;;;;3566:74;536:5807;3566:43;536:5807;;-1:-1:-1;536:5807:77;;;;;;;;;;;;;;;;;3566:43;819:34:62;837:15;819:34;:::i;:::-;3566:74:77;;:::i;:::-;-1:-1:-1;;536:5807:77;;;;;-1:-1:-1;;;;;536:5807:77;;3656:53;536:5807;3454:102;536:5807;;-1:-1:-1;;;3533:12:77;;536:5807;;3533:12;536:5807;;;;;;;;;;;;;;;;;;3202:4:23;;;:::i;:::-;536:5807:77;-1:-1:-1;536:5807:77;2910:15;536:5807;;;-1:-1:-1;536:5807:77;;2901:36;;2897:98;;536:5807;-1:-1:-1;536:5807:77;2103:13;536:5807;;;2103:34;536:5807;-1:-1:-1;536:5807:77;2103:34;:::i;:::-;3009;3005:84;;3099:25;3171:35;3099:25;:56;3171:35;3099:25;;;536:5807;;2103:13;536:5807;;;;;;;3099:56;-1:-1:-1;;536:5807:77;;;;;;;;;;;;3171:35;;;;536:5807;3005:84;536:5807;-1:-1:-1;;;3066:12:77;;536:5807;;3066:12;2897:98;536:5807;-1:-1:-1;;;2960:24:77;;536:5807;;2960:24;536:5807;;;;;;-1:-1:-1;;536:5807:77;;;;;;1537:38:76;-1:-1:-1;;;;;536:5807:77;;;;;;;;;;;;-1:-1:-1;;536:5807:77;;;;;2662:52;:43;536:5807;;;;;:::i;:::-;;;-1:-1:-1;536:5807:77;;;;;-1:-1:-1;536:5807:77;;;;;;;;;;;;;;;;;2662:52;536:5807;;;;;;;;;;;;-1:-1:-1;;536:5807:77;;;;;;1632:54:76;-1:-1:-1;;;;;536:5807:77;;;;;;;;;;;;-1:-1:-1;;536:5807:77;;;;;;1743:56:76;-1:-1:-1;;;;;536:5807:77;;;;;;;;;;;;-1:-1:-1;;536:5807:77;;;;;;-1:-1:-1;;;;;536:5807:77;;;;;;;;3217:103:28;;;:::i;:::-;536:5807:77;;-1:-1:-1;;;4285:48:76;;4322:10;536:5807:77;4285:48:76;;536:5807:77;;;;;-1:-1:-1;;;;;4295:16:76;536:5807:77;4285:48:76;;;;;;;-1:-1:-1;4285:48:76;;;536:5807:77;4284:49:76;;4280:99;;-1:-1:-1;;;;;536:5807:77;-1:-1:-1;;4322:10:76;297:2:88;536:5807:77;;267:46:88;4459:27:76;;;;536:5807:77;;4459:15:76;536:5807:77;;;;;;;4459:27:76;536:5807:77;4459:37:76;4455:87;;4654:38;4552:27;4654:38;4552:27;;;536:5807:77;;4459:15:76;536:5807:77;;;;;;;4552:27:76;536:5807:77;4631:6:76;;;;:::i;:::-;536:5807:77;;;;;;;;;;;;;4654:38:76;;;;3282:1:28;1805;-1:-1:-1;;;;;;;;;;;536:5807:77;3716:283:28;3282:1;536:5807:77;4280:99:76;536:5807:77;;-1:-1:-1;;;4356:12:76;;536:5807:77;;4356:12:76;4285:48;;;;536:5807:77;4285:48:76;536:5807:77;4285:48:76;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;536:5807:77:-;;;;;;-1:-1:-1;;536:5807:77;;;;;;-1:-1:-1;536:5807:77;-1:-1:-1;;;;;;;;;;;536:5807:77;;;4919:24:23;536:5807:77;-1:-1:-1;536:5807:77;4919:24:23;536:5807:77;;;;;;;;;;;;;-1:-1:-1;;536:5807:77;;;;;;322:32:69;-1:-1:-1;;;;;536:5807:77;;;;;;;;;;;;-1:-1:-1;;536:5807:77;;;;5350:25:23;536:5807:77;;;;;;;:::i;:::-;;-1:-1:-1;536:5807:77;-1:-1:-1;;;;;;;;;;;536:5807:77;;3202:4:23;4919:24;536:5807:77;-1:-1:-1;536:5807:77;4919:24:23;536:5807:77;3202:4:23;:::i;:::-;5350:25;:::i;536:5807:77:-;;;;;;-1:-1:-1;;536:5807:77;;;;;;;;;:::i;:::-;966:10:27;-1:-1:-1;;;;;536:5807:77;;6441:34:23;6437:102;;6549:37;536:5807:77;;;6549:37:23;:::i;6437:102::-;536:5807:77;;-1:-1:-1;;;6498:30:23;;536:5807:77;;6498:30:23;536:5807:77;;;;;;-1:-1:-1;;536:5807:77;;;;;;;;;:::i;:::-;3217:103:28;;:::i;:::-;966:10:27;-1:-1:-1;536:5807:77;;;;;;;;;;1356:26:76;;536:5807:77;;4468:23:23;4464:108;;-1:-1:-1;4861:4:76;536:5807:77;-1:-1:-1;;;;;536:5807:77;;;;;;4861:13:76;;4857:63;;-1:-1:-1;;;;;;536:5807:77;;;4861:4:76;536:5807:77;4958:14:76;-1:-1:-1;;4958:14:76;4861:4;-1:-1:-1;;;;;;;;;;;536:5807:77;;4464:108:23;536:5807:77;;;;4514:47:23;;;;;;966:10:27;536:5807:77;4514:47:23;;536:5807:77;;;;;4514:47:23;536:5807:77;;;;;;-1:-1:-1;;536:5807:77;;;;;;-1:-1:-1;536:5807:77;2103:13;536:5807;;;2103:34;536:5807;-1:-1:-1;536:5807:77;2103:34;:::i;536:5807::-;;;;;;;;;;;;;-1:-1:-1;;;;;536:5807:77;;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;536:5807:77;;;;-1:-1:-1;;;;;536:5807:77;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;536:5807:77;;;;;;;4301:16:25;536:5807:77;;4726:16:25;;:34;;;;536:5807:77;4805:1:25;4790:16;:50;;;;536:5807:77;4855:13:25;:30;;;;536:5807:77;4851:91:25;;;-1:-1:-1;;;;;;;;;;;536:5807:77;;-1:-1:-1;;536:5807:77;;;;;718:4:69;;4951:18:25;4979:67;;718:4:69;:::i;:::-;5066:101:25;;536:5807:77;5066:101:25;-1:-1:-1;;;;;;;;;;;536:5807:77;;-1:-1:-1;;;;536:5807:77;;;;;-1:-1:-1;536:5807:77;;5142:14:25;;536:5807:77;;5142:14:25;536:5807:77;4979:67:25;-1:-1:-1;;;;;;;;;;;536:5807:77;;-1:-1:-1;;;;536:5807:77;-1:-1:-1;;;536:5807:77;;;718:4:69;:::i;4851:91:25:-;536:5807:77;;-1:-1:-1;;;4908:23:25;;536:5807:77;;4908:23:25;4855:30;4872:13;;;4855:30;;;4790:50;4818:4;4810:25;:30;;-1:-1:-1;4790:50:25;;4726:34;;;-1:-1:-1;4726:34:25;;536:5807:77;;;;;;-1:-1:-1;;536:5807:77;;;;;;;952:44;536:5807;;;;;;;;;-1:-1:-1;;536:5807:77;;;;;;;1253:6:76;536:5807:77;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;536:5807:77;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;-1:-1:-1;;;;;536:5807:77;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;536:5807:77;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;536:5807:77;;;;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;:::-;-1:-1:-1;;;;;536:5807:77;;;;;;-1:-1:-1;;536:5807:77;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;536:5807:77;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;536:5807:77;;;;;;;;;;;;;;;-1:-1:-1;;;;;536:5807:77;;;;;;;1870:60;536:5807;;;;;;:::i;:::-;;;;-1:-1:-1;536:5807:77;1870:13;536:5807;;;-1:-1:-1;536:5807:77;1870:60;:::i;536:5807::-;;;;;;-1:-1:-1;;536:5807:77;;;;;;;1356:26:76;536:5807:77;;;;;;;;;-1:-1:-1;;536:5807:77;;;;;;;795:35;536:5807;;;;;;;;;-1:-1:-1;;536:5807:77;;;;;;;;-1:-1:-1;;;;;536:5807:77;;;;;;;;;;;;;;-1:-1:-1;;536:5807:77;;;;;;3901:31:23;536:5807:77;;;;;:::i;:::-;;;-1:-1:-1;536:5807:77;-1:-1:-1;;;;;;;;;;;536:5807:77;;;-1:-1:-1;536:5807:77;;;;;;;;;;;;;;;;;3901:31:23;536:5807:77;;;;;;;;;;;;;-1:-1:-1;;536:5807:77;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;;;;536:5807:77;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;2399:78;:43;536:5807;;;:::i;:::-;;;;;-1:-1:-1;536:5807:77;;;;;-1:-1:-1;536:5807:77;;;;;;;;;;;;;;;;;2399:43;:78;:::i;536:5807::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;536:5807:77;;;;-1:-1:-1;536:5807:77;;;477:31:75;536:5807:77;;;;;;:::i;:::-;;;;;;;;;;;;;;;416:25:75;;;;536:5807:77;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;536:5807:77;;;;;;;;;;;;;477:31:75;;536:5807:77;;;;;;;;;;:::i;:::-;477:31:75;536:5807:77;;477:31:75;;;;;;:::i;:::-;518:79;;;536:5807:77;518:79:75;;536:5807:77;;;;;;;;;;;-1:-1:-1;;536:5807:77;;;;;;;;;;;;;;;;;-1:-1:-1;;536:5807:77;;;;;;;-1:-1:-1;;;;;404:28:69;536:5807:77;;;;;;;;;;-1:-1:-1;;536:5807:77;;;;;;1439:41:76;-1:-1:-1;;;;;536:5807:77;;;;;;;;;;;;-1:-1:-1;;536:5807:77;;;;;;-1:-1:-1;536:5807:77;2009:67:76;536:5807:77;;;;-1:-1:-1;536:5807:77;;;;;;;;;;;;;;-1:-1:-1;;536:5807:77;;;;5767:26:23;536:5807:77;;;;;;;:::i;:::-;;-1:-1:-1;536:5807:77;-1:-1:-1;;;;;;;;;;;536:5807:77;;3202:4:23;4919:24;536:5807:77;-1:-1:-1;536:5807:77;4919:24:23;536:5807:77;3202:4:23;:::i;:::-;5767:26;:::i;536:5807:77:-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;-1:-1:-1;;536:5807:77;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;536:5807:77;;;;;;;;;;;;:::i;:::-;3217:103:28;;:::i;:::-;-1:-1:-1;536:5807:77;;;5246:21:76;;:13;;-1:-1:-1;;;;;536:5807:77;5246:13:76;536:5807:77;;-1:-1:-1;;;;;536:5807:77;;;5246:21:76;536:5807:77;;-1:-1:-1;;;5246:23:76;;536:5807:77;;;;;5246:23:76;;;;;;;-1:-1:-1;5246:23:76;;;536:5807:77;-1:-1:-1;;;;;;536:5807:77;;;5232:10:76;:37;5228:87;;5341:4;536:5807:77;-1:-1:-1;;;;;536:5807:77;;;;5355:469:76;;536:5807:77;-1:-1:-1;;536:5807:77;;;;;;;;;;;;;;;;5839:55:76;;536:5807:77;;;;5839:55:76;;;;3282:1:28;1805;-1:-1:-1;;;;;;;;;;;536:5807:77;3716:283:28;5355:469:76;536:5807:77;;;;5435:94:76;;;;536:5807:77;5435:94:76;;;;;;;;;;;;536:5807:77;5435:94:76;;;:::i;:::-;;536:5807:77;;5435:94:76;;;;;;:::i;:::-;536:5807:77;5548:9:76;:51;5544:118;;-1:-1:-1;5839:55:76;5676:138;;;;5839:55;5676:138;;;1150:7;5676:138;;5355:469;;;5544:118;536:5807:77;;-1:-1:-1;;;5626:21:76;;536:5807:77;;5626:21:76;5228:87;536:5807:77;;-1:-1:-1;;;5292:12:76;;536:5807:77;;5292:12:76;5246:23;;;;;536:5807:77;5246:23:76;536:5807:77;5246:23:76;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;536:5807:77;;;;;;-1:-1:-1;;536:5807:77;;;;;;;;-1:-1:-1;;;;;536:5807:77;;;;;;;;;;;;;;-1:-1:-1;;536:5807:77;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;-1:-1:-1;;536:5807:77;;;;;;;1150:7:76;536:5807:77;;;;;;;;;-1:-1:-1;;536:5807:77;;;;;;;2700:1:76;536:5807:77;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;1742:195;;1870:60;1742:195;;-1:-1:-1;536:5807:77;1870:13;536:5807;;;-1:-1:-1;536:5807:77;1870:60;:::i;2207:277::-;-1:-1:-1;536:5807:77;;;2399:21;536:5807;;;;;;;;-1:-1:-1;;;;;536:5807:77;;;;;;;;;2399:78;;2207:277;;2399:78;:::i;536:5807::-;;;;;;;;;;;;;;;;;-1:-1:-1;536:5807:77;;;;;;;;-1:-1:-1;;536:5807:77;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;536:5807:77;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;536:5807:77;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;-1:-1:-1;;;;;536:5807:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2764:920:76:-;;2978:48;2764:920;;;;2978:48;;;;:::i;:::-;3036:36;;;536:5807:77;;:::i;:::-;;;;3086:20:76;3082:107;;2764:920;3216:11;;;;:193;;;;;2764:920;3216:394;;;;2764:920;3199:455;;;;;;2764:920;:::o;3199:455::-;3635:8;-1:-1:-1;3635:8:76;:::o;3216:394::-;3553:39;;;;;3430:180;3553:39;;;536:5807:77;;;;;;;;;;3430:180:76;;467:2:88;536:5807:77;3430:180:76;;;;;:::i;:::-;;536:5807:77;3444:31:76;-1:-1:-1;;;;;536:5807:77;3430:180:76;;;;;;;-1:-1:-1;3430:180:76;;;3216:394;3429:181;;3216:394;;;;;;3430:180;;;;3553:39;3430:180;3553:39;3430:180;;;;;;;:::i;:::-;;;;3216:193;-1:-1:-1;536:5807:77;;;-1:-1:-1;;;;;;536:5807:77;3248:161:76;3354:37;;;536:5807:77;3248:161:76;536:5807:77;;;;;;;;;;3248:161:76;;;;;;;:::i;:::-;;536:5807:77;3262:29:76;-1:-1:-1;;;;;536:5807:77;3248:161:76;;;;;;;-1:-1:-1;3248:161:76;;;3216:193;3247:162;;3216:193;;;3248:161;;;;;;;;;;;;;;:::i;:::-;;;;3082:107;3139:39;;;;;;;;;;;;;:::i;:::-;3082:107;;;;;536:5807:77;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;9856:1:60;536:5807:77;;;;;;;:::o;:::-;;:::i;3740:389:76:-;3918:5;536:5807:77;;;-1:-1:-1;;;3853:71:76;;;-1:-1:-1;;;;;536:5807:77;;;3853:71:76;;;536:5807:77;;;;;;;;3740:389:76;;536:5807:77;3853:71:76;;536:5807:77;;3853:71:76;536:5807:77;;;3867:29:76;536:5807:77;;3853:71:76;;;;;;;3918:5;3853:71;;;3740:389;3852:72;;536:5807:77;;;3852:181:76;;3740:389;3835:242;;;;;;4094:28;;;:::i;3835:242::-;4058:8;;3918:5;4058:8;:::o;3852:181::-;536:5807:77;;3945:88:76;;;-1:-1:-1;;;;;536:5807:77;;3853:71:76;3945:88;;536:5807:77;467:2:88;536:5807:77;;;;;;;;-1:-1:-1;536:5807:77;;;;;;;;3959:31:76;536:5807:77;3945:88:76;;;;;;;3918:5;3945:88;;;3852:181;3944:89;;;3852:181;;;;;3945:88;;;;;;-1:-1:-1;3945:88:76;;;;;;:::i;:::-;;;;;3853:71;;;;;;;;;;;;;;:::i;:::-;;;;4148:103:23;966:10:27;-1:-1:-1;536:5807:77;;;;;;;;;952:44;;536:5807;;3901:31:23;536:5807:77;;4468:23:23;4464:108;;4148:103;:::o;:::-;966:10:27;-1:-1:-1;536:5807:77;;;;;;;;;795:35;;536:5807;;3901:31:23;536:5807:77;4148:103:23;-1:-1:-1;536:5807:77;;;-1:-1:-1;;;;;;;;;;;536:5807:77;;;;;;;;966:10:27;536:5807:77;;;;;;;;;3901:31:23;536:5807:77;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;536:5807:77;;-1:-1:-1;536:5807:77;;;-1:-1:-1;536:5807:77;:::o;:::-;;:::i;:::-;;;;;-1:-1:-1;;;536:5807:77;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;536:5807:77;;;;;;;;:::o;6246:584:86:-;;;;;6360:12;;;536:5807:77;;;6360:24:86;;6356:75;;6246:584;6474:30;;;;;:::i;:::-;536:5807:77;;;;;;6578:12:86;;;;:::i;:::-;6604:24;;;;6246:584;-1:-1:-1;6600:188:86;;;-1:-1:-1;;;;;536:5807:77;;;;;;;6644:21:86;;;:29;:21;;:::i;:29::-;6798:25;6246:584;:::o;6600:188::-;6753:24;;536:5807:77;;8167:38:60;;-1:-1:-1;;;;;536:5807:77;;;;;8167:38:60;:::i;:::-;6753:24:86;;;:::i;6604:::-;536:5807:77;;;;;;6614:14:86;;-1:-1:-1;6604:24:86;;;6356:75;-1:-1:-1;;;536:5807:77;;;;;;6360:12:86;536:5807:77;;;;;;;:::i;:::-;;;;;;;;;;;;;;6356:75:86;;;10580:184;536:5807:77;;10303:8:60;;;:63;-1:-1:-1;10303:63:60;-1:-1:-1;;;;;536:5807:77;;10726:7:86;536:5807:77;;10736:12:86;:17;:12;;:17;:::i;:::-;536:5807:77;;;;;;10580:184:86;:::o;10303:63:60:-;536:5807:77;;;;;;;;;;14249:109:60;-1:-1:-1;14249:109:60;;-1:-1:-1;14249:109:60;;;536:5807:77;;;10303:63:60;;3326:384:28;-1:-1:-1;;;;;;;;;;;1847:1:28;536:5807:77;;3526:20:28;3522:88;;1847:1;536:5807:77;;3326:384:28:o;3522:88::-;536:5807:77;;-1:-1:-1;;;3569:30:28;;;;;4758:308:77;;536:5807;-1:-1:-1;536:5807:77;4889:13;536:5807;;;-1:-1:-1;536:5807:77;11124:30:86;;;;:::i;:::-;11173;;;-1:-1:-1;11173:30:86;;;;11182:17;;-1:-1:-1;;;;;536:5807:77;;11182:12:86;;:17;:::i;:::-;536:5807:77;;;4889:13;536:5807;;11173:30:86;4947::77;;;11173::86;4943:117:77;;;;4758:308;;:::o;4943:117::-;4993:56;536:5807;-1:-1:-1;536:5807:77;4889:13;536:5807;;;-1:-1:-1;536:5807:77;819:34:62;837:15;819:34;:::i;4993:56:77:-;4758:308;;:::o;4947:30::-;4957:20;;-1:-1:-1;4947:30:77;;;;11173::86;;;-1:-1:-1;11173:30:86;;7270:387:23;-1:-1:-1;;;;;536:5807:77;;-1:-1:-1;536:5807:77;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2887:71:23;536:5807:77;;;;-1:-1:-1;536:5807:77;;;;;;;;;;;-1:-1:-1;;;;;536:5807:77;;;;;;;;;;-1:-1:-1;;536:5807:77;7509:4:23;536:5807:77;;;966:10:27;;-1:-1:-1;;;;;536:5807:77;-1:-1:-1;7532:40:23;-1:-1:-1;;7532:40:23;7509:4;7586:11;:::o;7270:387::-;-1:-1:-1;;;;;536:5807:77;;-1:-1:-1;536:5807:77;;;;;;;;;1356:26:76;;-1:-1:-1;;;;;;;;;;;2887:71:23;536:5807:77;;3901:31:23;536:5807:77;;;;-1:-1:-1;536:5807:77;;;;;;;;;;;-1:-1:-1;;;;;536:5807:77;;;;;;;;;;-1:-1:-1;;536:5807:77;7509:4:23;536:5807:77;;;966:10:27;;-1:-1:-1;;;;;536:5807:77;;7532:40:23;-1:-1:-1;;7532:40:23;7509:4;7586:11;:::o;7432:219::-;7628:12;;;-1:-1:-1;7628:12:23;:::o;7270:387::-;-1:-1:-1;;;;;536:5807:77;;-1:-1:-1;536:5807:77;;;;;;;;;795:35;;-1:-1:-1;;;;;;;;;;;2887:71:23;536:5807:77;;3901:31:23;536:5807:77;7270:387:23;-1:-1:-1;;;;;536:5807:77;;-1:-1:-1;536:5807:77;;;;;;;;;952:44;;-1:-1:-1;;;;;;;;;;;2887:71:23;536:5807:77;;3901:31:23;536:5807:77;7270:387:23;-1:-1:-1;536:5807:77;;;-1:-1:-1;;;;;;;;;;;536:5807:77;;;;;;;;-1:-1:-1;;;;;536:5807:77;;;;;;;;;;;;3901:31:23;536:5807:77;7892:388:23;-1:-1:-1;536:5807:77;;;-1:-1:-1;;;;;;;;;;;536:5807:77;;;;;;;;-1:-1:-1;;;;;536:5807:77;;;;;;;;;;;;;;;;-1:-1:-1;536:5807:77;;;;;;;;;;;-1:-1:-1;;;;;536:5807:77;;;;;;;;;;-1:-1:-1;;536:5807:77;;;966:10:27;;-1:-1:-1;;;;;536:5807:77;;8155:40:23;-1:-1:-1;;8155:40:23;536:5807:77;8209:11:23;:::o;536:5807:77:-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;536:5807:77;;;;;;;;:::i;5907:716:76:-;6030:34;5907:716;6030:34;;;;:::i;:::-;536:5807:77;;-1:-1:-1;;;6080:41:76;;-1:-1:-1;;;;;536:5807:77;;;6080:41:76;;;536:5807:77;;;;;6080:41:76;536:5807:77;;;6090:13:76;536:5807:77;;6080:41:76;;;;;;;-1:-1:-1;6080:41:76;;;5907:716;6079:42;;6075:90;;6266:27;536:5807:77;2540:111:28;6210:14:76;536:5807:77;2540:111:28;;;:::i;:::-;536:5807:77;;;;;;-1:-1:-1;;;;;536:5807:77;;-1:-1:-1;536:5807:77;;;-1:-1:-1;536:5807:77;;6210:14:76;6266:27;:::i;:::-;6080:41;6311:15;;536:5807:77;;;;-1:-1:-1;;;;;;536:5807:77;-1:-1:-1;;;;;536:5807:77;;;;;;;;;;;-1:-1:-1;;;;;536:5807:77;;;;6337:143:76;;5907:716;-1:-1:-1;6493:28:76;536:5807:77;-1:-1:-1;;;;;536:5807:77;;;;;;;6489:128:76;;5907:716;:::o;6489:128::-;6551:55;;;:::i;:::-;;5907:716::o;6337:143::-;6404:65;;;:::i;:::-;;6337:143;;;6075:90;536:5807:77;;-1:-1:-1;;;6144:10:76;;6080:41;;6144:10;6080:41;;;;;;;;;;;;;;:::i;:::-;;;;536:5807:77;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::o;7558:604:86:-;;536:5807:77;;7686:17:86;7682:83;;536:5807:77;7789:27:86;536:5807:77;7789:27:86;536:5807:77;;7789:27:86;;;;;;:::i;:::-;7860:14;;;;;:::i;:::-;536:5807:77;;;;;;;;;;;;;;;;7888:22:86;;;7884:77;;7975:21;-1:-1:-1;7975:84:86;;;;7558:604;7971:139;;;;8127:28;;;;:::i;7971:139::-;8082:17;;7789:27;8082:17;536:5807:77;8075:24:86;:::o;7975:84::-;536:5807:77;;;8009:16:86;536:5807:77;;8009:16:86;:::i;:::-;536:5807:77;;;8001:24:86;:57;;;;;7975:84;;;;;;;8001:57;8029:29;8038:8;;;8029:18;8038:8;8029:23;8038:8;;:::i;:::-;8029:18;;:::i;:::-;536:5807:77;;;;;8029:23:86;536:5807:77;;;;8029:29:86;;8001:57;;;;7884:77;7933:17;;;;;7789:27;7933:17;536:5807:77;7926:24:86;:::o;7682:83::-;7726:28;;;;:::i;536:5807:77:-;;;;;;;;;;-1:-1:-1;;;;;536:5807:77;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;536:5807:77;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;3722:766::-;;;;;536:5807;;:::i;:::-;;;;3962:16;3958:92;;3722:766;536:5807;;4107:67;536:5807;;;4146:27;4107;:13;536:5807;-1:-1:-1;536:5807:77;;;;;;;;;4107:27;4146;;;;536:5807;;;;;;;;;;;4107:67;;;;;;;:::i;:::-;;;;;;;;;;4081:355;4107:67;-1:-1:-1;4107:67:77;;;3722:766;4260:28;4311:93;4260:28;4192:230;4260:28;;4222:67;536:5807;4260:28;;;4222:67;;;:::i;:::-;4367:36;;;;;4311:93;;:::i;:::-;4192:230;;:::i;4081:355::-;4450:21;;3722:766;:::o;4107:67::-;4192:230;4107:67;;;;4311:93;4107:67;4146:27;4107:67;4146:27;4107:67;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;3958:92;4107:67;4008:31;;;;;;;;;;;;;;:::i;:::-;3958:92;;;;;4494:258;4635:5;536:5807;;;-1:-1:-1;;;4628:27:77;;536:5807;4494:258;;4628:27;;536:5807;;4628:27;;536:5807;;-1:-1:-1;;;;;536:5807:77;4628:27;;;;;;;4606:139;4628:27;4635:5;4628:27;;;4494:258;2103:25;2662:52;:43;4657:78;2103:25;;:34;:25;;536:5807;;2103:13;536:5807;;;;;;;2103:34;536:5807;4635:5;536:5807;4628:27;;536:5807;;4635:5;536:5807;;;;;;;;;;;;;;;;;4628:27;4657:78;4628:27;;2662:43;4628:27;2662:52;4628:27;;;;;;;;;;;:::i;:::-;;;;;;14291:213:58;536:5807:77;14369:24:58;;;;14365:103;;536:5807:77;14291:213:58;:::o;14365:103::-;536:5807:77;;;;14416:41:58;;;;;;14447:2;14416:41;;;536:5807:77;;;;;14416:41:58;536:5807:77;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;10552:388:60:-;536:5807:77;;10728:8:60;;;10752:20;;10690:17;10752:20;10690:17;10752:20;10690:17;10752:20;:::o;10724:210::-;536:5807:77;;;;;;;;;;;14249:109:60;10690:17;14249:109;;10690:17;14249:109;;;536:5807:77;:::i;:::-;;;;;;;14249:109:60;536:5807:77;;;;;10911:11:60;;536:5807:77;;10886:37:60;10870:1;10886:37;;;:::o;6893:76:25:-;;;:::i;:::-;;;:::i;:::-;1805:1:28;-1:-1:-1;;;;;;;;;;;536:5807:77;6893:76:25:o;536:5807:77:-;;;;;;;:::i;:::-;-1:-1:-1;536:5807:77;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;536:5807:77;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;536:5807:77;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;5072:1269::-;5220:30;5072:1269;536:5807;;:::i;:::-;;5220:30;536:5807;;;5220:30;;;;;;:::i;:::-;5278:17;;536:5807;5278:17;;536:5807;-1:-1:-1;;;;;536:5807:77;5278:54;;:178;;5072:1269;5261:258;;5534:9;5220:30;5549:33;;;5278:17;5591:3;5549:33;;536:5807;;5545:44;;;;;5614:36;;;:50;:36;;:::i;:::-;536:5807;-1:-1:-1;;;;;536:5807:77;;;5614:50;;5610:119;;5747:73;5748:72;5783:36;;:33;;;:36;:::i;:::-;5748:72;:::i;:::-;5747:73;;536:5807;5747:73;5743:140;;536:5807;;5534:9;;5743:140;536:5807;;-1:-1:-1;;;5847:21:77;;;;;5610:119;536:5807;;-1:-1:-1;;;5691:23:77;;;;;5545:44;-1:-1:-1;5923:41:77;;-1:-1:-1;;5923:41:77;;;;5278:17;5973:3;5923:41;;536:5807;;5919:52;;;;;5996:44;;;:58;:44;;:::i;:58::-;;5992:127;;6137:90;6138:89;6182:44;;:41;;;:44;:::i;:::-;6138:89;:::i;6137:90::-;6133:157;;536:5807;;5908:9;;6133:157;536:5807;;-1:-1:-1;;;6254:21:77;;;;;5992:127;536:5807;;-1:-1:-1;;;6081:23:77;;;;;5919:52;;;;;;6317:17;5072:1269;:::o;5261:258::-;536:5807;;-1:-1:-1;;;5488:20:77;;;;;5278:178;5353:33;5220:30;5353:33;;;536:5807;5353:45;:102;5278:178;5353:102;5402:41;;;;;536:5807;5402:53;5278:178;;6999:207:86;;536:5807:77;;9594:15:60;-1:-1:-1;9619:18:60;9652:7;9658:1;9652:7;;9648:234;;6999:207:86;9906:53:60;;;;;:::i;:::-;9977:8;;;:63;-1:-1:-1;9977:63:60;;-1:-1:-1;;;;;536:5807:77;;7168:7:86;536:5807:77;;;7178:12:86;;:17;:12;;:17;:::i;9977:63:60:-;9992:41;10025:7;9992:48;10025:7;;:::i;:::-;9992:41;14249:109;;;;;;14099:265;;9992:41;536:5807:77;;;;;9992:48:60;9977:63;;;9648:234;9695:14;;;;;:::i;:::-;536:5807:77;;;;;;;9906:53:60;14249:109;;-1:-1:-1;14249:109:60;536:5807:77;14249:109:60;;;-1:-1:-1;14249:109:60;;536:5807:77;;;;;9727:48:60;9723:149;536:5807:77;;;9795:10:60;9723:149;9648:234;;9723:149;9850:7;;;;;;:::i;:::-;9723:149;9648:234;;536:5807:77;;;;;;;:::i;:::-;-1:-1:-1;536:5807:77;;;;;;;:::o;11486:272:86:-;;536:5807:77;11308:22:60;11718:31:86;11486:272;536:5807:77;;:::i;:::-;;;;:::i;:::-;;11308:22:60;;:::i;:::-;536:5807:77;;:::i;:::-;;11718:12:86;536:5807:77;;;;;11731:17:86;536:5807:77;;;;;11731:17:86;;536:5807:77;;11718:12:86;;:31;:::i;:::-;536:5807:77;;;;;;;;;:::i;:::-;;;;;;11731:17:86;11672:79;;536:5807:77;11486:272:86;:::o;2557:104:57:-;;2641:5;;;;;;:13;2557:104;:::o;2641:13::-;;;2557:104;:::o;536:5807:77:-;;;-1:-1:-1;;;536:5807:77;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;536:5807:77;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;11513:870:60;536:5807:77;;11513:870:60;;;536:5807:77;11513:870:60;11672:7;;;;536:5807:77;11775:28:60;11795:7;;;:::i;11775:28::-;536:5807:77;:::i;:::-;;;;;;;;;;;;;;;;11877:15:60;-1:-1:-1;11873:91:60;;536:5807:77;;12233:11:60;536:5807:77;;;12027:16:60;536:5807:77;;;;;;;12027:16:60;;;;12083:7;12063:43;12083:7;;12063:28;12083:7;;:::i;:::-;12063:28;14249:109;;;;;;14099:265;;12063:28;536:5807:77;;;;;;;;;;;;;;;;;12063:43:60;12233:11;536:5807:77;-1:-1:-1;;;;;536:5807:77;;;12023:189:60;536:5807:77;;;12145:52:60;536:5807:77;12155:41:60;536:5807:77;;:::i;:::-;;;;;;;;12155:41:60;-1:-1:-1;;;;;536:5807:77;;12155:41:60;;;536:5807:77;12145:52:60;:::i;:::-;12023:189;;11873:91;536:5807:77;;-1:-1:-1;;;11919:30:60;;;;;11668:709;12283:52;536:5807:77;;12293:41:60;536:5807:77;;:::i;12293:41:60:-;-1:-1:-1;;;;;536:5807:77;;12293:41:60;;;536:5807:77;12145:52:60;:::i;12283:::-;11678:1;12349:17;;:::o;7084:141:25:-;536:5807:77;-1:-1:-1;;;;;;;;;;;536:5807:77;;;;7150:18:25;7146:73;;7084:141::o;7146:73::-;536:5807:77;;-1:-1:-1;;;7191:17:25;;;;;8587:1642:57;8658:6;;8654:45;;9401:7;10201:10;10142:26;10093;10044;9995;9946;9897;9848;536:5807:77;10189:23:57;9401:7;8663:1;536:5807:77;;;;10826:16:57;10822:99;;8587:1642;536:5807:77;;;;10938:15:57;10934:96;;8587:1642;536:5807:77;;;;11047:15:57;11043:96;;8587:1642;536:5807:77;;;;11156:15:57;11152:96;;8587:1642;536:5807:77;;;;11265:14:57;11261:93;;8587:1642;536:5807:77;;;;11371:14:57;11367:93;;8587:1642;536:5807:77;;;;11477:14:57;11473:93;;8587:1642;536:5807:77;;;11579:64:57;;8587:1642;536:5807:77;;;9858:10:57;;;;:::i;:::-;536:5807:77;;;;;9848:26:57;9907:10;;;;:::i;9897:26::-;9956:10;;;;:::i;9946:26::-;10005:10;;;;:::i;9995:26::-;10054:10;;;;:::i;10044:26::-;10103:10;;;;:::i;10093:26::-;10152:10;;;;:::i;10142:26::-;10201:10;;;:::i;11579:64::-;536:5807:77;;11579:64:57;;11473:93;536:5807:77;11511:11:57;;536:5807:77;;11473:93:57;;;;11367;536:5807:77;11405:11:57;;536:5807:77;;11367:93:57;;;;11261;536:5807:77;11299:11:57;;536:5807:77;;11261:93:57;;;;11152:96;536:5807:77;11191:12:57;;536:5807:77;;11152:96:57;;;;11043;536:5807:77;11082:12:57;;536:5807:77;;11043:96:57;;;;10934;536:5807:77;10973:12:57;;536:5807:77;;10934:96:57;;;;10822:99;10862:13;;;536:5807:77;10822:99:57;;;;12736:433:60;;;12919:10;;;;;;13151:11;;;12736:433;:::o;12912:230::-;2900:5:57;;;;;;2910;;;;536:5807:77;;;;;;;;;14249:109:60;-1:-1:-1;14249:109:60;536:5807:77;14249:109:60;;;-1:-1:-1;14249:109:60;;536:5807:77;;;;;-1:-1:-1;12996:136:60;536:5807:77;;;13055:10:60;12996:136;;12912:230;;;;12996:136;13110:7;;;;;;:::i;:::-;12996:136;;","linkReferences":{},"immutableReferences":{"57808":[{"start":1834,"length":32}],"57811":[{"start":3768,"length":32}],"58762":[{"start":1467,"length":32},{"start":3825,"length":32}],"58765":[{"start":1122,"length":32},{"start":7577,"length":32}],"58768":[{"start":1269,"length":32},{"start":5312,"length":32},{"start":5636,"length":32}],"58771":[{"start":1337,"length":32},{"start":5159,"length":32},{"start":5762,"length":32}]}},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","FACTORY()":"2dd31000","HOOK_GAS_LIMIT()":"ff54740f","HOOK_RESERVE()":"557cab44","HOOK_SET_ROLE()":"6679191e","NETWORK_LIMIT_SET_ROLE()":"7d24bb27","NETWORK_REGISTRY()":"c0cd7c3e","OPERATOR_NETWORK_LIMIT_SET_ROLE()":"518504ba","OPERATOR_NETWORK_OPT_IN_SERVICE()":"1a80e500","OPERATOR_VAULT_OPT_IN_SERVICE()":"128e5d82","TYPE()":"bb24fe8a","VAULT_FACTORY()":"103f2907","VERSION()":"ffa1ad74","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","hook()":"7f5a7c7b","initialize(bytes)":"439fab91","maxNetworkLimit(bytes32)":"d15b740e","networkLimit(bytes32)":"3eb22c0f","networkLimitAt(bytes32,uint48,bytes)":"5d32a1c9","onSlash(bytes32,address,uint256,uint48,bytes)":"e49561ee","operatorNetworkLimit(bytes32,address)":"11422095","operatorNetworkLimitAt(bytes32,address,uint48,bytes)":"94d2558a","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","setHook(address)":"3dfd3873","setMaxNetworkLimit(uint96,uint256)":"23f752d5","setNetworkLimit(bytes32,uint256)":"02145348","setOperatorNetworkLimit(bytes32,address,uint256)":"020cf0c2","stake(bytes32,address)":"fd4d447c","stakeAt(bytes32,address,uint48,bytes)":"e02f6937","staticDelegateCall(address,bytes)":"9f86fd85","supportsInterface(bytes4)":"01ffc9a7","vault()":"fbfa77cf"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"networkRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"vaultFactory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operatorVaultOptInService\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operatorNetworkOptInService\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegatorFactory\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"entityType\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadySet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CheckpointUnorderedInsertion\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DuplicateRoleHolder\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedsMaxNetworkLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientHookGas\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingRoleHolders\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotNetwork\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotSlasher\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressRoleHolder\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"}],\"name\":\"OnSlash\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"hook\",\"type\":\"address\"}],\"name\":\"SetHook\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"SetMaxNetworkLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"SetNetworkLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"SetOperatorNetworkLimit\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HOOK_GAS_LIMIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HOOK_RESERVE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HOOK_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NETWORK_LIMIT_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NETWORK_REGISTRY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_NETWORK_LIMIT_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_NETWORK_OPT_IN_SERVICE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_VAULT_OPT_IN_SERVICE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TYPE\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VAULT_FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VERSION\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hook\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"}],\"name\":\"maxNetworkLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"}],\"name\":\"networkLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"networkLimitAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"operatorNetworkLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"operatorNetworkLimitAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"hook_\",\"type\":\"address\"}],\"name\":\"setHook\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint96\",\"name\":\"identifier\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"setMaxNetworkLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"setNetworkLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"setOperatorNetworkLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"stake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hints\",\"type\":\"bytes\"}],\"name\":\"stakeAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"staticDelegateCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"CheckpointUnorderedInsertion()\":[{\"details\":\"A value was attempted to be inserted on a past checkpoint.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"OnSlash(bytes32,address,uint256,uint48)\":{\"params\":{\"amount\":\"amount of the collateral to be slashed\",\"captureTimestamp\":\"time point when the stake was captured\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"SetHook(address)\":{\"params\":{\"hook\":\"address of the hook\"}},\"SetMaxNetworkLimit(bytes32,uint256)\":{\"params\":{\"amount\":\"new maximum subnetwork's limit (how much stake the subnetwork is ready to get)\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"SetNetworkLimit(bytes32,uint256)\":{\"params\":{\"amount\":\"new subnetwork's limit (how much stake the vault curator is ready to give to the subnetwork)\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"SetOperatorNetworkLimit(bytes32,address,uint256)\":{\"params\":{\"amount\":\"new operator's limit for the subnetwork (how much stake the vault curator is ready to give to the operator for the subnetwork)\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}}},\"kind\":\"dev\",\"methods\":{\"VERSION()\":{\"details\":\"Must return 1 for this one.\",\"returns\":{\"_0\":\"version of the delegator\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize(bytes)\":{\"params\":{\"data\":\"some data to use\"}},\"networkLimit(bytes32)\":{\"params\":{\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"_0\":\"limit of the subnetwork\"}},\"networkLimitAt(bytes32,uint48,bytes)\":{\"params\":{\"hint\":\"hint for checkpoint index\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\",\"timestamp\":\"time point to get the subnetwork limit at\"},\"returns\":{\"_0\":\"limit of the subnetwork at the given timestamp\"}},\"onSlash(bytes32,address,uint256,uint48,bytes)\":{\"details\":\"Only the vault's slasher can call this function.\",\"params\":{\"amount\":\"amount of the collateral slashed\",\"captureTimestamp\":\"time point when the stake was captured\",\"data\":\"some additional data\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"operatorNetworkLimit(bytes32,address)\":{\"params\":{\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"_0\":\"limit of the operator for the subnetwork\"}},\"operatorNetworkLimitAt(bytes32,address,uint48,bytes)\":{\"params\":{\"hint\":\"hint for checkpoint index\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\",\"timestamp\":\"time point to get the operator's limit for the subnetwork at\"},\"returns\":{\"_0\":\"limit of the operator for the subnetwork at the given timestamp\"}},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"setHook(address)\":{\"details\":\"Only a HOOK_SET_ROLE holder can call this function. The hook can have arbitrary logic under certain functions, however, it doesn't affect the stake guarantees.\",\"params\":{\"hook\":\"address of the hook\"}},\"setMaxNetworkLimit(uint96,uint256)\":{\"details\":\"Only a network can call this function.\",\"params\":{\"amount\":\"new maximum subnetwork's limit\"}},\"setNetworkLimit(bytes32,uint256)\":{\"details\":\"Only a NETWORK_LIMIT_SET_ROLE holder can call this function.\",\"params\":{\"amount\":\"new limit of the subnetwork\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"setOperatorNetworkLimit(bytes32,address,uint256)\":{\"details\":\"Only an OPERATOR_NETWORK_LIMIT_SET_ROLE holder can call this function.\",\"params\":{\"amount\":\"new limit of the operator for the subnetwork\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"stake(bytes32,address)\":{\"details\":\"Warning: this function is not safe to use for stake capturing, as it can change by the end of the block.\",\"params\":{\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"_0\":\"slashable stake until the end of the next epoch\"}},\"stakeAt(bytes32,address,uint48,bytes)\":{\"details\":\"Warning: it is not safe to use timestamp >= current one for the stake capturing, as it can change later.\",\"params\":{\"hints\":\"hints for the checkpoints' indexes\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\",\"timestamp\":\"time point to capture the stake at\"},\"returns\":{\"_0\":\"slashable stake at the given timestamp until the end of the consequent epoch\"}},\"staticDelegateCall(address,bytes)\":{\"details\":\"It allows to use this contract's storage on-chain.\",\"params\":{\"data\":\"data to make a delegatecall with\",\"target\":\"address of the contract to make a delegatecall to\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"stateVariables\":{\"NETWORK_LIMIT_SET_ROLE\":{\"return\":\"identifier of the subnetwork limit setter role\",\"returns\":{\"_0\":\"identifier of the subnetwork limit setter role\"}},\"OPERATOR_NETWORK_LIMIT_SET_ROLE\":{\"return\":\"identifier of the operator-subnetwork limit setter role\",\"returns\":{\"_0\":\"identifier of the operator-subnetwork limit setter role\"}}},\"version\":1},\"userdoc\":{\"events\":{\"OnSlash(bytes32,address,uint256,uint48)\":{\"notice\":\"Emitted when a slash happens.\"},\"SetHook(address)\":{\"notice\":\"Emitted when a hook is set.\"},\"SetMaxNetworkLimit(bytes32,uint256)\":{\"notice\":\"Emitted when a subnetwork's maximum limit is set.\"},\"SetNetworkLimit(bytes32,uint256)\":{\"notice\":\"Emitted when a subnetwork's limit is set.\"},\"SetOperatorNetworkLimit(bytes32,address,uint256)\":{\"notice\":\"Emitted when an operator's limit for a subnetwork is set.\"}},\"kind\":\"user\",\"methods\":{\"FACTORY()\":{\"notice\":\"Get the factory's address.\"},\"HOOK_GAS_LIMIT()\":{\"notice\":\"Get a gas limit for the hook.\"},\"HOOK_RESERVE()\":{\"notice\":\"Get a reserve gas between the gas limit check and the hook's execution.\"},\"HOOK_SET_ROLE()\":{\"notice\":\"Get a hook setter's role.\"},\"NETWORK_LIMIT_SET_ROLE()\":{\"notice\":\"Get a subnetwork limit setter's role.\"},\"NETWORK_REGISTRY()\":{\"notice\":\"Get the network registry's address.\"},\"OPERATOR_NETWORK_LIMIT_SET_ROLE()\":{\"notice\":\"Get an operator-subnetwork limit setter's role.\"},\"OPERATOR_NETWORK_OPT_IN_SERVICE()\":{\"notice\":\"Get the operator-network opt-in service's address.\"},\"OPERATOR_VAULT_OPT_IN_SERVICE()\":{\"notice\":\"Get the operator-vault opt-in service's address.\"},\"TYPE()\":{\"notice\":\"Get the entity's type.\"},\"VAULT_FACTORY()\":{\"notice\":\"Get the vault factory's address.\"},\"VERSION()\":{\"notice\":\"Get a version of the delegator (different versions mean different interfaces).\"},\"hook()\":{\"notice\":\"Get the hook's address.\"},\"initialize(bytes)\":{\"notice\":\"Initialize this entity contract by using a given data.\"},\"maxNetworkLimit(bytes32)\":{\"notice\":\"Get a particular subnetwork's maximum limit (meaning the subnetwork is not ready to get more as a stake).\"},\"networkLimit(bytes32)\":{\"notice\":\"Get a subnetwork's limit (how much stake the vault curator is ready to give to the subnetwork).\"},\"networkLimitAt(bytes32,uint48,bytes)\":{\"notice\":\"Get a subnetwork's limit at a given timestamp using a hint (how much stake the vault curator is ready to give to the subnetwork).\"},\"onSlash(bytes32,address,uint256,uint48,bytes)\":{\"notice\":\"Called when a slash happens.\"},\"operatorNetworkLimit(bytes32,address)\":{\"notice\":\"Get an operator's limit for a subnetwork. (how much stake the vault curator is ready to give to the operator for the subnetwork)\"},\"operatorNetworkLimitAt(bytes32,address,uint48,bytes)\":{\"notice\":\"Get an operator's limit for a subnetwork at a given timestamp using a hint (how much stake the vault curator is ready to give to the operator for the subnetwork).\"},\"setHook(address)\":{\"notice\":\"Set a new hook.\"},\"setMaxNetworkLimit(uint96,uint256)\":{\"notice\":\"Set a maximum limit for a subnetwork (how much stake the subnetwork is ready to get). identifier identifier of the subnetwork\"},\"setNetworkLimit(bytes32,uint256)\":{\"notice\":\"Set a subnetwork's limit (how much stake the vault curator is ready to give to the subnetwork).\"},\"setOperatorNetworkLimit(bytes32,address,uint256)\":{\"notice\":\"Set an operator's limit for a subnetwork. (how much stake the vault curator is ready to give to the operator for the subnetwork)\"},\"stake(bytes32,address)\":{\"notice\":\"Get a stake that a given subnetwork will be able to slash for a certain operator until the end of the next epoch (if no cross-slashing and no slashings by the subnetwork).\"},\"stakeAt(bytes32,address,uint48,bytes)\":{\"notice\":\"Get a stake that a given subnetwork could be able to slash for a certain operator at a given timestamp until the end of the consequent epoch using hints (if no cross-slashing and no slashings by the subnetwork).\"},\"staticDelegateCall(address,bytes)\":{\"notice\":\"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data).\"},\"vault()\":{\"notice\":\"Get the vault's address.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/delegator/FullRestakeDelegator.sol\":\"FullRestakeDelegator\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://942dad22fbdc1669f025540ba63aa3ccfad5f8458fc5d4525b31ebf272e7af45\",\"dweb:/ipfs/Qmdo4X2M82aM3AMoW2kf2jhYkSCyC4T1pHNd6obdsDFnAB\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45\",\"dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26\",\"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c\",\"dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0xbdc5e074d7dd6678f67e92b1a51a20226801a407b0e1af3da367c5d1ff4519ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a36cca6b22fff3db16fc789ff6c60eea71d4b156065d4d0c83a0bc5e91a77a8b\",\"dweb:/ipfs/QmYN3exd5AemxjBrN8XMB1p5LbbE16uC3sjbYjwi8AjcGR\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0xc7755af115020049e4140f224f9ee88d7e1799ffb0646f37bf0df24bf6213f58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f09bf94d5274334ec021f61a04659db303f31e60460e14b709c9bf187740111\",\"dweb:/ipfs/QmNvgomZYUwFAt4cZbPWAiTeSZQreGehY9BK5xyVJsUttb\"]},\"src/contracts/common/Entity.sol\":{\"keccak256\":\"0x3d61a932995b8443381f3950542d388223a2c26dd5d29a3274dea3baa7388bd7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7cdf5f03ca72fd263fd32ff59c8d88ddca911ae83896a287d10772c1bbe9b138\",\"dweb:/ipfs/QmbP84r5BWT1Rn9AYTntWSf3xUMTTCohTZJFhbBhDXFoHa\"]},\"src/contracts/common/StaticDelegateCallable.sol\":{\"keccak256\":\"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764\",\"dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD\"]},\"src/contracts/delegator/BaseDelegator.sol\":{\"keccak256\":\"0x7c54d491fdd4415b764a9c8defa068e56d4c0c8c9419be0053a1d377669290e8\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://9238bfbad0f6eeb0dc7727724de14380f1980b395902269703d5e2ef07e52e10\",\"dweb:/ipfs/QmPJn1V4HNXcEghYvogGuSTF24dSQUPosR5qtsXcmNqRm3\"]},\"src/contracts/delegator/FullRestakeDelegator.sol\":{\"keccak256\":\"0x0a81c4f8e72914563a9cb771e93acf889c71ea36b7bec040e4eb562b199d5af1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6fc66b6ba02da77046a0bbbd1dd407a62c08f52e04486c9cbd2cb1cca3da555f\",\"dweb:/ipfs/QmZQivK1ZnMxfRQQ5aLpV9co5u55wQVNev5Rg1hzAqxhkE\"]},\"src/contracts/libraries/Checkpoints.sol\":{\"keccak256\":\"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609\",\"dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE\"]},\"src/contracts/libraries/Subnetwork.sol\":{\"keccak256\":\"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56\",\"dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32\"]},\"src/interfaces/common/IEntity.sol\":{\"keccak256\":\"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b\",\"dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv\"]},\"src/interfaces/common/IMigratableEntity.sol\":{\"keccak256\":\"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c\",\"dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds\"]},\"src/interfaces/common/IRegistry.sol\":{\"keccak256\":\"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014\",\"dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK\"]},\"src/interfaces/common/IStaticDelegateCallable.sol\":{\"keccak256\":\"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516\",\"dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi\"]},\"src/interfaces/delegator/IBaseDelegator.sol\":{\"keccak256\":\"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2\",\"dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8\"]},\"src/interfaces/delegator/IDelegatorHook.sol\":{\"keccak256\":\"0xc51aa8d7d1f6c8043ee819b7aeb86da0e993912e1442098df897e299f01f9f46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://adddf5cb2ba282aeb576b26efb28640f865a1721cc9b6eee8b3ee0457a2c9780\",\"dweb:/ipfs/QmNYgAmnLRwWZbhTuQhZs9rx4zcme1df5mEepkrniorSoW\"]},\"src/interfaces/delegator/IFullRestakeDelegator.sol\":{\"keccak256\":\"0xa3c8cb2e45d4d8ce90e95263bea40c01dc400f05ad65bc29597d878606be5e7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://782cf5e201aa4cca037ebafd3807a68ff1cc721d5b8416a35244db0d0607369e\",\"dweb:/ipfs/QmQkJks6x7CKndeTPa9LxgTNygD5uEi7obhADhpq1Lsr9A\"]},\"src/interfaces/service/IOptInService.sol\":{\"keccak256\":\"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337\",\"dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24\"]},\"src/interfaces/vault/IVault.sol\":{\"keccak256\":\"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9\",\"dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R\"]},\"src/interfaces/vault/IVaultStorage.sol\":{\"keccak256\":\"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e\",\"dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"networkRegistry","type":"address"},{"internalType":"address","name":"vaultFactory","type":"address"},{"internalType":"address","name":"operatorVaultOptInService","type":"address"},{"internalType":"address","name":"operatorNetworkOptInService","type":"address"},{"internalType":"address","name":"delegatorFactory","type":"address"},{"internalType":"uint64","name":"entityType","type":"uint64"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"inputs":[],"type":"error","name":"AlreadySet"},{"inputs":[],"type":"error","name":"CheckpointUnorderedInsertion"},{"inputs":[],"type":"error","name":"DuplicateRoleHolder"},{"inputs":[],"type":"error","name":"ExceedsMaxNetworkLimit"},{"inputs":[],"type":"error","name":"InsufficientHookGas"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"MissingRoleHolders"},{"inputs":[],"type":"error","name":"NotInitialized"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"NotNetwork"},{"inputs":[],"type":"error","name":"NotSlasher"},{"inputs":[],"type":"error","name":"NotVault"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintDowncast"},{"inputs":[],"type":"error","name":"ZeroAddressRoleHolder"},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint48","name":"captureTimestamp","type":"uint48","indexed":false}],"type":"event","name":"OnSlash","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[{"internalType":"address","name":"hook","type":"address","indexed":true}],"type":"event","name":"SetHook","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"SetMaxNetworkLimit","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"SetNetworkLimit","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"SetOperatorNetworkLimit","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HOOK_GAS_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HOOK_RESERVE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HOOK_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"NETWORK_LIMIT_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"NETWORK_REGISTRY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_NETWORK_LIMIT_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_NETWORK_OPT_IN_SERVICE","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_VAULT_OPT_IN_SERVICE","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"TYPE","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VAULT_FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"VERSION","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"hook","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"}],"stateMutability":"view","type":"function","name":"maxNetworkLimit","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"}],"stateMutability":"view","type":"function","name":"networkLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"networkLimitAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint48","name":"captureTimestamp","type":"uint48"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"onSlash"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"operatorNetworkLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"operatorNetworkLimitAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"address","name":"hook_","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setHook"},{"inputs":[{"internalType":"uint96","name":"identifier","type":"uint96"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setMaxNetworkLimit"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setNetworkLimit"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setOperatorNetworkLimit"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"stake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hints","type":"bytes"}],"stateMutability":"view","type":"function","name":"stakeAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"staticDelegateCall"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"vault","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"VERSION()":{"details":"Must return 1 for this one.","returns":{"_0":"version of the delegator"}},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"initialize(bytes)":{"params":{"data":"some data to use"}},"networkLimit(bytes32)":{"params":{"subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"_0":"limit of the subnetwork"}},"networkLimitAt(bytes32,uint48,bytes)":{"params":{"hint":"hint for checkpoint index","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)","timestamp":"time point to get the subnetwork limit at"},"returns":{"_0":"limit of the subnetwork at the given timestamp"}},"onSlash(bytes32,address,uint256,uint48,bytes)":{"details":"Only the vault's slasher can call this function.","params":{"amount":"amount of the collateral slashed","captureTimestamp":"time point when the stake was captured","data":"some additional data","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"}},"operatorNetworkLimit(bytes32,address)":{"params":{"operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"_0":"limit of the operator for the subnetwork"}},"operatorNetworkLimitAt(bytes32,address,uint48,bytes)":{"params":{"hint":"hint for checkpoint index","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)","timestamp":"time point to get the operator's limit for the subnetwork at"},"returns":{"_0":"limit of the operator for the subnetwork at the given timestamp"}},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"setHook(address)":{"details":"Only a HOOK_SET_ROLE holder can call this function. The hook can have arbitrary logic under certain functions, however, it doesn't affect the stake guarantees.","params":{"hook":"address of the hook"}},"setMaxNetworkLimit(uint96,uint256)":{"details":"Only a network can call this function.","params":{"amount":"new maximum subnetwork's limit"}},"setNetworkLimit(bytes32,uint256)":{"details":"Only a NETWORK_LIMIT_SET_ROLE holder can call this function.","params":{"amount":"new limit of the subnetwork","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"}},"setOperatorNetworkLimit(bytes32,address,uint256)":{"details":"Only an OPERATOR_NETWORK_LIMIT_SET_ROLE holder can call this function.","params":{"amount":"new limit of the operator for the subnetwork","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"}},"stake(bytes32,address)":{"details":"Warning: this function is not safe to use for stake capturing, as it can change by the end of the block.","params":{"operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"_0":"slashable stake until the end of the next epoch"}},"stakeAt(bytes32,address,uint48,bytes)":{"details":"Warning: it is not safe to use timestamp >= current one for the stake capturing, as it can change later.","params":{"hints":"hints for the checkpoints' indexes","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)","timestamp":"time point to capture the stake at"},"returns":{"_0":"slashable stake at the given timestamp until the end of the consequent epoch"}},"staticDelegateCall(address,bytes)":{"details":"It allows to use this contract's storage on-chain.","params":{"data":"data to make a delegatecall with","target":"address of the contract to make a delegatecall to"}},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."}},"version":1},"userdoc":{"kind":"user","methods":{"FACTORY()":{"notice":"Get the factory's address."},"HOOK_GAS_LIMIT()":{"notice":"Get a gas limit for the hook."},"HOOK_RESERVE()":{"notice":"Get a reserve gas between the gas limit check and the hook's execution."},"HOOK_SET_ROLE()":{"notice":"Get a hook setter's role."},"NETWORK_LIMIT_SET_ROLE()":{"notice":"Get a subnetwork limit setter's role."},"NETWORK_REGISTRY()":{"notice":"Get the network registry's address."},"OPERATOR_NETWORK_LIMIT_SET_ROLE()":{"notice":"Get an operator-subnetwork limit setter's role."},"OPERATOR_NETWORK_OPT_IN_SERVICE()":{"notice":"Get the operator-network opt-in service's address."},"OPERATOR_VAULT_OPT_IN_SERVICE()":{"notice":"Get the operator-vault opt-in service's address."},"TYPE()":{"notice":"Get the entity's type."},"VAULT_FACTORY()":{"notice":"Get the vault factory's address."},"VERSION()":{"notice":"Get a version of the delegator (different versions mean different interfaces)."},"hook()":{"notice":"Get the hook's address."},"initialize(bytes)":{"notice":"Initialize this entity contract by using a given data."},"maxNetworkLimit(bytes32)":{"notice":"Get a particular subnetwork's maximum limit (meaning the subnetwork is not ready to get more as a stake)."},"networkLimit(bytes32)":{"notice":"Get a subnetwork's limit (how much stake the vault curator is ready to give to the subnetwork)."},"networkLimitAt(bytes32,uint48,bytes)":{"notice":"Get a subnetwork's limit at a given timestamp using a hint (how much stake the vault curator is ready to give to the subnetwork)."},"onSlash(bytes32,address,uint256,uint48,bytes)":{"notice":"Called when a slash happens."},"operatorNetworkLimit(bytes32,address)":{"notice":"Get an operator's limit for a subnetwork. (how much stake the vault curator is ready to give to the operator for the subnetwork)"},"operatorNetworkLimitAt(bytes32,address,uint48,bytes)":{"notice":"Get an operator's limit for a subnetwork at a given timestamp using a hint (how much stake the vault curator is ready to give to the operator for the subnetwork)."},"setHook(address)":{"notice":"Set a new hook."},"setMaxNetworkLimit(uint96,uint256)":{"notice":"Set a maximum limit for a subnetwork (how much stake the subnetwork is ready to get). identifier identifier of the subnetwork"},"setNetworkLimit(bytes32,uint256)":{"notice":"Set a subnetwork's limit (how much stake the vault curator is ready to give to the subnetwork)."},"setOperatorNetworkLimit(bytes32,address,uint256)":{"notice":"Set an operator's limit for a subnetwork. (how much stake the vault curator is ready to give to the operator for the subnetwork)"},"stake(bytes32,address)":{"notice":"Get a stake that a given subnetwork will be able to slash for a certain operator until the end of the next epoch (if no cross-slashing and no slashings by the subnetwork)."},"stakeAt(bytes32,address,uint48,bytes)":{"notice":"Get a stake that a given subnetwork could be able to slash for a certain operator at a given timestamp until the end of the consequent epoch using hints (if no cross-slashing and no slashings by the subnetwork)."},"staticDelegateCall(address,bytes)":{"notice":"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data)."},"vault()":{"notice":"Get the vault's address."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/delegator/FullRestakeDelegator.sol":"FullRestakeDelegator"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol":{"keccak256":"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74","urls":["bzz-raw://942dad22fbdc1669f025540ba63aa3ccfad5f8458fc5d4525b31ebf272e7af45","dweb:/ipfs/Qmdo4X2M82aM3AMoW2kf2jhYkSCyC4T1pHNd6obdsDFnAB"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8","urls":["bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45","dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41","urls":["bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26","dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe","urls":["bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c","dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol":{"keccak256":"0xbdc5e074d7dd6678f67e92b1a51a20226801a407b0e1af3da367c5d1ff4519ad","urls":["bzz-raw://a36cca6b22fff3db16fc789ff6c60eea71d4b156065d4d0c83a0bc5e91a77a8b","dweb:/ipfs/QmYN3exd5AemxjBrN8XMB1p5LbbE16uC3sjbYjwi8AjcGR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0xc7755af115020049e4140f224f9ee88d7e1799ffb0646f37bf0df24bf6213f58","urls":["bzz-raw://7f09bf94d5274334ec021f61a04659db303f31e60460e14b709c9bf187740111","dweb:/ipfs/QmNvgomZYUwFAt4cZbPWAiTeSZQreGehY9BK5xyVJsUttb"],"license":"MIT"},"src/contracts/common/Entity.sol":{"keccak256":"0x3d61a932995b8443381f3950542d388223a2c26dd5d29a3274dea3baa7388bd7","urls":["bzz-raw://7cdf5f03ca72fd263fd32ff59c8d88ddca911ae83896a287d10772c1bbe9b138","dweb:/ipfs/QmbP84r5BWT1Rn9AYTntWSf3xUMTTCohTZJFhbBhDXFoHa"],"license":"BUSL-1.1"},"src/contracts/common/StaticDelegateCallable.sol":{"keccak256":"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90","urls":["bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764","dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD"],"license":"BUSL-1.1"},"src/contracts/delegator/BaseDelegator.sol":{"keccak256":"0x7c54d491fdd4415b764a9c8defa068e56d4c0c8c9419be0053a1d377669290e8","urls":["bzz-raw://9238bfbad0f6eeb0dc7727724de14380f1980b395902269703d5e2ef07e52e10","dweb:/ipfs/QmPJn1V4HNXcEghYvogGuSTF24dSQUPosR5qtsXcmNqRm3"],"license":"BUSL-1.1"},"src/contracts/delegator/FullRestakeDelegator.sol":{"keccak256":"0x0a81c4f8e72914563a9cb771e93acf889c71ea36b7bec040e4eb562b199d5af1","urls":["bzz-raw://6fc66b6ba02da77046a0bbbd1dd407a62c08f52e04486c9cbd2cb1cca3da555f","dweb:/ipfs/QmZQivK1ZnMxfRQQ5aLpV9co5u55wQVNev5Rg1hzAqxhkE"],"license":"BUSL-1.1"},"src/contracts/libraries/Checkpoints.sol":{"keccak256":"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c","urls":["bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609","dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE"],"license":"MIT"},"src/contracts/libraries/Subnetwork.sol":{"keccak256":"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe","urls":["bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56","dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32"],"license":"MIT"},"src/interfaces/common/IEntity.sol":{"keccak256":"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21","urls":["bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b","dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv"],"license":"MIT"},"src/interfaces/common/IMigratableEntity.sol":{"keccak256":"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4","urls":["bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c","dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds"],"license":"MIT"},"src/interfaces/common/IRegistry.sol":{"keccak256":"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb","urls":["bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014","dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK"],"license":"MIT"},"src/interfaces/common/IStaticDelegateCallable.sol":{"keccak256":"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5","urls":["bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516","dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi"],"license":"MIT"},"src/interfaces/delegator/IBaseDelegator.sol":{"keccak256":"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee","urls":["bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2","dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8"],"license":"MIT"},"src/interfaces/delegator/IDelegatorHook.sol":{"keccak256":"0xc51aa8d7d1f6c8043ee819b7aeb86da0e993912e1442098df897e299f01f9f46","urls":["bzz-raw://adddf5cb2ba282aeb576b26efb28640f865a1721cc9b6eee8b3ee0457a2c9780","dweb:/ipfs/QmNYgAmnLRwWZbhTuQhZs9rx4zcme1df5mEepkrniorSoW"],"license":"MIT"},"src/interfaces/delegator/IFullRestakeDelegator.sol":{"keccak256":"0xa3c8cb2e45d4d8ce90e95263bea40c01dc400f05ad65bc29597d878606be5e7d","urls":["bzz-raw://782cf5e201aa4cca037ebafd3807a68ff1cc721d5b8416a35244db0d0607369e","dweb:/ipfs/QmQkJks6x7CKndeTPa9LxgTNygD5uEi7obhADhpq1Lsr9A"],"license":"MIT"},"src/interfaces/service/IOptInService.sol":{"keccak256":"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a","urls":["bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337","dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24"],"license":"MIT"},"src/interfaces/vault/IVault.sol":{"keccak256":"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235","urls":["bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9","dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R"],"license":"MIT"},"src/interfaces/vault/IVaultStorage.sol":{"keccak256":"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22","urls":["bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e","dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6"],"license":"MIT"}},"version":1},"id":77} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[{"name":"networkRegistry","type":"address","internalType":"address"},{"name":"vaultFactory","type":"address","internalType":"address"},{"name":"operatorVaultOptInService","type":"address","internalType":"address"},{"name":"operatorNetworkOptInService","type":"address","internalType":"address"},{"name":"delegatorFactory","type":"address","internalType":"address"},{"name":"entityType","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"HOOK_GAS_LIMIT","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"HOOK_RESERVE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"HOOK_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"NETWORK_LIMIT_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"NETWORK_REGISTRY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_NETWORK_LIMIT_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_NETWORK_OPT_IN_SERVICE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_VAULT_OPT_IN_SERVICE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"TYPE","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"VAULT_FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"VERSION","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"pure"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"hook","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"maxNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"networkLimit","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"networkLimitAt","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"onSlash","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","internalType":"uint48"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"operatorNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"operatorNetworkLimitAt","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setHook","inputs":[{"name":"hook_","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMaxNetworkLimit","inputs":[{"name":"identifier","type":"uint96","internalType":"uint96"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOperatorNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stake","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"stakeAt","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hints","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"staticDelegateCall","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"vault","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OnSlash","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","indexed":false,"internalType":"uint48"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SetHook","inputs":[{"name":"hook","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SetMaxNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SetNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SetOperatorNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"AlreadySet","inputs":[]},{"type":"error","name":"CheckpointUnorderedInsertion","inputs":[]},{"type":"error","name":"DuplicateRoleHolder","inputs":[]},{"type":"error","name":"ExceedsMaxNetworkLimit","inputs":[]},{"type":"error","name":"InsufficientHookGas","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"MissingRoleHolders","inputs":[]},{"type":"error","name":"NotInitialized","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"NotNetwork","inputs":[]},{"type":"error","name":"NotSlasher","inputs":[]},{"type":"error","name":"NotVault","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ZeroAddressRoleHolder","inputs":[]}],"bytecode":{"object":"0x610140346101a1576001600160401b0390601f612c4138819003918201601f191683019190848311848410176101a5578160c092859260409586528339810103126101a15761004d826101b9565b610059602084016101b9565b906100658385016101b9565b94610072606086016101b9565b9460a0610081608083016101b9565b9101519180831683036101a1577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff82891c1661019057808083160361014c575b50505060805260a05260c05260e0526101009283526101209182525190612a7392836101ce84396080518361072a015260a05183610eb8015260c0518381816105bb0152610ef1015260e0518381816104620152611d990152518281816104f5015281816114c001526116040152518181816105390152818161142701526116820152f35b6001600160401b0319909116811790915585519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80806100c7565b875163f92ee8a960e01b8152600490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101a15756fe60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a714610244578063020cf0c21461023f578063021453481461023a578063103f2907146102355780631142209514610230578063128e5d821461022b5780631a80e5001461022657806323f752d514610221578063248a9ca31461021c5780632dd31000146102175780632f2ff15d1461021257806336568abe1461020d5780633dfd3873146102085780633eb22c0f14610203578063439fab91146101fe578063518504ba146101f9578063557cab44146101f45780635d32a1c9146101ef5780636679191e146101ea5780637d24bb27146101e55780637f5a7c7b146101e057806391d14854146101db57806394d2558a146101d65780639f86fd85146101d1578063a217fddf146101cc578063bb24fe8a146101c7578063c0cd7c3e146101c2578063d15b740e146101bd578063d547741f146101b8578063e02f6937146101b3578063e49561ee146101ae578063fbfa77cf146101a9578063fd4d447c146101a4578063ff54740f1461019f5763ffa1ad741461019a575f80fd5b61120b565b6111ee565b6111c4565b61119d565b610fb2565b610f96565b610f4a565b610f20565b610edc565b610e99565b610e7f565b610dc5565b610d87565b610cd7565b610caf565b610c76565b610c3c565b610be1565b610ab1565b610a77565b61093f565b6108e9565b6107f0565b6107a5565b610759565b610715565b6106dc565b610568565b610524565b6104e0565b610491565b61044d565b610390565b6102af565b3461029a57602036600319011261029a5760043563ffffffff60e01b811680910361029a57602090637965db0b60e01b8114908115610289575b506040519015158152f35b6301ffc9a760e01b1490505f61027e565b5f80fd5b6001600160a01b0381160361029a57565b3461029a57606036600319011261029a576024356004356102cf8261029e565b604435916102db6116f7565b815f526004602052826103096103048360405f209060018060a01b03165f5260205260405f2090565b61190f565b1461037e5760207ffc9545f07ffadfb668efd0144cdcaf2d6e2c8192dce1ea9fc131934f9c90fc7e91835f52600482526103698561035a8360405f209060018060a01b03165f5260205260405f2090565b61036342612264565b9061184d565b50506040519485526001600160a01b031693a3005b60405163a741a04560e01b8152600490fd5b3461029a5760408060031936011261029a5760043590602435906103b2611754565b825f526002602052805f2054821161043d57825f526003602052816103d8825f2061190f565b1461042d5781610428916104187e899d104fc3d8820bd96540612bcc5c448c8837b13b9f7faa43ad0728f0c14f9461035a875f52600360205260405f2090565b5050519081529081906020820190565b0390a2005b5163a741a04560e01b8152600490fd5b51631eefc06360e31b8152600490fd5b3461029a575f36600319011261029a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461029a57604036600319011261029a5760206104d86103046024356104b68161029e565b6004355f526004845260405f209060018060a01b03165f5260205260405f2090565b604051908152f35b3461029a575f36600319011261029a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461029a575f36600319011261029a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461029a57604036600319011261029a576004356001600160601b038116810361029a576024359061059861195c565b6040516302910f8b60e31b81523360048201526020816024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa9081156106d7575f916106a8575b5015610696576001600160601b03166bffffffffffffffffffffffff193360601b16179080610622835f52600260205260405f2090565b541461037e5761067b817fc67e7929681aa1bccd63f52b3799bf5805f3009f197db6fdf584b14f7fbf608c92610660855f52600260205260405f2090565b5561066b818561198b565b6040519081529081906020820190565b0390a261069460015f805160206129fe83398151915255565b005b6040516323d53b9760e21b8152600490fd5b6106ca915060203d6020116106d0575b6106c28183610b31565b810190611226565b5f6105eb565b503d6106b8565b61123e565b3461029a57602036600319011261029a576004355f525f805160206129de8339815191526020526020600160405f200154604051908152f35b3461029a575f36600319011261029a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461029a57604036600319011261029a5761069460243560043561077c8261029e565b805f525f805160206129de8339815191526020526107a0600160405f2001546117aa565b611c66565b3461029a57604036600319011261029a576024356107c28161029e565b336001600160a01b038216036107de5761069490600435611c9c565b60405163334bd91960e11b8152600490fd5b3461029a57602036600319011261029a5760043561080d8161029e565b61081561195c565b335f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c60205260409020547fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c9060ff16156108cb57506001546001600160a01b03918216918116821461037e576001600160a01b03191681176001557f5bbb1d3ebb6a3ad2a0f17ff35e579a83af60604d1d3c2a4c83c62adecadf666d5f80a260015f805160206129fe83398151915255005b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b3461029a57602036600319011261029a576004355f52600360205260206104d860405f2061190f565b9181601f8401121561029a578235916001600160401b03831161029a576020838186019501011161029a57565b3461029a57602036600319011261029a576001600160401b0360043581811161029a57610970903690600401610912565b5f80516020612a1e833981519152549260ff8460401c1615931680159081610a6f575b6001149081610a65575b159081610a5c575b50610a4a575f80516020612a1e833981519152805467ffffffffffffffff191660011790556109d89183610a2657611d64565b6109de57005b5f80516020612a1e833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f80516020612a1e833981519152805460ff60401b1916600160401b179055611d64565b60405163f92ee8a960e01b8152600490fd5b9050155f6109a5565b303b15915061099d565b849150610993565b3461029a575f36600319011261029a5760206040517f15e7c882d74e8821ebf34aaff46fd0e1d53b9393d91490019124113d28dc32a38152f35b3461029a575f36600319011261029a576020604051614e208152f35b6064359065ffffffffffff8216820361029a57565b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b03821117610b1157604052565b610ae2565b606081019081106001600160401b03821117610b1157604052565b90601f801991011681019081106001600160401b03821117610b1157604052565b60405190608082018281106001600160401b03821117610b1157604052565b60405190610b7e82610af6565b565b6001600160401b038111610b1157601f01601f191660200190565b81601f8201121561029a57803590610bb282610b80565b92610bc06040519485610b31565b8284526020838301011161029a57815f926020809301838601378301015290565b3461029a57606036600319011261029a5760243565ffffffffffff8116810361029a576044356001600160401b03811161029a57602091610c296104d8923690600401610b9b565b906004355f526003845260405f20611ed3565b3461029a575f36600319011261029a5760206040517fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c8152f35b3461029a575f36600319011261029a5760206040517e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf8152f35b3461029a575f36600319011261029a576001546040516001600160a01b039091168152602090f35b3461029a57604036600319011261029a57602060ff610d29602435610cfb8161029e565b6004355f525f805160206129de833981519152845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b90608060031983011261029a5760043591602435610d528161029e565b9160443565ffffffffffff8116810361029a5791606435906001600160401b03821161029a57610d8491600401610b9b565b90565b3461029a5760206104d8610dc0610d9d36610d35565b939190925f526004865260405f209060018060a01b03165f5260205260405f2090565b611ed3565b3461029a5760408060031936011261029a57600435610de38161029e565b602435906001600160401b03821161029a575f8091610e09610e6d943690600401610912565b908187519283928337810184815203915af43d15610e7557610e5f3d610e2e81610b80565b90610e3b86519283610b31565b81523d5f602083013e5b84519485931515602085015280840152606083019061128b565b03601f198101835282610b31565b805190602001fd5b610e5f6060610e45565b3461029a575f36600319011261029a5760206040515f8152f35b3461029a575f36600319011261029a5760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461029a575f36600319011261029a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461029a57602036600319011261029a576004355f526002602052602060405f2054604051908152f35b3461029a57604036600319011261029a57610694602435600435610f6d8261029e565b805f525f805160206129de833981519152602052610f91600160405f2001546117aa565b611c9c565b3461029a5760206104d8610fa936610d35565b929190916113b1565b3461029a5760a036600319011261029a57602435600435610fd28261029e565b60443591610fde610acd565b90608435906001600160401b03821161029a5761100060049236908401610b9b565b61100861195c565b5f5460209061102d90611021906001600160a01b031681565b6001600160a01b031690565b60405163b134427160e01b815294859182905afa9283156106d7575f9361116c575b506001600160a01b03928316330361115a576001546001600160a01b03168381166110cf575b50506040805195865265ffffffffffff909316602086015216927f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed91819081015b0390a361069460015f805160206129fe83398151915255565b909360405194611106866110f8602082019363724ab0f760e11b8552858c898d60248701611550565b03601f198101885287610b31565b62042e305a10611148575f6110b6938192827f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed9951926203d090f15093611075565b604051638072475160e01b8152600490fd5b60405163dabc4ad960e01b8152600490fd5b61118f91935060203d602011611196575b6111878183610b31565b81019061153b565b915f61104f565b503d61117d565b3461029a575f36600319011261029a575f546040516001600160a01b039091168152602090f35b3461029a57604036600319011261029a5760206104d86024356111e68161029e565b6004356115cd565b3461029a575f36600319011261029a5760206040516203d0908152f35b3461029a575f36600319011261029a57602060405160018152f35b9081602091031261029a5751801515810361029a5790565b6040513d5f823e3d90fd5b90610d8492915f52600360205260405f20611ed3565b5f9081526004602090815260408083206001600160a01b03909416835292905220610d84929190611ed3565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b604051906112bc82610af6565b60606020838281520152565b81601f8201121561029a578051906112df82610b80565b926112ed6040519485610b31565b8284526020838301011161029a57815f9260208093018386015e8301015290565b9060208282031261029a5781516001600160401b039283821161029a57019060408282031261029a576040519261134484610af6565b825181811161029a57826113599185016112c8565b8452602083015190811161029a5761137192016112c8565b602082015290565b6001600160a01b0391821681529116602082015265ffffffffffff9091166040820152608060608201819052610d849291019061128b565b926113c1909291928284866120b9565b9290936113cc6112af565b9380518061151f575b50508415938415611489575b84156113f8575b505050506113f35790565b505f90565b602080949550611423910151604051958694859463530e1d4360e01b865260601c9060048601611379565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156106d7575f9161146a575b50155f8080806113e8565b611483915060203d6020116106d0576106c28183610b31565b5f61145f565b5f549094506001600160a01b03166020848651926114bc604051948593849363530e1d4360e01b85528960048601611379565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156106d7575f91611500575b5015936113e1565b611519915060203d6020116106d0576106c28183610b31565b5f6114f8565b61153392955060208091830101910161130e565b925f806113d5565b9081602091031261029a5751610d848161029e565b919360a093610d84969565ffffffffffff938552600180871b031660208501526040840152166060820152816080820152019061128b565b634e487b7160e01b5f52601160045260245ffd5b81156115a6570490565b634e487b7160e01b5f52601260045260245ffd5b90600182018092116115c857565b611588565b5f546040516308834cb560e21b8082526001600160a01b0385811660048401529283166024830152929392602092909183816044817f000000000000000000000000000000000000000000000000000000000000000086165afa9081156106d7575f916116da575b5015918215611656575b5050905061165057610d84916121b4565b50505f90565b6040519081526001600160a01b0385166004820152606086901c602482015291508290829060449082907f0000000000000000000000000000000000000000000000000000000000000000165afa9182156106d7575f926116bd575b505015805f8061163f565b6116d39250803d106106d0576106c28183610b31565b5f806116b2565b6116f19150843d86116106d0576106c28183610b31565b5f611635565b335f9081527f24e48de785eeca8420b70f73d267a66970ccc187d459f2a4b53e74ed92a5ab86602052604090207f15e7c882d74e8821ebf34aaff46fd0e1d53b9393d91490019124113d28dc32a39060ff905b5416156108cb5750565b335f9081527f72a65082a5691803ab2b62c9bc729b34205ba1b183d950896526b2fd8714d0c7602052604090207e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf9060ff9061174a565b5f8181525f805160206129de83398151915260209081526040808320338452909152902060ff9061174a565b634e487b7160e01b5f52603260045260245ffd5b80548210156117ff575f5260205f2001905f90565b6117d6565b90815491600160401b831015610b115782611827916001610b7e950181556117ea565b90919082549060031b91821b915f19901b1916179055565b5f198101919082116115c857565b909291926001820190815480156118df575b508461186a84612296565b5094909284549361187a8361190f565b96816118ca575b50156118a7575050505f1981019081116115c85761182785916118a3936117ea565b9190565b6118a39492936118c3926001600160d01b039091169190612748565b5050611804565b65ffffffffffff83811691161490505f611881565b600160401b811015610b11578060016118fb92018455836117ea565b8154905f199060031b1b191690555f61185f565b80548061193e57505f5b6001600160d01b0381161561165057600161193492016117ea565b90549060031b1c90565b5f199080828101116115c857825f5260205f2001015460301c611919565b5f805160206129fe83398151915260028154146119795760029055565b604051633ee5aeb560e01b8152600490fd5b90815f52600360205260405f20816119a282612296565b919390508315611a00576119c2916001600160d01b0316906001016117ea565b90549060031b1c5b826119f6575b50506119da575050565b6119f2915f52600360205260405f2061036342612264565b5050565b119050815f6119d0565b50505f6119ca565b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260409020545f805160206129de8339815191529060ff16611650575f808052602091825260408082206001600160a01b038516835290925220805460ff1916600117905533906001600160a01b03165f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b6001600160a01b0381165f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c602052604090207fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c905f805160206129de8339815191529060ff905b5416611b82575f828152602091825260408082206001600160a01b038616835290925220805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b5050505f90565b6001600160a01b0381165f9081527f72a65082a5691803ab2b62c9bc729b34205ba1b183d950896526b2fd8714d0c7602052604090207e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf905f805160206129de8339815191529060ff90611b1e565b6001600160a01b0381165f9081527f24e48de785eeca8420b70f73d267a66970ccc187d459f2a4b53e74ed92a5ab86602052604090207f15e7c882d74e8821ebf34aaff46fd0e1d53b9393d91490019124113d28dc32a3905f805160206129de8339815191529060ff90611b1e565b5f8181525f805160206129de833981519152602081815260408084206001600160a01b038716855290915290912060ff90611b1e565b5f8181525f805160206129de833981519152602081815260408084206001600160a01b03871685529091529091205460ff1615611b82575f828152602091825260408082206001600160a01b038616835290925220805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b91909160408184031261029a578035611d468161029e565b9260208201356001600160401b03811161029a57610d849201610b9b565b611d7091810190611d2e565b6040516302910f8b60e31b81526001600160a01b039283166004820181905291906020816024817f000000000000000000000000000000000000000000000000000000000000000088165afa9081156106d7575f91611e83575b5015611e7157611e05604091611e00611e4b94611de56122cf565b60018060a01b03166001600160601b0360a01b5f5416175f55565b61244f565b6020810151600180546001600160a01b0319166001600160a01b0390921691909117905580516001600160a01b0316848116611e61575b5001516001600160a01b031690565b908116611e555750565b611e5e90611ab3565b50565b611e6a90611a08565b505f611e3c565b6040516362df054560e01b8152600490fd5b611e9c915060203d6020116106d0576106c28183610b31565b5f611dca565b9081602091031261029a575163ffffffff8116810361029a5790565b90600163ffffffff809316019182116115c857565b91805115611fac5780602080611eee93518301019101611ea2565b91611ef9838261267f565b92611f0a845165ffffffffffff1690565b9065ffffffffffff8085169216828114611fa05782119182611f40575b5050611f3757610d8492506125af565b50506020015190565b909150611f4d835461183f565b63ffffffff831614918215611f66575b50505f80611f27565b611f98919250611f81611f7b611f8d92611ebe565b8561267f565b5165ffffffffffff1690565b65ffffffffffff1690565b115f80611f5d565b50505050506020015190565b50610d84916125af565b60405190608082018281106001600160401b03821117610b1157604052606080838181528160208201528160408201520152565b9060208282031261029a5781516001600160401b039283821161029a57019060808282031261029a5761201b610b52565b92825181811161029a57826120319185016112c8565b8452602083015181811161029a578261204b9185016112c8565b6020850152604083015181811161029a57826120689185016112c8565b6040850152606083015190811161029a5761208392016112c8565b606082015290565b9081602091031261029a575190565b60409065ffffffffffff610d849493168152816020820152019061128b565b939190936120c5611fb6565b93805180612194575b505061210f92939460206120ee6110216110215f5460018060a01b031690565b8188015190604051808098819463810da75d60e01b8352896004840161209a565b03915afa9182156106d757612156945f9361215b575b5061214a9061214a939461213e60408a01518284611249565b9360608a01519261125f565b90818082109118021890565b915190565b61214a93509061218561214a9260203d60201161218d575b61217d8183610b31565b81019061208b565b935090612125565b503d612173565b61210f949550906020806121ac938301019101611fea565b93925f6120ce565b5f5460405163bd49c35f60e01b81529290602090849060049082906001600160a01b03165afa9283156106d7575f9361223b575b5061030461222691612205610304855f52600360205260405f2090565b935f52600460205260405f209060018060a01b03165f5260205260405f2090565b90818082109118021890818082109118021890565b61222691935061225c6103049160203d60201161218d5761217d8183610b31565b9391506121e8565b65ffffffffffff90818111612277571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b8054806122a75750505f905f905f90565b5f199181838101116115c8575f5260205f2001015460019165ffffffffffff82169160301c90565b6122d7612825565b6122df612825565b60015f805160206129fe83398151915255565b604051906122ff82610b16565b5f6040838281528260208201520152565b81601f8201121561029a578051916020916001600160401b038411610b11578360051b906040519461234485840187610b31565b8552838086019282010192831161029a578301905b828210612367575050505090565b83809183516123758161029e565b815201910190612359565b9060208282031261029a5781516001600160401b039283821161029a5701908181039260a0841261029a576060604051946123ba86610b16565b1261029a576040516123cb81610b16565b83516123d68161029e565b815260208401516123e68161029e565b602082015260408401516123f98161029e565b60408201528452606083015181811161029a5782612418918501612310565b6020850152608083015190811161029a576124339201612310565b604082015290565b80518210156117ff5760209160051b010190565b61246b9061245b6122f2565b5060208082518301019101612380565b8051519091906001600160a01b03161580612595575b612583579060208101905f5b82518051821015612507576110216124a8836124b59361243b565b516001600160a01b031690565b156124f5576124d76124d36124ce6124a884875161243b565b611b89565b1590565b6124e35760010161248d565b604051635140fefd60e11b8152600490fd5b6040516323cda06760e01b8152600490fd5b506040925050818101905f5b8251805182101561257a576110216124a88361252e9361243b565b156125695761254c6124d36125476124a884875161243b565b611bf7565b61255857600101612513565b8351635140fefd60e11b8152600490fd5b83516323cda06760e01b8152600490fd5b50509150505190565b6040516303501f5960e11b8152600490fd5b506020820151511580612481575060408201515115612481565b908154905f829160058411612619575b6125ca93508461297e565b806125f257505f905b6001600160d01b0382161561165057610d8491600161193492016117ea565b61260c6126016126139261183f565b835f5260205f200190565b5460301c90565b906125d3565b919261262481612853565b81039081116115c8576125ca93855f5265ffffffffffff808360205f20015416908516105f146126555750916125bf565b929150612661906115ba565b906125bf565b6040519061267482610af6565b5f6020838281520152565b90602060016126a36126cf93612693612667565b5061269c612667565b50856117ea565b5093604051946126b286610af6565b549465ffffffffffff86169586825260301c9384910152016117ea565b905490604051926126df84610af6565b835260031b1c602082015290565b8054600160401b811015610b115761270a916001820181556117ea565b61273557815160209092015160301b65ffffffffffff191665ffffffffffff92909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b805492939280156127fb5761275f61276a9161183f565b825f5260205f200190565b9182549265ffffffffffff918285169281168084116127e9578793036127b057506127a992509065ffffffffffff82549181199060301b169116179055565b60301c9190565b9150506127e4916127d06127c2610b71565b65ffffffffffff9093168352565b6001600160d01b03861660208301526126ed565b6127a9565b604051632520601d60e01b8152600490fd5b50906128209161280c6127c2610b71565b6001600160d01b03851660208301526126ed565b5f9190565b60ff5f80516020612a1e8339815191525460401c161561284157565b604051631afcd79f60e31b8152600490fd5b6001811115610d8457600181600160801b81101561296c575b61291461290a6129006128f66128ec6128e261292097600488600160401b61291b9a101561295f575b640100000000811015612952575b62010000811015612945575b610100811015612939575b601081101561292d575b1015612925575b60030260011c6128db818b61159c565b0160011c90565b6128db818a61159c565b6128db818961159c565b6128db818861159c565b6128db818761159c565b6128db818661159c565b809361159c565b821190565b900390565b60011b6128cb565b811c9160021b916128c4565b60081c91811b916128ba565b60101c9160081b916128af565b60201c9160101b916128a3565b60401c9160201b91612895565b50600160401b9050608082901c61286c565b91905b83821061298e5750505090565b9091928083169080841860011c82018092116115c857845f5265ffffffffffff808360205f20015416908416105f146129cb5750925b9190612981565b9392506129d7906115ba565b916129c456fe02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220a91f5437baa295cfb0003d097c3ced9cc564aa352ed5b5781c9bed5919ca07c864736f6c63430008190033","sourceMap":"536:5807:84:-:0;;;;-1:-1:-1;;;;;536:5807:84;;;;;;;;;;-1:-1:-1;;536:5807:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;8837:64:22;536:5807:84;;;;;;;;;7896:76:22;;536:5807:84;;;;7985:34:22;7981:146;;-1:-1:-1;525:17:76;;;536:5807:84;525:17:76;536:5807:84;552:12:76;536:5807:84;2360:34:83;2404:28;;2442:57;;;;2509:61;;;;536:5807:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2404:28:83;536:5807:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7981:146:22;-1:-1:-1;;;;;;536:5807:84;;;;;;;;;;;;;8087:29:22;;536:5807:84;;8087:29:22;7981:146;;;;;7896:76;536:5807:84;;-1:-1:-1;;;7938:23:22;;;;;536:5807:84;-1:-1:-1;536:5807:84;;;;;;-1:-1:-1;536:5807:84;;;;;-1:-1:-1;536:5807:84;;;;-1:-1:-1;;;;;536:5807:84;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a714610244578063020cf0c21461023f578063021453481461023a578063103f2907146102355780631142209514610230578063128e5d821461022b5780631a80e5001461022657806323f752d514610221578063248a9ca31461021c5780632dd31000146102175780632f2ff15d1461021257806336568abe1461020d5780633dfd3873146102085780633eb22c0f14610203578063439fab91146101fe578063518504ba146101f9578063557cab44146101f45780635d32a1c9146101ef5780636679191e146101ea5780637d24bb27146101e55780637f5a7c7b146101e057806391d14854146101db57806394d2558a146101d65780639f86fd85146101d1578063a217fddf146101cc578063bb24fe8a146101c7578063c0cd7c3e146101c2578063d15b740e146101bd578063d547741f146101b8578063e02f6937146101b3578063e49561ee146101ae578063fbfa77cf146101a9578063fd4d447c146101a4578063ff54740f1461019f5763ffa1ad741461019a575f80fd5b61120b565b6111ee565b6111c4565b61119d565b610fb2565b610f96565b610f4a565b610f20565b610edc565b610e99565b610e7f565b610dc5565b610d87565b610cd7565b610caf565b610c76565b610c3c565b610be1565b610ab1565b610a77565b61093f565b6108e9565b6107f0565b6107a5565b610759565b610715565b6106dc565b610568565b610524565b6104e0565b610491565b61044d565b610390565b6102af565b3461029a57602036600319011261029a5760043563ffffffff60e01b811680910361029a57602090637965db0b60e01b8114908115610289575b506040519015158152f35b6301ffc9a760e01b1490505f61027e565b5f80fd5b6001600160a01b0381160361029a57565b3461029a57606036600319011261029a576024356004356102cf8261029e565b604435916102db6116f7565b815f526004602052826103096103048360405f209060018060a01b03165f5260205260405f2090565b61190f565b1461037e5760207ffc9545f07ffadfb668efd0144cdcaf2d6e2c8192dce1ea9fc131934f9c90fc7e91835f52600482526103698561035a8360405f209060018060a01b03165f5260205260405f2090565b61036342612264565b9061184d565b50506040519485526001600160a01b031693a3005b60405163a741a04560e01b8152600490fd5b3461029a5760408060031936011261029a5760043590602435906103b2611754565b825f526002602052805f2054821161043d57825f526003602052816103d8825f2061190f565b1461042d5781610428916104187e899d104fc3d8820bd96540612bcc5c448c8837b13b9f7faa43ad0728f0c14f9461035a875f52600360205260405f2090565b5050519081529081906020820190565b0390a2005b5163a741a04560e01b8152600490fd5b51631eefc06360e31b8152600490fd5b3461029a575f36600319011261029a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461029a57604036600319011261029a5760206104d86103046024356104b68161029e565b6004355f526004845260405f209060018060a01b03165f5260205260405f2090565b604051908152f35b3461029a575f36600319011261029a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461029a575f36600319011261029a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461029a57604036600319011261029a576004356001600160601b038116810361029a576024359061059861195c565b6040516302910f8b60e31b81523360048201526020816024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa9081156106d7575f916106a8575b5015610696576001600160601b03166bffffffffffffffffffffffff193360601b16179080610622835f52600260205260405f2090565b541461037e5761067b817fc67e7929681aa1bccd63f52b3799bf5805f3009f197db6fdf584b14f7fbf608c92610660855f52600260205260405f2090565b5561066b818561198b565b6040519081529081906020820190565b0390a261069460015f805160206129fe83398151915255565b005b6040516323d53b9760e21b8152600490fd5b6106ca915060203d6020116106d0575b6106c28183610b31565b810190611226565b5f6105eb565b503d6106b8565b61123e565b3461029a57602036600319011261029a576004355f525f805160206129de8339815191526020526020600160405f200154604051908152f35b3461029a575f36600319011261029a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461029a57604036600319011261029a5761069460243560043561077c8261029e565b805f525f805160206129de8339815191526020526107a0600160405f2001546117aa565b611c66565b3461029a57604036600319011261029a576024356107c28161029e565b336001600160a01b038216036107de5761069490600435611c9c565b60405163334bd91960e11b8152600490fd5b3461029a57602036600319011261029a5760043561080d8161029e565b61081561195c565b335f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c60205260409020547fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c9060ff16156108cb57506001546001600160a01b03918216918116821461037e576001600160a01b03191681176001557f5bbb1d3ebb6a3ad2a0f17ff35e579a83af60604d1d3c2a4c83c62adecadf666d5f80a260015f805160206129fe83398151915255005b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b3461029a57602036600319011261029a576004355f52600360205260206104d860405f2061190f565b9181601f8401121561029a578235916001600160401b03831161029a576020838186019501011161029a57565b3461029a57602036600319011261029a576001600160401b0360043581811161029a57610970903690600401610912565b5f80516020612a1e833981519152549260ff8460401c1615931680159081610a6f575b6001149081610a65575b159081610a5c575b50610a4a575f80516020612a1e833981519152805467ffffffffffffffff191660011790556109d89183610a2657611d64565b6109de57005b5f80516020612a1e833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f80516020612a1e833981519152805460ff60401b1916600160401b179055611d64565b60405163f92ee8a960e01b8152600490fd5b9050155f6109a5565b303b15915061099d565b849150610993565b3461029a575f36600319011261029a5760206040517f15e7c882d74e8821ebf34aaff46fd0e1d53b9393d91490019124113d28dc32a38152f35b3461029a575f36600319011261029a576020604051614e208152f35b6064359065ffffffffffff8216820361029a57565b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b03821117610b1157604052565b610ae2565b606081019081106001600160401b03821117610b1157604052565b90601f801991011681019081106001600160401b03821117610b1157604052565b60405190608082018281106001600160401b03821117610b1157604052565b60405190610b7e82610af6565b565b6001600160401b038111610b1157601f01601f191660200190565b81601f8201121561029a57803590610bb282610b80565b92610bc06040519485610b31565b8284526020838301011161029a57815f926020809301838601378301015290565b3461029a57606036600319011261029a5760243565ffffffffffff8116810361029a576044356001600160401b03811161029a57602091610c296104d8923690600401610b9b565b906004355f526003845260405f20611ed3565b3461029a575f36600319011261029a5760206040517fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c8152f35b3461029a575f36600319011261029a5760206040517e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf8152f35b3461029a575f36600319011261029a576001546040516001600160a01b039091168152602090f35b3461029a57604036600319011261029a57602060ff610d29602435610cfb8161029e565b6004355f525f805160206129de833981519152845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b90608060031983011261029a5760043591602435610d528161029e565b9160443565ffffffffffff8116810361029a5791606435906001600160401b03821161029a57610d8491600401610b9b565b90565b3461029a5760206104d8610dc0610d9d36610d35565b939190925f526004865260405f209060018060a01b03165f5260205260405f2090565b611ed3565b3461029a5760408060031936011261029a57600435610de38161029e565b602435906001600160401b03821161029a575f8091610e09610e6d943690600401610912565b908187519283928337810184815203915af43d15610e7557610e5f3d610e2e81610b80565b90610e3b86519283610b31565b81523d5f602083013e5b84519485931515602085015280840152606083019061128b565b03601f198101835282610b31565b805190602001fd5b610e5f6060610e45565b3461029a575f36600319011261029a5760206040515f8152f35b3461029a575f36600319011261029a5760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461029a575f36600319011261029a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461029a57602036600319011261029a576004355f526002602052602060405f2054604051908152f35b3461029a57604036600319011261029a57610694602435600435610f6d8261029e565b805f525f805160206129de833981519152602052610f91600160405f2001546117aa565b611c9c565b3461029a5760206104d8610fa936610d35565b929190916113b1565b3461029a5760a036600319011261029a57602435600435610fd28261029e565b60443591610fde610acd565b90608435906001600160401b03821161029a5761100060049236908401610b9b565b61100861195c565b5f5460209061102d90611021906001600160a01b031681565b6001600160a01b031690565b60405163b134427160e01b815294859182905afa9283156106d7575f9361116c575b506001600160a01b03928316330361115a576001546001600160a01b03168381166110cf575b50506040805195865265ffffffffffff909316602086015216927f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed91819081015b0390a361069460015f805160206129fe83398151915255565b909360405194611106866110f8602082019363724ab0f760e11b8552858c898d60248701611550565b03601f198101885287610b31565b62042e305a10611148575f6110b6938192827f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed9951926203d090f15093611075565b604051638072475160e01b8152600490fd5b60405163dabc4ad960e01b8152600490fd5b61118f91935060203d602011611196575b6111878183610b31565b81019061153b565b915f61104f565b503d61117d565b3461029a575f36600319011261029a575f546040516001600160a01b039091168152602090f35b3461029a57604036600319011261029a5760206104d86024356111e68161029e565b6004356115cd565b3461029a575f36600319011261029a5760206040516203d0908152f35b3461029a575f36600319011261029a57602060405160018152f35b9081602091031261029a5751801515810361029a5790565b6040513d5f823e3d90fd5b90610d8492915f52600360205260405f20611ed3565b5f9081526004602090815260408083206001600160a01b03909416835292905220610d84929190611ed3565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b604051906112bc82610af6565b60606020838281520152565b81601f8201121561029a578051906112df82610b80565b926112ed6040519485610b31565b8284526020838301011161029a57815f9260208093018386015e8301015290565b9060208282031261029a5781516001600160401b039283821161029a57019060408282031261029a576040519261134484610af6565b825181811161029a57826113599185016112c8565b8452602083015190811161029a5761137192016112c8565b602082015290565b6001600160a01b0391821681529116602082015265ffffffffffff9091166040820152608060608201819052610d849291019061128b565b926113c1909291928284866120b9565b9290936113cc6112af565b9380518061151f575b50508415938415611489575b84156113f8575b505050506113f35790565b505f90565b602080949550611423910151604051958694859463530e1d4360e01b865260601c9060048601611379565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156106d7575f9161146a575b50155f8080806113e8565b611483915060203d6020116106d0576106c28183610b31565b5f61145f565b5f549094506001600160a01b03166020848651926114bc604051948593849363530e1d4360e01b85528960048601611379565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156106d7575f91611500575b5015936113e1565b611519915060203d6020116106d0576106c28183610b31565b5f6114f8565b61153392955060208091830101910161130e565b925f806113d5565b9081602091031261029a5751610d848161029e565b919360a093610d84969565ffffffffffff938552600180871b031660208501526040840152166060820152816080820152019061128b565b634e487b7160e01b5f52601160045260245ffd5b81156115a6570490565b634e487b7160e01b5f52601260045260245ffd5b90600182018092116115c857565b611588565b5f546040516308834cb560e21b8082526001600160a01b0385811660048401529283166024830152929392602092909183816044817f000000000000000000000000000000000000000000000000000000000000000086165afa9081156106d7575f916116da575b5015918215611656575b5050905061165057610d84916121b4565b50505f90565b6040519081526001600160a01b0385166004820152606086901c602482015291508290829060449082907f0000000000000000000000000000000000000000000000000000000000000000165afa9182156106d7575f926116bd575b505015805f8061163f565b6116d39250803d106106d0576106c28183610b31565b5f806116b2565b6116f19150843d86116106d0576106c28183610b31565b5f611635565b335f9081527f24e48de785eeca8420b70f73d267a66970ccc187d459f2a4b53e74ed92a5ab86602052604090207f15e7c882d74e8821ebf34aaff46fd0e1d53b9393d91490019124113d28dc32a39060ff905b5416156108cb5750565b335f9081527f72a65082a5691803ab2b62c9bc729b34205ba1b183d950896526b2fd8714d0c7602052604090207e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf9060ff9061174a565b5f8181525f805160206129de83398151915260209081526040808320338452909152902060ff9061174a565b634e487b7160e01b5f52603260045260245ffd5b80548210156117ff575f5260205f2001905f90565b6117d6565b90815491600160401b831015610b115782611827916001610b7e950181556117ea565b90919082549060031b91821b915f19901b1916179055565b5f198101919082116115c857565b909291926001820190815480156118df575b508461186a84612296565b5094909284549361187a8361190f565b96816118ca575b50156118a7575050505f1981019081116115c85761182785916118a3936117ea565b9190565b6118a39492936118c3926001600160d01b039091169190612748565b5050611804565b65ffffffffffff83811691161490505f611881565b600160401b811015610b11578060016118fb92018455836117ea565b8154905f199060031b1b191690555f61185f565b80548061193e57505f5b6001600160d01b0381161561165057600161193492016117ea565b90549060031b1c90565b5f199080828101116115c857825f5260205f2001015460301c611919565b5f805160206129fe83398151915260028154146119795760029055565b604051633ee5aeb560e01b8152600490fd5b90815f52600360205260405f20816119a282612296565b919390508315611a00576119c2916001600160d01b0316906001016117ea565b90549060031b1c5b826119f6575b50506119da575050565b6119f2915f52600360205260405f2061036342612264565b5050565b119050815f6119d0565b50505f6119ca565b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260409020545f805160206129de8339815191529060ff16611650575f808052602091825260408082206001600160a01b038516835290925220805460ff1916600117905533906001600160a01b03165f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b6001600160a01b0381165f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c602052604090207fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c905f805160206129de8339815191529060ff905b5416611b82575f828152602091825260408082206001600160a01b038616835290925220805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b5050505f90565b6001600160a01b0381165f9081527f72a65082a5691803ab2b62c9bc729b34205ba1b183d950896526b2fd8714d0c7602052604090207e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf905f805160206129de8339815191529060ff90611b1e565b6001600160a01b0381165f9081527f24e48de785eeca8420b70f73d267a66970ccc187d459f2a4b53e74ed92a5ab86602052604090207f15e7c882d74e8821ebf34aaff46fd0e1d53b9393d91490019124113d28dc32a3905f805160206129de8339815191529060ff90611b1e565b5f8181525f805160206129de833981519152602081815260408084206001600160a01b038716855290915290912060ff90611b1e565b5f8181525f805160206129de833981519152602081815260408084206001600160a01b03871685529091529091205460ff1615611b82575f828152602091825260408082206001600160a01b038616835290925220805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b91909160408184031261029a578035611d468161029e565b9260208201356001600160401b03811161029a57610d849201610b9b565b611d7091810190611d2e565b6040516302910f8b60e31b81526001600160a01b039283166004820181905291906020816024817f000000000000000000000000000000000000000000000000000000000000000088165afa9081156106d7575f91611e83575b5015611e7157611e05604091611e00611e4b94611de56122cf565b60018060a01b03166001600160601b0360a01b5f5416175f55565b61244f565b6020810151600180546001600160a01b0319166001600160a01b0390921691909117905580516001600160a01b0316848116611e61575b5001516001600160a01b031690565b908116611e555750565b611e5e90611ab3565b50565b611e6a90611a08565b505f611e3c565b6040516362df054560e01b8152600490fd5b611e9c915060203d6020116106d0576106c28183610b31565b5f611dca565b9081602091031261029a575163ffffffff8116810361029a5790565b90600163ffffffff809316019182116115c857565b91805115611fac5780602080611eee93518301019101611ea2565b91611ef9838261267f565b92611f0a845165ffffffffffff1690565b9065ffffffffffff8085169216828114611fa05782119182611f40575b5050611f3757610d8492506125af565b50506020015190565b909150611f4d835461183f565b63ffffffff831614918215611f66575b50505f80611f27565b611f98919250611f81611f7b611f8d92611ebe565b8561267f565b5165ffffffffffff1690565b65ffffffffffff1690565b115f80611f5d565b50505050506020015190565b50610d84916125af565b60405190608082018281106001600160401b03821117610b1157604052606080838181528160208201528160408201520152565b9060208282031261029a5781516001600160401b039283821161029a57019060808282031261029a5761201b610b52565b92825181811161029a57826120319185016112c8565b8452602083015181811161029a578261204b9185016112c8565b6020850152604083015181811161029a57826120689185016112c8565b6040850152606083015190811161029a5761208392016112c8565b606082015290565b9081602091031261029a575190565b60409065ffffffffffff610d849493168152816020820152019061128b565b939190936120c5611fb6565b93805180612194575b505061210f92939460206120ee6110216110215f5460018060a01b031690565b8188015190604051808098819463810da75d60e01b8352896004840161209a565b03915afa9182156106d757612156945f9361215b575b5061214a9061214a939461213e60408a01518284611249565b9360608a01519261125f565b90818082109118021890565b915190565b61214a93509061218561214a9260203d60201161218d575b61217d8183610b31565b81019061208b565b935090612125565b503d612173565b61210f949550906020806121ac938301019101611fea565b93925f6120ce565b5f5460405163bd49c35f60e01b81529290602090849060049082906001600160a01b03165afa9283156106d7575f9361223b575b5061030461222691612205610304855f52600360205260405f2090565b935f52600460205260405f209060018060a01b03165f5260205260405f2090565b90818082109118021890818082109118021890565b61222691935061225c6103049160203d60201161218d5761217d8183610b31565b9391506121e8565b65ffffffffffff90818111612277571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b8054806122a75750505f905f905f90565b5f199181838101116115c8575f5260205f2001015460019165ffffffffffff82169160301c90565b6122d7612825565b6122df612825565b60015f805160206129fe83398151915255565b604051906122ff82610b16565b5f6040838281528260208201520152565b81601f8201121561029a578051916020916001600160401b038411610b11578360051b906040519461234485840187610b31565b8552838086019282010192831161029a578301905b828210612367575050505090565b83809183516123758161029e565b815201910190612359565b9060208282031261029a5781516001600160401b039283821161029a5701908181039260a0841261029a576060604051946123ba86610b16565b1261029a576040516123cb81610b16565b83516123d68161029e565b815260208401516123e68161029e565b602082015260408401516123f98161029e565b60408201528452606083015181811161029a5782612418918501612310565b6020850152608083015190811161029a576124339201612310565b604082015290565b80518210156117ff5760209160051b010190565b61246b9061245b6122f2565b5060208082518301019101612380565b8051519091906001600160a01b03161580612595575b612583579060208101905f5b82518051821015612507576110216124a8836124b59361243b565b516001600160a01b031690565b156124f5576124d76124d36124ce6124a884875161243b565b611b89565b1590565b6124e35760010161248d565b604051635140fefd60e11b8152600490fd5b6040516323cda06760e01b8152600490fd5b506040925050818101905f5b8251805182101561257a576110216124a88361252e9361243b565b156125695761254c6124d36125476124a884875161243b565b611bf7565b61255857600101612513565b8351635140fefd60e11b8152600490fd5b83516323cda06760e01b8152600490fd5b50509150505190565b6040516303501f5960e11b8152600490fd5b506020820151511580612481575060408201515115612481565b908154905f829160058411612619575b6125ca93508461297e565b806125f257505f905b6001600160d01b0382161561165057610d8491600161193492016117ea565b61260c6126016126139261183f565b835f5260205f200190565b5460301c90565b906125d3565b919261262481612853565b81039081116115c8576125ca93855f5265ffffffffffff808360205f20015416908516105f146126555750916125bf565b929150612661906115ba565b906125bf565b6040519061267482610af6565b5f6020838281520152565b90602060016126a36126cf93612693612667565b5061269c612667565b50856117ea565b5093604051946126b286610af6565b549465ffffffffffff86169586825260301c9384910152016117ea565b905490604051926126df84610af6565b835260031b1c602082015290565b8054600160401b811015610b115761270a916001820181556117ea565b61273557815160209092015160301b65ffffffffffff191665ffffffffffff92909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b805492939280156127fb5761275f61276a9161183f565b825f5260205f200190565b9182549265ffffffffffff918285169281168084116127e9578793036127b057506127a992509065ffffffffffff82549181199060301b169116179055565b60301c9190565b9150506127e4916127d06127c2610b71565b65ffffffffffff9093168352565b6001600160d01b03861660208301526126ed565b6127a9565b604051632520601d60e01b8152600490fd5b50906128209161280c6127c2610b71565b6001600160d01b03851660208301526126ed565b5f9190565b60ff5f80516020612a1e8339815191525460401c161561284157565b604051631afcd79f60e31b8152600490fd5b6001811115610d8457600181600160801b81101561296c575b61291461290a6129006128f66128ec6128e261292097600488600160401b61291b9a101561295f575b640100000000811015612952575b62010000811015612945575b610100811015612939575b601081101561292d575b1015612925575b60030260011c6128db818b61159c565b0160011c90565b6128db818a61159c565b6128db818961159c565b6128db818861159c565b6128db818761159c565b6128db818661159c565b809361159c565b821190565b900390565b60011b6128cb565b811c9160021b916128c4565b60081c91811b916128ba565b60101c9160081b916128af565b60201c9160101b916128a3565b60401c9160201b91612895565b50600160401b9050608082901c61286c565b91905b83821061298e5750505090565b9091928083169080841860011c82018092116115c857845f5265ffffffffffff808360205f20015416908416105f146129cb5750925b9190612981565b9392506129d7906115ba565b916129c456fe02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220a91f5437baa295cfb0003d097c3ced9cc564aa352ed5b5781c9bed5919ca07c864736f6c63430008190033","sourceMap":"536:5807:84:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;-1:-1:-1;;536:5807:84;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3551:47:19;;;:87;;;;536:5807:84;;;;;;;;;;3551:87:19;-1:-1:-1;;;1134:40:28;;-1:-1:-1;3551:87:19;;;536:5807:84;-1:-1:-1;536:5807:84;;;-1:-1:-1;;;;;536:5807:84;;;;;:::o;:::-;;;;;;-1:-1:-1;;536:5807:84;;;;;;;;;;;:::i;:::-;;;3202:4:19;;;:::i;:::-;536:5807:84;-1:-1:-1;536:5807:84;;;;;2662:52;:43;536:5807;;-1:-1:-1;536:5807:84;;;;;;;;;;;;;;;;;2662:43;:52;:::i;:::-;3458;3454:102;;536:5807;3656:53;536:5807;;-1:-1:-1;536:5807:84;;;;3566:74;536:5807;3566:43;536:5807;;-1:-1:-1;536:5807:84;;;;;;;;;;;;;;;;;3566:43;819:34:68;837:15;819:34;:::i;:::-;3566:74:84;;:::i;:::-;-1:-1:-1;;536:5807:84;;;;;-1:-1:-1;;;;;536:5807:84;;3656:53;536:5807;3454:102;536:5807;;-1:-1:-1;;;3533:12:84;;536:5807;;3533:12;536:5807;;;;;;;;;;;;;;;;;;3202:4:19;;;:::i;:::-;536:5807:84;-1:-1:-1;536:5807:84;2910:15;536:5807;;;-1:-1:-1;536:5807:84;;2901:36;;2897:98;;536:5807;-1:-1:-1;536:5807:84;2103:13;536:5807;;;2103:34;536:5807;-1:-1:-1;536:5807:84;2103:34;:::i;:::-;3009;3005:84;;3099:25;3171:35;3099:25;:56;3171:35;3099:25;;;536:5807;;2103:13;536:5807;;;;;;;3099:56;-1:-1:-1;;536:5807:84;;;;;;;;;;;;3171:35;;;;536:5807;3005:84;536:5807;-1:-1:-1;;;3066:12:84;;536:5807;;3066:12;2897:98;536:5807;-1:-1:-1;;;2960:24:84;;536:5807;;2960:24;536:5807;;;;;;-1:-1:-1;;536:5807:84;;;;;;1537:38:83;-1:-1:-1;;;;;536:5807:84;;;;;;;;;;;;-1:-1:-1;;536:5807:84;;;;;2662:52;:43;536:5807;;;;;:::i;:::-;;;-1:-1:-1;536:5807:84;;;;;-1:-1:-1;536:5807:84;;;;;;;;;;;;;;;;;2662:52;536:5807;;;;;;;;;;;;-1:-1:-1;;536:5807:84;;;;;;1632:54:83;-1:-1:-1;;;;;536:5807:84;;;;;;;;;;;;-1:-1:-1;;536:5807:84;;;;;;1743:56:83;-1:-1:-1;;;;;536:5807:84;;;;;;;;;;;;-1:-1:-1;;536:5807:84;;;;;;-1:-1:-1;;;;;536:5807:84;;;;;;;;3361:103:26;;;:::i;:::-;536:5807:84;;-1:-1:-1;;;4285:48:83;;4322:10;536:5807:84;4285:48:83;;536:5807:84;;;;;-1:-1:-1;;;;;4295:16:83;536:5807:84;4285:48:83;;;;;;;-1:-1:-1;4285:48:83;;;536:5807:84;4284:49:83;;4280:99;;-1:-1:-1;;;;;536:5807:84;-1:-1:-1;;4322:10:83;297:2:95;536:5807:84;;267:46:95;4459:27:83;;;;536:5807:84;;4459:15:83;536:5807:84;;;;;;;4459:27:83;536:5807:84;4459:37:83;4455:87;;4654:38;4552:27;4654:38;4552:27;;;536:5807:84;;4459:15:83;536:5807:84;;;;;;;4552:27:83;536:5807:84;4631:6:83;;;;:::i;:::-;536:5807:84;;;;;;;;;;;;;4654:38:83;;;;3426:1:26;1949;-1:-1:-1;;;;;;;;;;;536:5807:84;3860:283:26;3426:1;536:5807:84;4280:99:83;536:5807:84;;-1:-1:-1;;;4356:12:83;;536:5807:84;;4356:12:83;4285:48;;;;536:5807:84;4285:48:83;536:5807:84;4285:48:83;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;536:5807:84:-;;;;;;-1:-1:-1;;536:5807:84;;;;;;-1:-1:-1;536:5807:84;-1:-1:-1;;;;;;;;;;;536:5807:84;;;4919:24:19;536:5807:84;-1:-1:-1;536:5807:84;4919:24:19;536:5807:84;;;;;;;;;;;;;-1:-1:-1;;536:5807:84;;;;;;322:32:76;-1:-1:-1;;;;;536:5807:84;;;;;;;;;;;;-1:-1:-1;;536:5807:84;;;;5350:25:19;536:5807:84;;;;;;;:::i;:::-;;-1:-1:-1;536:5807:84;-1:-1:-1;;;;;;;;;;;536:5807:84;;3202:4:19;4919:24;536:5807:84;-1:-1:-1;536:5807:84;4919:24:19;536:5807:84;3202:4:19;:::i;:::-;5350:25;:::i;536:5807:84:-;;;;;;-1:-1:-1;;536:5807:84;;;;;;;;;:::i;:::-;966:10:24;-1:-1:-1;;;;;536:5807:84;;6441:34:19;6437:102;;6549:37;536:5807:84;;;6549:37:19;:::i;6437:102::-;536:5807:84;;-1:-1:-1;;;6498:30:19;;536:5807:84;;6498:30:19;536:5807:84;;;;;;-1:-1:-1;;536:5807:84;;;;;;;;;:::i;:::-;3361:103:26;;:::i;:::-;966:10:24;-1:-1:-1;536:5807:84;;;;;;;;;;1356:26:83;;536:5807:84;;4468:23:19;4464:108;;-1:-1:-1;4861:4:83;536:5807:84;-1:-1:-1;;;;;536:5807:84;;;;;;4861:13:83;;4857:63;;-1:-1:-1;;;;;;536:5807:84;;;4861:4:83;536:5807:84;4958:14:83;-1:-1:-1;;4958:14:83;4861:4;-1:-1:-1;;;;;;;;;;;536:5807:84;;4464:108:19;536:5807:84;;;;4514:47:19;;;;;;966:10:24;536:5807:84;4514:47:19;;536:5807:84;;;;;4514:47:19;536:5807:84;;;;;;-1:-1:-1;;536:5807:84;;;;;;-1:-1:-1;536:5807:84;2103:13;536:5807;;;2103:34;536:5807;-1:-1:-1;536:5807:84;2103:34;:::i;536:5807::-;;;;;;;;;;;;;-1:-1:-1;;;;;536:5807:84;;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;536:5807:84;;;;-1:-1:-1;;;;;536:5807:84;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;536:5807:84;;;;;;;4301:16:22;536:5807:84;;4726:16:22;;:34;;;;536:5807:84;4805:1:22;4790:16;:50;;;;536:5807:84;4855:13:22;:30;;;;536:5807:84;4851:91:22;;;-1:-1:-1;;;;;;;;;;;536:5807:84;;-1:-1:-1;;536:5807:84;;;;;718:4:76;;4951:18:22;4979:67;;718:4:76;:::i;:::-;5066:101:22;;536:5807:84;5066:101:22;-1:-1:-1;;;;;;;;;;;536:5807:84;;-1:-1:-1;;;;536:5807:84;;;;;-1:-1:-1;536:5807:84;;5142:14:22;;536:5807:84;;5142:14:22;536:5807:84;4979:67:22;-1:-1:-1;;;;;;;;;;;536:5807:84;;-1:-1:-1;;;;536:5807:84;-1:-1:-1;;;536:5807:84;;;718:4:76;:::i;4851:91:22:-;536:5807:84;;-1:-1:-1;;;4908:23:22;;536:5807:84;;4908:23:22;4855:30;4872:13;;;4855:30;;;4790:50;4818:4;4810:25;:30;;-1:-1:-1;4790:50:22;;4726:34;;;-1:-1:-1;4726:34:22;;536:5807:84;;;;;;-1:-1:-1;;536:5807:84;;;;;;;952:44;536:5807;;;;;;;;;-1:-1:-1;;536:5807:84;;;;;;;1253:6:83;536:5807:84;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;536:5807:84;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;-1:-1:-1;;;;;536:5807:84;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;536:5807:84;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;536:5807:84;;;;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;:::-;-1:-1:-1;;;;;536:5807:84;;;;;;-1:-1:-1;;536:5807:84;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;536:5807:84;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;536:5807:84;;;;;;;;;;;;;;;-1:-1:-1;;;;;536:5807:84;;;;;;;1870:60;536:5807;;;;;;:::i;:::-;;;;-1:-1:-1;536:5807:84;1870:13;536:5807;;;-1:-1:-1;536:5807:84;1870:60;:::i;536:5807::-;;;;;;-1:-1:-1;;536:5807:84;;;;;;;1356:26:83;536:5807:84;;;;;;;;;-1:-1:-1;;536:5807:84;;;;;;;795:35;536:5807;;;;;;;;;-1:-1:-1;;536:5807:84;;;;;;;;-1:-1:-1;;;;;536:5807:84;;;;;;;;;;;;;;-1:-1:-1;;536:5807:84;;;;;;3901:31:19;536:5807:84;;;;;:::i;:::-;;;-1:-1:-1;536:5807:84;-1:-1:-1;;;;;;;;;;;536:5807:84;;;-1:-1:-1;536:5807:84;;;;;;;;;;;;;;;;;3901:31:19;536:5807:84;;;;;;;;;;;;;-1:-1:-1;;536:5807:84;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;;;;536:5807:84;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;2399:78;:43;536:5807;;;:::i;:::-;;;;;-1:-1:-1;536:5807:84;;;;;-1:-1:-1;536:5807:84;;;;;;;;;;;;;;;;;2399:43;:78;:::i;536:5807::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;536:5807:84;;;;-1:-1:-1;536:5807:84;;;477:31:82;536:5807:84;;;;;;:::i;:::-;;;;;;;;;;;;;;;416:25:82;;;;536:5807:84;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;536:5807:84;;;;;;;;;;;;;477:31:82;;536:5807:84;;;;;;;;;;:::i;:::-;477:31:82;536:5807:84;;477:31:82;;;;;;:::i;:::-;518:79;;;536:5807:84;518:79:82;;536:5807:84;;;;;;;;;;;-1:-1:-1;;536:5807:84;;;;;;;;;;;;;;;;;-1:-1:-1;;536:5807:84;;;;;;;-1:-1:-1;;;;;404:28:76;536:5807:84;;;;;;;;;;-1:-1:-1;;536:5807:84;;;;;;1439:41:83;-1:-1:-1;;;;;536:5807:84;;;;;;;;;;;;-1:-1:-1;;536:5807:84;;;;;;-1:-1:-1;536:5807:84;2009:67:83;536:5807:84;;;;-1:-1:-1;536:5807:84;;;;;;;;;;;;;;-1:-1:-1;;536:5807:84;;;;5767:26:19;536:5807:84;;;;;;;:::i;:::-;;-1:-1:-1;536:5807:84;-1:-1:-1;;;;;;;;;;;536:5807:84;;3202:4:19;4919:24;536:5807:84;-1:-1:-1;536:5807:84;4919:24:19;536:5807:84;3202:4:19;:::i;:::-;5767:26;:::i;536:5807:84:-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;-1:-1:-1;;536:5807:84;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;536:5807:84;;;;;;;;;;;;:::i;:::-;3361:103:26;;:::i;:::-;-1:-1:-1;536:5807:84;;;5246:21:83;;:13;;-1:-1:-1;;;;;536:5807:84;5246:13:83;536:5807:84;;-1:-1:-1;;;;;536:5807:84;;;5246:21:83;536:5807:84;;-1:-1:-1;;;5246:23:83;;536:5807:84;;;;;5246:23:83;;;;;;;-1:-1:-1;5246:23:83;;;536:5807:84;-1:-1:-1;;;;;;536:5807:84;;;5232:10:83;:37;5228:87;;5341:4;536:5807:84;-1:-1:-1;;;;;536:5807:84;;;;5355:469:83;;536:5807:84;-1:-1:-1;;536:5807:84;;;;;;;;;;;;;;;;5839:55:83;;536:5807:84;;;;5839:55:83;;;;3426:1:26;1949;-1:-1:-1;;;;;;;;;;;536:5807:84;3860:283:26;5355:469:83;536:5807:84;;;;5435:94:83;;;;536:5807:84;5435:94:83;;;;;;;;;;;;536:5807:84;5435:94:83;;;:::i;:::-;;536:5807:84;;5435:94:83;;;;;;:::i;:::-;536:5807:84;5548:9:83;:51;5544:118;;-1:-1:-1;5839:55:83;5676:138;;;;5839:55;5676:138;;;1150:7;5676:138;;5355:469;;;5544:118;536:5807:84;;-1:-1:-1;;;5626:21:83;;536:5807:84;;5626:21:83;5228:87;536:5807:84;;-1:-1:-1;;;5292:12:83;;536:5807:84;;5292:12:83;5246:23;;;;;536:5807:84;5246:23:83;536:5807:84;5246:23:83;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;536:5807:84;;;;;;-1:-1:-1;;536:5807:84;;;;;;;;-1:-1:-1;;;;;536:5807:84;;;;;;;;;;;;;;-1:-1:-1;;536:5807:84;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;-1:-1:-1;;536:5807:84;;;;;;;1150:7:83;536:5807:84;;;;;;;;;-1:-1:-1;;536:5807:84;;;;;;;2700:1:83;536:5807:84;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;1742:195;;1870:60;1742:195;;-1:-1:-1;536:5807:84;1870:13;536:5807;;;-1:-1:-1;536:5807:84;1870:60;:::i;2207:277::-;-1:-1:-1;536:5807:84;;;2399:21;536:5807;;;;;;;;-1:-1:-1;;;;;536:5807:84;;;;;;;;;2399:78;;2207:277;;2399:78;:::i;536:5807::-;;;;;;;;;;;;;;;;;-1:-1:-1;536:5807:84;;;;;;;;-1:-1:-1;;536:5807:84;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;536:5807:84;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;536:5807:84;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;-1:-1:-1;;;;;536:5807:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2764:920:83:-;;2978:48;2764:920;;;;2978:48;;;;:::i;:::-;3036:36;;;536:5807:84;;:::i;:::-;;;;3086:20:83;3082:107;;2764:920;3216:11;;;;:193;;;;;2764:920;3216:394;;;;2764:920;3199:455;;;;;;2764:920;:::o;3199:455::-;3635:8;-1:-1:-1;3635:8:83;:::o;3216:394::-;3553:39;;;;;3430:180;3553:39;;;536:5807:84;;;;;;;;;;3430:180:83;;467:2:95;536:5807:84;3430:180:83;;;;;:::i;:::-;;536:5807:84;3444:31:83;-1:-1:-1;;;;;536:5807:84;3430:180:83;;;;;;;-1:-1:-1;3430:180:83;;;3216:394;3429:181;;3216:394;;;;;;3430:180;;;;3553:39;3430:180;3553:39;3430:180;;;;;;;:::i;:::-;;;;3216:193;-1:-1:-1;536:5807:84;;;-1:-1:-1;;;;;;536:5807:84;3248:161:83;3354:37;;;536:5807:84;3248:161:83;536:5807:84;;;;;;;;;;3248:161:83;;;;;;;:::i;:::-;;536:5807:84;3262:29:83;-1:-1:-1;;;;;536:5807:84;3248:161:83;;;;;;;-1:-1:-1;3248:161:83;;;3216:193;3247:162;;3216:193;;;3248:161;;;;;;;;;;;;;;:::i;:::-;;;;3082:107;3139:39;;;;;;;;;;;;;:::i;:::-;3082:107;;;;;536:5807:84;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;9999:1:66;536:5807:84;;;;;;;:::o;:::-;;:::i;3740:389:83:-;3918:5;536:5807:84;;;-1:-1:-1;;;3853:71:83;;;-1:-1:-1;;;;;536:5807:84;;;3853:71:83;;;536:5807:84;;;;;;;;3740:389:83;;536:5807:84;3853:71:83;;536:5807:84;;3853:71:83;536:5807:84;;;3867:29:83;536:5807:84;;3853:71:83;;;;;;;3918:5;3853:71;;;3740:389;3852:72;;536:5807:84;;;3852:181:83;;3740:389;3835:242;;;;;;4094:28;;;:::i;3835:242::-;4058:8;;3918:5;4058:8;:::o;3852:181::-;536:5807:84;;3945:88:83;;;-1:-1:-1;;;;;536:5807:84;;3853:71:83;3945:88;;536:5807:84;467:2:95;536:5807:84;;;;;;;;-1:-1:-1;536:5807:84;;;;;;;;3959:31:83;536:5807:84;3945:88:83;;;;;;;3918:5;3945:88;;;3852:181;3944:89;;;3852:181;;;;;3945:88;;;;;;-1:-1:-1;3945:88:83;;;;;;:::i;:::-;;;;;3853:71;;;;;;;;;;;;;;:::i;:::-;;;;4148:103:19;966:10:24;-1:-1:-1;536:5807:84;;;;;;;;;952:44;;536:5807;;3901:31:19;536:5807:84;;4468:23:19;4464:108;;4148:103;:::o;:::-;966:10:24;-1:-1:-1;536:5807:84;;;;;;;;;795:35;;536:5807;;3901:31:19;536:5807:84;4148:103:19;-1:-1:-1;536:5807:84;;;-1:-1:-1;;;;;;;;;;;536:5807:84;;;;;;;;966:10:24;536:5807:84;;;;;;;;;3901:31:19;536:5807:84;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;536:5807:84;;-1:-1:-1;536:5807:84;;;-1:-1:-1;536:5807:84;:::o;:::-;;:::i;:::-;;;;;-1:-1:-1;;;536:5807:84;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;536:5807:84;;;;;;;;:::o;6246:584:93:-;;;;;6360:12;;;536:5807:84;;;6360:24:93;;6356:75;;6246:584;6474:30;;;;;:::i;:::-;536:5807:84;;;;;;6578:12:93;;;;:::i;:::-;6604:24;;;;6246:584;-1:-1:-1;6600:188:93;;;-1:-1:-1;;;;;536:5807:84;;;;;;;6644:21:93;;;:29;:21;;:::i;:29::-;6798:25;6246:584;:::o;6600:188::-;6753:24;;536:5807:84;;8310:38:66;;-1:-1:-1;;;;;536:5807:84;;;;;8310:38:66;:::i;:::-;6753:24:93;;;:::i;6604:::-;536:5807:84;;;;;;6614:14:93;;-1:-1:-1;6604:24:93;;;6356:75;-1:-1:-1;;;536:5807:84;;;;;;6360:12:93;536:5807:84;;;;;;;:::i;:::-;;;;;;;;;;;;;;6356:75:93;;;10580:184;536:5807:84;;10446:8:66;;;:63;-1:-1:-1;10446:63:66;-1:-1:-1;;;;;536:5807:84;;10726:7:93;536:5807:84;;10736:12:93;:17;:12;;:17;:::i;:::-;536:5807:84;;;;;;10580:184:93;:::o;10446:63:66:-;536:5807:84;;;;;;;;;;14439:109:66;-1:-1:-1;14439:109:66;;-1:-1:-1;14439:109:66;;;536:5807:84;;;10446:63:66;;3470:384:26;-1:-1:-1;;;;;;;;;;;1991:1:26;536:5807:84;;3670:20:26;3666:88;;1991:1;536:5807:84;;3470:384:26:o;3666:88::-;536:5807:84;;-1:-1:-1;;;3713:30:26;;;;;4758:308:84;;536:5807;-1:-1:-1;536:5807:84;4889:13;536:5807;;;-1:-1:-1;536:5807:84;11124:30:93;;;;:::i;:::-;11173;;;-1:-1:-1;11173:30:93;;;;11182:17;;-1:-1:-1;;;;;536:5807:84;;11182:12:93;;:17;:::i;:::-;536:5807:84;;;4889:13;536:5807;;11173:30:93;4947::84;;;11173::93;4943:117:84;;;;4758:308;;:::o;4943:117::-;4993:56;536:5807;-1:-1:-1;536:5807:84;4889:13;536:5807;;;-1:-1:-1;536:5807:84;819:34:68;837:15;819:34;:::i;4993:56:84:-;4758:308;;:::o;4947:30::-;4957:20;;-1:-1:-1;4947:30:84;;;;11173::93;;;-1:-1:-1;11173:30:93;;7270:387:19;-1:-1:-1;;;;;536:5807:84;;-1:-1:-1;536:5807:84;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2887:71:19;536:5807:84;;;;-1:-1:-1;536:5807:84;;;;;;;;;;;-1:-1:-1;;;;;536:5807:84;;;;;;;;;;-1:-1:-1;;536:5807:84;7509:4:19;536:5807:84;;;966:10:24;;-1:-1:-1;;;;;536:5807:84;-1:-1:-1;7532:40:19;-1:-1:-1;;7532:40:19;7509:4;7586:11;:::o;7270:387::-;-1:-1:-1;;;;;536:5807:84;;-1:-1:-1;536:5807:84;;;;;;;;;1356:26:83;;-1:-1:-1;;;;;;;;;;;2887:71:19;536:5807:84;;3901:31:19;536:5807:84;;;;-1:-1:-1;536:5807:84;;;;;;;;;;;-1:-1:-1;;;;;536:5807:84;;;;;;;;;;-1:-1:-1;;536:5807:84;7509:4:19;536:5807:84;;;966:10:24;;-1:-1:-1;;;;;536:5807:84;;7532:40:19;-1:-1:-1;;7532:40:19;7509:4;7586:11;:::o;7432:219::-;7628:12;;;-1:-1:-1;7628:12:19;:::o;7270:387::-;-1:-1:-1;;;;;536:5807:84;;-1:-1:-1;536:5807:84;;;;;;;;;795:35;;-1:-1:-1;;;;;;;;;;;2887:71:19;536:5807:84;;3901:31:19;536:5807:84;7270:387:19;-1:-1:-1;;;;;536:5807:84;;-1:-1:-1;536:5807:84;;;;;;;;;952:44;;-1:-1:-1;;;;;;;;;;;2887:71:19;536:5807:84;;3901:31:19;536:5807:84;7270:387:19;-1:-1:-1;536:5807:84;;;-1:-1:-1;;;;;;;;;;;536:5807:84;;;;;;;;-1:-1:-1;;;;;536:5807:84;;;;;;;;;;;;3901:31:19;536:5807:84;7892:388:19;-1:-1:-1;536:5807:84;;;-1:-1:-1;;;;;;;;;;;536:5807:84;;;;;;;;-1:-1:-1;;;;;536:5807:84;;;;;;;;;;;;;;;;-1:-1:-1;536:5807:84;;;;;;;;;;;-1:-1:-1;;;;;536:5807:84;;;;;;;;;;-1:-1:-1;;536:5807:84;;;966:10:24;;-1:-1:-1;;;;;536:5807:84;;8155:40:19;-1:-1:-1;;8155:40:19;536:5807:84;8209:11:19;:::o;536:5807:84:-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;536:5807:84;;;;;;;;:::i;5907:716:83:-;6030:34;5907:716;6030:34;;;;:::i;:::-;536:5807:84;;-1:-1:-1;;;6080:41:83;;-1:-1:-1;;;;;536:5807:84;;;6080:41:83;;;536:5807:84;;;;;6080:41:83;536:5807:84;;;6090:13:83;536:5807:84;;6080:41:83;;;;;;;-1:-1:-1;6080:41:83;;;5907:716;6079:42;;6075:90;;6266:27;536:5807:84;2684:111:26;6210:14:83;536:5807:84;2684:111:26;;;:::i;:::-;536:5807:84;;;;;;-1:-1:-1;;;;;536:5807:84;;-1:-1:-1;536:5807:84;;;-1:-1:-1;536:5807:84;;6210:14:83;6266:27;:::i;:::-;6080:41;6311:15;;536:5807:84;;;;-1:-1:-1;;;;;;536:5807:84;-1:-1:-1;;;;;536:5807:84;;;;;;;;;;;-1:-1:-1;;;;;536:5807:84;;;;6337:143:83;;5907:716;-1:-1:-1;6493:28:83;536:5807:84;-1:-1:-1;;;;;536:5807:84;;;;;;;6489:128:83;;5907:716;:::o;6489:128::-;6551:55;;;:::i;:::-;;5907:716::o;6337:143::-;6404:65;;;:::i;:::-;;6337:143;;;6075:90;536:5807:84;;-1:-1:-1;;;6144:10:83;;6080:41;;6144:10;6080:41;;;;;;;;;;;;;;:::i;:::-;;;;536:5807:84;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::o;7558:604:93:-;;536:5807:84;;7686:17:93;7682:83;;536:5807:84;7789:27:93;536:5807:84;7789:27:93;536:5807:84;;7789:27:93;;;;;;:::i;:::-;7860:14;;;;;:::i;:::-;536:5807:84;;;;;;;;;;;;;;;;7888:22:93;;;7884:77;;7975:21;-1:-1:-1;7975:84:93;;;;7558:604;7971:139;;;;8127:28;;;;:::i;7971:139::-;8082:17;;7789:27;8082:17;536:5807:84;8075:24:93;:::o;7975:84::-;536:5807:84;;;8009:16:93;536:5807:84;;8009:16:93;:::i;:::-;536:5807:84;;;8001:24:93;:57;;;;;7975:84;;;;;;;8001:57;8029:29;8038:8;;;8029:18;8038:8;8029:23;8038:8;;:::i;:::-;8029:18;;:::i;:::-;536:5807:84;;;;;8029:23:93;536:5807:84;;;;8029:29:93;;8001:57;;;;7884:77;7933:17;;;;;7789:27;7933:17;536:5807:84;7926:24:93;:::o;7682:83::-;7726:28;;;;:::i;536:5807:84:-;;;;;;;;;;-1:-1:-1;;;;;536:5807:84;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;536:5807:84;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;3722:766::-;;;;;536:5807;;:::i;:::-;;;;3962:16;3958:92;;3722:766;536:5807;;4107:67;536:5807;;;4146:27;4107;:13;536:5807;-1:-1:-1;536:5807:84;;;;;;;;;4107:27;4146;;;;536:5807;;;;;;;;;;;4107:67;;;;;;;:::i;:::-;;;;;;;;;;4081:355;4107:67;-1:-1:-1;4107:67:84;;;3722:766;4260:28;4311:93;4260:28;4192:230;4260:28;;4222:67;536:5807;4260:28;;;4222:67;;;:::i;:::-;4367:36;;;;;4311:93;;:::i;:::-;4192:230;3463:5:63;;;;3066;;536:5807:84;3060:42:63;3371:111;;4081:355:84;4450:21;;3722:766;:::o;4107:67::-;4192:230;4107:67;;;;4311:93;4107:67;4146:27;4107:67;4146:27;4107:67;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;3958:92;4107:67;4008:31;;;;;;;;;;;;;;:::i;:::-;3958:92;;;;;4494:258;4635:5;536:5807;;;-1:-1:-1;;;4628:27:84;;536:5807;4494:258;4628:27;;536:5807;;4628:27;;536:5807;;-1:-1:-1;;;;;536:5807:84;4628:27;;;;;;;4635:5;4628:27;;;4494:258;2103:25;2662:43;:52;2103:25;:34;:25;;536:5807;;2103:13;536:5807;;;;;;;2103:34;536:5807;4635:5;536:5807;4628:27;;536:5807;;4635:5;536:5807;;;;;;;;;;;;;;;;;2662:52;3463:5:63;;;;;3066;;536:5807:84;3060:42:63;3463:5;;;;;3066;;536:5807:84;3060:42:63;4494:258:84;:::o;4628:27::-;2662:52;4628:27;;;;2662:43;4628:27;;;;;;;;;;;:::i;:::-;;;;;;14296:213:64;536:5807:84;14374:24:64;;;;14370:103;;536:5807:84;14296:213:64;:::o;14370:103::-;536:5807:84;;;;14421:41:64;;;;;;14452:2;14421:41;;;536:5807:84;;;;;14421:41:64;10695:389:66;536:5807:84;;10871:8:66;;;10895:20;;10833:17;10895:20;10833:17;10895:20;10833:17;10895:20;:::o;10867:211::-;536:5807:84;;;;;;;;;;10833:17:66;14439:109;;10833:17;14439:109;;;536:5807:84;11014:1:66;536:5807:84;;;;;;;11030:37:66;:::o;6893:76:22:-;;;:::i;:::-;;;:::i;:::-;1949:1:26;-1:-1:-1;;;;;;;;;;;536:5807:84;6893:76:22:o;536:5807:84:-;;;;;;;:::i;:::-;-1:-1:-1;536:5807:84;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;536:5807:84;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;536:5807:84;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;5072:1269::-;5220:30;5072:1269;536:5807;;:::i;:::-;;5220:30;536:5807;;;5220:30;;;;;;:::i;:::-;5278:17;;536:5807;5278:17;;536:5807;-1:-1:-1;;;;;536:5807:84;5278:54;;:178;;5072:1269;5261:258;;5534:9;5220:30;5549:33;;;5278:17;5591:3;5549:33;;536:5807;;5545:44;;;;;5614:36;;;:50;:36;;:::i;:::-;536:5807;-1:-1:-1;;;;;536:5807:84;;;5614:50;;5610:119;;5747:73;5748:72;5783:36;;:33;;;:36;:::i;:::-;5748:72;:::i;:::-;5747:73;;536:5807;5747:73;5743:140;;536:5807;;5534:9;;5743:140;536:5807;;-1:-1:-1;;;5847:21:84;;;;;5610:119;536:5807;;-1:-1:-1;;;5691:23:84;;;;;5545:44;-1:-1:-1;5923:41:84;;-1:-1:-1;;5923:41:84;;;;5278:17;5973:3;5923:41;;536:5807;;5919:52;;;;;5996:44;;;:58;:44;;:::i;:58::-;;5992:127;;6137:90;6138:89;6182:44;;:41;;;:44;:::i;:::-;6138:89;:::i;6137:90::-;6133:157;;536:5807;;5908:9;;6133:157;536:5807;;-1:-1:-1;;;6254:21:84;;;;;5992:127;536:5807;;-1:-1:-1;;;6081:23:84;;;;;5919:52;;;;;;6317:17;5072:1269;:::o;5261:258::-;536:5807;;-1:-1:-1;;;5488:20:84;;;;;5278:178;5353:33;5220:30;5353:33;;;536:5807;5353:45;:102;5278:178;5353:102;5402:41;;;;;536:5807;5402:53;5278:178;;6999:207:93;;536:5807:84;;9737:15:66;-1:-1:-1;9762:18:66;9795:7;9801:1;9795:7;;9791:234;;6999:207:93;10049:53:66;;;;;:::i;:::-;10120:8;;;:63;-1:-1:-1;10120:63:66;;-1:-1:-1;;;;;536:5807:84;;7168:7:93;536:5807:84;;;7178:12:93;;:17;:12;;:17;:::i;10120:63:66:-;10135:41;10168:7;10135:48;10168:7;;:::i;:::-;10135:41;14439:109;;;;;;14289:265;;10135:41;536:5807:84;;;;;10135:48:66;10120:63;;;9791:234;9838:14;;;;;:::i;:::-;536:5807:84;;;;;;;10049:53:66;14439:109;;-1:-1:-1;14439:109:66;536:5807:84;14439:109:66;;;-1:-1:-1;14439:109:66;;536:5807:84;;;;;9870:48:66;9866:149;536:5807:84;;;9938:10:66;9866:149;9791:234;;9866:149;9993:7;;;;;;:::i;:::-;9866:149;9791:234;;536:5807:84;;;;;;;:::i;:::-;-1:-1:-1;536:5807:84;;;;;;;:::o;11486:272:93:-;;536:5807:84;11718:12:93;11452:22:66;11718:31:93;11486:272;536:5807:84;;:::i;:::-;;;;:::i;:::-;;11452:22:66;;:::i;:::-;536:5807:84;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;11718:12:93;:31;:::i;:::-;536:5807:84;;;;;;;;;:::i;:::-;;;;;;;11672:79:93;;536:5807:84;11486:272:93;:::o;536:5807:84:-;;;-1:-1:-1;;;536:5807:84;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;536:5807:84;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;11657:922:66;536:5807:84;;11657:922:66;;;11864:7;;;;11936;11916:28;11936:7;;:::i;:::-;11916:28;14439:109;;;;;;14289:265;;11916:28;536:5807:84;;;;;;;;;;;;12103:13:66;;;12099:89;;12251:14;;;;;12285:19;;;;536:5807:84;;;;;;;;;;;;;;;;;12285:19:66;536:5807:84;;12423:25:66;;:::o;12247:163::-;536:5807:84;;;12343:52:66;536:5807:84;12353:41:66;536:5807:84;;:::i;:::-;;;;;;;;12353:41:66;-1:-1:-1;;;;;536:5807:84;;12353:41:66;;;536:5807:84;12343:52:66;:::i;:::-;12247:163;;12099:89;536:5807:84;;-1:-1:-1;;;12143:30:66;;;;;11860:713;536:5807:84;;12479:52:66;536:5807:84;12489:41:66;536:5807:84;;:::i;12489:41:66:-;-1:-1:-1;;;;;536:5807:84;;12489:41:66;;;536:5807:84;12343:52:66;:::i;12479:::-;11870:1;12545:17;;:::o;7084:141:22:-;536:5807:84;-1:-1:-1;;;;;;;;;;;536:5807:84;;;;7150:18:22;7146:73;;7084:141::o;7146:73::-;536:5807:84;;-1:-1:-1;;;7191:17:22;;;;;18080:5181:63;18246:1;18241:6;;;18237:53;;18246:1;19217:14;-1:-1:-1;;;19278:16:63;;;19274:92;;18080:5181;22827:18;22717;22607;22498;22387;22278;23216:28;19383:15;19898:6;19383:15;-1:-1:-1;;;23237:6:63;19383:15;;;19379:90;;18080:5181;19493:7;19486:15;;;19482:90;;18080:5181;19596:7;19589:15;;;19585:89;;18080:5181;19698:6;19691:14;;;19687:87;;18080:5181;19798:6;19791:14;;;19787:87;;18080:5181;19891:14;;19887:61;;18080:5181;20374:1;536:5807:84;18246:1:63;536:5807:84;22284:6:63;;;;:::i;:::-;536:5807:84;;;;;22278:18:63;22393:6;;;;:::i;22387:18::-;22504:6;;;;:::i;22498:18::-;22613:6;;;;:::i;22607:18::-;22723:6;;;;:::i;22717:18::-;22833:6;;;;:::i;22827:18::-;23237:6;;;:::i;:::-;23232:11;;;536:5807:84;23216:28:63;536:5807:84;;18080:5181:63;:::o;19887:61::-;18246:1;536:5807:84;19887:61:63;;19787:87;536:5807:84;;;;;19787:87:63;;;19687;536:5807:84;;;;;19687:87:63;;;19585:89;536:5807:84;;;;;19585:89:63;;;19482:90;536:5807:84;;;;;19482:90:63;;;19379;536:5807:84;;;;;19379:90:63;;;19274:92;-1:-1:-1;;;;536:5807:84;-1:-1:-1;536:5807:84;;;;19274:92:63;;12929:433:66;;;13112:10;;;;;;13344:11;;;12929:433;:::o;13105:230::-;3721:5:63;;;;;;3731;;;;536:5807:84;;;;;;;;;14439:109:66;-1:-1:-1;14439:109:66;536:5807:84;14439:109:66;;;-1:-1:-1;14439:109:66;;536:5807:84;;;;;-1:-1:-1;13189:136:66;536:5807:84;;;13248:10:66;13189:136;;13105:230;;;;13189:136;13303:7;;;;;;:::i;:::-;13189:136;;","linkReferences":{},"immutableReferences":{"56598":[{"start":1834,"length":32}],"56601":[{"start":3768,"length":32}],"57552":[{"start":1467,"length":32},{"start":3825,"length":32}],"57555":[{"start":1122,"length":32},{"start":7577,"length":32}],"57558":[{"start":1269,"length":32},{"start":5312,"length":32},{"start":5636,"length":32}],"57561":[{"start":1337,"length":32},{"start":5159,"length":32},{"start":5762,"length":32}]}},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","FACTORY()":"2dd31000","HOOK_GAS_LIMIT()":"ff54740f","HOOK_RESERVE()":"557cab44","HOOK_SET_ROLE()":"6679191e","NETWORK_LIMIT_SET_ROLE()":"7d24bb27","NETWORK_REGISTRY()":"c0cd7c3e","OPERATOR_NETWORK_LIMIT_SET_ROLE()":"518504ba","OPERATOR_NETWORK_OPT_IN_SERVICE()":"1a80e500","OPERATOR_VAULT_OPT_IN_SERVICE()":"128e5d82","TYPE()":"bb24fe8a","VAULT_FACTORY()":"103f2907","VERSION()":"ffa1ad74","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","hook()":"7f5a7c7b","initialize(bytes)":"439fab91","maxNetworkLimit(bytes32)":"d15b740e","networkLimit(bytes32)":"3eb22c0f","networkLimitAt(bytes32,uint48,bytes)":"5d32a1c9","onSlash(bytes32,address,uint256,uint48,bytes)":"e49561ee","operatorNetworkLimit(bytes32,address)":"11422095","operatorNetworkLimitAt(bytes32,address,uint48,bytes)":"94d2558a","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","setHook(address)":"3dfd3873","setMaxNetworkLimit(uint96,uint256)":"23f752d5","setNetworkLimit(bytes32,uint256)":"02145348","setOperatorNetworkLimit(bytes32,address,uint256)":"020cf0c2","stake(bytes32,address)":"fd4d447c","stakeAt(bytes32,address,uint48,bytes)":"e02f6937","staticDelegateCall(address,bytes)":"9f86fd85","supportsInterface(bytes4)":"01ffc9a7","vault()":"fbfa77cf"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"networkRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"vaultFactory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operatorVaultOptInService\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operatorNetworkOptInService\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegatorFactory\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"entityType\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadySet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CheckpointUnorderedInsertion\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DuplicateRoleHolder\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedsMaxNetworkLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientHookGas\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingRoleHolders\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotNetwork\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotSlasher\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressRoleHolder\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"}],\"name\":\"OnSlash\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"hook\",\"type\":\"address\"}],\"name\":\"SetHook\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"SetMaxNetworkLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"SetNetworkLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"SetOperatorNetworkLimit\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HOOK_GAS_LIMIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HOOK_RESERVE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HOOK_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NETWORK_LIMIT_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NETWORK_REGISTRY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_NETWORK_LIMIT_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_NETWORK_OPT_IN_SERVICE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_VAULT_OPT_IN_SERVICE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TYPE\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VAULT_FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VERSION\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hook\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"}],\"name\":\"maxNetworkLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"}],\"name\":\"networkLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"networkLimitAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"operatorNetworkLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"operatorNetworkLimitAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"hook_\",\"type\":\"address\"}],\"name\":\"setHook\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint96\",\"name\":\"identifier\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"setMaxNetworkLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"setNetworkLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"setOperatorNetworkLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"stake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hints\",\"type\":\"bytes\"}],\"name\":\"stakeAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"staticDelegateCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"CheckpointUnorderedInsertion()\":[{\"details\":\"A value was attempted to be inserted on a past checkpoint.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"OnSlash(bytes32,address,uint256,uint48)\":{\"params\":{\"amount\":\"amount of the collateral to be slashed\",\"captureTimestamp\":\"time point when the stake was captured\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"SetHook(address)\":{\"params\":{\"hook\":\"address of the hook\"}},\"SetMaxNetworkLimit(bytes32,uint256)\":{\"params\":{\"amount\":\"new maximum subnetwork's limit (how much stake the subnetwork is ready to get)\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"SetNetworkLimit(bytes32,uint256)\":{\"params\":{\"amount\":\"new subnetwork's limit (how much stake the vault curator is ready to give to the subnetwork)\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"SetOperatorNetworkLimit(bytes32,address,uint256)\":{\"params\":{\"amount\":\"new operator's limit for the subnetwork (how much stake the vault curator is ready to give to the operator for the subnetwork)\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}}},\"kind\":\"dev\",\"methods\":{\"VERSION()\":{\"details\":\"Must return 1 for this one.\",\"returns\":{\"_0\":\"version of the delegator\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize(bytes)\":{\"params\":{\"data\":\"some data to use\"}},\"networkLimit(bytes32)\":{\"params\":{\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"_0\":\"limit of the subnetwork\"}},\"networkLimitAt(bytes32,uint48,bytes)\":{\"params\":{\"hint\":\"hint for checkpoint index\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\",\"timestamp\":\"time point to get the subnetwork limit at\"},\"returns\":{\"_0\":\"limit of the subnetwork at the given timestamp\"}},\"onSlash(bytes32,address,uint256,uint48,bytes)\":{\"details\":\"Only the vault's slasher can call this function.\",\"params\":{\"amount\":\"amount of the collateral slashed\",\"captureTimestamp\":\"time point when the stake was captured\",\"data\":\"some additional data\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"operatorNetworkLimit(bytes32,address)\":{\"params\":{\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"_0\":\"limit of the operator for the subnetwork\"}},\"operatorNetworkLimitAt(bytes32,address,uint48,bytes)\":{\"params\":{\"hint\":\"hint for checkpoint index\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\",\"timestamp\":\"time point to get the operator's limit for the subnetwork at\"},\"returns\":{\"_0\":\"limit of the operator for the subnetwork at the given timestamp\"}},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"setHook(address)\":{\"details\":\"Only a HOOK_SET_ROLE holder can call this function. The hook can have arbitrary logic under certain functions, however, it doesn't affect the stake guarantees.\",\"params\":{\"hook\":\"address of the hook\"}},\"setMaxNetworkLimit(uint96,uint256)\":{\"details\":\"Only a network can call this function.\",\"params\":{\"amount\":\"new maximum subnetwork's limit\"}},\"setNetworkLimit(bytes32,uint256)\":{\"details\":\"Only a NETWORK_LIMIT_SET_ROLE holder can call this function.\",\"params\":{\"amount\":\"new limit of the subnetwork\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"setOperatorNetworkLimit(bytes32,address,uint256)\":{\"details\":\"Only an OPERATOR_NETWORK_LIMIT_SET_ROLE holder can call this function.\",\"params\":{\"amount\":\"new limit of the operator for the subnetwork\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"stake(bytes32,address)\":{\"details\":\"Warning: this function is not safe to use for stake capturing, as it can change by the end of the block.\",\"params\":{\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"_0\":\"slashable stake until the end of the next epoch\"}},\"stakeAt(bytes32,address,uint48,bytes)\":{\"details\":\"Warning: it is not safe to use timestamp >= current one for the stake capturing, as it can change later.\",\"params\":{\"hints\":\"hints for the checkpoints' indexes\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\",\"timestamp\":\"time point to capture the stake at\"},\"returns\":{\"_0\":\"slashable stake at the given timestamp until the end of the consequent epoch\"}},\"staticDelegateCall(address,bytes)\":{\"details\":\"It allows to use this contract's storage on-chain.\",\"params\":{\"data\":\"data to make a delegatecall with\",\"target\":\"address of the contract to make a delegatecall to\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"stateVariables\":{\"NETWORK_LIMIT_SET_ROLE\":{\"return\":\"identifier of the subnetwork limit setter role\",\"returns\":{\"_0\":\"identifier of the subnetwork limit setter role\"}},\"OPERATOR_NETWORK_LIMIT_SET_ROLE\":{\"return\":\"identifier of the operator-subnetwork limit setter role\",\"returns\":{\"_0\":\"identifier of the operator-subnetwork limit setter role\"}}},\"version\":1},\"userdoc\":{\"events\":{\"OnSlash(bytes32,address,uint256,uint48)\":{\"notice\":\"Emitted when a slash happens.\"},\"SetHook(address)\":{\"notice\":\"Emitted when a hook is set.\"},\"SetMaxNetworkLimit(bytes32,uint256)\":{\"notice\":\"Emitted when a subnetwork's maximum limit is set.\"},\"SetNetworkLimit(bytes32,uint256)\":{\"notice\":\"Emitted when a subnetwork's limit is set.\"},\"SetOperatorNetworkLimit(bytes32,address,uint256)\":{\"notice\":\"Emitted when an operator's limit for a subnetwork is set.\"}},\"kind\":\"user\",\"methods\":{\"FACTORY()\":{\"notice\":\"Get the factory's address.\"},\"HOOK_GAS_LIMIT()\":{\"notice\":\"Get a gas limit for the hook.\"},\"HOOK_RESERVE()\":{\"notice\":\"Get a reserve gas between the gas limit check and the hook's execution.\"},\"HOOK_SET_ROLE()\":{\"notice\":\"Get a hook setter's role.\"},\"NETWORK_LIMIT_SET_ROLE()\":{\"notice\":\"Get a subnetwork limit setter's role.\"},\"NETWORK_REGISTRY()\":{\"notice\":\"Get the network registry's address.\"},\"OPERATOR_NETWORK_LIMIT_SET_ROLE()\":{\"notice\":\"Get an operator-subnetwork limit setter's role.\"},\"OPERATOR_NETWORK_OPT_IN_SERVICE()\":{\"notice\":\"Get the operator-network opt-in service's address.\"},\"OPERATOR_VAULT_OPT_IN_SERVICE()\":{\"notice\":\"Get the operator-vault opt-in service's address.\"},\"TYPE()\":{\"notice\":\"Get the entity's type.\"},\"VAULT_FACTORY()\":{\"notice\":\"Get the vault factory's address.\"},\"VERSION()\":{\"notice\":\"Get a version of the delegator (different versions mean different interfaces).\"},\"hook()\":{\"notice\":\"Get the hook's address.\"},\"initialize(bytes)\":{\"notice\":\"Initialize this entity contract by using a given data.\"},\"maxNetworkLimit(bytes32)\":{\"notice\":\"Get a particular subnetwork's maximum limit (meaning the subnetwork is not ready to get more as a stake).\"},\"networkLimit(bytes32)\":{\"notice\":\"Get a subnetwork's limit (how much stake the vault curator is ready to give to the subnetwork).\"},\"networkLimitAt(bytes32,uint48,bytes)\":{\"notice\":\"Get a subnetwork's limit at a given timestamp using a hint (how much stake the vault curator is ready to give to the subnetwork).\"},\"onSlash(bytes32,address,uint256,uint48,bytes)\":{\"notice\":\"Called when a slash happens.\"},\"operatorNetworkLimit(bytes32,address)\":{\"notice\":\"Get an operator's limit for a subnetwork. (how much stake the vault curator is ready to give to the operator for the subnetwork)\"},\"operatorNetworkLimitAt(bytes32,address,uint48,bytes)\":{\"notice\":\"Get an operator's limit for a subnetwork at a given timestamp using a hint (how much stake the vault curator is ready to give to the operator for the subnetwork).\"},\"setHook(address)\":{\"notice\":\"Set a new hook.\"},\"setMaxNetworkLimit(uint96,uint256)\":{\"notice\":\"Set a maximum limit for a subnetwork (how much stake the subnetwork is ready to get). identifier identifier of the subnetwork\"},\"setNetworkLimit(bytes32,uint256)\":{\"notice\":\"Set a subnetwork's limit (how much stake the vault curator is ready to give to the subnetwork).\"},\"setOperatorNetworkLimit(bytes32,address,uint256)\":{\"notice\":\"Set an operator's limit for a subnetwork. (how much stake the vault curator is ready to give to the operator for the subnetwork)\"},\"stake(bytes32,address)\":{\"notice\":\"Get a stake that a given subnetwork will be able to slash for a certain operator until the end of the next epoch (if no cross-slashing and no slashings by the subnetwork).\"},\"stakeAt(bytes32,address,uint48,bytes)\":{\"notice\":\"Get a stake that a given subnetwork could be able to slash for a certain operator at a given timestamp until the end of the consequent epoch using hints (if no cross-slashing and no slashings by the subnetwork).\"},\"staticDelegateCall(address,bytes)\":{\"notice\":\"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data).\"},\"vault()\":{\"notice\":\"Get the vault's address.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/delegator/FullRestakeDelegator.sol\":\"FullRestakeDelegator\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf\",\"dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89\",\"dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1\",\"dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44\",\"dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6\",\"dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza\"]},\"src/contracts/common/Entity.sol\":{\"keccak256\":\"0x3d61a932995b8443381f3950542d388223a2c26dd5d29a3274dea3baa7388bd7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7cdf5f03ca72fd263fd32ff59c8d88ddca911ae83896a287d10772c1bbe9b138\",\"dweb:/ipfs/QmbP84r5BWT1Rn9AYTntWSf3xUMTTCohTZJFhbBhDXFoHa\"]},\"src/contracts/common/StaticDelegateCallable.sol\":{\"keccak256\":\"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764\",\"dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD\"]},\"src/contracts/delegator/BaseDelegator.sol\":{\"keccak256\":\"0x7c54d491fdd4415b764a9c8defa068e56d4c0c8c9419be0053a1d377669290e8\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://9238bfbad0f6eeb0dc7727724de14380f1980b395902269703d5e2ef07e52e10\",\"dweb:/ipfs/QmPJn1V4HNXcEghYvogGuSTF24dSQUPosR5qtsXcmNqRm3\"]},\"src/contracts/delegator/FullRestakeDelegator.sol\":{\"keccak256\":\"0x0a81c4f8e72914563a9cb771e93acf889c71ea36b7bec040e4eb562b199d5af1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6fc66b6ba02da77046a0bbbd1dd407a62c08f52e04486c9cbd2cb1cca3da555f\",\"dweb:/ipfs/QmZQivK1ZnMxfRQQ5aLpV9co5u55wQVNev5Rg1hzAqxhkE\"]},\"src/contracts/libraries/Checkpoints.sol\":{\"keccak256\":\"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609\",\"dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE\"]},\"src/contracts/libraries/Subnetwork.sol\":{\"keccak256\":\"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56\",\"dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32\"]},\"src/interfaces/common/IEntity.sol\":{\"keccak256\":\"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b\",\"dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv\"]},\"src/interfaces/common/IMigratableEntity.sol\":{\"keccak256\":\"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c\",\"dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds\"]},\"src/interfaces/common/IRegistry.sol\":{\"keccak256\":\"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014\",\"dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK\"]},\"src/interfaces/common/IStaticDelegateCallable.sol\":{\"keccak256\":\"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516\",\"dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi\"]},\"src/interfaces/delegator/IBaseDelegator.sol\":{\"keccak256\":\"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2\",\"dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8\"]},\"src/interfaces/delegator/IDelegatorHook.sol\":{\"keccak256\":\"0xc51aa8d7d1f6c8043ee819b7aeb86da0e993912e1442098df897e299f01f9f46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://adddf5cb2ba282aeb576b26efb28640f865a1721cc9b6eee8b3ee0457a2c9780\",\"dweb:/ipfs/QmNYgAmnLRwWZbhTuQhZs9rx4zcme1df5mEepkrniorSoW\"]},\"src/interfaces/delegator/IFullRestakeDelegator.sol\":{\"keccak256\":\"0xa3c8cb2e45d4d8ce90e95263bea40c01dc400f05ad65bc29597d878606be5e7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://782cf5e201aa4cca037ebafd3807a68ff1cc721d5b8416a35244db0d0607369e\",\"dweb:/ipfs/QmQkJks6x7CKndeTPa9LxgTNygD5uEi7obhADhpq1Lsr9A\"]},\"src/interfaces/service/IOptInService.sol\":{\"keccak256\":\"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337\",\"dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24\"]},\"src/interfaces/vault/IVault.sol\":{\"keccak256\":\"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9\",\"dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R\"]},\"src/interfaces/vault/IVaultStorage.sol\":{\"keccak256\":\"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e\",\"dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"networkRegistry","type":"address"},{"internalType":"address","name":"vaultFactory","type":"address"},{"internalType":"address","name":"operatorVaultOptInService","type":"address"},{"internalType":"address","name":"operatorNetworkOptInService","type":"address"},{"internalType":"address","name":"delegatorFactory","type":"address"},{"internalType":"uint64","name":"entityType","type":"uint64"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"inputs":[],"type":"error","name":"AlreadySet"},{"inputs":[],"type":"error","name":"CheckpointUnorderedInsertion"},{"inputs":[],"type":"error","name":"DuplicateRoleHolder"},{"inputs":[],"type":"error","name":"ExceedsMaxNetworkLimit"},{"inputs":[],"type":"error","name":"InsufficientHookGas"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"MissingRoleHolders"},{"inputs":[],"type":"error","name":"NotInitialized"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"NotNetwork"},{"inputs":[],"type":"error","name":"NotSlasher"},{"inputs":[],"type":"error","name":"NotVault"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintDowncast"},{"inputs":[],"type":"error","name":"ZeroAddressRoleHolder"},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint48","name":"captureTimestamp","type":"uint48","indexed":false}],"type":"event","name":"OnSlash","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[{"internalType":"address","name":"hook","type":"address","indexed":true}],"type":"event","name":"SetHook","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"SetMaxNetworkLimit","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"SetNetworkLimit","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"SetOperatorNetworkLimit","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HOOK_GAS_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HOOK_RESERVE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HOOK_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"NETWORK_LIMIT_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"NETWORK_REGISTRY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_NETWORK_LIMIT_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_NETWORK_OPT_IN_SERVICE","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_VAULT_OPT_IN_SERVICE","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"TYPE","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VAULT_FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"VERSION","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"hook","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"}],"stateMutability":"view","type":"function","name":"maxNetworkLimit","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"}],"stateMutability":"view","type":"function","name":"networkLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"networkLimitAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint48","name":"captureTimestamp","type":"uint48"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"onSlash"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"operatorNetworkLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"operatorNetworkLimitAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"address","name":"hook_","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setHook"},{"inputs":[{"internalType":"uint96","name":"identifier","type":"uint96"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setMaxNetworkLimit"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setNetworkLimit"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setOperatorNetworkLimit"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"stake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hints","type":"bytes"}],"stateMutability":"view","type":"function","name":"stakeAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"staticDelegateCall"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"vault","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"VERSION()":{"details":"Must return 1 for this one.","returns":{"_0":"version of the delegator"}},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"initialize(bytes)":{"params":{"data":"some data to use"}},"networkLimit(bytes32)":{"params":{"subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"_0":"limit of the subnetwork"}},"networkLimitAt(bytes32,uint48,bytes)":{"params":{"hint":"hint for checkpoint index","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)","timestamp":"time point to get the subnetwork limit at"},"returns":{"_0":"limit of the subnetwork at the given timestamp"}},"onSlash(bytes32,address,uint256,uint48,bytes)":{"details":"Only the vault's slasher can call this function.","params":{"amount":"amount of the collateral slashed","captureTimestamp":"time point when the stake was captured","data":"some additional data","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"}},"operatorNetworkLimit(bytes32,address)":{"params":{"operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"_0":"limit of the operator for the subnetwork"}},"operatorNetworkLimitAt(bytes32,address,uint48,bytes)":{"params":{"hint":"hint for checkpoint index","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)","timestamp":"time point to get the operator's limit for the subnetwork at"},"returns":{"_0":"limit of the operator for the subnetwork at the given timestamp"}},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"setHook(address)":{"details":"Only a HOOK_SET_ROLE holder can call this function. The hook can have arbitrary logic under certain functions, however, it doesn't affect the stake guarantees.","params":{"hook":"address of the hook"}},"setMaxNetworkLimit(uint96,uint256)":{"details":"Only a network can call this function.","params":{"amount":"new maximum subnetwork's limit"}},"setNetworkLimit(bytes32,uint256)":{"details":"Only a NETWORK_LIMIT_SET_ROLE holder can call this function.","params":{"amount":"new limit of the subnetwork","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"}},"setOperatorNetworkLimit(bytes32,address,uint256)":{"details":"Only an OPERATOR_NETWORK_LIMIT_SET_ROLE holder can call this function.","params":{"amount":"new limit of the operator for the subnetwork","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"}},"stake(bytes32,address)":{"details":"Warning: this function is not safe to use for stake capturing, as it can change by the end of the block.","params":{"operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"_0":"slashable stake until the end of the next epoch"}},"stakeAt(bytes32,address,uint48,bytes)":{"details":"Warning: it is not safe to use timestamp >= current one for the stake capturing, as it can change later.","params":{"hints":"hints for the checkpoints' indexes","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)","timestamp":"time point to capture the stake at"},"returns":{"_0":"slashable stake at the given timestamp until the end of the consequent epoch"}},"staticDelegateCall(address,bytes)":{"details":"It allows to use this contract's storage on-chain.","params":{"data":"data to make a delegatecall with","target":"address of the contract to make a delegatecall to"}},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."}},"version":1},"userdoc":{"kind":"user","methods":{"FACTORY()":{"notice":"Get the factory's address."},"HOOK_GAS_LIMIT()":{"notice":"Get a gas limit for the hook."},"HOOK_RESERVE()":{"notice":"Get a reserve gas between the gas limit check and the hook's execution."},"HOOK_SET_ROLE()":{"notice":"Get a hook setter's role."},"NETWORK_LIMIT_SET_ROLE()":{"notice":"Get a subnetwork limit setter's role."},"NETWORK_REGISTRY()":{"notice":"Get the network registry's address."},"OPERATOR_NETWORK_LIMIT_SET_ROLE()":{"notice":"Get an operator-subnetwork limit setter's role."},"OPERATOR_NETWORK_OPT_IN_SERVICE()":{"notice":"Get the operator-network opt-in service's address."},"OPERATOR_VAULT_OPT_IN_SERVICE()":{"notice":"Get the operator-vault opt-in service's address."},"TYPE()":{"notice":"Get the entity's type."},"VAULT_FACTORY()":{"notice":"Get the vault factory's address."},"VERSION()":{"notice":"Get a version of the delegator (different versions mean different interfaces)."},"hook()":{"notice":"Get the hook's address."},"initialize(bytes)":{"notice":"Initialize this entity contract by using a given data."},"maxNetworkLimit(bytes32)":{"notice":"Get a particular subnetwork's maximum limit (meaning the subnetwork is not ready to get more as a stake)."},"networkLimit(bytes32)":{"notice":"Get a subnetwork's limit (how much stake the vault curator is ready to give to the subnetwork)."},"networkLimitAt(bytes32,uint48,bytes)":{"notice":"Get a subnetwork's limit at a given timestamp using a hint (how much stake the vault curator is ready to give to the subnetwork)."},"onSlash(bytes32,address,uint256,uint48,bytes)":{"notice":"Called when a slash happens."},"operatorNetworkLimit(bytes32,address)":{"notice":"Get an operator's limit for a subnetwork. (how much stake the vault curator is ready to give to the operator for the subnetwork)"},"operatorNetworkLimitAt(bytes32,address,uint48,bytes)":{"notice":"Get an operator's limit for a subnetwork at a given timestamp using a hint (how much stake the vault curator is ready to give to the operator for the subnetwork)."},"setHook(address)":{"notice":"Set a new hook."},"setMaxNetworkLimit(uint96,uint256)":{"notice":"Set a maximum limit for a subnetwork (how much stake the subnetwork is ready to get). identifier identifier of the subnetwork"},"setNetworkLimit(bytes32,uint256)":{"notice":"Set a subnetwork's limit (how much stake the vault curator is ready to give to the subnetwork)."},"setOperatorNetworkLimit(bytes32,address,uint256)":{"notice":"Set an operator's limit for a subnetwork. (how much stake the vault curator is ready to give to the operator for the subnetwork)"},"stake(bytes32,address)":{"notice":"Get a stake that a given subnetwork will be able to slash for a certain operator until the end of the next epoch (if no cross-slashing and no slashings by the subnetwork)."},"stakeAt(bytes32,address,uint48,bytes)":{"notice":"Get a stake that a given subnetwork could be able to slash for a certain operator at a given timestamp until the end of the consequent epoch using hints (if no cross-slashing and no slashings by the subnetwork)."},"staticDelegateCall(address,bytes)":{"notice":"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data)."},"vault()":{"notice":"Get the vault's address."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/delegator/FullRestakeDelegator.sol":"FullRestakeDelegator"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol":{"keccak256":"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866","urls":["bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf","dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab","urls":["bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89","dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606","urls":["bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1","dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol":{"keccak256":"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f","urls":["bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44","dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc","urls":["bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6","dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza"],"license":"MIT"},"src/contracts/common/Entity.sol":{"keccak256":"0x3d61a932995b8443381f3950542d388223a2c26dd5d29a3274dea3baa7388bd7","urls":["bzz-raw://7cdf5f03ca72fd263fd32ff59c8d88ddca911ae83896a287d10772c1bbe9b138","dweb:/ipfs/QmbP84r5BWT1Rn9AYTntWSf3xUMTTCohTZJFhbBhDXFoHa"],"license":"BUSL-1.1"},"src/contracts/common/StaticDelegateCallable.sol":{"keccak256":"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90","urls":["bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764","dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD"],"license":"BUSL-1.1"},"src/contracts/delegator/BaseDelegator.sol":{"keccak256":"0x7c54d491fdd4415b764a9c8defa068e56d4c0c8c9419be0053a1d377669290e8","urls":["bzz-raw://9238bfbad0f6eeb0dc7727724de14380f1980b395902269703d5e2ef07e52e10","dweb:/ipfs/QmPJn1V4HNXcEghYvogGuSTF24dSQUPosR5qtsXcmNqRm3"],"license":"BUSL-1.1"},"src/contracts/delegator/FullRestakeDelegator.sol":{"keccak256":"0x0a81c4f8e72914563a9cb771e93acf889c71ea36b7bec040e4eb562b199d5af1","urls":["bzz-raw://6fc66b6ba02da77046a0bbbd1dd407a62c08f52e04486c9cbd2cb1cca3da555f","dweb:/ipfs/QmZQivK1ZnMxfRQQ5aLpV9co5u55wQVNev5Rg1hzAqxhkE"],"license":"BUSL-1.1"},"src/contracts/libraries/Checkpoints.sol":{"keccak256":"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c","urls":["bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609","dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE"],"license":"MIT"},"src/contracts/libraries/Subnetwork.sol":{"keccak256":"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe","urls":["bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56","dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32"],"license":"MIT"},"src/interfaces/common/IEntity.sol":{"keccak256":"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21","urls":["bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b","dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv"],"license":"MIT"},"src/interfaces/common/IMigratableEntity.sol":{"keccak256":"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4","urls":["bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c","dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds"],"license":"MIT"},"src/interfaces/common/IRegistry.sol":{"keccak256":"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb","urls":["bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014","dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK"],"license":"MIT"},"src/interfaces/common/IStaticDelegateCallable.sol":{"keccak256":"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5","urls":["bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516","dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi"],"license":"MIT"},"src/interfaces/delegator/IBaseDelegator.sol":{"keccak256":"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee","urls":["bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2","dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8"],"license":"MIT"},"src/interfaces/delegator/IDelegatorHook.sol":{"keccak256":"0xc51aa8d7d1f6c8043ee819b7aeb86da0e993912e1442098df897e299f01f9f46","urls":["bzz-raw://adddf5cb2ba282aeb576b26efb28640f865a1721cc9b6eee8b3ee0457a2c9780","dweb:/ipfs/QmNYgAmnLRwWZbhTuQhZs9rx4zcme1df5mEepkrniorSoW"],"license":"MIT"},"src/interfaces/delegator/IFullRestakeDelegator.sol":{"keccak256":"0xa3c8cb2e45d4d8ce90e95263bea40c01dc400f05ad65bc29597d878606be5e7d","urls":["bzz-raw://782cf5e201aa4cca037ebafd3807a68ff1cc721d5b8416a35244db0d0607369e","dweb:/ipfs/QmQkJks6x7CKndeTPa9LxgTNygD5uEi7obhADhpq1Lsr9A"],"license":"MIT"},"src/interfaces/service/IOptInService.sol":{"keccak256":"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a","urls":["bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337","dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24"],"license":"MIT"},"src/interfaces/vault/IVault.sol":{"keccak256":"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235","urls":["bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9","dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R"],"license":"MIT"},"src/interfaces/vault/IVaultStorage.sol":{"keccak256":"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22","urls":["bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e","dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6"],"license":"MIT"}},"version":1},"id":84} \ No newline at end of file diff --git a/out/MetadataService.sol/MetadataService.json b/out/MetadataService.sol/MetadataService.json index 8cf03c99..8eba2999 100644 --- a/out/MetadataService.sol/MetadataService.json +++ b/out/MetadataService.sol/MetadataService.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"registry","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"REGISTRY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"metadataURL","inputs":[{"name":"entity","type":"address","internalType":"address"}],"outputs":[{"name":"value","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"setMetadataURL","inputs":[{"name":"metadataURL_","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"SetMetadataURL","inputs":[{"name":"entity","type":"address","indexed":true,"internalType":"address"},{"name":"metadataURL","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"error","name":"AlreadySet","inputs":[]},{"type":"error","name":"NotEntity","inputs":[]}],"bytecode":{"object":"0x60a034606c57601f61058b38819003918201601f19168301916001600160401b03831184841017607057808492602094604052833981010312606c57516001600160a01b0381168103606c576080526040516105069081610085823960805181818160a501526103910152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe608060409080825260049081361015610016575f80fd5b5f3560e01c90816306433b1b1461037f575080634edb8f391461031a5763747daec514610041575f80fd5b34610305576020806003193601126103055781359267ffffffffffffffff808511610305573660238601121561030557848401359081116103055760249485810190368784830101116103055783516302910f8b60e31b81523387820152858189817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610310575f916102d6575b50156102c657335f525f85526100f4845f2061042e565b95601f840191601f19918284169887516101108a8c01826103f8565b87815289810190888883375f8b8a8301015282519051908b82821494856102b5575b50505050506102a75750335f525f8752855f209261015084546103c0565b90601f821161026c575b50505f91601f86116001146101dc5750928492837ff8dac27f20d622a0759394313683066cb713a406633a3a7dde8799654015ea64999a5f9794899789936101cf575b5050508360011b9087198560031b1c19161790555b8184519780895288015283870137840101528133948101030190a2005b01013590505f808061019d565b859991991691835f52875f20925f5b8181106102535750927ff8dac27f20d622a0759394313683066cb713a406633a3a7dde8799654015ea64999a889693889693875f9a9710610238575b50505050600183811b0190556101b2565b891960f88860031b161c19920101351690555f808080610227565b91938960018192868f89010135815501950192016101eb565b845f52885f209060051c81019189881061029d575b601f0160051c01905b8181101561015a575f815560010161028a565b9091508190610281565b865163a741a04560e01b8152fd5b012091201490505f80808b81610132565b835163184849cf60e01b81528690fd5b90508581813d8311610309575b6102ed81836103f8565b8101031261030557518015158103610305575f6100dd565b5f80fd5b503d6102e3565b85513d5f823e3d90fd5b503461030557602036600319011261030557356001600160a01b0381169190829003610305576020915f525f8252610353815f2061042e565b815192839181835280519182918282860152018484015e5f828201840152601f01601f19168101030190f35b34610305575f366003190112610305577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b90600182811c921680156103ee575b60208310146103da57565b634e487b7160e01b5f52602260045260245ffd5b91607f16916103cf565b90601f8019910116810190811067ffffffffffffffff82111761041a57604052565b634e487b7160e01b5f52604160045260245ffd5b9060405191825f8254610440816103c0565b908184526020946001916001811690815f146104ae5750600114610470575b50505061046e925003836103f8565b565b5f90815285812095935091905b81831061049657505061046e93508201015f808061045f565b8554888401850152948501948794509183019161047d565b9250505061046e94925060ff191682840152151560051b8201015f808061045f56fea2646970667358221220b3f8fcdf85ffa9ec7d50bd86823cb074384a705df32dfa8a52117fc6e9ab1b4964736f6c63430008190033","sourceMap":"276:822:89:-:0;;;;;;;;;;;;;-1:-1:-1;;276:822:89;;;;-1:-1:-1;;;;;276:822:89;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;276:822:89;;;;;;621:19;;276:822;;;;;;;;621:19;276:822;;;;;;;;;;;;-1:-1:-1;276:822:89;;;;;;-1:-1:-1;276:822:89;;;;;-1:-1:-1;276:822:89","linkReferences":{}},"deployedBytecode":{"object":"0x608060409080825260049081361015610016575f80fd5b5f3560e01c90816306433b1b1461037f575080634edb8f391461031a5763747daec514610041575f80fd5b34610305576020806003193601126103055781359267ffffffffffffffff808511610305573660238601121561030557848401359081116103055760249485810190368784830101116103055783516302910f8b60e31b81523387820152858189817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610310575f916102d6575b50156102c657335f525f85526100f4845f2061042e565b95601f840191601f19918284169887516101108a8c01826103f8565b87815289810190888883375f8b8a8301015282519051908b82821494856102b5575b50505050506102a75750335f525f8752855f209261015084546103c0565b90601f821161026c575b50505f91601f86116001146101dc5750928492837ff8dac27f20d622a0759394313683066cb713a406633a3a7dde8799654015ea64999a5f9794899789936101cf575b5050508360011b9087198560031b1c19161790555b8184519780895288015283870137840101528133948101030190a2005b01013590505f808061019d565b859991991691835f52875f20925f5b8181106102535750927ff8dac27f20d622a0759394313683066cb713a406633a3a7dde8799654015ea64999a889693889693875f9a9710610238575b50505050600183811b0190556101b2565b891960f88860031b161c19920101351690555f808080610227565b91938960018192868f89010135815501950192016101eb565b845f52885f209060051c81019189881061029d575b601f0160051c01905b8181101561015a575f815560010161028a565b9091508190610281565b865163a741a04560e01b8152fd5b012091201490505f80808b81610132565b835163184849cf60e01b81528690fd5b90508581813d8311610309575b6102ed81836103f8565b8101031261030557518015158103610305575f6100dd565b5f80fd5b503d6102e3565b85513d5f823e3d90fd5b503461030557602036600319011261030557356001600160a01b0381169190829003610305576020915f525f8252610353815f2061042e565b815192839181835280519182918282860152018484015e5f828201840152601f01601f19168101030190f35b34610305575f366003190112610305577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b90600182811c921680156103ee575b60208310146103da57565b634e487b7160e01b5f52602260045260245ffd5b91607f16916103cf565b90601f8019910116810190811067ffffffffffffffff82111761041a57604052565b634e487b7160e01b5f52604160045260245ffd5b9060405191825f8254610440816103c0565b908184526020946001916001811690815f146104ae5750600114610470575b50505061046e925003836103f8565b565b5f90815285812095935091905b81831061049657505061046e93508201015f808061045f565b8554888401850152948501948794509183019161047d565b9250505061046e94925060ff191682840152151560051b8201015f808061045f56fea2646970667358221220b3f8fcdf85ffa9ec7d50bd86823cb074384a705df32dfa8a52117fc6e9ab1b4964736f6c63430008190033","sourceMap":"276:822:89:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;797:40:89;;826:10;797:40;;;276:822;;;;;807:8;-1:-1:-1;;;;;276:822:89;797:40;;;;;;;276:822;797:40;;;276:822;796:41;;792:90;;826:10;276:822;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3009:34:50;;;;;:80;;;;276:822:89;892:93;;;;;;;826:10;;276:822;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;1049:40;276:822;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;826:10;;276:822;;;1049:40;;;;276:822;;;;;;-1:-1:-1;276:822:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;1049:40;276:822;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;276:822:89;;;;892:93;276:822;;-1:-1:-1;;;962:12:89;;;3009:80:50;276:822:89;3047:19:50;3070;;3047:42;;-1:-1:-1;3009:80:50;;;;;;;792:90:89;276:822;;-1:-1:-1;;;860:11:89;;276:822;;860:11;797:40;;;;;;;;;;;;;;;;:::i;:::-;;;276:822;;;;;;;;;;;;797:40;;;276:822;;;;797:40;;;;;;276:822;;;;;;;;;;;;;;;;-1:-1:-1;;276:822:89;;;;;-1:-1:-1;;;;;276:822:89;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;276:822:89;;;;;;;;;;;;;-1:-1:-1;;276:822:89;;;;410:33;-1:-1:-1;;;;;276:822:89;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;276:822:89;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;-1:-1:-1;276:822:89;;;;;;;;-1:-1:-1;;276:822:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;276:822:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{},"immutableReferences":{"64970":[{"start":165,"length":32},{"start":913,"length":32}]}},"methodIdentifiers":{"REGISTRY()":"06433b1b","metadataURL(address)":"4edb8f39","setMetadataURL(string)":"747daec5"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registry\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AlreadySet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotEntity\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"entity\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataURL\",\"type\":\"string\"}],\"name\":\"SetMetadataURL\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"REGISTRY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"entity\",\"type\":\"address\"}],\"name\":\"metadataURL\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"metadataURL_\",\"type\":\"string\"}],\"name\":\"setMetadataURL\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"SetMetadataURL(address,string)\":{\"params\":{\"entity\":\"address of the entity\",\"metadataURL\":\"new metadata URL of the entity\"}}},\"kind\":\"dev\",\"methods\":{\"setMetadataURL(string)\":{\"params\":{\"metadataURL\":\"new metadata URL of the entity\"}}},\"stateVariables\":{\"REGISTRY\":{\"return\":\"address of the registry\",\"returns\":{\"_0\":\"address of the registry\"}},\"metadataURL\":{\"params\":{\"entity\":\"address of the entity\"},\"return\":\"value metadata URL of the entity\",\"returns\":{\"value\":\"metadata URL of the entity\"}}},\"version\":1},\"userdoc\":{\"events\":{\"SetMetadataURL(address,string)\":{\"notice\":\"Emitted when a metadata URL is set for an entity.\"}},\"kind\":\"user\",\"methods\":{\"REGISTRY()\":{\"notice\":\"Get the registry's address.\"},\"metadataURL(address)\":{\"notice\":\"Get a URL with an entity's metadata.\"},\"setMetadataURL(string)\":{\"notice\":\"Set a new metadata URL for a calling entity.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/service/MetadataService.sol\":\"MetadataService\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]},\"src/contracts/service/MetadataService.sol\":{\"keccak256\":\"0x0c6867f020aea3c5536de919032a286c701fce7ec2069935922c33595c3fbb7b\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://5f1e26b31957977e6e9ba3d81b8dcd478989ac3317f61e3c197e152db971ae39\",\"dweb:/ipfs/QmbN2rtWtzPsoBqjXR8B4RmcuDkh3kaZyjL4VMq6RibkvX\"]},\"src/interfaces/common/IRegistry.sol\":{\"keccak256\":\"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014\",\"dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK\"]},\"src/interfaces/service/IMetadataService.sol\":{\"keccak256\":\"0xadc4d573ffbacb9b81ae8bfbfe0bb709a90aa3c98e62a0106cb10abb2253e394\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2051cce94b6df7612b44061b3da656e3af473b3032384895ff6ec3a3dd86bd\",\"dweb:/ipfs/QmaJr5pU56eVfZNiL44dpXfb5Ze2HNiTXXMTSHsU4QBF3t\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"registry","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AlreadySet"},{"inputs":[],"type":"error","name":"NotEntity"},{"inputs":[{"internalType":"address","name":"entity","type":"address","indexed":true},{"internalType":"string","name":"metadataURL","type":"string","indexed":false}],"type":"event","name":"SetMetadataURL","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"REGISTRY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"entity","type":"address"}],"stateMutability":"view","type":"function","name":"metadataURL","outputs":[{"internalType":"string","name":"value","type":"string"}]},{"inputs":[{"internalType":"string","name":"metadataURL_","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"setMetadataURL"}],"devdoc":{"kind":"dev","methods":{"setMetadataURL(string)":{"params":{"metadataURL":"new metadata URL of the entity"}}},"version":1},"userdoc":{"kind":"user","methods":{"REGISTRY()":{"notice":"Get the registry's address."},"metadataURL(address)":{"notice":"Get a URL with an entity's metadata."},"setMetadataURL(string)":{"notice":"Set a new metadata URL for a calling entity."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/service/MetadataService.sol":"MetadataService"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792","urls":["bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453","dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72","urls":["bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc","dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT"],"license":"MIT"},"src/contracts/service/MetadataService.sol":{"keccak256":"0x0c6867f020aea3c5536de919032a286c701fce7ec2069935922c33595c3fbb7b","urls":["bzz-raw://5f1e26b31957977e6e9ba3d81b8dcd478989ac3317f61e3c197e152db971ae39","dweb:/ipfs/QmbN2rtWtzPsoBqjXR8B4RmcuDkh3kaZyjL4VMq6RibkvX"],"license":"BUSL-1.1"},"src/interfaces/common/IRegistry.sol":{"keccak256":"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb","urls":["bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014","dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK"],"license":"MIT"},"src/interfaces/service/IMetadataService.sol":{"keccak256":"0xadc4d573ffbacb9b81ae8bfbfe0bb709a90aa3c98e62a0106cb10abb2253e394","urls":["bzz-raw://bc2051cce94b6df7612b44061b3da656e3af473b3032384895ff6ec3a3dd86bd","dweb:/ipfs/QmaJr5pU56eVfZNiL44dpXfb5Ze2HNiTXXMTSHsU4QBF3t"],"license":"MIT"}},"version":1},"id":89} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[{"name":"registry","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"REGISTRY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"metadataURL","inputs":[{"name":"entity","type":"address","internalType":"address"}],"outputs":[{"name":"value","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"setMetadataURL","inputs":[{"name":"metadataURL_","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"SetMetadataURL","inputs":[{"name":"entity","type":"address","indexed":true,"internalType":"address"},{"name":"metadataURL","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"error","name":"AlreadySet","inputs":[]},{"type":"error","name":"NotEntity","inputs":[]}],"bytecode":{"object":"0x60a034606c57601f61058b38819003918201601f19168301916001600160401b03831184841017607057808492602094604052833981010312606c57516001600160a01b0381168103606c576080526040516105069081610085823960805181818160a501526103910152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe608060409080825260049081361015610016575f80fd5b5f3560e01c90816306433b1b1461037f575080634edb8f391461031a5763747daec514610041575f80fd5b34610305576020806003193601126103055781359267ffffffffffffffff808511610305573660238601121561030557848401359081116103055760249485810190368784830101116103055783516302910f8b60e31b81523387820152858189817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610310575f916102d6575b50156102c657335f525f85526100f4845f2061042e565b95601f840191601f19918284169887516101108a8c01826103f8565b87815289810190888883375f8b8a8301015282519051908b82821494856102b5575b50505050506102a75750335f525f8752855f209261015084546103c0565b90601f821161026c575b50505f91601f86116001146101dc5750928492837ff8dac27f20d622a0759394313683066cb713a406633a3a7dde8799654015ea64999a5f9794899789936101cf575b5050508360011b9087198560031b1c19161790555b8184519780895288015283870137840101528133948101030190a2005b01013590505f808061019d565b859991991691835f52875f20925f5b8181106102535750927ff8dac27f20d622a0759394313683066cb713a406633a3a7dde8799654015ea64999a889693889693875f9a9710610238575b50505050600183811b0190556101b2565b891960f88860031b161c19920101351690555f808080610227565b91938960018192868f89010135815501950192016101eb565b845f52885f209060051c81019189881061029d575b601f0160051c01905b8181101561015a575f815560010161028a565b9091508190610281565b865163a741a04560e01b8152fd5b012091201490505f80808b81610132565b835163184849cf60e01b81528690fd5b90508581813d8311610309575b6102ed81836103f8565b8101031261030557518015158103610305575f6100dd565b5f80fd5b503d6102e3565b85513d5f823e3d90fd5b503461030557602036600319011261030557356001600160a01b0381169190829003610305576020915f525f8252610353815f2061042e565b815192839181835280519182918282860152018484015e5f828201840152601f01601f19168101030190f35b34610305575f366003190112610305577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b90600182811c921680156103ee575b60208310146103da57565b634e487b7160e01b5f52602260045260245ffd5b91607f16916103cf565b90601f8019910116810190811067ffffffffffffffff82111761041a57604052565b634e487b7160e01b5f52604160045260245ffd5b9060405191825f8254610440816103c0565b908184526020946001916001811690815f146104ae5750600114610470575b50505061046e925003836103f8565b565b5f90815285812095935091905b81831061049657505061046e93508201015f808061045f565b8554888401850152948501948794509183019161047d565b9250505061046e94925060ff191682840152151560051b8201015f808061045f56fea2646970667358221220213586bbc3f91bcc9951ece370d94e2d99fd8bd62ad4238fab325cec50e7b4fe64736f6c63430008190033","sourceMap":"276:822:96:-:0;;;;;;;;;;;;;-1:-1:-1;;276:822:96;;;;-1:-1:-1;;;;;276:822:96;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;276:822:96;;;;;;621:19;;276:822;;;;;;;;621:19;276:822;;;;;;;;;;;;-1:-1:-1;276:822:96;;;;;;-1:-1:-1;276:822:96;;;;;-1:-1:-1;276:822:96","linkReferences":{}},"deployedBytecode":{"object":"0x608060409080825260049081361015610016575f80fd5b5f3560e01c90816306433b1b1461037f575080634edb8f391461031a5763747daec514610041575f80fd5b34610305576020806003193601126103055781359267ffffffffffffffff808511610305573660238601121561030557848401359081116103055760249485810190368784830101116103055783516302910f8b60e31b81523387820152858189817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610310575f916102d6575b50156102c657335f525f85526100f4845f2061042e565b95601f840191601f19918284169887516101108a8c01826103f8565b87815289810190888883375f8b8a8301015282519051908b82821494856102b5575b50505050506102a75750335f525f8752855f209261015084546103c0565b90601f821161026c575b50505f91601f86116001146101dc5750928492837ff8dac27f20d622a0759394313683066cb713a406633a3a7dde8799654015ea64999a5f9794899789936101cf575b5050508360011b9087198560031b1c19161790555b8184519780895288015283870137840101528133948101030190a2005b01013590505f808061019d565b859991991691835f52875f20925f5b8181106102535750927ff8dac27f20d622a0759394313683066cb713a406633a3a7dde8799654015ea64999a889693889693875f9a9710610238575b50505050600183811b0190556101b2565b891960f88860031b161c19920101351690555f808080610227565b91938960018192868f89010135815501950192016101eb565b845f52885f209060051c81019189881061029d575b601f0160051c01905b8181101561015a575f815560010161028a565b9091508190610281565b865163a741a04560e01b8152fd5b012091201490505f80808b81610132565b835163184849cf60e01b81528690fd5b90508581813d8311610309575b6102ed81836103f8565b8101031261030557518015158103610305575f6100dd565b5f80fd5b503d6102e3565b85513d5f823e3d90fd5b503461030557602036600319011261030557356001600160a01b0381169190829003610305576020915f525f8252610353815f2061042e565b815192839181835280519182918282860152018484015e5f828201840152601f01601f19168101030190f35b34610305575f366003190112610305577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b90600182811c921680156103ee575b60208310146103da57565b634e487b7160e01b5f52602260045260245ffd5b91607f16916103cf565b90601f8019910116810190811067ffffffffffffffff82111761041a57604052565b634e487b7160e01b5f52604160045260245ffd5b9060405191825f8254610440816103c0565b908184526020946001916001811690815f146104ae5750600114610470575b50505061046e925003836103f8565b565b5f90815285812095935091905b81831061049657505061046e93508201015f808061045f565b8554888401850152948501948794509183019161047d565b9250505061046e94925060ff191682840152151560051b8201015f808061045f56fea2646970667358221220213586bbc3f91bcc9951ece370d94e2d99fd8bd62ad4238fab325cec50e7b4fe64736f6c63430008190033","sourceMap":"276:822:96:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;797:40:96;;826:10;797:40;;;276:822;;;;;807:8;-1:-1:-1;;;;;276:822:96;797:40;;;;;;;276:822;797:40;;;276:822;796:41;;792:90;;826:10;276:822;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3842:34:57;;;;;:80;;;;276:822:96;892:93;;;;;;;826:10;;276:822;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;1049:40;276:822;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;826:10;;276:822;;;1049:40;;;;276:822;;;;;;-1:-1:-1;276:822:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;1049:40;276:822;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;276:822:96;;;;892:93;276:822;;-1:-1:-1;;;962:12:96;;;3842:80:57;276:822:96;3880:19:57;3903;;3880:42;;-1:-1:-1;3842:80:57;;;;;;;792:90:96;276:822;;-1:-1:-1;;;860:11:96;;276:822;;860:11;797:40;;;;;;;;;;;;;;;;:::i;:::-;;;276:822;;;;;;;;;;;;797:40;;;276:822;;;;797:40;;;;;;276:822;;;;;;;;;;;;;;;;-1:-1:-1;;276:822:96;;;;;-1:-1:-1;;;;;276:822:96;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;276:822:96;;;;;;;;;;;;;-1:-1:-1;;276:822:96;;;;410:33;-1:-1:-1;;;;;276:822:96;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;276:822:96;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;-1:-1:-1;276:822:96;;;;;;;;-1:-1:-1;;276:822:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;276:822:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{},"immutableReferences":{"63760":[{"start":165,"length":32},{"start":913,"length":32}]}},"methodIdentifiers":{"REGISTRY()":"06433b1b","metadataURL(address)":"4edb8f39","setMetadataURL(string)":"747daec5"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registry\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AlreadySet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotEntity\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"entity\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataURL\",\"type\":\"string\"}],\"name\":\"SetMetadataURL\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"REGISTRY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"entity\",\"type\":\"address\"}],\"name\":\"metadataURL\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"metadataURL_\",\"type\":\"string\"}],\"name\":\"setMetadataURL\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"SetMetadataURL(address,string)\":{\"params\":{\"entity\":\"address of the entity\",\"metadataURL\":\"new metadata URL of the entity\"}}},\"kind\":\"dev\",\"methods\":{\"setMetadataURL(string)\":{\"params\":{\"metadataURL\":\"new metadata URL of the entity\"}}},\"stateVariables\":{\"REGISTRY\":{\"return\":\"address of the registry\",\"returns\":{\"_0\":\"address of the registry\"}},\"metadataURL\":{\"params\":{\"entity\":\"address of the entity\"},\"return\":\"value metadata URL of the entity\",\"returns\":{\"value\":\"metadata URL of the entity\"}}},\"version\":1},\"userdoc\":{\"events\":{\"SetMetadataURL(address,string)\":{\"notice\":\"Emitted when a metadata URL is set for an entity.\"}},\"kind\":\"user\",\"methods\":{\"REGISTRY()\":{\"notice\":\"Get the registry's address.\"},\"metadataURL(address)\":{\"notice\":\"Get a URL with an entity's metadata.\"},\"setMetadataURL(string)\":{\"notice\":\"Set a new metadata URL for a calling entity.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/service/MetadataService.sol\":\"MetadataService\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0\",\"dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"src/contracts/service/MetadataService.sol\":{\"keccak256\":\"0x0c6867f020aea3c5536de919032a286c701fce7ec2069935922c33595c3fbb7b\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://5f1e26b31957977e6e9ba3d81b8dcd478989ac3317f61e3c197e152db971ae39\",\"dweb:/ipfs/QmbN2rtWtzPsoBqjXR8B4RmcuDkh3kaZyjL4VMq6RibkvX\"]},\"src/interfaces/common/IRegistry.sol\":{\"keccak256\":\"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014\",\"dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK\"]},\"src/interfaces/service/IMetadataService.sol\":{\"keccak256\":\"0xadc4d573ffbacb9b81ae8bfbfe0bb709a90aa3c98e62a0106cb10abb2253e394\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2051cce94b6df7612b44061b3da656e3af473b3032384895ff6ec3a3dd86bd\",\"dweb:/ipfs/QmaJr5pU56eVfZNiL44dpXfb5Ze2HNiTXXMTSHsU4QBF3t\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"registry","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AlreadySet"},{"inputs":[],"type":"error","name":"NotEntity"},{"inputs":[{"internalType":"address","name":"entity","type":"address","indexed":true},{"internalType":"string","name":"metadataURL","type":"string","indexed":false}],"type":"event","name":"SetMetadataURL","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"REGISTRY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"entity","type":"address"}],"stateMutability":"view","type":"function","name":"metadataURL","outputs":[{"internalType":"string","name":"value","type":"string"}]},{"inputs":[{"internalType":"string","name":"metadataURL_","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"setMetadataURL"}],"devdoc":{"kind":"dev","methods":{"setMetadataURL(string)":{"params":{"metadataURL":"new metadata URL of the entity"}}},"version":1},"userdoc":{"kind":"user","methods":{"REGISTRY()":{"notice":"Get the registry's address."},"metadataURL(address)":{"notice":"Get a URL with an entity's metadata."},"setMetadataURL(string)":{"notice":"Set a new metadata URL for a calling entity."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/service/MetadataService.sol":"MetadataService"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed","urls":["bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0","dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3","urls":["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03","dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"],"license":"MIT"},"src/contracts/service/MetadataService.sol":{"keccak256":"0x0c6867f020aea3c5536de919032a286c701fce7ec2069935922c33595c3fbb7b","urls":["bzz-raw://5f1e26b31957977e6e9ba3d81b8dcd478989ac3317f61e3c197e152db971ae39","dweb:/ipfs/QmbN2rtWtzPsoBqjXR8B4RmcuDkh3kaZyjL4VMq6RibkvX"],"license":"BUSL-1.1"},"src/interfaces/common/IRegistry.sol":{"keccak256":"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb","urls":["bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014","dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK"],"license":"MIT"},"src/interfaces/service/IMetadataService.sol":{"keccak256":"0xadc4d573ffbacb9b81ae8bfbfe0bb709a90aa3c98e62a0106cb10abb2253e394","urls":["bzz-raw://bc2051cce94b6df7612b44061b3da656e3af473b3032384895ff6ec3a3dd86bd","dweb:/ipfs/QmaJr5pU56eVfZNiL44dpXfb5Ze2HNiTXXMTSHsU4QBF3t"],"license":"MIT"}},"version":1},"id":96} \ No newline at end of file diff --git a/out/NetworkMiddlewareService.sol/NetworkMiddlewareService.json b/out/NetworkMiddlewareService.sol/NetworkMiddlewareService.json index 919728bc..87db1410 100644 --- a/out/NetworkMiddlewareService.sol/NetworkMiddlewareService.json +++ b/out/NetworkMiddlewareService.sol/NetworkMiddlewareService.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"networkRegistry","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"NETWORK_REGISTRY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"middleware","inputs":[{"name":"network","type":"address","internalType":"address"}],"outputs":[{"name":"value","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"setMiddleware","inputs":[{"name":"middleware_","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"SetMiddleware","inputs":[{"name":"network","type":"address","indexed":true,"internalType":"address"},{"name":"middleware","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AlreadySet","inputs":[]},{"type":"error","name":"NotNetwork","inputs":[]}],"bytecode":{"object":"0x60a034606c57601f6102dc38819003918201601f19168301916001600160401b03831184841017607057808492602094604052833981010312606c57516001600160a01b0381168103606c5760805260405161025790816100858239608051818181605401526101030152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080604090808252600480361015610015575f80fd5b5f3560e01c918263b7d8e1a9146100c357508163bb5ed03214610087575063c0cd7c3e14610041575f80fd5b34610083575f36600319011261008357517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5f80fd5b90503461008357602036600319011261008357356001600160a01b038181169291839003610083576020925f525f8352815f2054169051908152f35b83346100835760209081600319360112610083576001600160a01b0384358181169490859003610083576302910f8b60e31b8152338682015283816024817f000000000000000000000000000000000000000000000000000000000000000086165afa908115610217575f916101b7575b50156101a7578390335f525f8452825f2054161461019857907ff64e2a8734392e221de13f5e56deb22d308e292cad394052affa97dbaf41ec9891335f525f8252805f20846bffffffffffffffffffffffff60a01b825416179055519283523392a2005b5163a741a04560e01b81528390fd5b81516323d53b9760e21b81528590fd5b9050833d8511610210575b601f8101601f1916820167ffffffffffffffff8111838210176101fd5785918391865281010312610083575180151581036100835786610134565b604188634e487b7160e01b5f525260245ffd5b503d6101c2565b83513d5f823e3d90fdfea26469706673582212204f9d8e7d56920d88e2358268d67aed11c7bec9fb5cfaaed34c7210bbd86b22e464736f6c63430008190033","sourceMap":"226:856:90:-:0;;;;;;;;;;;;;-1:-1:-1;;226:856:90;;;;-1:-1:-1;;;;;226:856:90;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;226:856:90;;;;;;592:34;;226:856;;;;;;;;592:34;226:856;;;;;;;;;;;;-1:-1:-1;226:856:90;;;;;;-1:-1:-1;226:856:90;;;;;-1:-1:-1;226:856:90","linkReferences":{}},"deployedBytecode":{"object":"0x6080604090808252600480361015610015575f80fd5b5f3560e01c918263b7d8e1a9146100c357508163bb5ed03214610087575063c0cd7c3e14610041575f80fd5b34610083575f36600319011261008357517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5f80fd5b90503461008357602036600319011261008357356001600160a01b038181169291839003610083576020925f525f8352815f2054169051908152f35b83346100835760209081600319360112610083576001600160a01b0384358181169490859003610083576302910f8b60e31b8152338682015283816024817f000000000000000000000000000000000000000000000000000000000000000086165afa908115610217575f916101b7575b50156101a7578390335f525f8452825f2054161461019857907ff64e2a8734392e221de13f5e56deb22d308e292cad394052affa97dbaf41ec9891335f525f8252805f20846bffffffffffffffffffffffff60a01b825416179055519283523392a2005b5163a741a04560e01b81528390fd5b81516323d53b9760e21b81528590fd5b9050833d8511610210575b601f8101601f1916820167ffffffffffffffff8111838210176101fd5785918391865281010312610083575180151581036100835786610134565b604188634e487b7160e01b5f525260245ffd5b503d6101c2565b83513d5f823e3d90fdfea26469706673582212204f9d8e7d56920d88e2358268d67aed11c7bec9fb5cfaaed34c7210bbd86b22e464736f6c63430008190033","sourceMap":"226:856:90:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;226:856:90;;;;;356:41;-1:-1:-1;;;;;226:856:90;;;;;;;;;;;;;;;;;;-1:-1:-1;;226:856:90;;;;;-1:-1:-1;;;;;226:856:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;226:856:90;;;;;;;;;;;;-1:-1:-1;;;782:48:90;;819:10;782:48;;;226:856;792:16;782:48;226:856;782:48;792:16;226:856;;782:48;;;;;;;226:856;782:48;;;226:856;781:49;;777:99;;819:10;;;226:856;;;;;;;;;;890:37;886:87;;819:10;1035:38;819:10;;226:856;;;;;;;;;;;;;;;;;;;;;;819:10;1035:38;;226:856;886:87;226:856;-1:-1:-1;;;950:12:90;;226:856;;950:12;777:99;226:856;;-1:-1:-1;;;853:12:90;;226:856;;853:12;782:48;;;;;;;;;;226:856;;;-1:-1:-1;;226:856:90;;;;;;;;;;;;;;;;;;782:48;;226:856;;;;;;;;;;;;782:48;;;226:856;;;;;;;;;;;;782:48;;;;;;226:856;;;;;;;;","linkReferences":{},"immutableReferences":{"65042":[{"start":84,"length":32},{"start":259,"length":32}]}},"methodIdentifiers":{"NETWORK_REGISTRY()":"c0cd7c3e","middleware(address)":"bb5ed032","setMiddleware(address)":"b7d8e1a9"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"networkRegistry\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AlreadySet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotNetwork\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"network\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"middleware\",\"type\":\"address\"}],\"name\":\"SetMiddleware\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"NETWORK_REGISTRY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"network\",\"type\":\"address\"}],\"name\":\"middleware\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"middleware_\",\"type\":\"address\"}],\"name\":\"setMiddleware\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"SetMiddleware(address,address)\":{\"params\":{\"middleware\":\"new middleware of the network\",\"network\":\"address of the network\"}}},\"kind\":\"dev\",\"methods\":{\"setMiddleware(address)\":{\"params\":{\"middleware\":\"new middleware of the network\"}}},\"stateVariables\":{\"NETWORK_REGISTRY\":{\"return\":\"address of the network registry\",\"returns\":{\"_0\":\"address of the network registry\"}},\"middleware\":{\"params\":{\"network\":\"address of the network\"},\"return\":\"value middleware of the network\",\"returns\":{\"value\":\"middleware of the network\"}}},\"version\":1},\"userdoc\":{\"events\":{\"SetMiddleware(address,address)\":{\"notice\":\"Emitted when a middleware is set for a network.\"}},\"kind\":\"user\",\"methods\":{\"NETWORK_REGISTRY()\":{\"notice\":\"Get the network registry's address.\"},\"middleware(address)\":{\"notice\":\"Get a given network's middleware.\"},\"setMiddleware(address)\":{\"notice\":\"Set a new middleware for a calling network.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/service/NetworkMiddlewareService.sol\":\"NetworkMiddlewareService\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/contracts/service/NetworkMiddlewareService.sol\":{\"keccak256\":\"0x37c47d77b514ba404d7e20bcd4d5d281474af2c6b79e465b9132e4827f078fc5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://bac73b7feb32cb266f06314e71c04cbaf22bd1fcc1b0ca519b38e22c4e47b05c\",\"dweb:/ipfs/QmYN1WaKob9fQd5RkmMT6n72enPW5XkPashuYrFXppiCYK\"]},\"src/interfaces/common/IRegistry.sol\":{\"keccak256\":\"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014\",\"dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK\"]},\"src/interfaces/service/INetworkMiddlewareService.sol\":{\"keccak256\":\"0x347afc7fcf1fbcdb96d66162070ef6c78aed27b3af2c1d5dfb4e511840631783\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d90b8ceb495159e8e4e95d76447719dd166443f67dfabdd942846162071595c\",\"dweb:/ipfs/QmVVuiAWYx92T6vBvNMKZfTvraCf1fa16BsUKkdNs3hdHA\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"networkRegistry","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AlreadySet"},{"inputs":[],"type":"error","name":"NotNetwork"},{"inputs":[{"internalType":"address","name":"network","type":"address","indexed":true},{"internalType":"address","name":"middleware","type":"address","indexed":false}],"type":"event","name":"SetMiddleware","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"NETWORK_REGISTRY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"network","type":"address"}],"stateMutability":"view","type":"function","name":"middleware","outputs":[{"internalType":"address","name":"value","type":"address"}]},{"inputs":[{"internalType":"address","name":"middleware_","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMiddleware"}],"devdoc":{"kind":"dev","methods":{"setMiddleware(address)":{"params":{"middleware":"new middleware of the network"}}},"version":1},"userdoc":{"kind":"user","methods":{"NETWORK_REGISTRY()":{"notice":"Get the network registry's address."},"middleware(address)":{"notice":"Get a given network's middleware."},"setMiddleware(address)":{"notice":"Set a new middleware for a calling network."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/service/NetworkMiddlewareService.sol":"NetworkMiddlewareService"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"src/contracts/service/NetworkMiddlewareService.sol":{"keccak256":"0x37c47d77b514ba404d7e20bcd4d5d281474af2c6b79e465b9132e4827f078fc5","urls":["bzz-raw://bac73b7feb32cb266f06314e71c04cbaf22bd1fcc1b0ca519b38e22c4e47b05c","dweb:/ipfs/QmYN1WaKob9fQd5RkmMT6n72enPW5XkPashuYrFXppiCYK"],"license":"BUSL-1.1"},"src/interfaces/common/IRegistry.sol":{"keccak256":"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb","urls":["bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014","dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK"],"license":"MIT"},"src/interfaces/service/INetworkMiddlewareService.sol":{"keccak256":"0x347afc7fcf1fbcdb96d66162070ef6c78aed27b3af2c1d5dfb4e511840631783","urls":["bzz-raw://2d90b8ceb495159e8e4e95d76447719dd166443f67dfabdd942846162071595c","dweb:/ipfs/QmVVuiAWYx92T6vBvNMKZfTvraCf1fa16BsUKkdNs3hdHA"],"license":"MIT"}},"version":1},"id":90} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[{"name":"networkRegistry","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"NETWORK_REGISTRY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"middleware","inputs":[{"name":"network","type":"address","internalType":"address"}],"outputs":[{"name":"value","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"setMiddleware","inputs":[{"name":"middleware_","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"SetMiddleware","inputs":[{"name":"network","type":"address","indexed":true,"internalType":"address"},{"name":"middleware","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AlreadySet","inputs":[]},{"type":"error","name":"NotNetwork","inputs":[]}],"bytecode":{"object":"0x60a034606c57601f6102dc38819003918201601f19168301916001600160401b03831184841017607057808492602094604052833981010312606c57516001600160a01b0381168103606c5760805260405161025790816100858239608051818181605401526101030152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080604090808252600480361015610015575f80fd5b5f3560e01c918263b7d8e1a9146100c357508163bb5ed03214610087575063c0cd7c3e14610041575f80fd5b34610083575f36600319011261008357517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5f80fd5b90503461008357602036600319011261008357356001600160a01b038181169291839003610083576020925f525f8352815f2054169051908152f35b83346100835760209081600319360112610083576001600160a01b0384358181169490859003610083576302910f8b60e31b8152338682015283816024817f000000000000000000000000000000000000000000000000000000000000000086165afa908115610217575f916101b7575b50156101a7578390335f525f8452825f2054161461019857907ff64e2a8734392e221de13f5e56deb22d308e292cad394052affa97dbaf41ec9891335f525f8252805f20846bffffffffffffffffffffffff60a01b825416179055519283523392a2005b5163a741a04560e01b81528390fd5b81516323d53b9760e21b81528590fd5b9050833d8511610210575b601f8101601f1916820167ffffffffffffffff8111838210176101fd5785918391865281010312610083575180151581036100835786610134565b604188634e487b7160e01b5f525260245ffd5b503d6101c2565b83513d5f823e3d90fdfea2646970667358221220edefbf25e21854c550c2299b8ff4a53611aa3ce64b16ba939ee5df729cf4591564736f6c63430008190033","sourceMap":"226:856:97:-:0;;;;;;;;;;;;;-1:-1:-1;;226:856:97;;;;-1:-1:-1;;;;;226:856:97;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;226:856:97;;;;;;592:34;;226:856;;;;;;;;592:34;226:856;;;;;;;;;;;;-1:-1:-1;226:856:97;;;;;;-1:-1:-1;226:856:97;;;;;-1:-1:-1;226:856:97","linkReferences":{}},"deployedBytecode":{"object":"0x6080604090808252600480361015610015575f80fd5b5f3560e01c918263b7d8e1a9146100c357508163bb5ed03214610087575063c0cd7c3e14610041575f80fd5b34610083575f36600319011261008357517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5f80fd5b90503461008357602036600319011261008357356001600160a01b038181169291839003610083576020925f525f8352815f2054169051908152f35b83346100835760209081600319360112610083576001600160a01b0384358181169490859003610083576302910f8b60e31b8152338682015283816024817f000000000000000000000000000000000000000000000000000000000000000086165afa908115610217575f916101b7575b50156101a7578390335f525f8452825f2054161461019857907ff64e2a8734392e221de13f5e56deb22d308e292cad394052affa97dbaf41ec9891335f525f8252805f20846bffffffffffffffffffffffff60a01b825416179055519283523392a2005b5163a741a04560e01b81528390fd5b81516323d53b9760e21b81528590fd5b9050833d8511610210575b601f8101601f1916820167ffffffffffffffff8111838210176101fd5785918391865281010312610083575180151581036100835786610134565b604188634e487b7160e01b5f525260245ffd5b503d6101c2565b83513d5f823e3d90fdfea2646970667358221220edefbf25e21854c550c2299b8ff4a53611aa3ce64b16ba939ee5df729cf4591564736f6c63430008190033","sourceMap":"226:856:97:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;226:856:97;;;;;356:41;-1:-1:-1;;;;;226:856:97;;;;;;;;;;;;;;;;;;-1:-1:-1;;226:856:97;;;;;-1:-1:-1;;;;;226:856:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;226:856:97;;;;;;;;;;;;-1:-1:-1;;;782:48:97;;819:10;782:48;;;226:856;792:16;782:48;226:856;782:48;792:16;226:856;;782:48;;;;;;;226:856;782:48;;;226:856;781:49;;777:99;;819:10;;;226:856;;;;;;;;;;890:37;886:87;;819:10;1035:38;819:10;;226:856;;;;;;;;;;;;;;;;;;;;;;819:10;1035:38;;226:856;886:87;226:856;-1:-1:-1;;;950:12:97;;226:856;;950:12;777:99;226:856;;-1:-1:-1;;;853:12:97;;226:856;;853:12;782:48;;;;;;;;;;226:856;;;-1:-1:-1;;226:856:97;;;;;;;;;;;;;;;;;;782:48;;226:856;;;;;;;;;;;;782:48;;;226:856;;;;;;;;;;;;782:48;;;;;;226:856;;;;;;;;","linkReferences":{},"immutableReferences":{"63832":[{"start":84,"length":32},{"start":259,"length":32}]}},"methodIdentifiers":{"NETWORK_REGISTRY()":"c0cd7c3e","middleware(address)":"bb5ed032","setMiddleware(address)":"b7d8e1a9"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"networkRegistry\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AlreadySet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotNetwork\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"network\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"middleware\",\"type\":\"address\"}],\"name\":\"SetMiddleware\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"NETWORK_REGISTRY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"network\",\"type\":\"address\"}],\"name\":\"middleware\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"middleware_\",\"type\":\"address\"}],\"name\":\"setMiddleware\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"SetMiddleware(address,address)\":{\"params\":{\"middleware\":\"new middleware of the network\",\"network\":\"address of the network\"}}},\"kind\":\"dev\",\"methods\":{\"setMiddleware(address)\":{\"params\":{\"middleware\":\"new middleware of the network\"}}},\"stateVariables\":{\"NETWORK_REGISTRY\":{\"return\":\"address of the network registry\",\"returns\":{\"_0\":\"address of the network registry\"}},\"middleware\":{\"params\":{\"network\":\"address of the network\"},\"return\":\"value middleware of the network\",\"returns\":{\"value\":\"middleware of the network\"}}},\"version\":1},\"userdoc\":{\"events\":{\"SetMiddleware(address,address)\":{\"notice\":\"Emitted when a middleware is set for a network.\"}},\"kind\":\"user\",\"methods\":{\"NETWORK_REGISTRY()\":{\"notice\":\"Get the network registry's address.\"},\"middleware(address)\":{\"notice\":\"Get a given network's middleware.\"},\"setMiddleware(address)\":{\"notice\":\"Set a new middleware for a calling network.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/service/NetworkMiddlewareService.sol\":\"NetworkMiddlewareService\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/contracts/service/NetworkMiddlewareService.sol\":{\"keccak256\":\"0x37c47d77b514ba404d7e20bcd4d5d281474af2c6b79e465b9132e4827f078fc5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://bac73b7feb32cb266f06314e71c04cbaf22bd1fcc1b0ca519b38e22c4e47b05c\",\"dweb:/ipfs/QmYN1WaKob9fQd5RkmMT6n72enPW5XkPashuYrFXppiCYK\"]},\"src/interfaces/common/IRegistry.sol\":{\"keccak256\":\"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014\",\"dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK\"]},\"src/interfaces/service/INetworkMiddlewareService.sol\":{\"keccak256\":\"0x347afc7fcf1fbcdb96d66162070ef6c78aed27b3af2c1d5dfb4e511840631783\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d90b8ceb495159e8e4e95d76447719dd166443f67dfabdd942846162071595c\",\"dweb:/ipfs/QmVVuiAWYx92T6vBvNMKZfTvraCf1fa16BsUKkdNs3hdHA\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"networkRegistry","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AlreadySet"},{"inputs":[],"type":"error","name":"NotNetwork"},{"inputs":[{"internalType":"address","name":"network","type":"address","indexed":true},{"internalType":"address","name":"middleware","type":"address","indexed":false}],"type":"event","name":"SetMiddleware","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"NETWORK_REGISTRY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"network","type":"address"}],"stateMutability":"view","type":"function","name":"middleware","outputs":[{"internalType":"address","name":"value","type":"address"}]},{"inputs":[{"internalType":"address","name":"middleware_","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMiddleware"}],"devdoc":{"kind":"dev","methods":{"setMiddleware(address)":{"params":{"middleware":"new middleware of the network"}}},"version":1},"userdoc":{"kind":"user","methods":{"NETWORK_REGISTRY()":{"notice":"Get the network registry's address."},"middleware(address)":{"notice":"Get a given network's middleware."},"setMiddleware(address)":{"notice":"Set a new middleware for a calling network."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/service/NetworkMiddlewareService.sol":"NetworkMiddlewareService"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"src/contracts/service/NetworkMiddlewareService.sol":{"keccak256":"0x37c47d77b514ba404d7e20bcd4d5d281474af2c6b79e465b9132e4827f078fc5","urls":["bzz-raw://bac73b7feb32cb266f06314e71c04cbaf22bd1fcc1b0ca519b38e22c4e47b05c","dweb:/ipfs/QmYN1WaKob9fQd5RkmMT6n72enPW5XkPashuYrFXppiCYK"],"license":"BUSL-1.1"},"src/interfaces/common/IRegistry.sol":{"keccak256":"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb","urls":["bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014","dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK"],"license":"MIT"},"src/interfaces/service/INetworkMiddlewareService.sol":{"keccak256":"0x347afc7fcf1fbcdb96d66162070ef6c78aed27b3af2c1d5dfb4e511840631783","urls":["bzz-raw://2d90b8ceb495159e8e4e95d76447719dd166443f67dfabdd942846162071595c","dweb:/ipfs/QmVVuiAWYx92T6vBvNMKZfTvraCf1fa16BsUKkdNs3hdHA"],"license":"MIT"}},"version":1},"id":97} \ No newline at end of file diff --git a/out/NetworkRegistry.sol/NetworkRegistry.json b/out/NetworkRegistry.sol/NetworkRegistry.json index 32aab214..8f016eda 100644 --- a/out/NetworkRegistry.sol/NetworkRegistry.json +++ b/out/NetworkRegistry.sol/NetworkRegistry.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"entity","inputs":[{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"isEntity","inputs":[{"name":"entity_","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"registerNetwork","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"totalEntities","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"AddEntity","inputs":[{"name":"entity","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"EntityNotExist","inputs":[]},{"type":"error","name":"NetworkAlreadyRegistered","inputs":[]}],"bytecode":{"object":"0x60808060405234601557610241908161001a8239f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c806314887c581461013d5780635cd8b15e1461012157806387140b5b146100b55763b42ba2a214610045575f80fd5b346100b15760203660031901126100b1576004355f5481101561009d575f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56301546040516001600160a01b039091168152602090f35b634e487b7160e01b5f52603260045260245ffd5b5f80fd5b346100b1575f3660031901126100b1576100da335f52600160205260405f2054151590565b61010f576100e733610184565b50337fb919910dcefbf753bfd926ab3b1d3f85d877190c3d01ba1bd585047b99b99f0b5f80a2005b60405163ad5fcda560e01b8152600490fd5b346100b1575f3660031901126100b15760205f54604051908152f35b346100b15760203660031901126100b1576004356001600160a01b038116908190036100b15761017a6020915f52600160205260405f2054151590565b6040519015158152f35b805f52600160205260405f2054155f14610206575f54680100000000000000008110156101f25760018101805f5581101561009d5781907f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56301555f54905f52600160205260405f2055600190565b634e487b7160e01b5f52604160045260245ffd5b505f9056fea2646970667358221220cc20ba223c75c11e4bd6429db6fcb715270e8a6175f384753dacda65f1f603d864736f6c63430008190033","sourceMap":"181:284:64:-:0;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806314887c581461013d5780635cd8b15e1461012157806387140b5b146100b55763b42ba2a214610045575f80fd5b346100b15760203660031901126100b1576004355f5481101561009d575f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56301546040516001600160a01b039091168152602090f35b634e487b7160e01b5f52603260045260245ffd5b5f80fd5b346100b1575f3660031901126100b1576100da335f52600160205260405f2054151590565b61010f576100e733610184565b50337fb919910dcefbf753bfd926ab3b1d3f85d877190c3d01ba1bd585047b99b99f0b5f80a2005b60405163ad5fcda560e01b8152600490fd5b346100b1575f3660031901126100b15760205f54604051908152f35b346100b15760203660031901126100b1576004356001600160a01b038116908190036100b15761017a6020915f52600160205260405f2054151590565b6040519015158152f35b805f52600160205260405f2054155f14610206575f54680100000000000000008110156101f25760018101805f5581101561009d5781907f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56301555f54905f52600160205260405f2055600190565b634e487b7160e01b5f52604160045260245ffd5b505f9056fea2646970667358221220cc20ba223c75c11e4bd6429db6fcb715270e8a6175f384753dacda65f1f603d864736f6c63430008190033","sourceMap":"181:284:64:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;181:284:64;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;181:284:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;181:284:64;;;;8974:55:61;353:10:64;181:284;;4360:14:61;181:284:64;;;;;;4360:26:61;;4264:129;;8974:55;340:84:64;;8409:50:61;353:10:64;8409:50:61;:::i;:::-;;353:10:64;1077:18:74;181:284:64;1077:18:74;;181:284:64;340:84;181:284;;-1:-1:-1;;;387:26:64;;181:284;;387:26;181:284;;;;;;-1:-1:-1;;181:284:64;;;;;;;;;;;;;;;;;;;-1:-1:-1;;181:284:64;;;;;;-1:-1:-1;;;;;181:284:64;;;;;;;;8974:55:61;181:284:64;8974:55:61;181:284:64;;4360:14:61;181:284:64;;;;;;4360:26:61;;4264:129;;8974:55;181:284:64;;;;;;;;2241:406:61;181:284:64;;;4360:14:61;181:284:64;;;;;;4360:26:61;2320:321;181:284:64;;;;;;;;;;;4360:14:61;181:284:64;;;;;;;;;;;;;;;;;;;;4360:14:61;181:284:64;;;;;;4360:14:61;2576:11;:::o;181:284:64:-;;;;;;;;;;;;2320:321:61;2618:12;181:284:64;2618:12:61;:::o","linkReferences":{}},"methodIdentifiers":{"entity(uint256)":"b42ba2a2","isEntity(address)":"14887c58","registerNetwork()":"87140b5b","totalEntities()":"5cd8b15e"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"EntityNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NetworkAlreadyRegistered\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"entity\",\"type\":\"address\"}],\"name\":\"AddEntity\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"entity\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"entity_\",\"type\":\"address\"}],\"name\":\"isEntity\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registerNetwork\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalEntities\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"AddEntity(address)\":{\"params\":{\"entity\":\"address of the added entity\"}}},\"kind\":\"dev\",\"methods\":{\"entity(uint256)\":{\"params\":{\"index\":\"index of the entity to get\"},\"returns\":{\"_0\":\"address of the entity\"}},\"isEntity(address)\":{\"params\":{\"account\":\"address to check\"},\"returns\":{\"_0\":\"if the given address is an entity\"}},\"totalEntities()\":{\"returns\":{\"_0\":\"total number of entities added\"}}},\"version\":1},\"userdoc\":{\"events\":{\"AddEntity(address)\":{\"notice\":\"Emitted when an entity is added.\"}},\"kind\":\"user\",\"methods\":{\"entity(uint256)\":{\"notice\":\"Get an entity given its index.\"},\"isEntity(address)\":{\"notice\":\"Get if a given address is an entity.\"},\"registerNetwork()\":{\"notice\":\"Register the caller as a network.\"},\"totalEntities()\":{\"notice\":\"Get a total number of entities.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/NetworkRegistry.sol\":\"NetworkRegistry\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1\",\"dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA\"]},\"src/contracts/NetworkRegistry.sol\":{\"keccak256\":\"0x4b4c95351e9dc7aed572eed27ff3c1aba57c13c8b1f50fc0f07c1ec36c504970\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://ec74d6259a902cb663304fc797d025d175c17c4836fd29a099513ea001319567\",\"dweb:/ipfs/QmRcRCkuR7Ey5B4F8rCvXh1ApVbqteGY1cJjt5ik1wAYPd\"]},\"src/contracts/common/Registry.sol\":{\"keccak256\":\"0x4a4004836d920953a8ec6e223de9a330f43acf7a5b93c6b8b3e4a95e0f129889\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://e8bdda207f3852c683a2b481602239a914f7e26bcd042ade618e263a43b67652\",\"dweb:/ipfs/Qmb8GZykJWxZcfwNp3SqhFizDFydFuV6LXgemV3vnWyLyu\"]},\"src/interfaces/INetworkRegistry.sol\":{\"keccak256\":\"0x60dcd8ad04980a471f42b6ed57f6b96fbc4091db97b6314cb198914975327938\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc207782fcb74a144ecb0c7dc1f427ee6de38710e0966c3cd43040493e11379f\",\"dweb:/ipfs/QmSa8LVejhmRr5T3pWYvUTrDr4fCfohfqyJfRyW2fV4zYy\"]},\"src/interfaces/common/IRegistry.sol\":{\"keccak256\":\"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014\",\"dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"EntityNotExist"},{"inputs":[],"type":"error","name":"NetworkAlreadyRegistered"},{"inputs":[{"internalType":"address","name":"entity","type":"address","indexed":true}],"type":"event","name":"AddEntity","anonymous":false},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function","name":"entity","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"entity_","type":"address"}],"stateMutability":"view","type":"function","name":"isEntity","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"registerNetwork"},{"inputs":[],"stateMutability":"view","type":"function","name":"totalEntities","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{"entity(uint256)":{"params":{"index":"index of the entity to get"},"returns":{"_0":"address of the entity"}},"isEntity(address)":{"params":{"account":"address to check"},"returns":{"_0":"if the given address is an entity"}},"totalEntities()":{"returns":{"_0":"total number of entities added"}}},"version":1},"userdoc":{"kind":"user","methods":{"entity(uint256)":{"notice":"Get an entity given its index."},"isEntity(address)":{"notice":"Get if a given address is an entity."},"registerNetwork()":{"notice":"Register the caller as a network."},"totalEntities()":{"notice":"Get a total number of entities."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/NetworkRegistry.sol":"NetworkRegistry"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol":{"keccak256":"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa","urls":["bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1","dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA"],"license":"MIT"},"src/contracts/NetworkRegistry.sol":{"keccak256":"0x4b4c95351e9dc7aed572eed27ff3c1aba57c13c8b1f50fc0f07c1ec36c504970","urls":["bzz-raw://ec74d6259a902cb663304fc797d025d175c17c4836fd29a099513ea001319567","dweb:/ipfs/QmRcRCkuR7Ey5B4F8rCvXh1ApVbqteGY1cJjt5ik1wAYPd"],"license":"BUSL-1.1"},"src/contracts/common/Registry.sol":{"keccak256":"0x4a4004836d920953a8ec6e223de9a330f43acf7a5b93c6b8b3e4a95e0f129889","urls":["bzz-raw://e8bdda207f3852c683a2b481602239a914f7e26bcd042ade618e263a43b67652","dweb:/ipfs/Qmb8GZykJWxZcfwNp3SqhFizDFydFuV6LXgemV3vnWyLyu"],"license":"BUSL-1.1"},"src/interfaces/INetworkRegistry.sol":{"keccak256":"0x60dcd8ad04980a471f42b6ed57f6b96fbc4091db97b6314cb198914975327938","urls":["bzz-raw://fc207782fcb74a144ecb0c7dc1f427ee6de38710e0966c3cd43040493e11379f","dweb:/ipfs/QmSa8LVejhmRr5T3pWYvUTrDr4fCfohfqyJfRyW2fV4zYy"],"license":"MIT"},"src/interfaces/common/IRegistry.sol":{"keccak256":"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb","urls":["bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014","dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK"],"license":"MIT"}},"version":1},"id":64} \ No newline at end of file +{"abi":[{"type":"function","name":"entity","inputs":[{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"isEntity","inputs":[{"name":"entity_","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"registerNetwork","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"totalEntities","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"AddEntity","inputs":[{"name":"entity","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"EntityNotExist","inputs":[]},{"type":"error","name":"NetworkAlreadyRegistered","inputs":[]}],"bytecode":{"object":"0x60808060405234601557610241908161001a8239f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c806314887c581461013d5780635cd8b15e1461012157806387140b5b146100b55763b42ba2a214610045575f80fd5b346100b15760203660031901126100b1576004355f5481101561009d575f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56301546040516001600160a01b039091168152602090f35b634e487b7160e01b5f52603260045260245ffd5b5f80fd5b346100b1575f3660031901126100b1576100da335f52600160205260405f2054151590565b61010f576100e733610184565b50337fb919910dcefbf753bfd926ab3b1d3f85d877190c3d01ba1bd585047b99b99f0b5f80a2005b60405163ad5fcda560e01b8152600490fd5b346100b1575f3660031901126100b15760205f54604051908152f35b346100b15760203660031901126100b1576004356001600160a01b038116908190036100b15761017a6020915f52600160205260405f2054151590565b6040519015158152f35b805f52600160205260405f2054155f14610206575f54680100000000000000008110156101f25760018101805f5581101561009d5781907f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56301555f54905f52600160205260405f2055600190565b634e487b7160e01b5f52604160045260245ffd5b505f9056fea26469706673582212203b994429e1a2ebbd7989b7d6994eefa29c2b5e15cb2be47370f62e7e04df175864736f6c63430008190033","sourceMap":"181:284:71:-:0;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806314887c581461013d5780635cd8b15e1461012157806387140b5b146100b55763b42ba2a214610045575f80fd5b346100b15760203660031901126100b1576004355f5481101561009d575f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56301546040516001600160a01b039091168152602090f35b634e487b7160e01b5f52603260045260245ffd5b5f80fd5b346100b1575f3660031901126100b1576100da335f52600160205260405f2054151590565b61010f576100e733610184565b50337fb919910dcefbf753bfd926ab3b1d3f85d877190c3d01ba1bd585047b99b99f0b5f80a2005b60405163ad5fcda560e01b8152600490fd5b346100b1575f3660031901126100b15760205f54604051908152f35b346100b15760203660031901126100b1576004356001600160a01b038116908190036100b15761017a6020915f52600160205260405f2054151590565b6040519015158152f35b805f52600160205260405f2054155f14610206575f54680100000000000000008110156101f25760018101805f5581101561009d5781907f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56301555f54905f52600160205260405f2055600190565b634e487b7160e01b5f52604160045260245ffd5b505f9056fea26469706673582212203b994429e1a2ebbd7989b7d6994eefa29c2b5e15cb2be47370f62e7e04df175864736f6c63430008190033","sourceMap":"181:284:71:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;181:284:71;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;181:284:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;181:284:71;;;;8947:55:67;353:10:71;181:284;;4360:14:67;181:284:71;;;;;;4360:26:67;;4264:129;;8947:55;340:84:71;;8382:50:67;353:10:71;8382:50:67;:::i;:::-;;353:10:71;1077:18:81;181:284:71;1077:18:81;;181:284:71;340:84;181:284;;-1:-1:-1;;;387:26:71;;181:284;;387:26;181:284;;;;;;-1:-1:-1;;181:284:71;;;;;;;;;;;;;;;;;;;-1:-1:-1;;181:284:71;;;;;;-1:-1:-1;;;;;181:284:71;;;;;;;;8947:55:67;181:284:71;8947:55:67;181:284:71;;4360:14:67;181:284:71;;;;;;4360:26:67;;4264:129;;8947:55;181:284:71;;;;;;;;2241:406:67;181:284:71;;;4360:14:67;181:284:71;;;;;;4360:26:67;2320:321;181:284:71;;;;;;;;;;;4360:14:67;181:284:71;;;;;;;;;;;;;;;;;;;;4360:14:67;181:284:71;;;;;;4360:14:67;2576:11;:::o;181:284:71:-;;;;;;;;;;;;2320:321:67;2618:12;181:284:71;2618:12:67;:::o","linkReferences":{}},"methodIdentifiers":{"entity(uint256)":"b42ba2a2","isEntity(address)":"14887c58","registerNetwork()":"87140b5b","totalEntities()":"5cd8b15e"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"EntityNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NetworkAlreadyRegistered\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"entity\",\"type\":\"address\"}],\"name\":\"AddEntity\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"entity\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"entity_\",\"type\":\"address\"}],\"name\":\"isEntity\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registerNetwork\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalEntities\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"AddEntity(address)\":{\"params\":{\"entity\":\"address of the added entity\"}}},\"kind\":\"dev\",\"methods\":{\"entity(uint256)\":{\"params\":{\"index\":\"index of the entity to get\"},\"returns\":{\"_0\":\"address of the entity\"}},\"isEntity(address)\":{\"params\":{\"account\":\"address to check\"},\"returns\":{\"_0\":\"if the given address is an entity\"}},\"totalEntities()\":{\"returns\":{\"_0\":\"total number of entities added\"}}},\"version\":1},\"userdoc\":{\"events\":{\"AddEntity(address)\":{\"notice\":\"Emitted when an entity is added.\"}},\"kind\":\"user\",\"methods\":{\"entity(uint256)\":{\"notice\":\"Get an entity given its index.\"},\"isEntity(address)\":{\"notice\":\"Get if a given address is an entity.\"},\"registerNetwork()\":{\"notice\":\"Register the caller as a network.\"},\"totalEntities()\":{\"notice\":\"Get a total number of entities.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/NetworkRegistry.sol\":\"NetworkRegistry\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f\",\"dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz\"]},\"src/contracts/NetworkRegistry.sol\":{\"keccak256\":\"0x4b4c95351e9dc7aed572eed27ff3c1aba57c13c8b1f50fc0f07c1ec36c504970\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://ec74d6259a902cb663304fc797d025d175c17c4836fd29a099513ea001319567\",\"dweb:/ipfs/QmRcRCkuR7Ey5B4F8rCvXh1ApVbqteGY1cJjt5ik1wAYPd\"]},\"src/contracts/common/Registry.sol\":{\"keccak256\":\"0x4a4004836d920953a8ec6e223de9a330f43acf7a5b93c6b8b3e4a95e0f129889\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://e8bdda207f3852c683a2b481602239a914f7e26bcd042ade618e263a43b67652\",\"dweb:/ipfs/Qmb8GZykJWxZcfwNp3SqhFizDFydFuV6LXgemV3vnWyLyu\"]},\"src/interfaces/INetworkRegistry.sol\":{\"keccak256\":\"0x60dcd8ad04980a471f42b6ed57f6b96fbc4091db97b6314cb198914975327938\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc207782fcb74a144ecb0c7dc1f427ee6de38710e0966c3cd43040493e11379f\",\"dweb:/ipfs/QmSa8LVejhmRr5T3pWYvUTrDr4fCfohfqyJfRyW2fV4zYy\"]},\"src/interfaces/common/IRegistry.sol\":{\"keccak256\":\"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014\",\"dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"EntityNotExist"},{"inputs":[],"type":"error","name":"NetworkAlreadyRegistered"},{"inputs":[{"internalType":"address","name":"entity","type":"address","indexed":true}],"type":"event","name":"AddEntity","anonymous":false},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function","name":"entity","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"entity_","type":"address"}],"stateMutability":"view","type":"function","name":"isEntity","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"registerNetwork"},{"inputs":[],"stateMutability":"view","type":"function","name":"totalEntities","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{"entity(uint256)":{"params":{"index":"index of the entity to get"},"returns":{"_0":"address of the entity"}},"isEntity(address)":{"params":{"account":"address to check"},"returns":{"_0":"if the given address is an entity"}},"totalEntities()":{"returns":{"_0":"total number of entities added"}}},"version":1},"userdoc":{"kind":"user","methods":{"entity(uint256)":{"notice":"Get an entity given its index."},"isEntity(address)":{"notice":"Get if a given address is an entity."},"registerNetwork()":{"notice":"Register the caller as a network."},"totalEntities()":{"notice":"Get a total number of entities."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/NetworkRegistry.sol":"NetworkRegistry"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol":{"keccak256":"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212","urls":["bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f","dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz"],"license":"MIT"},"src/contracts/NetworkRegistry.sol":{"keccak256":"0x4b4c95351e9dc7aed572eed27ff3c1aba57c13c8b1f50fc0f07c1ec36c504970","urls":["bzz-raw://ec74d6259a902cb663304fc797d025d175c17c4836fd29a099513ea001319567","dweb:/ipfs/QmRcRCkuR7Ey5B4F8rCvXh1ApVbqteGY1cJjt5ik1wAYPd"],"license":"BUSL-1.1"},"src/contracts/common/Registry.sol":{"keccak256":"0x4a4004836d920953a8ec6e223de9a330f43acf7a5b93c6b8b3e4a95e0f129889","urls":["bzz-raw://e8bdda207f3852c683a2b481602239a914f7e26bcd042ade618e263a43b67652","dweb:/ipfs/Qmb8GZykJWxZcfwNp3SqhFizDFydFuV6LXgemV3vnWyLyu"],"license":"BUSL-1.1"},"src/interfaces/INetworkRegistry.sol":{"keccak256":"0x60dcd8ad04980a471f42b6ed57f6b96fbc4091db97b6314cb198914975327938","urls":["bzz-raw://fc207782fcb74a144ecb0c7dc1f427ee6de38710e0966c3cd43040493e11379f","dweb:/ipfs/QmSa8LVejhmRr5T3pWYvUTrDr4fCfohfqyJfRyW2fV4zYy"],"license":"MIT"},"src/interfaces/common/IRegistry.sol":{"keccak256":"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb","urls":["bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014","dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK"],"license":"MIT"}},"version":1},"id":71} \ No newline at end of file diff --git a/out/NetworkRestakeDelegator.sol/NetworkRestakeDelegator.json b/out/NetworkRestakeDelegator.sol/NetworkRestakeDelegator.json index 64c3566d..61424fea 100644 --- a/out/NetworkRestakeDelegator.sol/NetworkRestakeDelegator.json +++ b/out/NetworkRestakeDelegator.sol/NetworkRestakeDelegator.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"networkRegistry","type":"address","internalType":"address"},{"name":"vaultFactory","type":"address","internalType":"address"},{"name":"operatorVaultOptInService","type":"address","internalType":"address"},{"name":"operatorNetworkOptInService","type":"address","internalType":"address"},{"name":"delegatorFactory","type":"address","internalType":"address"},{"name":"entityType","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"HOOK_GAS_LIMIT","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"HOOK_RESERVE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"HOOK_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"NETWORK_LIMIT_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"NETWORK_REGISTRY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_NETWORK_OPT_IN_SERVICE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_NETWORK_SHARES_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_VAULT_OPT_IN_SERVICE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"TYPE","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"VAULT_FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"VERSION","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"pure"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"hook","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"maxNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"networkLimit","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"networkLimitAt","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"onSlash","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","internalType":"uint48"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"operatorNetworkShares","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"operatorNetworkSharesAt","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setHook","inputs":[{"name":"hook_","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMaxNetworkLimit","inputs":[{"name":"identifier","type":"uint96","internalType":"uint96"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOperatorNetworkShares","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stake","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"stakeAt","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hints","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"staticDelegateCall","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"totalOperatorNetworkShares","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"totalOperatorNetworkSharesAt","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"vault","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OnSlash","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","indexed":false,"internalType":"uint48"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SetHook","inputs":[{"name":"hook","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SetMaxNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SetNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SetOperatorNetworkShares","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"AlreadySet","inputs":[]},{"type":"error","name":"CheckpointUnorderedInsertion","inputs":[]},{"type":"error","name":"DuplicateRoleHolder","inputs":[]},{"type":"error","name":"ExceedsMaxNetworkLimit","inputs":[]},{"type":"error","name":"InsufficientHookGas","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"MathOverflowedMulDiv","inputs":[]},{"type":"error","name":"MissingRoleHolders","inputs":[]},{"type":"error","name":"NotInitialized","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"NotNetwork","inputs":[]},{"type":"error","name":"NotSlasher","inputs":[]},{"type":"error","name":"NotVault","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ZeroAddressRoleHolder","inputs":[]}],"bytecode":{"object":"0x610140346101a1576001600160401b0390601f612ea238819003918201601f191683019190848311848410176101a5578160c092859260409586528339810103126101a15761004d826101b9565b610059602084016101b9565b906100658385016101b9565b94610072606086016101b9565b9460a0610081608083016101b9565b9101519180831683036101a1577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff82891c1661019057808083160361014c575b50505060805260a05260c05260e0526101009283526101209182525190612cd492836101ce8439608051836107e7015260a05183610f2a015260c0518381816106660152610f63015260e05183818161039f0152611fb20152518281816103e3015281816115fa01526117170152518181816105e40152818161156101526117950152f35b6001600160401b0319909116811790915585519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80806100c7565b875163f92ee8a960e01b8152600490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101a15756fe60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a714610264578063021453481461025f578063103f29071461025a578063128e5d82146102555780631a7a7044146102505780631a80e5001461024b57806323f752d514610246578063248a9ca3146102415780632dd310001461023c5780632f2ff15d1461023757806336568abe146102325780633dfd38731461022d5780633eb22c0f1461022857806342c53e3314610223578063439fab911461021e578063557cab44146102195780635d32a1c9146102145780636679191e1461020f5780637d24bb271461020a5780637f5a7c7b146102055780638b3f10b01461020057806391d14854146101fb5780639f86fd85146101f6578063a217fddf146101f1578063a33bc287146101ec578063bb24fe8a146101e7578063c0cd7c3e146101e2578063c43dc03f146101dd578063d15b740e146101d8578063d547741f146101d3578063e02f6937146101ce578063e49561ee146101c9578063e78eb6ae146101c4578063fbfa77cf146101bf578063fd4d447c146101ba578063ff54740f146101b55763ffa1ad74146101b0575f80fd5b6112e0565b6112c3565b611299565b611272565b611238565b61104d565b611031565b610fe5565b610fbb565b610f92565b610f4e565b610f0b565b610df0565b610dd6565b610d1c565b610cbe565b610c9b565b610c73565b610c3a565b610c00565b610bdd565b610b80565b610a48565b6109cf565b6109a6565b6108ad565b610862565b610816565b6107d2565b610799565b610613565b6105cf565b610589565b6103ce565b61038a565b6102be565b346102ba5760203660031901126102ba5760043563ffffffff60e01b81168091036102ba57602090637965db0b60e01b81149081156102a9575b506040519015158152f35b6301ffc9a760e01b1490505f61029e565b5f80fd5b346102ba576040806003193601126102ba5760043590602435906102e061180a565b825f526002602052805f2054821161037a57825f52600360205281610306825f20611efa565b1461036a5781610365916103557e899d104fc3d8820bd96540612bcc5c448c8837b13b9f7faa43ad0728f0c14f94610346875f52600360205260405f2090565b61034f426123a7565b90611952565b5050519081529081906020820190565b0390a2005b5163a741a04560e01b8152600490fd5b51631eefc06360e31b8152600490fd5b346102ba575f3660031901126102ba576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102ba575f3660031901126102ba576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6001600160a01b038116036102ba57565b6064359065ffffffffffff821682036102ba57565b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b0382111761046757604052565b610438565b606081019081106001600160401b0382111761046757604052565b90601f801991011681019081106001600160401b0382111761046757604052565b6040519060a082018281106001600160401b0382111761046757604052565b604051906104d48261044c565b565b6001600160401b03811161046757601f01601f191660200190565b81601f820112156102ba57803590610508826104d6565b926105166040519485610487565b828452602083830101116102ba57815f926020809301838601378301015290565b9060806003198301126102ba576004359160243561055481610412565b9160443565ffffffffffff811681036102ba5791606435906001600160401b0382116102ba57610586916004016104f1565b90565b346102ba5760206105c76105c261059f36610537565b939190925f526005865260405f209060018060a01b03165f5260205260405f2090565b611a45565b604051908152f35b346102ba575f3660031901126102ba576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102ba5760403660031901126102ba576004356001600160601b03811681036102ba5760243590610643611b28565b6040516302910f8b60e31b81523360048201526020816024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa908115610794575f91610765575b5015610753576001600160601b03166bffffffffffffffffffffffff193360601b161790806106cd835f52600260205260405f2090565b541461074157610726817fc67e7929681aa1bccd63f52b3799bf5805f3009f197db6fdf584b14f7fbf608c9261070b855f52600260205260405f2090565b556107168185611b57565b6040519081529081906020820190565b0390a261073f60015f80516020612c5f83398151915255565b005b60405163a741a04560e01b8152600490fd5b6040516323d53b9760e21b8152600490fd5b610787915060203d60201161078d575b61077f8183610487565b810190611327565b5f610696565b503d610775565b61133f565b346102ba5760203660031901126102ba576004355f525f80516020612c3f8339815191526020526020600160405f200154604051908152f35b346102ba575f3660031901126102ba576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102ba5760403660031901126102ba5761073f60243560043561083982610412565b805f525f80516020612c3f83398151915260205261085d600160405f2001546118bd565b611e32565b346102ba5760403660031901126102ba5760243561087f81610412565b336001600160a01b0382160361089b5761073f90600435611e68565b60405163334bd91960e11b8152600490fd5b346102ba5760203660031901126102ba576004356108ca81610412565b6108d2611b28565b335f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c60205260409020547fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c9060ff161561098857506001546001600160a01b039182169181168214610741576001600160a01b03191681176001557f5bbb1d3ebb6a3ad2a0f17ff35e579a83af60604d1d3c2a4c83c62adecadf666d5f80a260015f80516020612c5f83398151915255005b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b346102ba5760203660031901126102ba576004355f52600360205260206105c760405f20611efa565b346102ba5760403660031901126102ba5760206105c7610a166024356109f481610412565b6004355f526005845260405f209060018060a01b03165f5260205260405f2090565b611efa565b9181601f840112156102ba578235916001600160401b0383116102ba57602083818601950101116102ba57565b346102ba5760203660031901126102ba576001600160401b036004358181116102ba57610a79903690600401610a1b565b5f80516020612c7f833981519152549260ff8460401c1615931680159081610b78575b6001149081610b6e575b159081610b65575b50610b53575f80516020612c7f833981519152805467ffffffffffffffff19166001179055610ae19183610b2f57611f7d565b610ae757005b5f80516020612c7f833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f80516020612c7f833981519152805460ff60401b1916600160401b179055611f7d565b60405163f92ee8a960e01b8152600490fd5b9050155f610aae565b303b159150610aa6565b849150610a9c565b346102ba575f3660031901126102ba576020604051614e208152f35b60606003198201126102ba576004359160243565ffffffffffff811681036102ba5791604435906001600160401b0382116102ba57610586916004016104f1565b346102ba5760206105c7610bf036610b9c565b915f526003845260405f20611a45565b346102ba575f3660031901126102ba5760206040517fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c8152f35b346102ba575f3660031901126102ba5760206040517e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf8152f35b346102ba575f3660031901126102ba576001546040516001600160a01b039091168152602090f35b346102ba5760206105c7610cae36610b9c565b915f526004845260405f20611a45565b346102ba5760403660031901126102ba57602060ff610d10602435610ce281610412565b6004355f525f80516020612c3f833981519152845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b346102ba576040806003193601126102ba57600435610d3a81610412565b602435906001600160401b0382116102ba575f8091610d60610dc4943690600401610a1b565b908187519283928337810184815203915af43d15610dcc57610db63d610d85816104d6565b90610d9286519283610487565b81523d5f602083013e5b845194859315156020850152808401526060830190611376565b03601f198101835282610487565b805190602001fd5b610db66060610d9c565b346102ba575f3660031901126102ba5760206040515f8152f35b346102ba5760603660031901126102ba57602435600435610e1082610412565b60443591610e1c611866565b5f8281526005602090815260408083206001600160a01b03851684529091529020610e4690611efa565b838114610741577f739a5a3ec0ff71e2386d0013deac5f44e0935a98def2e2a5ddf9a709518c829491610eb9610f0692855f52600460205260405f2090610eb388610eae610e93426123a7565b93610ea9610a168c5f52600460205260405f2090565b6113c1565b6113dc565b91611952565b5050610eea8561034683610ed5885f52600560205260405f2090565b9060018060a01b03165f5260205260405f2090565b50506040519485526001600160a01b0316939081906020820190565b0390a3005b346102ba575f3660031901126102ba5760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102ba575f3660031901126102ba576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102ba5760203660031901126102ba576004355f52600460205260206105c760405f20611efa565b346102ba5760203660031901126102ba576004355f526002602052602060405f2054604051908152f35b346102ba5760403660031901126102ba5761073f60243560043561100882610412565b805f525f80516020612c3f83398151915260205261102c600160405f2001546118bd565b611e68565b346102ba5760206105c761104436610537565b929190916114eb565b346102ba5760a03660031901126102ba5760243560043561106d82610412565b60443591611079610423565b90608435906001600160401b0382116102ba5761109b600492369084016104f1565b6110a3611b28565b5f546020906110c8906110bc906001600160a01b031681565b6001600160a01b031690565b60405163b134427160e01b815294859182905afa928315610794575f93611207575b506001600160a01b0392831633036111f5576001546001600160a01b031683811661116a575b50506040805195865265ffffffffffff909316602086015216927f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed91819081015b0390a361073f60015f80516020612c5f83398151915255565b9093604051946111a186611193602082019363724ab0f760e11b8552858c898d6024870161168a565b03601f198101885287610487565b62042e305a106111e3575f611151938192827f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed9951926203d090f15093611110565b604051638072475160e01b8152600490fd5b60405163dabc4ad960e01b8152600490fd5b61122a91935060203d602011611231575b6112228183610487565b810190611675565b915f6110ea565b503d611218565b346102ba575f3660031901126102ba5760206040517f1312a1cf530e56add9be4fd84db9051dcc7635952f09f735f9a29405b55846258152f35b346102ba575f3660031901126102ba575f546040516001600160a01b039091168152602090f35b346102ba5760403660031901126102ba5760206105c76024356112bb81610412565b6004356116e0565b346102ba575f3660031901126102ba5760206040516203d0908152f35b346102ba575f3660031901126102ba57602060405160018152f35b5f9081526005602090815260408083206001600160a01b03909416835292905220610586929190611a45565b908160209103126102ba575180151581036102ba5790565b6040513d5f823e3d90fd5b9061058692915f52600360205260405f20611a45565b9061058692915f52600460205260405f20611a45565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b634e487b7160e01b5f52601160045260245ffd5b5f198101919082116113bc57565b61139a565b919082039182116113bc57565b90600182018092116113bc57565b919082018092116113bc57565b604051906113f68261044c565b60606020838281520152565b81601f820112156102ba57805190611419826104d6565b926114276040519485610487565b828452602083830101116102ba57815f9260208093018386015e8301015290565b906020828203126102ba5781516001600160401b03928382116102ba5701906040828203126102ba576040519261147e8461044c565b82518181116102ba5782611493918501611402565b845260208301519081116102ba576114ab9201611402565b602082015290565b6001600160a01b0391821681529116602082015265ffffffffffff909116604082015260806060820181905261058692910190611376565b926114fb909291928284866121e2565b9290936115066113e9565b93805180611659575b505084159384156115c3575b8415611532575b5050505061152d5790565b505f90565b60208094955061155d910151604051958694859463530e1d4360e01b865260601c90600486016114b3565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610794575f916115a4575b50155f808080611522565b6115bd915060203d60201161078d5761077f8183610487565b5f611599565b5f549094506001600160a01b03166020848651926115f6604051948593849363530e1d4360e01b855289600486016114b3565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610794575f9161163a575b50159361151b565b611653915060203d60201161078d5761077f8183610487565b5f611632565b61166d929550602080918301019101611448565b925f8061150f565b908160209103126102ba575161058681610412565b919360a093610586969565ffffffffffff938552600180871b0316602085015260408401521660608201528160808201520190611376565b81156116cc570490565b634e487b7160e01b5f52601260045260245ffd5b5f546040516308834cb560e21b8082526001600160a01b0385811660048401529283166024830152929392602092909183816044817f000000000000000000000000000000000000000000000000000000000000000086165afa908115610794575f916117ed575b5015918215611769575b5050905061176357610586916122f2565b50505f90565b6040519081526001600160a01b0385166004820152606086901c602482015291508290829060449082907f0000000000000000000000000000000000000000000000000000000000000000165afa918215610794575f926117d0575b505015805f80611752565b6117e69250803d1061078d5761077f8183610487565b5f806117c5565b6118049150843d861161078d5761077f8183610487565b5f611748565b335f9081527f72a65082a5691803ab2b62c9bc729b34205ba1b183d950896526b2fd8714d0c7602052604090207e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf9060ff905b5416156109885750565b335f9081527f8f2dae99798887da307a4daa2c2d11f840b0cb9a6a67822660c531e9ad14dd00602052604090207f1312a1cf530e56add9be4fd84db9051dcc7635952f09f735f9a29405b55846259060ff9061185c565b5f8181525f80516020612c3f83398151915260209081526040808320338452909152902060ff9061185c565b634e487b7160e01b5f52603260045260245ffd5b8054821015611912575f5260205f2001905f90565b6118e9565b90815491600160401b831015610467578261193a9160016104d4950181556118fd565b90919082549060031b91821b915f19901b1916179055565b909291926001820190815480156119e4575b508461196f846123fd565b5094909284549361197f83611efa565b96816119cf575b50156119ac575050505f1981019081116113bc5761193a85916119a8936118fd565b9190565b6119a89492936119c8926001600160d01b039091169190612963565b5050611917565b65ffffffffffff83811691161490505f611986565b600160401b81101561046757806001611a0092018455836118fd565b8154905f199060031b1b191690555f611964565b908160209103126102ba575163ffffffff811681036102ba5790565b90600163ffffffff809316019182116113bc57565b91805115611b1e5780602080611a6093518301019101611a14565b91611a6b838261251c565b92611a7c845165ffffffffffff1690565b9065ffffffffffff8085169216828114611b125782119182611ab2575b5050611aa957610586925061244c565b50506020015190565b909150611abf83546113ae565b63ffffffff831614918215611ad8575b50505f80611a99565b611b0a919250611af3611aed611aff92611a30565b8561251c565b5165ffffffffffff1690565b65ffffffffffff1690565b115f80611acf565b50505050506020015190565b506105869161244c565b5f80516020612c5f8339815191526002815414611b455760029055565b604051633ee5aeb560e01b8152600490fd5b90815f52600360205260405f2081611b6e826123fd565b919390508315611bcc57611b8e916001600160d01b0316906001016118fd565b90549060031b1c5b82611bc2575b5050611ba6575050565b611bbe915f52600360205260405f2061034f426123a7565b5050565b119050815f611b9c565b50505f611b96565b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260409020545f80516020612c3f8339815191529060ff16611763575f808052602091825260408082206001600160a01b038516835290925220805460ff1916600117905533906001600160a01b03165f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b6001600160a01b0381165f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c602052604090207fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c905f80516020612c3f8339815191529060ff905b5416611d4e575f828152602091825260408082206001600160a01b038616835290925220805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b5050505f90565b6001600160a01b0381165f9081527f72a65082a5691803ab2b62c9bc729b34205ba1b183d950896526b2fd8714d0c7602052604090207e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf905f80516020612c3f8339815191529060ff90611cea565b6001600160a01b0381165f9081527f8f2dae99798887da307a4daa2c2d11f840b0cb9a6a67822660c531e9ad14dd00602052604090207f1312a1cf530e56add9be4fd84db9051dcc7635952f09f735f9a29405b5584625905f80516020612c3f8339815191529060ff90611cea565b5f8181525f80516020612c3f833981519152602081815260408084206001600160a01b038716855290915290912060ff90611cea565b5f8181525f80516020612c3f833981519152602081815260408084206001600160a01b03871685529091529091205460ff1615611d4e575f828152602091825260408082206001600160a01b038616835290925220805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b805480611f2957505f5b6001600160d01b03811615611763576001611f1f92016118fd565b90549060031b1c90565b5f199080828101116113bc57825f5260205f2001015460301c611f04565b9190916040818403126102ba578035611f5f81610412565b9260208201356001600160401b0381116102ba5761058692016104f1565b611f8991810190611f47565b6040516302910f8b60e31b81526001600160a01b039283166004820181905291906020816024817f000000000000000000000000000000000000000000000000000000000000000088165afa908115610794575f9161209c575b501561208a5761201e60409161201961206494611ffe612584565b60018060a01b03166001600160601b0360a01b5f5416175f55565b612704565b6020810151600180546001600160a01b0319166001600160a01b0390921691909117905580516001600160a01b031684811661207a575b5001516001600160a01b031690565b90811661206e5750565b61207790611c7f565b50565b61208390611bd4565b505f612055565b6040516362df054560e01b8152600490fd5b6120b5915060203d60201161078d5761077f8183610487565b5f611fe3565b6040519060a082018281106001600160401b038211176104675760405281608060609182815282602082015282604082015282808201520152565b906020828203126102ba5781516001600160401b03928382116102ba57019060a0828203126102ba576121276104a8565b9282518181116102ba578261213d918501611402565b845260208301518181116102ba5782612157918501611402565b602085015260408301518181116102ba5782612174918501611402565b604085015260608301518181116102ba5782612191918501611402565b606085015260808301519081116102ba576121ac9201611402565b608082015290565b908160209103126102ba575190565b60409065ffffffffffff61058694931681528160208201520190611376565b919392936121ee6120bb565b948051806122d6575b505061220860608601518285611360565b918261221a57505050509051905f9190565b61222e6122689183608089015191876112fb565b9160206122476110bc6110bc5f5460018060a01b031690565b8189015190604051808096819463810da75d60e01b835287600484016121c3565b03915afa80156107945761229e95612298935f926122a3575b50612292919260408a01519161134a565b90612864565b90612876565b915190565b61229292506122c99060203d6020116122cf575b6122c18183610487565b8101906121b4565b91612281565b503d6122b7565b6122ea9296506020809183010191016120f6565b935f806121f7565b90612308610a16835f52600460205260405f2090565b9081612315575050505f90565b610a1661232e91610ed5855f52600560205260405f2090565b5f5460405163bd49c35f60e01b815290602090829060049082906001600160a01b03165afa80156107945761058694612298925f9261237e575b50610a16612292915f52600360205260405f2090565b61229291925061239f610a169160203d6020116122cf576122c18183610487565b929150612368565b65ffffffffffff908181116123ba571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b906040516123e68161044c565b915465ffffffffffff8116835260301c6020830152565b80548061240e5750505f905f905f90565b5f199080828101116113bc5761242b925f5260205f2001016123d9565b9065ffffffffffff82511691602060018060d01b0391015116906001929190565b908154905f8291600584116124b6575b612467935084612bdf565b8061248f57505f905b6001600160d01b0382161561176357610586916001611f1f92016118fd565b6124a961249e6124b0926113ae565b835f5260205f200190565b5460301c90565b90612470565b91926124c181612aac565b81039081116113bc5761246793855f5265ffffffffffff808360205f20015416908516105f146124f257509161245c565b9291506124fe906113ce565b9061245c565b604051906125118261044c565b5f6020838281520152565b9061254561253f6125669261252f612504565b50612538612504565b50846118fd565b506123d9565b91600165ffffffffffff845116936020828060d01b039101511691016118fd565b905490604051926125768461044c565b835260031b1c602082015290565b61258c612a7e565b612594612a7e565b60015f80516020612c5f83398151915255565b604051906125b48261046c565b5f6040838281528260208201520152565b81601f820112156102ba578051916020916001600160401b038411610467578360051b90604051946125f985840187610487565b855283808601928201019283116102ba578301905b82821061261c575050505090565b838091835161262a81610412565b81520191019061260e565b906020828203126102ba5781516001600160401b03928382116102ba5701908181039260a084126102ba5760606040519461266f8661046c565b126102ba576040516126808161046c565b835161268b81610412565b8152602084015161269b81610412565b602082015260408401516126ae81610412565b6040820152845260608301518181116102ba57826126cd9185016125c5565b602085015260808301519081116102ba576126e892016125c5565b604082015290565b80518210156119125760209160051b010190565b612720906127106125a7565b5060208082518301019101612635565b8051519091906001600160a01b0316158061284a575b612838579060208101905f5b825180518210156127bc576110bc61275d8361276a936126f0565b516001600160a01b031690565b156127aa5761278c61278861278361275d8487516126f0565b611d55565b1590565b61279857600101612742565b604051635140fefd60e11b8152600490fd5b6040516323cda06760e01b8152600490fd5b506040925050818101905f5b8251805182101561282f576110bc61275d836127e3936126f0565b1561281e576128016127886127fc61275d8487516126f0565b611dc3565b61280d576001016127c8565b8351635140fefd60e11b8152600490fd5b83516323cda06760e01b8152600490fd5b50509150505190565b6040516303501f5960e11b8152600490fd5b506020820151511580612736575060408201515115612736565b9080821015612871575090565b905090565b9091828202915f19848209938380861095039480860395146128fb57848311156128e957829109815f038216809204600280826003021880830282030280830282030280830282030280830282030280830282030280920290030293600183805f03040190848311900302920304170290565b60405163227bc15360e01b8152600490fd5b50509061058692506116c2565b8054600160401b81101561046757612925916001820181556118fd565b61295057815160209092015160301b65ffffffffffff191665ffffffffffff92909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b805492939291908215612a555761298461297f61249e856113ae565b6123d9565b90612995825165ffffffffffff1690565b65ffffffffffff84811691168110612a43576119a89460209488926129c3611aff875165ffffffffffff1690565b03612a0b57506129fd926129d96129e4926113ae565b905f5260205f200190565b9065ffffffffffff82549181199060301b169116179055565b01516001600160d01b031690565b915050612a3e91612a2b612a1d6104c7565b65ffffffffffff9093168352565b6001600160d01b03881682860152612908565b6129fd565b604051632520601d60e01b8152600490fd5b612a799250612a65612a1d6104c7565b6001600160d01b0385166020830152612908565b5f9190565b60ff5f80516020612c7f8339815191525460401c1615612a9a57565b604051631afcd79f60e31b8152600490fd5b801561152d5780612292612b77612b6d612b63612b59612b4f612b45612b3b60016105869a5f908b60801c80612bd3575b508060401c80612bc6575b508060201c80612bb9575b508060101c80612bac575b508060081c80612b9f575b508060041c80612b92575b508060021c80612b85575b50821c612b7e575b811c1b612b34818b6116c2565b0160011c90565b612b34818a6116c2565b612b3481896116c2565b612b3481886116c2565b612b3481876116c2565b612b3481866116c2565b612b3481856116c2565b80926116c2565b8101612b27565b600291509101905f612b1f565b600491509101905f612b14565b600891509101905f612b09565b601091509101905f612afe565b602091509101905f612af3565b604091509101905f612ae8565b9150506080905f612add565b91905b838210612bef5750505090565b9091928083169080841860011c82018092116113bc57845f5265ffffffffffff808360205f20015416908416105f14612c2c5750925b9190612be2565b939250612c38906113ce565b91612c2556fe02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220b254b860c7c949491b5c7d1363cf98acdb518a309f471651f9f806b7024a05a764736f6c63430008190033","sourceMap":"542:7244:78:-:0;;;;-1:-1:-1;;;;;542:7244:78;;;;;;;;;;-1:-1:-1;;542:7244:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;8837:64:25;542:7244:78;;;;;;;;;7896:76:25;;542:7244:78;;;;7985:34:25;7981:146;;-1:-1:-1;525:17:69;;;542:7244:78;525:17:69;542:7244:78;552:12:69;542:7244:78;2360:34:76;2404:28;;2442:57;;;;2509:61;;;;542:7244:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2404:28:76;542:7244:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7981:146:25;-1:-1:-1;;;;;;542:7244:78;;;;;;;;;;;;;8087:29:25;;542:7244:78;;8087:29:25;7981:146;;;;;7896:76;542:7244:78;;-1:-1:-1;;;7938:23:25;;;;;542:7244:78;-1:-1:-1;542:7244:78;;;;;;-1:-1:-1;542:7244:78;;;;;-1:-1:-1;542:7244:78;;;;-1:-1:-1;;;;;542:7244:78;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a714610264578063021453481461025f578063103f29071461025a578063128e5d82146102555780631a7a7044146102505780631a80e5001461024b57806323f752d514610246578063248a9ca3146102415780632dd310001461023c5780632f2ff15d1461023757806336568abe146102325780633dfd38731461022d5780633eb22c0f1461022857806342c53e3314610223578063439fab911461021e578063557cab44146102195780635d32a1c9146102145780636679191e1461020f5780637d24bb271461020a5780637f5a7c7b146102055780638b3f10b01461020057806391d14854146101fb5780639f86fd85146101f6578063a217fddf146101f1578063a33bc287146101ec578063bb24fe8a146101e7578063c0cd7c3e146101e2578063c43dc03f146101dd578063d15b740e146101d8578063d547741f146101d3578063e02f6937146101ce578063e49561ee146101c9578063e78eb6ae146101c4578063fbfa77cf146101bf578063fd4d447c146101ba578063ff54740f146101b55763ffa1ad74146101b0575f80fd5b6112e0565b6112c3565b611299565b611272565b611238565b61104d565b611031565b610fe5565b610fbb565b610f92565b610f4e565b610f0b565b610df0565b610dd6565b610d1c565b610cbe565b610c9b565b610c73565b610c3a565b610c00565b610bdd565b610b80565b610a48565b6109cf565b6109a6565b6108ad565b610862565b610816565b6107d2565b610799565b610613565b6105cf565b610589565b6103ce565b61038a565b6102be565b346102ba5760203660031901126102ba5760043563ffffffff60e01b81168091036102ba57602090637965db0b60e01b81149081156102a9575b506040519015158152f35b6301ffc9a760e01b1490505f61029e565b5f80fd5b346102ba576040806003193601126102ba5760043590602435906102e061180a565b825f526002602052805f2054821161037a57825f52600360205281610306825f20611efa565b1461036a5781610365916103557e899d104fc3d8820bd96540612bcc5c448c8837b13b9f7faa43ad0728f0c14f94610346875f52600360205260405f2090565b61034f426123a7565b90611952565b5050519081529081906020820190565b0390a2005b5163a741a04560e01b8152600490fd5b51631eefc06360e31b8152600490fd5b346102ba575f3660031901126102ba576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102ba575f3660031901126102ba576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6001600160a01b038116036102ba57565b6064359065ffffffffffff821682036102ba57565b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b0382111761046757604052565b610438565b606081019081106001600160401b0382111761046757604052565b90601f801991011681019081106001600160401b0382111761046757604052565b6040519060a082018281106001600160401b0382111761046757604052565b604051906104d48261044c565b565b6001600160401b03811161046757601f01601f191660200190565b81601f820112156102ba57803590610508826104d6565b926105166040519485610487565b828452602083830101116102ba57815f926020809301838601378301015290565b9060806003198301126102ba576004359160243561055481610412565b9160443565ffffffffffff811681036102ba5791606435906001600160401b0382116102ba57610586916004016104f1565b90565b346102ba5760206105c76105c261059f36610537565b939190925f526005865260405f209060018060a01b03165f5260205260405f2090565b611a45565b604051908152f35b346102ba575f3660031901126102ba576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102ba5760403660031901126102ba576004356001600160601b03811681036102ba5760243590610643611b28565b6040516302910f8b60e31b81523360048201526020816024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa908115610794575f91610765575b5015610753576001600160601b03166bffffffffffffffffffffffff193360601b161790806106cd835f52600260205260405f2090565b541461074157610726817fc67e7929681aa1bccd63f52b3799bf5805f3009f197db6fdf584b14f7fbf608c9261070b855f52600260205260405f2090565b556107168185611b57565b6040519081529081906020820190565b0390a261073f60015f80516020612c5f83398151915255565b005b60405163a741a04560e01b8152600490fd5b6040516323d53b9760e21b8152600490fd5b610787915060203d60201161078d575b61077f8183610487565b810190611327565b5f610696565b503d610775565b61133f565b346102ba5760203660031901126102ba576004355f525f80516020612c3f8339815191526020526020600160405f200154604051908152f35b346102ba575f3660031901126102ba576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102ba5760403660031901126102ba5761073f60243560043561083982610412565b805f525f80516020612c3f83398151915260205261085d600160405f2001546118bd565b611e32565b346102ba5760403660031901126102ba5760243561087f81610412565b336001600160a01b0382160361089b5761073f90600435611e68565b60405163334bd91960e11b8152600490fd5b346102ba5760203660031901126102ba576004356108ca81610412565b6108d2611b28565b335f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c60205260409020547fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c9060ff161561098857506001546001600160a01b039182169181168214610741576001600160a01b03191681176001557f5bbb1d3ebb6a3ad2a0f17ff35e579a83af60604d1d3c2a4c83c62adecadf666d5f80a260015f80516020612c5f83398151915255005b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b346102ba5760203660031901126102ba576004355f52600360205260206105c760405f20611efa565b346102ba5760403660031901126102ba5760206105c7610a166024356109f481610412565b6004355f526005845260405f209060018060a01b03165f5260205260405f2090565b611efa565b9181601f840112156102ba578235916001600160401b0383116102ba57602083818601950101116102ba57565b346102ba5760203660031901126102ba576001600160401b036004358181116102ba57610a79903690600401610a1b565b5f80516020612c7f833981519152549260ff8460401c1615931680159081610b78575b6001149081610b6e575b159081610b65575b50610b53575f80516020612c7f833981519152805467ffffffffffffffff19166001179055610ae19183610b2f57611f7d565b610ae757005b5f80516020612c7f833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f80516020612c7f833981519152805460ff60401b1916600160401b179055611f7d565b60405163f92ee8a960e01b8152600490fd5b9050155f610aae565b303b159150610aa6565b849150610a9c565b346102ba575f3660031901126102ba576020604051614e208152f35b60606003198201126102ba576004359160243565ffffffffffff811681036102ba5791604435906001600160401b0382116102ba57610586916004016104f1565b346102ba5760206105c7610bf036610b9c565b915f526003845260405f20611a45565b346102ba575f3660031901126102ba5760206040517fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c8152f35b346102ba575f3660031901126102ba5760206040517e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf8152f35b346102ba575f3660031901126102ba576001546040516001600160a01b039091168152602090f35b346102ba5760206105c7610cae36610b9c565b915f526004845260405f20611a45565b346102ba5760403660031901126102ba57602060ff610d10602435610ce281610412565b6004355f525f80516020612c3f833981519152845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b346102ba576040806003193601126102ba57600435610d3a81610412565b602435906001600160401b0382116102ba575f8091610d60610dc4943690600401610a1b565b908187519283928337810184815203915af43d15610dcc57610db63d610d85816104d6565b90610d9286519283610487565b81523d5f602083013e5b845194859315156020850152808401526060830190611376565b03601f198101835282610487565b805190602001fd5b610db66060610d9c565b346102ba575f3660031901126102ba5760206040515f8152f35b346102ba5760603660031901126102ba57602435600435610e1082610412565b60443591610e1c611866565b5f8281526005602090815260408083206001600160a01b03851684529091529020610e4690611efa565b838114610741577f739a5a3ec0ff71e2386d0013deac5f44e0935a98def2e2a5ddf9a709518c829491610eb9610f0692855f52600460205260405f2090610eb388610eae610e93426123a7565b93610ea9610a168c5f52600460205260405f2090565b6113c1565b6113dc565b91611952565b5050610eea8561034683610ed5885f52600560205260405f2090565b9060018060a01b03165f5260205260405f2090565b50506040519485526001600160a01b0316939081906020820190565b0390a3005b346102ba575f3660031901126102ba5760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102ba575f3660031901126102ba576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102ba5760203660031901126102ba576004355f52600460205260206105c760405f20611efa565b346102ba5760203660031901126102ba576004355f526002602052602060405f2054604051908152f35b346102ba5760403660031901126102ba5761073f60243560043561100882610412565b805f525f80516020612c3f83398151915260205261102c600160405f2001546118bd565b611e68565b346102ba5760206105c761104436610537565b929190916114eb565b346102ba5760a03660031901126102ba5760243560043561106d82610412565b60443591611079610423565b90608435906001600160401b0382116102ba5761109b600492369084016104f1565b6110a3611b28565b5f546020906110c8906110bc906001600160a01b031681565b6001600160a01b031690565b60405163b134427160e01b815294859182905afa928315610794575f93611207575b506001600160a01b0392831633036111f5576001546001600160a01b031683811661116a575b50506040805195865265ffffffffffff909316602086015216927f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed91819081015b0390a361073f60015f80516020612c5f83398151915255565b9093604051946111a186611193602082019363724ab0f760e11b8552858c898d6024870161168a565b03601f198101885287610487565b62042e305a106111e3575f611151938192827f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed9951926203d090f15093611110565b604051638072475160e01b8152600490fd5b60405163dabc4ad960e01b8152600490fd5b61122a91935060203d602011611231575b6112228183610487565b810190611675565b915f6110ea565b503d611218565b346102ba575f3660031901126102ba5760206040517f1312a1cf530e56add9be4fd84db9051dcc7635952f09f735f9a29405b55846258152f35b346102ba575f3660031901126102ba575f546040516001600160a01b039091168152602090f35b346102ba5760403660031901126102ba5760206105c76024356112bb81610412565b6004356116e0565b346102ba575f3660031901126102ba5760206040516203d0908152f35b346102ba575f3660031901126102ba57602060405160018152f35b5f9081526005602090815260408083206001600160a01b03909416835292905220610586929190611a45565b908160209103126102ba575180151581036102ba5790565b6040513d5f823e3d90fd5b9061058692915f52600360205260405f20611a45565b9061058692915f52600460205260405f20611a45565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b634e487b7160e01b5f52601160045260245ffd5b5f198101919082116113bc57565b61139a565b919082039182116113bc57565b90600182018092116113bc57565b919082018092116113bc57565b604051906113f68261044c565b60606020838281520152565b81601f820112156102ba57805190611419826104d6565b926114276040519485610487565b828452602083830101116102ba57815f9260208093018386015e8301015290565b906020828203126102ba5781516001600160401b03928382116102ba5701906040828203126102ba576040519261147e8461044c565b82518181116102ba5782611493918501611402565b845260208301519081116102ba576114ab9201611402565b602082015290565b6001600160a01b0391821681529116602082015265ffffffffffff909116604082015260806060820181905261058692910190611376565b926114fb909291928284866121e2565b9290936115066113e9565b93805180611659575b505084159384156115c3575b8415611532575b5050505061152d5790565b505f90565b60208094955061155d910151604051958694859463530e1d4360e01b865260601c90600486016114b3565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610794575f916115a4575b50155f808080611522565b6115bd915060203d60201161078d5761077f8183610487565b5f611599565b5f549094506001600160a01b03166020848651926115f6604051948593849363530e1d4360e01b855289600486016114b3565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610794575f9161163a575b50159361151b565b611653915060203d60201161078d5761077f8183610487565b5f611632565b61166d929550602080918301019101611448565b925f8061150f565b908160209103126102ba575161058681610412565b919360a093610586969565ffffffffffff938552600180871b0316602085015260408401521660608201528160808201520190611376565b81156116cc570490565b634e487b7160e01b5f52601260045260245ffd5b5f546040516308834cb560e21b8082526001600160a01b0385811660048401529283166024830152929392602092909183816044817f000000000000000000000000000000000000000000000000000000000000000086165afa908115610794575f916117ed575b5015918215611769575b5050905061176357610586916122f2565b50505f90565b6040519081526001600160a01b0385166004820152606086901c602482015291508290829060449082907f0000000000000000000000000000000000000000000000000000000000000000165afa918215610794575f926117d0575b505015805f80611752565b6117e69250803d1061078d5761077f8183610487565b5f806117c5565b6118049150843d861161078d5761077f8183610487565b5f611748565b335f9081527f72a65082a5691803ab2b62c9bc729b34205ba1b183d950896526b2fd8714d0c7602052604090207e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf9060ff905b5416156109885750565b335f9081527f8f2dae99798887da307a4daa2c2d11f840b0cb9a6a67822660c531e9ad14dd00602052604090207f1312a1cf530e56add9be4fd84db9051dcc7635952f09f735f9a29405b55846259060ff9061185c565b5f8181525f80516020612c3f83398151915260209081526040808320338452909152902060ff9061185c565b634e487b7160e01b5f52603260045260245ffd5b8054821015611912575f5260205f2001905f90565b6118e9565b90815491600160401b831015610467578261193a9160016104d4950181556118fd565b90919082549060031b91821b915f19901b1916179055565b909291926001820190815480156119e4575b508461196f846123fd565b5094909284549361197f83611efa565b96816119cf575b50156119ac575050505f1981019081116113bc5761193a85916119a8936118fd565b9190565b6119a89492936119c8926001600160d01b039091169190612963565b5050611917565b65ffffffffffff83811691161490505f611986565b600160401b81101561046757806001611a0092018455836118fd565b8154905f199060031b1b191690555f611964565b908160209103126102ba575163ffffffff811681036102ba5790565b90600163ffffffff809316019182116113bc57565b91805115611b1e5780602080611a6093518301019101611a14565b91611a6b838261251c565b92611a7c845165ffffffffffff1690565b9065ffffffffffff8085169216828114611b125782119182611ab2575b5050611aa957610586925061244c565b50506020015190565b909150611abf83546113ae565b63ffffffff831614918215611ad8575b50505f80611a99565b611b0a919250611af3611aed611aff92611a30565b8561251c565b5165ffffffffffff1690565b65ffffffffffff1690565b115f80611acf565b50505050506020015190565b506105869161244c565b5f80516020612c5f8339815191526002815414611b455760029055565b604051633ee5aeb560e01b8152600490fd5b90815f52600360205260405f2081611b6e826123fd565b919390508315611bcc57611b8e916001600160d01b0316906001016118fd565b90549060031b1c5b82611bc2575b5050611ba6575050565b611bbe915f52600360205260405f2061034f426123a7565b5050565b119050815f611b9c565b50505f611b96565b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260409020545f80516020612c3f8339815191529060ff16611763575f808052602091825260408082206001600160a01b038516835290925220805460ff1916600117905533906001600160a01b03165f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b6001600160a01b0381165f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c602052604090207fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c905f80516020612c3f8339815191529060ff905b5416611d4e575f828152602091825260408082206001600160a01b038616835290925220805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b5050505f90565b6001600160a01b0381165f9081527f72a65082a5691803ab2b62c9bc729b34205ba1b183d950896526b2fd8714d0c7602052604090207e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf905f80516020612c3f8339815191529060ff90611cea565b6001600160a01b0381165f9081527f8f2dae99798887da307a4daa2c2d11f840b0cb9a6a67822660c531e9ad14dd00602052604090207f1312a1cf530e56add9be4fd84db9051dcc7635952f09f735f9a29405b5584625905f80516020612c3f8339815191529060ff90611cea565b5f8181525f80516020612c3f833981519152602081815260408084206001600160a01b038716855290915290912060ff90611cea565b5f8181525f80516020612c3f833981519152602081815260408084206001600160a01b03871685529091529091205460ff1615611d4e575f828152602091825260408082206001600160a01b038616835290925220805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b805480611f2957505f5b6001600160d01b03811615611763576001611f1f92016118fd565b90549060031b1c90565b5f199080828101116113bc57825f5260205f2001015460301c611f04565b9190916040818403126102ba578035611f5f81610412565b9260208201356001600160401b0381116102ba5761058692016104f1565b611f8991810190611f47565b6040516302910f8b60e31b81526001600160a01b039283166004820181905291906020816024817f000000000000000000000000000000000000000000000000000000000000000088165afa908115610794575f9161209c575b501561208a5761201e60409161201961206494611ffe612584565b60018060a01b03166001600160601b0360a01b5f5416175f55565b612704565b6020810151600180546001600160a01b0319166001600160a01b0390921691909117905580516001600160a01b031684811661207a575b5001516001600160a01b031690565b90811661206e5750565b61207790611c7f565b50565b61208390611bd4565b505f612055565b6040516362df054560e01b8152600490fd5b6120b5915060203d60201161078d5761077f8183610487565b5f611fe3565b6040519060a082018281106001600160401b038211176104675760405281608060609182815282602082015282604082015282808201520152565b906020828203126102ba5781516001600160401b03928382116102ba57019060a0828203126102ba576121276104a8565b9282518181116102ba578261213d918501611402565b845260208301518181116102ba5782612157918501611402565b602085015260408301518181116102ba5782612174918501611402565b604085015260608301518181116102ba5782612191918501611402565b606085015260808301519081116102ba576121ac9201611402565b608082015290565b908160209103126102ba575190565b60409065ffffffffffff61058694931681528160208201520190611376565b919392936121ee6120bb565b948051806122d6575b505061220860608601518285611360565b918261221a57505050509051905f9190565b61222e6122689183608089015191876112fb565b9160206122476110bc6110bc5f5460018060a01b031690565b8189015190604051808096819463810da75d60e01b835287600484016121c3565b03915afa80156107945761229e95612298935f926122a3575b50612292919260408a01519161134a565b90612864565b90612876565b915190565b61229292506122c99060203d6020116122cf575b6122c18183610487565b8101906121b4565b91612281565b503d6122b7565b6122ea9296506020809183010191016120f6565b935f806121f7565b90612308610a16835f52600460205260405f2090565b9081612315575050505f90565b610a1661232e91610ed5855f52600560205260405f2090565b5f5460405163bd49c35f60e01b815290602090829060049082906001600160a01b03165afa80156107945761058694612298925f9261237e575b50610a16612292915f52600360205260405f2090565b61229291925061239f610a169160203d6020116122cf576122c18183610487565b929150612368565b65ffffffffffff908181116123ba571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b906040516123e68161044c565b915465ffffffffffff8116835260301c6020830152565b80548061240e5750505f905f905f90565b5f199080828101116113bc5761242b925f5260205f2001016123d9565b9065ffffffffffff82511691602060018060d01b0391015116906001929190565b908154905f8291600584116124b6575b612467935084612bdf565b8061248f57505f905b6001600160d01b0382161561176357610586916001611f1f92016118fd565b6124a961249e6124b0926113ae565b835f5260205f200190565b5460301c90565b90612470565b91926124c181612aac565b81039081116113bc5761246793855f5265ffffffffffff808360205f20015416908516105f146124f257509161245c565b9291506124fe906113ce565b9061245c565b604051906125118261044c565b5f6020838281520152565b9061254561253f6125669261252f612504565b50612538612504565b50846118fd565b506123d9565b91600165ffffffffffff845116936020828060d01b039101511691016118fd565b905490604051926125768461044c565b835260031b1c602082015290565b61258c612a7e565b612594612a7e565b60015f80516020612c5f83398151915255565b604051906125b48261046c565b5f6040838281528260208201520152565b81601f820112156102ba578051916020916001600160401b038411610467578360051b90604051946125f985840187610487565b855283808601928201019283116102ba578301905b82821061261c575050505090565b838091835161262a81610412565b81520191019061260e565b906020828203126102ba5781516001600160401b03928382116102ba5701908181039260a084126102ba5760606040519461266f8661046c565b126102ba576040516126808161046c565b835161268b81610412565b8152602084015161269b81610412565b602082015260408401516126ae81610412565b6040820152845260608301518181116102ba57826126cd9185016125c5565b602085015260808301519081116102ba576126e892016125c5565b604082015290565b80518210156119125760209160051b010190565b612720906127106125a7565b5060208082518301019101612635565b8051519091906001600160a01b0316158061284a575b612838579060208101905f5b825180518210156127bc576110bc61275d8361276a936126f0565b516001600160a01b031690565b156127aa5761278c61278861278361275d8487516126f0565b611d55565b1590565b61279857600101612742565b604051635140fefd60e11b8152600490fd5b6040516323cda06760e01b8152600490fd5b506040925050818101905f5b8251805182101561282f576110bc61275d836127e3936126f0565b1561281e576128016127886127fc61275d8487516126f0565b611dc3565b61280d576001016127c8565b8351635140fefd60e11b8152600490fd5b83516323cda06760e01b8152600490fd5b50509150505190565b6040516303501f5960e11b8152600490fd5b506020820151511580612736575060408201515115612736565b9080821015612871575090565b905090565b9091828202915f19848209938380861095039480860395146128fb57848311156128e957829109815f038216809204600280826003021880830282030280830282030280830282030280830282030280830282030280920290030293600183805f03040190848311900302920304170290565b60405163227bc15360e01b8152600490fd5b50509061058692506116c2565b8054600160401b81101561046757612925916001820181556118fd565b61295057815160209092015160301b65ffffffffffff191665ffffffffffff92909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b805492939291908215612a555761298461297f61249e856113ae565b6123d9565b90612995825165ffffffffffff1690565b65ffffffffffff84811691168110612a43576119a89460209488926129c3611aff875165ffffffffffff1690565b03612a0b57506129fd926129d96129e4926113ae565b905f5260205f200190565b9065ffffffffffff82549181199060301b169116179055565b01516001600160d01b031690565b915050612a3e91612a2b612a1d6104c7565b65ffffffffffff9093168352565b6001600160d01b03881682860152612908565b6129fd565b604051632520601d60e01b8152600490fd5b612a799250612a65612a1d6104c7565b6001600160d01b0385166020830152612908565b5f9190565b60ff5f80516020612c7f8339815191525460401c1615612a9a57565b604051631afcd79f60e31b8152600490fd5b801561152d5780612292612b77612b6d612b63612b59612b4f612b45612b3b60016105869a5f908b60801c80612bd3575b508060401c80612bc6575b508060201c80612bb9575b508060101c80612bac575b508060081c80612b9f575b508060041c80612b92575b508060021c80612b85575b50821c612b7e575b811c1b612b34818b6116c2565b0160011c90565b612b34818a6116c2565b612b3481896116c2565b612b3481886116c2565b612b3481876116c2565b612b3481866116c2565b612b3481856116c2565b80926116c2565b8101612b27565b600291509101905f612b1f565b600491509101905f612b14565b600891509101905f612b09565b601091509101905f612afe565b602091509101905f612af3565b604091509101905f612ae8565b9150506080905f612add565b91905b838210612bef5750505090565b9091928083169080841860011c82018092116113bc57845f5265ffffffffffff808360205f20015416908416105f14612c2c5750925b9190612be2565b939250612c38906113ce565b91612c2556fe02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220b254b860c7c949491b5c7d1363cf98acdb518a309f471651f9f806b7024a05a764736f6c63430008190033","sourceMap":"542:7244:78:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;-1:-1:-1;;542:7244:78;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3551:47:23;;;:87;;;;542:7244:78;;;;;;;;;;3551:87:23;-1:-1:-1;;;1133:40:29;;-1:-1:-1;3551:87:23;;;542:7244:78;-1:-1:-1;542:7244:78;;;;;;;;;;;;;;;;;;;;3202:4:23;;;:::i;:::-;542:7244:78;-1:-1:-1;542:7244:78;3610:15;542:7244;;;-1:-1:-1;542:7244:78;;3601:36;;3597:98;;542:7244;-1:-1:-1;542:7244:78;2233:13;542:7244;;;2233:34;542:7244;-1:-1:-1;542:7244:78;2233:34;:::i;:::-;3709;3705:84;;3799:25;3871:35;3799:25;:56;3871:35;3799:25;;;542:7244;;2233:13;542:7244;;;;;;;3799:25;819:34:62;837:15;819:34;:::i;:::-;3799:56:78;;:::i;:::-;-1:-1:-1;;542:7244:78;;;;;;;;;;;;3871:35;;;;542:7244;3705:84;542:7244;-1:-1:-1;;;3766:12:78;;542:7244;;3766:12;3597:98;542:7244;-1:-1:-1;;;3660:24:78;;542:7244;;3660:24;542:7244;;;;;;-1:-1:-1;;542:7244:78;;;;;;1537:38:76;-1:-1:-1;;;;;542:7244:78;;;;;;;;;;;;-1:-1:-1;;542:7244:78;;;;;;1632:54:76;-1:-1:-1;;;;;542:7244:78;;;;;;;-1:-1:-1;;;;;542:7244:78;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;542:7244:78;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;-1:-1:-1;;;;;542:7244:78;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;542:7244:78;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;542:7244:78;;;;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;:::-;-1:-1:-1;;;;;542:7244:78;;;;;;-1:-1:-1;;542:7244:78;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;542:7244:78;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;542:7244:78;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;;;;542:7244:78;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;3090:79;:44;542:7244;;;:::i;:::-;;;;;-1:-1:-1;542:7244:78;3090:22;542:7244;;;-1:-1:-1;542:7244:78;;;;;;;;;;;;;;;;;3090:44;:79;:::i;:::-;542:7244;;;;;;;;;;;;-1:-1:-1;;542:7244:78;;;;;;1743:56:76;-1:-1:-1;;;;;542:7244:78;;;;;;;;;;;;-1:-1:-1;;542:7244:78;;;;;;-1:-1:-1;;;;;542:7244:78;;;;;;;;3217:103:28;;;:::i;:::-;542:7244:78;;-1:-1:-1;;;4285:48:76;;4322:10;542:7244:78;4285:48:76;;542:7244:78;;;;;-1:-1:-1;;;;;4295:16:76;542:7244:78;4285:48:76;;;;;;;-1:-1:-1;4285:48:76;;;542:7244:78;4284:49:76;;4280:99;;-1:-1:-1;;;;;542:7244:78;-1:-1:-1;;4322:10:76;297:2:88;542:7244:78;;267:46:88;4459:27:76;;;;542:7244:78;;4459:15:76;542:7244:78;;;;;;;4459:27:76;542:7244:78;4459:37:76;4455:87;;4654:38;4552:27;4654:38;4552:27;;;542:7244:78;;4459:15:76;542:7244:78;;;;;;;4552:27:76;542:7244:78;4631:6:76;;;;:::i;:::-;542:7244:78;;;;;;;;;;;;;4654:38:76;;;;3282:1:28;1805;-1:-1:-1;;;;;;;;;;;542:7244:78;3716:283:28;3282:1;542:7244:78;4455:87:76;542:7244:78;;-1:-1:-1;;;4519:12:76;;542:7244:78;;4519:12:76;4280:99;542:7244:78;;-1:-1:-1;;;4356:12:76;;542:7244:78;;4356:12:76;4285:48;;;;542:7244:78;4285:48:76;542:7244:78;4285:48:76;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;542:7244:78:-;;;;;;-1:-1:-1;;542:7244:78;;;;;;-1:-1:-1;542:7244:78;-1:-1:-1;;;;;;;;;;;542:7244:78;;;4919:24:23;542:7244:78;-1:-1:-1;542:7244:78;4919:24:23;542:7244:78;;;;;;;;;;;;;-1:-1:-1;;542:7244:78;;;;;;322:32:69;-1:-1:-1;;;;;542:7244:78;;;;;;;;;;;;-1:-1:-1;;542:7244:78;;;;5350:25:23;542:7244:78;;;;;;;:::i;:::-;;-1:-1:-1;542:7244:78;-1:-1:-1;;;;;;;;;;;542:7244:78;;3202:4:23;4919:24;542:7244:78;-1:-1:-1;542:7244:78;4919:24:23;542:7244:78;3202:4:23;:::i;:::-;5350:25;:::i;542:7244:78:-;;;;;;-1:-1:-1;;542:7244:78;;;;;;;;;:::i;:::-;966:10:27;-1:-1:-1;;;;;542:7244:78;;6441:34:23;6437:102;;6549:37;542:7244:78;;;6549:37:23;:::i;6437:102::-;542:7244:78;;-1:-1:-1;;;6498:30:23;;542:7244:78;;6498:30:23;542:7244:78;;;;;;-1:-1:-1;;542:7244:78;;;;;;;;;:::i;:::-;3217:103:28;;:::i;:::-;966:10:27;-1:-1:-1;542:7244:78;;;;;;;;;;1356:26:76;;542:7244:78;;4468:23:23;4464:108;;-1:-1:-1;4861:4:76;542:7244:78;-1:-1:-1;;;;;542:7244:78;;;;;;4861:13:76;;4857:63;;-1:-1:-1;;;;;;542:7244:78;;;4861:4:76;542:7244:78;4958:14:76;-1:-1:-1;;4958:14:76;4861:4;-1:-1:-1;;;;;;;;;;;542:7244:78;;4464:108:23;542:7244:78;;;;4514:47:23;;;;;;966:10:27;542:7244:78;4514:47:23;;542:7244:78;;;;;4514:47:23;542:7244:78;;;;;;-1:-1:-1;;542:7244:78;;;;;;-1:-1:-1;542:7244:78;2233:13;542:7244;;;2233:34;542:7244;-1:-1:-1;542:7244:78;2233:34;:::i;542:7244::-;;;;;;-1:-1:-1;;542:7244:78;;;;;3358:53;:44;542:7244;;;;;:::i;:::-;;;-1:-1:-1;542:7244:78;3358:22;542:7244;;;-1:-1:-1;542:7244:78;;;;;;;;;;;;;;;;;3358:44;:53;:::i;542:7244::-;;;;;;;;;;;;;-1:-1:-1;;;;;542:7244:78;;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;542:7244:78;;;;-1:-1:-1;;;;;542:7244:78;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;542:7244:78;;;;;;;4301:16:25;542:7244:78;;4726:16:25;;:34;;;;542:7244:78;4805:1:25;4790:16;:50;;;;542:7244:78;4855:13:25;:30;;;;542:7244:78;4851:91:25;;;-1:-1:-1;;;;;;;;;;;542:7244:78;;-1:-1:-1;;542:7244:78;;;;;718:4:69;;4951:18:25;4979:67;;718:4:69;:::i;:::-;5066:101:25;;542:7244:78;5066:101:25;-1:-1:-1;;;;;;;;;;;542:7244:78;;-1:-1:-1;;;;542:7244:78;;;;;-1:-1:-1;542:7244:78;;5142:14:25;;542:7244:78;;5142:14:25;542:7244:78;4979:67:25;-1:-1:-1;;;;;;;;;;;542:7244:78;;-1:-1:-1;;;;542:7244:78;-1:-1:-1;;;542:7244:78;;;718:4:69;:::i;4851:91:25:-;542:7244:78;;-1:-1:-1;;;4908:23:25;;542:7244:78;;4908:23:25;4855:30;4872:13;;;4855:30;;;4790:50;4818:4;4810:25;:30;;-1:-1:-1;4790:50:25;;4726:34;;;-1:-1:-1;4726:34:25;;542:7244:78;;;;;;-1:-1:-1;;542:7244:78;;;;;;;1253:6:76;542:7244:78;;;;;-1:-1:-1;;542:7244:78;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;542:7244:78;;;;;;;;;:::i;:::-;;;;;1997:60;542:7244;;;:::i;:::-;;-1:-1:-1;542:7244:78;1997:13;542:7244;;;-1:-1:-1;542:7244:78;1997:60;:::i;542:7244::-;;;;;;-1:-1:-1;;542:7244:78;;;;;;;1356:26:76;542:7244:78;;;;;;;;;-1:-1:-1;;542:7244:78;;;;;;;810:35;542:7244;;;;;;;;;-1:-1:-1;;542:7244:78;;;;;;;;-1:-1:-1;;;;;542:7244:78;;;;;;;;;;;;;2512:74;542:7244;;;:::i;:::-;;-1:-1:-1;542:7244:78;;;;;-1:-1:-1;542:7244:78;2512:74;:::i;542:7244::-;;;;;;-1:-1:-1;;542:7244:78;;;;;;3901:31:23;542:7244:78;;;;;:::i;:::-;;;-1:-1:-1;542:7244:78;-1:-1:-1;;;;;;;;;;;542:7244:78;;;-1:-1:-1;542:7244:78;;;;;;;;;;;;;;;;;3901:31:23;542:7244:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;542:7244:78;;;;-1:-1:-1;542:7244:78;;;477:31:75;542:7244:78;;;;;;:::i;:::-;;;;;;;;;;;;;;;416:25:75;;;;542:7244:78;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;542:7244:78;;;;;;;;;;;;;477:31:75;;542:7244:78;;;;;;;;;;:::i;:::-;477:31:75;542:7244:78;;477:31:75;;;;;;:::i;:::-;518:79;;;542:7244:78;518:79:75;;542:7244:78;;;;;;;;;;;-1:-1:-1;;542:7244:78;;;;;;;;;;;;;;;;;-1:-1:-1;;542:7244:78;;;;;;;;;;;:::i;:::-;;;3202:4:23;;;:::i;:::-;-1:-1:-1;542:7244:78;;;3358:22;542:7244;;;;;;;;-1:-1:-1;;;;;542:7244:78;;;;;;;;;3358:53;;;:::i;:::-;4249:32;;;4245:82;;4596:54;542:7244;4337:158;4596:54;542:7244;;-1:-1:-1;542:7244:78;;;;;-1:-1:-1;542:7244:78;837:15:62;4413:72:78;837:15:62;4413:63:78;819:34:62;837:15;819:34;:::i;:::-;2776:39:78;:48;:39;;542:7244;;;;;;;;;;2776:48;4413:63;:::i;:::-;:72;:::i;:::-;4337:158;;:::i;:::-;4505:34;;:75;:34;:44;:34;;;542:7244;;3358:22;542:7244;;;;;;;4505:34;542:7244;;;;;;;;;;;;;;;;4505:75;-1:-1:-1;;542:7244:78;;;;;-1:-1:-1;;;;;542:7244:78;;;;;;;;;;4596:54;;;;542:7244;;;;;;;-1:-1:-1;;542:7244:78;;;;;;;-1:-1:-1;;;;;404:28:69;542:7244:78;;;;;;;;;;-1:-1:-1;;542:7244:78;;;;;;1439:41:76;-1:-1:-1;;;;;542:7244:78;;;;;;;;;;;;-1:-1:-1;;542:7244:78;;;;;;-1:-1:-1;542:7244:78;;;;;2776:48;542:7244;-1:-1:-1;542:7244:78;2776:48;:::i;542:7244::-;;;;;;-1:-1:-1;;542:7244:78;;;;;;-1:-1:-1;542:7244:78;2009:67:76;542:7244:78;;;;-1:-1:-1;542:7244:78;;;;;;;;;;;;;;-1:-1:-1;;542:7244:78;;;;5767:26:23;542:7244:78;;;;;;;:::i;:::-;;-1:-1:-1;542:7244:78;-1:-1:-1;;;;;;;;;;;542:7244:78;;3202:4:23;4919:24;542:7244:78;-1:-1:-1;542:7244:78;4919:24:23;542:7244:78;3202:4:23;:::i;:::-;5767:26;:::i;542:7244:78:-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;-1:-1:-1;;542:7244:78;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;542:7244:78;;;;;;;;;;;;:::i;:::-;3217:103:28;;:::i;:::-;-1:-1:-1;542:7244:78;;;5246:21:76;;:13;;-1:-1:-1;;;;;542:7244:78;5246:13:76;542:7244:78;;-1:-1:-1;;;;;542:7244:78;;;5246:21:76;542:7244:78;;-1:-1:-1;;;5246:23:76;;542:7244:78;;;;;5246:23:76;;;;;;;-1:-1:-1;5246:23:76;;;542:7244:78;-1:-1:-1;;;;;;542:7244:78;;;5232:10:76;:37;5228:87;;5341:4;542:7244:78;-1:-1:-1;;;;;542:7244:78;;;;5355:469:76;;542:7244:78;-1:-1:-1;;542:7244:78;;;;;;;;;;;;;;;;5839:55:76;;542:7244:78;;;;5839:55:76;;;;3282:1:28;1805;-1:-1:-1;;;;;;;;;;;542:7244:78;3716:283:28;5355:469:76;542:7244:78;;;;5435:94:76;;;;542:7244:78;5435:94:76;;;;;;;;;;;;542:7244:78;5435:94:76;;;:::i;:::-;;542:7244:78;;5435:94:76;;;;;;:::i;:::-;542:7244:78;5548:9:76;:51;5544:118;;-1:-1:-1;5839:55:76;5676:138;;;;5839:55;5676:138;;;1150:7;5676:138;;5355:469;;;5544:118;542:7244:78;;-1:-1:-1;;;5626:21:76;;542:7244:78;;5626:21:76;5228:87;542:7244:78;;-1:-1:-1;;;5292:12:76;;542:7244:78;;5292:12:76;5246:23;;;;;542:7244:78;5246:23:76;542:7244:78;5246:23:76;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;542:7244:78;;;;;;-1:-1:-1;;542:7244:78;;;;;;;971:45;542:7244;;;;;;;;;-1:-1:-1;;542:7244:78;;;;;;;;-1:-1:-1;;;;;542:7244:78;;;;;;;;;;;;;;-1:-1:-1;;542:7244:78;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;-1:-1:-1;;542:7244:78;;;;;;;1150:7:76;542:7244:78;;;;;;;;;-1:-1:-1;;542:7244:78;;;;;;;2700:1:76;542:7244:78;;;2897:279;-1:-1:-1;542:7244:78;;;3090:22;542:7244;;;;;;;;-1:-1:-1;;;;;542:7244:78;;;;;;;;;3090:79;;2897:279;;3090:79;:::i;542:7244::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;1869:195;;1997:60;1869:195;;-1:-1:-1;542:7244:78;1997:13;542:7244;;;-1:-1:-1;542:7244:78;1997:60;:::i;2340:253::-;;2512:74;2340:253;;-1:-1:-1;542:7244:78;2512:27;542:7244;;;-1:-1:-1;542:7244:78;2512:74;:::i;542:7244::-;;;;;;;;;;;;;;;;;-1:-1:-1;542:7244:78;;;;;;;;-1:-1:-1;;542:7244:78;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;542:7244:78;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::o;:::-;;9856:1:60;542:7244:78;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;542:7244:78;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;542:7244:78;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;-1:-1:-1;;;;;542:7244:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2764:920:76:-;;2978:48;2764:920;;;;2978:48;;;;:::i;:::-;3036:36;;;542:7244:78;;:::i;:::-;;;;3086:20:76;3082:107;;2764:920;3216:11;;;;:193;;;;;2764:920;3216:394;;;;2764:920;3199:455;;;;;;2764:920;:::o;3199:455::-;3635:8;-1:-1:-1;3635:8:76;:::o;3216:394::-;3553:39;;;;;3430:180;3553:39;;;542:7244:78;;;;;;;;;;3430:180:76;;467:2:88;542:7244:78;3430:180:76;;;;;:::i;:::-;;542:7244:78;3444:31:76;-1:-1:-1;;;;;542:7244:78;3430:180:76;;;;;;;-1:-1:-1;3430:180:76;;;3216:394;3429:181;;3216:394;;;;;;3430:180;;;;3553:39;3430:180;3553:39;3430:180;;;;;;;:::i;:::-;;;;3216:193;-1:-1:-1;542:7244:78;;;-1:-1:-1;;;;;;542:7244:78;3248:161:76;3354:37;;;542:7244:78;3248:161:76;542:7244:78;;;;;;;;;;3248:161:76;;;;;;;:::i;:::-;;542:7244:78;3262:29:76;-1:-1:-1;;;;;542:7244:78;3248:161:76;;;;;;;-1:-1:-1;3248:161:76;;;3216:193;3247:162;;3216:193;;;3248:161;;;;;;;;;;;;;;:::i;:::-;;;;3082:107;3139:39;;;;;;;;;;;;;:::i;:::-;3082:107;;;;;542:7244:78;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;3740:389:76;3918:5;542:7244:78;;;-1:-1:-1;;;3853:71:76;;;-1:-1:-1;;;;;542:7244:78;;;3853:71:76;;;542:7244:78;;;;;;;;3740:389:76;;542:7244:78;3853:71:76;;542:7244:78;;3853:71:76;542:7244:78;;;3867:29:76;542:7244:78;;3853:71:76;;;;;;;3918:5;3853:71;;;3740:389;3852:72;;542:7244:78;;;3852:181:76;;3740:389;3835:242;;;;;;4094:28;;;:::i;3835:242::-;4058:8;;3918:5;4058:8;:::o;3852:181::-;542:7244:78;;3945:88:76;;;-1:-1:-1;;;;;542:7244:78;;3853:71:76;3945:88;;542:7244:78;467:2:88;542:7244:78;;;;;;;;-1:-1:-1;542:7244:78;;;;;;;;3959:31:76;542:7244:78;3945:88:76;;;;;;;3918:5;3945:88;;;3852:181;3944:89;;;3852:181;;;;;3945:88;;;;;;-1:-1:-1;3945:88:76;;;;;;:::i;:::-;;;;;3853:71;;;;;;;;;;;;;;:::i;:::-;;;;4148:103:23;966:10:27;-1:-1:-1;542:7244:78;;;;;;;;;810:35;;542:7244;;3901:31:23;542:7244:78;;4468:23:23;4464:108;;4148:103;:::o;:::-;966:10:27;-1:-1:-1;542:7244:78;;;;;;;;;971:45;;542:7244;;3901:31:23;542:7244:78;4148:103:23;-1:-1:-1;542:7244:78;;;-1:-1:-1;;;;;;;;;;;542:7244:78;;;;;;;;966:10:27;542:7244:78;;;;;;;;;3901:31:23;542:7244:78;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;542:7244:78;;-1:-1:-1;542:7244:78;;;-1:-1:-1;542:7244:78;:::o;:::-;;:::i;:::-;;;;;-1:-1:-1;;;542:7244:78;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6246:584:86;;;;;6360:12;;;542:7244:78;;;6360:24:86;;6356:75;;6246:584;6474:30;;;;;:::i;:::-;542:7244:78;;;;;;6578:12:86;;;;:::i;:::-;6604:24;;;;6246:584;-1:-1:-1;6600:188:86;;;-1:-1:-1;;;;;542:7244:78;;;;;;;6644:21:86;;;:29;:21;;:::i;:29::-;6798:25;6246:584;:::o;6600:188::-;6753:24;;542:7244:78;;8167:38:60;;-1:-1:-1;;;;;542:7244:78;;;;;8167:38:60;:::i;:::-;6753:24:86;;;:::i;6604:::-;542:7244:78;;;;;;6614:14:86;;-1:-1:-1;6604:24:86;;;6356:75;-1:-1:-1;;;542:7244:78;;;;;;6360:12:86;542:7244:78;;;;;;;:::i;:::-;;;;;;;;;;;;;;6356:75:86;;;542:7244:78;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::o;7558:604:86:-;;542:7244:78;;7686:17:86;7682:83;;542:7244:78;7789:27:86;542:7244:78;7789:27:86;542:7244:78;;7789:27:86;;;;;;:::i;:::-;7860:14;;;;;:::i;:::-;542:7244:78;;;;;;;;;;;;;;;;7888:22:86;;;7884:77;;7975:21;-1:-1:-1;7975:84:86;;;;7558:604;7971:139;;;;8127:28;;;;:::i;7971:139::-;8082:17;;7789:27;8082:17;542:7244:78;8075:24:86;:::o;7975:84::-;542:7244:78;;;8009:16:86;542:7244:78;;8009:16:86;:::i;:::-;542:7244:78;;;8001:24:86;:57;;;;;7975:84;;;;;;;8001:57;8029:29;8038:8;;;8029:18;8038:8;8029:23;8038:8;;:::i;:::-;8029:18;;:::i;:::-;542:7244:78;;;;;8029:23:86;542:7244:78;;;;8029:29:86;;8001:57;;;;7884:77;7933:17;;;;;7789:27;7933:17;542:7244:78;7926:24:86;:::o;7682:83::-;7726:28;;;;:::i;3326:384:28:-;-1:-1:-1;;;;;;;;;;;1847:1:28;542:7244:78;;3526:20:28;3522:88;;1847:1;542:7244:78;;3326:384:28:o;3522:88::-;542:7244:78;;-1:-1:-1;;;3569:30:28;;;;;6196:308:78;;542:7244;-1:-1:-1;542:7244:78;6327:13;542:7244;;;-1:-1:-1;542:7244:78;11124:30:86;;;;:::i;:::-;11173;;;-1:-1:-1;11173:30:86;;;;11182:17;;-1:-1:-1;;;;;542:7244:78;;11182:12:86;;:17;:::i;:::-;542:7244:78;;;6327:13;542:7244;;11173:30:86;6385::78;;;11173::86;6381:117:78;;;;6196:308;;:::o;6381:117::-;6431:56;542:7244;-1:-1:-1;542:7244:78;6327:13;542:7244;;;-1:-1:-1;542:7244:78;819:34:62;837:15;819:34;:::i;6431:56:78:-;6196:308;;:::o;6385:30::-;6395:20;;-1:-1:-1;6385:30:78;;;;11173::86;;;-1:-1:-1;11173:30:86;;7270:387:23;-1:-1:-1;;;;;542:7244:78;;-1:-1:-1;542:7244:78;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2887:71:23;542:7244:78;;;;-1:-1:-1;542:7244:78;;;;;;;;;;;-1:-1:-1;;;;;542:7244:78;;;;;;;;;;-1:-1:-1;;542:7244:78;7509:4:23;542:7244:78;;;966:10:27;;-1:-1:-1;;;;;542:7244:78;-1:-1:-1;7532:40:23;-1:-1:-1;;7532:40:23;7509:4;7586:11;:::o;7270:387::-;-1:-1:-1;;;;;542:7244:78;;-1:-1:-1;542:7244:78;;;;;;;;;1356:26:76;;-1:-1:-1;;;;;;;;;;;2887:71:23;542:7244:78;;3901:31:23;542:7244:78;;;;-1:-1:-1;542:7244:78;;;;;;;;;;;-1:-1:-1;;;;;542:7244:78;;;;;;;;;;-1:-1:-1;;542:7244:78;7509:4:23;542:7244:78;;;966:10:27;;-1:-1:-1;;;;;542:7244:78;;7532:40:23;-1:-1:-1;;7532:40:23;7509:4;7586:11;:::o;7432:219::-;7628:12;;;-1:-1:-1;7628:12:23;:::o;7270:387::-;-1:-1:-1;;;;;542:7244:78;;-1:-1:-1;542:7244:78;;;;;;;;;810:35;;-1:-1:-1;;;;;;;;;;;2887:71:23;542:7244:78;;3901:31:23;542:7244:78;7270:387:23;-1:-1:-1;;;;;542:7244:78;;-1:-1:-1;542:7244:78;;;;;;;;;971:45;;-1:-1:-1;;;;;;;;;;;2887:71:23;542:7244:78;;3901:31:23;542:7244:78;7270:387:23;-1:-1:-1;542:7244:78;;;-1:-1:-1;;;;;;;;;;;542:7244:78;;;;;;;;-1:-1:-1;;;;;542:7244:78;;;;;;;;;;;;3901:31:23;542:7244:78;7892:388:23;-1:-1:-1;542:7244:78;;;-1:-1:-1;;;;;;;;;;;542:7244:78;;;;;;;;-1:-1:-1;;;;;542:7244:78;;;;;;;;;;;;;;;;-1:-1:-1;542:7244:78;;;;;;;;;;;-1:-1:-1;;;;;542:7244:78;;;;;;;;;;-1:-1:-1;;542:7244:78;;;966:10:27;;-1:-1:-1;;;;;542:7244:78;;8155:40:23;-1:-1:-1;;8155:40:23;542:7244:78;8209:11:23;:::o;10580:184:86:-;542:7244:78;;10303:8:60;;;:63;-1:-1:-1;10303:63:60;-1:-1:-1;;;;;542:7244:78;;10726:7:86;542:7244:78;;10736:12:86;:17;:12;;:17;:::i;:::-;542:7244:78;;;;;;10580:184:86;:::o;10303:63:60:-;542:7244:78;;;;;;;;;;14249:109:60;-1:-1:-1;14249:109:60;;-1:-1:-1;14249:109:60;;;542:7244:78;;;10303:63:60;;542:7244:78;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;542:7244:78;;;;;;;;:::i;5907:716:76:-;6030:34;5907:716;6030:34;;;;:::i;:::-;542:7244:78;;-1:-1:-1;;;6080:41:76;;-1:-1:-1;;;;;542:7244:78;;;6080:41:76;;;542:7244:78;;;;;6080:41:76;542:7244:78;;;6090:13:76;542:7244:78;;6080:41:76;;;;;;;-1:-1:-1;6080:41:76;;;5907:716;6079:42;;6075:90;;6266:27;542:7244:78;2540:111:28;6210:14:76;542:7244:78;2540:111:28;;;:::i;:::-;542:7244:78;;;;;;-1:-1:-1;;;;;542:7244:78;;-1:-1:-1;542:7244:78;;;-1:-1:-1;542:7244:78;;6210:14:76;6266:27;:::i;:::-;6080:41;6311:15;;542:7244:78;;;;-1:-1:-1;;;;;;542:7244:78;-1:-1:-1;;;;;542:7244:78;;;;;;;;;;;-1:-1:-1;;;;;542:7244:78;;;;6337:143:76;;5907:716;-1:-1:-1;6493:28:76;542:7244:78;-1:-1:-1;;;;;542:7244:78;;;;;;;6489:128:76;;5907:716;:::o;6489:128::-;6551:55;;;:::i;:::-;;5907:716::o;6337:143::-;6404:65;;;:::i;:::-;;6337:143;;;6075:90;542:7244:78;;-1:-1:-1;;;6144:10:76;;6080:41;;6144:10;6080:41;;;;;;;;;;;;;;:::i;:::-;;;;542:7244:78;;;;;;;;;;-1:-1:-1;;;;;542:7244:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;542:7244:78;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;4663:1079::-;;;;;542:7244;;:::i;:::-;;;;4903:16;4899:92;;4663:1079;5105:42;;5053:95;5105:42;;;;5053:95;;;:::i;:::-;5165:570;:34;;;5218:21;;;;;;5165:570;-1:-1:-1;5158:577:78;4663:1079;:::o;5165:570::-;5273:95;5431:67;5330:37;;;;;;5273:95;;;:::i;:::-;542:7244;5470:27;5431;:13;542:7244;-1:-1:-1;542:7244:78;;;;;;;;;5431:27;5470;;;;542:7244;;;;;;;;;;;5431:67;;;;;;;:::i;:::-;;;;;;;;;5273:409;5431:67;5397:216;5431:67;-1:-1:-1;5431:67:78;;;5165:570;5562:28;5524:67;5562:28;;542:7244;5562:28;;;5524:67;;:::i;:::-;5397:216;;:::i;:::-;5273:409;;:::i;:::-;5700:21;;4663:1079;:::o;5431:67::-;5524;5431;;;;5470:27;5431:67;5470:27;5431:67;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;4899:92;4949:31;;;;;;;;;;;;;:::i;:::-;4899:92;;;;;5748:442;;2776:48;:39;;542:7244;;;;;;;;;;2776:48;5946:237;:32;;;:237;;;-1:-1:-1;5748:442:78;:::o;5946:237::-;3358:44;:53;:34;;;542:7244;;3358:22;542:7244;;;;;;;3358:53;-1:-1:-1;542:7244:78;;;-1:-1:-1;;;6086:27:78;;542:7244;6086:27;;542:7244;;2776:27;;542:7244;;-1:-1:-1;;;;;542:7244:78;6086:27;;;;;;6009:174;6086:27;6077:63;6086:27;-1:-1:-1;6086:27:78;;;5946:237;2233:25;;:34;:25;542:7244;;2233:13;542:7244;;;;;;;6086:27;2233:34;6086:27;;;;2233:25;6086:27;;;;;;;;;;;:::i;:::-;;;;;;14291:213:58;542:7244:78;14369:24:58;;;;14365:103;;542:7244:78;14291:213:58;:::o;14365:103::-;542:7244:78;;;;14416:41:58;;;;;;14447:2;14416:41;;;542:7244:78;;;;;14416:41:58;542:7244:78;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;10552:388:60:-;542:7244:78;;10728:8:60;;;10752:20;;10690:17;10752:20;10690:17;10752:20;10690:17;10752:20;:::o;10724:210::-;542:7244:78;;;;;;;;;;;14249:109:60;10690:17;14249:109;;10690:17;14249:109;;;542:7244:78;:::i;:::-;;;;;;;14249:109:60;542:7244:78;;;;;10911:11:60;;542:7244:78;;10886:37:60;10870:1;10886:37;;;:::o;6999:207:86:-;;542:7244:78;;9594:15:60;-1:-1:-1;9619:18:60;9652:7;9658:1;9652:7;;9648:234;;6999:207:86;9906:53:60;;;;;:::i;:::-;9977:8;;;:63;-1:-1:-1;9977:63:60;;-1:-1:-1;;;;;542:7244:78;;7168:7:86;542:7244:78;;;7178:12:86;;:17;:12;;:17;:::i;9977:63:60:-;9992:41;10025:7;9992:48;10025:7;;:::i;:::-;9992:41;14249:109;;;;;;14099:265;;9992:41;542:7244:78;;;;;9992:48:60;9977:63;;;9648:234;9695:14;;;;;:::i;:::-;542:7244:78;;;;;;;9906:53:60;14249:109;;-1:-1:-1;14249:109:60;542:7244:78;14249:109:60;;;-1:-1:-1;14249:109:60;;542:7244:78;;;;;9727:48:60;9723:149;542:7244:78;;;9795:10:60;9723:149;9648:234;;9723:149;9850:7;;;;;;:::i;:::-;9723:149;9648:234;;542:7244:78;;;;;;;:::i;:::-;-1:-1:-1;542:7244:78;;;;;;;:::o;11486:272:86:-;;542:7244:78;11308:22:60;11718:31:86;11486:272;542:7244:78;;:::i;:::-;;;;:::i;:::-;;11308:22:60;;:::i;:::-;542:7244:78;;:::i;:::-;;11718:12:86;542:7244:78;;;;;11731:17:86;542:7244:78;;;;;11731:17:86;;542:7244:78;;11718:12:86;;:31;:::i;:::-;542:7244:78;;;;;;;;;:::i;:::-;;;;;;11731:17:86;11672:79;;542:7244:78;11486:272:86;:::o;6893:76:25:-;;;:::i;:::-;;;:::i;:::-;1805:1:28;-1:-1:-1;;;;;;;;;;;542:7244:78;6893:76:25:o;542:7244:78:-;;;;;;;:::i;:::-;-1:-1:-1;542:7244:78;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;542:7244:78;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;542:7244:78;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;6510:1274::-;6658:30;6510:1274;542:7244;;:::i;:::-;;6658:30;542:7244;;;6658:30;;;;;;:::i;:::-;6716:17;;542:7244;6716:17;;542:7244;-1:-1:-1;;;;;542:7244:78;6716:54;;:179;;6510:1274;6699:259;;6973:9;6658:30;6988:33;;;6716:17;7030:3;6988:33;;542:7244;;6984:44;;;;;7053:36;;;:50;:36;;:::i;:::-;542:7244;-1:-1:-1;;;;;542:7244:78;;;7053:50;;7049:119;;7186:73;7187:72;7222:36;;:33;;;:36;:::i;:::-;7187:72;:::i;:::-;7186:73;;542:7244;7186:73;7182:140;;542:7244;;6973:9;;7182:140;542:7244;;-1:-1:-1;;;7286:21:78;;;;;7049:119;542:7244;;-1:-1:-1;;;7130:23:78;;;;;6984:44;-1:-1:-1;7362:42:78;;-1:-1:-1;;7362:42:78;;;;6716:17;7413:3;7362:42;;542:7244;;7358:53;;;;;7436:45;;;:59;:45;;:::i;:59::-;;7432:128;;7578:92;7579:91;7624:45;;:42;;;:45;:::i;:::-;7579:91;:::i;7578:92::-;7574:159;;542:7244;;7347:9;;7574:159;542:7244;;-1:-1:-1;;;7697:21:78;;;;;7432:128;542:7244;;-1:-1:-1;;;7522:23:78;;;;;7358:53;;;;;;7760:17;6510:1274;:::o;6699:259::-;542:7244;;-1:-1:-1;;;6927:20:78;;;;;6716:179;6791:33;6658:30;6791:33;;;542:7244;6791:45;:103;6716:179;6791:103;6840:42;;;;;542:7244;6840:54;6716:179;;2557:104:57;;2641:5;;;;;;:13;2557:104;:::o;2641:13::-;;;2557:104;:::o;3803:4116::-;;;542:7244:78;;;;-1:-1:-1;;3803:4116:57;;4383:131;;;;;;;;;;;;4595:10;;4591:368;;5065:20;;;;5061:88;;5435:300;;;542:7244:78;-1:-1:-1;542:7244:78;5954:31:57;;5999:371;;;6813:1;542:7244:78;;6794:1:57;542:7244:78;6793:21:57;542:7244:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5999:371:57;;;;-1:-1:-1;5999:371:57;;;5435:300;;;;;;542:7244:78;5435:300:57;;5999:371;6436:21;542:7244:78;3803:4116:57;:::o;5061:88::-;542:7244:78;;-1:-1:-1;;;5112:22:57;;;;;4591:368;4925:19;;;;;;;:::i;542:7244:78:-;;;-1:-1:-1;;;542:7244:78;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;542:7244:78;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;11513:870:60;542:7244:78;;11513:870:60;;;542:7244:78;11513:870:60;11672:7;;;;542:7244:78;11775:28:60;11795:7;;;:::i;11775:28::-;542:7244:78;:::i;:::-;;;;;;;;;;;;;;;;11877:15:60;-1:-1:-1;11873:91:60;;542:7244:78;;12233:11:60;542:7244:78;;;12027:16:60;542:7244:78;;;;;;;12027:16:60;;;;12083:7;12063:43;12083:7;;12063:28;12083:7;;:::i;:::-;12063:28;14249:109;;;;;;14099:265;;12063:28;542:7244:78;;;;;;;;;;;;;;;;;12063:43:60;12233:11;542:7244:78;-1:-1:-1;;;;;542:7244:78;;;12023:189:60;542:7244:78;;;12145:52:60;542:7244:78;12155:41:60;542:7244:78;;:::i;:::-;;;;;;;;12155:41:60;-1:-1:-1;;;;;542:7244:78;;12155:41:60;;;542:7244:78;12145:52:60;:::i;:::-;12023:189;;11873:91;542:7244:78;;-1:-1:-1;;;11919:30:60;;;;;11668:709;12283:52;542:7244:78;;12293:41:60;542:7244:78;;:::i;12293:41:60:-;-1:-1:-1;;;;;542:7244:78;;12293:41:60;;;542:7244:78;12145:52:60;:::i;12283:::-;11678:1;12349:17;;:::o;7084:141:25:-;542:7244:78;-1:-1:-1;;;;;;;;;;;542:7244:78;;;;7150:18:25;7146:73;;7084:141::o;7146:73::-;542:7244:78;;-1:-1:-1;;;7191:17:25;;;;;8587:1642:57;8658:6;;8654:45;;9401:7;10201:10;10142:26;10093;10044;9995;9946;9897;9848;542:7244:78;10189:23:57;9401:7;8663:1;542:7244:78;;;;10826:16:57;10822:99;;8587:1642;542:7244:78;;;;10938:15:57;10934:96;;8587:1642;542:7244:78;;;;11047:15:57;11043:96;;8587:1642;542:7244:78;;;;11156:15:57;11152:96;;8587:1642;542:7244:78;;;;11265:14:57;11261:93;;8587:1642;542:7244:78;;;;11371:14:57;11367:93;;8587:1642;542:7244:78;;;;11477:14:57;11473:93;;8587:1642;542:7244:78;;;11579:64:57;;8587:1642;542:7244:78;;;9858:10:57;;;;:::i;:::-;542:7244:78;;;;;9848:26:57;9907:10;;;;:::i;9897:26::-;9956:10;;;;:::i;9946:26::-;10005:10;;;;:::i;9995:26::-;10054:10;;;;:::i;10044:26::-;10103:10;;;;:::i;10093:26::-;10152:10;;;;:::i;10142:26::-;10201:10;;;:::i;11579:64::-;542:7244:78;;11579:64:57;;11473:93;542:7244:78;11511:11:57;;542:7244:78;;11473:93:57;;;;11367;542:7244:78;11405:11:57;;542:7244:78;;11367:93:57;;;;11261;542:7244:78;11299:11:57;;542:7244:78;;11261:93:57;;;;11152:96;542:7244:78;11191:12:57;;542:7244:78;;11152:96:57;;;;11043;542:7244:78;11082:12:57;;542:7244:78;;11043:96:57;;;;10934;542:7244:78;10973:12:57;;542:7244:78;;10934:96:57;;;;10822:99;10862:13;;;542:7244:78;10822:99:57;;;;12736:433:60;;;12919:10;;;;;;13151:11;;;12736:433;:::o;12912:230::-;2900:5:57;;;;;;2910;;;;542:7244:78;;;;;;;;;14249:109:60;-1:-1:-1;14249:109:60;542:7244:78;14249:109:60;;;-1:-1:-1;14249:109:60;;542:7244:78;;;;;-1:-1:-1;12996:136:60;542:7244:78;;;13055:10:60;12996:136;;12912:230;;;;12996:136;13110:7;;;;;;:::i;:::-;12996:136;;","linkReferences":{},"immutableReferences":{"57808":[{"start":2023,"length":32}],"57811":[{"start":3882,"length":32}],"58762":[{"start":1638,"length":32},{"start":3939,"length":32}],"58765":[{"start":927,"length":32},{"start":8114,"length":32}],"58768":[{"start":995,"length":32},{"start":5626,"length":32},{"start":5911,"length":32}],"58771":[{"start":1508,"length":32},{"start":5473,"length":32},{"start":6037,"length":32}]}},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","FACTORY()":"2dd31000","HOOK_GAS_LIMIT()":"ff54740f","HOOK_RESERVE()":"557cab44","HOOK_SET_ROLE()":"6679191e","NETWORK_LIMIT_SET_ROLE()":"7d24bb27","NETWORK_REGISTRY()":"c0cd7c3e","OPERATOR_NETWORK_OPT_IN_SERVICE()":"1a80e500","OPERATOR_NETWORK_SHARES_SET_ROLE()":"e78eb6ae","OPERATOR_VAULT_OPT_IN_SERVICE()":"128e5d82","TYPE()":"bb24fe8a","VAULT_FACTORY()":"103f2907","VERSION()":"ffa1ad74","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","hook()":"7f5a7c7b","initialize(bytes)":"439fab91","maxNetworkLimit(bytes32)":"d15b740e","networkLimit(bytes32)":"3eb22c0f","networkLimitAt(bytes32,uint48,bytes)":"5d32a1c9","onSlash(bytes32,address,uint256,uint48,bytes)":"e49561ee","operatorNetworkShares(bytes32,address)":"42c53e33","operatorNetworkSharesAt(bytes32,address,uint48,bytes)":"1a7a7044","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","setHook(address)":"3dfd3873","setMaxNetworkLimit(uint96,uint256)":"23f752d5","setNetworkLimit(bytes32,uint256)":"02145348","setOperatorNetworkShares(bytes32,address,uint256)":"a33bc287","stake(bytes32,address)":"fd4d447c","stakeAt(bytes32,address,uint48,bytes)":"e02f6937","staticDelegateCall(address,bytes)":"9f86fd85","supportsInterface(bytes4)":"01ffc9a7","totalOperatorNetworkShares(bytes32)":"c43dc03f","totalOperatorNetworkSharesAt(bytes32,uint48,bytes)":"8b3f10b0","vault()":"fbfa77cf"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"networkRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"vaultFactory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operatorVaultOptInService\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operatorNetworkOptInService\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegatorFactory\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"entityType\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadySet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CheckpointUnorderedInsertion\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DuplicateRoleHolder\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedsMaxNetworkLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientHookGas\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MathOverflowedMulDiv\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingRoleHolders\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotNetwork\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotSlasher\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressRoleHolder\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"}],\"name\":\"OnSlash\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"hook\",\"type\":\"address\"}],\"name\":\"SetHook\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"SetMaxNetworkLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"SetNetworkLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"SetOperatorNetworkShares\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HOOK_GAS_LIMIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HOOK_RESERVE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HOOK_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NETWORK_LIMIT_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NETWORK_REGISTRY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_NETWORK_OPT_IN_SERVICE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_NETWORK_SHARES_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_VAULT_OPT_IN_SERVICE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TYPE\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VAULT_FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VERSION\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hook\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"}],\"name\":\"maxNetworkLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"}],\"name\":\"networkLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"networkLimitAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"operatorNetworkShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"operatorNetworkSharesAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"hook_\",\"type\":\"address\"}],\"name\":\"setHook\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint96\",\"name\":\"identifier\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"setMaxNetworkLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"setNetworkLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"setOperatorNetworkShares\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"stake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hints\",\"type\":\"bytes\"}],\"name\":\"stakeAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"staticDelegateCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"}],\"name\":\"totalOperatorNetworkShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"totalOperatorNetworkSharesAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"CheckpointUnorderedInsertion()\":[{\"details\":\"A value was attempted to be inserted on a past checkpoint.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"MathOverflowedMulDiv()\":[{\"details\":\"Muldiv operation overflow.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"OnSlash(bytes32,address,uint256,uint48)\":{\"params\":{\"amount\":\"amount of the collateral to be slashed\",\"captureTimestamp\":\"time point when the stake was captured\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"SetHook(address)\":{\"params\":{\"hook\":\"address of the hook\"}},\"SetMaxNetworkLimit(bytes32,uint256)\":{\"params\":{\"amount\":\"new maximum subnetwork's limit (how much stake the subnetwork is ready to get)\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"SetNetworkLimit(bytes32,uint256)\":{\"params\":{\"amount\":\"new subnetwork's limit (how much stake the vault curator is ready to give to the subnetwork)\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"SetOperatorNetworkShares(bytes32,address,uint256)\":{\"params\":{\"operator\":\"address of the operator\",\"shares\":\"new operator's shares inside the subnetwork (what percentage, which is equal to the shares divided by the total operators' shares, of the subnetwork's stake the vault curator is ready to give to the operator)\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}}},\"kind\":\"dev\",\"methods\":{\"VERSION()\":{\"details\":\"Must return 1 for this one.\",\"returns\":{\"_0\":\"version of the delegator\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize(bytes)\":{\"params\":{\"data\":\"some data to use\"}},\"networkLimit(bytes32)\":{\"params\":{\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"_0\":\"limit of the subnetwork\"}},\"networkLimitAt(bytes32,uint48,bytes)\":{\"params\":{\"hint\":\"hint for checkpoint index\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\",\"timestamp\":\"time point to get the subnetwork limit at\"},\"returns\":{\"_0\":\"limit of the subnetwork at the given timestamp\"}},\"onSlash(bytes32,address,uint256,uint48,bytes)\":{\"details\":\"Only the vault's slasher can call this function.\",\"params\":{\"amount\":\"amount of the collateral slashed\",\"captureTimestamp\":\"time point when the stake was captured\",\"data\":\"some additional data\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"operatorNetworkShares(bytes32,address)\":{\"params\":{\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"_0\":\"shares of the operator for the subnetwork\"}},\"operatorNetworkSharesAt(bytes32,address,uint48,bytes)\":{\"params\":{\"hint\":\"hint for checkpoint index\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\",\"timestamp\":\"time point to get the operator's shares at\"},\"returns\":{\"_0\":\"shares of the operator for the subnetwork at the given timestamp\"}},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"setHook(address)\":{\"details\":\"Only a HOOK_SET_ROLE holder can call this function. The hook can have arbitrary logic under certain functions, however, it doesn't affect the stake guarantees.\",\"params\":{\"hook\":\"address of the hook\"}},\"setMaxNetworkLimit(uint96,uint256)\":{\"details\":\"Only a network can call this function.\",\"params\":{\"amount\":\"new maximum subnetwork's limit\"}},\"setNetworkLimit(bytes32,uint256)\":{\"details\":\"Only a NETWORK_LIMIT_SET_ROLE holder can call this function.\",\"params\":{\"amount\":\"new limit of the subnetwork\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"setOperatorNetworkShares(bytes32,address,uint256)\":{\"details\":\"Only an OPERATOR_NETWORK_SHARES_SET_ROLE holder can call this function.\",\"params\":{\"operator\":\"address of the operator\",\"shares\":\"new shares of the operator for the subnetwork\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"stake(bytes32,address)\":{\"details\":\"Warning: this function is not safe to use for stake capturing, as it can change by the end of the block.\",\"params\":{\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"_0\":\"slashable stake until the end of the next epoch\"}},\"stakeAt(bytes32,address,uint48,bytes)\":{\"details\":\"Warning: it is not safe to use timestamp >= current one for the stake capturing, as it can change later.\",\"params\":{\"hints\":\"hints for the checkpoints' indexes\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\",\"timestamp\":\"time point to capture the stake at\"},\"returns\":{\"_0\":\"slashable stake at the given timestamp until the end of the consequent epoch\"}},\"staticDelegateCall(address,bytes)\":{\"details\":\"It allows to use this contract's storage on-chain.\",\"params\":{\"data\":\"data to make a delegatecall with\",\"target\":\"address of the contract to make a delegatecall to\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"totalOperatorNetworkShares(bytes32)\":{\"params\":{\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"_0\":\"total shares of the operators for the subnetwork\"}},\"totalOperatorNetworkSharesAt(bytes32,uint48,bytes)\":{\"params\":{\"hint\":\"hint for checkpoint index\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\",\"timestamp\":\"time point to get the total operators' shares at\"},\"returns\":{\"_0\":\"total shares of the operators for the subnetwork at the given timestamp\"}}},\"stateVariables\":{\"NETWORK_LIMIT_SET_ROLE\":{\"return\":\"identifier of the subnetwork limit setter role\",\"returns\":{\"_0\":\"identifier of the subnetwork limit setter role\"}},\"OPERATOR_NETWORK_SHARES_SET_ROLE\":{\"return\":\"identifier of the operator-subnetwork shares setter role\",\"returns\":{\"_0\":\"identifier of the operator-subnetwork shares setter role\"}}},\"version\":1},\"userdoc\":{\"events\":{\"OnSlash(bytes32,address,uint256,uint48)\":{\"notice\":\"Emitted when a slash happens.\"},\"SetHook(address)\":{\"notice\":\"Emitted when a hook is set.\"},\"SetMaxNetworkLimit(bytes32,uint256)\":{\"notice\":\"Emitted when a subnetwork's maximum limit is set.\"},\"SetNetworkLimit(bytes32,uint256)\":{\"notice\":\"Emitted when a subnetwork's limit is set.\"},\"SetOperatorNetworkShares(bytes32,address,uint256)\":{\"notice\":\"Emitted when an operator's shares inside a subnetwork are set.\"}},\"kind\":\"user\",\"methods\":{\"FACTORY()\":{\"notice\":\"Get the factory's address.\"},\"HOOK_GAS_LIMIT()\":{\"notice\":\"Get a gas limit for the hook.\"},\"HOOK_RESERVE()\":{\"notice\":\"Get a reserve gas between the gas limit check and the hook's execution.\"},\"HOOK_SET_ROLE()\":{\"notice\":\"Get a hook setter's role.\"},\"NETWORK_LIMIT_SET_ROLE()\":{\"notice\":\"Get a subnetwork limit setter's role.\"},\"NETWORK_REGISTRY()\":{\"notice\":\"Get the network registry's address.\"},\"OPERATOR_NETWORK_OPT_IN_SERVICE()\":{\"notice\":\"Get the operator-network opt-in service's address.\"},\"OPERATOR_NETWORK_SHARES_SET_ROLE()\":{\"notice\":\"Get an operator-subnetwork shares setter's role.\"},\"OPERATOR_VAULT_OPT_IN_SERVICE()\":{\"notice\":\"Get the operator-vault opt-in service's address.\"},\"TYPE()\":{\"notice\":\"Get the entity's type.\"},\"VAULT_FACTORY()\":{\"notice\":\"Get the vault factory's address.\"},\"VERSION()\":{\"notice\":\"Get a version of the delegator (different versions mean different interfaces).\"},\"hook()\":{\"notice\":\"Get the hook's address.\"},\"initialize(bytes)\":{\"notice\":\"Initialize this entity contract by using a given data.\"},\"maxNetworkLimit(bytes32)\":{\"notice\":\"Get a particular subnetwork's maximum limit (meaning the subnetwork is not ready to get more as a stake).\"},\"networkLimit(bytes32)\":{\"notice\":\"Get a subnetwork's limit (how much stake the vault curator is ready to give to the subnetwork).\"},\"networkLimitAt(bytes32,uint48,bytes)\":{\"notice\":\"Get a subnetwork's limit at a given timestamp using a hint (how much stake the vault curator is ready to give to the subnetwork).\"},\"onSlash(bytes32,address,uint256,uint48,bytes)\":{\"notice\":\"Called when a slash happens.\"},\"operatorNetworkShares(bytes32,address)\":{\"notice\":\"Get an operator's shares for a subnetwork (what percentage, which is equal to the shares divided by the total operators' shares, of the subnetwork's stake the vault curator is ready to give to the operator).\"},\"operatorNetworkSharesAt(bytes32,address,uint48,bytes)\":{\"notice\":\"Get an operator's shares for a subnetwork at a given timestamp using a hint (what percentage, which is equal to the shares divided by the total operators' shares, of the subnetwork's stake the vault curator is ready to give to the operator).\"},\"setHook(address)\":{\"notice\":\"Set a new hook.\"},\"setMaxNetworkLimit(uint96,uint256)\":{\"notice\":\"Set a maximum limit for a subnetwork (how much stake the subnetwork is ready to get). identifier identifier of the subnetwork\"},\"setNetworkLimit(bytes32,uint256)\":{\"notice\":\"Set a subnetwork's limit (how much stake the vault curator is ready to give to the subnetwork).\"},\"setOperatorNetworkShares(bytes32,address,uint256)\":{\"notice\":\"Set an operator's shares for a subnetwork (what percentage, which is equal to the shares divided by the total operators' shares, of the subnetwork's stake the vault curator is ready to give to the operator).\"},\"stake(bytes32,address)\":{\"notice\":\"Get a stake that a given subnetwork will be able to slash for a certain operator until the end of the next epoch (if no cross-slashing and no slashings by the subnetwork).\"},\"stakeAt(bytes32,address,uint48,bytes)\":{\"notice\":\"Get a stake that a given subnetwork could be able to slash for a certain operator at a given timestamp until the end of the consequent epoch using hints (if no cross-slashing and no slashings by the subnetwork).\"},\"staticDelegateCall(address,bytes)\":{\"notice\":\"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data).\"},\"totalOperatorNetworkShares(bytes32)\":{\"notice\":\"Get a sum of operators' shares for a subnetwork.\"},\"totalOperatorNetworkSharesAt(bytes32,uint48,bytes)\":{\"notice\":\"Get a sum of operators' shares for a subnetwork at a given timestamp using a hint.\"},\"vault()\":{\"notice\":\"Get the vault's address.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/delegator/NetworkRestakeDelegator.sol\":\"NetworkRestakeDelegator\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://942dad22fbdc1669f025540ba63aa3ccfad5f8458fc5d4525b31ebf272e7af45\",\"dweb:/ipfs/Qmdo4X2M82aM3AMoW2kf2jhYkSCyC4T1pHNd6obdsDFnAB\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45\",\"dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26\",\"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c\",\"dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0xbdc5e074d7dd6678f67e92b1a51a20226801a407b0e1af3da367c5d1ff4519ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a36cca6b22fff3db16fc789ff6c60eea71d4b156065d4d0c83a0bc5e91a77a8b\",\"dweb:/ipfs/QmYN3exd5AemxjBrN8XMB1p5LbbE16uC3sjbYjwi8AjcGR\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0xc7755af115020049e4140f224f9ee88d7e1799ffb0646f37bf0df24bf6213f58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f09bf94d5274334ec021f61a04659db303f31e60460e14b709c9bf187740111\",\"dweb:/ipfs/QmNvgomZYUwFAt4cZbPWAiTeSZQreGehY9BK5xyVJsUttb\"]},\"src/contracts/common/Entity.sol\":{\"keccak256\":\"0x3d61a932995b8443381f3950542d388223a2c26dd5d29a3274dea3baa7388bd7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7cdf5f03ca72fd263fd32ff59c8d88ddca911ae83896a287d10772c1bbe9b138\",\"dweb:/ipfs/QmbP84r5BWT1Rn9AYTntWSf3xUMTTCohTZJFhbBhDXFoHa\"]},\"src/contracts/common/StaticDelegateCallable.sol\":{\"keccak256\":\"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764\",\"dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD\"]},\"src/contracts/delegator/BaseDelegator.sol\":{\"keccak256\":\"0x7c54d491fdd4415b764a9c8defa068e56d4c0c8c9419be0053a1d377669290e8\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://9238bfbad0f6eeb0dc7727724de14380f1980b395902269703d5e2ef07e52e10\",\"dweb:/ipfs/QmPJn1V4HNXcEghYvogGuSTF24dSQUPosR5qtsXcmNqRm3\"]},\"src/contracts/delegator/NetworkRestakeDelegator.sol\":{\"keccak256\":\"0xd3a8e6522f9c6fdcc2da837c9023afd6bdff2bce45a35590320c475519e3636d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://58b17a87f6554f08376f9ea7fedf486a4aa75801bf0ad8b23ff5a46959b6b7a3\",\"dweb:/ipfs/QmSTmNh67tYt8CmjVZb57r8N3qX5yeYdMApKPJm3qvQgQw\"]},\"src/contracts/libraries/Checkpoints.sol\":{\"keccak256\":\"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609\",\"dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE\"]},\"src/contracts/libraries/Subnetwork.sol\":{\"keccak256\":\"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56\",\"dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32\"]},\"src/interfaces/common/IEntity.sol\":{\"keccak256\":\"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b\",\"dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv\"]},\"src/interfaces/common/IMigratableEntity.sol\":{\"keccak256\":\"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c\",\"dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds\"]},\"src/interfaces/common/IRegistry.sol\":{\"keccak256\":\"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014\",\"dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK\"]},\"src/interfaces/common/IStaticDelegateCallable.sol\":{\"keccak256\":\"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516\",\"dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi\"]},\"src/interfaces/delegator/IBaseDelegator.sol\":{\"keccak256\":\"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2\",\"dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8\"]},\"src/interfaces/delegator/IDelegatorHook.sol\":{\"keccak256\":\"0xc51aa8d7d1f6c8043ee819b7aeb86da0e993912e1442098df897e299f01f9f46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://adddf5cb2ba282aeb576b26efb28640f865a1721cc9b6eee8b3ee0457a2c9780\",\"dweb:/ipfs/QmNYgAmnLRwWZbhTuQhZs9rx4zcme1df5mEepkrniorSoW\"]},\"src/interfaces/delegator/INetworkRestakeDelegator.sol\":{\"keccak256\":\"0xe7030fe30389a147fd710e3436ec346b4842695fd3e65a81b95375c9f1d633fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://739c7e66d301778054f5c90bee45ec9438f68afba8a03eaaac52064c73b115ad\",\"dweb:/ipfs/QmfZ2ytKcTykAc76nxhg8ikUXV8NdBpetqb8W4YWPcox1Z\"]},\"src/interfaces/service/IOptInService.sol\":{\"keccak256\":\"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337\",\"dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24\"]},\"src/interfaces/vault/IVault.sol\":{\"keccak256\":\"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9\",\"dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R\"]},\"src/interfaces/vault/IVaultStorage.sol\":{\"keccak256\":\"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e\",\"dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"networkRegistry","type":"address"},{"internalType":"address","name":"vaultFactory","type":"address"},{"internalType":"address","name":"operatorVaultOptInService","type":"address"},{"internalType":"address","name":"operatorNetworkOptInService","type":"address"},{"internalType":"address","name":"delegatorFactory","type":"address"},{"internalType":"uint64","name":"entityType","type":"uint64"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"inputs":[],"type":"error","name":"AlreadySet"},{"inputs":[],"type":"error","name":"CheckpointUnorderedInsertion"},{"inputs":[],"type":"error","name":"DuplicateRoleHolder"},{"inputs":[],"type":"error","name":"ExceedsMaxNetworkLimit"},{"inputs":[],"type":"error","name":"InsufficientHookGas"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"MathOverflowedMulDiv"},{"inputs":[],"type":"error","name":"MissingRoleHolders"},{"inputs":[],"type":"error","name":"NotInitialized"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"NotNetwork"},{"inputs":[],"type":"error","name":"NotSlasher"},{"inputs":[],"type":"error","name":"NotVault"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintDowncast"},{"inputs":[],"type":"error","name":"ZeroAddressRoleHolder"},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint48","name":"captureTimestamp","type":"uint48","indexed":false}],"type":"event","name":"OnSlash","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[{"internalType":"address","name":"hook","type":"address","indexed":true}],"type":"event","name":"SetHook","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"SetMaxNetworkLimit","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"SetNetworkLimit","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false}],"type":"event","name":"SetOperatorNetworkShares","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HOOK_GAS_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HOOK_RESERVE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HOOK_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"NETWORK_LIMIT_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"NETWORK_REGISTRY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_NETWORK_OPT_IN_SERVICE","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_NETWORK_SHARES_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_VAULT_OPT_IN_SERVICE","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"TYPE","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VAULT_FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"VERSION","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"hook","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"}],"stateMutability":"view","type":"function","name":"maxNetworkLimit","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"}],"stateMutability":"view","type":"function","name":"networkLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"networkLimitAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint48","name":"captureTimestamp","type":"uint48"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"onSlash"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"operatorNetworkShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"operatorNetworkSharesAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"address","name":"hook_","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setHook"},{"inputs":[{"internalType":"uint96","name":"identifier","type":"uint96"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setMaxNetworkLimit"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setNetworkLimit"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setOperatorNetworkShares"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"stake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hints","type":"bytes"}],"stateMutability":"view","type":"function","name":"stakeAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"staticDelegateCall"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"}],"stateMutability":"view","type":"function","name":"totalOperatorNetworkShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"totalOperatorNetworkSharesAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"vault","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"VERSION()":{"details":"Must return 1 for this one.","returns":{"_0":"version of the delegator"}},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"initialize(bytes)":{"params":{"data":"some data to use"}},"networkLimit(bytes32)":{"params":{"subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"_0":"limit of the subnetwork"}},"networkLimitAt(bytes32,uint48,bytes)":{"params":{"hint":"hint for checkpoint index","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)","timestamp":"time point to get the subnetwork limit at"},"returns":{"_0":"limit of the subnetwork at the given timestamp"}},"onSlash(bytes32,address,uint256,uint48,bytes)":{"details":"Only the vault's slasher can call this function.","params":{"amount":"amount of the collateral slashed","captureTimestamp":"time point when the stake was captured","data":"some additional data","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"}},"operatorNetworkShares(bytes32,address)":{"params":{"operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"_0":"shares of the operator for the subnetwork"}},"operatorNetworkSharesAt(bytes32,address,uint48,bytes)":{"params":{"hint":"hint for checkpoint index","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)","timestamp":"time point to get the operator's shares at"},"returns":{"_0":"shares of the operator for the subnetwork at the given timestamp"}},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"setHook(address)":{"details":"Only a HOOK_SET_ROLE holder can call this function. The hook can have arbitrary logic under certain functions, however, it doesn't affect the stake guarantees.","params":{"hook":"address of the hook"}},"setMaxNetworkLimit(uint96,uint256)":{"details":"Only a network can call this function.","params":{"amount":"new maximum subnetwork's limit"}},"setNetworkLimit(bytes32,uint256)":{"details":"Only a NETWORK_LIMIT_SET_ROLE holder can call this function.","params":{"amount":"new limit of the subnetwork","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"}},"setOperatorNetworkShares(bytes32,address,uint256)":{"details":"Only an OPERATOR_NETWORK_SHARES_SET_ROLE holder can call this function.","params":{"operator":"address of the operator","shares":"new shares of the operator for the subnetwork","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"}},"stake(bytes32,address)":{"details":"Warning: this function is not safe to use for stake capturing, as it can change by the end of the block.","params":{"operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"_0":"slashable stake until the end of the next epoch"}},"stakeAt(bytes32,address,uint48,bytes)":{"details":"Warning: it is not safe to use timestamp >= current one for the stake capturing, as it can change later.","params":{"hints":"hints for the checkpoints' indexes","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)","timestamp":"time point to capture the stake at"},"returns":{"_0":"slashable stake at the given timestamp until the end of the consequent epoch"}},"staticDelegateCall(address,bytes)":{"details":"It allows to use this contract's storage on-chain.","params":{"data":"data to make a delegatecall with","target":"address of the contract to make a delegatecall to"}},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"totalOperatorNetworkShares(bytes32)":{"params":{"subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"_0":"total shares of the operators for the subnetwork"}},"totalOperatorNetworkSharesAt(bytes32,uint48,bytes)":{"params":{"hint":"hint for checkpoint index","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)","timestamp":"time point to get the total operators' shares at"},"returns":{"_0":"total shares of the operators for the subnetwork at the given timestamp"}}},"version":1},"userdoc":{"kind":"user","methods":{"FACTORY()":{"notice":"Get the factory's address."},"HOOK_GAS_LIMIT()":{"notice":"Get a gas limit for the hook."},"HOOK_RESERVE()":{"notice":"Get a reserve gas between the gas limit check and the hook's execution."},"HOOK_SET_ROLE()":{"notice":"Get a hook setter's role."},"NETWORK_LIMIT_SET_ROLE()":{"notice":"Get a subnetwork limit setter's role."},"NETWORK_REGISTRY()":{"notice":"Get the network registry's address."},"OPERATOR_NETWORK_OPT_IN_SERVICE()":{"notice":"Get the operator-network opt-in service's address."},"OPERATOR_NETWORK_SHARES_SET_ROLE()":{"notice":"Get an operator-subnetwork shares setter's role."},"OPERATOR_VAULT_OPT_IN_SERVICE()":{"notice":"Get the operator-vault opt-in service's address."},"TYPE()":{"notice":"Get the entity's type."},"VAULT_FACTORY()":{"notice":"Get the vault factory's address."},"VERSION()":{"notice":"Get a version of the delegator (different versions mean different interfaces)."},"hook()":{"notice":"Get the hook's address."},"initialize(bytes)":{"notice":"Initialize this entity contract by using a given data."},"maxNetworkLimit(bytes32)":{"notice":"Get a particular subnetwork's maximum limit (meaning the subnetwork is not ready to get more as a stake)."},"networkLimit(bytes32)":{"notice":"Get a subnetwork's limit (how much stake the vault curator is ready to give to the subnetwork)."},"networkLimitAt(bytes32,uint48,bytes)":{"notice":"Get a subnetwork's limit at a given timestamp using a hint (how much stake the vault curator is ready to give to the subnetwork)."},"onSlash(bytes32,address,uint256,uint48,bytes)":{"notice":"Called when a slash happens."},"operatorNetworkShares(bytes32,address)":{"notice":"Get an operator's shares for a subnetwork (what percentage, which is equal to the shares divided by the total operators' shares, of the subnetwork's stake the vault curator is ready to give to the operator)."},"operatorNetworkSharesAt(bytes32,address,uint48,bytes)":{"notice":"Get an operator's shares for a subnetwork at a given timestamp using a hint (what percentage, which is equal to the shares divided by the total operators' shares, of the subnetwork's stake the vault curator is ready to give to the operator)."},"setHook(address)":{"notice":"Set a new hook."},"setMaxNetworkLimit(uint96,uint256)":{"notice":"Set a maximum limit for a subnetwork (how much stake the subnetwork is ready to get). identifier identifier of the subnetwork"},"setNetworkLimit(bytes32,uint256)":{"notice":"Set a subnetwork's limit (how much stake the vault curator is ready to give to the subnetwork)."},"setOperatorNetworkShares(bytes32,address,uint256)":{"notice":"Set an operator's shares for a subnetwork (what percentage, which is equal to the shares divided by the total operators' shares, of the subnetwork's stake the vault curator is ready to give to the operator)."},"stake(bytes32,address)":{"notice":"Get a stake that a given subnetwork will be able to slash for a certain operator until the end of the next epoch (if no cross-slashing and no slashings by the subnetwork)."},"stakeAt(bytes32,address,uint48,bytes)":{"notice":"Get a stake that a given subnetwork could be able to slash for a certain operator at a given timestamp until the end of the consequent epoch using hints (if no cross-slashing and no slashings by the subnetwork)."},"staticDelegateCall(address,bytes)":{"notice":"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data)."},"totalOperatorNetworkShares(bytes32)":{"notice":"Get a sum of operators' shares for a subnetwork."},"totalOperatorNetworkSharesAt(bytes32,uint48,bytes)":{"notice":"Get a sum of operators' shares for a subnetwork at a given timestamp using a hint."},"vault()":{"notice":"Get the vault's address."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/delegator/NetworkRestakeDelegator.sol":"NetworkRestakeDelegator"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol":{"keccak256":"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74","urls":["bzz-raw://942dad22fbdc1669f025540ba63aa3ccfad5f8458fc5d4525b31ebf272e7af45","dweb:/ipfs/Qmdo4X2M82aM3AMoW2kf2jhYkSCyC4T1pHNd6obdsDFnAB"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8","urls":["bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45","dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41","urls":["bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26","dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe","urls":["bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c","dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol":{"keccak256":"0xbdc5e074d7dd6678f67e92b1a51a20226801a407b0e1af3da367c5d1ff4519ad","urls":["bzz-raw://a36cca6b22fff3db16fc789ff6c60eea71d4b156065d4d0c83a0bc5e91a77a8b","dweb:/ipfs/QmYN3exd5AemxjBrN8XMB1p5LbbE16uC3sjbYjwi8AjcGR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0xc7755af115020049e4140f224f9ee88d7e1799ffb0646f37bf0df24bf6213f58","urls":["bzz-raw://7f09bf94d5274334ec021f61a04659db303f31e60460e14b709c9bf187740111","dweb:/ipfs/QmNvgomZYUwFAt4cZbPWAiTeSZQreGehY9BK5xyVJsUttb"],"license":"MIT"},"src/contracts/common/Entity.sol":{"keccak256":"0x3d61a932995b8443381f3950542d388223a2c26dd5d29a3274dea3baa7388bd7","urls":["bzz-raw://7cdf5f03ca72fd263fd32ff59c8d88ddca911ae83896a287d10772c1bbe9b138","dweb:/ipfs/QmbP84r5BWT1Rn9AYTntWSf3xUMTTCohTZJFhbBhDXFoHa"],"license":"BUSL-1.1"},"src/contracts/common/StaticDelegateCallable.sol":{"keccak256":"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90","urls":["bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764","dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD"],"license":"BUSL-1.1"},"src/contracts/delegator/BaseDelegator.sol":{"keccak256":"0x7c54d491fdd4415b764a9c8defa068e56d4c0c8c9419be0053a1d377669290e8","urls":["bzz-raw://9238bfbad0f6eeb0dc7727724de14380f1980b395902269703d5e2ef07e52e10","dweb:/ipfs/QmPJn1V4HNXcEghYvogGuSTF24dSQUPosR5qtsXcmNqRm3"],"license":"BUSL-1.1"},"src/contracts/delegator/NetworkRestakeDelegator.sol":{"keccak256":"0xd3a8e6522f9c6fdcc2da837c9023afd6bdff2bce45a35590320c475519e3636d","urls":["bzz-raw://58b17a87f6554f08376f9ea7fedf486a4aa75801bf0ad8b23ff5a46959b6b7a3","dweb:/ipfs/QmSTmNh67tYt8CmjVZb57r8N3qX5yeYdMApKPJm3qvQgQw"],"license":"BUSL-1.1"},"src/contracts/libraries/Checkpoints.sol":{"keccak256":"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c","urls":["bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609","dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE"],"license":"MIT"},"src/contracts/libraries/Subnetwork.sol":{"keccak256":"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe","urls":["bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56","dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32"],"license":"MIT"},"src/interfaces/common/IEntity.sol":{"keccak256":"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21","urls":["bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b","dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv"],"license":"MIT"},"src/interfaces/common/IMigratableEntity.sol":{"keccak256":"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4","urls":["bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c","dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds"],"license":"MIT"},"src/interfaces/common/IRegistry.sol":{"keccak256":"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb","urls":["bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014","dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK"],"license":"MIT"},"src/interfaces/common/IStaticDelegateCallable.sol":{"keccak256":"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5","urls":["bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516","dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi"],"license":"MIT"},"src/interfaces/delegator/IBaseDelegator.sol":{"keccak256":"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee","urls":["bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2","dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8"],"license":"MIT"},"src/interfaces/delegator/IDelegatorHook.sol":{"keccak256":"0xc51aa8d7d1f6c8043ee819b7aeb86da0e993912e1442098df897e299f01f9f46","urls":["bzz-raw://adddf5cb2ba282aeb576b26efb28640f865a1721cc9b6eee8b3ee0457a2c9780","dweb:/ipfs/QmNYgAmnLRwWZbhTuQhZs9rx4zcme1df5mEepkrniorSoW"],"license":"MIT"},"src/interfaces/delegator/INetworkRestakeDelegator.sol":{"keccak256":"0xe7030fe30389a147fd710e3436ec346b4842695fd3e65a81b95375c9f1d633fc","urls":["bzz-raw://739c7e66d301778054f5c90bee45ec9438f68afba8a03eaaac52064c73b115ad","dweb:/ipfs/QmfZ2ytKcTykAc76nxhg8ikUXV8NdBpetqb8W4YWPcox1Z"],"license":"MIT"},"src/interfaces/service/IOptInService.sol":{"keccak256":"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a","urls":["bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337","dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24"],"license":"MIT"},"src/interfaces/vault/IVault.sol":{"keccak256":"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235","urls":["bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9","dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R"],"license":"MIT"},"src/interfaces/vault/IVaultStorage.sol":{"keccak256":"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22","urls":["bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e","dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6"],"license":"MIT"}},"version":1},"id":78} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[{"name":"networkRegistry","type":"address","internalType":"address"},{"name":"vaultFactory","type":"address","internalType":"address"},{"name":"operatorVaultOptInService","type":"address","internalType":"address"},{"name":"operatorNetworkOptInService","type":"address","internalType":"address"},{"name":"delegatorFactory","type":"address","internalType":"address"},{"name":"entityType","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"HOOK_GAS_LIMIT","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"HOOK_RESERVE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"HOOK_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"NETWORK_LIMIT_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"NETWORK_REGISTRY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_NETWORK_OPT_IN_SERVICE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_NETWORK_SHARES_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_VAULT_OPT_IN_SERVICE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"TYPE","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"VAULT_FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"VERSION","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"pure"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"hook","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"maxNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"networkLimit","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"networkLimitAt","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"onSlash","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","internalType":"uint48"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"operatorNetworkShares","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"operatorNetworkSharesAt","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setHook","inputs":[{"name":"hook_","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMaxNetworkLimit","inputs":[{"name":"identifier","type":"uint96","internalType":"uint96"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOperatorNetworkShares","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stake","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"stakeAt","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hints","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"staticDelegateCall","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"totalOperatorNetworkShares","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"totalOperatorNetworkSharesAt","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"vault","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OnSlash","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","indexed":false,"internalType":"uint48"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SetHook","inputs":[{"name":"hook","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SetMaxNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SetNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SetOperatorNetworkShares","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"AlreadySet","inputs":[]},{"type":"error","name":"CheckpointUnorderedInsertion","inputs":[]},{"type":"error","name":"DuplicateRoleHolder","inputs":[]},{"type":"error","name":"ExceedsMaxNetworkLimit","inputs":[]},{"type":"error","name":"InsufficientHookGas","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"MissingRoleHolders","inputs":[]},{"type":"error","name":"NotInitialized","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"NotNetwork","inputs":[]},{"type":"error","name":"NotSlasher","inputs":[]},{"type":"error","name":"NotVault","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ZeroAddressRoleHolder","inputs":[]}],"bytecode":{"object":"0x610140346101a1576001600160401b0390601f612e3538819003918201601f191683019190848311848410176101a5578160c092859260409586528339810103126101a15761004d826101b9565b610059602084016101b9565b906100658385016101b9565b94610072606086016101b9565b9460a0610081608083016101b9565b9101519180831683036101a1577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff82891c1661019057808083160361014c575b50505060805260a05260c05260e0526101009283526101209182525190612c6792836101ce8439608051836107e7015260a05183610f2a015260c0518381816106660152610f63015260e05183818161039f0152611fb20152518281816103e3015281816115fa01526117170152518181816105e40152818161156101526117950152f35b6001600160401b0319909116811790915585519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80806100c7565b875163f92ee8a960e01b8152600490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101a15756fe60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a714610264578063021453481461025f578063103f29071461025a578063128e5d82146102555780631a7a7044146102505780631a80e5001461024b57806323f752d514610246578063248a9ca3146102415780632dd310001461023c5780632f2ff15d1461023757806336568abe146102325780633dfd38731461022d5780633eb22c0f1461022857806342c53e3314610223578063439fab911461021e578063557cab44146102195780635d32a1c9146102145780636679191e1461020f5780637d24bb271461020a5780637f5a7c7b146102055780638b3f10b01461020057806391d14854146101fb5780639f86fd85146101f6578063a217fddf146101f1578063a33bc287146101ec578063bb24fe8a146101e7578063c0cd7c3e146101e2578063c43dc03f146101dd578063d15b740e146101d8578063d547741f146101d3578063e02f6937146101ce578063e49561ee146101c9578063e78eb6ae146101c4578063fbfa77cf146101bf578063fd4d447c146101ba578063ff54740f146101b55763ffa1ad74146101b0575f80fd5b6112e0565b6112c3565b611299565b611272565b611238565b61104d565b611031565b610fe5565b610fbb565b610f92565b610f4e565b610f0b565b610df0565b610dd6565b610d1c565b610cbe565b610c9b565b610c73565b610c3a565b610c00565b610bdd565b610b80565b610a48565b6109cf565b6109a6565b6108ad565b610862565b610816565b6107d2565b610799565b610613565b6105cf565b610589565b6103ce565b61038a565b6102be565b346102ba5760203660031901126102ba5760043563ffffffff60e01b81168091036102ba57602090637965db0b60e01b81149081156102a9575b506040519015158152f35b6301ffc9a760e01b1490505f61029e565b5f80fd5b346102ba576040806003193601126102ba5760043590602435906102e061180a565b825f526002602052805f2054821161037a57825f52600360205281610306825f20611efa565b1461036a5781610365916103557e899d104fc3d8820bd96540612bcc5c448c8837b13b9f7faa43ad0728f0c14f94610346875f52600360205260405f2090565b61034f426123bb565b90611952565b5050519081529081906020820190565b0390a2005b5163a741a04560e01b8152600490fd5b51631eefc06360e31b8152600490fd5b346102ba575f3660031901126102ba576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102ba575f3660031901126102ba576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6001600160a01b038116036102ba57565b6064359065ffffffffffff821682036102ba57565b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b0382111761046757604052565b610438565b606081019081106001600160401b0382111761046757604052565b90601f801991011681019081106001600160401b0382111761046757604052565b6040519060a082018281106001600160401b0382111761046757604052565b604051906104d48261044c565b565b6001600160401b03811161046757601f01601f191660200190565b81601f820112156102ba57803590610508826104d6565b926105166040519485610487565b828452602083830101116102ba57815f926020809301838601378301015290565b9060806003198301126102ba576004359160243561055481610412565b9160443565ffffffffffff811681036102ba5791606435906001600160401b0382116102ba57610586916004016104f1565b90565b346102ba5760206105c76105c261059f36610537565b939190925f526005865260405f209060018060a01b03165f5260205260405f2090565b611a45565b604051908152f35b346102ba575f3660031901126102ba576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102ba5760403660031901126102ba576004356001600160601b03811681036102ba5760243590610643611b28565b6040516302910f8b60e31b81523360048201526020816024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa908115610794575f91610765575b5015610753576001600160601b03166bffffffffffffffffffffffff193360601b161790806106cd835f52600260205260405f2090565b541461074157610726817fc67e7929681aa1bccd63f52b3799bf5805f3009f197db6fdf584b14f7fbf608c9261070b855f52600260205260405f2090565b556107168185611b57565b6040519081529081906020820190565b0390a261073f60015f80516020612bf283398151915255565b005b60405163a741a04560e01b8152600490fd5b6040516323d53b9760e21b8152600490fd5b610787915060203d60201161078d575b61077f8183610487565b810190611327565b5f610696565b503d610775565b61133f565b346102ba5760203660031901126102ba576004355f525f80516020612bd28339815191526020526020600160405f200154604051908152f35b346102ba575f3660031901126102ba576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102ba5760403660031901126102ba5761073f60243560043561083982610412565b805f525f80516020612bd283398151915260205261085d600160405f2001546118bd565b611e32565b346102ba5760403660031901126102ba5760243561087f81610412565b336001600160a01b0382160361089b5761073f90600435611e68565b60405163334bd91960e11b8152600490fd5b346102ba5760203660031901126102ba576004356108ca81610412565b6108d2611b28565b335f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c60205260409020547fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c9060ff161561098857506001546001600160a01b039182169181168214610741576001600160a01b03191681176001557f5bbb1d3ebb6a3ad2a0f17ff35e579a83af60604d1d3c2a4c83c62adecadf666d5f80a260015f80516020612bf283398151915255005b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b346102ba5760203660031901126102ba576004355f52600360205260206105c760405f20611efa565b346102ba5760403660031901126102ba5760206105c7610a166024356109f481610412565b6004355f526005845260405f209060018060a01b03165f5260205260405f2090565b611efa565b9181601f840112156102ba578235916001600160401b0383116102ba57602083818601950101116102ba57565b346102ba5760203660031901126102ba576001600160401b036004358181116102ba57610a79903690600401610a1b565b5f80516020612c12833981519152549260ff8460401c1615931680159081610b78575b6001149081610b6e575b159081610b65575b50610b53575f80516020612c12833981519152805467ffffffffffffffff19166001179055610ae19183610b2f57611f7d565b610ae757005b5f80516020612c12833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f80516020612c12833981519152805460ff60401b1916600160401b179055611f7d565b60405163f92ee8a960e01b8152600490fd5b9050155f610aae565b303b159150610aa6565b849150610a9c565b346102ba575f3660031901126102ba576020604051614e208152f35b60606003198201126102ba576004359160243565ffffffffffff811681036102ba5791604435906001600160401b0382116102ba57610586916004016104f1565b346102ba5760206105c7610bf036610b9c565b915f526003845260405f20611a45565b346102ba575f3660031901126102ba5760206040517fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c8152f35b346102ba575f3660031901126102ba5760206040517e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf8152f35b346102ba575f3660031901126102ba576001546040516001600160a01b039091168152602090f35b346102ba5760206105c7610cae36610b9c565b915f526004845260405f20611a45565b346102ba5760403660031901126102ba57602060ff610d10602435610ce281610412565b6004355f525f80516020612bd2833981519152845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b346102ba576040806003193601126102ba57600435610d3a81610412565b602435906001600160401b0382116102ba575f8091610d60610dc4943690600401610a1b565b908187519283928337810184815203915af43d15610dcc57610db63d610d85816104d6565b90610d9286519283610487565b81523d5f602083013e5b845194859315156020850152808401526060830190611376565b03601f198101835282610487565b805190602001fd5b610db66060610d9c565b346102ba575f3660031901126102ba5760206040515f8152f35b346102ba5760603660031901126102ba57602435600435610e1082610412565b60443591610e1c611866565b5f8281526005602090815260408083206001600160a01b03851684529091529020610e4690611efa565b838114610741577f739a5a3ec0ff71e2386d0013deac5f44e0935a98def2e2a5ddf9a709518c829491610eb9610f0692855f52600460205260405f2090610eb388610eae610e93426123bb565b93610ea9610a168c5f52600460205260405f2090565b6113c1565b6113dc565b91611952565b5050610eea8561034683610ed5885f52600560205260405f2090565b9060018060a01b03165f5260205260405f2090565b50506040519485526001600160a01b0316939081906020820190565b0390a3005b346102ba575f3660031901126102ba5760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102ba575f3660031901126102ba576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102ba5760203660031901126102ba576004355f52600460205260206105c760405f20611efa565b346102ba5760203660031901126102ba576004355f526002602052602060405f2054604051908152f35b346102ba5760403660031901126102ba5761073f60243560043561100882610412565b805f525f80516020612bd283398151915260205261102c600160405f2001546118bd565b611e68565b346102ba5760206105c761104436610537565b929190916114eb565b346102ba5760a03660031901126102ba5760243560043561106d82610412565b60443591611079610423565b90608435906001600160401b0382116102ba5761109b600492369084016104f1565b6110a3611b28565b5f546020906110c8906110bc906001600160a01b031681565b6001600160a01b031690565b60405163b134427160e01b815294859182905afa928315610794575f93611207575b506001600160a01b0392831633036111f5576001546001600160a01b031683811661116a575b50506040805195865265ffffffffffff909316602086015216927f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed91819081015b0390a361073f60015f80516020612bf283398151915255565b9093604051946111a186611193602082019363724ab0f760e11b8552858c898d6024870161168a565b03601f198101885287610487565b62042e305a106111e3575f611151938192827f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed9951926203d090f15093611110565b604051638072475160e01b8152600490fd5b60405163dabc4ad960e01b8152600490fd5b61122a91935060203d602011611231575b6112228183610487565b810190611675565b915f6110ea565b503d611218565b346102ba575f3660031901126102ba5760206040517f1312a1cf530e56add9be4fd84db9051dcc7635952f09f735f9a29405b55846258152f35b346102ba575f3660031901126102ba575f546040516001600160a01b039091168152602090f35b346102ba5760403660031901126102ba5760206105c76024356112bb81610412565b6004356116e0565b346102ba575f3660031901126102ba5760206040516203d0908152f35b346102ba575f3660031901126102ba57602060405160018152f35b5f9081526005602090815260408083206001600160a01b03909416835292905220610586929190611a45565b908160209103126102ba575180151581036102ba5790565b6040513d5f823e3d90fd5b9061058692915f52600360205260405f20611a45565b9061058692915f52600460205260405f20611a45565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b634e487b7160e01b5f52601160045260245ffd5b5f198101919082116113bc57565b61139a565b919082039182116113bc57565b90600182018092116113bc57565b919082018092116113bc57565b604051906113f68261044c565b60606020838281520152565b81601f820112156102ba57805190611419826104d6565b926114276040519485610487565b828452602083830101116102ba57815f9260208093018386015e8301015290565b906020828203126102ba5781516001600160401b03928382116102ba5701906040828203126102ba576040519261147e8461044c565b82518181116102ba5782611493918501611402565b845260208301519081116102ba576114ab9201611402565b602082015290565b6001600160a01b0391821681529116602082015265ffffffffffff909116604082015260806060820181905261058692910190611376565b926114fb909291928284866121e2565b9290936115066113e9565b93805180611659575b505084159384156115c3575b8415611532575b5050505061152d5790565b505f90565b60208094955061155d910151604051958694859463530e1d4360e01b865260601c90600486016114b3565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610794575f916115a4575b50155f808080611522565b6115bd915060203d60201161078d5761077f8183610487565b5f611599565b5f549094506001600160a01b03166020848651926115f6604051948593849363530e1d4360e01b855289600486016114b3565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610794575f9161163a575b50159361151b565b611653915060203d60201161078d5761077f8183610487565b5f611632565b61166d929550602080918301019101611448565b925f8061150f565b908160209103126102ba575161058681610412565b919360a093610586969565ffffffffffff938552600180871b0316602085015260408401521660608201528160808201520190611376565b81156116cc570490565b634e487b7160e01b5f52601260045260245ffd5b5f546040516308834cb560e21b8082526001600160a01b0385811660048401529283166024830152929392602092909183816044817f000000000000000000000000000000000000000000000000000000000000000086165afa908115610794575f916117ed575b5015918215611769575b5050905061176357610586916122f8565b50505f90565b6040519081526001600160a01b0385166004820152606086901c602482015291508290829060449082907f0000000000000000000000000000000000000000000000000000000000000000165afa918215610794575f926117d0575b505015805f80611752565b6117e69250803d1061078d5761077f8183610487565b5f806117c5565b6118049150843d861161078d5761077f8183610487565b5f611748565b335f9081527f72a65082a5691803ab2b62c9bc729b34205ba1b183d950896526b2fd8714d0c7602052604090207e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf9060ff905b5416156109885750565b335f9081527f8f2dae99798887da307a4daa2c2d11f840b0cb9a6a67822660c531e9ad14dd00602052604090207f1312a1cf530e56add9be4fd84db9051dcc7635952f09f735f9a29405b55846259060ff9061185c565b5f8181525f80516020612bd283398151915260209081526040808320338452909152902060ff9061185c565b634e487b7160e01b5f52603260045260245ffd5b8054821015611912575f5260205f2001905f90565b6118e9565b90815491600160401b831015610467578261193a9160016104d4950181556118fd565b90919082549060031b91821b915f19901b1916179055565b909291926001820190815480156119e4575b508461196f846123ed565b5094909284549361197f83611efa565b96816119cf575b50156119ac575050505f1981019081116113bc5761193a85916119a8936118fd565b9190565b6119a89492936119c8926001600160d01b03909116919061292c565b5050611917565b65ffffffffffff83811691161490505f611986565b600160401b81101561046757806001611a0092018455836118fd565b8154905f199060031b1b191690555f611964565b908160209103126102ba575163ffffffff811681036102ba5790565b90600163ffffffff809316019182116113bc57565b91805115611b1e5780602080611a6093518301019101611a14565b91611a6b83826124f6565b92611a7c845165ffffffffffff1690565b9065ffffffffffff8085169216828114611b125782119182611ab2575b5050611aa9576105869250612426565b50506020015190565b909150611abf83546113ae565b63ffffffff831614918215611ad8575b50505f80611a99565b611b0a919250611af3611aed611aff92611a30565b856124f6565b5165ffffffffffff1690565b65ffffffffffff1690565b115f80611acf565b50505050506020015190565b5061058691612426565b5f80516020612bf28339815191526002815414611b455760029055565b604051633ee5aeb560e01b8152600490fd5b90815f52600360205260405f2081611b6e826123ed565b919390508315611bcc57611b8e916001600160d01b0316906001016118fd565b90549060031b1c5b82611bc2575b5050611ba6575050565b611bbe915f52600360205260405f2061034f426123bb565b5050565b119050815f611b9c565b50505f611b96565b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260409020545f80516020612bd28339815191529060ff16611763575f808052602091825260408082206001600160a01b038516835290925220805460ff1916600117905533906001600160a01b03165f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b6001600160a01b0381165f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c602052604090207fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c905f80516020612bd28339815191529060ff905b5416611d4e575f828152602091825260408082206001600160a01b038616835290925220805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b5050505f90565b6001600160a01b0381165f9081527f72a65082a5691803ab2b62c9bc729b34205ba1b183d950896526b2fd8714d0c7602052604090207e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf905f80516020612bd28339815191529060ff90611cea565b6001600160a01b0381165f9081527f8f2dae99798887da307a4daa2c2d11f840b0cb9a6a67822660c531e9ad14dd00602052604090207f1312a1cf530e56add9be4fd84db9051dcc7635952f09f735f9a29405b5584625905f80516020612bd28339815191529060ff90611cea565b5f8181525f80516020612bd2833981519152602081815260408084206001600160a01b038716855290915290912060ff90611cea565b5f8181525f80516020612bd2833981519152602081815260408084206001600160a01b03871685529091529091205460ff1615611d4e575f828152602091825260408082206001600160a01b038616835290925220805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b805480611f2957505f5b6001600160d01b03811615611763576001611f1f92016118fd565b90549060031b1c90565b5f199080828101116113bc57825f5260205f2001015460301c611f04565b9190916040818403126102ba578035611f5f81610412565b9260208201356001600160401b0381116102ba5761058692016104f1565b611f8991810190611f47565b6040516302910f8b60e31b81526001600160a01b039283166004820181905291906020816024817f000000000000000000000000000000000000000000000000000000000000000088165afa908115610794575f9161209c575b501561208a5761201e60409161201961206494611ffe612564565b60018060a01b03166001600160601b0360a01b5f5416175f55565b6126e4565b6020810151600180546001600160a01b0319166001600160a01b0390921691909117905580516001600160a01b031684811661207a575b5001516001600160a01b031690565b90811661206e5750565b61207790611c7f565b50565b61208390611bd4565b505f612055565b6040516362df054560e01b8152600490fd5b6120b5915060203d60201161078d5761077f8183610487565b5f611fe3565b6040519060a082018281106001600160401b038211176104675760405281608060609182815282602082015282604082015282808201520152565b906020828203126102ba5781516001600160401b03928382116102ba57019060a0828203126102ba576121276104a8565b9282518181116102ba578261213d918501611402565b845260208301518181116102ba5782612157918501611402565b602085015260408301518181116102ba5782612174918501611402565b604085015260608301518181116102ba5782612191918501611402565b606085015260808301519081116102ba576121ac9201611402565b608082015290565b908160209103126102ba575190565b60409065ffffffffffff61058694931681528160208201520190611376565b919392936121ee6120bb565b948051806122dc575b505061220860608601518285611360565b918261221a57505050509051905f9190565b61222e6122689183608089015191876112fb565b9160206122476110bc6110bc5f5460018060a01b031690565b8189015190604051808096819463810da75d60e01b835287600484016121c3565b03915afa8015610794576122a49561229e935f926122a9575b50612292919260408a01519161134a565b90818082109118021890565b90612844565b915190565b61229292506122cf9060203d6020116122d5575b6122c78183610487565b8101906121b4565b91612281565b503d6122bd565b6122f09296506020809183010191016120f6565b935f806121f7565b61230d610a16825f52600460205260405f2090565b908161231a575050505f90565b612335610a16600494610ed5845f52600560205260405f2090565b5f5460405163bd49c35f60e01b81529491929160209186919082906001600160a01b03165afa90811561079457610586945f92612392575b50610a16612383915f52600360205260405f2090565b90818082109118021890612844565b6123839192506123b3610a169160203d6020116122d5576122c78183610487565b92915061236d565b65ffffffffffff908181116123ce571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b8054806123fe5750505f905f905f90565b5f199181838101116113bc575f5260205f2001015460019165ffffffffffff82169160301c90565b908154905f829160058411612490575b612441935084612b72565b8061246957505f905b6001600160d01b0382161561176357610586916001611f1f92016118fd565b61248361247861248a926113ae565b835f5260205f200190565b5460301c90565b9061244a565b919261249b81612a47565b81039081116113bc5761244193855f5265ffffffffffff808360205f20015416908516105f146124cc575091612436565b9291506124d8906113ce565b90612436565b604051906124eb8261044c565b5f6020838281520152565b906020600161251a6125469361250a6124de565b506125136124de565b50856118fd565b5093604051946125298661044c565b549465ffffffffffff86169586825260301c9384910152016118fd565b905490604051926125568461044c565b835260031b1c602082015290565b61256c612a09565b612574612a09565b60015f80516020612bf283398151915255565b604051906125948261046c565b5f6040838281528260208201520152565b81601f820112156102ba578051916020916001600160401b038411610467578360051b90604051946125d985840187610487565b855283808601928201019283116102ba578301905b8282106125fc575050505090565b838091835161260a81610412565b8152019101906125ee565b906020828203126102ba5781516001600160401b03928382116102ba5701908181039260a084126102ba5760606040519461264f8661046c565b126102ba576040516126608161046c565b835161266b81610412565b8152602084015161267b81610412565b6020820152604084015161268e81610412565b6040820152845260608301518181116102ba57826126ad9185016125a5565b602085015260808301519081116102ba576126c892016125a5565b604082015290565b80518210156119125760209160051b010190565b612700906126f0612587565b5060208082518301019101612615565b8051519091906001600160a01b0316158061282a575b612818579060208101905f5b8251805182101561279c576110bc61273d8361274a936126d0565b516001600160a01b031690565b1561278a5761276c61276861276361273d8487516126d0565b611d55565b1590565b61277857600101612722565b604051635140fefd60e11b8152600490fd5b6040516323cda06760e01b8152600490fd5b506040925050818101905f5b8251805182101561280f576110bc61273d836127c3936126d0565b156127fe576127e16127686127dc61273d8487516126d0565b611dc3565b6127ed576001016127a8565b8351635140fefd60e11b8152600490fd5b83516323cda06760e01b8152600490fd5b50509150505190565b6040516303501f5960e11b8152600490fd5b506020820151511580612716575060408201515115612716565b91818302915f19818509938380861095039480860395146128c457848311156128b75790829109815f038216809204600280826003021880830282030280830282030280830282030280830282030280830282030280920290030293600183805f03040190848311900302920304170290565b8215600302601118612a37565b50509061058692506116c2565b8054600160401b811015610467576128ee916001820181556118fd565b61291957815160209092015160301b65ffffffffffff191665ffffffffffff92909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b805492939280156129df5761294361294e916113ae565b825f5260205f200190565b9182549265ffffffffffff918285169281168084116129cd57879303612994575061298d92509065ffffffffffff82549181199060301b169116179055565b60301c9190565b9150506129c8916129b46129a66104c7565b65ffffffffffff9093168352565b6001600160d01b03861660208301526128d1565b61298d565b604051632520601d60e01b8152600490fd5b5090612a04916129f06129a66104c7565b6001600160d01b03851660208301526128d1565b5f9190565b60ff5f80516020612c128339815191525460401c1615612a2557565b604051631afcd79f60e31b8152600490fd5b634e487b715f526020526024601cfd5b600181111561058657600181600160801b811015612b60575b612b08612afe612af4612aea612ae0612ad6612b1497600488600160401b612b0f9a1015612b53575b640100000000811015612b46575b62010000811015612b39575b610100811015612b2d575b6010811015612b21575b1015612b19575b60030260011c612acf818b6116c2565b0160011c90565b612acf818a6116c2565b612acf81896116c2565b612acf81886116c2565b612acf81876116c2565b612acf81866116c2565b80936116c2565b821190565b900390565b60011b612abf565b811c9160021b91612ab8565b60081c91811b91612aae565b60101c9160081b91612aa3565b60201c9160101b91612a97565b60401c9160201b91612a89565b50600160401b9050608082901c612a60565b91905b838210612b825750505090565b9091928083169080841860011c82018092116113bc57845f5265ffffffffffff808360205f20015416908416105f14612bbf5750925b9190612b75565b939250612bcb906113ce565b91612bb856fe02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212208e62a3de49e3ae4e2866dc7a19f6c27db5ea80a1d93479daa4d794b0bb3fb02264736f6c63430008190033","sourceMap":"542:7244:85:-:0;;;;-1:-1:-1;;;;;542:7244:85;;;;;;;;;;-1:-1:-1;;542:7244:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;8837:64:22;542:7244:85;;;;;;;;;7896:76:22;;542:7244:85;;;;7985:34:22;7981:146;;-1:-1:-1;525:17:76;;;542:7244:85;525:17:76;542:7244:85;552:12:76;542:7244:85;2360:34:83;2404:28;;2442:57;;;;2509:61;;;;542:7244:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2404:28:83;542:7244:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7981:146:22;-1:-1:-1;;;;;;542:7244:85;;;;;;;;;;;;;8087:29:22;;542:7244:85;;8087:29:22;7981:146;;;;;7896:76;542:7244:85;;-1:-1:-1;;;7938:23:22;;;;;542:7244:85;-1:-1:-1;542:7244:85;;;;;;-1:-1:-1;542:7244:85;;;;;-1:-1:-1;542:7244:85;;;;-1:-1:-1;;;;;542:7244:85;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a714610264578063021453481461025f578063103f29071461025a578063128e5d82146102555780631a7a7044146102505780631a80e5001461024b57806323f752d514610246578063248a9ca3146102415780632dd310001461023c5780632f2ff15d1461023757806336568abe146102325780633dfd38731461022d5780633eb22c0f1461022857806342c53e3314610223578063439fab911461021e578063557cab44146102195780635d32a1c9146102145780636679191e1461020f5780637d24bb271461020a5780637f5a7c7b146102055780638b3f10b01461020057806391d14854146101fb5780639f86fd85146101f6578063a217fddf146101f1578063a33bc287146101ec578063bb24fe8a146101e7578063c0cd7c3e146101e2578063c43dc03f146101dd578063d15b740e146101d8578063d547741f146101d3578063e02f6937146101ce578063e49561ee146101c9578063e78eb6ae146101c4578063fbfa77cf146101bf578063fd4d447c146101ba578063ff54740f146101b55763ffa1ad74146101b0575f80fd5b6112e0565b6112c3565b611299565b611272565b611238565b61104d565b611031565b610fe5565b610fbb565b610f92565b610f4e565b610f0b565b610df0565b610dd6565b610d1c565b610cbe565b610c9b565b610c73565b610c3a565b610c00565b610bdd565b610b80565b610a48565b6109cf565b6109a6565b6108ad565b610862565b610816565b6107d2565b610799565b610613565b6105cf565b610589565b6103ce565b61038a565b6102be565b346102ba5760203660031901126102ba5760043563ffffffff60e01b81168091036102ba57602090637965db0b60e01b81149081156102a9575b506040519015158152f35b6301ffc9a760e01b1490505f61029e565b5f80fd5b346102ba576040806003193601126102ba5760043590602435906102e061180a565b825f526002602052805f2054821161037a57825f52600360205281610306825f20611efa565b1461036a5781610365916103557e899d104fc3d8820bd96540612bcc5c448c8837b13b9f7faa43ad0728f0c14f94610346875f52600360205260405f2090565b61034f426123bb565b90611952565b5050519081529081906020820190565b0390a2005b5163a741a04560e01b8152600490fd5b51631eefc06360e31b8152600490fd5b346102ba575f3660031901126102ba576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102ba575f3660031901126102ba576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6001600160a01b038116036102ba57565b6064359065ffffffffffff821682036102ba57565b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b0382111761046757604052565b610438565b606081019081106001600160401b0382111761046757604052565b90601f801991011681019081106001600160401b0382111761046757604052565b6040519060a082018281106001600160401b0382111761046757604052565b604051906104d48261044c565b565b6001600160401b03811161046757601f01601f191660200190565b81601f820112156102ba57803590610508826104d6565b926105166040519485610487565b828452602083830101116102ba57815f926020809301838601378301015290565b9060806003198301126102ba576004359160243561055481610412565b9160443565ffffffffffff811681036102ba5791606435906001600160401b0382116102ba57610586916004016104f1565b90565b346102ba5760206105c76105c261059f36610537565b939190925f526005865260405f209060018060a01b03165f5260205260405f2090565b611a45565b604051908152f35b346102ba575f3660031901126102ba576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102ba5760403660031901126102ba576004356001600160601b03811681036102ba5760243590610643611b28565b6040516302910f8b60e31b81523360048201526020816024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa908115610794575f91610765575b5015610753576001600160601b03166bffffffffffffffffffffffff193360601b161790806106cd835f52600260205260405f2090565b541461074157610726817fc67e7929681aa1bccd63f52b3799bf5805f3009f197db6fdf584b14f7fbf608c9261070b855f52600260205260405f2090565b556107168185611b57565b6040519081529081906020820190565b0390a261073f60015f80516020612bf283398151915255565b005b60405163a741a04560e01b8152600490fd5b6040516323d53b9760e21b8152600490fd5b610787915060203d60201161078d575b61077f8183610487565b810190611327565b5f610696565b503d610775565b61133f565b346102ba5760203660031901126102ba576004355f525f80516020612bd28339815191526020526020600160405f200154604051908152f35b346102ba575f3660031901126102ba576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102ba5760403660031901126102ba5761073f60243560043561083982610412565b805f525f80516020612bd283398151915260205261085d600160405f2001546118bd565b611e32565b346102ba5760403660031901126102ba5760243561087f81610412565b336001600160a01b0382160361089b5761073f90600435611e68565b60405163334bd91960e11b8152600490fd5b346102ba5760203660031901126102ba576004356108ca81610412565b6108d2611b28565b335f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c60205260409020547fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c9060ff161561098857506001546001600160a01b039182169181168214610741576001600160a01b03191681176001557f5bbb1d3ebb6a3ad2a0f17ff35e579a83af60604d1d3c2a4c83c62adecadf666d5f80a260015f80516020612bf283398151915255005b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b346102ba5760203660031901126102ba576004355f52600360205260206105c760405f20611efa565b346102ba5760403660031901126102ba5760206105c7610a166024356109f481610412565b6004355f526005845260405f209060018060a01b03165f5260205260405f2090565b611efa565b9181601f840112156102ba578235916001600160401b0383116102ba57602083818601950101116102ba57565b346102ba5760203660031901126102ba576001600160401b036004358181116102ba57610a79903690600401610a1b565b5f80516020612c12833981519152549260ff8460401c1615931680159081610b78575b6001149081610b6e575b159081610b65575b50610b53575f80516020612c12833981519152805467ffffffffffffffff19166001179055610ae19183610b2f57611f7d565b610ae757005b5f80516020612c12833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f80516020612c12833981519152805460ff60401b1916600160401b179055611f7d565b60405163f92ee8a960e01b8152600490fd5b9050155f610aae565b303b159150610aa6565b849150610a9c565b346102ba575f3660031901126102ba576020604051614e208152f35b60606003198201126102ba576004359160243565ffffffffffff811681036102ba5791604435906001600160401b0382116102ba57610586916004016104f1565b346102ba5760206105c7610bf036610b9c565b915f526003845260405f20611a45565b346102ba575f3660031901126102ba5760206040517fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c8152f35b346102ba575f3660031901126102ba5760206040517e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf8152f35b346102ba575f3660031901126102ba576001546040516001600160a01b039091168152602090f35b346102ba5760206105c7610cae36610b9c565b915f526004845260405f20611a45565b346102ba5760403660031901126102ba57602060ff610d10602435610ce281610412565b6004355f525f80516020612bd2833981519152845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b346102ba576040806003193601126102ba57600435610d3a81610412565b602435906001600160401b0382116102ba575f8091610d60610dc4943690600401610a1b565b908187519283928337810184815203915af43d15610dcc57610db63d610d85816104d6565b90610d9286519283610487565b81523d5f602083013e5b845194859315156020850152808401526060830190611376565b03601f198101835282610487565b805190602001fd5b610db66060610d9c565b346102ba575f3660031901126102ba5760206040515f8152f35b346102ba5760603660031901126102ba57602435600435610e1082610412565b60443591610e1c611866565b5f8281526005602090815260408083206001600160a01b03851684529091529020610e4690611efa565b838114610741577f739a5a3ec0ff71e2386d0013deac5f44e0935a98def2e2a5ddf9a709518c829491610eb9610f0692855f52600460205260405f2090610eb388610eae610e93426123bb565b93610ea9610a168c5f52600460205260405f2090565b6113c1565b6113dc565b91611952565b5050610eea8561034683610ed5885f52600560205260405f2090565b9060018060a01b03165f5260205260405f2090565b50506040519485526001600160a01b0316939081906020820190565b0390a3005b346102ba575f3660031901126102ba5760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102ba575f3660031901126102ba576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102ba5760203660031901126102ba576004355f52600460205260206105c760405f20611efa565b346102ba5760203660031901126102ba576004355f526002602052602060405f2054604051908152f35b346102ba5760403660031901126102ba5761073f60243560043561100882610412565b805f525f80516020612bd283398151915260205261102c600160405f2001546118bd565b611e68565b346102ba5760206105c761104436610537565b929190916114eb565b346102ba5760a03660031901126102ba5760243560043561106d82610412565b60443591611079610423565b90608435906001600160401b0382116102ba5761109b600492369084016104f1565b6110a3611b28565b5f546020906110c8906110bc906001600160a01b031681565b6001600160a01b031690565b60405163b134427160e01b815294859182905afa928315610794575f93611207575b506001600160a01b0392831633036111f5576001546001600160a01b031683811661116a575b50506040805195865265ffffffffffff909316602086015216927f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed91819081015b0390a361073f60015f80516020612bf283398151915255565b9093604051946111a186611193602082019363724ab0f760e11b8552858c898d6024870161168a565b03601f198101885287610487565b62042e305a106111e3575f611151938192827f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed9951926203d090f15093611110565b604051638072475160e01b8152600490fd5b60405163dabc4ad960e01b8152600490fd5b61122a91935060203d602011611231575b6112228183610487565b810190611675565b915f6110ea565b503d611218565b346102ba575f3660031901126102ba5760206040517f1312a1cf530e56add9be4fd84db9051dcc7635952f09f735f9a29405b55846258152f35b346102ba575f3660031901126102ba575f546040516001600160a01b039091168152602090f35b346102ba5760403660031901126102ba5760206105c76024356112bb81610412565b6004356116e0565b346102ba575f3660031901126102ba5760206040516203d0908152f35b346102ba575f3660031901126102ba57602060405160018152f35b5f9081526005602090815260408083206001600160a01b03909416835292905220610586929190611a45565b908160209103126102ba575180151581036102ba5790565b6040513d5f823e3d90fd5b9061058692915f52600360205260405f20611a45565b9061058692915f52600460205260405f20611a45565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b634e487b7160e01b5f52601160045260245ffd5b5f198101919082116113bc57565b61139a565b919082039182116113bc57565b90600182018092116113bc57565b919082018092116113bc57565b604051906113f68261044c565b60606020838281520152565b81601f820112156102ba57805190611419826104d6565b926114276040519485610487565b828452602083830101116102ba57815f9260208093018386015e8301015290565b906020828203126102ba5781516001600160401b03928382116102ba5701906040828203126102ba576040519261147e8461044c565b82518181116102ba5782611493918501611402565b845260208301519081116102ba576114ab9201611402565b602082015290565b6001600160a01b0391821681529116602082015265ffffffffffff909116604082015260806060820181905261058692910190611376565b926114fb909291928284866121e2565b9290936115066113e9565b93805180611659575b505084159384156115c3575b8415611532575b5050505061152d5790565b505f90565b60208094955061155d910151604051958694859463530e1d4360e01b865260601c90600486016114b3565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610794575f916115a4575b50155f808080611522565b6115bd915060203d60201161078d5761077f8183610487565b5f611599565b5f549094506001600160a01b03166020848651926115f6604051948593849363530e1d4360e01b855289600486016114b3565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610794575f9161163a575b50159361151b565b611653915060203d60201161078d5761077f8183610487565b5f611632565b61166d929550602080918301019101611448565b925f8061150f565b908160209103126102ba575161058681610412565b919360a093610586969565ffffffffffff938552600180871b0316602085015260408401521660608201528160808201520190611376565b81156116cc570490565b634e487b7160e01b5f52601260045260245ffd5b5f546040516308834cb560e21b8082526001600160a01b0385811660048401529283166024830152929392602092909183816044817f000000000000000000000000000000000000000000000000000000000000000086165afa908115610794575f916117ed575b5015918215611769575b5050905061176357610586916122f8565b50505f90565b6040519081526001600160a01b0385166004820152606086901c602482015291508290829060449082907f0000000000000000000000000000000000000000000000000000000000000000165afa918215610794575f926117d0575b505015805f80611752565b6117e69250803d1061078d5761077f8183610487565b5f806117c5565b6118049150843d861161078d5761077f8183610487565b5f611748565b335f9081527f72a65082a5691803ab2b62c9bc729b34205ba1b183d950896526b2fd8714d0c7602052604090207e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf9060ff905b5416156109885750565b335f9081527f8f2dae99798887da307a4daa2c2d11f840b0cb9a6a67822660c531e9ad14dd00602052604090207f1312a1cf530e56add9be4fd84db9051dcc7635952f09f735f9a29405b55846259060ff9061185c565b5f8181525f80516020612bd283398151915260209081526040808320338452909152902060ff9061185c565b634e487b7160e01b5f52603260045260245ffd5b8054821015611912575f5260205f2001905f90565b6118e9565b90815491600160401b831015610467578261193a9160016104d4950181556118fd565b90919082549060031b91821b915f19901b1916179055565b909291926001820190815480156119e4575b508461196f846123ed565b5094909284549361197f83611efa565b96816119cf575b50156119ac575050505f1981019081116113bc5761193a85916119a8936118fd565b9190565b6119a89492936119c8926001600160d01b03909116919061292c565b5050611917565b65ffffffffffff83811691161490505f611986565b600160401b81101561046757806001611a0092018455836118fd565b8154905f199060031b1b191690555f611964565b908160209103126102ba575163ffffffff811681036102ba5790565b90600163ffffffff809316019182116113bc57565b91805115611b1e5780602080611a6093518301019101611a14565b91611a6b83826124f6565b92611a7c845165ffffffffffff1690565b9065ffffffffffff8085169216828114611b125782119182611ab2575b5050611aa9576105869250612426565b50506020015190565b909150611abf83546113ae565b63ffffffff831614918215611ad8575b50505f80611a99565b611b0a919250611af3611aed611aff92611a30565b856124f6565b5165ffffffffffff1690565b65ffffffffffff1690565b115f80611acf565b50505050506020015190565b5061058691612426565b5f80516020612bf28339815191526002815414611b455760029055565b604051633ee5aeb560e01b8152600490fd5b90815f52600360205260405f2081611b6e826123ed565b919390508315611bcc57611b8e916001600160d01b0316906001016118fd565b90549060031b1c5b82611bc2575b5050611ba6575050565b611bbe915f52600360205260405f2061034f426123bb565b5050565b119050815f611b9c565b50505f611b96565b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260409020545f80516020612bd28339815191529060ff16611763575f808052602091825260408082206001600160a01b038516835290925220805460ff1916600117905533906001600160a01b03165f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b6001600160a01b0381165f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c602052604090207fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c905f80516020612bd28339815191529060ff905b5416611d4e575f828152602091825260408082206001600160a01b038616835290925220805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b5050505f90565b6001600160a01b0381165f9081527f72a65082a5691803ab2b62c9bc729b34205ba1b183d950896526b2fd8714d0c7602052604090207e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf905f80516020612bd28339815191529060ff90611cea565b6001600160a01b0381165f9081527f8f2dae99798887da307a4daa2c2d11f840b0cb9a6a67822660c531e9ad14dd00602052604090207f1312a1cf530e56add9be4fd84db9051dcc7635952f09f735f9a29405b5584625905f80516020612bd28339815191529060ff90611cea565b5f8181525f80516020612bd2833981519152602081815260408084206001600160a01b038716855290915290912060ff90611cea565b5f8181525f80516020612bd2833981519152602081815260408084206001600160a01b03871685529091529091205460ff1615611d4e575f828152602091825260408082206001600160a01b038616835290925220805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b805480611f2957505f5b6001600160d01b03811615611763576001611f1f92016118fd565b90549060031b1c90565b5f199080828101116113bc57825f5260205f2001015460301c611f04565b9190916040818403126102ba578035611f5f81610412565b9260208201356001600160401b0381116102ba5761058692016104f1565b611f8991810190611f47565b6040516302910f8b60e31b81526001600160a01b039283166004820181905291906020816024817f000000000000000000000000000000000000000000000000000000000000000088165afa908115610794575f9161209c575b501561208a5761201e60409161201961206494611ffe612564565b60018060a01b03166001600160601b0360a01b5f5416175f55565b6126e4565b6020810151600180546001600160a01b0319166001600160a01b0390921691909117905580516001600160a01b031684811661207a575b5001516001600160a01b031690565b90811661206e5750565b61207790611c7f565b50565b61208390611bd4565b505f612055565b6040516362df054560e01b8152600490fd5b6120b5915060203d60201161078d5761077f8183610487565b5f611fe3565b6040519060a082018281106001600160401b038211176104675760405281608060609182815282602082015282604082015282808201520152565b906020828203126102ba5781516001600160401b03928382116102ba57019060a0828203126102ba576121276104a8565b9282518181116102ba578261213d918501611402565b845260208301518181116102ba5782612157918501611402565b602085015260408301518181116102ba5782612174918501611402565b604085015260608301518181116102ba5782612191918501611402565b606085015260808301519081116102ba576121ac9201611402565b608082015290565b908160209103126102ba575190565b60409065ffffffffffff61058694931681528160208201520190611376565b919392936121ee6120bb565b948051806122dc575b505061220860608601518285611360565b918261221a57505050509051905f9190565b61222e6122689183608089015191876112fb565b9160206122476110bc6110bc5f5460018060a01b031690565b8189015190604051808096819463810da75d60e01b835287600484016121c3565b03915afa8015610794576122a49561229e935f926122a9575b50612292919260408a01519161134a565b90818082109118021890565b90612844565b915190565b61229292506122cf9060203d6020116122d5575b6122c78183610487565b8101906121b4565b91612281565b503d6122bd565b6122f09296506020809183010191016120f6565b935f806121f7565b61230d610a16825f52600460205260405f2090565b908161231a575050505f90565b612335610a16600494610ed5845f52600560205260405f2090565b5f5460405163bd49c35f60e01b81529491929160209186919082906001600160a01b03165afa90811561079457610586945f92612392575b50610a16612383915f52600360205260405f2090565b90818082109118021890612844565b6123839192506123b3610a169160203d6020116122d5576122c78183610487565b92915061236d565b65ffffffffffff908181116123ce571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b8054806123fe5750505f905f905f90565b5f199181838101116113bc575f5260205f2001015460019165ffffffffffff82169160301c90565b908154905f829160058411612490575b612441935084612b72565b8061246957505f905b6001600160d01b0382161561176357610586916001611f1f92016118fd565b61248361247861248a926113ae565b835f5260205f200190565b5460301c90565b9061244a565b919261249b81612a47565b81039081116113bc5761244193855f5265ffffffffffff808360205f20015416908516105f146124cc575091612436565b9291506124d8906113ce565b90612436565b604051906124eb8261044c565b5f6020838281520152565b906020600161251a6125469361250a6124de565b506125136124de565b50856118fd565b5093604051946125298661044c565b549465ffffffffffff86169586825260301c9384910152016118fd565b905490604051926125568461044c565b835260031b1c602082015290565b61256c612a09565b612574612a09565b60015f80516020612bf283398151915255565b604051906125948261046c565b5f6040838281528260208201520152565b81601f820112156102ba578051916020916001600160401b038411610467578360051b90604051946125d985840187610487565b855283808601928201019283116102ba578301905b8282106125fc575050505090565b838091835161260a81610412565b8152019101906125ee565b906020828203126102ba5781516001600160401b03928382116102ba5701908181039260a084126102ba5760606040519461264f8661046c565b126102ba576040516126608161046c565b835161266b81610412565b8152602084015161267b81610412565b6020820152604084015161268e81610412565b6040820152845260608301518181116102ba57826126ad9185016125a5565b602085015260808301519081116102ba576126c892016125a5565b604082015290565b80518210156119125760209160051b010190565b612700906126f0612587565b5060208082518301019101612615565b8051519091906001600160a01b0316158061282a575b612818579060208101905f5b8251805182101561279c576110bc61273d8361274a936126d0565b516001600160a01b031690565b1561278a5761276c61276861276361273d8487516126d0565b611d55565b1590565b61277857600101612722565b604051635140fefd60e11b8152600490fd5b6040516323cda06760e01b8152600490fd5b506040925050818101905f5b8251805182101561280f576110bc61273d836127c3936126d0565b156127fe576127e16127686127dc61273d8487516126d0565b611dc3565b6127ed576001016127a8565b8351635140fefd60e11b8152600490fd5b83516323cda06760e01b8152600490fd5b50509150505190565b6040516303501f5960e11b8152600490fd5b506020820151511580612716575060408201515115612716565b91818302915f19818509938380861095039480860395146128c457848311156128b75790829109815f038216809204600280826003021880830282030280830282030280830282030280830282030280830282030280920290030293600183805f03040190848311900302920304170290565b8215600302601118612a37565b50509061058692506116c2565b8054600160401b811015610467576128ee916001820181556118fd565b61291957815160209092015160301b65ffffffffffff191665ffffffffffff92909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b805492939280156129df5761294361294e916113ae565b825f5260205f200190565b9182549265ffffffffffff918285169281168084116129cd57879303612994575061298d92509065ffffffffffff82549181199060301b169116179055565b60301c9190565b9150506129c8916129b46129a66104c7565b65ffffffffffff9093168352565b6001600160d01b03861660208301526128d1565b61298d565b604051632520601d60e01b8152600490fd5b5090612a04916129f06129a66104c7565b6001600160d01b03851660208301526128d1565b5f9190565b60ff5f80516020612c128339815191525460401c1615612a2557565b604051631afcd79f60e31b8152600490fd5b634e487b715f526020526024601cfd5b600181111561058657600181600160801b811015612b60575b612b08612afe612af4612aea612ae0612ad6612b1497600488600160401b612b0f9a1015612b53575b640100000000811015612b46575b62010000811015612b39575b610100811015612b2d575b6010811015612b21575b1015612b19575b60030260011c612acf818b6116c2565b0160011c90565b612acf818a6116c2565b612acf81896116c2565b612acf81886116c2565b612acf81876116c2565b612acf81866116c2565b80936116c2565b821190565b900390565b60011b612abf565b811c9160021b91612ab8565b60081c91811b91612aae565b60101c9160081b91612aa3565b60201c9160101b91612a97565b60401c9160201b91612a89565b50600160401b9050608082901c612a60565b91905b838210612b825750505090565b9091928083169080841860011c82018092116113bc57845f5265ffffffffffff808360205f20015416908416105f14612bbf5750925b9190612b75565b939250612bcb906113ce565b91612bb856fe02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212208e62a3de49e3ae4e2866dc7a19f6c27db5ea80a1d93479daa4d794b0bb3fb02264736f6c63430008190033","sourceMap":"542:7244:85:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;-1:-1:-1;;542:7244:85;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3551:47:19;;;:87;;;;542:7244:85;;;;;;;;;;3551:87:19;-1:-1:-1;;;1134:40:28;;-1:-1:-1;3551:87:19;;;542:7244:85;-1:-1:-1;542:7244:85;;;;;;;;;;;;;;;;;;;;3202:4:19;;;:::i;:::-;542:7244:85;-1:-1:-1;542:7244:85;3610:15;542:7244;;;-1:-1:-1;542:7244:85;;3601:36;;3597:98;;542:7244;-1:-1:-1;542:7244:85;2233:13;542:7244;;;2233:34;542:7244;-1:-1:-1;542:7244:85;2233:34;:::i;:::-;3709;3705:84;;3799:25;3871:35;3799:25;:56;3871:35;3799:25;;;542:7244;;2233:13;542:7244;;;;;;;3799:25;819:34:68;837:15;819:34;:::i;:::-;3799:56:85;;:::i;:::-;-1:-1:-1;;542:7244:85;;;;;;;;;;;;3871:35;;;;542:7244;3705:84;542:7244;-1:-1:-1;;;3766:12:85;;542:7244;;3766:12;3597:98;542:7244;-1:-1:-1;;;3660:24:85;;542:7244;;3660:24;542:7244;;;;;;-1:-1:-1;;542:7244:85;;;;;;1537:38:83;-1:-1:-1;;;;;542:7244:85;;;;;;;;;;;;-1:-1:-1;;542:7244:85;;;;;;1632:54:83;-1:-1:-1;;;;;542:7244:85;;;;;;;-1:-1:-1;;;;;542:7244:85;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;542:7244:85;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;-1:-1:-1;;;;;542:7244:85;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;542:7244:85;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;542:7244:85;;;;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;:::-;-1:-1:-1;;;;;542:7244:85;;;;;;-1:-1:-1;;542:7244:85;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;542:7244:85;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;542:7244:85;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;;;;542:7244:85;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;3090:79;:44;542:7244;;;:::i;:::-;;;;;-1:-1:-1;542:7244:85;3090:22;542:7244;;;-1:-1:-1;542:7244:85;;;;;;;;;;;;;;;;;3090:44;:79;:::i;:::-;542:7244;;;;;;;;;;;;-1:-1:-1;;542:7244:85;;;;;;1743:56:83;-1:-1:-1;;;;;542:7244:85;;;;;;;;;;;;-1:-1:-1;;542:7244:85;;;;;;-1:-1:-1;;;;;542:7244:85;;;;;;;;3361:103:26;;;:::i;:::-;542:7244:85;;-1:-1:-1;;;4285:48:83;;4322:10;542:7244:85;4285:48:83;;542:7244:85;;;;;-1:-1:-1;;;;;4295:16:83;542:7244:85;4285:48:83;;;;;;;-1:-1:-1;4285:48:83;;;542:7244:85;4284:49:83;;4280:99;;-1:-1:-1;;;;;542:7244:85;-1:-1:-1;;4322:10:83;297:2:95;542:7244:85;;267:46:95;4459:27:83;;;;542:7244:85;;4459:15:83;542:7244:85;;;;;;;4459:27:83;542:7244:85;4459:37:83;4455:87;;4654:38;4552:27;4654:38;4552:27;;;542:7244:85;;4459:15:83;542:7244:85;;;;;;;4552:27:83;542:7244:85;4631:6:83;;;;:::i;:::-;542:7244:85;;;;;;;;;;;;;4654:38:83;;;;3426:1:26;1949;-1:-1:-1;;;;;;;;;;;542:7244:85;3860:283:26;3426:1;542:7244:85;4455:87:83;542:7244:85;;-1:-1:-1;;;4519:12:83;;542:7244:85;;4519:12:83;4280:99;542:7244:85;;-1:-1:-1;;;4356:12:83;;542:7244:85;;4356:12:83;4285:48;;;;542:7244:85;4285:48:83;542:7244:85;4285:48:83;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;542:7244:85:-;;;;;;-1:-1:-1;;542:7244:85;;;;;;-1:-1:-1;542:7244:85;-1:-1:-1;;;;;;;;;;;542:7244:85;;;4919:24:19;542:7244:85;-1:-1:-1;542:7244:85;4919:24:19;542:7244:85;;;;;;;;;;;;;-1:-1:-1;;542:7244:85;;;;;;322:32:76;-1:-1:-1;;;;;542:7244:85;;;;;;;;;;;;-1:-1:-1;;542:7244:85;;;;5350:25:19;542:7244:85;;;;;;;:::i;:::-;;-1:-1:-1;542:7244:85;-1:-1:-1;;;;;;;;;;;542:7244:85;;3202:4:19;4919:24;542:7244:85;-1:-1:-1;542:7244:85;4919:24:19;542:7244:85;3202:4:19;:::i;:::-;5350:25;:::i;542:7244:85:-;;;;;;-1:-1:-1;;542:7244:85;;;;;;;;;:::i;:::-;966:10:24;-1:-1:-1;;;;;542:7244:85;;6441:34:19;6437:102;;6549:37;542:7244:85;;;6549:37:19;:::i;6437:102::-;542:7244:85;;-1:-1:-1;;;6498:30:19;;542:7244:85;;6498:30:19;542:7244:85;;;;;;-1:-1:-1;;542:7244:85;;;;;;;;;:::i;:::-;3361:103:26;;:::i;:::-;966:10:24;-1:-1:-1;542:7244:85;;;;;;;;;;1356:26:83;;542:7244:85;;4468:23:19;4464:108;;-1:-1:-1;4861:4:83;542:7244:85;-1:-1:-1;;;;;542:7244:85;;;;;;4861:13:83;;4857:63;;-1:-1:-1;;;;;;542:7244:85;;;4861:4:83;542:7244:85;4958:14:83;-1:-1:-1;;4958:14:83;4861:4;-1:-1:-1;;;;;;;;;;;542:7244:85;;4464:108:19;542:7244:85;;;;4514:47:19;;;;;;966:10:24;542:7244:85;4514:47:19;;542:7244:85;;;;;4514:47:19;542:7244:85;;;;;;-1:-1:-1;;542:7244:85;;;;;;-1:-1:-1;542:7244:85;2233:13;542:7244;;;2233:34;542:7244;-1:-1:-1;542:7244:85;2233:34;:::i;542:7244::-;;;;;;-1:-1:-1;;542:7244:85;;;;;3358:53;:44;542:7244;;;;;:::i;:::-;;;-1:-1:-1;542:7244:85;3358:22;542:7244;;;-1:-1:-1;542:7244:85;;;;;;;;;;;;;;;;;3358:44;:53;:::i;542:7244::-;;;;;;;;;;;;;-1:-1:-1;;;;;542:7244:85;;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;542:7244:85;;;;-1:-1:-1;;;;;542:7244:85;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;542:7244:85;;;;;;;4301:16:22;542:7244:85;;4726:16:22;;:34;;;;542:7244:85;4805:1:22;4790:16;:50;;;;542:7244:85;4855:13:22;:30;;;;542:7244:85;4851:91:22;;;-1:-1:-1;;;;;;;;;;;542:7244:85;;-1:-1:-1;;542:7244:85;;;;;718:4:76;;4951:18:22;4979:67;;718:4:76;:::i;:::-;5066:101:22;;542:7244:85;5066:101:22;-1:-1:-1;;;;;;;;;;;542:7244:85;;-1:-1:-1;;;;542:7244:85;;;;;-1:-1:-1;542:7244:85;;5142:14:22;;542:7244:85;;5142:14:22;542:7244:85;4979:67:22;-1:-1:-1;;;;;;;;;;;542:7244:85;;-1:-1:-1;;;;542:7244:85;-1:-1:-1;;;542:7244:85;;;718:4:76;:::i;4851:91:22:-;542:7244:85;;-1:-1:-1;;;4908:23:22;;542:7244:85;;4908:23:22;4855:30;4872:13;;;4855:30;;;4790:50;4818:4;4810:25;:30;;-1:-1:-1;4790:50:22;;4726:34;;;-1:-1:-1;4726:34:22;;542:7244:85;;;;;;-1:-1:-1;;542:7244:85;;;;;;;1253:6:83;542:7244:85;;;;;-1:-1:-1;;542:7244:85;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;542:7244:85;;;;;;;;;:::i;:::-;;;;;1997:60;542:7244;;;:::i;:::-;;-1:-1:-1;542:7244:85;1997:13;542:7244;;;-1:-1:-1;542:7244:85;1997:60;:::i;542:7244::-;;;;;;-1:-1:-1;;542:7244:85;;;;;;;1356:26:83;542:7244:85;;;;;;;;;-1:-1:-1;;542:7244:85;;;;;;;810:35;542:7244;;;;;;;;;-1:-1:-1;;542:7244:85;;;;;;;;-1:-1:-1;;;;;542:7244:85;;;;;;;;;;;;;2512:74;542:7244;;;:::i;:::-;;-1:-1:-1;542:7244:85;;;;;-1:-1:-1;542:7244:85;2512:74;:::i;542:7244::-;;;;;;-1:-1:-1;;542:7244:85;;;;;;3901:31:19;542:7244:85;;;;;:::i;:::-;;;-1:-1:-1;542:7244:85;-1:-1:-1;;;;;;;;;;;542:7244:85;;;-1:-1:-1;542:7244:85;;;;;;;;;;;;;;;;;3901:31:19;542:7244:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;542:7244:85;;;;-1:-1:-1;542:7244:85;;;477:31:82;542:7244:85;;;;;;:::i;:::-;;;;;;;;;;;;;;;416:25:82;;;;542:7244:85;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;542:7244:85;;;;;;;;;;;;;477:31:82;;542:7244:85;;;;;;;;;;:::i;:::-;477:31:82;542:7244:85;;477:31:82;;;;;;:::i;:::-;518:79;;;542:7244:85;518:79:82;;542:7244:85;;;;;;;;;;;-1:-1:-1;;542:7244:85;;;;;;;;;;;;;;;;;-1:-1:-1;;542:7244:85;;;;;;;;;;;:::i;:::-;;;3202:4:19;;;:::i;:::-;-1:-1:-1;542:7244:85;;;3358:22;542:7244;;;;;;;;-1:-1:-1;;;;;542:7244:85;;;;;;;;;3358:53;;;:::i;:::-;4249:32;;;4245:82;;4596:54;542:7244;4337:158;4596:54;542:7244;;-1:-1:-1;542:7244:85;;;;;-1:-1:-1;542:7244:85;837:15:68;4413:72:85;837:15:68;4413:63:85;819:34:68;837:15;819:34;:::i;:::-;2776:39:85;:48;:39;;542:7244;;;;;;;;;;2776:48;4413:63;:::i;:::-;:72;:::i;:::-;4337:158;;:::i;:::-;4505:34;;:75;:34;:44;:34;;;542:7244;;3358:22;542:7244;;;;;;;4505:34;542:7244;;;;;;;;;;;;;;;;4505:75;-1:-1:-1;;542:7244:85;;;;;-1:-1:-1;;;;;542:7244:85;;;;;;;;;;4596:54;;;;542:7244;;;;;;;-1:-1:-1;;542:7244:85;;;;;;;-1:-1:-1;;;;;404:28:76;542:7244:85;;;;;;;;;;-1:-1:-1;;542:7244:85;;;;;;1439:41:83;-1:-1:-1;;;;;542:7244:85;;;;;;;;;;;;-1:-1:-1;;542:7244:85;;;;;;-1:-1:-1;542:7244:85;;;;;2776:48;542:7244;-1:-1:-1;542:7244:85;2776:48;:::i;542:7244::-;;;;;;-1:-1:-1;;542:7244:85;;;;;;-1:-1:-1;542:7244:85;2009:67:83;542:7244:85;;;;-1:-1:-1;542:7244:85;;;;;;;;;;;;;;-1:-1:-1;;542:7244:85;;;;5767:26:19;542:7244:85;;;;;;;:::i;:::-;;-1:-1:-1;542:7244:85;-1:-1:-1;;;;;;;;;;;542:7244:85;;3202:4:19;4919:24;542:7244:85;-1:-1:-1;542:7244:85;4919:24:19;542:7244:85;3202:4:19;:::i;:::-;5767:26;:::i;542:7244:85:-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;-1:-1:-1;;542:7244:85;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;542:7244:85;;;;;;;;;;;;:::i;:::-;3361:103:26;;:::i;:::-;-1:-1:-1;542:7244:85;;;5246:21:83;;:13;;-1:-1:-1;;;;;542:7244:85;5246:13:83;542:7244:85;;-1:-1:-1;;;;;542:7244:85;;;5246:21:83;542:7244:85;;-1:-1:-1;;;5246:23:83;;542:7244:85;;;;;5246:23:83;;;;;;;-1:-1:-1;5246:23:83;;;542:7244:85;-1:-1:-1;;;;;;542:7244:85;;;5232:10:83;:37;5228:87;;5341:4;542:7244:85;-1:-1:-1;;;;;542:7244:85;;;;5355:469:83;;542:7244:85;-1:-1:-1;;542:7244:85;;;;;;;;;;;;;;;;5839:55:83;;542:7244:85;;;;5839:55:83;;;;3426:1:26;1949;-1:-1:-1;;;;;;;;;;;542:7244:85;3860:283:26;5355:469:83;542:7244:85;;;;5435:94:83;;;;542:7244:85;5435:94:83;;;;;;;;;;;;542:7244:85;5435:94:83;;;:::i;:::-;;542:7244:85;;5435:94:83;;;;;;:::i;:::-;542:7244:85;5548:9:83;:51;5544:118;;-1:-1:-1;5839:55:83;5676:138;;;;5839:55;5676:138;;;1150:7;5676:138;;5355:469;;;5544:118;542:7244:85;;-1:-1:-1;;;5626:21:83;;542:7244:85;;5626:21:83;5228:87;542:7244:85;;-1:-1:-1;;;5292:12:83;;542:7244:85;;5292:12:83;5246:23;;;;;542:7244:85;5246:23:83;542:7244:85;5246:23:83;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;542:7244:85;;;;;;-1:-1:-1;;542:7244:85;;;;;;;971:45;542:7244;;;;;;;;;-1:-1:-1;;542:7244:85;;;;;;;;-1:-1:-1;;;;;542:7244:85;;;;;;;;;;;;;;-1:-1:-1;;542:7244:85;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;-1:-1:-1;;542:7244:85;;;;;;;1150:7:83;542:7244:85;;;;;;;;;-1:-1:-1;;542:7244:85;;;;;;;2700:1:83;542:7244:85;;;2897:279;-1:-1:-1;542:7244:85;;;3090:22;542:7244;;;;;;;;-1:-1:-1;;;;;542:7244:85;;;;;;;;;3090:79;;2897:279;;3090:79;:::i;542:7244::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;1869:195;;1997:60;1869:195;;-1:-1:-1;542:7244:85;1997:13;542:7244;;;-1:-1:-1;542:7244:85;1997:60;:::i;2340:253::-;;2512:74;2340:253;;-1:-1:-1;542:7244:85;2512:27;542:7244;;;-1:-1:-1;542:7244:85;2512:74;:::i;542:7244::-;;;;;;;;;;;;;;;;;-1:-1:-1;542:7244:85;;;;;;;;-1:-1:-1;;542:7244:85;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;542:7244:85;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::o;:::-;;9999:1:66;542:7244:85;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;542:7244:85;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;542:7244:85;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;-1:-1:-1;;;;;542:7244:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2764:920:83:-;;2978:48;2764:920;;;;2978:48;;;;:::i;:::-;3036:36;;;542:7244:85;;:::i;:::-;;;;3086:20:83;3082:107;;2764:920;3216:11;;;;:193;;;;;2764:920;3216:394;;;;2764:920;3199:455;;;;;;2764:920;:::o;3199:455::-;3635:8;-1:-1:-1;3635:8:83;:::o;3216:394::-;3553:39;;;;;3430:180;3553:39;;;542:7244:85;;;;;;;;;;3430:180:83;;467:2:95;542:7244:85;3430:180:83;;;;;:::i;:::-;;542:7244:85;3444:31:83;-1:-1:-1;;;;;542:7244:85;3430:180:83;;;;;;;-1:-1:-1;3430:180:83;;;3216:394;3429:181;;3216:394;;;;;;3430:180;;;;3553:39;3430:180;3553:39;3430:180;;;;;;;:::i;:::-;;;;3216:193;-1:-1:-1;542:7244:85;;;-1:-1:-1;;;;;;542:7244:85;3248:161:83;3354:37;;;542:7244:85;3248:161:83;542:7244:85;;;;;;;;;;3248:161:83;;;;;;;:::i;:::-;;542:7244:85;3262:29:83;-1:-1:-1;;;;;542:7244:85;3248:161:83;;;;;;;-1:-1:-1;3248:161:83;;;3216:193;3247:162;;3216:193;;;3248:161;;;;;;;;;;;;;;:::i;:::-;;;;3082:107;3139:39;;;;;;;;;;;;;:::i;:::-;3082:107;;;;;542:7244:85;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;3740:389:83;3918:5;542:7244:85;;;-1:-1:-1;;;3853:71:83;;;-1:-1:-1;;;;;542:7244:85;;;3853:71:83;;;542:7244:85;;;;;;;;3740:389:83;;542:7244:85;3853:71:83;;542:7244:85;;3853:71:83;542:7244:85;;;3867:29:83;542:7244:85;;3853:71:83;;;;;;;3918:5;3853:71;;;3740:389;3852:72;;542:7244:85;;;3852:181:83;;3740:389;3835:242;;;;;;4094:28;;;:::i;3835:242::-;4058:8;;3918:5;4058:8;:::o;3852:181::-;542:7244:85;;3945:88:83;;;-1:-1:-1;;;;;542:7244:85;;3853:71:83;3945:88;;542:7244:85;467:2:95;542:7244:85;;;;;;;;-1:-1:-1;542:7244:85;;;;;;;;3959:31:83;542:7244:85;3945:88:83;;;;;;;3918:5;3945:88;;;3852:181;3944:89;;;3852:181;;;;;3945:88;;;;;;-1:-1:-1;3945:88:83;;;;;;:::i;:::-;;;;;3853:71;;;;;;;;;;;;;;:::i;:::-;;;;4148:103:19;966:10:24;-1:-1:-1;542:7244:85;;;;;;;;;810:35;;542:7244;;3901:31:19;542:7244:85;;4468:23:19;4464:108;;4148:103;:::o;:::-;966:10:24;-1:-1:-1;542:7244:85;;;;;;;;;971:45;;542:7244;;3901:31:19;542:7244:85;4148:103:19;-1:-1:-1;542:7244:85;;;-1:-1:-1;;;;;;;;;;;542:7244:85;;;;;;;;966:10:24;542:7244:85;;;;;;;;;3901:31:19;542:7244:85;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;542:7244:85;;-1:-1:-1;542:7244:85;;;-1:-1:-1;542:7244:85;:::o;:::-;;:::i;:::-;;;;;-1:-1:-1;;;542:7244:85;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6246:584:93;;;;;6360:12;;;542:7244:85;;;6360:24:93;;6356:75;;6246:584;6474:30;;;;;:::i;:::-;542:7244:85;;;;;;6578:12:93;;;;:::i;:::-;6604:24;;;;6246:584;-1:-1:-1;6600:188:93;;;-1:-1:-1;;;;;542:7244:85;;;;;;;6644:21:93;;;:29;:21;;:::i;:29::-;6798:25;6246:584;:::o;6600:188::-;6753:24;;542:7244:85;;8310:38:66;;-1:-1:-1;;;;;542:7244:85;;;;;8310:38:66;:::i;:::-;6753:24:93;;;:::i;6604:::-;542:7244:85;;;;;;6614:14:93;;-1:-1:-1;6604:24:93;;;6356:75;-1:-1:-1;;;542:7244:85;;;;;;6360:12:93;542:7244:85;;;;;;;:::i;:::-;;;;;;;;;;;;;;6356:75:93;;;542:7244:85;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::o;7558:604:93:-;;542:7244:85;;7686:17:93;7682:83;;542:7244:85;7789:27:93;542:7244:85;7789:27:93;542:7244:85;;7789:27:93;;;;;;:::i;:::-;7860:14;;;;;:::i;:::-;542:7244:85;;;;;;;;;;;;;;;;7888:22:93;;;7884:77;;7975:21;-1:-1:-1;7975:84:93;;;;7558:604;7971:139;;;;8127:28;;;;:::i;7971:139::-;8082:17;;7789:27;8082:17;542:7244:85;8075:24:93;:::o;7975:84::-;542:7244:85;;;8009:16:93;542:7244:85;;8009:16:93;:::i;:::-;542:7244:85;;;8001:24:93;:57;;;;;7975:84;;;;;;;8001:57;8029:29;8038:8;;;8029:18;8038:8;8029:23;8038:8;;:::i;:::-;8029:18;;:::i;:::-;542:7244:85;;;;;8029:23:93;542:7244:85;;;;8029:29:93;;8001:57;;;;7884:77;7933:17;;;;;7789:27;7933:17;542:7244:85;7926:24:93;:::o;7682:83::-;7726:28;;;;:::i;3470:384:26:-;-1:-1:-1;;;;;;;;;;;1991:1:26;542:7244:85;;3670:20:26;3666:88;;1991:1;542:7244:85;;3470:384:26:o;3666:88::-;542:7244:85;;-1:-1:-1;;;3713:30:26;;;;;6196:308:85;;542:7244;-1:-1:-1;542:7244:85;6327:13;542:7244;;;-1:-1:-1;542:7244:85;11124:30:93;;;;:::i;:::-;11173;;;-1:-1:-1;11173:30:93;;;;11182:17;;-1:-1:-1;;;;;542:7244:85;;11182:12:93;;:17;:::i;:::-;542:7244:85;;;6327:13;542:7244;;11173:30:93;6385::85;;;11173::93;6381:117:85;;;;6196:308;;:::o;6381:117::-;6431:56;542:7244;-1:-1:-1;542:7244:85;6327:13;542:7244;;;-1:-1:-1;542:7244:85;819:34:68;837:15;819:34;:::i;6431:56:85:-;6196:308;;:::o;6385:30::-;6395:20;;-1:-1:-1;6385:30:85;;;;11173::93;;;-1:-1:-1;11173:30:93;;7270:387:19;-1:-1:-1;;;;;542:7244:85;;-1:-1:-1;542:7244:85;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2887:71:19;542:7244:85;;;;-1:-1:-1;542:7244:85;;;;;;;;;;;-1:-1:-1;;;;;542:7244:85;;;;;;;;;;-1:-1:-1;;542:7244:85;7509:4:19;542:7244:85;;;966:10:24;;-1:-1:-1;;;;;542:7244:85;-1:-1:-1;7532:40:19;-1:-1:-1;;7532:40:19;7509:4;7586:11;:::o;7270:387::-;-1:-1:-1;;;;;542:7244:85;;-1:-1:-1;542:7244:85;;;;;;;;;1356:26:83;;-1:-1:-1;;;;;;;;;;;2887:71:19;542:7244:85;;3901:31:19;542:7244:85;;;;-1:-1:-1;542:7244:85;;;;;;;;;;;-1:-1:-1;;;;;542:7244:85;;;;;;;;;;-1:-1:-1;;542:7244:85;7509:4:19;542:7244:85;;;966:10:24;;-1:-1:-1;;;;;542:7244:85;;7532:40:19;-1:-1:-1;;7532:40:19;7509:4;7586:11;:::o;7432:219::-;7628:12;;;-1:-1:-1;7628:12:19;:::o;7270:387::-;-1:-1:-1;;;;;542:7244:85;;-1:-1:-1;542:7244:85;;;;;;;;;810:35;;-1:-1:-1;;;;;;;;;;;2887:71:19;542:7244:85;;3901:31:19;542:7244:85;7270:387:19;-1:-1:-1;;;;;542:7244:85;;-1:-1:-1;542:7244:85;;;;;;;;;971:45;;-1:-1:-1;;;;;;;;;;;2887:71:19;542:7244:85;;3901:31:19;542:7244:85;7270:387:19;-1:-1:-1;542:7244:85;;;-1:-1:-1;;;;;;;;;;;542:7244:85;;;;;;;;-1:-1:-1;;;;;542:7244:85;;;;;;;;;;;;3901:31:19;542:7244:85;7892:388:19;-1:-1:-1;542:7244:85;;;-1:-1:-1;;;;;;;;;;;542:7244:85;;;;;;;;-1:-1:-1;;;;;542:7244:85;;;;;;;;;;;;;;;;-1:-1:-1;542:7244:85;;;;;;;;;;;-1:-1:-1;;;;;542:7244:85;;;;;;;;;;-1:-1:-1;;542:7244:85;;;966:10:24;;-1:-1:-1;;;;;542:7244:85;;8155:40:19;-1:-1:-1;;8155:40:19;542:7244:85;8209:11:19;:::o;10580:184:93:-;542:7244:85;;10446:8:66;;;:63;-1:-1:-1;10446:63:66;-1:-1:-1;;;;;542:7244:85;;10726:7:93;542:7244:85;;10736:12:93;:17;:12;;:17;:::i;:::-;542:7244:85;;;;;;10580:184:93;:::o;10446:63:66:-;542:7244:85;;;;;;;;;;14439:109:66;-1:-1:-1;14439:109:66;;-1:-1:-1;14439:109:66;;;542:7244:85;;;10446:63:66;;542:7244:85;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;542:7244:85;;;;;;;;:::i;5907:716:83:-;6030:34;5907:716;6030:34;;;;:::i;:::-;542:7244:85;;-1:-1:-1;;;6080:41:83;;-1:-1:-1;;;;;542:7244:85;;;6080:41:83;;;542:7244:85;;;;;6080:41:83;542:7244:85;;;6090:13:83;542:7244:85;;6080:41:83;;;;;;;-1:-1:-1;6080:41:83;;;5907:716;6079:42;;6075:90;;6266:27;542:7244:85;2684:111:26;6210:14:83;542:7244:85;2684:111:26;;;:::i;:::-;542:7244:85;;;;;;-1:-1:-1;;;;;542:7244:85;;-1:-1:-1;542:7244:85;;;-1:-1:-1;542:7244:85;;6210:14:83;6266:27;:::i;:::-;6080:41;6311:15;;542:7244:85;;;;-1:-1:-1;;;;;;542:7244:85;-1:-1:-1;;;;;542:7244:85;;;;;;;;;;;-1:-1:-1;;;;;542:7244:85;;;;6337:143:83;;5907:716;-1:-1:-1;6493:28:83;542:7244:85;-1:-1:-1;;;;;542:7244:85;;;;;;;6489:128:83;;5907:716;:::o;6489:128::-;6551:55;;;:::i;:::-;;5907:716::o;6337:143::-;6404:65;;;:::i;:::-;;6337:143;;;6075:90;542:7244:85;;-1:-1:-1;;;6144:10:83;;6080:41;;6144:10;6080:41;;;;;;;;;;;;;;:::i;:::-;;;;542:7244:85;;;;;;;;;;-1:-1:-1;;;;;542:7244:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;542:7244:85;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;4663:1079::-;;;;;542:7244;;:::i;:::-;;;;4903:16;4899:92;;4663:1079;5105:42;;5053:95;5105:42;;;;5053:95;;;:::i;:::-;5165:570;:34;;;5218:21;;;;;;5165:570;-1:-1:-1;5158:577:85;4663:1079;:::o;5165:570::-;5273:95;5431:67;5330:37;;;;;;5273:95;;;:::i;:::-;542:7244;5470:27;5431;:13;542:7244;-1:-1:-1;542:7244:85;;;;;;;;;5431:27;5470;;;;542:7244;;;;;;;;;;;5431:67;;;;;;;:::i;:::-;;;;;;;;;5273:409;5431:67;5397:216;5431:67;-1:-1:-1;5431:67:85;;;5165:570;5562:28;5524:67;5562:28;;542:7244;5562:28;;;5524:67;;:::i;:::-;5397:216;3463:5:63;;;;3066;;542:7244:85;3060:42:63;3371:111;;5397:216:85;5273:409;;:::i;:::-;5700:21;;4663:1079;:::o;5431:67::-;5524;5431;;;;5470:27;5431:67;5470:27;5431:67;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;4899:92;4949:31;;;;;;;;;;;;;:::i;:::-;4899:92;;;;;5748:442;2776:48;:39;;542:7244;;;;;;;;;;2776:48;5946:237;:32;;;:237;;;-1:-1:-1;5748:442:85;:::o;5946:237::-;3358:53;:44;2776:27;3358:34;;;542:7244;;3358:22;542:7244;;;;;;;3358:53;-1:-1:-1;542:7244:85;;;-1:-1:-1;;;6086:27:85;;542:7244;;;;6086:27;;542:7244;;;;;-1:-1:-1;;;;;542:7244:85;6086:27;;;;;;;6009:174;6086:27;-1:-1:-1;6086:27:85;;;5946:237;2233:25;;:34;:25;542:7244;;2233:13;542:7244;;;;;;;2233:34;3463:5:63;;;;;3066;;542:7244:85;3060:42:63;6009:174:85;;:::i;6086:27::-;2233:34;6086:27;;;;2233:25;6086:27;;;;;;;;;;;:::i;:::-;;;;;;14296:213:64;542:7244:85;14374:24:64;;;;14370:103;;542:7244:85;14296:213:64;:::o;14370:103::-;542:7244:85;;;;14421:41:64;;;;;;14452:2;14421:41;;;542:7244:85;;;;;14421:41:64;10695:389:66;542:7244:85;;10871:8:66;;;10895:20;;10833:17;10895:20;10833:17;10895:20;10833:17;10895:20;:::o;10867:211::-;542:7244:85;;;;;;;;;;10833:17:66;14439:109;;10833:17;14439:109;;;542:7244:85;11014:1:66;542:7244:85;;;;;;;11030:37:66;:::o;6999:207:93:-;;542:7244:85;;9737:15:66;-1:-1:-1;9762:18:66;9795:7;9801:1;9795:7;;9791:234;;6999:207:93;10049:53:66;;;;;:::i;:::-;10120:8;;;:63;-1:-1:-1;10120:63:66;;-1:-1:-1;;;;;542:7244:85;;7168:7:93;542:7244:85;;;7178:12:93;;:17;:12;;:17;:::i;10120:63:66:-;10135:41;10168:7;10135:48;10168:7;;:::i;:::-;10135:41;14439:109;;;;;;14289:265;;10135:41;542:7244:85;;;;;10135:48:66;10120:63;;;9791:234;9838:14;;;;;:::i;:::-;542:7244:85;;;;;;;10049:53:66;14439:109;;-1:-1:-1;14439:109:66;542:7244:85;14439:109:66;;;-1:-1:-1;14439:109:66;;542:7244:85;;;;;9870:48:66;9866:149;542:7244:85;;;9938:10:66;9866:149;9791:234;;9866:149;9993:7;;;;;;:::i;:::-;9866:149;9791:234;;542:7244:85;;;;;;;:::i;:::-;-1:-1:-1;542:7244:85;;;;;;;:::o;11486:272:93:-;;542:7244:85;11718:12:93;11452:22:66;11718:31:93;11486:272;542:7244:85;;:::i;:::-;;;;:::i;:::-;;11452:22:66;;:::i;:::-;542:7244:85;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;11718:12:93;:31;:::i;:::-;542:7244:85;;;;;;;;;:::i;:::-;;;;;;;11672:79:93;;542:7244:85;11486:272:93;:::o;6893:76:22:-;;;:::i;:::-;;;:::i;:::-;1949:1:26;-1:-1:-1;;;;;;;;;;;542:7244:85;6893:76:22:o;542:7244:85:-;;;;;;;:::i;:::-;-1:-1:-1;542:7244:85;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;542:7244:85;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;542:7244:85;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;6510:1274::-;6658:30;6510:1274;542:7244;;:::i;:::-;;6658:30;542:7244;;;6658:30;;;;;;:::i;:::-;6716:17;;542:7244;6716:17;;542:7244;-1:-1:-1;;;;;542:7244:85;6716:54;;:179;;6510:1274;6699:259;;6973:9;6658:30;6988:33;;;6716:17;7030:3;6988:33;;542:7244;;6984:44;;;;;7053:36;;;:50;:36;;:::i;:::-;542:7244;-1:-1:-1;;;;;542:7244:85;;;7053:50;;7049:119;;7186:73;7187:72;7222:36;;:33;;;:36;:::i;:::-;7187:72;:::i;:::-;7186:73;;542:7244;7186:73;7182:140;;542:7244;;6973:9;;7182:140;542:7244;;-1:-1:-1;;;7286:21:85;;;;;7049:119;542:7244;;-1:-1:-1;;;7130:23:85;;;;;6984:44;-1:-1:-1;7362:42:85;;-1:-1:-1;;7362:42:85;;;;6716:17;7413:3;7362:42;;542:7244;;7358:53;;;;;7436:45;;;:59;:45;;:::i;:59::-;;7432:128;;7578:92;7579:91;7624:45;;:42;;;:45;:::i;:::-;7579:91;:::i;7578:92::-;7574:159;;542:7244;;7347:9;;7574:159;542:7244;;-1:-1:-1;;;7697:21:85;;;;;7432:128;542:7244;;-1:-1:-1;;;7522:23:85;;;;;7358:53;;;;;;7760:17;6510:1274;:::o;6699:259::-;542:7244;;-1:-1:-1;;;6927:20:85;;;;;6716:179;6791:33;6658:30;6791:33;;;542:7244;6791:45;:103;6716:179;6791:103;6840:42;;;;;542:7244;6840:54;6716:179;;4996:4226:63;;542:7244:85;;;;-1:-1:-1;;542:7244:85;4996:4226:63;5584:131;;;;;;;;;;;;5796:10;;5792:368;;6270:20;;;;6266:143;;6695:300;;;;940:4:54;-1:-1:-1;940:4:54;7214:31:63;;7259:375;;;8094:1;542:7244:85;;8075:1:63;542:7244:85;8074:21:63;542:7244:85;;;940:4:54;;542:7244:85;;;;940:4:54;;542:7244:85;;;;940:4:54;;542:7244:85;;;;940:4:54;;542:7244:85;;;;940:4:54;;542:7244:85;;;;940:4:54;;542:7244:85;7259:375:63;;;;-1:-1:-1;7259:375:63;;;6695:300;;;;;;542:7244:85;6695:300:63;;7259:375;7700:21;542:7244:85;4996:4226:63;:::o;6266:143::-;6330:16;;3066:5;542:7244:85;940:4:54;3060:42:63;6322:71;:::i;5792:368::-;6126:19;;;;;;;:::i;542:7244:85:-;;;-1:-1:-1;;;542:7244:85;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;542:7244:85;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;11657:922:66;542:7244:85;;11657:922:66;;;11864:7;;;;11936;11916:28;11936:7;;:::i;:::-;11916:28;14439:109;;;;;;14289:265;;11916:28;542:7244:85;;;;;;;;;;;;12103:13:66;;;12099:89;;12251:14;;;;;12285:19;;;;542:7244:85;;;;;;;;;;;;;;;;;12285:19:66;542:7244:85;;12423:25:66;;:::o;12247:163::-;542:7244:85;;;12343:52:66;542:7244:85;12353:41:66;542:7244:85;;:::i;:::-;;;;;;;;12353:41:66;-1:-1:-1;;;;;542:7244:85;;12353:41:66;;;542:7244:85;12343:52:66;:::i;:::-;12247:163;;12099:89;542:7244:85;;-1:-1:-1;;;12143:30:66;;;;;11860:713;542:7244:85;;12479:52:66;542:7244:85;12489:41:66;542:7244:85;;:::i;12489:41:66:-;-1:-1:-1;;;;;542:7244:85;;12489:41:66;;;542:7244:85;12343:52:66;:::i;12479:::-;11870:1;12545:17;;:::o;7084:141:22:-;542:7244:85;-1:-1:-1;;;;;;;;;;;542:7244:85;;;;7150:18:22;7146:73;;7084:141::o;7146:73::-;542:7244:85;;-1:-1:-1;;;7191:17:22;;;;;1776:194:54;1829:135;;;;;;;;18080:5181:63;18246:1;18241:6;;;18237:53;;18246:1;19217:14;-1:-1:-1;;;19278:16:63;;;19274:92;;18080:5181;22827:18;22717;22607;22498;22387;22278;23216:28;19383:15;19898:6;19383:15;-1:-1:-1;;;23237:6:63;19383:15;;;19379:90;;18080:5181;19493:7;19486:15;;;19482:90;;18080:5181;19596:7;19589:15;;;19585:89;;18080:5181;19698:6;19691:14;;;19687:87;;18080:5181;19798:6;19791:14;;;19787:87;;18080:5181;19891:14;;19887:61;;18080:5181;20374:1;542:7244:85;18246:1:63;542:7244:85;22284:6:63;;;;:::i;:::-;542:7244:85;;;;;22278:18:63;22393:6;;;;:::i;22387:18::-;22504:6;;;;:::i;22498:18::-;22613:6;;;;:::i;22607:18::-;22723:6;;;;:::i;22717:18::-;22833:6;;;;:::i;22827:18::-;23237:6;;;:::i;:::-;23232:11;;;542:7244:85;23216:28:63;940:4:54;;18080:5181:63;:::o;19887:61::-;18246:1;542:7244:85;19887:61:63;;19787:87;542:7244:85;;;;;19787:87:63;;;19687;542:7244:85;;;;;19687:87:63;;;19585:89;542:7244:85;;;;;19585:89:63;;;19482:90;542:7244:85;;;;;19482:90:63;;;19379;542:7244:85;;;;;19379:90:63;;;19274:92;-1:-1:-1;;;;542:7244:85;-1:-1:-1;542:7244:85;;;;19274:92:63;;12929:433:66;;;13112:10;;;;;;13344:11;;;12929:433;:::o;13105:230::-;3721:5:63;;;;;;3731;;;;542:7244:85;;;;;;;;;14439:109:66;-1:-1:-1;14439:109:66;542:7244:85;14439:109:66;;;-1:-1:-1;14439:109:66;;542:7244:85;;;;;-1:-1:-1;13189:136:66;542:7244:85;;;13248:10:66;13189:136;;13105:230;;;;13189:136;13303:7;;;;;;:::i;:::-;13189:136;;","linkReferences":{},"immutableReferences":{"56598":[{"start":2023,"length":32}],"56601":[{"start":3882,"length":32}],"57552":[{"start":1638,"length":32},{"start":3939,"length":32}],"57555":[{"start":927,"length":32},{"start":8114,"length":32}],"57558":[{"start":995,"length":32},{"start":5626,"length":32},{"start":5911,"length":32}],"57561":[{"start":1508,"length":32},{"start":5473,"length":32},{"start":6037,"length":32}]}},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","FACTORY()":"2dd31000","HOOK_GAS_LIMIT()":"ff54740f","HOOK_RESERVE()":"557cab44","HOOK_SET_ROLE()":"6679191e","NETWORK_LIMIT_SET_ROLE()":"7d24bb27","NETWORK_REGISTRY()":"c0cd7c3e","OPERATOR_NETWORK_OPT_IN_SERVICE()":"1a80e500","OPERATOR_NETWORK_SHARES_SET_ROLE()":"e78eb6ae","OPERATOR_VAULT_OPT_IN_SERVICE()":"128e5d82","TYPE()":"bb24fe8a","VAULT_FACTORY()":"103f2907","VERSION()":"ffa1ad74","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","hook()":"7f5a7c7b","initialize(bytes)":"439fab91","maxNetworkLimit(bytes32)":"d15b740e","networkLimit(bytes32)":"3eb22c0f","networkLimitAt(bytes32,uint48,bytes)":"5d32a1c9","onSlash(bytes32,address,uint256,uint48,bytes)":"e49561ee","operatorNetworkShares(bytes32,address)":"42c53e33","operatorNetworkSharesAt(bytes32,address,uint48,bytes)":"1a7a7044","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","setHook(address)":"3dfd3873","setMaxNetworkLimit(uint96,uint256)":"23f752d5","setNetworkLimit(bytes32,uint256)":"02145348","setOperatorNetworkShares(bytes32,address,uint256)":"a33bc287","stake(bytes32,address)":"fd4d447c","stakeAt(bytes32,address,uint48,bytes)":"e02f6937","staticDelegateCall(address,bytes)":"9f86fd85","supportsInterface(bytes4)":"01ffc9a7","totalOperatorNetworkShares(bytes32)":"c43dc03f","totalOperatorNetworkSharesAt(bytes32,uint48,bytes)":"8b3f10b0","vault()":"fbfa77cf"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"networkRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"vaultFactory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operatorVaultOptInService\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operatorNetworkOptInService\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegatorFactory\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"entityType\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadySet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CheckpointUnorderedInsertion\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DuplicateRoleHolder\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedsMaxNetworkLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientHookGas\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingRoleHolders\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotNetwork\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotSlasher\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressRoleHolder\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"}],\"name\":\"OnSlash\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"hook\",\"type\":\"address\"}],\"name\":\"SetHook\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"SetMaxNetworkLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"SetNetworkLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"SetOperatorNetworkShares\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HOOK_GAS_LIMIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HOOK_RESERVE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HOOK_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NETWORK_LIMIT_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NETWORK_REGISTRY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_NETWORK_OPT_IN_SERVICE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_NETWORK_SHARES_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_VAULT_OPT_IN_SERVICE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TYPE\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VAULT_FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VERSION\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hook\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"}],\"name\":\"maxNetworkLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"}],\"name\":\"networkLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"networkLimitAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"operatorNetworkShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"operatorNetworkSharesAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"hook_\",\"type\":\"address\"}],\"name\":\"setHook\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint96\",\"name\":\"identifier\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"setMaxNetworkLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"setNetworkLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"setOperatorNetworkShares\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"stake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hints\",\"type\":\"bytes\"}],\"name\":\"stakeAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"staticDelegateCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"}],\"name\":\"totalOperatorNetworkShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"totalOperatorNetworkSharesAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"CheckpointUnorderedInsertion()\":[{\"details\":\"A value was attempted to be inserted on a past checkpoint.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"OnSlash(bytes32,address,uint256,uint48)\":{\"params\":{\"amount\":\"amount of the collateral to be slashed\",\"captureTimestamp\":\"time point when the stake was captured\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"SetHook(address)\":{\"params\":{\"hook\":\"address of the hook\"}},\"SetMaxNetworkLimit(bytes32,uint256)\":{\"params\":{\"amount\":\"new maximum subnetwork's limit (how much stake the subnetwork is ready to get)\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"SetNetworkLimit(bytes32,uint256)\":{\"params\":{\"amount\":\"new subnetwork's limit (how much stake the vault curator is ready to give to the subnetwork)\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"SetOperatorNetworkShares(bytes32,address,uint256)\":{\"params\":{\"operator\":\"address of the operator\",\"shares\":\"new operator's shares inside the subnetwork (what percentage, which is equal to the shares divided by the total operators' shares, of the subnetwork's stake the vault curator is ready to give to the operator)\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}}},\"kind\":\"dev\",\"methods\":{\"VERSION()\":{\"details\":\"Must return 1 for this one.\",\"returns\":{\"_0\":\"version of the delegator\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize(bytes)\":{\"params\":{\"data\":\"some data to use\"}},\"networkLimit(bytes32)\":{\"params\":{\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"_0\":\"limit of the subnetwork\"}},\"networkLimitAt(bytes32,uint48,bytes)\":{\"params\":{\"hint\":\"hint for checkpoint index\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\",\"timestamp\":\"time point to get the subnetwork limit at\"},\"returns\":{\"_0\":\"limit of the subnetwork at the given timestamp\"}},\"onSlash(bytes32,address,uint256,uint48,bytes)\":{\"details\":\"Only the vault's slasher can call this function.\",\"params\":{\"amount\":\"amount of the collateral slashed\",\"captureTimestamp\":\"time point when the stake was captured\",\"data\":\"some additional data\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"operatorNetworkShares(bytes32,address)\":{\"params\":{\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"_0\":\"shares of the operator for the subnetwork\"}},\"operatorNetworkSharesAt(bytes32,address,uint48,bytes)\":{\"params\":{\"hint\":\"hint for checkpoint index\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\",\"timestamp\":\"time point to get the operator's shares at\"},\"returns\":{\"_0\":\"shares of the operator for the subnetwork at the given timestamp\"}},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"setHook(address)\":{\"details\":\"Only a HOOK_SET_ROLE holder can call this function. The hook can have arbitrary logic under certain functions, however, it doesn't affect the stake guarantees.\",\"params\":{\"hook\":\"address of the hook\"}},\"setMaxNetworkLimit(uint96,uint256)\":{\"details\":\"Only a network can call this function.\",\"params\":{\"amount\":\"new maximum subnetwork's limit\"}},\"setNetworkLimit(bytes32,uint256)\":{\"details\":\"Only a NETWORK_LIMIT_SET_ROLE holder can call this function.\",\"params\":{\"amount\":\"new limit of the subnetwork\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"setOperatorNetworkShares(bytes32,address,uint256)\":{\"details\":\"Only an OPERATOR_NETWORK_SHARES_SET_ROLE holder can call this function.\",\"params\":{\"operator\":\"address of the operator\",\"shares\":\"new shares of the operator for the subnetwork\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"stake(bytes32,address)\":{\"details\":\"Warning: this function is not safe to use for stake capturing, as it can change by the end of the block.\",\"params\":{\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"_0\":\"slashable stake until the end of the next epoch\"}},\"stakeAt(bytes32,address,uint48,bytes)\":{\"details\":\"Warning: it is not safe to use timestamp >= current one for the stake capturing, as it can change later.\",\"params\":{\"hints\":\"hints for the checkpoints' indexes\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\",\"timestamp\":\"time point to capture the stake at\"},\"returns\":{\"_0\":\"slashable stake at the given timestamp until the end of the consequent epoch\"}},\"staticDelegateCall(address,bytes)\":{\"details\":\"It allows to use this contract's storage on-chain.\",\"params\":{\"data\":\"data to make a delegatecall with\",\"target\":\"address of the contract to make a delegatecall to\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"totalOperatorNetworkShares(bytes32)\":{\"params\":{\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"_0\":\"total shares of the operators for the subnetwork\"}},\"totalOperatorNetworkSharesAt(bytes32,uint48,bytes)\":{\"params\":{\"hint\":\"hint for checkpoint index\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\",\"timestamp\":\"time point to get the total operators' shares at\"},\"returns\":{\"_0\":\"total shares of the operators for the subnetwork at the given timestamp\"}}},\"stateVariables\":{\"NETWORK_LIMIT_SET_ROLE\":{\"return\":\"identifier of the subnetwork limit setter role\",\"returns\":{\"_0\":\"identifier of the subnetwork limit setter role\"}},\"OPERATOR_NETWORK_SHARES_SET_ROLE\":{\"return\":\"identifier of the operator-subnetwork shares setter role\",\"returns\":{\"_0\":\"identifier of the operator-subnetwork shares setter role\"}}},\"version\":1},\"userdoc\":{\"events\":{\"OnSlash(bytes32,address,uint256,uint48)\":{\"notice\":\"Emitted when a slash happens.\"},\"SetHook(address)\":{\"notice\":\"Emitted when a hook is set.\"},\"SetMaxNetworkLimit(bytes32,uint256)\":{\"notice\":\"Emitted when a subnetwork's maximum limit is set.\"},\"SetNetworkLimit(bytes32,uint256)\":{\"notice\":\"Emitted when a subnetwork's limit is set.\"},\"SetOperatorNetworkShares(bytes32,address,uint256)\":{\"notice\":\"Emitted when an operator's shares inside a subnetwork are set.\"}},\"kind\":\"user\",\"methods\":{\"FACTORY()\":{\"notice\":\"Get the factory's address.\"},\"HOOK_GAS_LIMIT()\":{\"notice\":\"Get a gas limit for the hook.\"},\"HOOK_RESERVE()\":{\"notice\":\"Get a reserve gas between the gas limit check and the hook's execution.\"},\"HOOK_SET_ROLE()\":{\"notice\":\"Get a hook setter's role.\"},\"NETWORK_LIMIT_SET_ROLE()\":{\"notice\":\"Get a subnetwork limit setter's role.\"},\"NETWORK_REGISTRY()\":{\"notice\":\"Get the network registry's address.\"},\"OPERATOR_NETWORK_OPT_IN_SERVICE()\":{\"notice\":\"Get the operator-network opt-in service's address.\"},\"OPERATOR_NETWORK_SHARES_SET_ROLE()\":{\"notice\":\"Get an operator-subnetwork shares setter's role.\"},\"OPERATOR_VAULT_OPT_IN_SERVICE()\":{\"notice\":\"Get the operator-vault opt-in service's address.\"},\"TYPE()\":{\"notice\":\"Get the entity's type.\"},\"VAULT_FACTORY()\":{\"notice\":\"Get the vault factory's address.\"},\"VERSION()\":{\"notice\":\"Get a version of the delegator (different versions mean different interfaces).\"},\"hook()\":{\"notice\":\"Get the hook's address.\"},\"initialize(bytes)\":{\"notice\":\"Initialize this entity contract by using a given data.\"},\"maxNetworkLimit(bytes32)\":{\"notice\":\"Get a particular subnetwork's maximum limit (meaning the subnetwork is not ready to get more as a stake).\"},\"networkLimit(bytes32)\":{\"notice\":\"Get a subnetwork's limit (how much stake the vault curator is ready to give to the subnetwork).\"},\"networkLimitAt(bytes32,uint48,bytes)\":{\"notice\":\"Get a subnetwork's limit at a given timestamp using a hint (how much stake the vault curator is ready to give to the subnetwork).\"},\"onSlash(bytes32,address,uint256,uint48,bytes)\":{\"notice\":\"Called when a slash happens.\"},\"operatorNetworkShares(bytes32,address)\":{\"notice\":\"Get an operator's shares for a subnetwork (what percentage, which is equal to the shares divided by the total operators' shares, of the subnetwork's stake the vault curator is ready to give to the operator).\"},\"operatorNetworkSharesAt(bytes32,address,uint48,bytes)\":{\"notice\":\"Get an operator's shares for a subnetwork at a given timestamp using a hint (what percentage, which is equal to the shares divided by the total operators' shares, of the subnetwork's stake the vault curator is ready to give to the operator).\"},\"setHook(address)\":{\"notice\":\"Set a new hook.\"},\"setMaxNetworkLimit(uint96,uint256)\":{\"notice\":\"Set a maximum limit for a subnetwork (how much stake the subnetwork is ready to get). identifier identifier of the subnetwork\"},\"setNetworkLimit(bytes32,uint256)\":{\"notice\":\"Set a subnetwork's limit (how much stake the vault curator is ready to give to the subnetwork).\"},\"setOperatorNetworkShares(bytes32,address,uint256)\":{\"notice\":\"Set an operator's shares for a subnetwork (what percentage, which is equal to the shares divided by the total operators' shares, of the subnetwork's stake the vault curator is ready to give to the operator).\"},\"stake(bytes32,address)\":{\"notice\":\"Get a stake that a given subnetwork will be able to slash for a certain operator until the end of the next epoch (if no cross-slashing and no slashings by the subnetwork).\"},\"stakeAt(bytes32,address,uint48,bytes)\":{\"notice\":\"Get a stake that a given subnetwork could be able to slash for a certain operator at a given timestamp until the end of the consequent epoch using hints (if no cross-slashing and no slashings by the subnetwork).\"},\"staticDelegateCall(address,bytes)\":{\"notice\":\"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data).\"},\"totalOperatorNetworkShares(bytes32)\":{\"notice\":\"Get a sum of operators' shares for a subnetwork.\"},\"totalOperatorNetworkSharesAt(bytes32,uint48,bytes)\":{\"notice\":\"Get a sum of operators' shares for a subnetwork at a given timestamp using a hint.\"},\"vault()\":{\"notice\":\"Get the vault's address.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/delegator/NetworkRestakeDelegator.sol\":\"NetworkRestakeDelegator\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf\",\"dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89\",\"dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1\",\"dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44\",\"dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6\",\"dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza\"]},\"src/contracts/common/Entity.sol\":{\"keccak256\":\"0x3d61a932995b8443381f3950542d388223a2c26dd5d29a3274dea3baa7388bd7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7cdf5f03ca72fd263fd32ff59c8d88ddca911ae83896a287d10772c1bbe9b138\",\"dweb:/ipfs/QmbP84r5BWT1Rn9AYTntWSf3xUMTTCohTZJFhbBhDXFoHa\"]},\"src/contracts/common/StaticDelegateCallable.sol\":{\"keccak256\":\"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764\",\"dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD\"]},\"src/contracts/delegator/BaseDelegator.sol\":{\"keccak256\":\"0x7c54d491fdd4415b764a9c8defa068e56d4c0c8c9419be0053a1d377669290e8\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://9238bfbad0f6eeb0dc7727724de14380f1980b395902269703d5e2ef07e52e10\",\"dweb:/ipfs/QmPJn1V4HNXcEghYvogGuSTF24dSQUPosR5qtsXcmNqRm3\"]},\"src/contracts/delegator/NetworkRestakeDelegator.sol\":{\"keccak256\":\"0xd3a8e6522f9c6fdcc2da837c9023afd6bdff2bce45a35590320c475519e3636d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://58b17a87f6554f08376f9ea7fedf486a4aa75801bf0ad8b23ff5a46959b6b7a3\",\"dweb:/ipfs/QmSTmNh67tYt8CmjVZb57r8N3qX5yeYdMApKPJm3qvQgQw\"]},\"src/contracts/libraries/Checkpoints.sol\":{\"keccak256\":\"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609\",\"dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE\"]},\"src/contracts/libraries/Subnetwork.sol\":{\"keccak256\":\"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56\",\"dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32\"]},\"src/interfaces/common/IEntity.sol\":{\"keccak256\":\"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b\",\"dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv\"]},\"src/interfaces/common/IMigratableEntity.sol\":{\"keccak256\":\"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c\",\"dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds\"]},\"src/interfaces/common/IRegistry.sol\":{\"keccak256\":\"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014\",\"dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK\"]},\"src/interfaces/common/IStaticDelegateCallable.sol\":{\"keccak256\":\"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516\",\"dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi\"]},\"src/interfaces/delegator/IBaseDelegator.sol\":{\"keccak256\":\"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2\",\"dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8\"]},\"src/interfaces/delegator/IDelegatorHook.sol\":{\"keccak256\":\"0xc51aa8d7d1f6c8043ee819b7aeb86da0e993912e1442098df897e299f01f9f46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://adddf5cb2ba282aeb576b26efb28640f865a1721cc9b6eee8b3ee0457a2c9780\",\"dweb:/ipfs/QmNYgAmnLRwWZbhTuQhZs9rx4zcme1df5mEepkrniorSoW\"]},\"src/interfaces/delegator/INetworkRestakeDelegator.sol\":{\"keccak256\":\"0xe7030fe30389a147fd710e3436ec346b4842695fd3e65a81b95375c9f1d633fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://739c7e66d301778054f5c90bee45ec9438f68afba8a03eaaac52064c73b115ad\",\"dweb:/ipfs/QmfZ2ytKcTykAc76nxhg8ikUXV8NdBpetqb8W4YWPcox1Z\"]},\"src/interfaces/service/IOptInService.sol\":{\"keccak256\":\"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337\",\"dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24\"]},\"src/interfaces/vault/IVault.sol\":{\"keccak256\":\"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9\",\"dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R\"]},\"src/interfaces/vault/IVaultStorage.sol\":{\"keccak256\":\"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e\",\"dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"networkRegistry","type":"address"},{"internalType":"address","name":"vaultFactory","type":"address"},{"internalType":"address","name":"operatorVaultOptInService","type":"address"},{"internalType":"address","name":"operatorNetworkOptInService","type":"address"},{"internalType":"address","name":"delegatorFactory","type":"address"},{"internalType":"uint64","name":"entityType","type":"uint64"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"inputs":[],"type":"error","name":"AlreadySet"},{"inputs":[],"type":"error","name":"CheckpointUnorderedInsertion"},{"inputs":[],"type":"error","name":"DuplicateRoleHolder"},{"inputs":[],"type":"error","name":"ExceedsMaxNetworkLimit"},{"inputs":[],"type":"error","name":"InsufficientHookGas"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"MissingRoleHolders"},{"inputs":[],"type":"error","name":"NotInitialized"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"NotNetwork"},{"inputs":[],"type":"error","name":"NotSlasher"},{"inputs":[],"type":"error","name":"NotVault"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintDowncast"},{"inputs":[],"type":"error","name":"ZeroAddressRoleHolder"},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint48","name":"captureTimestamp","type":"uint48","indexed":false}],"type":"event","name":"OnSlash","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[{"internalType":"address","name":"hook","type":"address","indexed":true}],"type":"event","name":"SetHook","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"SetMaxNetworkLimit","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"SetNetworkLimit","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false}],"type":"event","name":"SetOperatorNetworkShares","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HOOK_GAS_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HOOK_RESERVE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HOOK_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"NETWORK_LIMIT_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"NETWORK_REGISTRY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_NETWORK_OPT_IN_SERVICE","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_NETWORK_SHARES_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_VAULT_OPT_IN_SERVICE","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"TYPE","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VAULT_FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"VERSION","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"hook","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"}],"stateMutability":"view","type":"function","name":"maxNetworkLimit","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"}],"stateMutability":"view","type":"function","name":"networkLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"networkLimitAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint48","name":"captureTimestamp","type":"uint48"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"onSlash"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"operatorNetworkShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"operatorNetworkSharesAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"address","name":"hook_","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setHook"},{"inputs":[{"internalType":"uint96","name":"identifier","type":"uint96"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setMaxNetworkLimit"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setNetworkLimit"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setOperatorNetworkShares"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"stake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hints","type":"bytes"}],"stateMutability":"view","type":"function","name":"stakeAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"staticDelegateCall"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"}],"stateMutability":"view","type":"function","name":"totalOperatorNetworkShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"totalOperatorNetworkSharesAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"vault","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"VERSION()":{"details":"Must return 1 for this one.","returns":{"_0":"version of the delegator"}},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"initialize(bytes)":{"params":{"data":"some data to use"}},"networkLimit(bytes32)":{"params":{"subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"_0":"limit of the subnetwork"}},"networkLimitAt(bytes32,uint48,bytes)":{"params":{"hint":"hint for checkpoint index","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)","timestamp":"time point to get the subnetwork limit at"},"returns":{"_0":"limit of the subnetwork at the given timestamp"}},"onSlash(bytes32,address,uint256,uint48,bytes)":{"details":"Only the vault's slasher can call this function.","params":{"amount":"amount of the collateral slashed","captureTimestamp":"time point when the stake was captured","data":"some additional data","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"}},"operatorNetworkShares(bytes32,address)":{"params":{"operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"_0":"shares of the operator for the subnetwork"}},"operatorNetworkSharesAt(bytes32,address,uint48,bytes)":{"params":{"hint":"hint for checkpoint index","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)","timestamp":"time point to get the operator's shares at"},"returns":{"_0":"shares of the operator for the subnetwork at the given timestamp"}},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"setHook(address)":{"details":"Only a HOOK_SET_ROLE holder can call this function. The hook can have arbitrary logic under certain functions, however, it doesn't affect the stake guarantees.","params":{"hook":"address of the hook"}},"setMaxNetworkLimit(uint96,uint256)":{"details":"Only a network can call this function.","params":{"amount":"new maximum subnetwork's limit"}},"setNetworkLimit(bytes32,uint256)":{"details":"Only a NETWORK_LIMIT_SET_ROLE holder can call this function.","params":{"amount":"new limit of the subnetwork","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"}},"setOperatorNetworkShares(bytes32,address,uint256)":{"details":"Only an OPERATOR_NETWORK_SHARES_SET_ROLE holder can call this function.","params":{"operator":"address of the operator","shares":"new shares of the operator for the subnetwork","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"}},"stake(bytes32,address)":{"details":"Warning: this function is not safe to use for stake capturing, as it can change by the end of the block.","params":{"operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"_0":"slashable stake until the end of the next epoch"}},"stakeAt(bytes32,address,uint48,bytes)":{"details":"Warning: it is not safe to use timestamp >= current one for the stake capturing, as it can change later.","params":{"hints":"hints for the checkpoints' indexes","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)","timestamp":"time point to capture the stake at"},"returns":{"_0":"slashable stake at the given timestamp until the end of the consequent epoch"}},"staticDelegateCall(address,bytes)":{"details":"It allows to use this contract's storage on-chain.","params":{"data":"data to make a delegatecall with","target":"address of the contract to make a delegatecall to"}},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"totalOperatorNetworkShares(bytes32)":{"params":{"subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"_0":"total shares of the operators for the subnetwork"}},"totalOperatorNetworkSharesAt(bytes32,uint48,bytes)":{"params":{"hint":"hint for checkpoint index","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)","timestamp":"time point to get the total operators' shares at"},"returns":{"_0":"total shares of the operators for the subnetwork at the given timestamp"}}},"version":1},"userdoc":{"kind":"user","methods":{"FACTORY()":{"notice":"Get the factory's address."},"HOOK_GAS_LIMIT()":{"notice":"Get a gas limit for the hook."},"HOOK_RESERVE()":{"notice":"Get a reserve gas between the gas limit check and the hook's execution."},"HOOK_SET_ROLE()":{"notice":"Get a hook setter's role."},"NETWORK_LIMIT_SET_ROLE()":{"notice":"Get a subnetwork limit setter's role."},"NETWORK_REGISTRY()":{"notice":"Get the network registry's address."},"OPERATOR_NETWORK_OPT_IN_SERVICE()":{"notice":"Get the operator-network opt-in service's address."},"OPERATOR_NETWORK_SHARES_SET_ROLE()":{"notice":"Get an operator-subnetwork shares setter's role."},"OPERATOR_VAULT_OPT_IN_SERVICE()":{"notice":"Get the operator-vault opt-in service's address."},"TYPE()":{"notice":"Get the entity's type."},"VAULT_FACTORY()":{"notice":"Get the vault factory's address."},"VERSION()":{"notice":"Get a version of the delegator (different versions mean different interfaces)."},"hook()":{"notice":"Get the hook's address."},"initialize(bytes)":{"notice":"Initialize this entity contract by using a given data."},"maxNetworkLimit(bytes32)":{"notice":"Get a particular subnetwork's maximum limit (meaning the subnetwork is not ready to get more as a stake)."},"networkLimit(bytes32)":{"notice":"Get a subnetwork's limit (how much stake the vault curator is ready to give to the subnetwork)."},"networkLimitAt(bytes32,uint48,bytes)":{"notice":"Get a subnetwork's limit at a given timestamp using a hint (how much stake the vault curator is ready to give to the subnetwork)."},"onSlash(bytes32,address,uint256,uint48,bytes)":{"notice":"Called when a slash happens."},"operatorNetworkShares(bytes32,address)":{"notice":"Get an operator's shares for a subnetwork (what percentage, which is equal to the shares divided by the total operators' shares, of the subnetwork's stake the vault curator is ready to give to the operator)."},"operatorNetworkSharesAt(bytes32,address,uint48,bytes)":{"notice":"Get an operator's shares for a subnetwork at a given timestamp using a hint (what percentage, which is equal to the shares divided by the total operators' shares, of the subnetwork's stake the vault curator is ready to give to the operator)."},"setHook(address)":{"notice":"Set a new hook."},"setMaxNetworkLimit(uint96,uint256)":{"notice":"Set a maximum limit for a subnetwork (how much stake the subnetwork is ready to get). identifier identifier of the subnetwork"},"setNetworkLimit(bytes32,uint256)":{"notice":"Set a subnetwork's limit (how much stake the vault curator is ready to give to the subnetwork)."},"setOperatorNetworkShares(bytes32,address,uint256)":{"notice":"Set an operator's shares for a subnetwork (what percentage, which is equal to the shares divided by the total operators' shares, of the subnetwork's stake the vault curator is ready to give to the operator)."},"stake(bytes32,address)":{"notice":"Get a stake that a given subnetwork will be able to slash for a certain operator until the end of the next epoch (if no cross-slashing and no slashings by the subnetwork)."},"stakeAt(bytes32,address,uint48,bytes)":{"notice":"Get a stake that a given subnetwork could be able to slash for a certain operator at a given timestamp until the end of the consequent epoch using hints (if no cross-slashing and no slashings by the subnetwork)."},"staticDelegateCall(address,bytes)":{"notice":"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data)."},"totalOperatorNetworkShares(bytes32)":{"notice":"Get a sum of operators' shares for a subnetwork."},"totalOperatorNetworkSharesAt(bytes32,uint48,bytes)":{"notice":"Get a sum of operators' shares for a subnetwork at a given timestamp using a hint."},"vault()":{"notice":"Get the vault's address."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/delegator/NetworkRestakeDelegator.sol":"NetworkRestakeDelegator"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol":{"keccak256":"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866","urls":["bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf","dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab","urls":["bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89","dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606","urls":["bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1","dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol":{"keccak256":"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f","urls":["bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44","dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc","urls":["bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6","dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza"],"license":"MIT"},"src/contracts/common/Entity.sol":{"keccak256":"0x3d61a932995b8443381f3950542d388223a2c26dd5d29a3274dea3baa7388bd7","urls":["bzz-raw://7cdf5f03ca72fd263fd32ff59c8d88ddca911ae83896a287d10772c1bbe9b138","dweb:/ipfs/QmbP84r5BWT1Rn9AYTntWSf3xUMTTCohTZJFhbBhDXFoHa"],"license":"BUSL-1.1"},"src/contracts/common/StaticDelegateCallable.sol":{"keccak256":"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90","urls":["bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764","dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD"],"license":"BUSL-1.1"},"src/contracts/delegator/BaseDelegator.sol":{"keccak256":"0x7c54d491fdd4415b764a9c8defa068e56d4c0c8c9419be0053a1d377669290e8","urls":["bzz-raw://9238bfbad0f6eeb0dc7727724de14380f1980b395902269703d5e2ef07e52e10","dweb:/ipfs/QmPJn1V4HNXcEghYvogGuSTF24dSQUPosR5qtsXcmNqRm3"],"license":"BUSL-1.1"},"src/contracts/delegator/NetworkRestakeDelegator.sol":{"keccak256":"0xd3a8e6522f9c6fdcc2da837c9023afd6bdff2bce45a35590320c475519e3636d","urls":["bzz-raw://58b17a87f6554f08376f9ea7fedf486a4aa75801bf0ad8b23ff5a46959b6b7a3","dweb:/ipfs/QmSTmNh67tYt8CmjVZb57r8N3qX5yeYdMApKPJm3qvQgQw"],"license":"BUSL-1.1"},"src/contracts/libraries/Checkpoints.sol":{"keccak256":"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c","urls":["bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609","dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE"],"license":"MIT"},"src/contracts/libraries/Subnetwork.sol":{"keccak256":"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe","urls":["bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56","dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32"],"license":"MIT"},"src/interfaces/common/IEntity.sol":{"keccak256":"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21","urls":["bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b","dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv"],"license":"MIT"},"src/interfaces/common/IMigratableEntity.sol":{"keccak256":"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4","urls":["bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c","dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds"],"license":"MIT"},"src/interfaces/common/IRegistry.sol":{"keccak256":"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb","urls":["bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014","dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK"],"license":"MIT"},"src/interfaces/common/IStaticDelegateCallable.sol":{"keccak256":"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5","urls":["bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516","dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi"],"license":"MIT"},"src/interfaces/delegator/IBaseDelegator.sol":{"keccak256":"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee","urls":["bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2","dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8"],"license":"MIT"},"src/interfaces/delegator/IDelegatorHook.sol":{"keccak256":"0xc51aa8d7d1f6c8043ee819b7aeb86da0e993912e1442098df897e299f01f9f46","urls":["bzz-raw://adddf5cb2ba282aeb576b26efb28640f865a1721cc9b6eee8b3ee0457a2c9780","dweb:/ipfs/QmNYgAmnLRwWZbhTuQhZs9rx4zcme1df5mEepkrniorSoW"],"license":"MIT"},"src/interfaces/delegator/INetworkRestakeDelegator.sol":{"keccak256":"0xe7030fe30389a147fd710e3436ec346b4842695fd3e65a81b95375c9f1d633fc","urls":["bzz-raw://739c7e66d301778054f5c90bee45ec9438f68afba8a03eaaac52064c73b115ad","dweb:/ipfs/QmfZ2ytKcTykAc76nxhg8ikUXV8NdBpetqb8W4YWPcox1Z"],"license":"MIT"},"src/interfaces/service/IOptInService.sol":{"keccak256":"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a","urls":["bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337","dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24"],"license":"MIT"},"src/interfaces/vault/IVault.sol":{"keccak256":"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235","urls":["bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9","dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R"],"license":"MIT"},"src/interfaces/vault/IVaultStorage.sol":{"keccak256":"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22","urls":["bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e","dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6"],"license":"MIT"}},"version":1},"id":85} \ No newline at end of file diff --git a/out/OperatorNetworkSpecificDelegator.sol/OperatorNetworkSpecificDelegator.json b/out/OperatorNetworkSpecificDelegator.sol/OperatorNetworkSpecificDelegator.json index 38ff684b..102dfc6a 100644 --- a/out/OperatorNetworkSpecificDelegator.sol/OperatorNetworkSpecificDelegator.json +++ b/out/OperatorNetworkSpecificDelegator.sol/OperatorNetworkSpecificDelegator.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"operatorRegistry","type":"address","internalType":"address"},{"name":"networkRegistry","type":"address","internalType":"address"},{"name":"vaultFactory","type":"address","internalType":"address"},{"name":"operatorVaultOptInService","type":"address","internalType":"address"},{"name":"operatorNetworkOptInService","type":"address","internalType":"address"},{"name":"delegatorFactory","type":"address","internalType":"address"},{"name":"entityType","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"HOOK_GAS_LIMIT","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"HOOK_RESERVE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"HOOK_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"NETWORK_REGISTRY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_NETWORK_OPT_IN_SERVICE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_REGISTRY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_VAULT_OPT_IN_SERVICE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"TYPE","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"VAULT_FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"VERSION","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"pure"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"hook","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"maxNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"maxNetworkLimitAt","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"network","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"onSlash","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","internalType":"uint48"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"operator","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setHook","inputs":[{"name":"hook_","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMaxNetworkLimit","inputs":[{"name":"identifier","type":"uint96","internalType":"uint96"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stake","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"stakeAt","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hints","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"staticDelegateCall","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"vault","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OnSlash","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","indexed":false,"internalType":"uint48"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SetHook","inputs":[{"name":"hook","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SetMaxNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"AlreadySet","inputs":[]},{"type":"error","name":"CheckpointUnorderedInsertion","inputs":[]},{"type":"error","name":"InsufficientHookGas","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"InvalidNetwork","inputs":[]},{"type":"error","name":"NotInitialized","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"NotNetwork","inputs":[]},{"type":"error","name":"NotOperator","inputs":[]},{"type":"error","name":"NotSlasher","inputs":[]},{"type":"error","name":"NotVault","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x610160346101c9576001600160401b0390601f6127c138819003918201601f191683019190848311848410176101cd578160e092859260409586528339810103126101c95761004d826101e1565b9061005a602084016101e1565b6100658285016101e1565b90610072606086016101e1565b9561007f608087016101e1565b9560c061008e60a083016101e1565b9101519180831683036101c9577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff82891c166101b8578080831603610174575b50505060805260a05260c05260e05261010093845261012092835261014091825251916125cb93846101f68539608051846104fe015260a05184610bee015260c05184818161037d01528181610c270152612048015260e05184818161027301526119be0152518381816102b70152818161121001526113540152518281816102fb0152818161117701526113d2015251818181610a6e01526120c10152f35b6001600160401b0319909116811790915585519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80806100d4565b875163f92ee8a960e01b8152600490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101c95756fe60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a714610204578063103f2907146101ff578063128e5d82146101fa5780631a80e500146101f557806323f752d5146101f0578063248a9ca3146101eb5780632dd31000146101e65780632f2ff15d146101e157806336568abe146101dc5780633dfd3873146101d7578063437224a3146101d2578063439fab91146101cd578063557cab44146101c8578063570ca735146101c35780636679191e146101be5780636739afca146101b95780637f5a7c7b146101b457806383ce0322146101af57806391d14854146101aa5780639f86fd85146101a5578063a217fddf146101a0578063bb24fe8a1461019b578063c0cd7c3e14610196578063d15b740e14610191578063d547741f1461018c578063e02f693714610187578063e49561ee14610182578063fbfa77cf1461017d578063fd4d447c14610178578063ff54740f146101735763ffa1ad741461016e575f80fd5b610f84565b610f67565b610f3d565b610f16565b610d2b565b610ccc565b610c80565b610c56565b610c12565b610bcf565b610bb5565b610afb565b610a9d565b610a59565b610a31565b610a09565b6109cf565b6109a7565b61098b565b610853565b6107c3565b6105d5565b61058a565b61053e565b6104e9565b6104b0565b61032a565b6102e6565b6102a2565b61025e565b3461025a57602036600319011261025a5760043563ffffffff60e01b811680910361025a57602090637965db0b60e01b8114908115610249575b506040519015158152f35b6301ffc9a760e01b1490505f61023e565b5f80fd5b3461025a575f36600319011261025a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461025a575f36600319011261025a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461025a575f36600319011261025a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461025a57604036600319011261025a576004356001600160601b038116810361025a576024359061035a611447565b6040516302910f8b60e31b81523360048201526020816024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa9081156104ab575f9161047c575b501561046a576001600160601b03166bffffffffffffffffffffffff193360601b161790806103e4835f52600260205260405f2090565b54146104585761043d817fc67e7929681aa1bccd63f52b3799bf5805f3009f197db6fdf584b14f7fbf608c92610422855f52600260205260405f2090565b5561042d8185611476565b6040519081529081906020820190565b0390a261045660015f8051602061255683398151915255565b005b60405163a741a04560e01b8152600490fd5b6040516323d53b9760e21b8152600490fd5b61049e915060203d6020116104a4575b6104968183610732565b810190610f9f565b5f6103ad565b503d61048c565b610fb7565b3461025a57602036600319011261025a576004355f525f805160206125368339815191526020526020600160405f200154604051908152f35b3461025a575f36600319011261025a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6001600160a01b0381160361025a57565b3461025a57604036600319011261025a576104566024356004356105618261052d565b805f525f80516020612536833981519152602052610585600160405f2001546115b8565b611769565b3461025a57604036600319011261025a576024356105a78161052d565b336001600160a01b038216036105c3576104569060043561179f565b60405163334bd91960e11b8152600490fd5b3461025a57602036600319011261025a576004356105f28161052d565b6105fa611447565b335f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c60205260409020547fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c9060ff16156106b057506001546001600160a01b039182169181168214610458576001600160a01b03191681176001557f5bbb1d3ebb6a3ad2a0f17ff35e579a83af60604d1d3c2a4c83c62adecadf666d5f80a260015f8051602061255683398151915255005b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b6064359065ffffffffffff8216820361025a57565b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b0382111761071257604052565b6106e3565b606081019081106001600160401b0382111761071257604052565b90601f801991011681019081106001600160401b0382111761071257604052565b60405190610760826106f7565b565b6001600160401b03811161071257601f01601f191660200190565b81601f8201121561025a5780359061079482610762565b926107a26040519485610732565b8284526020838301011161025a57815f926020809301838601378301015290565b3461025a57606036600319011261025a5760243565ffffffffffff8116810361025a576044356001600160401b03811161025a5760209161080b61081e92369060040161077d565b906004355f526003845260405f20611870565b604051908152f35b9181601f8401121561025a578235916001600160401b03831161025a576020838186019501011161025a57565b3461025a57602036600319011261025a576001600160401b0360043581811161025a57610884903690600401610826565b5f80516020612576833981519152549260ff8460401c1615931680159081610983575b6001149081610979575b159081610970575b5061095e575f80516020612576833981519152805467ffffffffffffffff191660011790556108ec918361093a57611989565b6108f257005b5f80516020612576833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f80516020612576833981519152805460ff60401b1916600160401b179055611989565b60405163f92ee8a960e01b8152600490fd5b9050155f6108b9565b303b1591506108b1565b8491506108a7565b3461025a575f36600319011261025a576020604051614e208152f35b3461025a575f36600319011261025a576005546040516001600160a01b039091168152602090f35b3461025a575f36600319011261025a5760206040517fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c8152f35b3461025a575f36600319011261025a576004546040516001600160a01b039091168152602090f35b3461025a575f36600319011261025a576001546040516001600160a01b039091168152602090f35b3461025a575f36600319011261025a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461025a57604036600319011261025a57602060ff610aef602435610ac18161052d565b6004355f525f80516020612536833981519152845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b3461025a5760408060031936011261025a57600435610b198161052d565b602435906001600160401b03821161025a575f8091610b3f610ba3943690600401610826565b908187519283928337810184815203915af43d15610bab57610b953d610b6481610762565b90610b7186519283610732565b81523d5f602083013e5b845194859315156020850152808401526060830190610fdb565b03601f198101835282610732565b805190602001fd5b610b956060610b7b565b3461025a575f36600319011261025a5760206040515f8152f35b3461025a575f36600319011261025a5760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461025a575f36600319011261025a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461025a57602036600319011261025a576004355f526002602052602060405f2054604051908152f35b3461025a57604036600319011261025a57610456602435600435610ca38261052d565b805f525f80516020612536833981519152602052610cc7600160405f2001546115b8565b61179f565b3461025a57608036600319011261025a57602435610ce98161052d565b6044359065ffffffffffff8216820361025a57606435906001600160401b03821161025a57602092610d2261081e93369060040161077d565b91600435611101565b3461025a5760a036600319011261025a57602435600435610d4b8261052d565b60443591610d576106ce565b90608435906001600160401b03821161025a57610d796004923690840161077d565b610d81611447565b5f54602090610da690610d9a906001600160a01b031681565b6001600160a01b031690565b60405163b134427160e01b815294859182905afa9283156104ab575f93610ee5575b506001600160a01b039283163303610ed3576001546001600160a01b0316838116610e48575b50506040805195865265ffffffffffff909316602086015216927f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed91819081015b0390a361045660015f8051602061255683398151915255565b909360405194610e7f86610e71602082019363724ab0f760e11b8552858c898d602487016112a0565b03601f198101885287610732565b62042e305a10610ec1575f610e2f938192827f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed9951926203d090f15093610dee565b604051638072475160e01b8152600490fd5b60405163dabc4ad960e01b8152600490fd5b610f0891935060203d602011610f0f575b610f008183610732565b81019061128b565b915f610dc8565b503d610ef6565b3461025a575f36600319011261025a575f546040516001600160a01b039091168152602090f35b3461025a57604036600319011261025a57602061081e602435610f5f8161052d565b60043561131d565b3461025a575f36600319011261025a5760206040516203d0908152f35b3461025a575f36600319011261025a57602060405160018152f35b9081602091031261025a5751801515810361025a5790565b6040513d5f823e3d90fd5b90610fd892915f52600360205260405f20611870565b90565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b6040519061100c826106f7565b60606020838281520152565b81601f8201121561025a5780519061102f82610762565b9261103d6040519485610732565b8284526020838301011161025a57815f9260208093018386015e8301015290565b9060208282031261025a5781516001600160401b039283821161025a57019060408282031261025a5760405192611094846106f7565b825181811161025a57826110a9918501611018565b8452602083015190811161025a576110c19201611018565b602082015290565b6001600160a01b0391821681529116602082015265ffffffffffff9091166040820152608060608201819052610fd892910190610fdb565b9261111190929192828486611b9c565b92909361111c610fff565b9380518061126f575b505084159384156111d9575b8415611148575b505050506111435790565b505f90565b602080949550611173910151604051958694859463530e1d4360e01b865260601c90600486016110c9565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156104ab575f916111ba575b50155f808080611138565b6111d3915060203d6020116104a4576104968183610732565b5f6111af565b5f549094506001600160a01b031660208486519261120c604051948593849363530e1d4360e01b855289600486016110c9565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156104ab575f91611250575b501593611131565b611269915060203d6020116104a4576104968183610732565b5f611248565b61128392955060208091830101910161105e565b925f80611125565b9081602091031261025a5751610fd88161052d565b919360a093610fd8969565ffffffffffff938552600180871b0316602085015260408401521660608201528160808201520190610fdb565b634e487b7160e01b5f52601160045260245ffd5b81156112f6570490565b634e487b7160e01b5f52601260045260245ffd5b906001820180921161131857565b6112d8565b5f546040516308834cb560e21b8082526001600160a01b0385811660048401529283166024830152929392602092909183816044817f000000000000000000000000000000000000000000000000000000000000000086165afa9081156104ab575f9161142a575b50159182156113a6575b505090506113a057610fd891611cbb565b50505f90565b6040519081526001600160a01b0385166004820152606086901c602482015291508290829060449082907f0000000000000000000000000000000000000000000000000000000000000000165afa9182156104ab575f9261140d575b505015805f8061138f565b6114239250803d106104a4576104968183610732565b5f80611402565b6114419150843d86116104a4576104968183610732565b5f611385565b5f8051602061255683398151915260028154146114645760029055565b604051633ee5aeb560e01b8152600490fd5b6004546001600160a01b0316606082901c036115a6575f52600360205260405f209065ffffffffffff9182421161158757824216926001820191825415611579575b6114c1816121ac565b509590845493835480155f1461155a57505f975b6001600160d01b0398808a1615611554576114f09088611d7d565b50505b82611548575b50501561153257505061076093509061151461151a9261184d565b90611d7d565b90919082549060031b91821b915f19901b1916179055565b61076095611541931691612284565b5050611dd3565b16821490505f806114f9565b506114f3565b5f1990808281011161131857855f5260205f2001015460301c976114d5565b61158283611da6565b6114b8565b6040516306dfcc6560e41b815260306004820152426024820152604490fd5b6040516386eab41b60e01b8152600490fd5b5f8181525f805160206125368339815191526020908152604080832033845290915290205460ff16156106b05750565b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260409020545f805160206125368339815191529060ff166113a0575f808052602091825260408082206001600160a01b038516835290925220805460ff1916600117905533906001600160a01b03165f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b6001600160a01b0381165f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c602052604090207fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c905f805160206125368339815191529060ff905b5416611762575f828152602091825260408082206001600160a01b038616835290925220805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b5050505f90565b5f8181525f80516020612536833981519152602081815260408084206001600160a01b038716855290915290912060ff906116fe565b5f8181525f80516020612536833981519152602081815260408084206001600160a01b03871685529091529091205460ff1615611762575f828152602091825260408082206001600160a01b038616835290925220805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b9081602091031261025a575163ffffffff8116810361025a5790565b5f1981019190821161131857565b90600163ffffffff8093160191821161131857565b91805115611949578060208061188b93518301019101611831565b916118968382611ed0565b926118a7845165ffffffffffff1690565b9065ffffffffffff808516921682811461193d57821191826118dd575b50506118d457610fd89250611df6565b50506020015190565b9091506118ea835461184d565b63ffffffff831614918215611903575b50505f806118c4565b61193591925061191e61191861192a9261185b565b85611ed0565b5165ffffffffffff1690565b65ffffffffffff1690565b115f806118fa565b50505050506020015190565b50610fd891611df6565b91909160408184031261025a57803561196b8161052d565b9260208201356001600160401b03811161025a57610fd8920161077d565b61199591810190611953565b6040516302910f8b60e31b81526001600160a01b039283166004820181905291906020816024817f000000000000000000000000000000000000000000000000000000000000000088165afa9081156104ab575f91611aa8575b5015611a9657611a2a604091611a25611a7094611a0a611f38565b60018060a01b03166001600160601b0360a01b5f5416175f55565b611ffb565b6020810151600180546001600160a01b0319166001600160a01b0390921691909117905580516001600160a01b0316848116611a86575b5001516001600160a01b031690565b908116611a7a5750565b611a8390611693565b50565b611a8f906115e8565b505f611a61565b6040516362df054560e01b8152600490fd5b611ac1915060203d6020116104a4576104968183610732565b5f6119ef565b60405190611ad482610717565b60606040838281528260208201520152565b9060208282031261025a5781516001600160401b039283821161025a57019060608282031261025a5760405192611b1c84610717565b825181811161025a5782611b31918501611018565b8452602083015181811161025a5782611b4b918501611018565b6020850152604083015190811161025a57611b669201611018565b604082015290565b9081602091031261025a575190565b60409065ffffffffffff610fd894931681528160208201520190610fdb565b90939293611ba8611ac7565b94805180611c9f575b5050600454606083901c6001600160a01b03918216148015929190611c84575b5050611c7c575f54611c17929190602090611bf690610d9a906001600160a01b031681565b8187015190604051808097819463810da75d60e01b83528860048401611b7d565b03915afa9081156104ab57611c44935f92611c49575b50611c3e9192604087015191610fc2565b90612176565b915190565b611c3e9250611c6f9060203d602011611c75575b611c678183610732565b810190611b6e565b91611c2d565b503d611c5d565b505090515f91565b60055481166001600160a01b03169116141590505f80611bd1565b611cb3929650602080918301019101611ae6565b935f80611bb1565b6004549091606083901c6001600160a01b039283161480159290611d62575b5050611143575f5460049190602090611cfd90610d9a906001600160a01b031681565b60405163bd49c35f60e01b815293849182905afa9081156104ab57610fd8925f92611d3d575b50611d36905f52600260205260405f2090565b5490612176565b611d36919250611d5b9060203d602011611c7557611c678183610732565b9190611d23565b60055481166001600160a01b03169116141590505f80611cda565b8054821015611d92575f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b8054600160401b81101561071257611dc391600182018155611d7d565b8154905f199060031b1b19169055565b90815491600160401b831015610712578261151a91600161076095018155611d7d565b908154905f829160058411611e6a575b611e119350846124d6565b80611e4357505f905b6001600160d01b038216156113a057610fd8916001611e399201611d7d565b90549060031b1c90565b611e5d611e52611e649261184d565b835f5260205f200190565b5460301c90565b90611e1a565b9192611e75816123a3565b810390811161131857611e1193855f5265ffffffffffff808360205f20015416908516105f14611ea6575091611e06565b929150611eb29061130a565b90611e06565b60405190611ec5826106f7565b5f6020838281520152565b90611ef9611ef3611f1a92611ee3611eb8565b50611eec611eb8565b5084611d7d565b50612188565b91600165ffffffffffff845116936020828060d01b03910151169101611d7d565b90549060405192611f2a846106f7565b835260031b1c602082015290565b611f406121fb565b611f486121fb565b60015f8051602061255683398151915255565b60405190611f6882610717565b5f6040838281528260208201520152565b8091039060a0821261025a57606060405192611f9484610717565b1261025a57608090604051611fa881610717565b8151611fb38161052d565b81526020820151611fc38161052d565b60208201526040820151611fd68161052d565b604082015283526060810151611feb8161052d565b60208401520151611b668161052d565b612003611f5b565b5061201981519160208080948301019101611f79565b80820180516040516302910f8b60e31b8082526001600160a01b039283166004830152939491939082816024817f000000000000000000000000000000000000000000000000000000000000000089165afa9081156104ab575f91612159575b501561046a57816120bd916040870195612099875160018060a01b031690565b6040519283526001600160a01b031660048301529092839190829081906024820190565b03917f0000000000000000000000000000000000000000000000000000000000000000165afa9182156104ab575f9261213c575b50501561212a5751600480546001600160a01b039283166001600160a01b03199182161790915591516005805490931691161790555190565b604051631f0853c160e21b8152600490fd5b6121529250803d106104a4576104968183610732565b5f806120f1565b6121709150833d85116104a4576104968183610732565b5f612079565b9080821015612183575090565b905090565b90604051612195816106f7565b915465ffffffffffff8116835260301c6020830152565b8054806121bd5750505f905f905f90565b5f19908082810111611318576121da925f5260205f200101612188565b9065ffffffffffff82511691602060018060d01b0391015116906001929190565b60ff5f805160206125768339815191525460401c161561221757565b604051631afcd79f60e31b8152600490fd5b8054600160401b8110156107125761224691600182018155611d7d565b61227157815160209092015160301b65ffffffffffff191665ffffffffffff92909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b80549293929190821561237a576122a56122a0611e528561184d565b612188565b906122b6825165ffffffffffff1690565b65ffffffffffff848116911681106123685761232c9460209488926122e461192a875165ffffffffffff1690565b03612330575061231e926122fa6123059261184d565b905f5260205f200190565b9065ffffffffffff82549181199060301b169116179055565b01516001600160d01b031690565b9190565b91505061236391612350612342610753565b65ffffffffffff9093168352565b6001600160d01b03881682860152612229565b61231e565b604051632520601d60e01b8152600490fd5b61239e925061238a612342610753565b6001600160d01b0385166020830152612229565b5f9190565b80156111435780611c3e61246e61246461245a61245061244661243c6124326001610fd89a5f908b60801c806124ca575b508060401c806124bd575b508060201c806124b0575b508060101c806124a3575b508060081c80612496575b508060041c80612489575b508060021c8061247c575b50821c612475575b811c1b61242b818b6112ec565b0160011c90565b61242b818a6112ec565b61242b81896112ec565b61242b81886112ec565b61242b81876112ec565b61242b81866112ec565b61242b81856112ec565b80926112ec565b810161241e565b600291509101905f612416565b600491509101905f61240b565b600891509101905f612400565b601091509101905f6123f5565b602091509101905f6123ea565b604091509101905f6123df565b9150506080905f6123d4565b91905b8382106124e65750505090565b9091928083169080841860011c820180921161131857845f5265ffffffffffff808360205f20015416908416105f146125235750925b91906124d9565b93925061252f9061130a565b9161251c56fe02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220dae242242ae38bf129200c0400461c817fd7d45e08b63cbee29f0e840f1e00d864736f6c63430008190033","sourceMap":"681:3264:79:-:0;;;;-1:-1:-1;;;;;681:3264:79;;;;;;;;;;-1:-1:-1;;681:3264:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;8837:64:25;681:3264:79;;;;;;;;;7896:76:25;;681:3264:79;;;;7985:34:25;7981:146;;-1:-1:-1;525:17:69;;;681:3264:79;525:17:69;681:3264:79;552:12:69;681:3264:79;2360:34:76;681:3264:79;2404:28:76;2442:57;;;;2509:61;;;;1796:36:79;;;;681:3264;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7981:146:25;-1:-1:-1;;;;;;681:3264:79;;;;;;;;;;;;;8087:29:25;;681:3264:79;;8087:29:25;7981:146;;;;;7896:76;681:3264:79;;-1:-1:-1;;;7938:23:25;;;;;681:3264:79;-1:-1:-1;681:3264:79;;;;;;-1:-1:-1;681:3264:79;;;;;-1:-1:-1;681:3264:79;;;;-1:-1:-1;;;;;681:3264:79;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a714610204578063103f2907146101ff578063128e5d82146101fa5780631a80e500146101f557806323f752d5146101f0578063248a9ca3146101eb5780632dd31000146101e65780632f2ff15d146101e157806336568abe146101dc5780633dfd3873146101d7578063437224a3146101d2578063439fab91146101cd578063557cab44146101c8578063570ca735146101c35780636679191e146101be5780636739afca146101b95780637f5a7c7b146101b457806383ce0322146101af57806391d14854146101aa5780639f86fd85146101a5578063a217fddf146101a0578063bb24fe8a1461019b578063c0cd7c3e14610196578063d15b740e14610191578063d547741f1461018c578063e02f693714610187578063e49561ee14610182578063fbfa77cf1461017d578063fd4d447c14610178578063ff54740f146101735763ffa1ad741461016e575f80fd5b610f84565b610f67565b610f3d565b610f16565b610d2b565b610ccc565b610c80565b610c56565b610c12565b610bcf565b610bb5565b610afb565b610a9d565b610a59565b610a31565b610a09565b6109cf565b6109a7565b61098b565b610853565b6107c3565b6105d5565b61058a565b61053e565b6104e9565b6104b0565b61032a565b6102e6565b6102a2565b61025e565b3461025a57602036600319011261025a5760043563ffffffff60e01b811680910361025a57602090637965db0b60e01b8114908115610249575b506040519015158152f35b6301ffc9a760e01b1490505f61023e565b5f80fd5b3461025a575f36600319011261025a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461025a575f36600319011261025a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461025a575f36600319011261025a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461025a57604036600319011261025a576004356001600160601b038116810361025a576024359061035a611447565b6040516302910f8b60e31b81523360048201526020816024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa9081156104ab575f9161047c575b501561046a576001600160601b03166bffffffffffffffffffffffff193360601b161790806103e4835f52600260205260405f2090565b54146104585761043d817fc67e7929681aa1bccd63f52b3799bf5805f3009f197db6fdf584b14f7fbf608c92610422855f52600260205260405f2090565b5561042d8185611476565b6040519081529081906020820190565b0390a261045660015f8051602061255683398151915255565b005b60405163a741a04560e01b8152600490fd5b6040516323d53b9760e21b8152600490fd5b61049e915060203d6020116104a4575b6104968183610732565b810190610f9f565b5f6103ad565b503d61048c565b610fb7565b3461025a57602036600319011261025a576004355f525f805160206125368339815191526020526020600160405f200154604051908152f35b3461025a575f36600319011261025a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6001600160a01b0381160361025a57565b3461025a57604036600319011261025a576104566024356004356105618261052d565b805f525f80516020612536833981519152602052610585600160405f2001546115b8565b611769565b3461025a57604036600319011261025a576024356105a78161052d565b336001600160a01b038216036105c3576104569060043561179f565b60405163334bd91960e11b8152600490fd5b3461025a57602036600319011261025a576004356105f28161052d565b6105fa611447565b335f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c60205260409020547fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c9060ff16156106b057506001546001600160a01b039182169181168214610458576001600160a01b03191681176001557f5bbb1d3ebb6a3ad2a0f17ff35e579a83af60604d1d3c2a4c83c62adecadf666d5f80a260015f8051602061255683398151915255005b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b6064359065ffffffffffff8216820361025a57565b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b0382111761071257604052565b6106e3565b606081019081106001600160401b0382111761071257604052565b90601f801991011681019081106001600160401b0382111761071257604052565b60405190610760826106f7565b565b6001600160401b03811161071257601f01601f191660200190565b81601f8201121561025a5780359061079482610762565b926107a26040519485610732565b8284526020838301011161025a57815f926020809301838601378301015290565b3461025a57606036600319011261025a5760243565ffffffffffff8116810361025a576044356001600160401b03811161025a5760209161080b61081e92369060040161077d565b906004355f526003845260405f20611870565b604051908152f35b9181601f8401121561025a578235916001600160401b03831161025a576020838186019501011161025a57565b3461025a57602036600319011261025a576001600160401b0360043581811161025a57610884903690600401610826565b5f80516020612576833981519152549260ff8460401c1615931680159081610983575b6001149081610979575b159081610970575b5061095e575f80516020612576833981519152805467ffffffffffffffff191660011790556108ec918361093a57611989565b6108f257005b5f80516020612576833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f80516020612576833981519152805460ff60401b1916600160401b179055611989565b60405163f92ee8a960e01b8152600490fd5b9050155f6108b9565b303b1591506108b1565b8491506108a7565b3461025a575f36600319011261025a576020604051614e208152f35b3461025a575f36600319011261025a576005546040516001600160a01b039091168152602090f35b3461025a575f36600319011261025a5760206040517fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c8152f35b3461025a575f36600319011261025a576004546040516001600160a01b039091168152602090f35b3461025a575f36600319011261025a576001546040516001600160a01b039091168152602090f35b3461025a575f36600319011261025a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461025a57604036600319011261025a57602060ff610aef602435610ac18161052d565b6004355f525f80516020612536833981519152845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b3461025a5760408060031936011261025a57600435610b198161052d565b602435906001600160401b03821161025a575f8091610b3f610ba3943690600401610826565b908187519283928337810184815203915af43d15610bab57610b953d610b6481610762565b90610b7186519283610732565b81523d5f602083013e5b845194859315156020850152808401526060830190610fdb565b03601f198101835282610732565b805190602001fd5b610b956060610b7b565b3461025a575f36600319011261025a5760206040515f8152f35b3461025a575f36600319011261025a5760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461025a575f36600319011261025a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461025a57602036600319011261025a576004355f526002602052602060405f2054604051908152f35b3461025a57604036600319011261025a57610456602435600435610ca38261052d565b805f525f80516020612536833981519152602052610cc7600160405f2001546115b8565b61179f565b3461025a57608036600319011261025a57602435610ce98161052d565b6044359065ffffffffffff8216820361025a57606435906001600160401b03821161025a57602092610d2261081e93369060040161077d565b91600435611101565b3461025a5760a036600319011261025a57602435600435610d4b8261052d565b60443591610d576106ce565b90608435906001600160401b03821161025a57610d796004923690840161077d565b610d81611447565b5f54602090610da690610d9a906001600160a01b031681565b6001600160a01b031690565b60405163b134427160e01b815294859182905afa9283156104ab575f93610ee5575b506001600160a01b039283163303610ed3576001546001600160a01b0316838116610e48575b50506040805195865265ffffffffffff909316602086015216927f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed91819081015b0390a361045660015f8051602061255683398151915255565b909360405194610e7f86610e71602082019363724ab0f760e11b8552858c898d602487016112a0565b03601f198101885287610732565b62042e305a10610ec1575f610e2f938192827f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed9951926203d090f15093610dee565b604051638072475160e01b8152600490fd5b60405163dabc4ad960e01b8152600490fd5b610f0891935060203d602011610f0f575b610f008183610732565b81019061128b565b915f610dc8565b503d610ef6565b3461025a575f36600319011261025a575f546040516001600160a01b039091168152602090f35b3461025a57604036600319011261025a57602061081e602435610f5f8161052d565b60043561131d565b3461025a575f36600319011261025a5760206040516203d0908152f35b3461025a575f36600319011261025a57602060405160018152f35b9081602091031261025a5751801515810361025a5790565b6040513d5f823e3d90fd5b90610fd892915f52600360205260405f20611870565b90565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b6040519061100c826106f7565b60606020838281520152565b81601f8201121561025a5780519061102f82610762565b9261103d6040519485610732565b8284526020838301011161025a57815f9260208093018386015e8301015290565b9060208282031261025a5781516001600160401b039283821161025a57019060408282031261025a5760405192611094846106f7565b825181811161025a57826110a9918501611018565b8452602083015190811161025a576110c19201611018565b602082015290565b6001600160a01b0391821681529116602082015265ffffffffffff9091166040820152608060608201819052610fd892910190610fdb565b9261111190929192828486611b9c565b92909361111c610fff565b9380518061126f575b505084159384156111d9575b8415611148575b505050506111435790565b505f90565b602080949550611173910151604051958694859463530e1d4360e01b865260601c90600486016110c9565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156104ab575f916111ba575b50155f808080611138565b6111d3915060203d6020116104a4576104968183610732565b5f6111af565b5f549094506001600160a01b031660208486519261120c604051948593849363530e1d4360e01b855289600486016110c9565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156104ab575f91611250575b501593611131565b611269915060203d6020116104a4576104968183610732565b5f611248565b61128392955060208091830101910161105e565b925f80611125565b9081602091031261025a5751610fd88161052d565b919360a093610fd8969565ffffffffffff938552600180871b0316602085015260408401521660608201528160808201520190610fdb565b634e487b7160e01b5f52601160045260245ffd5b81156112f6570490565b634e487b7160e01b5f52601260045260245ffd5b906001820180921161131857565b6112d8565b5f546040516308834cb560e21b8082526001600160a01b0385811660048401529283166024830152929392602092909183816044817f000000000000000000000000000000000000000000000000000000000000000086165afa9081156104ab575f9161142a575b50159182156113a6575b505090506113a057610fd891611cbb565b50505f90565b6040519081526001600160a01b0385166004820152606086901c602482015291508290829060449082907f0000000000000000000000000000000000000000000000000000000000000000165afa9182156104ab575f9261140d575b505015805f8061138f565b6114239250803d106104a4576104968183610732565b5f80611402565b6114419150843d86116104a4576104968183610732565b5f611385565b5f8051602061255683398151915260028154146114645760029055565b604051633ee5aeb560e01b8152600490fd5b6004546001600160a01b0316606082901c036115a6575f52600360205260405f209065ffffffffffff9182421161158757824216926001820191825415611579575b6114c1816121ac565b509590845493835480155f1461155a57505f975b6001600160d01b0398808a1615611554576114f09088611d7d565b50505b82611548575b50501561153257505061076093509061151461151a9261184d565b90611d7d565b90919082549060031b91821b915f19901b1916179055565b61076095611541931691612284565b5050611dd3565b16821490505f806114f9565b506114f3565b5f1990808281011161131857855f5260205f2001015460301c976114d5565b61158283611da6565b6114b8565b6040516306dfcc6560e41b815260306004820152426024820152604490fd5b6040516386eab41b60e01b8152600490fd5b5f8181525f805160206125368339815191526020908152604080832033845290915290205460ff16156106b05750565b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260409020545f805160206125368339815191529060ff166113a0575f808052602091825260408082206001600160a01b038516835290925220805460ff1916600117905533906001600160a01b03165f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b6001600160a01b0381165f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c602052604090207fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c905f805160206125368339815191529060ff905b5416611762575f828152602091825260408082206001600160a01b038616835290925220805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b5050505f90565b5f8181525f80516020612536833981519152602081815260408084206001600160a01b038716855290915290912060ff906116fe565b5f8181525f80516020612536833981519152602081815260408084206001600160a01b03871685529091529091205460ff1615611762575f828152602091825260408082206001600160a01b038616835290925220805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b9081602091031261025a575163ffffffff8116810361025a5790565b5f1981019190821161131857565b90600163ffffffff8093160191821161131857565b91805115611949578060208061188b93518301019101611831565b916118968382611ed0565b926118a7845165ffffffffffff1690565b9065ffffffffffff808516921682811461193d57821191826118dd575b50506118d457610fd89250611df6565b50506020015190565b9091506118ea835461184d565b63ffffffff831614918215611903575b50505f806118c4565b61193591925061191e61191861192a9261185b565b85611ed0565b5165ffffffffffff1690565b65ffffffffffff1690565b115f806118fa565b50505050506020015190565b50610fd891611df6565b91909160408184031261025a57803561196b8161052d565b9260208201356001600160401b03811161025a57610fd8920161077d565b61199591810190611953565b6040516302910f8b60e31b81526001600160a01b039283166004820181905291906020816024817f000000000000000000000000000000000000000000000000000000000000000088165afa9081156104ab575f91611aa8575b5015611a9657611a2a604091611a25611a7094611a0a611f38565b60018060a01b03166001600160601b0360a01b5f5416175f55565b611ffb565b6020810151600180546001600160a01b0319166001600160a01b0390921691909117905580516001600160a01b0316848116611a86575b5001516001600160a01b031690565b908116611a7a5750565b611a8390611693565b50565b611a8f906115e8565b505f611a61565b6040516362df054560e01b8152600490fd5b611ac1915060203d6020116104a4576104968183610732565b5f6119ef565b60405190611ad482610717565b60606040838281528260208201520152565b9060208282031261025a5781516001600160401b039283821161025a57019060608282031261025a5760405192611b1c84610717565b825181811161025a5782611b31918501611018565b8452602083015181811161025a5782611b4b918501611018565b6020850152604083015190811161025a57611b669201611018565b604082015290565b9081602091031261025a575190565b60409065ffffffffffff610fd894931681528160208201520190610fdb565b90939293611ba8611ac7565b94805180611c9f575b5050600454606083901c6001600160a01b03918216148015929190611c84575b5050611c7c575f54611c17929190602090611bf690610d9a906001600160a01b031681565b8187015190604051808097819463810da75d60e01b83528860048401611b7d565b03915afa9081156104ab57611c44935f92611c49575b50611c3e9192604087015191610fc2565b90612176565b915190565b611c3e9250611c6f9060203d602011611c75575b611c678183610732565b810190611b6e565b91611c2d565b503d611c5d565b505090515f91565b60055481166001600160a01b03169116141590505f80611bd1565b611cb3929650602080918301019101611ae6565b935f80611bb1565b6004549091606083901c6001600160a01b039283161480159290611d62575b5050611143575f5460049190602090611cfd90610d9a906001600160a01b031681565b60405163bd49c35f60e01b815293849182905afa9081156104ab57610fd8925f92611d3d575b50611d36905f52600260205260405f2090565b5490612176565b611d36919250611d5b9060203d602011611c7557611c678183610732565b9190611d23565b60055481166001600160a01b03169116141590505f80611cda565b8054821015611d92575f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b8054600160401b81101561071257611dc391600182018155611d7d565b8154905f199060031b1b19169055565b90815491600160401b831015610712578261151a91600161076095018155611d7d565b908154905f829160058411611e6a575b611e119350846124d6565b80611e4357505f905b6001600160d01b038216156113a057610fd8916001611e399201611d7d565b90549060031b1c90565b611e5d611e52611e649261184d565b835f5260205f200190565b5460301c90565b90611e1a565b9192611e75816123a3565b810390811161131857611e1193855f5265ffffffffffff808360205f20015416908516105f14611ea6575091611e06565b929150611eb29061130a565b90611e06565b60405190611ec5826106f7565b5f6020838281520152565b90611ef9611ef3611f1a92611ee3611eb8565b50611eec611eb8565b5084611d7d565b50612188565b91600165ffffffffffff845116936020828060d01b03910151169101611d7d565b90549060405192611f2a846106f7565b835260031b1c602082015290565b611f406121fb565b611f486121fb565b60015f8051602061255683398151915255565b60405190611f6882610717565b5f6040838281528260208201520152565b8091039060a0821261025a57606060405192611f9484610717565b1261025a57608090604051611fa881610717565b8151611fb38161052d565b81526020820151611fc38161052d565b60208201526040820151611fd68161052d565b604082015283526060810151611feb8161052d565b60208401520151611b668161052d565b612003611f5b565b5061201981519160208080948301019101611f79565b80820180516040516302910f8b60e31b8082526001600160a01b039283166004830152939491939082816024817f000000000000000000000000000000000000000000000000000000000000000089165afa9081156104ab575f91612159575b501561046a57816120bd916040870195612099875160018060a01b031690565b6040519283526001600160a01b031660048301529092839190829081906024820190565b03917f0000000000000000000000000000000000000000000000000000000000000000165afa9182156104ab575f9261213c575b50501561212a5751600480546001600160a01b039283166001600160a01b03199182161790915591516005805490931691161790555190565b604051631f0853c160e21b8152600490fd5b6121529250803d106104a4576104968183610732565b5f806120f1565b6121709150833d85116104a4576104968183610732565b5f612079565b9080821015612183575090565b905090565b90604051612195816106f7565b915465ffffffffffff8116835260301c6020830152565b8054806121bd5750505f905f905f90565b5f19908082810111611318576121da925f5260205f200101612188565b9065ffffffffffff82511691602060018060d01b0391015116906001929190565b60ff5f805160206125768339815191525460401c161561221757565b604051631afcd79f60e31b8152600490fd5b8054600160401b8110156107125761224691600182018155611d7d565b61227157815160209092015160301b65ffffffffffff191665ffffffffffff92909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b80549293929190821561237a576122a56122a0611e528561184d565b612188565b906122b6825165ffffffffffff1690565b65ffffffffffff848116911681106123685761232c9460209488926122e461192a875165ffffffffffff1690565b03612330575061231e926122fa6123059261184d565b905f5260205f200190565b9065ffffffffffff82549181199060301b169116179055565b01516001600160d01b031690565b9190565b91505061236391612350612342610753565b65ffffffffffff9093168352565b6001600160d01b03881682860152612229565b61231e565b604051632520601d60e01b8152600490fd5b61239e925061238a612342610753565b6001600160d01b0385166020830152612229565b5f9190565b80156111435780611c3e61246e61246461245a61245061244661243c6124326001610fd89a5f908b60801c806124ca575b508060401c806124bd575b508060201c806124b0575b508060101c806124a3575b508060081c80612496575b508060041c80612489575b508060021c8061247c575b50821c612475575b811c1b61242b818b6112ec565b0160011c90565b61242b818a6112ec565b61242b81896112ec565b61242b81886112ec565b61242b81876112ec565b61242b81866112ec565b61242b81856112ec565b80926112ec565b810161241e565b600291509101905f612416565b600491509101905f61240b565b600891509101905f612400565b601091509101905f6123f5565b602091509101905f6123ea565b604091509101905f6123df565b9150506080905f6123d4565b91905b8382106124e65750505090565b9091928083169080841860011c820180921161131857845f5265ffffffffffff808360205f20015416908416105f146125235750925b91906124d9565b93925061252f9061130a565b9161251c56fe02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220dae242242ae38bf129200c0400461c817fd7d45e08b63cbee29f0e840f1e00d864736f6c63430008190033","sourceMap":"681:3264:79:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;-1:-1:-1;;681:3264:79;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3551:47:23;;;:87;;;;681:3264:79;;;;;;;;;;3551:87:23;-1:-1:-1;;;1133:40:29;;-1:-1:-1;3551:87:23;;;681:3264:79;-1:-1:-1;681:3264:79;;;;;;;;-1:-1:-1;;681:3264:79;;;;;;1537:38:76;-1:-1:-1;;;;;681:3264:79;;;;;;;;;;;;-1:-1:-1;;681:3264:79;;;;;;1632:54:76;-1:-1:-1;;;;;681:3264:79;;;;;;;;;;;;-1:-1:-1;;681:3264:79;;;;;;1743:56:76;-1:-1:-1;;;;;681:3264:79;;;;;;;;;;;;-1:-1:-1;;681:3264:79;;;;;;-1:-1:-1;;;;;681:3264:79;;;;;;;;3217:103:28;;;:::i;:::-;681:3264:79;;-1:-1:-1;;;4285:48:76;;4322:10;681:3264:79;4285:48:76;;681:3264:79;;;;;-1:-1:-1;;;;;4295:16:76;681:3264:79;4285:48:76;;;;;;;-1:-1:-1;4285:48:76;;;681:3264:79;4284:49:76;;4280:99;;-1:-1:-1;;;;;681:3264:79;-1:-1:-1;;4322:10:76;297:2:88;681:3264:79;;267:46:88;4459:27:76;;;;681:3264:79;;4459:15:76;681:3264:79;;;;;;;4459:27:76;681:3264:79;4459:37:76;4455:87;;4654:38;4552:27;4654:38;4552:27;;;681:3264:79;;4459:15:76;681:3264:79;;;;;;;4552:27:76;681:3264:79;4631:6:76;;;;:::i;:::-;681:3264:79;;;;;;;;;;;;;4654:38:76;;;;3282:1:28;1805;-1:-1:-1;;;;;;;;;;;681:3264:79;3716:283:28;3282:1;681:3264:79;4455:87:76;681:3264:79;;-1:-1:-1;;;4519:12:76;;681:3264:79;;4519:12:76;4280:99;681:3264:79;;-1:-1:-1;;;4356:12:76;;681:3264:79;;4356:12:76;4285:48;;;;681:3264:79;4285:48:76;681:3264:79;4285:48:76;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;681:3264:79:-;;;;;;-1:-1:-1;;681:3264:79;;;;;;-1:-1:-1;681:3264:79;-1:-1:-1;;;;;;;;;;;681:3264:79;;;4919:24:23;681:3264:79;-1:-1:-1;681:3264:79;4919:24:23;681:3264:79;;;;;;;;;;;;;-1:-1:-1;;681:3264:79;;;;;;322:32:69;-1:-1:-1;;;;;681:3264:79;;;;;;;-1:-1:-1;;;;;681:3264:79;;;;;:::o;:::-;;;;;;-1:-1:-1;;681:3264:79;;;;5350:25:23;681:3264:79;;;;;;;:::i;:::-;;-1:-1:-1;681:3264:79;-1:-1:-1;;;;;;;;;;;681:3264:79;;3202:4:23;4919:24;681:3264:79;-1:-1:-1;681:3264:79;4919:24:23;681:3264:79;3202:4:23;:::i;:::-;5350:25;:::i;681:3264:79:-;;;;;;-1:-1:-1;;681:3264:79;;;;;;;;;:::i;:::-;966:10:27;-1:-1:-1;;;;;681:3264:79;;6441:34:23;6437:102;;6549:37;681:3264:79;;;6549:37:23;:::i;6437:102::-;681:3264:79;;-1:-1:-1;;;6498:30:23;;681:3264:79;;6498:30:23;681:3264:79;;;;;;-1:-1:-1;;681:3264:79;;;;;;;;;:::i;:::-;3217:103:28;;:::i;:::-;966:10:27;-1:-1:-1;681:3264:79;;;;;;;;;;1356:26:76;;681:3264:79;;4468:23:23;4464:108;;-1:-1:-1;4861:4:76;681:3264:79;-1:-1:-1;;;;;681:3264:79;;;;;;4861:13:76;;4857:63;;-1:-1:-1;;;;;;681:3264:79;;;4861:4:76;681:3264:79;4958:14:76;-1:-1:-1;;4958:14:76;4861:4;-1:-1:-1;;;;;;;;;;;681:3264:79;;4464:108:23;681:3264:79;;;;4514:47:23;;;;;;966:10:27;681:3264:79;4514:47:23;;681:3264:79;;;;;4514:47:23;681:3264:79;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;681:3264:79;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;-1:-1:-1;;;;;681:3264:79;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;681:3264:79;;;;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;:::-;-1:-1:-1;;;;;681:3264:79;;;;;;-1:-1:-1;;681:3264:79;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;681:3264:79;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;681:3264:79;;;;;;;;;;;;;;;-1:-1:-1;;;;;681:3264:79;;;;;;;2045:63;681:3264;;;;;;:::i;:::-;;;;-1:-1:-1;681:3264:79;2045:16;681:3264;;;-1:-1:-1;681:3264:79;2045:63;:::i;:::-;681:3264;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;681:3264:79;;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;681:3264:79;;;;-1:-1:-1;;;;;681:3264:79;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;681:3264:79;;;;;;;4301:16:25;681:3264:79;;4726:16:25;;:34;;;;681:3264:79;4805:1:25;4790:16;:50;;;;681:3264:79;4855:13:25;:30;;;;681:3264:79;4851:91:25;;;-1:-1:-1;;;;;;;;;;;681:3264:79;;-1:-1:-1;;681:3264:79;;;;;718:4:69;;4951:18:25;4979:67;;718:4:69;:::i;:::-;5066:101:25;;681:3264:79;5066:101:25;-1:-1:-1;;;;;;;;;;;681:3264:79;;-1:-1:-1;;;;681:3264:79;;;;;-1:-1:-1;681:3264:79;;5142:14:25;;681:3264:79;;5142:14:25;681:3264:79;4979:67:25;-1:-1:-1;;;;;;;;;;;681:3264:79;;-1:-1:-1;;;;681:3264:79;-1:-1:-1;;;681:3264:79;;;718:4:69;:::i;4851:91:25:-;681:3264:79;;-1:-1:-1;;;4908:23:25;;681:3264:79;;4908:23:25;4855:30;4872:13;;;4855:30;;;4790:50;4818:4;4810:25;:30;;-1:-1:-1;4790:50:25;;4726:34;;;-1:-1:-1;4726:34:25;;681:3264:79;;;;;;-1:-1:-1;;681:3264:79;;;;;;;1253:6:76;681:3264:79;;;;;;;;;-1:-1:-1;;681:3264:79;;;;1267:23;681:3264;;;-1:-1:-1;;;;;681:3264:79;;;;;;;;;;;;;;-1:-1:-1;;681:3264:79;;;;;;;1356:26:76;681:3264:79;;;;;;;;;-1:-1:-1;;681:3264:79;;;;;;;;-1:-1:-1;;;;;681:3264:79;;;;;;;;;;;;;;-1:-1:-1;;681:3264:79;;;;;;;;-1:-1:-1;;;;;681:3264:79;;;;;;;;;;;;;;-1:-1:-1;;681:3264:79;;;;;;961:42;-1:-1:-1;;;;;681:3264:79;;;;;;;;;;;;-1:-1:-1;;681:3264:79;;;;;;3901:31:23;681:3264:79;;;;;:::i;:::-;;;-1:-1:-1;681:3264:79;-1:-1:-1;;;;;;;;;;;681:3264:79;;;-1:-1:-1;681:3264:79;;;;;;;;;;;;;;;;;3901:31:23;681:3264:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;681:3264:79;;;;-1:-1:-1;681:3264:79;;;477:31:75;681:3264:79;;;;;;:::i;:::-;;;;;;;;;;;;;;;416:25:75;;;;681:3264:79;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;681:3264:79;;;;;;;;;;;;;477:31:75;;681:3264:79;;;;;;;;;;:::i;:::-;477:31:75;681:3264:79;;477:31:75;;;;;;:::i;:::-;518:79;;;681:3264:79;518:79:75;;681:3264:79;;;;;;;;;;;-1:-1:-1;;681:3264:79;;;;;;;;;;;;;;;;;-1:-1:-1;;681:3264:79;;;;;;;-1:-1:-1;;;;;404:28:69;681:3264:79;;;;;;;;;;-1:-1:-1;;681:3264:79;;;;;;1439:41:76;-1:-1:-1;;;;;681:3264:79;;;;;;;;;;;;-1:-1:-1;;681:3264:79;;;;;;-1:-1:-1;681:3264:79;2009:67:76;681:3264:79;;;;-1:-1:-1;681:3264:79;;;;;;;;;;;;;;-1:-1:-1;;681:3264:79;;;;5767:26:23;681:3264:79;;;;;;;:::i;:::-;;-1:-1:-1;681:3264:79;-1:-1:-1;;;;;;;;;;;681:3264:79;;3202:4:23;4919:24;681:3264:79;-1:-1:-1;681:3264:79;4919:24:23;681:3264:79;3202:4:23;:::i;:::-;5767:26;:::i;681:3264:79:-;;;;;;-1:-1:-1;;681:3264:79;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;681:3264:79;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;-1:-1:-1;;681:3264:79;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;681:3264:79;;;;;;;;;;;;:::i;:::-;3217:103:28;;:::i;:::-;-1:-1:-1;681:3264:79;;;5246:21:76;;:13;;-1:-1:-1;;;;;681:3264:79;5246:13:76;681:3264:79;;-1:-1:-1;;;;;681:3264:79;;;5246:21:76;681:3264:79;;-1:-1:-1;;;5246:23:76;;681:3264:79;;;;;5246:23:76;;;;;;;-1:-1:-1;5246:23:76;;;681:3264:79;-1:-1:-1;;;;;;681:3264:79;;;5232:10:76;:37;5228:87;;5341:4;681:3264:79;-1:-1:-1;;;;;681:3264:79;;;;5355:469:76;;681:3264:79;-1:-1:-1;;681:3264:79;;;;;;;;;;;;;;;;5839:55:76;;681:3264:79;;;;5839:55:76;;;;3282:1:28;1805;-1:-1:-1;;;;;;;;;;;681:3264:79;3716:283:28;5355:469:76;681:3264:79;;;;5435:94:76;;;;681:3264:79;5435:94:76;;;;;;;;;;;;681:3264:79;5435:94:76;;;:::i;:::-;;681:3264:79;;5435:94:76;;;;;;:::i;:::-;681:3264:79;5548:9:76;:51;5544:118;;-1:-1:-1;5839:55:76;5676:138;;;;5839:55;5676:138;;;1150:7;5676:138;;5355:469;;;5544:118;681:3264:79;;-1:-1:-1;;;5626:21:76;;681:3264:79;;5626:21:76;5228:87;681:3264:79;;-1:-1:-1;;;5292:12:76;;681:3264:79;;5292:12:76;5246:23;;;;;681:3264:79;5246:23:76;681:3264:79;5246:23:76;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;681:3264:79;;;;;;-1:-1:-1;;681:3264:79;;;;;;;;-1:-1:-1;;;;;681:3264:79;;;;;;;;;;;;;;-1:-1:-1;;681:3264:79;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;-1:-1:-1;;681:3264:79;;;;;;;1150:7:76;681:3264:79;;;;;;;;;-1:-1:-1;;681:3264:79;;;;;;;2700:1:76;681:3264:79;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;1914:201;;2045:63;1914:201;;-1:-1:-1;681:3264:79;2045:16;681:3264;;;-1:-1:-1;681:3264:79;2045:63;:::i;:::-;1914:201;:::o;681:3264::-;;;;;;;;;;;;;;;;;-1:-1:-1;681:3264:79;;;;;;;;-1:-1:-1;;681:3264:79;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;681:3264:79;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;681:3264:79;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;-1:-1:-1;;;;;681:3264:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2764:920:76:-;;2978:48;2764:920;;;;2978:48;;;;:::i;:::-;3036:36;;;681:3264:79;;:::i;:::-;;;;3086:20:76;3082:107;;2764:920;3216:11;;;;:193;;;;;2764:920;3216:394;;;;2764:920;3199:455;;;;;;2764:920;:::o;3199:455::-;3635:8;-1:-1:-1;3635:8:76;:::o;3216:394::-;3553:39;;;;;3430:180;3553:39;;;681:3264:79;;;;;;;;;;3430:180:76;;467:2:88;681:3264:79;3430:180:76;;;;;:::i;:::-;;681:3264:79;3444:31:76;-1:-1:-1;;;;;681:3264:79;3430:180:76;;;;;;;-1:-1:-1;3430:180:76;;;3216:394;3429:181;;3216:394;;;;;;3430:180;;;;3553:39;3430:180;3553:39;3430:180;;;;;;;:::i;:::-;;;;3216:193;-1:-1:-1;681:3264:79;;;-1:-1:-1;;;;;;681:3264:79;3248:161:76;3354:37;;;681:3264:79;3248:161:76;681:3264:79;;;;;;;;;;3248:161:76;;;;;;;:::i;:::-;;681:3264:79;3262:29:76;-1:-1:-1;;;;;681:3264:79;3248:161:76;;;;;;;-1:-1:-1;3248:161:76;;;3216:193;3247:162;;3216:193;;;3248:161;;;;;;;;;;;;;;:::i;:::-;;;;3082:107;3139:39;;;;;;;;;;;;;:::i;:::-;3082:107;;;;;681:3264:79;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;9856:1:60;681:3264:79;;;;;;;:::o;:::-;;:::i;3740:389:76:-;3918:5;681:3264:79;;;-1:-1:-1;;;3853:71:76;;;-1:-1:-1;;;;;681:3264:79;;;3853:71:76;;;681:3264:79;;;;;;;;3740:389:76;;681:3264:79;3853:71:76;;681:3264:79;;3853:71:76;681:3264:79;;;3867:29:76;681:3264:79;;3853:71:76;;;;;;;3918:5;3853:71;;;3740:389;3852:72;;681:3264:79;;;3852:181:76;;3740:389;3835:242;;;;;;4094:28;;;:::i;3835:242::-;4058:8;;3918:5;4058:8;:::o;3852:181::-;681:3264:79;;3945:88:76;;;-1:-1:-1;;;;;681:3264:79;;3853:71:76;3945:88;;681:3264:79;467:2:88;681:3264:79;;;;;;;;-1:-1:-1;681:3264:79;;;;;;;;3959:31:76;681:3264:79;3945:88:76;;;;;;;3918:5;3945:88;;;3852:181;3944:89;;;3852:181;;;;;3945:88;;;;;;-1:-1:-1;3945:88:76;;;;;;:::i;:::-;;;;;3853:71;;;;;;;;;;;;;;:::i;:::-;;;;3326:384:28;-1:-1:-1;;;;;;;;;;;1847:1:28;681:3264:79;;3526:20:28;3522:88;;1847:1;681:3264:79;;3326:384:28:o;3522:88::-;681:3264:79;;-1:-1:-1;;;3569:30:28;;;;;3164:253:79;3261:7;681:3264;-1:-1:-1;;;;;681:3264:79;467:2:88;681:3264:79;;;3261:31;3257:85;;-1:-1:-1;681:3264:79;3351:16;681:3264;;;-1:-1:-1;681:3264:79;;;837:15:62;;;14369:24:58;14365:103;;837:15:62;;681:3264:79;6360:12:86;;;;681:3264:79;;;6360:24:86;6356:75;;3164:253:79;6474:30:86;;;:::i;:::-;681:3264:79;;;;;;;;10303:8:60;;:63;:8;;;:63;-1:-1:-1;10303:63:60;;-1:-1:-1;;;;;681:3264:79;;;;10726:7:86;681:3264:79;;10736:17:86;;;;:::i;:::-;10726:31;;;6604:24;;;10726:31;-1:-1:-1;;6600:188:86;;;6657:7;;6644:29;6657:7;;;;6644:21;6657:7;;:::i;:::-;6644:21;;:::i;:::-;:29;681:3264:79;;;;;;;;;;;;;;;;;;;;;6600:188:86;6753:24;681:3264:79;8167:38:60;681:3264:79;;8167:38:60;;:::i;:::-;6753:24:86;;;:::i;6604:::-;681:3264:79;6614:14:86;;;-1:-1:-1;6604:24:86;;;;10726:31;;;;10303:63:60;681:3264:79;;;;;;;;;;14249:109:60;-1:-1:-1;14249:109:60;681:3264:79;-1:-1:-1;14249:109:60;;;681:3264:79;;;10303:63:60;;;6356:75:86;6400:20;;;:::i;:::-;6356:75;;14365:103:58;681:3264:79;;-1:-1:-1;;;14416:41:58;;14447:2;3261:7:79;14416:41:58;;681:3264:79;837:15:62;681:3264:79;;;;;;14416:41:58;3257:85:79;681:3264;;-1:-1:-1;;;3315:16:79;;3261:7;;3315:16;4148:103:23;-1:-1:-1;681:3264:79;;;-1:-1:-1;;;;;;;;;;;681:3264:79;;;;;;;;966:10:27;681:3264:79;;;;;;;;;;4468:23:23;4464:108;;4148:103;:::o;7270:387::-;-1:-1:-1;;;;;681:3264:79;;-1:-1:-1;681:3264:79;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2887:71:23;681:3264:79;;;;-1:-1:-1;681:3264:79;;;;;;;;;;;-1:-1:-1;;;;;681:3264:79;;;;;;;;;;-1:-1:-1;;681:3264:79;7509:4:23;681:3264:79;;;966:10:27;;-1:-1:-1;;;;;681:3264:79;-1:-1:-1;7532:40:23;-1:-1:-1;;7532:40:23;7509:4;7586:11;:::o;7270:387::-;-1:-1:-1;;;;;681:3264:79;;-1:-1:-1;681:3264:79;;;;;;;;;1356:26:76;;-1:-1:-1;;;;;;;;;;;2887:71:23;681:3264:79;;3901:31:23;681:3264:79;;;;-1:-1:-1;681:3264:79;;;;;;;;;;;-1:-1:-1;;;;;681:3264:79;;;;;;;;;;-1:-1:-1;;681:3264:79;7509:4:23;681:3264:79;;;966:10:27;;-1:-1:-1;;;;;681:3264:79;;7532:40:23;-1:-1:-1;;7532:40:23;7509:4;7586:11;:::o;7432:219::-;7628:12;;;-1:-1:-1;7628:12:23;:::o;7270:387::-;-1:-1:-1;681:3264:79;;;-1:-1:-1;;;;;;;;;;;681:3264:79;;;;;;;;-1:-1:-1;;;;;681:3264:79;;;;;;;;;;;;3901:31:23;681:3264:79;7892:388:23;-1:-1:-1;681:3264:79;;;-1:-1:-1;;;;;;;;;;;681:3264:79;;;;;;;;-1:-1:-1;;;;;681:3264:79;;;;;;;;;;;;;;;;-1:-1:-1;681:3264:79;;;;;;;;;;;-1:-1:-1;;;;;681:3264:79;;;;;;;;;;-1:-1:-1;;681:3264:79;;;966:10:27;;-1:-1:-1;;;;;681:3264:79;;8155:40:23;-1:-1:-1;;8155:40:23;681:3264:79;8209:11:23;:::o;681:3264:79:-;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;681:3264:79;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::o;7558:604:86:-;;681:3264:79;;7686:17:86;7682:83;;681:3264:79;7789:27:86;681:3264:79;7789:27:86;681:3264:79;;7789:27:86;;;;;;:::i;:::-;7860:14;;;;;:::i;:::-;681:3264:79;;;;;;;;;;;;;;;;7888:22:86;;;7884:77;;7975:21;-1:-1:-1;7975:84:86;;;;7558:604;7971:139;;;;8127:28;;;;:::i;7971:139::-;8082:17;;7789:27;8082:17;681:3264:79;8075:24:86;:::o;7975:84::-;681:3264:79;;;8009:16:86;681:3264:79;;8009:16:86;:::i;:::-;681:3264:79;;;8001:24:86;:57;;;;;7975:84;;;;;;;8001:57;8029:29;8038:8;;;8029:18;8038:8;8029:23;8038:8;;:::i;:::-;8029:18;;:::i;:::-;681:3264:79;;;;;8029:23:86;681:3264:79;;;;8029:29:86;;8001:57;;;;7884:77;7933:17;;;;;7789:27;7933:17;681:3264:79;7926:24:86;:::o;7682:83::-;7726:28;;;;:::i;681:3264:79:-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;681:3264:79;;;;;;;;:::i;5907:716:76:-;6030:34;5907:716;6030:34;;;;:::i;:::-;681:3264:79;;-1:-1:-1;;;6080:41:76;;-1:-1:-1;;;;;681:3264:79;;;6080:41:76;;;681:3264:79;;;;;6080:41:76;681:3264:79;;;6090:13:76;681:3264:79;;6080:41:76;;;;;;;-1:-1:-1;6080:41:76;;;5907:716;6079:42;;6075:90;;6266:27;681:3264:79;2540:111:28;6210:14:76;681:3264:79;2540:111:28;;;:::i;:::-;681:3264:79;;;;;;-1:-1:-1;;;;;681:3264:79;;-1:-1:-1;681:3264:79;;;-1:-1:-1;681:3264:79;;6210:14:76;6266:27;:::i;:::-;6080:41;6311:15;;681:3264:79;;;;-1:-1:-1;;;;;;681:3264:79;-1:-1:-1;;;;;681:3264:79;;;;;;;;;;;-1:-1:-1;;;;;681:3264:79;;;;6337:143:76;;5907:716;-1:-1:-1;6493:28:76;681:3264:79;-1:-1:-1;;;;;681:3264:79;;;;;;;6489:128:76;;5907:716;:::o;6489:128::-;6551:55;;;:::i;:::-;;5907:716::o;6337:143::-;6404:65;;;:::i;:::-;;6337:143;;;6075:90;681:3264:79;;-1:-1:-1;;;6144:10:76;;6080:41;;6144:10;6080:41;;;;;;;;;;;;;;:::i;:::-;;;;681:3264:79;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;681:3264:79;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;2121:740::-;;;;;681:3264;;:::i;:::-;;;;2362:16;2358:92;;2121:740;-1:-1:-1;;2464:7:79;681:3264;467:2:88;681:3264:79;;;-1:-1:-1;;;;;681:3264:79;;;2464:31;;;;;681:3264;2464:56;;2121:740;2460:120;;;;-1:-1:-1;681:3264:79;2637:67;;681:3264;;2676:27;;2637;;:13;;-1:-1:-1;;;;;681:3264:79;2637:13;681:3264;2637:27;2676;;;;681:3264;;;;;;;;;;;2637:67;;;2464:7;2637:67;;;:::i;:::-;;;;;;;;;;2611:198;2637:67;-1:-1:-1;2637:67:79;;;2121:740;2763:31;2722:73;2763:31;;681:3264;2763:31;;;2722:73;;:::i;:::-;2611:198;;:::i;:::-;2823:21;;2121:740;:::o;2637:67::-;2722:73;2637:67;;;;2676:27;2637:67;2676:27;2637:67;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;2460:120;-1:-1:-1;;2547:21:79;;-1:-1:-1;;2536:33:79:o;2464:56::-;2499:8;681:3264;;;-1:-1:-1;;;;;681:3264:79;;;2499:21;;;-1:-1:-1;2464:56:79;;;;2358:92;2408:31;;;;;;;;;;;;;:::i;:::-;2358:92;;;;;2867:291;2977:7;681:3264;2867:291;;681:3264;;;;-1:-1:-1;;;;;681:3264:79;;;2977:31;;;;681:3264;2977:56;;2867:291;2973:95;;;;-1:-1:-1;681:3264:79;2977:7;;681:3264;3094:27;;:25;;:13;;-1:-1:-1;;;;;681:3264:79;3094:13;681:3264;3094:25;681:3264;;-1:-1:-1;;;3094:27:79;;681:3264;;;;;3094:27;;;;;;;3085:66;3094:27;-1:-1:-1;3094:27:79;;;2867:291;3123:27;;;681:3264;;4459:15:76;681:3264:79;;;;;;;3123:27;681:3264;3085:66;;:::i;3094:27::-;3123;3094;;;;;;;;;;;;;;;:::i;:::-;;;;;2977:56;3012:8;681:3264;;;-1:-1:-1;;;;;681:3264:79;;;3012:21;;;-1:-1:-1;2977:56:79;;;;681:3264;;;;;;;;-1:-1:-1;681:3264:79;;-1:-1:-1;681:3264:79;;;-1:-1:-1;681:3264:79;:::o;:::-;;;;;;;;;;;;;;;-1:-1:-1;;;681:3264:79;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;-1:-1:-1;;;681:3264:79;;;;;;;;;;;;;;;:::i;6999:207:86:-;;681:3264:79;;9594:15:60;-1:-1:-1;9619:18:60;9652:7;9658:1;9652:7;;9648:234;;6999:207:86;9906:53:60;;;;;:::i;:::-;9977:8;;;:63;-1:-1:-1;9977:63:60;;-1:-1:-1;;;;;681:3264:79;;7168:7:86;681:3264:79;;;7178:12:86;;:17;:12;;:17;:::i;:::-;681:3264:79;;;;;;;;9977:63:60;9992:41;10025:7;9992:48;10025:7;;:::i;:::-;9992:41;14249:109;;;;;;14099:265;;9992:41;681:3264:79;;;;;9992:48:60;9977:63;;;9648:234;9695:14;;;;;:::i;:::-;681:3264:79;;;;;;;9906:53:60;14249:109;;-1:-1:-1;14249:109:60;681:3264:79;14249:109:60;;;-1:-1:-1;14249:109:60;;681:3264:79;;;;;9727:48:60;9723:149;681:3264:79;;;9795:10:60;9723:149;9648:234;;9723:149;9850:7;;;;;;:::i;:::-;9723:149;9648:234;;681:3264:79;;;;;;;:::i;:::-;-1:-1:-1;681:3264:79;;;;;;;:::o;11486:272:86:-;;681:3264:79;11308:22:60;11718:31:86;11486:272;681:3264:79;;:::i;:::-;;;;:::i;:::-;;11308:22:60;;:::i;:::-;681:3264:79;;:::i;:::-;;11718:12:86;681:3264:79;;;;;11731:17:86;681:3264:79;;;;;11731:17:86;;681:3264:79;;11718:12:86;;:31;:::i;:::-;681:3264:79;;;;;;;;;:::i;:::-;;;;;;11731:17:86;11672:79;;681:3264:79;11486:272:86;:::o;6893:76:25:-;;;:::i;:::-;;;:::i;:::-;1805:1:28;-1:-1:-1;;;;;;;;;;;681:3264:79;6893:76:25:o;681:3264:79:-;;;;;;;:::i;:::-;-1:-1:-1;681:3264:79;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;3423:520::-;681:3264;;:::i;:::-;;3571:30;681:3264;;3571:30;;;;;;;;;;;:::i;:::-;3654:14;;;681:3264;;;;-1:-1:-1;;;3617:52:79;;;-1:-1:-1;;;;;681:3264:79;;;3617:52;;;681:3264;3654:14;;681:3264;;;3654:14;681:3264;;;3627:16;681:3264;;3617:52;;;;;;;-1:-1:-1;3617:52:79;;;3423:520;3616:53;;3612:103;;3768:15;3730:54;3768:15;681:3264;3768:15;;681:3264;;;;;;;;;;;;;;;3730:54;;;-1:-1:-1;;;;;681:3264:79;3617:52;3730:54;;681:3264;;;;;-1:-1:-1;681:3264:79;;;;;;;;;3730:54;;3740:17;;681:3264;3730:54;;;;;;;-1:-1:-1;3730:54:79;;;3423:520;3729:55;;;3725:106;;681:3264;3617:52;681:3264;;-1:-1:-1;;;;;681:3264:79;;;-1:-1:-1;;;;;;681:3264:79;;;;;;;;;3875:26;681:3264;;;;;;;;;;3919:17;3423:520;:::o;3725:106::-;681:3264;;-1:-1:-1;;;3807:13:79;;3617:52;;3807:13;3730:54;;;;;;-1:-1:-1;3730:54:79;;;;;;:::i;:::-;;;;;3617:52;;;;;;;;;;;;;;:::i;:::-;;;;2557:104:57;;2641:5;;;;;;:13;2557:104;:::o;2641:13::-;;;2557:104;:::o;681:3264:79:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;10552:388:60:-;681:3264:79;;10728:8:60;;;10752:20;;10690:17;10752:20;10690:17;10752:20;10690:17;10752:20;:::o;10724:210::-;681:3264:79;;;;;;;;;;;14249:109:60;10690:17;14249:109;;10690:17;14249:109;;;681:3264:79;:::i;:::-;;;;;;;14249:109:60;681:3264:79;;;;;10911:11:60;;681:3264:79;;10886:37:60;10870:1;10886:37;;;:::o;7084:141:25:-;681:3264:79;-1:-1:-1;;;;;;;;;;;681:3264:79;;;;7150:18:25;7146:73;;7084:141::o;7146:73::-;681:3264:79;;-1:-1:-1;;;7191:17:25;;;;;681:3264:79;;;-1:-1:-1;;;681:3264:79;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;681:3264:79;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;11513:870:60;681:3264:79;;11513:870:60;;;681:3264:79;11513:870:60;11672:7;;;;681:3264:79;11775:28:60;11795:7;;;:::i;11775:28::-;681:3264:79;:::i;:::-;;;;;;;;;;;;;;;;11877:15:60;-1:-1:-1;11873:91:60;;681:3264:79;;12233:11:60;681:3264:79;;;12027:16:60;681:3264:79;;;;;;;12027:16:60;;;;12083:7;12063:43;12083:7;;12063:28;12083:7;;:::i;:::-;12063:28;14249:109;;;;;;14099:265;;12063:28;681:3264:79;;;;;;;;;;;;;;;;;12063:43:60;12233:11;681:3264:79;-1:-1:-1;;;;;681:3264:79;;;;12225:27:60;;:::o;12023:189::-;681:3264:79;;;12145:52:60;681:3264:79;12155:41:60;681:3264:79;;:::i;:::-;;;;;;;;12155:41:60;-1:-1:-1;;;;;681:3264:79;;12155:41:60;;;681:3264:79;12145:52:60;:::i;:::-;12023:189;;11873:91;681:3264:79;;-1:-1:-1;;;11919:30:60;;;;;11668:709;12283:52;681:3264:79;;12293:41:60;681:3264:79;;:::i;12293:41:60:-;-1:-1:-1;;;;;681:3264:79;;12293:41:60;;;681:3264:79;12145:52:60;:::i;12283:::-;11678:1;12349:17;;:::o;8587:1642:57:-;8658:6;;8654:45;;9401:7;10201:10;10142:26;10093;10044;9995;9946;9897;9848;681:3264:79;10189:23:57;9401:7;8663:1;681:3264:79;;;;10826:16:57;10822:99;;8587:1642;681:3264:79;;;;10938:15:57;10934:96;;8587:1642;681:3264:79;;;;11047:15:57;11043:96;;8587:1642;681:3264:79;;;;11156:15:57;11152:96;;8587:1642;681:3264:79;;;;11265:14:57;11261:93;;8587:1642;681:3264:79;;;;11371:14:57;11367:93;;8587:1642;681:3264:79;;;;11477:14:57;11473:93;;8587:1642;681:3264:79;;;11579:64:57;;8587:1642;681:3264:79;;;9858:10:57;;;;:::i;:::-;681:3264:79;;;;;9848:26:57;9907:10;;;;:::i;9897:26::-;9956:10;;;;:::i;9946:26::-;10005:10;;;;:::i;9995:26::-;10054:10;;;;:::i;10044:26::-;10103:10;;;;:::i;10093:26::-;10152:10;;;;:::i;10142:26::-;10201:10;;;:::i;11579:64::-;681:3264:79;;11579:64:57;;11473:93;681:3264:79;11511:11:57;;681:3264:79;;11473:93:57;;;;11367;681:3264:79;11405:11:57;;681:3264:79;;11367:93:57;;;;11261;681:3264:79;11299:11:57;;681:3264:79;;11261:93:57;;;;11152:96;681:3264:79;11191:12:57;;681:3264:79;;11152:96:57;;;;11043;681:3264:79;11082:12:57;;681:3264:79;;11043:96:57;;;;10934;681:3264:79;10973:12:57;;681:3264:79;;10934:96:57;;;;10822:99;10862:13;;;681:3264:79;10822:99:57;;;;12736:433:60;;;12919:10;;;;;;13151:11;;;12736:433;:::o;12912:230::-;2900:5:57;;;;;;2910;;;;681:3264:79;;;;;;;;;14249:109:60;-1:-1:-1;14249:109:60;681:3264:79;14249:109:60;;;-1:-1:-1;14249:109:60;;681:3264:79;;;;;-1:-1:-1;12996:136:60;681:3264:79;;;13055:10:60;12996:136;;12912:230;;;;12996:136;13110:7;;;;;;:::i;:::-;12996:136;;","linkReferences":{},"immutableReferences":{"57808":[{"start":1278,"length":32}],"57811":[{"start":3054,"length":32}],"58762":[{"start":893,"length":32},{"start":3111,"length":32},{"start":8264,"length":32}],"58765":[{"start":627,"length":32},{"start":6590,"length":32}],"58768":[{"start":695,"length":32},{"start":4624,"length":32},{"start":4948,"length":32}],"58771":[{"start":763,"length":32},{"start":4471,"length":32},{"start":5074,"length":32}],"60387":[{"start":2670,"length":32},{"start":8385,"length":32}]}},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","FACTORY()":"2dd31000","HOOK_GAS_LIMIT()":"ff54740f","HOOK_RESERVE()":"557cab44","HOOK_SET_ROLE()":"6679191e","NETWORK_REGISTRY()":"c0cd7c3e","OPERATOR_NETWORK_OPT_IN_SERVICE()":"1a80e500","OPERATOR_REGISTRY()":"83ce0322","OPERATOR_VAULT_OPT_IN_SERVICE()":"128e5d82","TYPE()":"bb24fe8a","VAULT_FACTORY()":"103f2907","VERSION()":"ffa1ad74","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","hook()":"7f5a7c7b","initialize(bytes)":"439fab91","maxNetworkLimit(bytes32)":"d15b740e","maxNetworkLimitAt(bytes32,uint48,bytes)":"437224a3","network()":"6739afca","onSlash(bytes32,address,uint256,uint48,bytes)":"e49561ee","operator()":"570ca735","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","setHook(address)":"3dfd3873","setMaxNetworkLimit(uint96,uint256)":"23f752d5","stake(bytes32,address)":"fd4d447c","stakeAt(bytes32,address,uint48,bytes)":"e02f6937","staticDelegateCall(address,bytes)":"9f86fd85","supportsInterface(bytes4)":"01ffc9a7","vault()":"fbfa77cf"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operatorRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"networkRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"vaultFactory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operatorVaultOptInService\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operatorNetworkOptInService\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegatorFactory\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"entityType\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadySet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CheckpointUnorderedInsertion\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientHookGas\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidNetwork\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotNetwork\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotOperator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotSlasher\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"}],\"name\":\"OnSlash\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"hook\",\"type\":\"address\"}],\"name\":\"SetHook\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"SetMaxNetworkLimit\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HOOK_GAS_LIMIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HOOK_RESERVE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HOOK_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NETWORK_REGISTRY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_NETWORK_OPT_IN_SERVICE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_REGISTRY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_VAULT_OPT_IN_SERVICE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TYPE\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VAULT_FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VERSION\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hook\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"}],\"name\":\"maxNetworkLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"maxNetworkLimitAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"network\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"hook_\",\"type\":\"address\"}],\"name\":\"setHook\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint96\",\"name\":\"identifier\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"setMaxNetworkLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"stake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hints\",\"type\":\"bytes\"}],\"name\":\"stakeAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"staticDelegateCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"CheckpointUnorderedInsertion()\":[{\"details\":\"A value was attempted to be inserted on a past checkpoint.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"OnSlash(bytes32,address,uint256,uint48)\":{\"params\":{\"amount\":\"amount of the collateral to be slashed\",\"captureTimestamp\":\"time point when the stake was captured\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"SetHook(address)\":{\"params\":{\"hook\":\"address of the hook\"}},\"SetMaxNetworkLimit(bytes32,uint256)\":{\"params\":{\"amount\":\"new maximum subnetwork's limit (how much stake the subnetwork is ready to get)\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}}},\"kind\":\"dev\",\"methods\":{\"VERSION()\":{\"details\":\"Must return 1 for this one.\",\"returns\":{\"_0\":\"version of the delegator\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize(bytes)\":{\"params\":{\"data\":\"some data to use\"}},\"maxNetworkLimitAt(bytes32,uint48,bytes)\":{\"params\":{\"hint\":\"hint for checkpoint index\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\",\"timestamp\":\"time point to get the maximum subnetwork limit at\"},\"returns\":{\"_0\":\"maximum limit of the subnetwork\"}},\"onSlash(bytes32,address,uint256,uint48,bytes)\":{\"details\":\"Only the vault's slasher can call this function.\",\"params\":{\"amount\":\"amount of the collateral slashed\",\"captureTimestamp\":\"time point when the stake was captured\",\"data\":\"some additional data\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"setHook(address)\":{\"details\":\"Only a HOOK_SET_ROLE holder can call this function. The hook can have arbitrary logic under certain functions, however, it doesn't affect the stake guarantees.\",\"params\":{\"hook\":\"address of the hook\"}},\"setMaxNetworkLimit(uint96,uint256)\":{\"details\":\"Only a network can call this function.\",\"params\":{\"amount\":\"new maximum subnetwork's limit\"}},\"stake(bytes32,address)\":{\"details\":\"Warning: this function is not safe to use for stake capturing, as it can change by the end of the block.\",\"params\":{\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"_0\":\"slashable stake until the end of the next epoch\"}},\"stakeAt(bytes32,address,uint48,bytes)\":{\"details\":\"Warning: it is not safe to use timestamp >= current one for the stake capturing, as it can change later.\",\"params\":{\"hints\":\"hints for the checkpoints' indexes\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\",\"timestamp\":\"time point to capture the stake at\"},\"returns\":{\"_0\":\"slashable stake at the given timestamp until the end of the consequent epoch\"}},\"staticDelegateCall(address,bytes)\":{\"details\":\"It allows to use this contract's storage on-chain.\",\"params\":{\"data\":\"data to make a delegatecall with\",\"target\":\"address of the contract to make a delegatecall to\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"stateVariables\":{\"OPERATOR_REGISTRY\":{\"return\":\"address of the operator registry\",\"returns\":{\"_0\":\"address of the operator registry\"}},\"network\":{\"return\":\"address of the network\",\"returns\":{\"_0\":\"address of the network\"}},\"operator\":{\"return\":\"address of the operator\",\"returns\":{\"_0\":\"address of the operator\"}}},\"version\":1},\"userdoc\":{\"events\":{\"OnSlash(bytes32,address,uint256,uint48)\":{\"notice\":\"Emitted when a slash happens.\"},\"SetHook(address)\":{\"notice\":\"Emitted when a hook is set.\"},\"SetMaxNetworkLimit(bytes32,uint256)\":{\"notice\":\"Emitted when a subnetwork's maximum limit is set.\"}},\"kind\":\"user\",\"methods\":{\"FACTORY()\":{\"notice\":\"Get the factory's address.\"},\"HOOK_GAS_LIMIT()\":{\"notice\":\"Get a gas limit for the hook.\"},\"HOOK_RESERVE()\":{\"notice\":\"Get a reserve gas between the gas limit check and the hook's execution.\"},\"HOOK_SET_ROLE()\":{\"notice\":\"Get a hook setter's role.\"},\"NETWORK_REGISTRY()\":{\"notice\":\"Get the network registry's address.\"},\"OPERATOR_NETWORK_OPT_IN_SERVICE()\":{\"notice\":\"Get the operator-network opt-in service's address.\"},\"OPERATOR_REGISTRY()\":{\"notice\":\"Get the operator registry's address.\"},\"OPERATOR_VAULT_OPT_IN_SERVICE()\":{\"notice\":\"Get the operator-vault opt-in service's address.\"},\"TYPE()\":{\"notice\":\"Get the entity's type.\"},\"VAULT_FACTORY()\":{\"notice\":\"Get the vault factory's address.\"},\"VERSION()\":{\"notice\":\"Get a version of the delegator (different versions mean different interfaces).\"},\"hook()\":{\"notice\":\"Get the hook's address.\"},\"initialize(bytes)\":{\"notice\":\"Initialize this entity contract by using a given data.\"},\"maxNetworkLimit(bytes32)\":{\"notice\":\"Get a particular subnetwork's maximum limit (meaning the subnetwork is not ready to get more as a stake).\"},\"maxNetworkLimitAt(bytes32,uint48,bytes)\":{\"notice\":\"Get a particular subnetwork's maximum limit at a given timestamp using a hint (meaning the subnetwork is not ready to get more as a stake).\"},\"network()\":{\"notice\":\"Get a network the vault delegates funds to.\"},\"onSlash(bytes32,address,uint256,uint48,bytes)\":{\"notice\":\"Called when a slash happens.\"},\"operator()\":{\"notice\":\"Get an operator managing the vault's funds.\"},\"setHook(address)\":{\"notice\":\"Set a new hook.\"},\"setMaxNetworkLimit(uint96,uint256)\":{\"notice\":\"Set a maximum limit for a subnetwork (how much stake the subnetwork is ready to get). identifier identifier of the subnetwork\"},\"stake(bytes32,address)\":{\"notice\":\"Get a stake that a given subnetwork will be able to slash for a certain operator until the end of the next epoch (if no cross-slashing and no slashings by the subnetwork).\"},\"stakeAt(bytes32,address,uint48,bytes)\":{\"notice\":\"Get a stake that a given subnetwork could be able to slash for a certain operator at a given timestamp until the end of the consequent epoch using hints (if no cross-slashing and no slashings by the subnetwork).\"},\"staticDelegateCall(address,bytes)\":{\"notice\":\"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data).\"},\"vault()\":{\"notice\":\"Get the vault's address.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/delegator/OperatorNetworkSpecificDelegator.sol\":\"OperatorNetworkSpecificDelegator\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://942dad22fbdc1669f025540ba63aa3ccfad5f8458fc5d4525b31ebf272e7af45\",\"dweb:/ipfs/Qmdo4X2M82aM3AMoW2kf2jhYkSCyC4T1pHNd6obdsDFnAB\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45\",\"dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26\",\"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c\",\"dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0xbdc5e074d7dd6678f67e92b1a51a20226801a407b0e1af3da367c5d1ff4519ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a36cca6b22fff3db16fc789ff6c60eea71d4b156065d4d0c83a0bc5e91a77a8b\",\"dweb:/ipfs/QmYN3exd5AemxjBrN8XMB1p5LbbE16uC3sjbYjwi8AjcGR\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0xc7755af115020049e4140f224f9ee88d7e1799ffb0646f37bf0df24bf6213f58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f09bf94d5274334ec021f61a04659db303f31e60460e14b709c9bf187740111\",\"dweb:/ipfs/QmNvgomZYUwFAt4cZbPWAiTeSZQreGehY9BK5xyVJsUttb\"]},\"src/contracts/common/Entity.sol\":{\"keccak256\":\"0x3d61a932995b8443381f3950542d388223a2c26dd5d29a3274dea3baa7388bd7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7cdf5f03ca72fd263fd32ff59c8d88ddca911ae83896a287d10772c1bbe9b138\",\"dweb:/ipfs/QmbP84r5BWT1Rn9AYTntWSf3xUMTTCohTZJFhbBhDXFoHa\"]},\"src/contracts/common/StaticDelegateCallable.sol\":{\"keccak256\":\"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764\",\"dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD\"]},\"src/contracts/delegator/BaseDelegator.sol\":{\"keccak256\":\"0x7c54d491fdd4415b764a9c8defa068e56d4c0c8c9419be0053a1d377669290e8\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://9238bfbad0f6eeb0dc7727724de14380f1980b395902269703d5e2ef07e52e10\",\"dweb:/ipfs/QmPJn1V4HNXcEghYvogGuSTF24dSQUPosR5qtsXcmNqRm3\"]},\"src/contracts/delegator/OperatorNetworkSpecificDelegator.sol\":{\"keccak256\":\"0x031a10722b9ec49048f0952710401131290adb87e71caf294e864e7ac3b98a16\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://72428febc875134b2f29205e6f294634a1c22a7d5c78d6a9cb2f8196f107c9b5\",\"dweb:/ipfs/QmTPwXR6h5oytckmkLrHdKeEMdphJxceDhYUR4zvQeWAwY\"]},\"src/contracts/libraries/Checkpoints.sol\":{\"keccak256\":\"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609\",\"dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE\"]},\"src/contracts/libraries/Subnetwork.sol\":{\"keccak256\":\"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56\",\"dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32\"]},\"src/interfaces/common/IEntity.sol\":{\"keccak256\":\"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b\",\"dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv\"]},\"src/interfaces/common/IMigratableEntity.sol\":{\"keccak256\":\"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c\",\"dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds\"]},\"src/interfaces/common/IRegistry.sol\":{\"keccak256\":\"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014\",\"dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK\"]},\"src/interfaces/common/IStaticDelegateCallable.sol\":{\"keccak256\":\"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516\",\"dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi\"]},\"src/interfaces/delegator/IBaseDelegator.sol\":{\"keccak256\":\"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2\",\"dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8\"]},\"src/interfaces/delegator/IDelegatorHook.sol\":{\"keccak256\":\"0xc51aa8d7d1f6c8043ee819b7aeb86da0e993912e1442098df897e299f01f9f46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://adddf5cb2ba282aeb576b26efb28640f865a1721cc9b6eee8b3ee0457a2c9780\",\"dweb:/ipfs/QmNYgAmnLRwWZbhTuQhZs9rx4zcme1df5mEepkrniorSoW\"]},\"src/interfaces/delegator/IOperatorNetworkSpecificDelegator.sol\":{\"keccak256\":\"0x74b95e64d29769202d45dd277bb830f623ff3d41ce77b80ce3ee4e318a5c71ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e512b903aae5c1b8a028c6e3f4f6223b5cb5d704503cfa6bd37b5346868f5c20\",\"dweb:/ipfs/QmZim9YExsPWtyxyeui993HTKAEmrg8MUcSkZ77Gp2JcuZ\"]},\"src/interfaces/service/IOptInService.sol\":{\"keccak256\":\"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337\",\"dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24\"]},\"src/interfaces/vault/IVault.sol\":{\"keccak256\":\"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9\",\"dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R\"]},\"src/interfaces/vault/IVaultStorage.sol\":{\"keccak256\":\"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e\",\"dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"operatorRegistry","type":"address"},{"internalType":"address","name":"networkRegistry","type":"address"},{"internalType":"address","name":"vaultFactory","type":"address"},{"internalType":"address","name":"operatorVaultOptInService","type":"address"},{"internalType":"address","name":"operatorNetworkOptInService","type":"address"},{"internalType":"address","name":"delegatorFactory","type":"address"},{"internalType":"uint64","name":"entityType","type":"uint64"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"inputs":[],"type":"error","name":"AlreadySet"},{"inputs":[],"type":"error","name":"CheckpointUnorderedInsertion"},{"inputs":[],"type":"error","name":"InsufficientHookGas"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"InvalidNetwork"},{"inputs":[],"type":"error","name":"NotInitialized"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"NotNetwork"},{"inputs":[],"type":"error","name":"NotOperator"},{"inputs":[],"type":"error","name":"NotSlasher"},{"inputs":[],"type":"error","name":"NotVault"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintDowncast"},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint48","name":"captureTimestamp","type":"uint48","indexed":false}],"type":"event","name":"OnSlash","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[{"internalType":"address","name":"hook","type":"address","indexed":true}],"type":"event","name":"SetHook","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"SetMaxNetworkLimit","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HOOK_GAS_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HOOK_RESERVE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HOOK_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"NETWORK_REGISTRY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_NETWORK_OPT_IN_SERVICE","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_REGISTRY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_VAULT_OPT_IN_SERVICE","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"TYPE","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VAULT_FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"VERSION","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"hook","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"}],"stateMutability":"view","type":"function","name":"maxNetworkLimit","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"maxNetworkLimitAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"network","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint48","name":"captureTimestamp","type":"uint48"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"onSlash"},{"inputs":[],"stateMutability":"view","type":"function","name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"address","name":"hook_","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setHook"},{"inputs":[{"internalType":"uint96","name":"identifier","type":"uint96"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setMaxNetworkLimit"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"stake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hints","type":"bytes"}],"stateMutability":"view","type":"function","name":"stakeAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"staticDelegateCall"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"vault","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"VERSION()":{"details":"Must return 1 for this one.","returns":{"_0":"version of the delegator"}},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"initialize(bytes)":{"params":{"data":"some data to use"}},"maxNetworkLimitAt(bytes32,uint48,bytes)":{"params":{"hint":"hint for checkpoint index","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)","timestamp":"time point to get the maximum subnetwork limit at"},"returns":{"_0":"maximum limit of the subnetwork"}},"onSlash(bytes32,address,uint256,uint48,bytes)":{"details":"Only the vault's slasher can call this function.","params":{"amount":"amount of the collateral slashed","captureTimestamp":"time point when the stake was captured","data":"some additional data","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"}},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"setHook(address)":{"details":"Only a HOOK_SET_ROLE holder can call this function. The hook can have arbitrary logic under certain functions, however, it doesn't affect the stake guarantees.","params":{"hook":"address of the hook"}},"setMaxNetworkLimit(uint96,uint256)":{"details":"Only a network can call this function.","params":{"amount":"new maximum subnetwork's limit"}},"stake(bytes32,address)":{"details":"Warning: this function is not safe to use for stake capturing, as it can change by the end of the block.","params":{"operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"_0":"slashable stake until the end of the next epoch"}},"stakeAt(bytes32,address,uint48,bytes)":{"details":"Warning: it is not safe to use timestamp >= current one for the stake capturing, as it can change later.","params":{"hints":"hints for the checkpoints' indexes","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)","timestamp":"time point to capture the stake at"},"returns":{"_0":"slashable stake at the given timestamp until the end of the consequent epoch"}},"staticDelegateCall(address,bytes)":{"details":"It allows to use this contract's storage on-chain.","params":{"data":"data to make a delegatecall with","target":"address of the contract to make a delegatecall to"}},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."}},"version":1},"userdoc":{"kind":"user","methods":{"FACTORY()":{"notice":"Get the factory's address."},"HOOK_GAS_LIMIT()":{"notice":"Get a gas limit for the hook."},"HOOK_RESERVE()":{"notice":"Get a reserve gas between the gas limit check and the hook's execution."},"HOOK_SET_ROLE()":{"notice":"Get a hook setter's role."},"NETWORK_REGISTRY()":{"notice":"Get the network registry's address."},"OPERATOR_NETWORK_OPT_IN_SERVICE()":{"notice":"Get the operator-network opt-in service's address."},"OPERATOR_REGISTRY()":{"notice":"Get the operator registry's address."},"OPERATOR_VAULT_OPT_IN_SERVICE()":{"notice":"Get the operator-vault opt-in service's address."},"TYPE()":{"notice":"Get the entity's type."},"VAULT_FACTORY()":{"notice":"Get the vault factory's address."},"VERSION()":{"notice":"Get a version of the delegator (different versions mean different interfaces)."},"hook()":{"notice":"Get the hook's address."},"initialize(bytes)":{"notice":"Initialize this entity contract by using a given data."},"maxNetworkLimit(bytes32)":{"notice":"Get a particular subnetwork's maximum limit (meaning the subnetwork is not ready to get more as a stake)."},"maxNetworkLimitAt(bytes32,uint48,bytes)":{"notice":"Get a particular subnetwork's maximum limit at a given timestamp using a hint (meaning the subnetwork is not ready to get more as a stake)."},"network()":{"notice":"Get a network the vault delegates funds to."},"onSlash(bytes32,address,uint256,uint48,bytes)":{"notice":"Called when a slash happens."},"operator()":{"notice":"Get an operator managing the vault's funds."},"setHook(address)":{"notice":"Set a new hook."},"setMaxNetworkLimit(uint96,uint256)":{"notice":"Set a maximum limit for a subnetwork (how much stake the subnetwork is ready to get). identifier identifier of the subnetwork"},"stake(bytes32,address)":{"notice":"Get a stake that a given subnetwork will be able to slash for a certain operator until the end of the next epoch (if no cross-slashing and no slashings by the subnetwork)."},"stakeAt(bytes32,address,uint48,bytes)":{"notice":"Get a stake that a given subnetwork could be able to slash for a certain operator at a given timestamp until the end of the consequent epoch using hints (if no cross-slashing and no slashings by the subnetwork)."},"staticDelegateCall(address,bytes)":{"notice":"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data)."},"vault()":{"notice":"Get the vault's address."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/delegator/OperatorNetworkSpecificDelegator.sol":"OperatorNetworkSpecificDelegator"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol":{"keccak256":"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74","urls":["bzz-raw://942dad22fbdc1669f025540ba63aa3ccfad5f8458fc5d4525b31ebf272e7af45","dweb:/ipfs/Qmdo4X2M82aM3AMoW2kf2jhYkSCyC4T1pHNd6obdsDFnAB"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8","urls":["bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45","dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41","urls":["bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26","dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe","urls":["bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c","dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol":{"keccak256":"0xbdc5e074d7dd6678f67e92b1a51a20226801a407b0e1af3da367c5d1ff4519ad","urls":["bzz-raw://a36cca6b22fff3db16fc789ff6c60eea71d4b156065d4d0c83a0bc5e91a77a8b","dweb:/ipfs/QmYN3exd5AemxjBrN8XMB1p5LbbE16uC3sjbYjwi8AjcGR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0xc7755af115020049e4140f224f9ee88d7e1799ffb0646f37bf0df24bf6213f58","urls":["bzz-raw://7f09bf94d5274334ec021f61a04659db303f31e60460e14b709c9bf187740111","dweb:/ipfs/QmNvgomZYUwFAt4cZbPWAiTeSZQreGehY9BK5xyVJsUttb"],"license":"MIT"},"src/contracts/common/Entity.sol":{"keccak256":"0x3d61a932995b8443381f3950542d388223a2c26dd5d29a3274dea3baa7388bd7","urls":["bzz-raw://7cdf5f03ca72fd263fd32ff59c8d88ddca911ae83896a287d10772c1bbe9b138","dweb:/ipfs/QmbP84r5BWT1Rn9AYTntWSf3xUMTTCohTZJFhbBhDXFoHa"],"license":"BUSL-1.1"},"src/contracts/common/StaticDelegateCallable.sol":{"keccak256":"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90","urls":["bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764","dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD"],"license":"BUSL-1.1"},"src/contracts/delegator/BaseDelegator.sol":{"keccak256":"0x7c54d491fdd4415b764a9c8defa068e56d4c0c8c9419be0053a1d377669290e8","urls":["bzz-raw://9238bfbad0f6eeb0dc7727724de14380f1980b395902269703d5e2ef07e52e10","dweb:/ipfs/QmPJn1V4HNXcEghYvogGuSTF24dSQUPosR5qtsXcmNqRm3"],"license":"BUSL-1.1"},"src/contracts/delegator/OperatorNetworkSpecificDelegator.sol":{"keccak256":"0x031a10722b9ec49048f0952710401131290adb87e71caf294e864e7ac3b98a16","urls":["bzz-raw://72428febc875134b2f29205e6f294634a1c22a7d5c78d6a9cb2f8196f107c9b5","dweb:/ipfs/QmTPwXR6h5oytckmkLrHdKeEMdphJxceDhYUR4zvQeWAwY"],"license":"BUSL-1.1"},"src/contracts/libraries/Checkpoints.sol":{"keccak256":"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c","urls":["bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609","dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE"],"license":"MIT"},"src/contracts/libraries/Subnetwork.sol":{"keccak256":"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe","urls":["bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56","dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32"],"license":"MIT"},"src/interfaces/common/IEntity.sol":{"keccak256":"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21","urls":["bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b","dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv"],"license":"MIT"},"src/interfaces/common/IMigratableEntity.sol":{"keccak256":"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4","urls":["bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c","dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds"],"license":"MIT"},"src/interfaces/common/IRegistry.sol":{"keccak256":"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb","urls":["bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014","dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK"],"license":"MIT"},"src/interfaces/common/IStaticDelegateCallable.sol":{"keccak256":"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5","urls":["bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516","dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi"],"license":"MIT"},"src/interfaces/delegator/IBaseDelegator.sol":{"keccak256":"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee","urls":["bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2","dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8"],"license":"MIT"},"src/interfaces/delegator/IDelegatorHook.sol":{"keccak256":"0xc51aa8d7d1f6c8043ee819b7aeb86da0e993912e1442098df897e299f01f9f46","urls":["bzz-raw://adddf5cb2ba282aeb576b26efb28640f865a1721cc9b6eee8b3ee0457a2c9780","dweb:/ipfs/QmNYgAmnLRwWZbhTuQhZs9rx4zcme1df5mEepkrniorSoW"],"license":"MIT"},"src/interfaces/delegator/IOperatorNetworkSpecificDelegator.sol":{"keccak256":"0x74b95e64d29769202d45dd277bb830f623ff3d41ce77b80ce3ee4e318a5c71ec","urls":["bzz-raw://e512b903aae5c1b8a028c6e3f4f6223b5cb5d704503cfa6bd37b5346868f5c20","dweb:/ipfs/QmZim9YExsPWtyxyeui993HTKAEmrg8MUcSkZ77Gp2JcuZ"],"license":"MIT"},"src/interfaces/service/IOptInService.sol":{"keccak256":"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a","urls":["bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337","dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24"],"license":"MIT"},"src/interfaces/vault/IVault.sol":{"keccak256":"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235","urls":["bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9","dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R"],"license":"MIT"},"src/interfaces/vault/IVaultStorage.sol":{"keccak256":"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22","urls":["bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e","dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6"],"license":"MIT"}},"version":1},"id":79} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[{"name":"operatorRegistry","type":"address","internalType":"address"},{"name":"networkRegistry","type":"address","internalType":"address"},{"name":"vaultFactory","type":"address","internalType":"address"},{"name":"operatorVaultOptInService","type":"address","internalType":"address"},{"name":"operatorNetworkOptInService","type":"address","internalType":"address"},{"name":"delegatorFactory","type":"address","internalType":"address"},{"name":"entityType","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"HOOK_GAS_LIMIT","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"HOOK_RESERVE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"HOOK_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"NETWORK_REGISTRY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_NETWORK_OPT_IN_SERVICE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_REGISTRY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_VAULT_OPT_IN_SERVICE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"TYPE","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"VAULT_FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"VERSION","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"pure"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"hook","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"maxNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"maxNetworkLimitAt","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"network","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"onSlash","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","internalType":"uint48"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"operator","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setHook","inputs":[{"name":"hook_","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMaxNetworkLimit","inputs":[{"name":"identifier","type":"uint96","internalType":"uint96"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stake","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"stakeAt","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hints","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"staticDelegateCall","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"vault","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OnSlash","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","indexed":false,"internalType":"uint48"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SetHook","inputs":[{"name":"hook","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SetMaxNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"AlreadySet","inputs":[]},{"type":"error","name":"CheckpointUnorderedInsertion","inputs":[]},{"type":"error","name":"InsufficientHookGas","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"InvalidNetwork","inputs":[]},{"type":"error","name":"NotInitialized","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"NotNetwork","inputs":[]},{"type":"error","name":"NotOperator","inputs":[]},{"type":"error","name":"NotSlasher","inputs":[]},{"type":"error","name":"NotVault","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x610160346101c9576001600160401b0390601f61273d38819003918201601f191683019190848311848410176101cd578160e092859260409586528339810103126101c95761004d826101e1565b9061005a602084016101e1565b6100658285016101e1565b90610072606086016101e1565b9561007f608087016101e1565b9560c061008e60a083016101e1565b9101519180831683036101c9577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff82891c166101b8578080831603610174575b50505060805260a05260c05260e052610100938452610120928352610140918252519161254793846101f68539608051846104fe015260a05184610bee015260c05184818161037d01528181610c27015261205a015260e05184818161027301526119be0152518381816102b70152818161121001526113540152518281816102fb0152818161117701526113d2015251818181610a6e01526120d30152f35b6001600160401b0319909116811790915585519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80806100d4565b875163f92ee8a960e01b8152600490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101c95756fe60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a714610204578063103f2907146101ff578063128e5d82146101fa5780631a80e500146101f557806323f752d5146101f0578063248a9ca3146101eb5780632dd31000146101e65780632f2ff15d146101e157806336568abe146101dc5780633dfd3873146101d7578063437224a3146101d2578063439fab91146101cd578063557cab44146101c8578063570ca735146101c35780636679191e146101be5780636739afca146101b95780637f5a7c7b146101b457806383ce0322146101af57806391d14854146101aa5780639f86fd85146101a5578063a217fddf146101a0578063bb24fe8a1461019b578063c0cd7c3e14610196578063d15b740e14610191578063d547741f1461018c578063e02f693714610187578063e49561ee14610182578063fbfa77cf1461017d578063fd4d447c14610178578063ff54740f146101735763ffa1ad741461016e575f80fd5b610f84565b610f67565b610f3d565b610f16565b610d2b565b610ccc565b610c80565b610c56565b610c12565b610bcf565b610bb5565b610afb565b610a9d565b610a59565b610a31565b610a09565b6109cf565b6109a7565b61098b565b610853565b6107c3565b6105d5565b61058a565b61053e565b6104e9565b6104b0565b61032a565b6102e6565b6102a2565b61025e565b3461025a57602036600319011261025a5760043563ffffffff60e01b811680910361025a57602090637965db0b60e01b8114908115610249575b506040519015158152f35b6301ffc9a760e01b1490505f61023e565b5f80fd5b3461025a575f36600319011261025a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461025a575f36600319011261025a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461025a575f36600319011261025a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461025a57604036600319011261025a576004356001600160601b038116810361025a576024359061035a611447565b6040516302910f8b60e31b81523360048201526020816024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa9081156104ab575f9161047c575b501561046a576001600160601b03166bffffffffffffffffffffffff193360601b161790806103e4835f52600260205260405f2090565b54146104585761043d817fc67e7929681aa1bccd63f52b3799bf5805f3009f197db6fdf584b14f7fbf608c92610422855f52600260205260405f2090565b5561042d8185611476565b6040519081529081906020820190565b0390a261045660015f805160206124d283398151915255565b005b60405163a741a04560e01b8152600490fd5b6040516323d53b9760e21b8152600490fd5b61049e915060203d6020116104a4575b6104968183610732565b810190610f9f565b5f6103ad565b503d61048c565b610fb7565b3461025a57602036600319011261025a576004355f525f805160206124b28339815191526020526020600160405f200154604051908152f35b3461025a575f36600319011261025a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6001600160a01b0381160361025a57565b3461025a57604036600319011261025a576104566024356004356105618261052d565b805f525f805160206124b2833981519152602052610585600160405f2001546115b8565b611769565b3461025a57604036600319011261025a576024356105a78161052d565b336001600160a01b038216036105c3576104569060043561179f565b60405163334bd91960e11b8152600490fd5b3461025a57602036600319011261025a576004356105f28161052d565b6105fa611447565b335f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c60205260409020547fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c9060ff16156106b057506001546001600160a01b039182169181168214610458576001600160a01b03191681176001557f5bbb1d3ebb6a3ad2a0f17ff35e579a83af60604d1d3c2a4c83c62adecadf666d5f80a260015f805160206124d283398151915255005b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b6064359065ffffffffffff8216820361025a57565b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b0382111761071257604052565b6106e3565b606081019081106001600160401b0382111761071257604052565b90601f801991011681019081106001600160401b0382111761071257604052565b60405190610760826106f7565b565b6001600160401b03811161071257601f01601f191660200190565b81601f8201121561025a5780359061079482610762565b926107a26040519485610732565b8284526020838301011161025a57815f926020809301838601378301015290565b3461025a57606036600319011261025a5760243565ffffffffffff8116810361025a576044356001600160401b03811161025a5760209161080b61081e92369060040161077d565b906004355f526003845260405f20611870565b604051908152f35b9181601f8401121561025a578235916001600160401b03831161025a576020838186019501011161025a57565b3461025a57602036600319011261025a576001600160401b0360043581811161025a57610884903690600401610826565b5f805160206124f2833981519152549260ff8460401c1615931680159081610983575b6001149081610979575b159081610970575b5061095e575f805160206124f2833981519152805467ffffffffffffffff191660011790556108ec918361093a57611989565b6108f257005b5f805160206124f2833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f805160206124f2833981519152805460ff60401b1916600160401b179055611989565b60405163f92ee8a960e01b8152600490fd5b9050155f6108b9565b303b1591506108b1565b8491506108a7565b3461025a575f36600319011261025a576020604051614e208152f35b3461025a575f36600319011261025a576005546040516001600160a01b039091168152602090f35b3461025a575f36600319011261025a5760206040517fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c8152f35b3461025a575f36600319011261025a576004546040516001600160a01b039091168152602090f35b3461025a575f36600319011261025a576001546040516001600160a01b039091168152602090f35b3461025a575f36600319011261025a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461025a57604036600319011261025a57602060ff610aef602435610ac18161052d565b6004355f525f805160206124b2833981519152845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b3461025a5760408060031936011261025a57600435610b198161052d565b602435906001600160401b03821161025a575f8091610b3f610ba3943690600401610826565b908187519283928337810184815203915af43d15610bab57610b953d610b6481610762565b90610b7186519283610732565b81523d5f602083013e5b845194859315156020850152808401526060830190610fdb565b03601f198101835282610732565b805190602001fd5b610b956060610b7b565b3461025a575f36600319011261025a5760206040515f8152f35b3461025a575f36600319011261025a5760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461025a575f36600319011261025a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461025a57602036600319011261025a576004355f526002602052602060405f2054604051908152f35b3461025a57604036600319011261025a57610456602435600435610ca38261052d565b805f525f805160206124b2833981519152602052610cc7600160405f2001546115b8565b61179f565b3461025a57608036600319011261025a57602435610ce98161052d565b6044359065ffffffffffff8216820361025a57606435906001600160401b03821161025a57602092610d2261081e93369060040161077d565b91600435611101565b3461025a5760a036600319011261025a57602435600435610d4b8261052d565b60443591610d576106ce565b90608435906001600160401b03821161025a57610d796004923690840161077d565b610d81611447565b5f54602090610da690610d9a906001600160a01b031681565b6001600160a01b031690565b60405163b134427160e01b815294859182905afa9283156104ab575f93610ee5575b506001600160a01b039283163303610ed3576001546001600160a01b0316838116610e48575b50506040805195865265ffffffffffff909316602086015216927f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed91819081015b0390a361045660015f805160206124d283398151915255565b909360405194610e7f86610e71602082019363724ab0f760e11b8552858c898d602487016112a0565b03601f198101885287610732565b62042e305a10610ec1575f610e2f938192827f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed9951926203d090f15093610dee565b604051638072475160e01b8152600490fd5b60405163dabc4ad960e01b8152600490fd5b610f0891935060203d602011610f0f575b610f008183610732565b81019061128b565b915f610dc8565b503d610ef6565b3461025a575f36600319011261025a575f546040516001600160a01b039091168152602090f35b3461025a57604036600319011261025a57602061081e602435610f5f8161052d565b60043561131d565b3461025a575f36600319011261025a5760206040516203d0908152f35b3461025a575f36600319011261025a57602060405160018152f35b9081602091031261025a5751801515810361025a5790565b6040513d5f823e3d90fd5b90610fd892915f52600360205260405f20611870565b90565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b6040519061100c826106f7565b60606020838281520152565b81601f8201121561025a5780519061102f82610762565b9261103d6040519485610732565b8284526020838301011161025a57815f9260208093018386015e8301015290565b9060208282031261025a5781516001600160401b039283821161025a57019060408282031261025a5760405192611094846106f7565b825181811161025a57826110a9918501611018565b8452602083015190811161025a576110c19201611018565b602082015290565b6001600160a01b0391821681529116602082015265ffffffffffff9091166040820152608060608201819052610fd892910190610fdb565b9261111190929192828486611b9c565b92909361111c610fff565b9380518061126f575b505084159384156111d9575b8415611148575b505050506111435790565b505f90565b602080949550611173910151604051958694859463530e1d4360e01b865260601c90600486016110c9565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156104ab575f916111ba575b50155f808080611138565b6111d3915060203d6020116104a4576104968183610732565b5f6111af565b5f549094506001600160a01b031660208486519261120c604051948593849363530e1d4360e01b855289600486016110c9565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156104ab575f91611250575b501593611131565b611269915060203d6020116104a4576104968183610732565b5f611248565b61128392955060208091830101910161105e565b925f80611125565b9081602091031261025a5751610fd88161052d565b919360a093610fd8969565ffffffffffff938552600180871b0316602085015260408401521660608201528160808201520190610fdb565b634e487b7160e01b5f52601160045260245ffd5b81156112f6570490565b634e487b7160e01b5f52601260045260245ffd5b906001820180921161131857565b6112d8565b5f546040516308834cb560e21b8082526001600160a01b0385811660048401529283166024830152929392602092909183816044817f000000000000000000000000000000000000000000000000000000000000000086165afa9081156104ab575f9161142a575b50159182156113a6575b505090506113a057610fd891611cc1565b50505f90565b6040519081526001600160a01b0385166004820152606086901c602482015291508290829060449082907f0000000000000000000000000000000000000000000000000000000000000000165afa9182156104ab575f9261140d575b505015805f8061138f565b6114239250803d106104a4576104968183610732565b5f80611402565b6114419150843d86116104a4576104968183610732565b5f611385565b5f805160206124d283398151915260028154146114645760029055565b604051633ee5aeb560e01b8152600490fd5b6004546001600160a01b0316606082901c036115a6575f52600360205260405f209065ffffffffffff9182421161158757824216926001820191825415611579575b6114c181612188565b509590845493835480155f1461155a57505f975b6001600160d01b0398808a1615611554576114f09088611d89565b50505b82611548575b50501561153257505061076093509061151461151a9261184d565b90611d89565b90919082549060031b91821b915f19901b1916179055565b6107609561154193169161224a565b5050611ddf565b16821490505f806114f9565b506114f3565b5f1990808281011161131857855f5260205f2001015460301c976114d5565b61158283611db2565b6114b8565b6040516306dfcc6560e41b815260306004820152426024820152604490fd5b6040516386eab41b60e01b8152600490fd5b5f8181525f805160206124b28339815191526020908152604080832033845290915290205460ff16156106b05750565b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260409020545f805160206124b28339815191529060ff166113a0575f808052602091825260408082206001600160a01b038516835290925220805460ff1916600117905533906001600160a01b03165f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b6001600160a01b0381165f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c602052604090207fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c905f805160206124b28339815191529060ff905b5416611762575f828152602091825260408082206001600160a01b038616835290925220805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b5050505f90565b5f8181525f805160206124b2833981519152602081815260408084206001600160a01b038716855290915290912060ff906116fe565b5f8181525f805160206124b2833981519152602081815260408084206001600160a01b03871685529091529091205460ff1615611762575f828152602091825260408082206001600160a01b038616835290925220805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b9081602091031261025a575163ffffffff8116810361025a5790565b5f1981019190821161131857565b90600163ffffffff8093160191821161131857565b91805115611949578060208061188b93518301019101611831565b916118968382611edc565b926118a7845165ffffffffffff1690565b9065ffffffffffff808516921682811461193d57821191826118dd575b50506118d457610fd89250611e02565b50506020015190565b9091506118ea835461184d565b63ffffffff831614918215611903575b50505f806118c4565b61193591925061191e61191861192a9261185b565b85611edc565b5165ffffffffffff1690565b65ffffffffffff1690565b115f806118fa565b50505050506020015190565b50610fd891611e02565b91909160408184031261025a57803561196b8161052d565b9260208201356001600160401b03811161025a57610fd8920161077d565b61199591810190611953565b6040516302910f8b60e31b81526001600160a01b039283166004820181905291906020816024817f000000000000000000000000000000000000000000000000000000000000000088165afa9081156104ab575f91611aa8575b5015611a9657611a2a604091611a25611a7094611a0a611f4a565b60018060a01b03166001600160601b0360a01b5f5416175f55565b61200d565b6020810151600180546001600160a01b0319166001600160a01b0390921691909117905580516001600160a01b0316848116611a86575b5001516001600160a01b031690565b908116611a7a5750565b611a8390611693565b50565b611a8f906115e8565b505f611a61565b6040516362df054560e01b8152600490fd5b611ac1915060203d6020116104a4576104968183610732565b5f6119ef565b60405190611ad482610717565b60606040838281528260208201520152565b9060208282031261025a5781516001600160401b039283821161025a57019060608282031261025a5760405192611b1c84610717565b825181811161025a5782611b31918501611018565b8452602083015181811161025a5782611b4b918501611018565b6020850152604083015190811161025a57611b669201611018565b604082015290565b9081602091031261025a575190565b60409065ffffffffffff610fd894931681528160208201520190610fdb565b90939293611ba8611ac7565b94805180611ca5575b5050600454606083901c6001600160a01b03918216148015929190611c8a575b5050611c82575f54611c17929190602090611bf690610d9a906001600160a01b031681565b8187015190604051808097819463810da75d60e01b83528860048401611b7d565b03915afa9081156104ab57611c4a935f92611c4f575b50611c3e9192604087015191610fc2565b90818082109118021890565b915190565b611c3e9250611c759060203d602011611c7b575b611c6d8183610732565b810190611b6e565b91611c2d565b503d611c63565b505090515f91565b60055481166001600160a01b03169116141590505f80611bd1565b611cb9929650602080918301019101611ae6565b935f80611bb1565b6004549091606083901c6001600160a01b039283161480159290611d6e575b5050611143575f5460049190602090611d0390610d9a906001600160a01b031681565b60405163bd49c35f60e01b815293849182905afa9081156104ab57610fd8925f92611d49575b50611d3c905f52600260205260405f2090565b5490818082109118021890565b611d3c919250611d679060203d602011611c7b57611c6d8183610732565b9190611d29565b60055481166001600160a01b03169116141590505f80611ce0565b8054821015611d9e575f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b8054600160401b81101561071257611dcf91600182018155611d89565b8154905f199060031b1b19169055565b90815491600160401b831015610712578261151a91600161076095018155611d89565b908154905f829160058411611e76575b611e1d935084612452565b80611e4f57505f905b6001600160d01b038216156113a057610fd8916001611e459201611d89565b90549060031b1c90565b611e69611e5e611e709261184d565b835f5260205f200190565b5460301c90565b90611e26565b9192611e8181612327565b810390811161131857611e1d93855f5265ffffffffffff808360205f20015416908516105f14611eb2575091611e12565b929150611ebe9061130a565b90611e12565b60405190611ed1826106f7565b5f6020838281520152565b9060206001611f00611f2c93611ef0611ec4565b50611ef9611ec4565b5085611d89565b509360405194611f0f866106f7565b549465ffffffffffff86169586825260301c938491015201611d89565b90549060405192611f3c846106f7565b835260031b1c602082015290565b611f526121c1565b611f5a6121c1565b60015f805160206124d283398151915255565b60405190611f7a82610717565b5f6040838281528260208201520152565b8091039060a0821261025a57606060405192611fa684610717565b1261025a57608090604051611fba81610717565b8151611fc58161052d565b81526020820151611fd58161052d565b60208201526040820151611fe88161052d565b604082015283526060810151611ffd8161052d565b60208401520151611b668161052d565b612015611f6d565b5061202b81519160208080948301019101611f8b565b80820180516040516302910f8b60e31b8082526001600160a01b039283166004830152939491939082816024817f000000000000000000000000000000000000000000000000000000000000000089165afa9081156104ab575f9161216b575b501561046a57816120cf9160408701956120ab875160018060a01b031690565b6040519283526001600160a01b031660048301529092839190829081906024820190565b03917f0000000000000000000000000000000000000000000000000000000000000000165afa9182156104ab575f9261214e575b50501561213c5751600480546001600160a01b039283166001600160a01b03199182161790915591516005805490931691161790555190565b604051631f0853c160e21b8152600490fd5b6121649250803d106104a4576104968183610732565b5f80612103565b6121829150833d85116104a4576104968183610732565b5f61208b565b8054806121995750505f905f905f90565b5f19918183810111611318575f5260205f2001015460019165ffffffffffff82169160301c90565b60ff5f805160206124f28339815191525460401c16156121dd57565b604051631afcd79f60e31b8152600490fd5b8054600160401b8110156107125761220c91600182018155611d89565b61223757815160209092015160301b65ffffffffffff191665ffffffffffff92909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b805492939280156122fd5761226161226c9161184d565b825f5260205f200190565b9182549265ffffffffffff918285169281168084116122eb578793036122b257506122ab92509065ffffffffffff82549181199060301b169116179055565b60301c9190565b9150506122e6916122d26122c4610753565b65ffffffffffff9093168352565b6001600160d01b03861660208301526121ef565b6122ab565b604051632520601d60e01b8152600490fd5b50906123229161230e6122c4610753565b6001600160d01b03851660208301526121ef565b5f9190565b6001811115610fd857600181600160801b811015612440575b6123e86123de6123d46123ca6123c06123b66123f497600488600160401b6123ef9a1015612433575b640100000000811015612426575b62010000811015612419575b61010081101561240d575b6010811015612401575b10156123f9575b60030260011c6123af818b6112ec565b0160011c90565b6123af818a6112ec565b6123af81896112ec565b6123af81886112ec565b6123af81876112ec565b6123af81866112ec565b80936112ec565b821190565b900390565b60011b61239f565b811c9160021b91612398565b60081c91811b9161238e565b60101c9160081b91612383565b60201c9160101b91612377565b60401c9160201b91612369565b50600160401b9050608082901c612340565b91905b8382106124625750505090565b9091928083169080841860011c820180921161131857845f5265ffffffffffff808360205f20015416908416105f1461249f5750925b9190612455565b9392506124ab9061130a565b9161249856fe02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212205f37220cee49793867f6398aabf23fa0532b739b85a0b80ede76685c8b732ae764736f6c63430008190033","sourceMap":"681:3264:86:-:0;;;;-1:-1:-1;;;;;681:3264:86;;;;;;;;;;-1:-1:-1;;681:3264:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;8837:64:22;681:3264:86;;;;;;;;;7896:76:22;;681:3264:86;;;;7985:34:22;7981:146;;-1:-1:-1;525:17:76;;;681:3264:86;525:17:76;681:3264:86;552:12:76;681:3264:86;2360:34:83;681:3264:86;2404:28:83;2442:57;;;;2509:61;;;;1796:36:86;;;;681:3264;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7981:146:22;-1:-1:-1;;;;;;681:3264:86;;;;;;;;;;;;;8087:29:22;;681:3264:86;;8087:29:22;7981:146;;;;;7896:76;681:3264:86;;-1:-1:-1;;;7938:23:22;;;;;681:3264:86;-1:-1:-1;681:3264:86;;;;;;-1:-1:-1;681:3264:86;;;;;-1:-1:-1;681:3264:86;;;;-1:-1:-1;;;;;681:3264:86;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a714610204578063103f2907146101ff578063128e5d82146101fa5780631a80e500146101f557806323f752d5146101f0578063248a9ca3146101eb5780632dd31000146101e65780632f2ff15d146101e157806336568abe146101dc5780633dfd3873146101d7578063437224a3146101d2578063439fab91146101cd578063557cab44146101c8578063570ca735146101c35780636679191e146101be5780636739afca146101b95780637f5a7c7b146101b457806383ce0322146101af57806391d14854146101aa5780639f86fd85146101a5578063a217fddf146101a0578063bb24fe8a1461019b578063c0cd7c3e14610196578063d15b740e14610191578063d547741f1461018c578063e02f693714610187578063e49561ee14610182578063fbfa77cf1461017d578063fd4d447c14610178578063ff54740f146101735763ffa1ad741461016e575f80fd5b610f84565b610f67565b610f3d565b610f16565b610d2b565b610ccc565b610c80565b610c56565b610c12565b610bcf565b610bb5565b610afb565b610a9d565b610a59565b610a31565b610a09565b6109cf565b6109a7565b61098b565b610853565b6107c3565b6105d5565b61058a565b61053e565b6104e9565b6104b0565b61032a565b6102e6565b6102a2565b61025e565b3461025a57602036600319011261025a5760043563ffffffff60e01b811680910361025a57602090637965db0b60e01b8114908115610249575b506040519015158152f35b6301ffc9a760e01b1490505f61023e565b5f80fd5b3461025a575f36600319011261025a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461025a575f36600319011261025a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461025a575f36600319011261025a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461025a57604036600319011261025a576004356001600160601b038116810361025a576024359061035a611447565b6040516302910f8b60e31b81523360048201526020816024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa9081156104ab575f9161047c575b501561046a576001600160601b03166bffffffffffffffffffffffff193360601b161790806103e4835f52600260205260405f2090565b54146104585761043d817fc67e7929681aa1bccd63f52b3799bf5805f3009f197db6fdf584b14f7fbf608c92610422855f52600260205260405f2090565b5561042d8185611476565b6040519081529081906020820190565b0390a261045660015f805160206124d283398151915255565b005b60405163a741a04560e01b8152600490fd5b6040516323d53b9760e21b8152600490fd5b61049e915060203d6020116104a4575b6104968183610732565b810190610f9f565b5f6103ad565b503d61048c565b610fb7565b3461025a57602036600319011261025a576004355f525f805160206124b28339815191526020526020600160405f200154604051908152f35b3461025a575f36600319011261025a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6001600160a01b0381160361025a57565b3461025a57604036600319011261025a576104566024356004356105618261052d565b805f525f805160206124b2833981519152602052610585600160405f2001546115b8565b611769565b3461025a57604036600319011261025a576024356105a78161052d565b336001600160a01b038216036105c3576104569060043561179f565b60405163334bd91960e11b8152600490fd5b3461025a57602036600319011261025a576004356105f28161052d565b6105fa611447565b335f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c60205260409020547fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c9060ff16156106b057506001546001600160a01b039182169181168214610458576001600160a01b03191681176001557f5bbb1d3ebb6a3ad2a0f17ff35e579a83af60604d1d3c2a4c83c62adecadf666d5f80a260015f805160206124d283398151915255005b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b6064359065ffffffffffff8216820361025a57565b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b0382111761071257604052565b6106e3565b606081019081106001600160401b0382111761071257604052565b90601f801991011681019081106001600160401b0382111761071257604052565b60405190610760826106f7565b565b6001600160401b03811161071257601f01601f191660200190565b81601f8201121561025a5780359061079482610762565b926107a26040519485610732565b8284526020838301011161025a57815f926020809301838601378301015290565b3461025a57606036600319011261025a5760243565ffffffffffff8116810361025a576044356001600160401b03811161025a5760209161080b61081e92369060040161077d565b906004355f526003845260405f20611870565b604051908152f35b9181601f8401121561025a578235916001600160401b03831161025a576020838186019501011161025a57565b3461025a57602036600319011261025a576001600160401b0360043581811161025a57610884903690600401610826565b5f805160206124f2833981519152549260ff8460401c1615931680159081610983575b6001149081610979575b159081610970575b5061095e575f805160206124f2833981519152805467ffffffffffffffff191660011790556108ec918361093a57611989565b6108f257005b5f805160206124f2833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f805160206124f2833981519152805460ff60401b1916600160401b179055611989565b60405163f92ee8a960e01b8152600490fd5b9050155f6108b9565b303b1591506108b1565b8491506108a7565b3461025a575f36600319011261025a576020604051614e208152f35b3461025a575f36600319011261025a576005546040516001600160a01b039091168152602090f35b3461025a575f36600319011261025a5760206040517fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c8152f35b3461025a575f36600319011261025a576004546040516001600160a01b039091168152602090f35b3461025a575f36600319011261025a576001546040516001600160a01b039091168152602090f35b3461025a575f36600319011261025a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461025a57604036600319011261025a57602060ff610aef602435610ac18161052d565b6004355f525f805160206124b2833981519152845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b3461025a5760408060031936011261025a57600435610b198161052d565b602435906001600160401b03821161025a575f8091610b3f610ba3943690600401610826565b908187519283928337810184815203915af43d15610bab57610b953d610b6481610762565b90610b7186519283610732565b81523d5f602083013e5b845194859315156020850152808401526060830190610fdb565b03601f198101835282610732565b805190602001fd5b610b956060610b7b565b3461025a575f36600319011261025a5760206040515f8152f35b3461025a575f36600319011261025a5760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461025a575f36600319011261025a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461025a57602036600319011261025a576004355f526002602052602060405f2054604051908152f35b3461025a57604036600319011261025a57610456602435600435610ca38261052d565b805f525f805160206124b2833981519152602052610cc7600160405f2001546115b8565b61179f565b3461025a57608036600319011261025a57602435610ce98161052d565b6044359065ffffffffffff8216820361025a57606435906001600160401b03821161025a57602092610d2261081e93369060040161077d565b91600435611101565b3461025a5760a036600319011261025a57602435600435610d4b8261052d565b60443591610d576106ce565b90608435906001600160401b03821161025a57610d796004923690840161077d565b610d81611447565b5f54602090610da690610d9a906001600160a01b031681565b6001600160a01b031690565b60405163b134427160e01b815294859182905afa9283156104ab575f93610ee5575b506001600160a01b039283163303610ed3576001546001600160a01b0316838116610e48575b50506040805195865265ffffffffffff909316602086015216927f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed91819081015b0390a361045660015f805160206124d283398151915255565b909360405194610e7f86610e71602082019363724ab0f760e11b8552858c898d602487016112a0565b03601f198101885287610732565b62042e305a10610ec1575f610e2f938192827f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed9951926203d090f15093610dee565b604051638072475160e01b8152600490fd5b60405163dabc4ad960e01b8152600490fd5b610f0891935060203d602011610f0f575b610f008183610732565b81019061128b565b915f610dc8565b503d610ef6565b3461025a575f36600319011261025a575f546040516001600160a01b039091168152602090f35b3461025a57604036600319011261025a57602061081e602435610f5f8161052d565b60043561131d565b3461025a575f36600319011261025a5760206040516203d0908152f35b3461025a575f36600319011261025a57602060405160018152f35b9081602091031261025a5751801515810361025a5790565b6040513d5f823e3d90fd5b90610fd892915f52600360205260405f20611870565b90565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b6040519061100c826106f7565b60606020838281520152565b81601f8201121561025a5780519061102f82610762565b9261103d6040519485610732565b8284526020838301011161025a57815f9260208093018386015e8301015290565b9060208282031261025a5781516001600160401b039283821161025a57019060408282031261025a5760405192611094846106f7565b825181811161025a57826110a9918501611018565b8452602083015190811161025a576110c19201611018565b602082015290565b6001600160a01b0391821681529116602082015265ffffffffffff9091166040820152608060608201819052610fd892910190610fdb565b9261111190929192828486611b9c565b92909361111c610fff565b9380518061126f575b505084159384156111d9575b8415611148575b505050506111435790565b505f90565b602080949550611173910151604051958694859463530e1d4360e01b865260601c90600486016110c9565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156104ab575f916111ba575b50155f808080611138565b6111d3915060203d6020116104a4576104968183610732565b5f6111af565b5f549094506001600160a01b031660208486519261120c604051948593849363530e1d4360e01b855289600486016110c9565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156104ab575f91611250575b501593611131565b611269915060203d6020116104a4576104968183610732565b5f611248565b61128392955060208091830101910161105e565b925f80611125565b9081602091031261025a5751610fd88161052d565b919360a093610fd8969565ffffffffffff938552600180871b0316602085015260408401521660608201528160808201520190610fdb565b634e487b7160e01b5f52601160045260245ffd5b81156112f6570490565b634e487b7160e01b5f52601260045260245ffd5b906001820180921161131857565b6112d8565b5f546040516308834cb560e21b8082526001600160a01b0385811660048401529283166024830152929392602092909183816044817f000000000000000000000000000000000000000000000000000000000000000086165afa9081156104ab575f9161142a575b50159182156113a6575b505090506113a057610fd891611cc1565b50505f90565b6040519081526001600160a01b0385166004820152606086901c602482015291508290829060449082907f0000000000000000000000000000000000000000000000000000000000000000165afa9182156104ab575f9261140d575b505015805f8061138f565b6114239250803d106104a4576104968183610732565b5f80611402565b6114419150843d86116104a4576104968183610732565b5f611385565b5f805160206124d283398151915260028154146114645760029055565b604051633ee5aeb560e01b8152600490fd5b6004546001600160a01b0316606082901c036115a6575f52600360205260405f209065ffffffffffff9182421161158757824216926001820191825415611579575b6114c181612188565b509590845493835480155f1461155a57505f975b6001600160d01b0398808a1615611554576114f09088611d89565b50505b82611548575b50501561153257505061076093509061151461151a9261184d565b90611d89565b90919082549060031b91821b915f19901b1916179055565b6107609561154193169161224a565b5050611ddf565b16821490505f806114f9565b506114f3565b5f1990808281011161131857855f5260205f2001015460301c976114d5565b61158283611db2565b6114b8565b6040516306dfcc6560e41b815260306004820152426024820152604490fd5b6040516386eab41b60e01b8152600490fd5b5f8181525f805160206124b28339815191526020908152604080832033845290915290205460ff16156106b05750565b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260409020545f805160206124b28339815191529060ff166113a0575f808052602091825260408082206001600160a01b038516835290925220805460ff1916600117905533906001600160a01b03165f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b6001600160a01b0381165f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c602052604090207fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c905f805160206124b28339815191529060ff905b5416611762575f828152602091825260408082206001600160a01b038616835290925220805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b5050505f90565b5f8181525f805160206124b2833981519152602081815260408084206001600160a01b038716855290915290912060ff906116fe565b5f8181525f805160206124b2833981519152602081815260408084206001600160a01b03871685529091529091205460ff1615611762575f828152602091825260408082206001600160a01b038616835290925220805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b9081602091031261025a575163ffffffff8116810361025a5790565b5f1981019190821161131857565b90600163ffffffff8093160191821161131857565b91805115611949578060208061188b93518301019101611831565b916118968382611edc565b926118a7845165ffffffffffff1690565b9065ffffffffffff808516921682811461193d57821191826118dd575b50506118d457610fd89250611e02565b50506020015190565b9091506118ea835461184d565b63ffffffff831614918215611903575b50505f806118c4565b61193591925061191e61191861192a9261185b565b85611edc565b5165ffffffffffff1690565b65ffffffffffff1690565b115f806118fa565b50505050506020015190565b50610fd891611e02565b91909160408184031261025a57803561196b8161052d565b9260208201356001600160401b03811161025a57610fd8920161077d565b61199591810190611953565b6040516302910f8b60e31b81526001600160a01b039283166004820181905291906020816024817f000000000000000000000000000000000000000000000000000000000000000088165afa9081156104ab575f91611aa8575b5015611a9657611a2a604091611a25611a7094611a0a611f4a565b60018060a01b03166001600160601b0360a01b5f5416175f55565b61200d565b6020810151600180546001600160a01b0319166001600160a01b0390921691909117905580516001600160a01b0316848116611a86575b5001516001600160a01b031690565b908116611a7a5750565b611a8390611693565b50565b611a8f906115e8565b505f611a61565b6040516362df054560e01b8152600490fd5b611ac1915060203d6020116104a4576104968183610732565b5f6119ef565b60405190611ad482610717565b60606040838281528260208201520152565b9060208282031261025a5781516001600160401b039283821161025a57019060608282031261025a5760405192611b1c84610717565b825181811161025a5782611b31918501611018565b8452602083015181811161025a5782611b4b918501611018565b6020850152604083015190811161025a57611b669201611018565b604082015290565b9081602091031261025a575190565b60409065ffffffffffff610fd894931681528160208201520190610fdb565b90939293611ba8611ac7565b94805180611ca5575b5050600454606083901c6001600160a01b03918216148015929190611c8a575b5050611c82575f54611c17929190602090611bf690610d9a906001600160a01b031681565b8187015190604051808097819463810da75d60e01b83528860048401611b7d565b03915afa9081156104ab57611c4a935f92611c4f575b50611c3e9192604087015191610fc2565b90818082109118021890565b915190565b611c3e9250611c759060203d602011611c7b575b611c6d8183610732565b810190611b6e565b91611c2d565b503d611c63565b505090515f91565b60055481166001600160a01b03169116141590505f80611bd1565b611cb9929650602080918301019101611ae6565b935f80611bb1565b6004549091606083901c6001600160a01b039283161480159290611d6e575b5050611143575f5460049190602090611d0390610d9a906001600160a01b031681565b60405163bd49c35f60e01b815293849182905afa9081156104ab57610fd8925f92611d49575b50611d3c905f52600260205260405f2090565b5490818082109118021890565b611d3c919250611d679060203d602011611c7b57611c6d8183610732565b9190611d29565b60055481166001600160a01b03169116141590505f80611ce0565b8054821015611d9e575f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b8054600160401b81101561071257611dcf91600182018155611d89565b8154905f199060031b1b19169055565b90815491600160401b831015610712578261151a91600161076095018155611d89565b908154905f829160058411611e76575b611e1d935084612452565b80611e4f57505f905b6001600160d01b038216156113a057610fd8916001611e459201611d89565b90549060031b1c90565b611e69611e5e611e709261184d565b835f5260205f200190565b5460301c90565b90611e26565b9192611e8181612327565b810390811161131857611e1d93855f5265ffffffffffff808360205f20015416908516105f14611eb2575091611e12565b929150611ebe9061130a565b90611e12565b60405190611ed1826106f7565b5f6020838281520152565b9060206001611f00611f2c93611ef0611ec4565b50611ef9611ec4565b5085611d89565b509360405194611f0f866106f7565b549465ffffffffffff86169586825260301c938491015201611d89565b90549060405192611f3c846106f7565b835260031b1c602082015290565b611f526121c1565b611f5a6121c1565b60015f805160206124d283398151915255565b60405190611f7a82610717565b5f6040838281528260208201520152565b8091039060a0821261025a57606060405192611fa684610717565b1261025a57608090604051611fba81610717565b8151611fc58161052d565b81526020820151611fd58161052d565b60208201526040820151611fe88161052d565b604082015283526060810151611ffd8161052d565b60208401520151611b668161052d565b612015611f6d565b5061202b81519160208080948301019101611f8b565b80820180516040516302910f8b60e31b8082526001600160a01b039283166004830152939491939082816024817f000000000000000000000000000000000000000000000000000000000000000089165afa9081156104ab575f9161216b575b501561046a57816120cf9160408701956120ab875160018060a01b031690565b6040519283526001600160a01b031660048301529092839190829081906024820190565b03917f0000000000000000000000000000000000000000000000000000000000000000165afa9182156104ab575f9261214e575b50501561213c5751600480546001600160a01b039283166001600160a01b03199182161790915591516005805490931691161790555190565b604051631f0853c160e21b8152600490fd5b6121649250803d106104a4576104968183610732565b5f80612103565b6121829150833d85116104a4576104968183610732565b5f61208b565b8054806121995750505f905f905f90565b5f19918183810111611318575f5260205f2001015460019165ffffffffffff82169160301c90565b60ff5f805160206124f28339815191525460401c16156121dd57565b604051631afcd79f60e31b8152600490fd5b8054600160401b8110156107125761220c91600182018155611d89565b61223757815160209092015160301b65ffffffffffff191665ffffffffffff92909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b805492939280156122fd5761226161226c9161184d565b825f5260205f200190565b9182549265ffffffffffff918285169281168084116122eb578793036122b257506122ab92509065ffffffffffff82549181199060301b169116179055565b60301c9190565b9150506122e6916122d26122c4610753565b65ffffffffffff9093168352565b6001600160d01b03861660208301526121ef565b6122ab565b604051632520601d60e01b8152600490fd5b50906123229161230e6122c4610753565b6001600160d01b03851660208301526121ef565b5f9190565b6001811115610fd857600181600160801b811015612440575b6123e86123de6123d46123ca6123c06123b66123f497600488600160401b6123ef9a1015612433575b640100000000811015612426575b62010000811015612419575b61010081101561240d575b6010811015612401575b10156123f9575b60030260011c6123af818b6112ec565b0160011c90565b6123af818a6112ec565b6123af81896112ec565b6123af81886112ec565b6123af81876112ec565b6123af81866112ec565b80936112ec565b821190565b900390565b60011b61239f565b811c9160021b91612398565b60081c91811b9161238e565b60101c9160081b91612383565b60201c9160101b91612377565b60401c9160201b91612369565b50600160401b9050608082901c612340565b91905b8382106124625750505090565b9091928083169080841860011c820180921161131857845f5265ffffffffffff808360205f20015416908416105f1461249f5750925b9190612455565b9392506124ab9061130a565b9161249856fe02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212205f37220cee49793867f6398aabf23fa0532b739b85a0b80ede76685c8b732ae764736f6c63430008190033","sourceMap":"681:3264:86:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;-1:-1:-1;;681:3264:86;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3551:47:19;;;:87;;;;681:3264:86;;;;;;;;;;3551:87:19;-1:-1:-1;;;1134:40:28;;-1:-1:-1;3551:87:19;;;681:3264:86;-1:-1:-1;681:3264:86;;;;;;;;-1:-1:-1;;681:3264:86;;;;;;1537:38:83;-1:-1:-1;;;;;681:3264:86;;;;;;;;;;;;-1:-1:-1;;681:3264:86;;;;;;1632:54:83;-1:-1:-1;;;;;681:3264:86;;;;;;;;;;;;-1:-1:-1;;681:3264:86;;;;;;1743:56:83;-1:-1:-1;;;;;681:3264:86;;;;;;;;;;;;-1:-1:-1;;681:3264:86;;;;;;-1:-1:-1;;;;;681:3264:86;;;;;;;;3361:103:26;;;:::i;:::-;681:3264:86;;-1:-1:-1;;;4285:48:83;;4322:10;681:3264:86;4285:48:83;;681:3264:86;;;;;-1:-1:-1;;;;;4295:16:83;681:3264:86;4285:48:83;;;;;;;-1:-1:-1;4285:48:83;;;681:3264:86;4284:49:83;;4280:99;;-1:-1:-1;;;;;681:3264:86;-1:-1:-1;;4322:10:83;297:2:95;681:3264:86;;267:46:95;4459:27:83;;;;681:3264:86;;4459:15:83;681:3264:86;;;;;;;4459:27:83;681:3264:86;4459:37:83;4455:87;;4654:38;4552:27;4654:38;4552:27;;;681:3264:86;;4459:15:83;681:3264:86;;;;;;;4552:27:83;681:3264:86;4631:6:83;;;;:::i;:::-;681:3264:86;;;;;;;;;;;;;4654:38:83;;;;3426:1:26;1949;-1:-1:-1;;;;;;;;;;;681:3264:86;3860:283:26;3426:1;681:3264:86;4455:87:83;681:3264:86;;-1:-1:-1;;;4519:12:83;;681:3264:86;;4519:12:83;4280:99;681:3264:86;;-1:-1:-1;;;4356:12:83;;681:3264:86;;4356:12:83;4285:48;;;;681:3264:86;4285:48:83;681:3264:86;4285:48:83;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;681:3264:86:-;;;;;;-1:-1:-1;;681:3264:86;;;;;;-1:-1:-1;681:3264:86;-1:-1:-1;;;;;;;;;;;681:3264:86;;;4919:24:19;681:3264:86;-1:-1:-1;681:3264:86;4919:24:19;681:3264:86;;;;;;;;;;;;;-1:-1:-1;;681:3264:86;;;;;;322:32:76;-1:-1:-1;;;;;681:3264:86;;;;;;;-1:-1:-1;;;;;681:3264:86;;;;;:::o;:::-;;;;;;-1:-1:-1;;681:3264:86;;;;5350:25:19;681:3264:86;;;;;;;:::i;:::-;;-1:-1:-1;681:3264:86;-1:-1:-1;;;;;;;;;;;681:3264:86;;3202:4:19;4919:24;681:3264:86;-1:-1:-1;681:3264:86;4919:24:19;681:3264:86;3202:4:19;:::i;:::-;5350:25;:::i;681:3264:86:-;;;;;;-1:-1:-1;;681:3264:86;;;;;;;;;:::i;:::-;966:10:24;-1:-1:-1;;;;;681:3264:86;;6441:34:19;6437:102;;6549:37;681:3264:86;;;6549:37:19;:::i;6437:102::-;681:3264:86;;-1:-1:-1;;;6498:30:19;;681:3264:86;;6498:30:19;681:3264:86;;;;;;-1:-1:-1;;681:3264:86;;;;;;;;;:::i;:::-;3361:103:26;;:::i;:::-;966:10:24;-1:-1:-1;681:3264:86;;;;;;;;;;1356:26:83;;681:3264:86;;4468:23:19;4464:108;;-1:-1:-1;4861:4:83;681:3264:86;-1:-1:-1;;;;;681:3264:86;;;;;;4861:13:83;;4857:63;;-1:-1:-1;;;;;;681:3264:86;;;4861:4:83;681:3264:86;4958:14:83;-1:-1:-1;;4958:14:83;4861:4;-1:-1:-1;;;;;;;;;;;681:3264:86;;4464:108:19;681:3264:86;;;;4514:47:19;;;;;;966:10:24;681:3264:86;4514:47:19;;681:3264:86;;;;;4514:47:19;681:3264:86;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;681:3264:86;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;-1:-1:-1;;;;;681:3264:86;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;681:3264:86;;;;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;:::-;-1:-1:-1;;;;;681:3264:86;;;;;;-1:-1:-1;;681:3264:86;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;681:3264:86;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;681:3264:86;;;;;;;;;;;;;;;-1:-1:-1;;;;;681:3264:86;;;;;;;2045:63;681:3264;;;;;;:::i;:::-;;;;-1:-1:-1;681:3264:86;2045:16;681:3264;;;-1:-1:-1;681:3264:86;2045:63;:::i;:::-;681:3264;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;681:3264:86;;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;681:3264:86;;;;-1:-1:-1;;;;;681:3264:86;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;681:3264:86;;;;;;;4301:16:22;681:3264:86;;4726:16:22;;:34;;;;681:3264:86;4805:1:22;4790:16;:50;;;;681:3264:86;4855:13:22;:30;;;;681:3264:86;4851:91:22;;;-1:-1:-1;;;;;;;;;;;681:3264:86;;-1:-1:-1;;681:3264:86;;;;;718:4:76;;4951:18:22;4979:67;;718:4:76;:::i;:::-;5066:101:22;;681:3264:86;5066:101:22;-1:-1:-1;;;;;;;;;;;681:3264:86;;-1:-1:-1;;;;681:3264:86;;;;;-1:-1:-1;681:3264:86;;5142:14:22;;681:3264:86;;5142:14:22;681:3264:86;4979:67:22;-1:-1:-1;;;;;;;;;;;681:3264:86;;-1:-1:-1;;;;681:3264:86;-1:-1:-1;;;681:3264:86;;;718:4:76;:::i;4851:91:22:-;681:3264:86;;-1:-1:-1;;;4908:23:22;;681:3264:86;;4908:23:22;4855:30;4872:13;;;4855:30;;;4790:50;4818:4;4810:25;:30;;-1:-1:-1;4790:50:22;;4726:34;;;-1:-1:-1;4726:34:22;;681:3264:86;;;;;;-1:-1:-1;;681:3264:86;;;;;;;1253:6:83;681:3264:86;;;;;;;;;-1:-1:-1;;681:3264:86;;;;1267:23;681:3264;;;-1:-1:-1;;;;;681:3264:86;;;;;;;;;;;;;;-1:-1:-1;;681:3264:86;;;;;;;1356:26:83;681:3264:86;;;;;;;;;-1:-1:-1;;681:3264:86;;;;;;;;-1:-1:-1;;;;;681:3264:86;;;;;;;;;;;;;;-1:-1:-1;;681:3264:86;;;;;;;;-1:-1:-1;;;;;681:3264:86;;;;;;;;;;;;;;-1:-1:-1;;681:3264:86;;;;;;961:42;-1:-1:-1;;;;;681:3264:86;;;;;;;;;;;;-1:-1:-1;;681:3264:86;;;;;;3901:31:19;681:3264:86;;;;;:::i;:::-;;;-1:-1:-1;681:3264:86;-1:-1:-1;;;;;;;;;;;681:3264:86;;;-1:-1:-1;681:3264:86;;;;;;;;;;;;;;;;;3901:31:19;681:3264:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;681:3264:86;;;;-1:-1:-1;681:3264:86;;;477:31:82;681:3264:86;;;;;;:::i;:::-;;;;;;;;;;;;;;;416:25:82;;;;681:3264:86;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;681:3264:86;;;;;;;;;;;;;477:31:82;;681:3264:86;;;;;;;;;;:::i;:::-;477:31:82;681:3264:86;;477:31:82;;;;;;:::i;:::-;518:79;;;681:3264:86;518:79:82;;681:3264:86;;;;;;;;;;;-1:-1:-1;;681:3264:86;;;;;;;;;;;;;;;;;-1:-1:-1;;681:3264:86;;;;;;;-1:-1:-1;;;;;404:28:76;681:3264:86;;;;;;;;;;-1:-1:-1;;681:3264:86;;;;;;1439:41:83;-1:-1:-1;;;;;681:3264:86;;;;;;;;;;;;-1:-1:-1;;681:3264:86;;;;;;-1:-1:-1;681:3264:86;2009:67:83;681:3264:86;;;;-1:-1:-1;681:3264:86;;;;;;;;;;;;;;-1:-1:-1;;681:3264:86;;;;5767:26:19;681:3264:86;;;;;;;:::i;:::-;;-1:-1:-1;681:3264:86;-1:-1:-1;;;;;;;;;;;681:3264:86;;3202:4:19;4919:24;681:3264:86;-1:-1:-1;681:3264:86;4919:24:19;681:3264:86;3202:4:19;:::i;:::-;5767:26;:::i;681:3264:86:-;;;;;;-1:-1:-1;;681:3264:86;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;681:3264:86;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;-1:-1:-1;;681:3264:86;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;681:3264:86;;;;;;;;;;;;:::i;:::-;3361:103:26;;:::i;:::-;-1:-1:-1;681:3264:86;;;5246:21:83;;:13;;-1:-1:-1;;;;;681:3264:86;5246:13:83;681:3264:86;;-1:-1:-1;;;;;681:3264:86;;;5246:21:83;681:3264:86;;-1:-1:-1;;;5246:23:83;;681:3264:86;;;;;5246:23:83;;;;;;;-1:-1:-1;5246:23:83;;;681:3264:86;-1:-1:-1;;;;;;681:3264:86;;;5232:10:83;:37;5228:87;;5341:4;681:3264:86;-1:-1:-1;;;;;681:3264:86;;;;5355:469:83;;681:3264:86;-1:-1:-1;;681:3264:86;;;;;;;;;;;;;;;;5839:55:83;;681:3264:86;;;;5839:55:83;;;;3426:1:26;1949;-1:-1:-1;;;;;;;;;;;681:3264:86;3860:283:26;5355:469:83;681:3264:86;;;;5435:94:83;;;;681:3264:86;5435:94:83;;;;;;;;;;;;681:3264:86;5435:94:83;;;:::i;:::-;;681:3264:86;;5435:94:83;;;;;;:::i;:::-;681:3264:86;5548:9:83;:51;5544:118;;-1:-1:-1;5839:55:83;5676:138;;;;5839:55;5676:138;;;1150:7;5676:138;;5355:469;;;5544:118;681:3264:86;;-1:-1:-1;;;5626:21:83;;681:3264:86;;5626:21:83;5228:87;681:3264:86;;-1:-1:-1;;;5292:12:83;;681:3264:86;;5292:12:83;5246:23;;;;;681:3264:86;5246:23:83;681:3264:86;5246:23:83;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;681:3264:86;;;;;;-1:-1:-1;;681:3264:86;;;;;;;;-1:-1:-1;;;;;681:3264:86;;;;;;;;;;;;;;-1:-1:-1;;681:3264:86;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;-1:-1:-1;;681:3264:86;;;;;;;1150:7:83;681:3264:86;;;;;;;;;-1:-1:-1;;681:3264:86;;;;;;;2700:1:83;681:3264:86;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;1914:201;;2045:63;1914:201;;-1:-1:-1;681:3264:86;2045:16;681:3264;;;-1:-1:-1;681:3264:86;2045:63;:::i;:::-;1914:201;:::o;681:3264::-;;;;;;;;;;;;;;;;;-1:-1:-1;681:3264:86;;;;;;;;-1:-1:-1;;681:3264:86;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;681:3264:86;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;681:3264:86;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;-1:-1:-1;;;;;681:3264:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2764:920:83:-;;2978:48;2764:920;;;;2978:48;;;;:::i;:::-;3036:36;;;681:3264:86;;:::i;:::-;;;;3086:20:83;3082:107;;2764:920;3216:11;;;;:193;;;;;2764:920;3216:394;;;;2764:920;3199:455;;;;;;2764:920;:::o;3199:455::-;3635:8;-1:-1:-1;3635:8:83;:::o;3216:394::-;3553:39;;;;;3430:180;3553:39;;;681:3264:86;;;;;;;;;;3430:180:83;;467:2:95;681:3264:86;3430:180:83;;;;;:::i;:::-;;681:3264:86;3444:31:83;-1:-1:-1;;;;;681:3264:86;3430:180:83;;;;;;;-1:-1:-1;3430:180:83;;;3216:394;3429:181;;3216:394;;;;;;3430:180;;;;3553:39;3430:180;3553:39;3430:180;;;;;;;:::i;:::-;;;;3216:193;-1:-1:-1;681:3264:86;;;-1:-1:-1;;;;;;681:3264:86;3248:161:83;3354:37;;;681:3264:86;3248:161:83;681:3264:86;;;;;;;;;;3248:161:83;;;;;;;:::i;:::-;;681:3264:86;3262:29:83;-1:-1:-1;;;;;681:3264:86;3248:161:83;;;;;;;-1:-1:-1;3248:161:83;;;3216:193;3247:162;;3216:193;;;3248:161;;;;;;;;;;;;;;:::i;:::-;;;;3082:107;3139:39;;;;;;;;;;;;;:::i;:::-;3082:107;;;;;681:3264:86;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;9999:1:66;681:3264:86;;;;;;;:::o;:::-;;:::i;3740:389:83:-;3918:5;681:3264:86;;;-1:-1:-1;;;3853:71:83;;;-1:-1:-1;;;;;681:3264:86;;;3853:71:83;;;681:3264:86;;;;;;;;3740:389:83;;681:3264:86;3853:71:83;;681:3264:86;;3853:71:83;681:3264:86;;;3867:29:83;681:3264:86;;3853:71:83;;;;;;;3918:5;3853:71;;;3740:389;3852:72;;681:3264:86;;;3852:181:83;;3740:389;3835:242;;;;;;4094:28;;;:::i;3835:242::-;4058:8;;3918:5;4058:8;:::o;3852:181::-;681:3264:86;;3945:88:83;;;-1:-1:-1;;;;;681:3264:86;;3853:71:83;3945:88;;681:3264:86;467:2:95;681:3264:86;;;;;;;;-1:-1:-1;681:3264:86;;;;;;;;3959:31:83;681:3264:86;3945:88:83;;;;;;;3918:5;3945:88;;;3852:181;3944:89;;;3852:181;;;;;3945:88;;;;;;-1:-1:-1;3945:88:83;;;;;;:::i;:::-;;;;;3853:71;;;;;;;;;;;;;;:::i;:::-;;;;3470:384:26;-1:-1:-1;;;;;;;;;;;1991:1:26;681:3264:86;;3670:20:26;3666:88;;1991:1;681:3264:86;;3470:384:26:o;3666:88::-;681:3264:86;;-1:-1:-1;;;3713:30:26;;;;;3164:253:86;3261:7;681:3264;-1:-1:-1;;;;;681:3264:86;467:2:95;681:3264:86;;;3261:31;3257:85;;-1:-1:-1;681:3264:86;3351:16;681:3264;;;-1:-1:-1;681:3264:86;;;837:15:68;;;14374:24:64;14370:103;;837:15:68;;681:3264:86;6360:12:93;;;;681:3264:86;;;6360:24:93;6356:75;;3164:253:86;6474:30:93;;;:::i;:::-;681:3264:86;;;;;;;;10446:8:66;;:63;:8;;;:63;-1:-1:-1;10446:63:66;;-1:-1:-1;;;;;681:3264:86;;;;10726:7:93;681:3264:86;;10736:17:93;;;;:::i;:::-;10726:31;;;6604:24;;;10726:31;-1:-1:-1;;6600:188:93;;;6657:7;;6644:29;6657:7;;;;6644:21;6657:7;;:::i;:::-;6644:21;;:::i;:::-;:29;681:3264:86;;;;;;;;;;;;;;;;;;;;;6600:188:93;6753:24;681:3264:86;8310:38:66;681:3264:86;;8310:38:66;;:::i;:::-;6753:24:93;;;:::i;6604:::-;681:3264:86;6614:14:93;;;-1:-1:-1;6604:24:93;;;;10726:31;;;;10446:63:66;681:3264:86;;;;;;;;;;14439:109:66;-1:-1:-1;14439:109:66;681:3264:86;-1:-1:-1;14439:109:66;;;681:3264:86;;;10446:63:66;;;6356:75:93;6400:20;;;:::i;:::-;6356:75;;14370:103:64;681:3264:86;;-1:-1:-1;;;14421:41:64;;14452:2;3261:7:86;14421:41:64;;681:3264:86;837:15:68;681:3264:86;;;;;;14421:41:64;3257:85:86;681:3264;;-1:-1:-1;;;3315:16:86;;3261:7;;3315:16;4148:103:19;-1:-1:-1;681:3264:86;;;-1:-1:-1;;;;;;;;;;;681:3264:86;;;;;;;;966:10:24;681:3264:86;;;;;;;;;;4468:23:19;4464:108;;4148:103;:::o;7270:387::-;-1:-1:-1;;;;;681:3264:86;;-1:-1:-1;681:3264:86;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2887:71:19;681:3264:86;;;;-1:-1:-1;681:3264:86;;;;;;;;;;;-1:-1:-1;;;;;681:3264:86;;;;;;;;;;-1:-1:-1;;681:3264:86;7509:4:19;681:3264:86;;;966:10:24;;-1:-1:-1;;;;;681:3264:86;-1:-1:-1;7532:40:19;-1:-1:-1;;7532:40:19;7509:4;7586:11;:::o;7270:387::-;-1:-1:-1;;;;;681:3264:86;;-1:-1:-1;681:3264:86;;;;;;;;;1356:26:83;;-1:-1:-1;;;;;;;;;;;2887:71:19;681:3264:86;;3901:31:19;681:3264:86;;;;-1:-1:-1;681:3264:86;;;;;;;;;;;-1:-1:-1;;;;;681:3264:86;;;;;;;;;;-1:-1:-1;;681:3264:86;7509:4:19;681:3264:86;;;966:10:24;;-1:-1:-1;;;;;681:3264:86;;7532:40:19;-1:-1:-1;;7532:40:19;7509:4;7586:11;:::o;7432:219::-;7628:12;;;-1:-1:-1;7628:12:19;:::o;7270:387::-;-1:-1:-1;681:3264:86;;;-1:-1:-1;;;;;;;;;;;681:3264:86;;;;;;;;-1:-1:-1;;;;;681:3264:86;;;;;;;;;;;;3901:31:19;681:3264:86;7892:388:19;-1:-1:-1;681:3264:86;;;-1:-1:-1;;;;;;;;;;;681:3264:86;;;;;;;;-1:-1:-1;;;;;681:3264:86;;;;;;;;;;;;;;;;-1:-1:-1;681:3264:86;;;;;;;;;;;-1:-1:-1;;;;;681:3264:86;;;;;;;;;;-1:-1:-1;;681:3264:86;;;966:10:24;;-1:-1:-1;;;;;681:3264:86;;8155:40:19;-1:-1:-1;;8155:40:19;681:3264:86;8209:11:19;:::o;681:3264:86:-;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;681:3264:86;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::o;7558:604:93:-;;681:3264:86;;7686:17:93;7682:83;;681:3264:86;7789:27:93;681:3264:86;7789:27:93;681:3264:86;;7789:27:93;;;;;;:::i;:::-;7860:14;;;;;:::i;:::-;681:3264:86;;;;;;;;;;;;;;;;7888:22:93;;;7884:77;;7975:21;-1:-1:-1;7975:84:93;;;;7558:604;7971:139;;;;8127:28;;;;:::i;7971:139::-;8082:17;;7789:27;8082:17;681:3264:86;8075:24:93;:::o;7975:84::-;681:3264:86;;;8009:16:93;681:3264:86;;8009:16:93;:::i;:::-;681:3264:86;;;8001:24:93;:57;;;;;7975:84;;;;;;;8001:57;8029:29;8038:8;;;8029:18;8038:8;8029:23;8038:8;;:::i;:::-;8029:18;;:::i;:::-;681:3264:86;;;;;8029:23:93;681:3264:86;;;;8029:29:93;;8001:57;;;;7884:77;7933:17;;;;;7789:27;7933:17;681:3264:86;7926:24:93;:::o;7682:83::-;7726:28;;;;:::i;681:3264:86:-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;681:3264:86;;;;;;;;:::i;5907:716:83:-;6030:34;5907:716;6030:34;;;;:::i;:::-;681:3264:86;;-1:-1:-1;;;6080:41:83;;-1:-1:-1;;;;;681:3264:86;;;6080:41:83;;;681:3264:86;;;;;6080:41:83;681:3264:86;;;6090:13:83;681:3264:86;;6080:41:83;;;;;;;-1:-1:-1;6080:41:83;;;5907:716;6079:42;;6075:90;;6266:27;681:3264:86;2684:111:26;6210:14:83;681:3264:86;2684:111:26;;;:::i;:::-;681:3264:86;;;;;;-1:-1:-1;;;;;681:3264:86;;-1:-1:-1;681:3264:86;;;-1:-1:-1;681:3264:86;;6210:14:83;6266:27;:::i;:::-;6080:41;6311:15;;681:3264:86;;;;-1:-1:-1;;;;;;681:3264:86;-1:-1:-1;;;;;681:3264:86;;;;;;;;;;;-1:-1:-1;;;;;681:3264:86;;;;6337:143:83;;5907:716;-1:-1:-1;6493:28:83;681:3264:86;-1:-1:-1;;;;;681:3264:86;;;;;;;6489:128:83;;5907:716;:::o;6489:128::-;6551:55;;;:::i;:::-;;5907:716::o;6337:143::-;6404:65;;;:::i;:::-;;6337:143;;;6075:90;681:3264:86;;-1:-1:-1;;;6144:10:83;;6080:41;;6144:10;6080:41;;;;;;;;;;;;;;:::i;:::-;;;;681:3264:86;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;681:3264:86;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;2121:740::-;;;;;681:3264;;:::i;:::-;;;;2362:16;2358:92;;2121:740;-1:-1:-1;;2464:7:86;681:3264;467:2:95;681:3264:86;;;-1:-1:-1;;;;;681:3264:86;;;2464:31;;;;;681:3264;2464:56;;2121:740;2460:120;;;;-1:-1:-1;681:3264:86;2637:67;;681:3264;;2676:27;;2637;;:13;;-1:-1:-1;;;;;681:3264:86;2637:13;681:3264;2637:27;2676;;;;681:3264;;;;;;;;;;;2637:67;;;2464:7;2637:67;;;:::i;:::-;;;;;;;;;;2611:198;2637:67;-1:-1:-1;2637:67:86;;;2121:740;2763:31;2722:73;2763:31;;681:3264;2763:31;;;2722:73;;:::i;:::-;2611:198;3463:5:63;;;;3066;;681:3264:86;3060:42:63;3371:111;;2611:198:86;2823:21;;2121:740;:::o;2637:67::-;2722:73;2637:67;;;;2676:27;2637:67;2676:27;2637:67;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;2460:120;-1:-1:-1;;2547:21:86;;-1:-1:-1;;2536:33:86:o;2464:56::-;2499:8;681:3264;;;-1:-1:-1;;;;;681:3264:86;;;2499:21;;;-1:-1:-1;2464:56:86;;;;2358:92;2408:31;;;;;;;;;;;;;:::i;:::-;2358:92;;;;;2867:291;2977:7;681:3264;2867:291;;681:3264;;;;-1:-1:-1;;;;;681:3264:86;;;2977:31;;;;681:3264;2977:56;;2867:291;2973:95;;;;-1:-1:-1;681:3264:86;2977:7;;681:3264;3094:27;;:25;;:13;;-1:-1:-1;;;;;681:3264:86;3094:13;681:3264;3094:25;681:3264;;-1:-1:-1;;;3094:27:86;;681:3264;;;;;3094:27;;;;;;;3085:66;3094:27;-1:-1:-1;3094:27:86;;;2867:291;3123:27;;;681:3264;;4459:15:83;681:3264:86;;;;;;;3123:27;681:3264;3085:66;3463:5:63;;;;3066;;681:3264:86;3060:42:63;3371:111;;3094:27:86;3123;3094;;;;;;;;;;;;;;;:::i;:::-;;;;;2977:56;3012:8;681:3264;;;-1:-1:-1;;;;;681:3264:86;;;3012:21;;;-1:-1:-1;2977:56:86;;;;681:3264;;;;;;;;-1:-1:-1;681:3264:86;;-1:-1:-1;681:3264:86;;;-1:-1:-1;681:3264:86;:::o;:::-;;;;;;;;;;;;;;;-1:-1:-1;;;681:3264:86;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;-1:-1:-1;;;681:3264:86;;;;;;;;;;;;;;;:::i;6999:207:93:-;;681:3264:86;;9737:15:66;-1:-1:-1;9762:18:66;9795:7;9801:1;9795:7;;9791:234;;6999:207:93;10049:53:66;;;;;:::i;:::-;10120:8;;;:63;-1:-1:-1;10120:63:66;;-1:-1:-1;;;;;681:3264:86;;7168:7:93;681:3264:86;;;7178:12:93;;:17;:12;;:17;:::i;:::-;681:3264:86;;;;;;;;10120:63:66;10135:41;10168:7;10135:48;10168:7;;:::i;:::-;10135:41;14439:109;;;;;;14289:265;;10135:41;681:3264:86;;;;;10135:48:66;10120:63;;;9791:234;9838:14;;;;;:::i;:::-;681:3264:86;;;;;;;10049:53:66;14439:109;;-1:-1:-1;14439:109:66;681:3264:86;14439:109:66;;;-1:-1:-1;14439:109:66;;681:3264:86;;;;;9870:48:66;9866:149;681:3264:86;;;9938:10:66;9866:149;9791:234;;9866:149;9993:7;;;;;;:::i;:::-;9866:149;9791:234;;681:3264:86;;;;;;;:::i;:::-;-1:-1:-1;681:3264:86;;;;;;;:::o;11486:272:93:-;;681:3264:86;11718:12:93;11452:22:66;11718:31:93;11486:272;681:3264:86;;:::i;:::-;;;;:::i;:::-;;11452:22:66;;:::i;:::-;681:3264:86;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;11718:12:93;:31;:::i;:::-;681:3264:86;;;;;;;;;:::i;:::-;;;;;;;11672:79:93;;681:3264:86;11486:272:93;:::o;6893:76:22:-;;;:::i;:::-;;;:::i;:::-;1949:1:26;-1:-1:-1;;;;;;;;;;;681:3264:86;6893:76:22:o;681:3264:86:-;;;;;;;:::i;:::-;-1:-1:-1;681:3264:86;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;3423:520::-;681:3264;;:::i;:::-;;3571:30;681:3264;;3571:30;;;;;;;;;;;:::i;:::-;3654:14;;;681:3264;;;;-1:-1:-1;;;3617:52:86;;;-1:-1:-1;;;;;681:3264:86;;;3617:52;;;681:3264;3654:14;;681:3264;;;3654:14;681:3264;;;3627:16;681:3264;;3617:52;;;;;;;-1:-1:-1;3617:52:86;;;3423:520;3616:53;;3612:103;;3768:15;3730:54;3768:15;681:3264;3768:15;;681:3264;;;;;;;;;;;;;;;3730:54;;;-1:-1:-1;;;;;681:3264:86;3617:52;3730:54;;681:3264;;;;;-1:-1:-1;681:3264:86;;;;;;;;;3730:54;;3740:17;;681:3264;3730:54;;;;;;;-1:-1:-1;3730:54:86;;;3423:520;3729:55;;;3725:106;;681:3264;3617:52;681:3264;;-1:-1:-1;;;;;681:3264:86;;;-1:-1:-1;;;;;;681:3264:86;;;;;;;;;3875:26;681:3264;;;;;;;;;;3919:17;3423:520;:::o;3725:106::-;681:3264;;-1:-1:-1;;;3807:13:86;;3617:52;;3807:13;3730:54;;;;;;-1:-1:-1;3730:54:86;;;;;;:::i;:::-;;;;;3617:52;;;;;;;;;;;;;;:::i;:::-;;;;10695:389:66;681:3264:86;;10871:8:66;;;10895:20;;10833:17;10895:20;10833:17;10895:20;10833:17;10895:20;:::o;10867:211::-;681:3264:86;;;;;;;;;;10833:17:66;14439:109;;10833:17;14439:109;;;681:3264:86;11014:1:66;681:3264:86;;;;;;;11030:37:66;:::o;7084:141:22:-;681:3264:86;-1:-1:-1;;;;;;;;;;;681:3264:86;;;;7150:18:22;7146:73;;7084:141::o;7146:73::-;681:3264:86;;-1:-1:-1;;;7191:17:22;;;;;681:3264:86;;;-1:-1:-1;;;681:3264:86;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;681:3264:86;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;11657:922:66;681:3264:86;;11657:922:66;;;11864:7;;;;11936;11916:28;11936:7;;:::i;:::-;11916:28;14439:109;;;;;;14289:265;;11916:28;681:3264:86;;;;;;;;;;;;12103:13:66;;;12099:89;;12251:14;;;;;12285:19;;;;681:3264:86;;;;;;;;;;;;;;;;;12285:19:66;681:3264:86;;12423:25:66;;:::o;12247:163::-;681:3264:86;;;12343:52:66;681:3264:86;12353:41:66;681:3264:86;;:::i;:::-;;;;;;;;12353:41:66;-1:-1:-1;;;;;681:3264:86;;12353:41:66;;;681:3264:86;12343:52:66;:::i;:::-;12247:163;;12099:89;681:3264:86;;-1:-1:-1;;;12143:30:66;;;;;11860:713;681:3264:86;;12479:52:66;681:3264:86;12489:41:66;681:3264:86;;:::i;12489:41:66:-;-1:-1:-1;;;;;681:3264:86;;12489:41:66;;;681:3264:86;12343:52:66;:::i;12479:::-;11870:1;12545:17;;:::o;18080:5181:63:-;18246:1;18241:6;;;18237:53;;18246:1;19217:14;-1:-1:-1;;;19278:16:63;;;19274:92;;18080:5181;22827:18;22717;22607;22498;22387;22278;23216:28;19383:15;19898:6;19383:15;-1:-1:-1;;;23237:6:63;19383:15;;;19379:90;;18080:5181;19493:7;19486:15;;;19482:90;;18080:5181;19596:7;19589:15;;;19585:89;;18080:5181;19698:6;19691:14;;;19687:87;;18080:5181;19798:6;19791:14;;;19787:87;;18080:5181;19891:14;;19887:61;;18080:5181;20374:1;681:3264:86;18246:1:63;681:3264:86;22284:6:63;;;;:::i;:::-;681:3264:86;;;;;22278:18:63;22393:6;;;;:::i;22387:18::-;22504:6;;;;:::i;22498:18::-;22613:6;;;;:::i;22607:18::-;22723:6;;;;:::i;22717:18::-;22833:6;;;;:::i;22827:18::-;23237:6;;;:::i;:::-;23232:11;;;681:3264:86;23216:28:63;681:3264:86;;18080:5181:63;:::o;19887:61::-;18246:1;681:3264:86;19887:61:63;;19787:87;681:3264:86;;;;;19787:87:63;;;19687;681:3264:86;;;;;19687:87:63;;;19585:89;681:3264:86;;;;;19585:89:63;;;19482:90;681:3264:86;;;;;19482:90:63;;;19379;681:3264:86;;;;;19379:90:63;;;19274:92;-1:-1:-1;;;;681:3264:86;-1:-1:-1;681:3264:86;;;;19274:92:63;;12929:433:66;;;13112:10;;;;;;13344:11;;;12929:433;:::o;13105:230::-;3721:5:63;;;;;;3731;;;;681:3264:86;;;;;;;;;14439:109:66;-1:-1:-1;14439:109:66;681:3264:86;14439:109:66;;;-1:-1:-1;14439:109:66;;681:3264:86;;;;;-1:-1:-1;13189:136:66;681:3264:86;;;13248:10:66;13189:136;;13105:230;;;;13189:136;13303:7;;;;;;:::i;:::-;13189:136;;","linkReferences":{},"immutableReferences":{"56598":[{"start":1278,"length":32}],"56601":[{"start":3054,"length":32}],"57552":[{"start":893,"length":32},{"start":3111,"length":32},{"start":8282,"length":32}],"57555":[{"start":627,"length":32},{"start":6590,"length":32}],"57558":[{"start":695,"length":32},{"start":4624,"length":32},{"start":4948,"length":32}],"57561":[{"start":763,"length":32},{"start":4471,"length":32},{"start":5074,"length":32}],"59177":[{"start":2670,"length":32},{"start":8403,"length":32}]}},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","FACTORY()":"2dd31000","HOOK_GAS_LIMIT()":"ff54740f","HOOK_RESERVE()":"557cab44","HOOK_SET_ROLE()":"6679191e","NETWORK_REGISTRY()":"c0cd7c3e","OPERATOR_NETWORK_OPT_IN_SERVICE()":"1a80e500","OPERATOR_REGISTRY()":"83ce0322","OPERATOR_VAULT_OPT_IN_SERVICE()":"128e5d82","TYPE()":"bb24fe8a","VAULT_FACTORY()":"103f2907","VERSION()":"ffa1ad74","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","hook()":"7f5a7c7b","initialize(bytes)":"439fab91","maxNetworkLimit(bytes32)":"d15b740e","maxNetworkLimitAt(bytes32,uint48,bytes)":"437224a3","network()":"6739afca","onSlash(bytes32,address,uint256,uint48,bytes)":"e49561ee","operator()":"570ca735","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","setHook(address)":"3dfd3873","setMaxNetworkLimit(uint96,uint256)":"23f752d5","stake(bytes32,address)":"fd4d447c","stakeAt(bytes32,address,uint48,bytes)":"e02f6937","staticDelegateCall(address,bytes)":"9f86fd85","supportsInterface(bytes4)":"01ffc9a7","vault()":"fbfa77cf"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operatorRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"networkRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"vaultFactory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operatorVaultOptInService\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operatorNetworkOptInService\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegatorFactory\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"entityType\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadySet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CheckpointUnorderedInsertion\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientHookGas\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidNetwork\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotNetwork\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotOperator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotSlasher\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"}],\"name\":\"OnSlash\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"hook\",\"type\":\"address\"}],\"name\":\"SetHook\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"SetMaxNetworkLimit\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HOOK_GAS_LIMIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HOOK_RESERVE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HOOK_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NETWORK_REGISTRY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_NETWORK_OPT_IN_SERVICE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_REGISTRY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_VAULT_OPT_IN_SERVICE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TYPE\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VAULT_FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VERSION\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hook\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"}],\"name\":\"maxNetworkLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"maxNetworkLimitAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"network\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"hook_\",\"type\":\"address\"}],\"name\":\"setHook\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint96\",\"name\":\"identifier\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"setMaxNetworkLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"stake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hints\",\"type\":\"bytes\"}],\"name\":\"stakeAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"staticDelegateCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"CheckpointUnorderedInsertion()\":[{\"details\":\"A value was attempted to be inserted on a past checkpoint.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"OnSlash(bytes32,address,uint256,uint48)\":{\"params\":{\"amount\":\"amount of the collateral to be slashed\",\"captureTimestamp\":\"time point when the stake was captured\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"SetHook(address)\":{\"params\":{\"hook\":\"address of the hook\"}},\"SetMaxNetworkLimit(bytes32,uint256)\":{\"params\":{\"amount\":\"new maximum subnetwork's limit (how much stake the subnetwork is ready to get)\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}}},\"kind\":\"dev\",\"methods\":{\"VERSION()\":{\"details\":\"Must return 1 for this one.\",\"returns\":{\"_0\":\"version of the delegator\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize(bytes)\":{\"params\":{\"data\":\"some data to use\"}},\"maxNetworkLimitAt(bytes32,uint48,bytes)\":{\"params\":{\"hint\":\"hint for checkpoint index\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\",\"timestamp\":\"time point to get the maximum subnetwork limit at\"},\"returns\":{\"_0\":\"maximum limit of the subnetwork\"}},\"onSlash(bytes32,address,uint256,uint48,bytes)\":{\"details\":\"Only the vault's slasher can call this function.\",\"params\":{\"amount\":\"amount of the collateral slashed\",\"captureTimestamp\":\"time point when the stake was captured\",\"data\":\"some additional data\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"setHook(address)\":{\"details\":\"Only a HOOK_SET_ROLE holder can call this function. The hook can have arbitrary logic under certain functions, however, it doesn't affect the stake guarantees.\",\"params\":{\"hook\":\"address of the hook\"}},\"setMaxNetworkLimit(uint96,uint256)\":{\"details\":\"Only a network can call this function.\",\"params\":{\"amount\":\"new maximum subnetwork's limit\"}},\"stake(bytes32,address)\":{\"details\":\"Warning: this function is not safe to use for stake capturing, as it can change by the end of the block.\",\"params\":{\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"_0\":\"slashable stake until the end of the next epoch\"}},\"stakeAt(bytes32,address,uint48,bytes)\":{\"details\":\"Warning: it is not safe to use timestamp >= current one for the stake capturing, as it can change later.\",\"params\":{\"hints\":\"hints for the checkpoints' indexes\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\",\"timestamp\":\"time point to capture the stake at\"},\"returns\":{\"_0\":\"slashable stake at the given timestamp until the end of the consequent epoch\"}},\"staticDelegateCall(address,bytes)\":{\"details\":\"It allows to use this contract's storage on-chain.\",\"params\":{\"data\":\"data to make a delegatecall with\",\"target\":\"address of the contract to make a delegatecall to\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"stateVariables\":{\"OPERATOR_REGISTRY\":{\"return\":\"address of the operator registry\",\"returns\":{\"_0\":\"address of the operator registry\"}},\"network\":{\"return\":\"address of the network\",\"returns\":{\"_0\":\"address of the network\"}},\"operator\":{\"return\":\"address of the operator\",\"returns\":{\"_0\":\"address of the operator\"}}},\"version\":1},\"userdoc\":{\"events\":{\"OnSlash(bytes32,address,uint256,uint48)\":{\"notice\":\"Emitted when a slash happens.\"},\"SetHook(address)\":{\"notice\":\"Emitted when a hook is set.\"},\"SetMaxNetworkLimit(bytes32,uint256)\":{\"notice\":\"Emitted when a subnetwork's maximum limit is set.\"}},\"kind\":\"user\",\"methods\":{\"FACTORY()\":{\"notice\":\"Get the factory's address.\"},\"HOOK_GAS_LIMIT()\":{\"notice\":\"Get a gas limit for the hook.\"},\"HOOK_RESERVE()\":{\"notice\":\"Get a reserve gas between the gas limit check and the hook's execution.\"},\"HOOK_SET_ROLE()\":{\"notice\":\"Get a hook setter's role.\"},\"NETWORK_REGISTRY()\":{\"notice\":\"Get the network registry's address.\"},\"OPERATOR_NETWORK_OPT_IN_SERVICE()\":{\"notice\":\"Get the operator-network opt-in service's address.\"},\"OPERATOR_REGISTRY()\":{\"notice\":\"Get the operator registry's address.\"},\"OPERATOR_VAULT_OPT_IN_SERVICE()\":{\"notice\":\"Get the operator-vault opt-in service's address.\"},\"TYPE()\":{\"notice\":\"Get the entity's type.\"},\"VAULT_FACTORY()\":{\"notice\":\"Get the vault factory's address.\"},\"VERSION()\":{\"notice\":\"Get a version of the delegator (different versions mean different interfaces).\"},\"hook()\":{\"notice\":\"Get the hook's address.\"},\"initialize(bytes)\":{\"notice\":\"Initialize this entity contract by using a given data.\"},\"maxNetworkLimit(bytes32)\":{\"notice\":\"Get a particular subnetwork's maximum limit (meaning the subnetwork is not ready to get more as a stake).\"},\"maxNetworkLimitAt(bytes32,uint48,bytes)\":{\"notice\":\"Get a particular subnetwork's maximum limit at a given timestamp using a hint (meaning the subnetwork is not ready to get more as a stake).\"},\"network()\":{\"notice\":\"Get a network the vault delegates funds to.\"},\"onSlash(bytes32,address,uint256,uint48,bytes)\":{\"notice\":\"Called when a slash happens.\"},\"operator()\":{\"notice\":\"Get an operator managing the vault's funds.\"},\"setHook(address)\":{\"notice\":\"Set a new hook.\"},\"setMaxNetworkLimit(uint96,uint256)\":{\"notice\":\"Set a maximum limit for a subnetwork (how much stake the subnetwork is ready to get). identifier identifier of the subnetwork\"},\"stake(bytes32,address)\":{\"notice\":\"Get a stake that a given subnetwork will be able to slash for a certain operator until the end of the next epoch (if no cross-slashing and no slashings by the subnetwork).\"},\"stakeAt(bytes32,address,uint48,bytes)\":{\"notice\":\"Get a stake that a given subnetwork could be able to slash for a certain operator at a given timestamp until the end of the consequent epoch using hints (if no cross-slashing and no slashings by the subnetwork).\"},\"staticDelegateCall(address,bytes)\":{\"notice\":\"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data).\"},\"vault()\":{\"notice\":\"Get the vault's address.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/delegator/OperatorNetworkSpecificDelegator.sol\":\"OperatorNetworkSpecificDelegator\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf\",\"dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89\",\"dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1\",\"dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44\",\"dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6\",\"dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza\"]},\"src/contracts/common/Entity.sol\":{\"keccak256\":\"0x3d61a932995b8443381f3950542d388223a2c26dd5d29a3274dea3baa7388bd7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7cdf5f03ca72fd263fd32ff59c8d88ddca911ae83896a287d10772c1bbe9b138\",\"dweb:/ipfs/QmbP84r5BWT1Rn9AYTntWSf3xUMTTCohTZJFhbBhDXFoHa\"]},\"src/contracts/common/StaticDelegateCallable.sol\":{\"keccak256\":\"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764\",\"dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD\"]},\"src/contracts/delegator/BaseDelegator.sol\":{\"keccak256\":\"0x7c54d491fdd4415b764a9c8defa068e56d4c0c8c9419be0053a1d377669290e8\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://9238bfbad0f6eeb0dc7727724de14380f1980b395902269703d5e2ef07e52e10\",\"dweb:/ipfs/QmPJn1V4HNXcEghYvogGuSTF24dSQUPosR5qtsXcmNqRm3\"]},\"src/contracts/delegator/OperatorNetworkSpecificDelegator.sol\":{\"keccak256\":\"0x031a10722b9ec49048f0952710401131290adb87e71caf294e864e7ac3b98a16\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://72428febc875134b2f29205e6f294634a1c22a7d5c78d6a9cb2f8196f107c9b5\",\"dweb:/ipfs/QmTPwXR6h5oytckmkLrHdKeEMdphJxceDhYUR4zvQeWAwY\"]},\"src/contracts/libraries/Checkpoints.sol\":{\"keccak256\":\"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609\",\"dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE\"]},\"src/contracts/libraries/Subnetwork.sol\":{\"keccak256\":\"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56\",\"dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32\"]},\"src/interfaces/common/IEntity.sol\":{\"keccak256\":\"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b\",\"dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv\"]},\"src/interfaces/common/IMigratableEntity.sol\":{\"keccak256\":\"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c\",\"dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds\"]},\"src/interfaces/common/IRegistry.sol\":{\"keccak256\":\"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014\",\"dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK\"]},\"src/interfaces/common/IStaticDelegateCallable.sol\":{\"keccak256\":\"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516\",\"dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi\"]},\"src/interfaces/delegator/IBaseDelegator.sol\":{\"keccak256\":\"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2\",\"dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8\"]},\"src/interfaces/delegator/IDelegatorHook.sol\":{\"keccak256\":\"0xc51aa8d7d1f6c8043ee819b7aeb86da0e993912e1442098df897e299f01f9f46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://adddf5cb2ba282aeb576b26efb28640f865a1721cc9b6eee8b3ee0457a2c9780\",\"dweb:/ipfs/QmNYgAmnLRwWZbhTuQhZs9rx4zcme1df5mEepkrniorSoW\"]},\"src/interfaces/delegator/IOperatorNetworkSpecificDelegator.sol\":{\"keccak256\":\"0x74b95e64d29769202d45dd277bb830f623ff3d41ce77b80ce3ee4e318a5c71ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e512b903aae5c1b8a028c6e3f4f6223b5cb5d704503cfa6bd37b5346868f5c20\",\"dweb:/ipfs/QmZim9YExsPWtyxyeui993HTKAEmrg8MUcSkZ77Gp2JcuZ\"]},\"src/interfaces/service/IOptInService.sol\":{\"keccak256\":\"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337\",\"dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24\"]},\"src/interfaces/vault/IVault.sol\":{\"keccak256\":\"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9\",\"dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R\"]},\"src/interfaces/vault/IVaultStorage.sol\":{\"keccak256\":\"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e\",\"dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"operatorRegistry","type":"address"},{"internalType":"address","name":"networkRegistry","type":"address"},{"internalType":"address","name":"vaultFactory","type":"address"},{"internalType":"address","name":"operatorVaultOptInService","type":"address"},{"internalType":"address","name":"operatorNetworkOptInService","type":"address"},{"internalType":"address","name":"delegatorFactory","type":"address"},{"internalType":"uint64","name":"entityType","type":"uint64"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"inputs":[],"type":"error","name":"AlreadySet"},{"inputs":[],"type":"error","name":"CheckpointUnorderedInsertion"},{"inputs":[],"type":"error","name":"InsufficientHookGas"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"InvalidNetwork"},{"inputs":[],"type":"error","name":"NotInitialized"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"NotNetwork"},{"inputs":[],"type":"error","name":"NotOperator"},{"inputs":[],"type":"error","name":"NotSlasher"},{"inputs":[],"type":"error","name":"NotVault"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintDowncast"},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint48","name":"captureTimestamp","type":"uint48","indexed":false}],"type":"event","name":"OnSlash","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[{"internalType":"address","name":"hook","type":"address","indexed":true}],"type":"event","name":"SetHook","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"SetMaxNetworkLimit","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HOOK_GAS_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HOOK_RESERVE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HOOK_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"NETWORK_REGISTRY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_NETWORK_OPT_IN_SERVICE","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_REGISTRY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_VAULT_OPT_IN_SERVICE","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"TYPE","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VAULT_FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"VERSION","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"hook","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"}],"stateMutability":"view","type":"function","name":"maxNetworkLimit","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"maxNetworkLimitAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"network","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint48","name":"captureTimestamp","type":"uint48"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"onSlash"},{"inputs":[],"stateMutability":"view","type":"function","name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"address","name":"hook_","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setHook"},{"inputs":[{"internalType":"uint96","name":"identifier","type":"uint96"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setMaxNetworkLimit"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"stake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hints","type":"bytes"}],"stateMutability":"view","type":"function","name":"stakeAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"staticDelegateCall"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"vault","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"VERSION()":{"details":"Must return 1 for this one.","returns":{"_0":"version of the delegator"}},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"initialize(bytes)":{"params":{"data":"some data to use"}},"maxNetworkLimitAt(bytes32,uint48,bytes)":{"params":{"hint":"hint for checkpoint index","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)","timestamp":"time point to get the maximum subnetwork limit at"},"returns":{"_0":"maximum limit of the subnetwork"}},"onSlash(bytes32,address,uint256,uint48,bytes)":{"details":"Only the vault's slasher can call this function.","params":{"amount":"amount of the collateral slashed","captureTimestamp":"time point when the stake was captured","data":"some additional data","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"}},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"setHook(address)":{"details":"Only a HOOK_SET_ROLE holder can call this function. The hook can have arbitrary logic under certain functions, however, it doesn't affect the stake guarantees.","params":{"hook":"address of the hook"}},"setMaxNetworkLimit(uint96,uint256)":{"details":"Only a network can call this function.","params":{"amount":"new maximum subnetwork's limit"}},"stake(bytes32,address)":{"details":"Warning: this function is not safe to use for stake capturing, as it can change by the end of the block.","params":{"operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"_0":"slashable stake until the end of the next epoch"}},"stakeAt(bytes32,address,uint48,bytes)":{"details":"Warning: it is not safe to use timestamp >= current one for the stake capturing, as it can change later.","params":{"hints":"hints for the checkpoints' indexes","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)","timestamp":"time point to capture the stake at"},"returns":{"_0":"slashable stake at the given timestamp until the end of the consequent epoch"}},"staticDelegateCall(address,bytes)":{"details":"It allows to use this contract's storage on-chain.","params":{"data":"data to make a delegatecall with","target":"address of the contract to make a delegatecall to"}},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."}},"version":1},"userdoc":{"kind":"user","methods":{"FACTORY()":{"notice":"Get the factory's address."},"HOOK_GAS_LIMIT()":{"notice":"Get a gas limit for the hook."},"HOOK_RESERVE()":{"notice":"Get a reserve gas between the gas limit check and the hook's execution."},"HOOK_SET_ROLE()":{"notice":"Get a hook setter's role."},"NETWORK_REGISTRY()":{"notice":"Get the network registry's address."},"OPERATOR_NETWORK_OPT_IN_SERVICE()":{"notice":"Get the operator-network opt-in service's address."},"OPERATOR_REGISTRY()":{"notice":"Get the operator registry's address."},"OPERATOR_VAULT_OPT_IN_SERVICE()":{"notice":"Get the operator-vault opt-in service's address."},"TYPE()":{"notice":"Get the entity's type."},"VAULT_FACTORY()":{"notice":"Get the vault factory's address."},"VERSION()":{"notice":"Get a version of the delegator (different versions mean different interfaces)."},"hook()":{"notice":"Get the hook's address."},"initialize(bytes)":{"notice":"Initialize this entity contract by using a given data."},"maxNetworkLimit(bytes32)":{"notice":"Get a particular subnetwork's maximum limit (meaning the subnetwork is not ready to get more as a stake)."},"maxNetworkLimitAt(bytes32,uint48,bytes)":{"notice":"Get a particular subnetwork's maximum limit at a given timestamp using a hint (meaning the subnetwork is not ready to get more as a stake)."},"network()":{"notice":"Get a network the vault delegates funds to."},"onSlash(bytes32,address,uint256,uint48,bytes)":{"notice":"Called when a slash happens."},"operator()":{"notice":"Get an operator managing the vault's funds."},"setHook(address)":{"notice":"Set a new hook."},"setMaxNetworkLimit(uint96,uint256)":{"notice":"Set a maximum limit for a subnetwork (how much stake the subnetwork is ready to get). identifier identifier of the subnetwork"},"stake(bytes32,address)":{"notice":"Get a stake that a given subnetwork will be able to slash for a certain operator until the end of the next epoch (if no cross-slashing and no slashings by the subnetwork)."},"stakeAt(bytes32,address,uint48,bytes)":{"notice":"Get a stake that a given subnetwork could be able to slash for a certain operator at a given timestamp until the end of the consequent epoch using hints (if no cross-slashing and no slashings by the subnetwork)."},"staticDelegateCall(address,bytes)":{"notice":"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data)."},"vault()":{"notice":"Get the vault's address."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/delegator/OperatorNetworkSpecificDelegator.sol":"OperatorNetworkSpecificDelegator"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol":{"keccak256":"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866","urls":["bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf","dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab","urls":["bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89","dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606","urls":["bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1","dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol":{"keccak256":"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f","urls":["bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44","dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc","urls":["bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6","dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza"],"license":"MIT"},"src/contracts/common/Entity.sol":{"keccak256":"0x3d61a932995b8443381f3950542d388223a2c26dd5d29a3274dea3baa7388bd7","urls":["bzz-raw://7cdf5f03ca72fd263fd32ff59c8d88ddca911ae83896a287d10772c1bbe9b138","dweb:/ipfs/QmbP84r5BWT1Rn9AYTntWSf3xUMTTCohTZJFhbBhDXFoHa"],"license":"BUSL-1.1"},"src/contracts/common/StaticDelegateCallable.sol":{"keccak256":"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90","urls":["bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764","dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD"],"license":"BUSL-1.1"},"src/contracts/delegator/BaseDelegator.sol":{"keccak256":"0x7c54d491fdd4415b764a9c8defa068e56d4c0c8c9419be0053a1d377669290e8","urls":["bzz-raw://9238bfbad0f6eeb0dc7727724de14380f1980b395902269703d5e2ef07e52e10","dweb:/ipfs/QmPJn1V4HNXcEghYvogGuSTF24dSQUPosR5qtsXcmNqRm3"],"license":"BUSL-1.1"},"src/contracts/delegator/OperatorNetworkSpecificDelegator.sol":{"keccak256":"0x031a10722b9ec49048f0952710401131290adb87e71caf294e864e7ac3b98a16","urls":["bzz-raw://72428febc875134b2f29205e6f294634a1c22a7d5c78d6a9cb2f8196f107c9b5","dweb:/ipfs/QmTPwXR6h5oytckmkLrHdKeEMdphJxceDhYUR4zvQeWAwY"],"license":"BUSL-1.1"},"src/contracts/libraries/Checkpoints.sol":{"keccak256":"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c","urls":["bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609","dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE"],"license":"MIT"},"src/contracts/libraries/Subnetwork.sol":{"keccak256":"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe","urls":["bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56","dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32"],"license":"MIT"},"src/interfaces/common/IEntity.sol":{"keccak256":"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21","urls":["bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b","dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv"],"license":"MIT"},"src/interfaces/common/IMigratableEntity.sol":{"keccak256":"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4","urls":["bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c","dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds"],"license":"MIT"},"src/interfaces/common/IRegistry.sol":{"keccak256":"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb","urls":["bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014","dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK"],"license":"MIT"},"src/interfaces/common/IStaticDelegateCallable.sol":{"keccak256":"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5","urls":["bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516","dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi"],"license":"MIT"},"src/interfaces/delegator/IBaseDelegator.sol":{"keccak256":"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee","urls":["bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2","dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8"],"license":"MIT"},"src/interfaces/delegator/IDelegatorHook.sol":{"keccak256":"0xc51aa8d7d1f6c8043ee819b7aeb86da0e993912e1442098df897e299f01f9f46","urls":["bzz-raw://adddf5cb2ba282aeb576b26efb28640f865a1721cc9b6eee8b3ee0457a2c9780","dweb:/ipfs/QmNYgAmnLRwWZbhTuQhZs9rx4zcme1df5mEepkrniorSoW"],"license":"MIT"},"src/interfaces/delegator/IOperatorNetworkSpecificDelegator.sol":{"keccak256":"0x74b95e64d29769202d45dd277bb830f623ff3d41ce77b80ce3ee4e318a5c71ec","urls":["bzz-raw://e512b903aae5c1b8a028c6e3f4f6223b5cb5d704503cfa6bd37b5346868f5c20","dweb:/ipfs/QmZim9YExsPWtyxyeui993HTKAEmrg8MUcSkZ77Gp2JcuZ"],"license":"MIT"},"src/interfaces/service/IOptInService.sol":{"keccak256":"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a","urls":["bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337","dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24"],"license":"MIT"},"src/interfaces/vault/IVault.sol":{"keccak256":"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235","urls":["bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9","dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R"],"license":"MIT"},"src/interfaces/vault/IVaultStorage.sol":{"keccak256":"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22","urls":["bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e","dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6"],"license":"MIT"}},"version":1},"id":86} \ No newline at end of file diff --git a/out/OperatorRegistry.sol/OperatorRegistry.json b/out/OperatorRegistry.sol/OperatorRegistry.json index fb64bec1..8b8bf453 100644 --- a/out/OperatorRegistry.sol/OperatorRegistry.json +++ b/out/OperatorRegistry.sol/OperatorRegistry.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"entity","inputs":[{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"isEntity","inputs":[{"name":"entity_","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"registerOperator","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"totalEntities","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"AddEntity","inputs":[{"name":"entity","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"EntityNotExist","inputs":[]},{"type":"error","name":"OperatorAlreadyRegistered","inputs":[]}],"bytecode":{"object":"0x60808060405234601557610241908161001a8239f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c806314887c581461013d5780632acde098146100d15780635cd8b15e146100b55763b42ba2a214610045575f80fd5b346100b15760203660031901126100b1576004355f5481101561009d575f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56301546040516001600160a01b039091168152602090f35b634e487b7160e01b5f52603260045260245ffd5b5f80fd5b346100b1575f3660031901126100b15760205f54604051908152f35b346100b1575f3660031901126100b1576100f6335f52600160205260405f2054151590565b61012b5761010333610184565b50337fb919910dcefbf753bfd926ab3b1d3f85d877190c3d01ba1bd585047b99b99f0b5f80a2005b6040516342ee68b560e01b8152600490fd5b346100b15760203660031901126100b1576004356001600160a01b038116908190036100b15761017a6020915f52600160205260405f2054151590565b6040519015158152f35b805f52600160205260405f2054155f14610206575f54680100000000000000008110156101f25760018101805f5581101561009d5781907f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56301555f54905f52600160205260405f2055600190565b634e487b7160e01b5f52604160045260245ffd5b505f9056fea264697066735822122077e93113fb982ae02c0a41b82d2748dbea47776eb9ecfa1fc44d11a0333ed06864736f6c63430008190033","sourceMap":"183:289:65:-:0;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806314887c581461013d5780632acde098146100d15780635cd8b15e146100b55763b42ba2a214610045575f80fd5b346100b15760203660031901126100b1576004355f5481101561009d575f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56301546040516001600160a01b039091168152602090f35b634e487b7160e01b5f52603260045260245ffd5b5f80fd5b346100b1575f3660031901126100b15760205f54604051908152f35b346100b1575f3660031901126100b1576100f6335f52600160205260405f2054151590565b61012b5761010333610184565b50337fb919910dcefbf753bfd926ab3b1d3f85d877190c3d01ba1bd585047b99b99f0b5f80a2005b6040516342ee68b560e01b8152600490fd5b346100b15760203660031901126100b1576004356001600160a01b038116908190036100b15761017a6020915f52600160205260405f2054151590565b6040519015158152f35b805f52600160205260405f2054155f14610206575f54680100000000000000008110156101f25760018101805f5581101561009d5781907f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56301555f54905f52600160205260405f2055600190565b634e487b7160e01b5f52604160045260245ffd5b505f9056fea264697066735822122077e93113fb982ae02c0a41b82d2748dbea47776eb9ecfa1fc44d11a0333ed06864736f6c63430008190033","sourceMap":"183:289:65:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;183:289:65;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;183:289:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;183:289:65;;;;;;;;;;;;;;;;;;;-1:-1:-1;;183:289:65;;;;8974:55:61;359:10:65;183:289;;4360:14:61;183:289:65;;;;;;4360:26:61;;4264:129;;8974:55;346:85:65;;8409:50:61;359:10:65;8409:50:61;:::i;:::-;;359:10:65;1077:18:74;183:289:65;1077:18:74;;183:289:65;346:85;183:289;;-1:-1:-1;;;393:27:65;;183:289;;393:27;183:289;;;;;;-1:-1:-1;;183:289:65;;;;;;-1:-1:-1;;;;;183:289:65;;;;;;;;8974:55:61;183:289:65;8974:55:61;183:289:65;;4360:14:61;183:289:65;;;;;;4360:26:61;;4264:129;;8974:55;183:289:65;;;;;;;;2241:406:61;183:289:65;;;4360:14:61;183:289:65;;;;;;4360:26:61;2320:321;183:289:65;;;;;;;;;;;4360:14:61;183:289:65;;;;;;;;;;;;;;;;;;;;4360:14:61;183:289:65;;;;;;4360:14:61;2576:11;:::o;183:289:65:-;;;;;;;;;;;;2320:321:61;2618:12;183:289:65;2618:12:61;:::o","linkReferences":{}},"methodIdentifiers":{"entity(uint256)":"b42ba2a2","isEntity(address)":"14887c58","registerOperator()":"2acde098","totalEntities()":"5cd8b15e"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"EntityNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyRegistered\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"entity\",\"type\":\"address\"}],\"name\":\"AddEntity\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"entity\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"entity_\",\"type\":\"address\"}],\"name\":\"isEntity\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalEntities\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"AddEntity(address)\":{\"params\":{\"entity\":\"address of the added entity\"}}},\"kind\":\"dev\",\"methods\":{\"entity(uint256)\":{\"params\":{\"index\":\"index of the entity to get\"},\"returns\":{\"_0\":\"address of the entity\"}},\"isEntity(address)\":{\"params\":{\"account\":\"address to check\"},\"returns\":{\"_0\":\"if the given address is an entity\"}},\"totalEntities()\":{\"returns\":{\"_0\":\"total number of entities added\"}}},\"version\":1},\"userdoc\":{\"events\":{\"AddEntity(address)\":{\"notice\":\"Emitted when an entity is added.\"}},\"kind\":\"user\",\"methods\":{\"entity(uint256)\":{\"notice\":\"Get an entity given its index.\"},\"isEntity(address)\":{\"notice\":\"Get if a given address is an entity.\"},\"registerOperator()\":{\"notice\":\"Register the caller as an operator.\"},\"totalEntities()\":{\"notice\":\"Get a total number of entities.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/OperatorRegistry.sol\":\"OperatorRegistry\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1\",\"dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA\"]},\"src/contracts/OperatorRegistry.sol\":{\"keccak256\":\"0xa2d811a9525b3dcbef2dd87ba0ece6fbc30f8d404a8ec9ca01a42d16414dbed4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6c20a1f1a47c33c7bd1ebc53163de727622ee20ac0a883fee81676be5d8fc10d\",\"dweb:/ipfs/QmYDfR13eeiKws7UZ898ur86xYvq5RQb9p8RF5q65yyQsT\"]},\"src/contracts/common/Registry.sol\":{\"keccak256\":\"0x4a4004836d920953a8ec6e223de9a330f43acf7a5b93c6b8b3e4a95e0f129889\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://e8bdda207f3852c683a2b481602239a914f7e26bcd042ade618e263a43b67652\",\"dweb:/ipfs/Qmb8GZykJWxZcfwNp3SqhFizDFydFuV6LXgemV3vnWyLyu\"]},\"src/interfaces/IOperatorRegistry.sol\":{\"keccak256\":\"0x6a606147504ec73b241a390739a3554add67fbd1b7e1dd2e2011acbf68d077af\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d46135057ecf37739be6965bf8a5439f911b463f209f66b53b97823c7e7299fe\",\"dweb:/ipfs/QmQSTrGuR8opR8n2anAnQFu7KQysdFzDjR44xCC7dbqs8v\"]},\"src/interfaces/common/IRegistry.sol\":{\"keccak256\":\"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014\",\"dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"EntityNotExist"},{"inputs":[],"type":"error","name":"OperatorAlreadyRegistered"},{"inputs":[{"internalType":"address","name":"entity","type":"address","indexed":true}],"type":"event","name":"AddEntity","anonymous":false},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function","name":"entity","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"entity_","type":"address"}],"stateMutability":"view","type":"function","name":"isEntity","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"registerOperator"},{"inputs":[],"stateMutability":"view","type":"function","name":"totalEntities","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{"entity(uint256)":{"params":{"index":"index of the entity to get"},"returns":{"_0":"address of the entity"}},"isEntity(address)":{"params":{"account":"address to check"},"returns":{"_0":"if the given address is an entity"}},"totalEntities()":{"returns":{"_0":"total number of entities added"}}},"version":1},"userdoc":{"kind":"user","methods":{"entity(uint256)":{"notice":"Get an entity given its index."},"isEntity(address)":{"notice":"Get if a given address is an entity."},"registerOperator()":{"notice":"Register the caller as an operator."},"totalEntities()":{"notice":"Get a total number of entities."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/OperatorRegistry.sol":"OperatorRegistry"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol":{"keccak256":"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa","urls":["bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1","dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA"],"license":"MIT"},"src/contracts/OperatorRegistry.sol":{"keccak256":"0xa2d811a9525b3dcbef2dd87ba0ece6fbc30f8d404a8ec9ca01a42d16414dbed4","urls":["bzz-raw://6c20a1f1a47c33c7bd1ebc53163de727622ee20ac0a883fee81676be5d8fc10d","dweb:/ipfs/QmYDfR13eeiKws7UZ898ur86xYvq5RQb9p8RF5q65yyQsT"],"license":"BUSL-1.1"},"src/contracts/common/Registry.sol":{"keccak256":"0x4a4004836d920953a8ec6e223de9a330f43acf7a5b93c6b8b3e4a95e0f129889","urls":["bzz-raw://e8bdda207f3852c683a2b481602239a914f7e26bcd042ade618e263a43b67652","dweb:/ipfs/Qmb8GZykJWxZcfwNp3SqhFizDFydFuV6LXgemV3vnWyLyu"],"license":"BUSL-1.1"},"src/interfaces/IOperatorRegistry.sol":{"keccak256":"0x6a606147504ec73b241a390739a3554add67fbd1b7e1dd2e2011acbf68d077af","urls":["bzz-raw://d46135057ecf37739be6965bf8a5439f911b463f209f66b53b97823c7e7299fe","dweb:/ipfs/QmQSTrGuR8opR8n2anAnQFu7KQysdFzDjR44xCC7dbqs8v"],"license":"MIT"},"src/interfaces/common/IRegistry.sol":{"keccak256":"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb","urls":["bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014","dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK"],"license":"MIT"}},"version":1},"id":65} \ No newline at end of file +{"abi":[{"type":"function","name":"entity","inputs":[{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"isEntity","inputs":[{"name":"entity_","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"registerOperator","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"totalEntities","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"AddEntity","inputs":[{"name":"entity","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"EntityNotExist","inputs":[]},{"type":"error","name":"OperatorAlreadyRegistered","inputs":[]}],"bytecode":{"object":"0x60808060405234601557610241908161001a8239f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c806314887c581461013d5780632acde098146100d15780635cd8b15e146100b55763b42ba2a214610045575f80fd5b346100b15760203660031901126100b1576004355f5481101561009d575f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56301546040516001600160a01b039091168152602090f35b634e487b7160e01b5f52603260045260245ffd5b5f80fd5b346100b1575f3660031901126100b15760205f54604051908152f35b346100b1575f3660031901126100b1576100f6335f52600160205260405f2054151590565b61012b5761010333610184565b50337fb919910dcefbf753bfd926ab3b1d3f85d877190c3d01ba1bd585047b99b99f0b5f80a2005b6040516342ee68b560e01b8152600490fd5b346100b15760203660031901126100b1576004356001600160a01b038116908190036100b15761017a6020915f52600160205260405f2054151590565b6040519015158152f35b805f52600160205260405f2054155f14610206575f54680100000000000000008110156101f25760018101805f5581101561009d5781907f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56301555f54905f52600160205260405f2055600190565b634e487b7160e01b5f52604160045260245ffd5b505f9056fea264697066735822122089f772e1af6fb9c7f336f462eed805c025eb7c664edb44f39c63c2fb1943a4cf64736f6c63430008190033","sourceMap":"183:289:72:-:0;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806314887c581461013d5780632acde098146100d15780635cd8b15e146100b55763b42ba2a214610045575f80fd5b346100b15760203660031901126100b1576004355f5481101561009d575f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56301546040516001600160a01b039091168152602090f35b634e487b7160e01b5f52603260045260245ffd5b5f80fd5b346100b1575f3660031901126100b15760205f54604051908152f35b346100b1575f3660031901126100b1576100f6335f52600160205260405f2054151590565b61012b5761010333610184565b50337fb919910dcefbf753bfd926ab3b1d3f85d877190c3d01ba1bd585047b99b99f0b5f80a2005b6040516342ee68b560e01b8152600490fd5b346100b15760203660031901126100b1576004356001600160a01b038116908190036100b15761017a6020915f52600160205260405f2054151590565b6040519015158152f35b805f52600160205260405f2054155f14610206575f54680100000000000000008110156101f25760018101805f5581101561009d5781907f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56301555f54905f52600160205260405f2055600190565b634e487b7160e01b5f52604160045260245ffd5b505f9056fea264697066735822122089f772e1af6fb9c7f336f462eed805c025eb7c664edb44f39c63c2fb1943a4cf64736f6c63430008190033","sourceMap":"183:289:72:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;183:289:72;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;183:289:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;183:289:72;;;;;;;;;;;;;;;;;;;-1:-1:-1;;183:289:72;;;;8947:55:67;359:10:72;183:289;;4360:14:67;183:289:72;;;;;;4360:26:67;;4264:129;;8947:55;346:85:72;;8382:50:67;359:10:72;8382:50:67;:::i;:::-;;359:10:72;1077:18:81;183:289:72;1077:18:81;;183:289:72;346:85;183:289;;-1:-1:-1;;;393:27:72;;183:289;;393:27;183:289;;;;;;-1:-1:-1;;183:289:72;;;;;;-1:-1:-1;;;;;183:289:72;;;;;;;;8947:55:67;183:289:72;8947:55:67;183:289:72;;4360:14:67;183:289:72;;;;;;4360:26:67;;4264:129;;8947:55;183:289:72;;;;;;;;2241:406:67;183:289:72;;;4360:14:67;183:289:72;;;;;;4360:26:67;2320:321;183:289:72;;;;;;;;;;;4360:14:67;183:289:72;;;;;;;;;;;;;;;;;;;;4360:14:67;183:289:72;;;;;;4360:14:67;2576:11;:::o;183:289:72:-;;;;;;;;;;;;2320:321:67;2618:12;183:289:72;2618:12:67;:::o","linkReferences":{}},"methodIdentifiers":{"entity(uint256)":"b42ba2a2","isEntity(address)":"14887c58","registerOperator()":"2acde098","totalEntities()":"5cd8b15e"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"EntityNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyRegistered\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"entity\",\"type\":\"address\"}],\"name\":\"AddEntity\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"entity\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"entity_\",\"type\":\"address\"}],\"name\":\"isEntity\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalEntities\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"AddEntity(address)\":{\"params\":{\"entity\":\"address of the added entity\"}}},\"kind\":\"dev\",\"methods\":{\"entity(uint256)\":{\"params\":{\"index\":\"index of the entity to get\"},\"returns\":{\"_0\":\"address of the entity\"}},\"isEntity(address)\":{\"params\":{\"account\":\"address to check\"},\"returns\":{\"_0\":\"if the given address is an entity\"}},\"totalEntities()\":{\"returns\":{\"_0\":\"total number of entities added\"}}},\"version\":1},\"userdoc\":{\"events\":{\"AddEntity(address)\":{\"notice\":\"Emitted when an entity is added.\"}},\"kind\":\"user\",\"methods\":{\"entity(uint256)\":{\"notice\":\"Get an entity given its index.\"},\"isEntity(address)\":{\"notice\":\"Get if a given address is an entity.\"},\"registerOperator()\":{\"notice\":\"Register the caller as an operator.\"},\"totalEntities()\":{\"notice\":\"Get a total number of entities.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/OperatorRegistry.sol\":\"OperatorRegistry\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f\",\"dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz\"]},\"src/contracts/OperatorRegistry.sol\":{\"keccak256\":\"0xa2d811a9525b3dcbef2dd87ba0ece6fbc30f8d404a8ec9ca01a42d16414dbed4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6c20a1f1a47c33c7bd1ebc53163de727622ee20ac0a883fee81676be5d8fc10d\",\"dweb:/ipfs/QmYDfR13eeiKws7UZ898ur86xYvq5RQb9p8RF5q65yyQsT\"]},\"src/contracts/common/Registry.sol\":{\"keccak256\":\"0x4a4004836d920953a8ec6e223de9a330f43acf7a5b93c6b8b3e4a95e0f129889\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://e8bdda207f3852c683a2b481602239a914f7e26bcd042ade618e263a43b67652\",\"dweb:/ipfs/Qmb8GZykJWxZcfwNp3SqhFizDFydFuV6LXgemV3vnWyLyu\"]},\"src/interfaces/IOperatorRegistry.sol\":{\"keccak256\":\"0x6a606147504ec73b241a390739a3554add67fbd1b7e1dd2e2011acbf68d077af\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d46135057ecf37739be6965bf8a5439f911b463f209f66b53b97823c7e7299fe\",\"dweb:/ipfs/QmQSTrGuR8opR8n2anAnQFu7KQysdFzDjR44xCC7dbqs8v\"]},\"src/interfaces/common/IRegistry.sol\":{\"keccak256\":\"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014\",\"dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"EntityNotExist"},{"inputs":[],"type":"error","name":"OperatorAlreadyRegistered"},{"inputs":[{"internalType":"address","name":"entity","type":"address","indexed":true}],"type":"event","name":"AddEntity","anonymous":false},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function","name":"entity","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"entity_","type":"address"}],"stateMutability":"view","type":"function","name":"isEntity","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"registerOperator"},{"inputs":[],"stateMutability":"view","type":"function","name":"totalEntities","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{"entity(uint256)":{"params":{"index":"index of the entity to get"},"returns":{"_0":"address of the entity"}},"isEntity(address)":{"params":{"account":"address to check"},"returns":{"_0":"if the given address is an entity"}},"totalEntities()":{"returns":{"_0":"total number of entities added"}}},"version":1},"userdoc":{"kind":"user","methods":{"entity(uint256)":{"notice":"Get an entity given its index."},"isEntity(address)":{"notice":"Get if a given address is an entity."},"registerOperator()":{"notice":"Register the caller as an operator."},"totalEntities()":{"notice":"Get a total number of entities."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/OperatorRegistry.sol":"OperatorRegistry"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol":{"keccak256":"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212","urls":["bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f","dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz"],"license":"MIT"},"src/contracts/OperatorRegistry.sol":{"keccak256":"0xa2d811a9525b3dcbef2dd87ba0ece6fbc30f8d404a8ec9ca01a42d16414dbed4","urls":["bzz-raw://6c20a1f1a47c33c7bd1ebc53163de727622ee20ac0a883fee81676be5d8fc10d","dweb:/ipfs/QmYDfR13eeiKws7UZ898ur86xYvq5RQb9p8RF5q65yyQsT"],"license":"BUSL-1.1"},"src/contracts/common/Registry.sol":{"keccak256":"0x4a4004836d920953a8ec6e223de9a330f43acf7a5b93c6b8b3e4a95e0f129889","urls":["bzz-raw://e8bdda207f3852c683a2b481602239a914f7e26bcd042ade618e263a43b67652","dweb:/ipfs/Qmb8GZykJWxZcfwNp3SqhFizDFydFuV6LXgemV3vnWyLyu"],"license":"BUSL-1.1"},"src/interfaces/IOperatorRegistry.sol":{"keccak256":"0x6a606147504ec73b241a390739a3554add67fbd1b7e1dd2e2011acbf68d077af","urls":["bzz-raw://d46135057ecf37739be6965bf8a5439f911b463f209f66b53b97823c7e7299fe","dweb:/ipfs/QmQSTrGuR8opR8n2anAnQFu7KQysdFzDjR44xCC7dbqs8v"],"license":"MIT"},"src/interfaces/common/IRegistry.sol":{"keccak256":"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb","urls":["bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014","dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK"],"license":"MIT"}},"version":1},"id":72} \ No newline at end of file diff --git a/out/OperatorSpecificDelegator.sol/OperatorSpecificDelegator.json b/out/OperatorSpecificDelegator.sol/OperatorSpecificDelegator.json index d5cf1665..1df4642e 100644 --- a/out/OperatorSpecificDelegator.sol/OperatorSpecificDelegator.json +++ b/out/OperatorSpecificDelegator.sol/OperatorSpecificDelegator.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"operatorRegistry","type":"address","internalType":"address"},{"name":"networkRegistry","type":"address","internalType":"address"},{"name":"vaultFactory","type":"address","internalType":"address"},{"name":"operatorVaultOptInService","type":"address","internalType":"address"},{"name":"operatorNetworkOptInService","type":"address","internalType":"address"},{"name":"delegatorFactory","type":"address","internalType":"address"},{"name":"entityType","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"HOOK_GAS_LIMIT","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"HOOK_RESERVE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"HOOK_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"NETWORK_LIMIT_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"NETWORK_REGISTRY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_NETWORK_OPT_IN_SERVICE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_REGISTRY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_VAULT_OPT_IN_SERVICE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"TYPE","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"VAULT_FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"VERSION","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"pure"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"hook","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"maxNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"networkLimit","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"networkLimitAt","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"onSlash","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","internalType":"uint48"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"operator","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setHook","inputs":[{"name":"hook_","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMaxNetworkLimit","inputs":[{"name":"identifier","type":"uint96","internalType":"uint96"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stake","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"stakeAt","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hints","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"staticDelegateCall","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"vault","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OnSlash","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","indexed":false,"internalType":"uint48"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SetHook","inputs":[{"name":"hook","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SetMaxNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SetNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"AlreadySet","inputs":[]},{"type":"error","name":"CheckpointUnorderedInsertion","inputs":[]},{"type":"error","name":"DuplicateRoleHolder","inputs":[]},{"type":"error","name":"ExceedsMaxNetworkLimit","inputs":[]},{"type":"error","name":"InsufficientHookGas","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"MissingRoleHolders","inputs":[]},{"type":"error","name":"NotInitialized","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"NotNetwork","inputs":[]},{"type":"error","name":"NotOperator","inputs":[]},{"type":"error","name":"NotSlasher","inputs":[]},{"type":"error","name":"NotVault","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ZeroAddressRoleHolder","inputs":[]}],"bytecode":{"object":"0x610160346101c2576001600160401b0390601f612a7a38819003918201601f191683019190848311848410176101c6578160e092859260409586528339810103126101c25761004d826101da565b9061005a602084016101da565b6100658285016101da565b90610072606086016101da565b9561007f608087016101da565b9560c061008e60a083016101da565b9101519180831683036101c2577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff82891c166101b157808083160361016d575b50505060805260a05260c05260e052610100938452610120928352610140918252519161288b93846101ef8539608051846105ea015260a05184610d14015260c0518481816104690152610d4d015260e05184818161035f0152611b540152518381816103a30152818161133601526114850152518281816103e70152818161129d0152611503015251818181610b9401526122440152f35b6001600160401b0319909116811790915585519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80806100d4565b875163f92ee8a960e01b8152600490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101c25756fe60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a714610224578063021453481461021f578063103f29071461021a578063128e5d82146102155780631a80e5001461021057806323f752d51461020b578063248a9ca3146102065780632dd31000146102015780632f2ff15d146101fc57806336568abe146101f75780633dfd3873146101f25780633eb22c0f146101ed578063439fab91146101e8578063557cab44146101e3578063570ca735146101de5780635d32a1c9146101d95780636679191e146101d45780637d24bb27146101cf5780637f5a7c7b146101ca57806383ce0322146101c557806391d14854146101c05780639f86fd85146101bb578063a217fddf146101b6578063bb24fe8a146101b1578063c0cd7c3e146101ac578063d15b740e146101a7578063d547741f146101a2578063e02f69371461019d578063e49561ee14610198578063fbfa77cf14610193578063fd4d447c1461018e578063ff54740f146101895763ffa1ad7414610184575f80fd5b6110aa565b61108d565b611063565b61103c565b610e51565b610df2565b610da6565b610d7c565b610d38565b610cf5565b610cdb565b610c21565b610bc3565b610b7f565b610b57565b610b1e565b610ae4565b610a89565b61096c565b610950565b610818565b6107ba565b6106c1565b610676565b61062a565b6105d5565b61059c565b610416565b6103d2565b61038e565b61034a565b61027e565b3461027a57602036600319011261027a5760043563ffffffff60e01b811680910361027a57602090637965db0b60e01b8114908115610269575b506040519015158152f35b6301ffc9a760e01b1490505f61025e565b5f80fd5b3461027a5760408060031936011261027a5760043590602435906102a0611578565b825f526002602052805f2054821161033a57825f526003602052816102c6825f20611a9c565b1461032a5781610325916103157e899d104fc3d8820bd96540612bcc5c448c8837b13b9f7faa43ad0728f0c14f94610306875f52600360205260405f2090565b61030f42611fc3565b90611677565b5050519081529081906020820190565b0390a2005b5163a741a04560e01b8152600490fd5b51631eefc06360e31b8152600490fd5b3461027a575f36600319011261027a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461027a575f36600319011261027a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461027a575f36600319011261027a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461027a57604036600319011261027a576004356001600160601b038116810361027a5760243590610446611739565b6040516302910f8b60e31b81523360048201526020816024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa908115610597575f91610568575b5015610556576001600160601b03166bffffffffffffffffffffffff193360601b161790806104d0835f52600260205260405f2090565b541461054457610529817fc67e7929681aa1bccd63f52b3799bf5805f3009f197db6fdf584b14f7fbf608c9261050e855f52600260205260405f2090565b556105198185611768565b6040519081529081906020820190565b0390a261054260015f8051602061281683398151915255565b005b60405163a741a04560e01b8152600490fd5b6040516323d53b9760e21b8152600490fd5b61058a915060203d602011610590575b61058281836109f8565b8101906110c5565b5f610499565b503d610578565b6110dd565b3461027a57602036600319011261027a576004355f525f805160206127f68339815191526020526020600160405f200154604051908152f35b3461027a575f36600319011261027a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6001600160a01b0381160361027a57565b3461027a57604036600319011261027a5761054260243560043561064d82610619565b805f525f805160206127f6833981519152602052610671600160405f2001546115d4565b6119d4565b3461027a57604036600319011261027a5760243561069381610619565b336001600160a01b038216036106af5761054290600435611a0a565b60405163334bd91960e11b8152600490fd5b3461027a57602036600319011261027a576004356106de81610619565b6106e6611739565b335f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c60205260409020547fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c9060ff161561079c57506001546001600160a01b039182169181168214610544576001600160a01b03191681176001557f5bbb1d3ebb6a3ad2a0f17ff35e579a83af60604d1d3c2a4c83c62adecadf666d5f80a260015f8051602061281683398151915255005b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b3461027a57602036600319011261027a576004355f52600360205260206107e360405f20611a9c565b604051908152f35b9181601f8401121561027a578235916001600160401b03831161027a576020838186019501011161027a57565b3461027a57602036600319011261027a576001600160401b0360043581811161027a576108499036906004016107eb565b5f80516020612836833981519152549260ff8460401c1615931680159081610948575b600114908161093e575b159081610935575b50610923575f80516020612836833981519152805467ffffffffffffffff191660011790556108b191836108ff57611b1f565b6108b757005b5f80516020612836833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f80516020612836833981519152805460ff60401b1916600160401b179055611b1f565b60405163f92ee8a960e01b8152600490fd5b9050155f61087e565b303b159150610876565b84915061086c565b3461027a575f36600319011261027a576020604051614e208152f35b3461027a575f36600319011261027a576004546040516001600160a01b039091168152602090f35b6064359065ffffffffffff8216820361027a57565b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b038211176109d857604052565b6109a9565b606081019081106001600160401b038211176109d857604052565b90601f801991011681019081106001600160401b038211176109d857604052565b60405190610a26826109bd565b565b6001600160401b0381116109d857601f01601f191660200190565b81601f8201121561027a57803590610a5a82610a28565b92610a6860405194856109f8565b8284526020838301011161027a57815f926020809301838601378301015290565b3461027a57606036600319011261027a5760243565ffffffffffff8116810361027a576044356001600160401b03811161027a57602091610ad16107e3923690600401610a43565b906004355f526003845260405f20611c8e565b3461027a575f36600319011261027a5760206040517fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c8152f35b3461027a575f36600319011261027a5760206040517e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf8152f35b3461027a575f36600319011261027a576001546040516001600160a01b039091168152602090f35b3461027a575f36600319011261027a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461027a57604036600319011261027a57602060ff610c15602435610be781610619565b6004355f525f805160206127f6833981519152845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b3461027a5760408060031936011261027a57600435610c3f81610619565b602435906001600160401b03821161027a575f8091610c65610cc99436906004016107eb565b908187519283928337810184815203915af43d15610cd157610cbb3d610c8a81610a28565b90610c97865192836109f8565b81523d5f602083013e5b845194859315156020850152808401526060830190611101565b03601f1981018352826109f8565b805190602001fd5b610cbb6060610ca1565b3461027a575f36600319011261027a5760206040515f8152f35b3461027a575f36600319011261027a5760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461027a575f36600319011261027a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461027a57602036600319011261027a576004355f526002602052602060405f2054604051908152f35b3461027a57604036600319011261027a57610542602435600435610dc982610619565b805f525f805160206127f6833981519152602052610ded600160405f2001546115d4565b611a0a565b3461027a57608036600319011261027a57602435610e0f81610619565b6044359065ffffffffffff8216820361027a57606435906001600160401b03821161027a57602092610e486107e3933690600401610a43565b91600435611227565b3461027a5760a036600319011261027a57602435600435610e7182610619565b60443591610e7d610994565b90608435906001600160401b03821161027a57610e9f60049236908401610a43565b610ea7611739565b5f54602090610ecc90610ec0906001600160a01b031681565b6001600160a01b031690565b60405163b134427160e01b815294859182905afa928315610597575f9361100b575b506001600160a01b039283163303610ff9576001546001600160a01b0316838116610f6e575b50506040805195865265ffffffffffff909316602086015216927f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed91819081015b0390a361054260015f8051602061281683398151915255565b909360405194610fa586610f97602082019363724ab0f760e11b8552858c898d602487016113d1565b03601f1981018852876109f8565b62042e305a10610fe7575f610f55938192827f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed9951926203d090f15093610f14565b604051638072475160e01b8152600490fd5b60405163dabc4ad960e01b8152600490fd5b61102e91935060203d602011611035575b61102681836109f8565b8101906113bc565b915f610eee565b503d61101c565b3461027a575f36600319011261027a575f546040516001600160a01b039091168152602090f35b3461027a57604036600319011261027a5760206107e360243561108581610619565b60043561144e565b3461027a575f36600319011261027a5760206040516203d0908152f35b3461027a575f36600319011261027a57602060405160018152f35b9081602091031261027a5751801515810361027a5790565b6040513d5f823e3d90fd5b906110fe92915f52600360205260405f20611c8e565b90565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b60405190611132826109bd565b60606020838281520152565b81601f8201121561027a5780519061115582610a28565b9261116360405194856109f8565b8284526020838301011161027a57815f9260208093018386015e8301015290565b9060208282031261027a5781516001600160401b039283821161027a57019060408282031261027a57604051926111ba846109bd565b825181811161027a57826111cf91850161113e565b8452602083015190811161027a576111e7920161113e565b602082015290565b6001600160a01b0391821681529116602082015265ffffffffffff90911660408201526080606082018190526110fe92910190611101565b9261123790929192828486611e46565b929093611242611125565b93805180611395575b505084159384156112ff575b841561126e575b505050506112695790565b505f90565b602080949550611299910151604051958694859463530e1d4360e01b865260601c90600486016111ef565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610597575f916112e0575b50155f80808061125e565b6112f9915060203d6020116105905761058281836109f8565b5f6112d5565b5f549094506001600160a01b0316602084865192611332604051948593849363530e1d4360e01b855289600486016111ef565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610597575f91611376575b501593611257565b61138f915060203d6020116105905761058281836109f8565b5f61136e565b6113a9929550602080918301019101611184565b925f8061124b565b5190610a2682610619565b9081602091031261027a57516110fe81610619565b919360a0936110fe969565ffffffffffff938552600180871b0316602085015260408401521660608201528160808201520190611101565b634e487b7160e01b5f52601160045260245ffd5b8115611427570490565b634e487b7160e01b5f52601260045260245ffd5b906001820180921161144957565b611409565b5f546040516308834cb560e21b8082526001600160a01b0385811660048401529283166024830152929392602092909183816044817f000000000000000000000000000000000000000000000000000000000000000086165afa908115610597575f9161155b575b50159182156114d7575b505090506114d1576110fe91611f3b565b50505f90565b6040519081526001600160a01b0385166004820152606086901c602482015291508290829060449082907f0000000000000000000000000000000000000000000000000000000000000000165afa918215610597575f9261153e575b505015805f806114c0565b6115549250803d106105905761058281836109f8565b5f80611533565b6115729150843d86116105905761058281836109f8565b5f6114b6565b335f9081527f72a65082a5691803ab2b62c9bc729b34205ba1b183d950896526b2fd8714d0c7602052604090207e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf9060ff905b54161561079c5750565b5f8181525f805160206127f683398151915260209081526040808320338452909152902060ff906115ca565b634e487b7160e01b5f52603260045260245ffd5b8054821015611629575f5260205f2001905f90565b611600565b90815491600160401b8310156109d85782611651916001610a2695018155611614565b90919082549060031b91821b915f19901b1916179055565b5f1981019190821161144957565b90929192600182019081548015611709575b508461169484612019565b509490928454936116a483611a9c565b96816116f4575b50156116d1575050505f1981019081116114495761165185916116cd93611614565b9190565b6116cd9492936116ed926001600160d01b03909116919061251a565b505061162e565b65ffffffffffff83811691161490505f6116ab565b600160401b8110156109d8578060016117259201845583611614565b8154905f199060031b1b191690555f611689565b5f8051602061281683398151915260028154146117565760029055565b604051633ee5aeb560e01b8152600490fd5b90815f52600360205260405f208161177f82612019565b9193905083156117dd5761179f916001600160d01b031690600101611614565b90549060031b1c5b826117d3575b50506117b7575050565b6117cf915f52600360205260405f2061030f42611fc3565b5050565b119050815f6117ad565b50505f6117a7565b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260409020545f805160206127f68339815191529060ff166114d1575f808052602091825260408082206001600160a01b038516835290925220805460ff1916600117905533906001600160a01b03165f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b6001600160a01b0381165f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c602052604090207fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c905f805160206127f68339815191529060ff905b541661195f575f828152602091825260408082206001600160a01b038616835290925220805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b5050505f90565b6001600160a01b0381165f9081527f72a65082a5691803ab2b62c9bc729b34205ba1b183d950896526b2fd8714d0c7602052604090207e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf905f805160206127f68339815191529060ff906118fb565b5f8181525f805160206127f6833981519152602081815260408084206001600160a01b038716855290915290912060ff906118fb565b5f8181525f805160206127f6833981519152602081815260408084206001600160a01b03871685529091529091205460ff161561195f575f828152602091825260408082206001600160a01b038616835290925220805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b805480611acb57505f5b6001600160d01b038116156114d1576001611ac19201611614565b90549060031b1c90565b5f1990808281011161144957825f5260205f2001015460301c611aa6565b91909160408184031261027a578035611b0181610619565b9260208201356001600160401b03811161027a576110fe9201610a43565b611b2b91810190611ae9565b6040516302910f8b60e31b81526001600160a01b039283166004820181905291906020816024817f000000000000000000000000000000000000000000000000000000000000000088165afa908115610597575f91611c3e575b5015611c2c57611bc0604091611bbb611c0694611ba0612068565b60018060a01b03166001600160601b0360a01b5f5416175f55565b6121d4565b6020810151600180546001600160a01b0319166001600160a01b0390921691909117905580516001600160a01b0316848116611c1c575b5001516001600160a01b031690565b908116611c105750565b611c1990611890565b50565b611c25906117e5565b505f611bf7565b6040516362df054560e01b8152600490fd5b611c57915060203d6020116105905761058281836109f8565b5f611b85565b9081602091031261027a575163ffffffff8116810361027a5790565b90600163ffffffff8093160191821161144957565b91805115611d675780602080611ca993518301019101611c5d565b91611cb48382612445565b92611cc5845165ffffffffffff1690565b9065ffffffffffff8085169216828114611d5b5782119182611cfb575b5050611cf2576110fe9250612375565b50506020015190565b909150611d088354611669565b63ffffffff831614918215611d21575b50505f80611ce2565b611d53919250611d3c611d36611d4892611c79565b85612445565b5165ffffffffffff1690565b65ffffffffffff1690565b115f80611d18565b50505050506020015190565b506110fe91612375565b60405190611d7e826109dd565b60606040838281528260208201520152565b9060208282031261027a5781516001600160401b039283821161027a57019060608282031261027a5760405192611dc6846109dd565b825181811161027a5782611ddb91850161113e565b8452602083015181811161027a5782611df591850161113e565b6020850152604083015190811161027a57611e10920161113e565b604082015290565b9081602091031261027a575190565b60409065ffffffffffff6110fe94931681528160208201520190611101565b90939293611e52611d71565b94805180611f1f575b50506004546001600160a01b03918216911603611f17575f54611eb2929190602090611e9190610ec0906001600160a01b031681565b8187015190604051808097819463810da75d60e01b83528860048401611e27565b03915afa90811561059757611edf935f92611ee4575b50611ed991926040870151916110e8565b906124ad565b915190565b611ed99250611f0a9060203d602011611f10575b611f0281836109f8565b810190611e18565b91611ec8565b503d611ef8565b505090515f91565b611f33929650602080918301019101611d90565b935f80611e5b565b6004546001600160a01b0392908316908316036114d15760206004925f54166040519384809263bd49c35f60e01b82525afa908115610597576110fe925f92611f9a575b50611f95611ed9915f52600360205260405f2090565b611a9c565b611ed9919250611fbb611f959160203d602011611f1057611f0281836109f8565b929150611f7f565b65ffffffffffff90818111611fd6571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b90604051612002816109bd565b915465ffffffffffff8116835260301c6020830152565b80548061202a5750505f905f905f90565b5f1990808281011161144957612047925f5260205f200101611ff5565b9065ffffffffffff82511691602060018060d01b0391015116906001929190565b612070612635565b612078612635565b60015f8051602061281683398151915255565b60405190612098826109dd565b5f6040838281528260208201520152565b81601f8201121561027a578051916020916001600160401b0384116109d8578360051b90604051946120dd858401876109f8565b8552838086019282010192831161027a578301905b828210612100575050505090565b838091835161210e81610619565b8152019101906120f2565b60208183031261027a5780516001600160401b039182821161027a5701918281039260a0841261027a57606060405194612152866109dd565b1261027a57604051612163816109dd565b815161216e81610619565b8152602082015161217e81610619565b6020820152604082015161219181610619565b60408201528452606081015192831161027a576121b5608092611e109483016120a9565b6020850152016113b1565b80518210156116295760209160051b010190565b6121dc61208b565b506121f281519160208080948301019101612119565b8051516001600160a01b0393919084161580612369575b612357576040818101805182516302910f8b60e31b81526001600160a01b0390911660048083019190915296929491928690829060249082907f0000000000000000000000000000000000000000000000000000000000000000165afa908115610597575f9161233a575b50156123285791938401915f5b835180518210156122f757610ec061229c836122a9936121c0565b516001600160a01b031690565b156122e7576122cb6122c76122c261229c8488516121c0565b611966565b1590565b6122d757600101612281565b8451635140fefd60e11b81528790fd5b84516323cda06760e01b81528790fd5b50509051600480546001600160a01b0319166001600160a01b039092169190911790559350612324915050565b5190565b604051631f0853c160e21b8152600490fd5b6123519150863d88116105905761058281836109f8565b5f612274565b6040516303501f5960e11b8152600490fd5b50828101515115612209565b908154905f8291600584116123df575b612390935084612796565b806123b857505f905b6001600160d01b038216156114d1576110fe916001611ac19201611614565b6123d26123c76123d992611669565b835f5260205f200190565b5460301c90565b90612399565b91926123ea81612663565b81039081116114495761239093855f5265ffffffffffff808360205f20015416908516105f1461241b575091612385565b9291506124279061143b565b90612385565b6040519061243a826109bd565b5f6020838281520152565b9061246e61246861248f9261245861242d565b5061246161242d565b5084611614565b50611ff5565b91600165ffffffffffff845116936020828060d01b03910151169101611614565b9054906040519261249f846109bd565b835260031b1c602082015290565b90808210156124ba575090565b905090565b8054600160401b8110156109d8576124dc91600182018155611614565b61250757815160209092015160301b65ffffffffffff191665ffffffffffff92909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b80549293929190821561260c5761253b6125366123c785611669565b611ff5565b9061254c825165ffffffffffff1690565b65ffffffffffff848116911681106125fa576116cd94602094889261257a611d48875165ffffffffffff1690565b036125c257506125b49261259061259b92611669565b905f5260205f200190565b9065ffffffffffff82549181199060301b169116179055565b01516001600160d01b031690565b9150506125f5916125e26125d4610a19565b65ffffffffffff9093168352565b6001600160d01b038816828601526124bf565b6125b4565b604051632520601d60e01b8152600490fd5b612630925061261c6125d4610a19565b6001600160d01b03851660208301526124bf565b5f9190565b60ff5f805160206128368339815191525460401c161561265157565b604051631afcd79f60e31b8152600490fd5b80156112695780611ed961272e61272461271a6127106127066126fc6126f260016110fe9a5f908b60801c8061278a575b508060401c8061277d575b508060201c80612770575b508060101c80612763575b508060081c80612756575b508060041c80612749575b508060021c8061273c575b50821c612735575b811c1b6126eb818b61141d565b0160011c90565b6126eb818a61141d565b6126eb818961141d565b6126eb818861141d565b6126eb818761141d565b6126eb818661141d565b6126eb818561141d565b809261141d565b81016126de565b600291509101905f6126d6565b600491509101905f6126cb565b600891509101905f6126c0565b601091509101905f6126b5565b602091509101905f6126aa565b604091509101905f61269f565b9150506080905f612694565b91905b8382106127a65750505090565b9091928083169080841860011c820180921161144957845f5265ffffffffffff808360205f20015416908416105f146127e35750925b9190612799565b9392506127ef9061143b565b916127dc56fe02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212205c276801ae6061af18dad51d441d5cb6dadebac4aa6e8f4a4cdf93877dee107364736f6c63430008190033","sourceMap":"611:4324:80:-:0;;;;-1:-1:-1;;;;;611:4324:80;;;;;;;;;;-1:-1:-1;;611:4324:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;8837:64:25;611:4324:80;;;;;;;;;7896:76:25;;611:4324:80;;;;7985:34:25;7981:146;;-1:-1:-1;525:17:69;;;611:4324:80;525:17:69;611:4324:80;552:12:69;611:4324:80;2360:34:76;611:4324:80;2404:28:76;2442:57;;;;2509:61;;;;1716:36:80;;;;611:4324;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7981:146:25;-1:-1:-1;;;;;;611:4324:80;;;;;;;;;;;;;8087:29:25;;611:4324:80;;8087:29:25;7981:146;;;;;7896:76;611:4324:80;;-1:-1:-1;;;7938:23:25;;;;;611:4324:80;-1:-1:-1;611:4324:80;;;;;;-1:-1:-1;611:4324:80;;;;;-1:-1:-1;611:4324:80;;;;-1:-1:-1;;;;;611:4324:80;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a714610224578063021453481461021f578063103f29071461021a578063128e5d82146102155780631a80e5001461021057806323f752d51461020b578063248a9ca3146102065780632dd31000146102015780632f2ff15d146101fc57806336568abe146101f75780633dfd3873146101f25780633eb22c0f146101ed578063439fab91146101e8578063557cab44146101e3578063570ca735146101de5780635d32a1c9146101d95780636679191e146101d45780637d24bb27146101cf5780637f5a7c7b146101ca57806383ce0322146101c557806391d14854146101c05780639f86fd85146101bb578063a217fddf146101b6578063bb24fe8a146101b1578063c0cd7c3e146101ac578063d15b740e146101a7578063d547741f146101a2578063e02f69371461019d578063e49561ee14610198578063fbfa77cf14610193578063fd4d447c1461018e578063ff54740f146101895763ffa1ad7414610184575f80fd5b6110aa565b61108d565b611063565b61103c565b610e51565b610df2565b610da6565b610d7c565b610d38565b610cf5565b610cdb565b610c21565b610bc3565b610b7f565b610b57565b610b1e565b610ae4565b610a89565b61096c565b610950565b610818565b6107ba565b6106c1565b610676565b61062a565b6105d5565b61059c565b610416565b6103d2565b61038e565b61034a565b61027e565b3461027a57602036600319011261027a5760043563ffffffff60e01b811680910361027a57602090637965db0b60e01b8114908115610269575b506040519015158152f35b6301ffc9a760e01b1490505f61025e565b5f80fd5b3461027a5760408060031936011261027a5760043590602435906102a0611578565b825f526002602052805f2054821161033a57825f526003602052816102c6825f20611a9c565b1461032a5781610325916103157e899d104fc3d8820bd96540612bcc5c448c8837b13b9f7faa43ad0728f0c14f94610306875f52600360205260405f2090565b61030f42611fc3565b90611677565b5050519081529081906020820190565b0390a2005b5163a741a04560e01b8152600490fd5b51631eefc06360e31b8152600490fd5b3461027a575f36600319011261027a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461027a575f36600319011261027a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461027a575f36600319011261027a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461027a57604036600319011261027a576004356001600160601b038116810361027a5760243590610446611739565b6040516302910f8b60e31b81523360048201526020816024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa908115610597575f91610568575b5015610556576001600160601b03166bffffffffffffffffffffffff193360601b161790806104d0835f52600260205260405f2090565b541461054457610529817fc67e7929681aa1bccd63f52b3799bf5805f3009f197db6fdf584b14f7fbf608c9261050e855f52600260205260405f2090565b556105198185611768565b6040519081529081906020820190565b0390a261054260015f8051602061281683398151915255565b005b60405163a741a04560e01b8152600490fd5b6040516323d53b9760e21b8152600490fd5b61058a915060203d602011610590575b61058281836109f8565b8101906110c5565b5f610499565b503d610578565b6110dd565b3461027a57602036600319011261027a576004355f525f805160206127f68339815191526020526020600160405f200154604051908152f35b3461027a575f36600319011261027a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6001600160a01b0381160361027a57565b3461027a57604036600319011261027a5761054260243560043561064d82610619565b805f525f805160206127f6833981519152602052610671600160405f2001546115d4565b6119d4565b3461027a57604036600319011261027a5760243561069381610619565b336001600160a01b038216036106af5761054290600435611a0a565b60405163334bd91960e11b8152600490fd5b3461027a57602036600319011261027a576004356106de81610619565b6106e6611739565b335f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c60205260409020547fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c9060ff161561079c57506001546001600160a01b039182169181168214610544576001600160a01b03191681176001557f5bbb1d3ebb6a3ad2a0f17ff35e579a83af60604d1d3c2a4c83c62adecadf666d5f80a260015f8051602061281683398151915255005b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b3461027a57602036600319011261027a576004355f52600360205260206107e360405f20611a9c565b604051908152f35b9181601f8401121561027a578235916001600160401b03831161027a576020838186019501011161027a57565b3461027a57602036600319011261027a576001600160401b0360043581811161027a576108499036906004016107eb565b5f80516020612836833981519152549260ff8460401c1615931680159081610948575b600114908161093e575b159081610935575b50610923575f80516020612836833981519152805467ffffffffffffffff191660011790556108b191836108ff57611b1f565b6108b757005b5f80516020612836833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f80516020612836833981519152805460ff60401b1916600160401b179055611b1f565b60405163f92ee8a960e01b8152600490fd5b9050155f61087e565b303b159150610876565b84915061086c565b3461027a575f36600319011261027a576020604051614e208152f35b3461027a575f36600319011261027a576004546040516001600160a01b039091168152602090f35b6064359065ffffffffffff8216820361027a57565b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b038211176109d857604052565b6109a9565b606081019081106001600160401b038211176109d857604052565b90601f801991011681019081106001600160401b038211176109d857604052565b60405190610a26826109bd565b565b6001600160401b0381116109d857601f01601f191660200190565b81601f8201121561027a57803590610a5a82610a28565b92610a6860405194856109f8565b8284526020838301011161027a57815f926020809301838601378301015290565b3461027a57606036600319011261027a5760243565ffffffffffff8116810361027a576044356001600160401b03811161027a57602091610ad16107e3923690600401610a43565b906004355f526003845260405f20611c8e565b3461027a575f36600319011261027a5760206040517fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c8152f35b3461027a575f36600319011261027a5760206040517e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf8152f35b3461027a575f36600319011261027a576001546040516001600160a01b039091168152602090f35b3461027a575f36600319011261027a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461027a57604036600319011261027a57602060ff610c15602435610be781610619565b6004355f525f805160206127f6833981519152845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b3461027a5760408060031936011261027a57600435610c3f81610619565b602435906001600160401b03821161027a575f8091610c65610cc99436906004016107eb565b908187519283928337810184815203915af43d15610cd157610cbb3d610c8a81610a28565b90610c97865192836109f8565b81523d5f602083013e5b845194859315156020850152808401526060830190611101565b03601f1981018352826109f8565b805190602001fd5b610cbb6060610ca1565b3461027a575f36600319011261027a5760206040515f8152f35b3461027a575f36600319011261027a5760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461027a575f36600319011261027a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461027a57602036600319011261027a576004355f526002602052602060405f2054604051908152f35b3461027a57604036600319011261027a57610542602435600435610dc982610619565b805f525f805160206127f6833981519152602052610ded600160405f2001546115d4565b611a0a565b3461027a57608036600319011261027a57602435610e0f81610619565b6044359065ffffffffffff8216820361027a57606435906001600160401b03821161027a57602092610e486107e3933690600401610a43565b91600435611227565b3461027a5760a036600319011261027a57602435600435610e7182610619565b60443591610e7d610994565b90608435906001600160401b03821161027a57610e9f60049236908401610a43565b610ea7611739565b5f54602090610ecc90610ec0906001600160a01b031681565b6001600160a01b031690565b60405163b134427160e01b815294859182905afa928315610597575f9361100b575b506001600160a01b039283163303610ff9576001546001600160a01b0316838116610f6e575b50506040805195865265ffffffffffff909316602086015216927f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed91819081015b0390a361054260015f8051602061281683398151915255565b909360405194610fa586610f97602082019363724ab0f760e11b8552858c898d602487016113d1565b03601f1981018852876109f8565b62042e305a10610fe7575f610f55938192827f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed9951926203d090f15093610f14565b604051638072475160e01b8152600490fd5b60405163dabc4ad960e01b8152600490fd5b61102e91935060203d602011611035575b61102681836109f8565b8101906113bc565b915f610eee565b503d61101c565b3461027a575f36600319011261027a575f546040516001600160a01b039091168152602090f35b3461027a57604036600319011261027a5760206107e360243561108581610619565b60043561144e565b3461027a575f36600319011261027a5760206040516203d0908152f35b3461027a575f36600319011261027a57602060405160018152f35b9081602091031261027a5751801515810361027a5790565b6040513d5f823e3d90fd5b906110fe92915f52600360205260405f20611c8e565b90565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b60405190611132826109bd565b60606020838281520152565b81601f8201121561027a5780519061115582610a28565b9261116360405194856109f8565b8284526020838301011161027a57815f9260208093018386015e8301015290565b9060208282031261027a5781516001600160401b039283821161027a57019060408282031261027a57604051926111ba846109bd565b825181811161027a57826111cf91850161113e565b8452602083015190811161027a576111e7920161113e565b602082015290565b6001600160a01b0391821681529116602082015265ffffffffffff90911660408201526080606082018190526110fe92910190611101565b9261123790929192828486611e46565b929093611242611125565b93805180611395575b505084159384156112ff575b841561126e575b505050506112695790565b505f90565b602080949550611299910151604051958694859463530e1d4360e01b865260601c90600486016111ef565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610597575f916112e0575b50155f80808061125e565b6112f9915060203d6020116105905761058281836109f8565b5f6112d5565b5f549094506001600160a01b0316602084865192611332604051948593849363530e1d4360e01b855289600486016111ef565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610597575f91611376575b501593611257565b61138f915060203d6020116105905761058281836109f8565b5f61136e565b6113a9929550602080918301019101611184565b925f8061124b565b5190610a2682610619565b9081602091031261027a57516110fe81610619565b919360a0936110fe969565ffffffffffff938552600180871b0316602085015260408401521660608201528160808201520190611101565b634e487b7160e01b5f52601160045260245ffd5b8115611427570490565b634e487b7160e01b5f52601260045260245ffd5b906001820180921161144957565b611409565b5f546040516308834cb560e21b8082526001600160a01b0385811660048401529283166024830152929392602092909183816044817f000000000000000000000000000000000000000000000000000000000000000086165afa908115610597575f9161155b575b50159182156114d7575b505090506114d1576110fe91611f3b565b50505f90565b6040519081526001600160a01b0385166004820152606086901c602482015291508290829060449082907f0000000000000000000000000000000000000000000000000000000000000000165afa918215610597575f9261153e575b505015805f806114c0565b6115549250803d106105905761058281836109f8565b5f80611533565b6115729150843d86116105905761058281836109f8565b5f6114b6565b335f9081527f72a65082a5691803ab2b62c9bc729b34205ba1b183d950896526b2fd8714d0c7602052604090207e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf9060ff905b54161561079c5750565b5f8181525f805160206127f683398151915260209081526040808320338452909152902060ff906115ca565b634e487b7160e01b5f52603260045260245ffd5b8054821015611629575f5260205f2001905f90565b611600565b90815491600160401b8310156109d85782611651916001610a2695018155611614565b90919082549060031b91821b915f19901b1916179055565b5f1981019190821161144957565b90929192600182019081548015611709575b508461169484612019565b509490928454936116a483611a9c565b96816116f4575b50156116d1575050505f1981019081116114495761165185916116cd93611614565b9190565b6116cd9492936116ed926001600160d01b03909116919061251a565b505061162e565b65ffffffffffff83811691161490505f6116ab565b600160401b8110156109d8578060016117259201845583611614565b8154905f199060031b1b191690555f611689565b5f8051602061281683398151915260028154146117565760029055565b604051633ee5aeb560e01b8152600490fd5b90815f52600360205260405f208161177f82612019565b9193905083156117dd5761179f916001600160d01b031690600101611614565b90549060031b1c5b826117d3575b50506117b7575050565b6117cf915f52600360205260405f2061030f42611fc3565b5050565b119050815f6117ad565b50505f6117a7565b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260409020545f805160206127f68339815191529060ff166114d1575f808052602091825260408082206001600160a01b038516835290925220805460ff1916600117905533906001600160a01b03165f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b6001600160a01b0381165f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c602052604090207fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c905f805160206127f68339815191529060ff905b541661195f575f828152602091825260408082206001600160a01b038616835290925220805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b5050505f90565b6001600160a01b0381165f9081527f72a65082a5691803ab2b62c9bc729b34205ba1b183d950896526b2fd8714d0c7602052604090207e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf905f805160206127f68339815191529060ff906118fb565b5f8181525f805160206127f6833981519152602081815260408084206001600160a01b038716855290915290912060ff906118fb565b5f8181525f805160206127f6833981519152602081815260408084206001600160a01b03871685529091529091205460ff161561195f575f828152602091825260408082206001600160a01b038616835290925220805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b805480611acb57505f5b6001600160d01b038116156114d1576001611ac19201611614565b90549060031b1c90565b5f1990808281011161144957825f5260205f2001015460301c611aa6565b91909160408184031261027a578035611b0181610619565b9260208201356001600160401b03811161027a576110fe9201610a43565b611b2b91810190611ae9565b6040516302910f8b60e31b81526001600160a01b039283166004820181905291906020816024817f000000000000000000000000000000000000000000000000000000000000000088165afa908115610597575f91611c3e575b5015611c2c57611bc0604091611bbb611c0694611ba0612068565b60018060a01b03166001600160601b0360a01b5f5416175f55565b6121d4565b6020810151600180546001600160a01b0319166001600160a01b0390921691909117905580516001600160a01b0316848116611c1c575b5001516001600160a01b031690565b908116611c105750565b611c1990611890565b50565b611c25906117e5565b505f611bf7565b6040516362df054560e01b8152600490fd5b611c57915060203d6020116105905761058281836109f8565b5f611b85565b9081602091031261027a575163ffffffff8116810361027a5790565b90600163ffffffff8093160191821161144957565b91805115611d675780602080611ca993518301019101611c5d565b91611cb48382612445565b92611cc5845165ffffffffffff1690565b9065ffffffffffff8085169216828114611d5b5782119182611cfb575b5050611cf2576110fe9250612375565b50506020015190565b909150611d088354611669565b63ffffffff831614918215611d21575b50505f80611ce2565b611d53919250611d3c611d36611d4892611c79565b85612445565b5165ffffffffffff1690565b65ffffffffffff1690565b115f80611d18565b50505050506020015190565b506110fe91612375565b60405190611d7e826109dd565b60606040838281528260208201520152565b9060208282031261027a5781516001600160401b039283821161027a57019060608282031261027a5760405192611dc6846109dd565b825181811161027a5782611ddb91850161113e565b8452602083015181811161027a5782611df591850161113e565b6020850152604083015190811161027a57611e10920161113e565b604082015290565b9081602091031261027a575190565b60409065ffffffffffff6110fe94931681528160208201520190611101565b90939293611e52611d71565b94805180611f1f575b50506004546001600160a01b03918216911603611f17575f54611eb2929190602090611e9190610ec0906001600160a01b031681565b8187015190604051808097819463810da75d60e01b83528860048401611e27565b03915afa90811561059757611edf935f92611ee4575b50611ed991926040870151916110e8565b906124ad565b915190565b611ed99250611f0a9060203d602011611f10575b611f0281836109f8565b810190611e18565b91611ec8565b503d611ef8565b505090515f91565b611f33929650602080918301019101611d90565b935f80611e5b565b6004546001600160a01b0392908316908316036114d15760206004925f54166040519384809263bd49c35f60e01b82525afa908115610597576110fe925f92611f9a575b50611f95611ed9915f52600360205260405f2090565b611a9c565b611ed9919250611fbb611f959160203d602011611f1057611f0281836109f8565b929150611f7f565b65ffffffffffff90818111611fd6571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b90604051612002816109bd565b915465ffffffffffff8116835260301c6020830152565b80548061202a5750505f905f905f90565b5f1990808281011161144957612047925f5260205f200101611ff5565b9065ffffffffffff82511691602060018060d01b0391015116906001929190565b612070612635565b612078612635565b60015f8051602061281683398151915255565b60405190612098826109dd565b5f6040838281528260208201520152565b81601f8201121561027a578051916020916001600160401b0384116109d8578360051b90604051946120dd858401876109f8565b8552838086019282010192831161027a578301905b828210612100575050505090565b838091835161210e81610619565b8152019101906120f2565b60208183031261027a5780516001600160401b039182821161027a5701918281039260a0841261027a57606060405194612152866109dd565b1261027a57604051612163816109dd565b815161216e81610619565b8152602082015161217e81610619565b6020820152604082015161219181610619565b60408201528452606081015192831161027a576121b5608092611e109483016120a9565b6020850152016113b1565b80518210156116295760209160051b010190565b6121dc61208b565b506121f281519160208080948301019101612119565b8051516001600160a01b0393919084161580612369575b612357576040818101805182516302910f8b60e31b81526001600160a01b0390911660048083019190915296929491928690829060249082907f0000000000000000000000000000000000000000000000000000000000000000165afa908115610597575f9161233a575b50156123285791938401915f5b835180518210156122f757610ec061229c836122a9936121c0565b516001600160a01b031690565b156122e7576122cb6122c76122c261229c8488516121c0565b611966565b1590565b6122d757600101612281565b8451635140fefd60e11b81528790fd5b84516323cda06760e01b81528790fd5b50509051600480546001600160a01b0319166001600160a01b039092169190911790559350612324915050565b5190565b604051631f0853c160e21b8152600490fd5b6123519150863d88116105905761058281836109f8565b5f612274565b6040516303501f5960e11b8152600490fd5b50828101515115612209565b908154905f8291600584116123df575b612390935084612796565b806123b857505f905b6001600160d01b038216156114d1576110fe916001611ac19201611614565b6123d26123c76123d992611669565b835f5260205f200190565b5460301c90565b90612399565b91926123ea81612663565b81039081116114495761239093855f5265ffffffffffff808360205f20015416908516105f1461241b575091612385565b9291506124279061143b565b90612385565b6040519061243a826109bd565b5f6020838281520152565b9061246e61246861248f9261245861242d565b5061246161242d565b5084611614565b50611ff5565b91600165ffffffffffff845116936020828060d01b03910151169101611614565b9054906040519261249f846109bd565b835260031b1c602082015290565b90808210156124ba575090565b905090565b8054600160401b8110156109d8576124dc91600182018155611614565b61250757815160209092015160301b65ffffffffffff191665ffffffffffff92909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b80549293929190821561260c5761253b6125366123c785611669565b611ff5565b9061254c825165ffffffffffff1690565b65ffffffffffff848116911681106125fa576116cd94602094889261257a611d48875165ffffffffffff1690565b036125c257506125b49261259061259b92611669565b905f5260205f200190565b9065ffffffffffff82549181199060301b169116179055565b01516001600160d01b031690565b9150506125f5916125e26125d4610a19565b65ffffffffffff9093168352565b6001600160d01b038816828601526124bf565b6125b4565b604051632520601d60e01b8152600490fd5b612630925061261c6125d4610a19565b6001600160d01b03851660208301526124bf565b5f9190565b60ff5f805160206128368339815191525460401c161561265157565b604051631afcd79f60e31b8152600490fd5b80156112695780611ed961272e61272461271a6127106127066126fc6126f260016110fe9a5f908b60801c8061278a575b508060401c8061277d575b508060201c80612770575b508060101c80612763575b508060081c80612756575b508060041c80612749575b508060021c8061273c575b50821c612735575b811c1b6126eb818b61141d565b0160011c90565b6126eb818a61141d565b6126eb818961141d565b6126eb818861141d565b6126eb818761141d565b6126eb818661141d565b6126eb818561141d565b809261141d565b81016126de565b600291509101905f6126d6565b600491509101905f6126cb565b600891509101905f6126c0565b601091509101905f6126b5565b602091509101905f6126aa565b604091509101905f61269f565b9150506080905f612694565b91905b8382106127a65750505090565b9091928083169080841860011c820180921161144957845f5265ffffffffffff808360205f20015416908416105f146127e35750925b9190612799565b9392506127ef9061143b565b916127dc56fe02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212205c276801ae6061af18dad51d441d5cb6dadebac4aa6e8f4a4cdf93877dee107364736f6c63430008190033","sourceMap":"611:4324:80:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;-1:-1:-1;;611:4324:80;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3551:47:23;;;:87;;;;611:4324:80;;;;;;;;;;3551:87:23;-1:-1:-1;;;1133:40:29;;-1:-1:-1;3551:87:23;;;611:4324:80;-1:-1:-1;611:4324:80;;;;;;;;;;;;;;;;;;;;3202:4:23;;;:::i;:::-;611:4324:80;-1:-1:-1;611:4324:80;2428:15;611:4324;;;-1:-1:-1;611:4324:80;;2419:36;;2415:98;;611:4324;-1:-1:-1;611:4324:80;2193:13;611:4324;;;2193:34;611:4324;-1:-1:-1;611:4324:80;2193:34;:::i;:::-;2527;2523:84;;2617:25;2689:35;2617:25;:56;2689:35;2617:25;;;611:4324;;2193:13;611:4324;;;;;;;2617:25;819:34:62;837:15;819:34;:::i;:::-;2617:56:80;;:::i;:::-;-1:-1:-1;;611:4324:80;;;;;;;;;;;;2689:35;;;;611:4324;2523:84;611:4324;-1:-1:-1;;;2584:12:80;;611:4324;;2584:12;2415:98;611:4324;-1:-1:-1;;;2478:24:80;;611:4324;;2478:24;611:4324;;;;;;-1:-1:-1;;611:4324:80;;;;;;1537:38:76;-1:-1:-1;;;;;611:4324:80;;;;;;;;;;;;-1:-1:-1;;611:4324:80;;;;;;1632:54:76;-1:-1:-1;;;;;611:4324:80;;;;;;;;;;;;-1:-1:-1;;611:4324:80;;;;;;1743:56:76;-1:-1:-1;;;;;611:4324:80;;;;;;;;;;;;-1:-1:-1;;611:4324:80;;;;;;-1:-1:-1;;;;;611:4324:80;;;;;;;;3217:103:28;;;:::i;:::-;611:4324:80;;-1:-1:-1;;;4285:48:76;;4322:10;611:4324:80;4285:48:76;;611:4324:80;;;;;-1:-1:-1;;;;;4295:16:76;611:4324:80;4285:48:76;;;;;;;-1:-1:-1;4285:48:76;;;611:4324:80;4284:49:76;;4280:99;;-1:-1:-1;;;;;611:4324:80;-1:-1:-1;;4322:10:76;297:2:88;611:4324:80;;267:46:88;4459:27:76;;;;611:4324:80;;4459:15:76;611:4324:80;;;;;;;4459:27:76;611:4324:80;4459:37:76;4455:87;;4654:38;4552:27;4654:38;4552:27;;;611:4324:80;;4459:15:76;611:4324:80;;;;;;;4552:27:76;611:4324:80;4631:6:76;;;;:::i;:::-;611:4324:80;;;;;;;;;;;;;4654:38:76;;;;3282:1:28;1805;-1:-1:-1;;;;;;;;;;;611:4324:80;3716:283:28;3282:1;611:4324:80;4455:87:76;611:4324:80;;-1:-1:-1;;;4519:12:76;;611:4324:80;;4519:12:76;4280:99;611:4324:80;;-1:-1:-1;;;4356:12:76;;611:4324:80;;4356:12:76;4285:48;;;;611:4324:80;4285:48:76;611:4324:80;4285:48:76;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;611:4324:80:-;;;;;;-1:-1:-1;;611:4324:80;;;;;;-1:-1:-1;611:4324:80;-1:-1:-1;;;;;;;;;;;611:4324:80;;;4919:24:23;611:4324:80;-1:-1:-1;611:4324:80;4919:24:23;611:4324:80;;;;;;;;;;;;;-1:-1:-1;;611:4324:80;;;;;;322:32:69;-1:-1:-1;;;;;611:4324:80;;;;;;;-1:-1:-1;;;;;611:4324:80;;;;;:::o;:::-;;;;;;-1:-1:-1;;611:4324:80;;;;5350:25:23;611:4324:80;;;;;;;:::i;:::-;;-1:-1:-1;611:4324:80;-1:-1:-1;;;;;;;;;;;611:4324:80;;3202:4:23;4919:24;611:4324:80;-1:-1:-1;611:4324:80;4919:24:23;611:4324:80;3202:4:23;:::i;:::-;5350:25;:::i;611:4324:80:-;;;;;;-1:-1:-1;;611:4324:80;;;;;;;;;:::i;:::-;966:10:27;-1:-1:-1;;;;;611:4324:80;;6441:34:23;6437:102;;6549:37;611:4324:80;;;6549:37:23;:::i;6437:102::-;611:4324:80;;-1:-1:-1;;;6498:30:23;;611:4324:80;;6498:30:23;611:4324:80;;;;;;-1:-1:-1;;611:4324:80;;;;;;;;;:::i;:::-;3217:103:28;;:::i;:::-;966:10:27;-1:-1:-1;611:4324:80;;;;;;;;;;1356:26:76;;611:4324:80;;4468:23:23;4464:108;;-1:-1:-1;4861:4:76;611:4324:80;-1:-1:-1;;;;;611:4324:80;;;;;;4861:13:76;;4857:63;;-1:-1:-1;;;;;;611:4324:80;;;4861:4:76;611:4324:80;4958:14:76;-1:-1:-1;;4958:14:76;4861:4;-1:-1:-1;;;;;;;;;;;611:4324:80;;4464:108:23;611:4324:80;;;;4514:47:23;;;;;;966:10:27;611:4324:80;4514:47:23;;611:4324:80;;;;;4514:47:23;611:4324:80;;;;;;-1:-1:-1;;611:4324:80;;;;;;-1:-1:-1;611:4324:80;2193:13;611:4324;;;2193:34;611:4324;-1:-1:-1;611:4324:80;2193:34;:::i;:::-;611:4324;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;611:4324:80;;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;611:4324:80;;;;-1:-1:-1;;;;;611:4324:80;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;611:4324:80;;;;;;;4301:16:25;611:4324:80;;4726:16:25;;:34;;;;611:4324:80;4805:1:25;4790:16;:50;;;;611:4324:80;4855:13:25;:30;;;;611:4324:80;4851:91:25;;;-1:-1:-1;;;;;;;;;;;611:4324:80;;-1:-1:-1;;611:4324:80;;;;;718:4:69;;4951:18:25;4979:67;;718:4:69;:::i;:::-;5066:101:25;;611:4324:80;5066:101:25;-1:-1:-1;;;;;;;;;;;611:4324:80;;-1:-1:-1;;;;611:4324:80;;;;;-1:-1:-1;611:4324:80;;5142:14:25;;611:4324:80;;5142:14:25;611:4324:80;4979:67:25;-1:-1:-1;;;;;;;;;;;611:4324:80;;-1:-1:-1;;;;611:4324:80;-1:-1:-1;;;611:4324:80;;;718:4:69;:::i;4851:91:25:-;611:4324:80;;-1:-1:-1;;;4908:23:25;;611:4324:80;;4908:23:25;4855:30;4872:13;;;4855:30;;;4790:50;4818:4;4810:25;:30;;-1:-1:-1;4790:50:25;;4726:34;;;-1:-1:-1;4726:34:25;;611:4324:80;;;;;;-1:-1:-1;;611:4324:80;;;;;;;1253:6:76;611:4324:80;;;;;;;;;-1:-1:-1;;611:4324:80;;;;;;;;-1:-1:-1;;;;;611:4324:80;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;611:4324:80;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;-1:-1:-1;;;;;611:4324:80;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;611:4324:80;;;;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;:::-;-1:-1:-1;;;;;611:4324:80;;;;;;-1:-1:-1;;611:4324:80;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;611:4324:80;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;611:4324:80;;;;;;;;;;;;;;;-1:-1:-1;;;;;611:4324:80;;;;;;;1955:60;611:4324;;;;;;:::i;:::-;;;;-1:-1:-1;611:4324:80;1955:13;611:4324;;;-1:-1:-1;611:4324:80;1955:60;:::i;611:4324::-;;;;;;-1:-1:-1;;611:4324:80;;;;;;;1356:26:76;611:4324:80;;;;;;;;;-1:-1:-1;;611:4324:80;;;;;;;885:35;611:4324;;;;;;;;;-1:-1:-1;;611:4324:80;;;;;;;;-1:-1:-1;;;;;611:4324:80;;;;;;;;;;;;;;-1:-1:-1;;611:4324:80;;;;;;989:42;-1:-1:-1;;;;;611:4324:80;;;;;;;;;;;;-1:-1:-1;;611:4324:80;;;;;;3901:31:23;611:4324:80;;;;;:::i;:::-;;;-1:-1:-1;611:4324:80;-1:-1:-1;;;;;;;;;;;611:4324:80;;;-1:-1:-1;611:4324:80;;;;;;;;;;;;;;;;;3901:31:23;611:4324:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;611:4324:80;;;;-1:-1:-1;611:4324:80;;;477:31:75;611:4324:80;;;;;;:::i;:::-;;;;;;;;;;;;;;;416:25:75;;;;611:4324:80;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;611:4324:80;;;;;;;;;;;;;477:31:75;;611:4324:80;;;;;;;;;;:::i;:::-;477:31:75;611:4324:80;;477:31:75;;;;;;:::i;:::-;518:79;;;611:4324:80;518:79:75;;611:4324:80;;;;;;;;;;;-1:-1:-1;;611:4324:80;;;;;;;;;;;;;;;;;-1:-1:-1;;611:4324:80;;;;;;;-1:-1:-1;;;;;404:28:69;611:4324:80;;;;;;;;;;-1:-1:-1;;611:4324:80;;;;;;1439:41:76;-1:-1:-1;;;;;611:4324:80;;;;;;;;;;;;-1:-1:-1;;611:4324:80;;;;;;-1:-1:-1;611:4324:80;2009:67:76;611:4324:80;;;;-1:-1:-1;611:4324:80;;;;;;;;;;;;;;-1:-1:-1;;611:4324:80;;;;5767:26:23;611:4324:80;;;;;;;:::i;:::-;;-1:-1:-1;611:4324:80;-1:-1:-1;;;;;;;;;;;611:4324:80;;3202:4:23;4919:24;611:4324:80;-1:-1:-1;611:4324:80;4919:24:23;611:4324:80;3202:4:23;:::i;:::-;5767:26;:::i;611:4324:80:-;;;;;;-1:-1:-1;;611:4324:80;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;611:4324:80;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;-1:-1:-1;;611:4324:80;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;611:4324:80;;;;;;;;;;;;:::i;:::-;3217:103:28;;:::i;:::-;-1:-1:-1;611:4324:80;;;5246:21:76;;:13;;-1:-1:-1;;;;;611:4324:80;5246:13:76;611:4324:80;;-1:-1:-1;;;;;611:4324:80;;;5246:21:76;611:4324:80;;-1:-1:-1;;;5246:23:76;;611:4324:80;;;;;5246:23:76;;;;;;;-1:-1:-1;5246:23:76;;;611:4324:80;-1:-1:-1;;;;;;611:4324:80;;;5232:10:76;:37;5228:87;;5341:4;611:4324:80;-1:-1:-1;;;;;611:4324:80;;;;5355:469:76;;611:4324:80;-1:-1:-1;;611:4324:80;;;;;;;;;;;;;;;;5839:55:76;;611:4324:80;;;;5839:55:76;;;;3282:1:28;1805;-1:-1:-1;;;;;;;;;;;611:4324:80;3716:283:28;5355:469:76;611:4324:80;;;;5435:94:76;;;;611:4324:80;5435:94:76;;;;;;;;;;;;611:4324:80;5435:94:76;;;:::i;:::-;;611:4324:80;;5435:94:76;;;;;;:::i;:::-;611:4324:80;5548:9:76;:51;5544:118;;-1:-1:-1;5839:55:76;5676:138;;;;5839:55;5676:138;;;1150:7;5676:138;;5355:469;;;5544:118;611:4324:80;;-1:-1:-1;;;5626:21:76;;611:4324:80;;5626:21:76;5228:87;611:4324:80;;-1:-1:-1;;;5292:12:76;;611:4324:80;;5292:12:76;5246:23;;;;;611:4324:80;5246:23:76;611:4324:80;5246:23:76;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;611:4324:80;;;;;;-1:-1:-1;;611:4324:80;;;;;;;;-1:-1:-1;;;;;611:4324:80;;;;;;;;;;;;;;-1:-1:-1;;611:4324:80;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;-1:-1:-1;;611:4324:80;;;;;;;1150:7:76;611:4324:80;;;;;;;;;-1:-1:-1;;611:4324:80;;;;;;;2700:1:76;611:4324:80;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;1827:195;;1955:60;1827:195;;-1:-1:-1;611:4324:80;1955:13;611:4324;;;-1:-1:-1;611:4324:80;1955:60;:::i;:::-;1827:195;:::o;611:4324::-;;;;;;;;;;;;;;;;;-1:-1:-1;611:4324:80;;;;;;;;-1:-1:-1;;611:4324:80;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;611:4324:80;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;611:4324:80;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;-1:-1:-1;;;;;611:4324:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2764:920:76:-;;2978:48;2764:920;;;;2978:48;;;;:::i;:::-;3036:36;;;611:4324:80;;:::i;:::-;;;;3086:20:76;3082:107;;2764:920;3216:11;;;;:193;;;;;2764:920;3216:394;;;;2764:920;3199:455;;;;;;2764:920;:::o;3199:455::-;3635:8;-1:-1:-1;3635:8:76;:::o;3216:394::-;3553:39;;;;;3430:180;3553:39;;;611:4324:80;;;;;;;;;;3430:180:76;;467:2:88;611:4324:80;3430:180:76;;;;;:::i;:::-;;611:4324:80;3444:31:76;-1:-1:-1;;;;;611:4324:80;3430:180:76;;;;;;;-1:-1:-1;3430:180:76;;;3216:394;3429:181;;3216:394;;;;;;3430:180;;;;3553:39;3430:180;3553:39;3430:180;;;;;;;:::i;:::-;;;;3216:193;-1:-1:-1;611:4324:80;;;-1:-1:-1;;;;;;611:4324:80;3248:161:76;3354:37;;;611:4324:80;3248:161:76;611:4324:80;;;;;;;;;;3248:161:76;;;;;;;:::i;:::-;;611:4324:80;3262:29:76;-1:-1:-1;;;;;611:4324:80;3248:161:76;;;;;;;-1:-1:-1;3248:161:76;;;3216:193;3247:162;;3216:193;;;3248:161;;;;;;;;;;;;;;:::i;:::-;;;;3082:107;3139:39;;;;;;;;;;;;;:::i;:::-;3082:107;;;;;611:4324:80;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;9856:1:60;611:4324:80;;;;;;;:::o;:::-;;:::i;3740:389:76:-;3918:5;611:4324:80;;;-1:-1:-1;;;3853:71:76;;;-1:-1:-1;;;;;611:4324:80;;;3853:71:76;;;611:4324:80;;;;;;;;3740:389:76;;611:4324:80;3853:71:76;;611:4324:80;;3853:71:76;611:4324:80;;;3867:29:76;611:4324:80;;3853:71:76;;;;;;;3918:5;3853:71;;;3740:389;3852:72;;611:4324:80;;;3852:181:76;;3740:389;3835:242;;;;;;4094:28;;;:::i;3835:242::-;4058:8;;3918:5;4058:8;:::o;3852:181::-;611:4324:80;;3945:88:76;;;-1:-1:-1;;;;;611:4324:80;;3853:71:76;3945:88;;611:4324:80;467:2:88;611:4324:80;;;;;;;;-1:-1:-1;611:4324:80;;;;;;;;3959:31:76;611:4324:80;3945:88:76;;;;;;;3918:5;3945:88;;;3852:181;3944:89;;;3852:181;;;;;3945:88;;;;;;-1:-1:-1;3945:88:76;;;;;;:::i;:::-;;;;;3853:71;;;;;;;;;;;;;;:::i;:::-;;;;4148:103:23;966:10:27;-1:-1:-1;611:4324:80;;;;;;;;;885:35;;611:4324;;3901:31:23;611:4324:80;;4468:23:23;4464:108;;4148:103;:::o;:::-;-1:-1:-1;611:4324:80;;;-1:-1:-1;;;;;;;;;;;611:4324:80;;;;;;;;966:10:27;611:4324:80;;;;;;;;;3901:31:23;611:4324:80;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;611:4324:80;;-1:-1:-1;611:4324:80;;;-1:-1:-1;611:4324:80;:::o;:::-;;:::i;:::-;;;;;-1:-1:-1;;;611:4324:80;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;611:4324:80;;;;;;;;:::o;6246:584:86:-;;;;;6360:12;;;611:4324:80;;;6360:24:86;;6356:75;;6246:584;6474:30;;;;;:::i;:::-;611:4324:80;;;;;;6578:12:86;;;;:::i;:::-;6604:24;;;;6246:584;-1:-1:-1;6600:188:86;;;-1:-1:-1;;;;;611:4324:80;;;;;;;6644:21:86;;;:29;:21;;:::i;:29::-;6798:25;6246:584;:::o;6600:188::-;6753:24;;611:4324:80;;8167:38:60;;-1:-1:-1;;;;;611:4324:80;;;;;8167:38:60;:::i;:::-;6753:24:86;;;:::i;6604:::-;611:4324:80;;;;;;6614:14:86;;-1:-1:-1;6604:24:86;;;6356:75;-1:-1:-1;;;611:4324:80;;;;;;6360:12:86;611:4324:80;;;;;;;:::i;:::-;;;;;;;;;;;;;;6356:75:86;;;3326:384:28;-1:-1:-1;;;;;;;;;;;1847:1:28;611:4324:80;;3526:20:28;3522:88;;1847:1;611:4324:80;;3326:384:28:o;3522:88::-;611:4324:80;;-1:-1:-1;;;3569:30:28;;;;;3701:308:80;;611:4324;-1:-1:-1;611:4324:80;3832:13;611:4324;;;-1:-1:-1;611:4324:80;11124:30:86;;;;:::i;:::-;11173;;;-1:-1:-1;11173:30:86;;;;11182:17;;-1:-1:-1;;;;;611:4324:80;;11182:12:86;;:17;:::i;:::-;611:4324:80;;;3832:13;611:4324;;11173:30:86;3890::80;;;11173::86;3886:117:80;;;;3701:308;;:::o;3886:117::-;3936:56;611:4324;-1:-1:-1;611:4324:80;3832:13;611:4324;;;-1:-1:-1;611:4324:80;819:34:62;837:15;819:34;:::i;3936:56:80:-;3701:308;;:::o;3890:30::-;3900:20;;-1:-1:-1;3890:30:80;;;;11173::86;;;-1:-1:-1;11173:30:86;;7270:387:23;-1:-1:-1;;;;;611:4324:80;;-1:-1:-1;611:4324:80;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2887:71:23;611:4324:80;;;;-1:-1:-1;611:4324:80;;;;;;;;;;;-1:-1:-1;;;;;611:4324:80;;;;;;;;;;-1:-1:-1;;611:4324:80;7509:4:23;611:4324:80;;;966:10:27;;-1:-1:-1;;;;;611:4324:80;-1:-1:-1;7532:40:23;-1:-1:-1;;7532:40:23;7509:4;7586:11;:::o;7270:387::-;-1:-1:-1;;;;;611:4324:80;;-1:-1:-1;611:4324:80;;;;;;;;;1356:26:76;;-1:-1:-1;;;;;;;;;;;2887:71:23;611:4324:80;;3901:31:23;611:4324:80;;;;-1:-1:-1;611:4324:80;;;;;;;;;;;-1:-1:-1;;;;;611:4324:80;;;;;;;;;;-1:-1:-1;;611:4324:80;7509:4:23;611:4324:80;;;966:10:27;;-1:-1:-1;;;;;611:4324:80;;7532:40:23;-1:-1:-1;;7532:40:23;7509:4;7586:11;:::o;7432:219::-;7628:12;;;-1:-1:-1;7628:12:23;:::o;7270:387::-;-1:-1:-1;;;;;611:4324:80;;-1:-1:-1;611:4324:80;;;;;;;;;885:35;;-1:-1:-1;;;;;;;;;;;2887:71:23;611:4324:80;;3901:31:23;611:4324:80;7270:387:23;-1:-1:-1;611:4324:80;;;-1:-1:-1;;;;;;;;;;;611:4324:80;;;;;;;;-1:-1:-1;;;;;611:4324:80;;;;;;;;;;;;3901:31:23;611:4324:80;7892:388:23;-1:-1:-1;611:4324:80;;;-1:-1:-1;;;;;;;;;;;611:4324:80;;;;;;;;-1:-1:-1;;;;;611:4324:80;;;;;;;;;;;;;;;;-1:-1:-1;611:4324:80;;;;;;;;;;;-1:-1:-1;;;;;611:4324:80;;;;;;;;;;-1:-1:-1;;611:4324:80;;;966:10:27;;-1:-1:-1;;;;;611:4324:80;;8155:40:23;-1:-1:-1;;8155:40:23;611:4324:80;8209:11:23;:::o;10580:184:86:-;611:4324:80;;10303:8:60;;;:63;-1:-1:-1;10303:63:60;-1:-1:-1;;;;;611:4324:80;;10726:7:86;611:4324:80;;10736:12:86;:17;:12;;:17;:::i;:::-;611:4324:80;;;;;;10580:184:86;:::o;10303:63:60:-;611:4324:80;;;;;;;;;;14249:109:60;-1:-1:-1;14249:109:60;;-1:-1:-1;14249:109:60;;;611:4324:80;;;10303:63:60;;611:4324:80;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;611:4324:80;;;;;;;;:::i;5907:716:76:-;6030:34;5907:716;6030:34;;;;:::i;:::-;611:4324:80;;-1:-1:-1;;;6080:41:76;;-1:-1:-1;;;;;611:4324:80;;;6080:41:76;;;611:4324:80;;;;;6080:41:76;611:4324:80;;;6090:13:76;611:4324:80;;6080:41:76;;;;;;;-1:-1:-1;6080:41:76;;;5907:716;6079:42;;6075:90;;6266:27;611:4324:80;2540:111:28;6210:14:76;611:4324:80;2540:111:28;;;:::i;:::-;611:4324:80;;;;;;-1:-1:-1;;;;;611:4324:80;;-1:-1:-1;611:4324:80;;;-1:-1:-1;611:4324:80;;6210:14:76;6266:27;:::i;:::-;6080:41;6311:15;;611:4324:80;;;;-1:-1:-1;;;;;;611:4324:80;-1:-1:-1;;;;;611:4324:80;;;;;;;;;;;-1:-1:-1;;;;;611:4324:80;;;;6337:143:76;;5907:716;-1:-1:-1;6493:28:76;611:4324:80;-1:-1:-1;;;;;611:4324:80;;;;;;;6489:128:76;;5907:716;:::o;6489:128::-;6551:55;;;:::i;:::-;;5907:716::o;6337:143::-;6404:65;;;:::i;:::-;;6337:143;;;6075:90;611:4324:80;;-1:-1:-1;;;6144:10:76;;6080:41;;6144:10;6080:41;;;;;;;;;;;;;;:::i;:::-;;;;611:4324:80;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::o;7558:604:86:-;;611:4324:80;;7686:17:86;7682:83;;611:4324:80;7789:27:86;611:4324:80;7789:27:86;611:4324:80;;7789:27:86;;;;;;:::i;:::-;7860:14;;;;;:::i;:::-;611:4324:80;;;;;;;;;;;;;;;;7888:22:86;;;7884:77;;7975:21;-1:-1:-1;7975:84:86;;;;7558:604;7971:139;;;;8127:28;;;;:::i;7971:139::-;8082:17;;7789:27;8082:17;611:4324:80;8075:24:86;:::o;7975:84::-;611:4324:80;;;8009:16:86;611:4324:80;;8009:16:86;:::i;:::-;611:4324:80;;;8001:24:86;:57;;;;;7975:84;;;;;;;8001:57;8029:29;8038:8;;;8029:18;8038:8;8029:23;8038:8;;:::i;:::-;8029:18;;:::i;:::-;611:4324:80;;;;;8029:23:86;611:4324:80;;;;8029:29:86;;8001:57;;;;7884:77;7933:17;;;;;7789:27;7933:17;611:4324:80;7926:24:86;:::o;7682:83::-;7726:28;;;;:::i;611:4324:80:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;611:4324:80;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;2737:699::-;;;;;611:4324;;:::i;:::-;;;;2978:16;2974:92;;2737:699;-1:-1:-1;;3080:8:80;611:4324;-1:-1:-1;;;;;611:4324:80;;;;;3080:21;3076:85;;-1:-1:-1;611:4324:80;3218:67;;611:4324;;3257:27;;3218;;:13;;-1:-1:-1;;;;;611:4324:80;3218:13;611:4324;3218:27;3257;;;;611:4324;;;;;;;;;;;3218:67;;;3080:8;3218:67;;;:::i;:::-;;;;;;;;;;3192:192;3218:67;-1:-1:-1;3218:67:80;;;2737:699;3341:28;3303:67;3341:28;;611:4324;3341:28;;;3303:67;;:::i;:::-;3192:192;;:::i;:::-;3398:21;;2737:699;:::o;3218:67::-;3303;3218;;;;3257:27;3218:67;3257:27;3218:67;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;3076:85;-1:-1:-1;;3128:21:80;;-1:-1:-1;;3117:33:80:o;2974:92::-;3024:31;;;;;;;;;;;;;:::i;:::-;2974:92;;;;;3442:253;3552:8;611:4324;-1:-1:-1;;;;;611:4324:80;;;;;;;3552:21;3548:60;;3634:27;3552:8;611:4324;-1:-1:-1;611:4324:80;;;;;;;;;;;3634:27;;;;;;;;;3625:63;3634:27;-1:-1:-1;3634:27:80;;;3442:253;2193:25;;:34;:25;611:4324;;2193:13;611:4324;;;;;;;2193:25;:34;:::i;3634:27::-;2193:34;3634:27;;;;2193:25;3634:27;;;;;;;;;;;:::i;:::-;;;;;;14291:213:58;611:4324:80;14369:24:58;;;;14365:103;;611:4324:80;14291:213:58;:::o;14365:103::-;611:4324:80;;;;14416:41:58;;;;;;14447:2;14416:41;;;611:4324:80;;;;;14416:41:58;611:4324:80;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;10552:388:60:-;611:4324:80;;10728:8:60;;;10752:20;;10690:17;10752:20;10690:17;10752:20;10690:17;10752:20;:::o;10724:210::-;611:4324:80;;;;;;;;;;;14249:109:60;10690:17;14249:109;;10690:17;14249:109;;;611:4324:80;:::i;:::-;;;;;;;14249:109:60;611:4324:80;;;;;10911:11:60;;611:4324:80;;10886:37:60;10870:1;10886:37;;;:::o;6893:76:25:-;;;:::i;:::-;;;:::i;:::-;1805:1:28;-1:-1:-1;;;;;;;;;;;611:4324:80;6893:76:25:o;611:4324:80:-;;;;;;;:::i;:::-;-1:-1:-1;611:4324:80;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;611:4324:80;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;611:4324:80;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::o;4015:918::-;611:4324;;:::i;:::-;;4163:30;611:4324;;4163:30;;;;;;;;;;;:::i;:::-;4208:17;;611:4324;-1:-1:-1;;;;;611:4324:80;;4208:17;611:4324;;4208:54;;:103;;4015:918;4204:161;;4418:15;;;;611:4324;;;;-1:-1:-1;;;4380:54:80;;-1:-1:-1;;;;;611:4324:80;;;4380:54;;;;611:4324;;;;4380:54;4418:15;;;;611:4324;;;;;;;;4390:17;611:4324;4380:54;;;;;;;4208:17;4380:54;;;4015:918;4379:55;;4375:106;;4496:9;;4511:33;;;4208:17;4553:3;4511:33;;611:4324;;4507:44;;;;;4576:36;;;:50;:36;;:::i;:::-;611:4324;-1:-1:-1;;;;;611:4324:80;;;4576:50;;4572:119;;4709:73;4710:72;4745:36;;:33;;;:36;:::i;:::-;4710:72;:::i;:::-;4709:73;;611:4324;4709:73;4705:140;;611:4324;;4496:9;;4705:140;611:4324;;-1:-1:-1;;;4809:21:80;;611:4324;;4809:21;4572:119;611:4324;;-1:-1:-1;;;4653:23:80;;611:4324;;4653:23;4507:44;-1:-1:-1;;611:4324:80;;4380:54;611:4324;;-1:-1:-1;;;;;;611:4324:80;-1:-1:-1;;;;;611:4324:80;;;;;;;;;;-1:-1:-1;4865:26:80;;-1:-1:-1;;611:4324:80;4865:26;4909:17;4015:918;:::o;4375:106::-;4418:15;611:4324;-1:-1:-1;;;4457:13:80;;4380:54;;4457:13;4380:54;;;;;;;;;;;;;;:::i;:::-;;;;4204:161;611:4324;;-1:-1:-1;;;4334:20:80;;;;;4208:103;4266:33;;;;;611:4324;4266:45;4208:103;;6999:207:86;;611:4324:80;;9594:15:60;-1:-1:-1;9619:18:60;9652:7;9658:1;9652:7;;9648:234;;6999:207:86;9906:53:60;;;;;:::i;:::-;9977:8;;;:63;-1:-1:-1;9977:63:60;;-1:-1:-1;;;;;611:4324:80;;7168:7:86;611:4324:80;;;7178:12:86;;:17;:12;;:17;:::i;9977:63:60:-;9992:41;10025:7;9992:48;10025:7;;:::i;:::-;9992:41;14249:109;;;;;;14099:265;;9992:41;611:4324:80;;;;;9992:48:60;9977:63;;;9648:234;9695:14;;;;;:::i;:::-;611:4324:80;;;;;;;9906:53:60;14249:109;;-1:-1:-1;14249:109:60;611:4324:80;14249:109:60;;;-1:-1:-1;14249:109:60;;611:4324:80;;;;;9727:48:60;9723:149;611:4324:80;;;9795:10:60;9723:149;9648:234;;9723:149;9850:7;;;;;;:::i;:::-;9723:149;9648:234;;611:4324:80;;;;;;;:::i;:::-;-1:-1:-1;611:4324:80;;;;;;;:::o;11486:272:86:-;;611:4324:80;11308:22:60;11718:31:86;11486:272;611:4324:80;;:::i;:::-;;;;:::i;:::-;;11308:22:60;;:::i;:::-;611:4324:80;;:::i;:::-;;11718:12:86;611:4324:80;;;;;11731:17:86;611:4324:80;;;;;11731:17:86;;611:4324:80;;11718:12:86;;:31;:::i;:::-;611:4324:80;;;;;;;;;:::i;:::-;;;;;;11731:17:86;11672:79;;611:4324:80;11486:272:86;:::o;2557:104:57:-;;2641:5;;;;;;:13;2557:104;:::o;2641:13::-;;;2557:104;:::o;611:4324:80:-;;;-1:-1:-1;;;611:4324:80;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;611:4324:80;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;11513:870:60;611:4324:80;;11513:870:60;;;611:4324:80;11513:870:60;11672:7;;;;611:4324:80;11775:28:60;11795:7;;;:::i;11775:28::-;611:4324:80;:::i;:::-;;;;;;;;;;;;;;;;11877:15:60;-1:-1:-1;11873:91:60;;611:4324:80;;12233:11:60;611:4324:80;;;12027:16:60;611:4324:80;;;;;;;12027:16:60;;;;12083:7;12063:43;12083:7;;12063:28;12083:7;;:::i;:::-;12063:28;14249:109;;;;;;14099:265;;12063:28;611:4324:80;;;;;;;;;;;;;;;;;12063:43:60;12233:11;611:4324:80;-1:-1:-1;;;;;611:4324:80;;;12023:189:60;611:4324:80;;;12145:52:60;611:4324:80;12155:41:60;611:4324:80;;:::i;:::-;;;;;;;;12155:41:60;-1:-1:-1;;;;;611:4324:80;;12155:41:60;;;611:4324:80;12145:52:60;:::i;:::-;12023:189;;11873:91;611:4324:80;;-1:-1:-1;;;11919:30:60;;;;;11668:709;12283:52;611:4324:80;;12293:41:60;611:4324:80;;:::i;12293:41:60:-;-1:-1:-1;;;;;611:4324:80;;12293:41:60;;;611:4324:80;12145:52:60;:::i;12283:::-;11678:1;12349:17;;:::o;7084:141:25:-;611:4324:80;-1:-1:-1;;;;;;;;;;;611:4324:80;;;;7150:18:25;7146:73;;7084:141::o;7146:73::-;611:4324:80;;-1:-1:-1;;;7191:17:25;;;;;8587:1642:57;8658:6;;8654:45;;9401:7;10201:10;10142:26;10093;10044;9995;9946;9897;9848;611:4324:80;10189:23:57;9401:7;8663:1;611:4324:80;;;;10826:16:57;10822:99;;8587:1642;611:4324:80;;;;10938:15:57;10934:96;;8587:1642;611:4324:80;;;;11047:15:57;11043:96;;8587:1642;611:4324:80;;;;11156:15:57;11152:96;;8587:1642;611:4324:80;;;;11265:14:57;11261:93;;8587:1642;611:4324:80;;;;11371:14:57;11367:93;;8587:1642;611:4324:80;;;;11477:14:57;11473:93;;8587:1642;611:4324:80;;;11579:64:57;;8587:1642;611:4324:80;;;9858:10:57;;;;:::i;:::-;611:4324:80;;;;;9848:26:57;9907:10;;;;:::i;9897:26::-;9956:10;;;;:::i;9946:26::-;10005:10;;;;:::i;9995:26::-;10054:10;;;;:::i;10044:26::-;10103:10;;;;:::i;10093:26::-;10152:10;;;;:::i;10142:26::-;10201:10;;;:::i;11579:64::-;611:4324:80;;11579:64:57;;11473:93;611:4324:80;11511:11:57;;611:4324:80;;11473:93:57;;;;11367;611:4324:80;11405:11:57;;611:4324:80;;11367:93:57;;;;11261;611:4324:80;11299:11:57;;611:4324:80;;11261:93:57;;;;11152:96;611:4324:80;11191:12:57;;611:4324:80;;11152:96:57;;;;11043;611:4324:80;11082:12:57;;611:4324:80;;11043:96:57;;;;10934;611:4324:80;10973:12:57;;611:4324:80;;10934:96:57;;;;10822:99;10862:13;;;611:4324:80;10822:99:57;;;;12736:433:60;;;12919:10;;;;;;13151:11;;;12736:433;:::o;12912:230::-;2900:5:57;;;;;;2910;;;;611:4324:80;;;;;;;;;14249:109:60;-1:-1:-1;14249:109:60;611:4324:80;14249:109:60;;;-1:-1:-1;14249:109:60;;611:4324:80;;;;;-1:-1:-1;12996:136:60;611:4324:80;;;13055:10:60;12996:136;;12912:230;;;;12996:136;13110:7;;;;;;:::i;:::-;12996:136;;","linkReferences":{},"immutableReferences":{"57808":[{"start":1514,"length":32}],"57811":[{"start":3348,"length":32}],"58762":[{"start":1129,"length":32},{"start":3405,"length":32}],"58765":[{"start":863,"length":32},{"start":6996,"length":32}],"58768":[{"start":931,"length":32},{"start":4918,"length":32},{"start":5253,"length":32}],"58771":[{"start":999,"length":32},{"start":4765,"length":32},{"start":5379,"length":32}],"60687":[{"start":2964,"length":32},{"start":8772,"length":32}]}},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","FACTORY()":"2dd31000","HOOK_GAS_LIMIT()":"ff54740f","HOOK_RESERVE()":"557cab44","HOOK_SET_ROLE()":"6679191e","NETWORK_LIMIT_SET_ROLE()":"7d24bb27","NETWORK_REGISTRY()":"c0cd7c3e","OPERATOR_NETWORK_OPT_IN_SERVICE()":"1a80e500","OPERATOR_REGISTRY()":"83ce0322","OPERATOR_VAULT_OPT_IN_SERVICE()":"128e5d82","TYPE()":"bb24fe8a","VAULT_FACTORY()":"103f2907","VERSION()":"ffa1ad74","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","hook()":"7f5a7c7b","initialize(bytes)":"439fab91","maxNetworkLimit(bytes32)":"d15b740e","networkLimit(bytes32)":"3eb22c0f","networkLimitAt(bytes32,uint48,bytes)":"5d32a1c9","onSlash(bytes32,address,uint256,uint48,bytes)":"e49561ee","operator()":"570ca735","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","setHook(address)":"3dfd3873","setMaxNetworkLimit(uint96,uint256)":"23f752d5","setNetworkLimit(bytes32,uint256)":"02145348","stake(bytes32,address)":"fd4d447c","stakeAt(bytes32,address,uint48,bytes)":"e02f6937","staticDelegateCall(address,bytes)":"9f86fd85","supportsInterface(bytes4)":"01ffc9a7","vault()":"fbfa77cf"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operatorRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"networkRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"vaultFactory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operatorVaultOptInService\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operatorNetworkOptInService\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegatorFactory\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"entityType\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadySet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CheckpointUnorderedInsertion\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DuplicateRoleHolder\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedsMaxNetworkLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientHookGas\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingRoleHolders\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotNetwork\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotOperator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotSlasher\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressRoleHolder\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"}],\"name\":\"OnSlash\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"hook\",\"type\":\"address\"}],\"name\":\"SetHook\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"SetMaxNetworkLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"SetNetworkLimit\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HOOK_GAS_LIMIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HOOK_RESERVE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HOOK_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NETWORK_LIMIT_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NETWORK_REGISTRY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_NETWORK_OPT_IN_SERVICE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_REGISTRY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_VAULT_OPT_IN_SERVICE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TYPE\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VAULT_FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VERSION\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hook\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"}],\"name\":\"maxNetworkLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"}],\"name\":\"networkLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"networkLimitAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"hook_\",\"type\":\"address\"}],\"name\":\"setHook\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint96\",\"name\":\"identifier\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"setMaxNetworkLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"setNetworkLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"stake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hints\",\"type\":\"bytes\"}],\"name\":\"stakeAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"staticDelegateCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"CheckpointUnorderedInsertion()\":[{\"details\":\"A value was attempted to be inserted on a past checkpoint.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"OnSlash(bytes32,address,uint256,uint48)\":{\"params\":{\"amount\":\"amount of the collateral to be slashed\",\"captureTimestamp\":\"time point when the stake was captured\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"SetHook(address)\":{\"params\":{\"hook\":\"address of the hook\"}},\"SetMaxNetworkLimit(bytes32,uint256)\":{\"params\":{\"amount\":\"new maximum subnetwork's limit (how much stake the subnetwork is ready to get)\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"SetNetworkLimit(bytes32,uint256)\":{\"params\":{\"amount\":\"new subnetwork's limit (how much stake the vault curator is ready to give to the subnetwork)\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}}},\"kind\":\"dev\",\"methods\":{\"VERSION()\":{\"details\":\"Must return 1 for this one.\",\"returns\":{\"_0\":\"version of the delegator\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize(bytes)\":{\"params\":{\"data\":\"some data to use\"}},\"networkLimit(bytes32)\":{\"params\":{\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"_0\":\"limit of the subnetwork\"}},\"networkLimitAt(bytes32,uint48,bytes)\":{\"params\":{\"hint\":\"hint for checkpoint index\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\",\"timestamp\":\"time point to get the subnetwork limit at\"},\"returns\":{\"_0\":\"limit of the subnetwork at the given timestamp\"}},\"onSlash(bytes32,address,uint256,uint48,bytes)\":{\"details\":\"Only the vault's slasher can call this function.\",\"params\":{\"amount\":\"amount of the collateral slashed\",\"captureTimestamp\":\"time point when the stake was captured\",\"data\":\"some additional data\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"setHook(address)\":{\"details\":\"Only a HOOK_SET_ROLE holder can call this function. The hook can have arbitrary logic under certain functions, however, it doesn't affect the stake guarantees.\",\"params\":{\"hook\":\"address of the hook\"}},\"setMaxNetworkLimit(uint96,uint256)\":{\"details\":\"Only a network can call this function.\",\"params\":{\"amount\":\"new maximum subnetwork's limit\"}},\"setNetworkLimit(bytes32,uint256)\":{\"details\":\"Only a NETWORK_LIMIT_SET_ROLE holder can call this function.\",\"params\":{\"amount\":\"new limit of the subnetwork\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"stake(bytes32,address)\":{\"details\":\"Warning: this function is not safe to use for stake capturing, as it can change by the end of the block.\",\"params\":{\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"_0\":\"slashable stake until the end of the next epoch\"}},\"stakeAt(bytes32,address,uint48,bytes)\":{\"details\":\"Warning: it is not safe to use timestamp >= current one for the stake capturing, as it can change later.\",\"params\":{\"hints\":\"hints for the checkpoints' indexes\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\",\"timestamp\":\"time point to capture the stake at\"},\"returns\":{\"_0\":\"slashable stake at the given timestamp until the end of the consequent epoch\"}},\"staticDelegateCall(address,bytes)\":{\"details\":\"It allows to use this contract's storage on-chain.\",\"params\":{\"data\":\"data to make a delegatecall with\",\"target\":\"address of the contract to make a delegatecall to\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"stateVariables\":{\"NETWORK_LIMIT_SET_ROLE\":{\"return\":\"identifier of the subnetwork limit setter role\",\"returns\":{\"_0\":\"identifier of the subnetwork limit setter role\"}},\"OPERATOR_REGISTRY\":{\"return\":\"address of the operator registry\",\"returns\":{\"_0\":\"address of the operator registry\"}},\"operator\":{\"return\":\"address of the operator\",\"returns\":{\"_0\":\"address of the operator\"}}},\"version\":1},\"userdoc\":{\"events\":{\"OnSlash(bytes32,address,uint256,uint48)\":{\"notice\":\"Emitted when a slash happens.\"},\"SetHook(address)\":{\"notice\":\"Emitted when a hook is set.\"},\"SetMaxNetworkLimit(bytes32,uint256)\":{\"notice\":\"Emitted when a subnetwork's maximum limit is set.\"},\"SetNetworkLimit(bytes32,uint256)\":{\"notice\":\"Emitted when a subnetwork's limit is set.\"}},\"kind\":\"user\",\"methods\":{\"FACTORY()\":{\"notice\":\"Get the factory's address.\"},\"HOOK_GAS_LIMIT()\":{\"notice\":\"Get a gas limit for the hook.\"},\"HOOK_RESERVE()\":{\"notice\":\"Get a reserve gas between the gas limit check and the hook's execution.\"},\"HOOK_SET_ROLE()\":{\"notice\":\"Get a hook setter's role.\"},\"NETWORK_LIMIT_SET_ROLE()\":{\"notice\":\"Get a subnetwork limit setter's role.\"},\"NETWORK_REGISTRY()\":{\"notice\":\"Get the network registry's address.\"},\"OPERATOR_NETWORK_OPT_IN_SERVICE()\":{\"notice\":\"Get the operator-network opt-in service's address.\"},\"OPERATOR_REGISTRY()\":{\"notice\":\"Get the operator registry's address.\"},\"OPERATOR_VAULT_OPT_IN_SERVICE()\":{\"notice\":\"Get the operator-vault opt-in service's address.\"},\"TYPE()\":{\"notice\":\"Get the entity's type.\"},\"VAULT_FACTORY()\":{\"notice\":\"Get the vault factory's address.\"},\"VERSION()\":{\"notice\":\"Get a version of the delegator (different versions mean different interfaces).\"},\"hook()\":{\"notice\":\"Get the hook's address.\"},\"initialize(bytes)\":{\"notice\":\"Initialize this entity contract by using a given data.\"},\"maxNetworkLimit(bytes32)\":{\"notice\":\"Get a particular subnetwork's maximum limit (meaning the subnetwork is not ready to get more as a stake).\"},\"networkLimit(bytes32)\":{\"notice\":\"Get a subnetwork's limit (how much stake the vault curator is ready to give to the subnetwork).\"},\"networkLimitAt(bytes32,uint48,bytes)\":{\"notice\":\"Get a subnetwork's limit at a given timestamp using a hint (how much stake the vault curator is ready to give to the subnetwork).\"},\"onSlash(bytes32,address,uint256,uint48,bytes)\":{\"notice\":\"Called when a slash happens.\"},\"operator()\":{\"notice\":\"Get an operator managing the vault's funds.\"},\"setHook(address)\":{\"notice\":\"Set a new hook.\"},\"setMaxNetworkLimit(uint96,uint256)\":{\"notice\":\"Set a maximum limit for a subnetwork (how much stake the subnetwork is ready to get). identifier identifier of the subnetwork\"},\"setNetworkLimit(bytes32,uint256)\":{\"notice\":\"Set a subnetwork's limit (how much stake the vault curator is ready to give to the subnetwork).\"},\"stake(bytes32,address)\":{\"notice\":\"Get a stake that a given subnetwork will be able to slash for a certain operator until the end of the next epoch (if no cross-slashing and no slashings by the subnetwork).\"},\"stakeAt(bytes32,address,uint48,bytes)\":{\"notice\":\"Get a stake that a given subnetwork could be able to slash for a certain operator at a given timestamp until the end of the consequent epoch using hints (if no cross-slashing and no slashings by the subnetwork).\"},\"staticDelegateCall(address,bytes)\":{\"notice\":\"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data).\"},\"vault()\":{\"notice\":\"Get the vault's address.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/delegator/OperatorSpecificDelegator.sol\":\"OperatorSpecificDelegator\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://942dad22fbdc1669f025540ba63aa3ccfad5f8458fc5d4525b31ebf272e7af45\",\"dweb:/ipfs/Qmdo4X2M82aM3AMoW2kf2jhYkSCyC4T1pHNd6obdsDFnAB\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45\",\"dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26\",\"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c\",\"dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0xbdc5e074d7dd6678f67e92b1a51a20226801a407b0e1af3da367c5d1ff4519ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a36cca6b22fff3db16fc789ff6c60eea71d4b156065d4d0c83a0bc5e91a77a8b\",\"dweb:/ipfs/QmYN3exd5AemxjBrN8XMB1p5LbbE16uC3sjbYjwi8AjcGR\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0xc7755af115020049e4140f224f9ee88d7e1799ffb0646f37bf0df24bf6213f58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f09bf94d5274334ec021f61a04659db303f31e60460e14b709c9bf187740111\",\"dweb:/ipfs/QmNvgomZYUwFAt4cZbPWAiTeSZQreGehY9BK5xyVJsUttb\"]},\"src/contracts/common/Entity.sol\":{\"keccak256\":\"0x3d61a932995b8443381f3950542d388223a2c26dd5d29a3274dea3baa7388bd7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7cdf5f03ca72fd263fd32ff59c8d88ddca911ae83896a287d10772c1bbe9b138\",\"dweb:/ipfs/QmbP84r5BWT1Rn9AYTntWSf3xUMTTCohTZJFhbBhDXFoHa\"]},\"src/contracts/common/StaticDelegateCallable.sol\":{\"keccak256\":\"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764\",\"dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD\"]},\"src/contracts/delegator/BaseDelegator.sol\":{\"keccak256\":\"0x7c54d491fdd4415b764a9c8defa068e56d4c0c8c9419be0053a1d377669290e8\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://9238bfbad0f6eeb0dc7727724de14380f1980b395902269703d5e2ef07e52e10\",\"dweb:/ipfs/QmPJn1V4HNXcEghYvogGuSTF24dSQUPosR5qtsXcmNqRm3\"]},\"src/contracts/delegator/OperatorSpecificDelegator.sol\":{\"keccak256\":\"0x630ce62fa30b9f3349ab7a8cf8dbf041319febc6dd757be2f94d3d25944ed328\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c2ac59d47ce57d2a6819ae9833e1a618a371eccff93eb5ab367b201b01f42bfa\",\"dweb:/ipfs/QmdBpGMBivpNPv2WbH8vnCUy5xkVeaxQvGgqi33vKCz1kA\"]},\"src/contracts/libraries/Checkpoints.sol\":{\"keccak256\":\"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609\",\"dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE\"]},\"src/contracts/libraries/Subnetwork.sol\":{\"keccak256\":\"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56\",\"dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32\"]},\"src/interfaces/common/IEntity.sol\":{\"keccak256\":\"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b\",\"dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv\"]},\"src/interfaces/common/IMigratableEntity.sol\":{\"keccak256\":\"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c\",\"dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds\"]},\"src/interfaces/common/IRegistry.sol\":{\"keccak256\":\"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014\",\"dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK\"]},\"src/interfaces/common/IStaticDelegateCallable.sol\":{\"keccak256\":\"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516\",\"dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi\"]},\"src/interfaces/delegator/IBaseDelegator.sol\":{\"keccak256\":\"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2\",\"dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8\"]},\"src/interfaces/delegator/IDelegatorHook.sol\":{\"keccak256\":\"0xc51aa8d7d1f6c8043ee819b7aeb86da0e993912e1442098df897e299f01f9f46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://adddf5cb2ba282aeb576b26efb28640f865a1721cc9b6eee8b3ee0457a2c9780\",\"dweb:/ipfs/QmNYgAmnLRwWZbhTuQhZs9rx4zcme1df5mEepkrniorSoW\"]},\"src/interfaces/delegator/IOperatorSpecificDelegator.sol\":{\"keccak256\":\"0x72075cab585dc17240cc3e32bc99b92f0d5627ddd988fed680e3e1a52d5a01e4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7448bc90699409ae61d85216b5efc2143a37f0f73354be2aea993bc54afca441\",\"dweb:/ipfs/QmXE4gAxM8pHosZK8mcTcj17puBx484meDCcmrDePskGHZ\"]},\"src/interfaces/service/IOptInService.sol\":{\"keccak256\":\"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337\",\"dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24\"]},\"src/interfaces/vault/IVault.sol\":{\"keccak256\":\"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9\",\"dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R\"]},\"src/interfaces/vault/IVaultStorage.sol\":{\"keccak256\":\"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e\",\"dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"operatorRegistry","type":"address"},{"internalType":"address","name":"networkRegistry","type":"address"},{"internalType":"address","name":"vaultFactory","type":"address"},{"internalType":"address","name":"operatorVaultOptInService","type":"address"},{"internalType":"address","name":"operatorNetworkOptInService","type":"address"},{"internalType":"address","name":"delegatorFactory","type":"address"},{"internalType":"uint64","name":"entityType","type":"uint64"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"inputs":[],"type":"error","name":"AlreadySet"},{"inputs":[],"type":"error","name":"CheckpointUnorderedInsertion"},{"inputs":[],"type":"error","name":"DuplicateRoleHolder"},{"inputs":[],"type":"error","name":"ExceedsMaxNetworkLimit"},{"inputs":[],"type":"error","name":"InsufficientHookGas"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"MissingRoleHolders"},{"inputs":[],"type":"error","name":"NotInitialized"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"NotNetwork"},{"inputs":[],"type":"error","name":"NotOperator"},{"inputs":[],"type":"error","name":"NotSlasher"},{"inputs":[],"type":"error","name":"NotVault"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintDowncast"},{"inputs":[],"type":"error","name":"ZeroAddressRoleHolder"},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint48","name":"captureTimestamp","type":"uint48","indexed":false}],"type":"event","name":"OnSlash","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[{"internalType":"address","name":"hook","type":"address","indexed":true}],"type":"event","name":"SetHook","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"SetMaxNetworkLimit","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"SetNetworkLimit","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HOOK_GAS_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HOOK_RESERVE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HOOK_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"NETWORK_LIMIT_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"NETWORK_REGISTRY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_NETWORK_OPT_IN_SERVICE","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_REGISTRY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_VAULT_OPT_IN_SERVICE","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"TYPE","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VAULT_FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"VERSION","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"hook","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"}],"stateMutability":"view","type":"function","name":"maxNetworkLimit","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"}],"stateMutability":"view","type":"function","name":"networkLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"networkLimitAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint48","name":"captureTimestamp","type":"uint48"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"onSlash"},{"inputs":[],"stateMutability":"view","type":"function","name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"address","name":"hook_","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setHook"},{"inputs":[{"internalType":"uint96","name":"identifier","type":"uint96"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setMaxNetworkLimit"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setNetworkLimit"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"stake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hints","type":"bytes"}],"stateMutability":"view","type":"function","name":"stakeAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"staticDelegateCall"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"vault","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"VERSION()":{"details":"Must return 1 for this one.","returns":{"_0":"version of the delegator"}},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"initialize(bytes)":{"params":{"data":"some data to use"}},"networkLimit(bytes32)":{"params":{"subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"_0":"limit of the subnetwork"}},"networkLimitAt(bytes32,uint48,bytes)":{"params":{"hint":"hint for checkpoint index","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)","timestamp":"time point to get the subnetwork limit at"},"returns":{"_0":"limit of the subnetwork at the given timestamp"}},"onSlash(bytes32,address,uint256,uint48,bytes)":{"details":"Only the vault's slasher can call this function.","params":{"amount":"amount of the collateral slashed","captureTimestamp":"time point when the stake was captured","data":"some additional data","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"}},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"setHook(address)":{"details":"Only a HOOK_SET_ROLE holder can call this function. The hook can have arbitrary logic under certain functions, however, it doesn't affect the stake guarantees.","params":{"hook":"address of the hook"}},"setMaxNetworkLimit(uint96,uint256)":{"details":"Only a network can call this function.","params":{"amount":"new maximum subnetwork's limit"}},"setNetworkLimit(bytes32,uint256)":{"details":"Only a NETWORK_LIMIT_SET_ROLE holder can call this function.","params":{"amount":"new limit of the subnetwork","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"}},"stake(bytes32,address)":{"details":"Warning: this function is not safe to use for stake capturing, as it can change by the end of the block.","params":{"operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"_0":"slashable stake until the end of the next epoch"}},"stakeAt(bytes32,address,uint48,bytes)":{"details":"Warning: it is not safe to use timestamp >= current one for the stake capturing, as it can change later.","params":{"hints":"hints for the checkpoints' indexes","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)","timestamp":"time point to capture the stake at"},"returns":{"_0":"slashable stake at the given timestamp until the end of the consequent epoch"}},"staticDelegateCall(address,bytes)":{"details":"It allows to use this contract's storage on-chain.","params":{"data":"data to make a delegatecall with","target":"address of the contract to make a delegatecall to"}},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."}},"version":1},"userdoc":{"kind":"user","methods":{"FACTORY()":{"notice":"Get the factory's address."},"HOOK_GAS_LIMIT()":{"notice":"Get a gas limit for the hook."},"HOOK_RESERVE()":{"notice":"Get a reserve gas between the gas limit check and the hook's execution."},"HOOK_SET_ROLE()":{"notice":"Get a hook setter's role."},"NETWORK_LIMIT_SET_ROLE()":{"notice":"Get a subnetwork limit setter's role."},"NETWORK_REGISTRY()":{"notice":"Get the network registry's address."},"OPERATOR_NETWORK_OPT_IN_SERVICE()":{"notice":"Get the operator-network opt-in service's address."},"OPERATOR_REGISTRY()":{"notice":"Get the operator registry's address."},"OPERATOR_VAULT_OPT_IN_SERVICE()":{"notice":"Get the operator-vault opt-in service's address."},"TYPE()":{"notice":"Get the entity's type."},"VAULT_FACTORY()":{"notice":"Get the vault factory's address."},"VERSION()":{"notice":"Get a version of the delegator (different versions mean different interfaces)."},"hook()":{"notice":"Get the hook's address."},"initialize(bytes)":{"notice":"Initialize this entity contract by using a given data."},"maxNetworkLimit(bytes32)":{"notice":"Get a particular subnetwork's maximum limit (meaning the subnetwork is not ready to get more as a stake)."},"networkLimit(bytes32)":{"notice":"Get a subnetwork's limit (how much stake the vault curator is ready to give to the subnetwork)."},"networkLimitAt(bytes32,uint48,bytes)":{"notice":"Get a subnetwork's limit at a given timestamp using a hint (how much stake the vault curator is ready to give to the subnetwork)."},"onSlash(bytes32,address,uint256,uint48,bytes)":{"notice":"Called when a slash happens."},"operator()":{"notice":"Get an operator managing the vault's funds."},"setHook(address)":{"notice":"Set a new hook."},"setMaxNetworkLimit(uint96,uint256)":{"notice":"Set a maximum limit for a subnetwork (how much stake the subnetwork is ready to get). identifier identifier of the subnetwork"},"setNetworkLimit(bytes32,uint256)":{"notice":"Set a subnetwork's limit (how much stake the vault curator is ready to give to the subnetwork)."},"stake(bytes32,address)":{"notice":"Get a stake that a given subnetwork will be able to slash for a certain operator until the end of the next epoch (if no cross-slashing and no slashings by the subnetwork)."},"stakeAt(bytes32,address,uint48,bytes)":{"notice":"Get a stake that a given subnetwork could be able to slash for a certain operator at a given timestamp until the end of the consequent epoch using hints (if no cross-slashing and no slashings by the subnetwork)."},"staticDelegateCall(address,bytes)":{"notice":"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data)."},"vault()":{"notice":"Get the vault's address."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/delegator/OperatorSpecificDelegator.sol":"OperatorSpecificDelegator"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol":{"keccak256":"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74","urls":["bzz-raw://942dad22fbdc1669f025540ba63aa3ccfad5f8458fc5d4525b31ebf272e7af45","dweb:/ipfs/Qmdo4X2M82aM3AMoW2kf2jhYkSCyC4T1pHNd6obdsDFnAB"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8","urls":["bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45","dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41","urls":["bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26","dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe","urls":["bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c","dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol":{"keccak256":"0xbdc5e074d7dd6678f67e92b1a51a20226801a407b0e1af3da367c5d1ff4519ad","urls":["bzz-raw://a36cca6b22fff3db16fc789ff6c60eea71d4b156065d4d0c83a0bc5e91a77a8b","dweb:/ipfs/QmYN3exd5AemxjBrN8XMB1p5LbbE16uC3sjbYjwi8AjcGR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0xc7755af115020049e4140f224f9ee88d7e1799ffb0646f37bf0df24bf6213f58","urls":["bzz-raw://7f09bf94d5274334ec021f61a04659db303f31e60460e14b709c9bf187740111","dweb:/ipfs/QmNvgomZYUwFAt4cZbPWAiTeSZQreGehY9BK5xyVJsUttb"],"license":"MIT"},"src/contracts/common/Entity.sol":{"keccak256":"0x3d61a932995b8443381f3950542d388223a2c26dd5d29a3274dea3baa7388bd7","urls":["bzz-raw://7cdf5f03ca72fd263fd32ff59c8d88ddca911ae83896a287d10772c1bbe9b138","dweb:/ipfs/QmbP84r5BWT1Rn9AYTntWSf3xUMTTCohTZJFhbBhDXFoHa"],"license":"BUSL-1.1"},"src/contracts/common/StaticDelegateCallable.sol":{"keccak256":"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90","urls":["bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764","dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD"],"license":"BUSL-1.1"},"src/contracts/delegator/BaseDelegator.sol":{"keccak256":"0x7c54d491fdd4415b764a9c8defa068e56d4c0c8c9419be0053a1d377669290e8","urls":["bzz-raw://9238bfbad0f6eeb0dc7727724de14380f1980b395902269703d5e2ef07e52e10","dweb:/ipfs/QmPJn1V4HNXcEghYvogGuSTF24dSQUPosR5qtsXcmNqRm3"],"license":"BUSL-1.1"},"src/contracts/delegator/OperatorSpecificDelegator.sol":{"keccak256":"0x630ce62fa30b9f3349ab7a8cf8dbf041319febc6dd757be2f94d3d25944ed328","urls":["bzz-raw://c2ac59d47ce57d2a6819ae9833e1a618a371eccff93eb5ab367b201b01f42bfa","dweb:/ipfs/QmdBpGMBivpNPv2WbH8vnCUy5xkVeaxQvGgqi33vKCz1kA"],"license":"BUSL-1.1"},"src/contracts/libraries/Checkpoints.sol":{"keccak256":"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c","urls":["bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609","dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE"],"license":"MIT"},"src/contracts/libraries/Subnetwork.sol":{"keccak256":"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe","urls":["bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56","dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32"],"license":"MIT"},"src/interfaces/common/IEntity.sol":{"keccak256":"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21","urls":["bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b","dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv"],"license":"MIT"},"src/interfaces/common/IMigratableEntity.sol":{"keccak256":"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4","urls":["bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c","dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds"],"license":"MIT"},"src/interfaces/common/IRegistry.sol":{"keccak256":"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb","urls":["bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014","dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK"],"license":"MIT"},"src/interfaces/common/IStaticDelegateCallable.sol":{"keccak256":"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5","urls":["bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516","dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi"],"license":"MIT"},"src/interfaces/delegator/IBaseDelegator.sol":{"keccak256":"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee","urls":["bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2","dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8"],"license":"MIT"},"src/interfaces/delegator/IDelegatorHook.sol":{"keccak256":"0xc51aa8d7d1f6c8043ee819b7aeb86da0e993912e1442098df897e299f01f9f46","urls":["bzz-raw://adddf5cb2ba282aeb576b26efb28640f865a1721cc9b6eee8b3ee0457a2c9780","dweb:/ipfs/QmNYgAmnLRwWZbhTuQhZs9rx4zcme1df5mEepkrniorSoW"],"license":"MIT"},"src/interfaces/delegator/IOperatorSpecificDelegator.sol":{"keccak256":"0x72075cab585dc17240cc3e32bc99b92f0d5627ddd988fed680e3e1a52d5a01e4","urls":["bzz-raw://7448bc90699409ae61d85216b5efc2143a37f0f73354be2aea993bc54afca441","dweb:/ipfs/QmXE4gAxM8pHosZK8mcTcj17puBx484meDCcmrDePskGHZ"],"license":"MIT"},"src/interfaces/service/IOptInService.sol":{"keccak256":"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a","urls":["bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337","dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24"],"license":"MIT"},"src/interfaces/vault/IVault.sol":{"keccak256":"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235","urls":["bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9","dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R"],"license":"MIT"},"src/interfaces/vault/IVaultStorage.sol":{"keccak256":"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22","urls":["bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e","dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6"],"license":"MIT"}},"version":1},"id":80} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[{"name":"operatorRegistry","type":"address","internalType":"address"},{"name":"networkRegistry","type":"address","internalType":"address"},{"name":"vaultFactory","type":"address","internalType":"address"},{"name":"operatorVaultOptInService","type":"address","internalType":"address"},{"name":"operatorNetworkOptInService","type":"address","internalType":"address"},{"name":"delegatorFactory","type":"address","internalType":"address"},{"name":"entityType","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"HOOK_GAS_LIMIT","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"HOOK_RESERVE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"HOOK_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"NETWORK_LIMIT_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"NETWORK_REGISTRY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_NETWORK_OPT_IN_SERVICE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_REGISTRY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_VAULT_OPT_IN_SERVICE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"TYPE","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"VAULT_FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"VERSION","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"pure"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"hook","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"maxNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"networkLimit","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"networkLimitAt","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"onSlash","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","internalType":"uint48"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"operator","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setHook","inputs":[{"name":"hook_","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMaxNetworkLimit","inputs":[{"name":"identifier","type":"uint96","internalType":"uint96"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stake","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"stakeAt","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hints","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"staticDelegateCall","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"vault","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OnSlash","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","indexed":false,"internalType":"uint48"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SetHook","inputs":[{"name":"hook","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SetMaxNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SetNetworkLimit","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"AlreadySet","inputs":[]},{"type":"error","name":"CheckpointUnorderedInsertion","inputs":[]},{"type":"error","name":"DuplicateRoleHolder","inputs":[]},{"type":"error","name":"ExceedsMaxNetworkLimit","inputs":[]},{"type":"error","name":"InsufficientHookGas","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"MissingRoleHolders","inputs":[]},{"type":"error","name":"NotInitialized","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"NotNetwork","inputs":[]},{"type":"error","name":"NotOperator","inputs":[]},{"type":"error","name":"NotSlasher","inputs":[]},{"type":"error","name":"NotVault","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ZeroAddressRoleHolder","inputs":[]}],"bytecode":{"object":"0x610160346101c2576001600160401b0390601f6129f038819003918201601f191683019190848311848410176101c6578160e092859260409586528339810103126101c25761004d826101da565b9061005a602084016101da565b6100658285016101da565b90610072606086016101da565b9561007f608087016101da565b9560c061008e60a083016101da565b9101519180831683036101c2577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff82891c166101b157808083160361016d575b50505060805260a05260c05260e052610100938452610120928352610140918252519161280193846101ef8539608051846105ea015260a05184610d14015260c0518481816104690152610d4d015260e05184818161035f0152611b540152518381816103a30152818161133601526114850152518281816103e70152818161129d0152611503015251818181610b94015261220c0152f35b6001600160401b0319909116811790915585519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80806100d4565b875163f92ee8a960e01b8152600490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101c25756fe60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a714610224578063021453481461021f578063103f29071461021a578063128e5d82146102155780631a80e5001461021057806323f752d51461020b578063248a9ca3146102065780632dd31000146102015780632f2ff15d146101fc57806336568abe146101f75780633dfd3873146101f25780633eb22c0f146101ed578063439fab91146101e8578063557cab44146101e3578063570ca735146101de5780635d32a1c9146101d95780636679191e146101d45780637d24bb27146101cf5780637f5a7c7b146101ca57806383ce0322146101c557806391d14854146101c05780639f86fd85146101bb578063a217fddf146101b6578063bb24fe8a146101b1578063c0cd7c3e146101ac578063d15b740e146101a7578063d547741f146101a2578063e02f69371461019d578063e49561ee14610198578063fbfa77cf14610193578063fd4d447c1461018e578063ff54740f146101895763ffa1ad7414610184575f80fd5b6110aa565b61108d565b611063565b61103c565b610e51565b610df2565b610da6565b610d7c565b610d38565b610cf5565b610cdb565b610c21565b610bc3565b610b7f565b610b57565b610b1e565b610ae4565b610a89565b61096c565b610950565b610818565b6107ba565b6106c1565b610676565b61062a565b6105d5565b61059c565b610416565b6103d2565b61038e565b61034a565b61027e565b3461027a57602036600319011261027a5760043563ffffffff60e01b811680910361027a57602090637965db0b60e01b8114908115610269575b506040519015158152f35b6301ffc9a760e01b1490505f61025e565b5f80fd5b3461027a5760408060031936011261027a5760043590602435906102a0611578565b825f526002602052805f2054821161033a57825f526003602052816102c6825f20611a9c565b1461032a5781610325916103157e899d104fc3d8820bd96540612bcc5c448c8837b13b9f7faa43ad0728f0c14f94610306875f52600360205260405f2090565b61030f42611fc5565b90611677565b5050519081529081906020820190565b0390a2005b5163a741a04560e01b8152600490fd5b51631eefc06360e31b8152600490fd5b3461027a575f36600319011261027a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461027a575f36600319011261027a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461027a575f36600319011261027a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461027a57604036600319011261027a576004356001600160601b038116810361027a5760243590610446611739565b6040516302910f8b60e31b81523360048201526020816024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa908115610597575f91610568575b5015610556576001600160601b03166bffffffffffffffffffffffff193360601b161790806104d0835f52600260205260405f2090565b541461054457610529817fc67e7929681aa1bccd63f52b3799bf5805f3009f197db6fdf584b14f7fbf608c9261050e855f52600260205260405f2090565b556105198185611768565b6040519081529081906020820190565b0390a261054260015f8051602061278c83398151915255565b005b60405163a741a04560e01b8152600490fd5b6040516323d53b9760e21b8152600490fd5b61058a915060203d602011610590575b61058281836109f8565b8101906110c5565b5f610499565b503d610578565b6110dd565b3461027a57602036600319011261027a576004355f525f8051602061276c8339815191526020526020600160405f200154604051908152f35b3461027a575f36600319011261027a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6001600160a01b0381160361027a57565b3461027a57604036600319011261027a5761054260243560043561064d82610619565b805f525f8051602061276c833981519152602052610671600160405f2001546115d4565b6119d4565b3461027a57604036600319011261027a5760243561069381610619565b336001600160a01b038216036106af5761054290600435611a0a565b60405163334bd91960e11b8152600490fd5b3461027a57602036600319011261027a576004356106de81610619565b6106e6611739565b335f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c60205260409020547fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c9060ff161561079c57506001546001600160a01b039182169181168214610544576001600160a01b03191681176001557f5bbb1d3ebb6a3ad2a0f17ff35e579a83af60604d1d3c2a4c83c62adecadf666d5f80a260015f8051602061278c83398151915255005b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b3461027a57602036600319011261027a576004355f52600360205260206107e360405f20611a9c565b604051908152f35b9181601f8401121561027a578235916001600160401b03831161027a576020838186019501011161027a57565b3461027a57602036600319011261027a576001600160401b0360043581811161027a576108499036906004016107eb565b5f805160206127ac833981519152549260ff8460401c1615931680159081610948575b600114908161093e575b159081610935575b50610923575f805160206127ac833981519152805467ffffffffffffffff191660011790556108b191836108ff57611b1f565b6108b757005b5f805160206127ac833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f805160206127ac833981519152805460ff60401b1916600160401b179055611b1f565b60405163f92ee8a960e01b8152600490fd5b9050155f61087e565b303b159150610876565b84915061086c565b3461027a575f36600319011261027a576020604051614e208152f35b3461027a575f36600319011261027a576004546040516001600160a01b039091168152602090f35b6064359065ffffffffffff8216820361027a57565b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b038211176109d857604052565b6109a9565b606081019081106001600160401b038211176109d857604052565b90601f801991011681019081106001600160401b038211176109d857604052565b60405190610a26826109bd565b565b6001600160401b0381116109d857601f01601f191660200190565b81601f8201121561027a57803590610a5a82610a28565b92610a6860405194856109f8565b8284526020838301011161027a57815f926020809301838601378301015290565b3461027a57606036600319011261027a5760243565ffffffffffff8116810361027a576044356001600160401b03811161027a57602091610ad16107e3923690600401610a43565b906004355f526003845260405f20611c8e565b3461027a575f36600319011261027a5760206040517fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c8152f35b3461027a575f36600319011261027a5760206040517e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf8152f35b3461027a575f36600319011261027a576001546040516001600160a01b039091168152602090f35b3461027a575f36600319011261027a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461027a57604036600319011261027a57602060ff610c15602435610be781610619565b6004355f525f8051602061276c833981519152845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b3461027a5760408060031936011261027a57600435610c3f81610619565b602435906001600160401b03821161027a575f8091610c65610cc99436906004016107eb565b908187519283928337810184815203915af43d15610cd157610cbb3d610c8a81610a28565b90610c97865192836109f8565b81523d5f602083013e5b845194859315156020850152808401526060830190611101565b03601f1981018352826109f8565b805190602001fd5b610cbb6060610ca1565b3461027a575f36600319011261027a5760206040515f8152f35b3461027a575f36600319011261027a5760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461027a575f36600319011261027a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461027a57602036600319011261027a576004355f526002602052602060405f2054604051908152f35b3461027a57604036600319011261027a57610542602435600435610dc982610619565b805f525f8051602061276c833981519152602052610ded600160405f2001546115d4565b611a0a565b3461027a57608036600319011261027a57602435610e0f81610619565b6044359065ffffffffffff8216820361027a57606435906001600160401b03821161027a57602092610e486107e3933690600401610a43565b91600435611227565b3461027a5760a036600319011261027a57602435600435610e7182610619565b60443591610e7d610994565b90608435906001600160401b03821161027a57610e9f60049236908401610a43565b610ea7611739565b5f54602090610ecc90610ec0906001600160a01b031681565b6001600160a01b031690565b60405163b134427160e01b815294859182905afa928315610597575f9361100b575b506001600160a01b039283163303610ff9576001546001600160a01b0316838116610f6e575b50506040805195865265ffffffffffff909316602086015216927f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed91819081015b0390a361054260015f8051602061278c83398151915255565b909360405194610fa586610f97602082019363724ab0f760e11b8552858c898d602487016113d1565b03601f1981018852876109f8565b62042e305a10610fe7575f610f55938192827f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed9951926203d090f15093610f14565b604051638072475160e01b8152600490fd5b60405163dabc4ad960e01b8152600490fd5b61102e91935060203d602011611035575b61102681836109f8565b8101906113bc565b915f610eee565b503d61101c565b3461027a575f36600319011261027a575f546040516001600160a01b039091168152602090f35b3461027a57604036600319011261027a5760206107e360243561108581610619565b60043561144e565b3461027a575f36600319011261027a5760206040516203d0908152f35b3461027a575f36600319011261027a57602060405160018152f35b9081602091031261027a5751801515810361027a5790565b6040513d5f823e3d90fd5b906110fe92915f52600360205260405f20611c8e565b90565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b60405190611132826109bd565b60606020838281520152565b81601f8201121561027a5780519061115582610a28565b9261116360405194856109f8565b8284526020838301011161027a57815f9260208093018386015e8301015290565b9060208282031261027a5781516001600160401b039283821161027a57019060408282031261027a57604051926111ba846109bd565b825181811161027a57826111cf91850161113e565b8452602083015190811161027a576111e7920161113e565b602082015290565b6001600160a01b0391821681529116602082015265ffffffffffff90911660408201526080606082018190526110fe92910190611101565b9261123790929192828486611e46565b929093611242611125565b93805180611395575b505084159384156112ff575b841561126e575b505050506112695790565b505f90565b602080949550611299910151604051958694859463530e1d4360e01b865260601c90600486016111ef565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610597575f916112e0575b50155f80808061125e565b6112f9915060203d6020116105905761058281836109f8565b5f6112d5565b5f549094506001600160a01b0316602084865192611332604051948593849363530e1d4360e01b855289600486016111ef565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610597575f91611376575b501593611257565b61138f915060203d6020116105905761058281836109f8565b5f61136e565b6113a9929550602080918301019101611184565b925f8061124b565b5190610a2682610619565b9081602091031261027a57516110fe81610619565b919360a0936110fe969565ffffffffffff938552600180871b0316602085015260408401521660608201528160808201520190611101565b634e487b7160e01b5f52601160045260245ffd5b8115611427570490565b634e487b7160e01b5f52601260045260245ffd5b906001820180921161144957565b611409565b5f546040516308834cb560e21b8082526001600160a01b0385811660048401529283166024830152929392602092909183816044817f000000000000000000000000000000000000000000000000000000000000000086165afa908115610597575f9161155b575b50159182156114d7575b505090506114d1576110fe91611f41565b50505f90565b6040519081526001600160a01b0385166004820152606086901c602482015291508290829060449082907f0000000000000000000000000000000000000000000000000000000000000000165afa918215610597575f9261153e575b505015805f806114c0565b6115549250803d106105905761058281836109f8565b5f80611533565b6115729150843d86116105905761058281836109f8565b5f6114b6565b335f9081527f72a65082a5691803ab2b62c9bc729b34205ba1b183d950896526b2fd8714d0c7602052604090207e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf9060ff905b54161561079c5750565b5f8181525f8051602061276c83398151915260209081526040808320338452909152902060ff906115ca565b634e487b7160e01b5f52603260045260245ffd5b8054821015611629575f5260205f2001905f90565b611600565b90815491600160401b8310156109d85782611651916001610a2695018155611614565b90919082549060031b91821b915f19901b1916179055565b5f1981019190821161144957565b90929192600182019081548015611709575b508461169484611ff7565b509490928454936116a483611a9c565b96816116f4575b50156116d1575050505f1981019081116114495761165185916116cd93611614565b9190565b6116cd9492936116ed926001600160d01b0390911691906124d6565b505061162e565b65ffffffffffff83811691161490505f6116ab565b600160401b8110156109d8578060016117259201845583611614565b8154905f199060031b1b191690555f611689565b5f8051602061278c83398151915260028154146117565760029055565b604051633ee5aeb560e01b8152600490fd5b90815f52600360205260405f208161177f82611ff7565b9193905083156117dd5761179f916001600160d01b031690600101611614565b90549060031b1c5b826117d3575b50506117b7575050565b6117cf915f52600360205260405f2061030f42611fc5565b5050565b119050815f6117ad565b50505f6117a7565b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260409020545f8051602061276c8339815191529060ff166114d1575f808052602091825260408082206001600160a01b038516835290925220805460ff1916600117905533906001600160a01b03165f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b6001600160a01b0381165f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c602052604090207fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c905f8051602061276c8339815191529060ff905b541661195f575f828152602091825260408082206001600160a01b038616835290925220805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b5050505f90565b6001600160a01b0381165f9081527f72a65082a5691803ab2b62c9bc729b34205ba1b183d950896526b2fd8714d0c7602052604090207e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf905f8051602061276c8339815191529060ff906118fb565b5f8181525f8051602061276c833981519152602081815260408084206001600160a01b038716855290915290912060ff906118fb565b5f8181525f8051602061276c833981519152602081815260408084206001600160a01b03871685529091529091205460ff161561195f575f828152602091825260408082206001600160a01b038616835290925220805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b805480611acb57505f5b6001600160d01b038116156114d1576001611ac19201611614565b90549060031b1c90565b5f1990808281011161144957825f5260205f2001015460301c611aa6565b91909160408184031261027a578035611b0181610619565b9260208201356001600160401b03811161027a576110fe9201610a43565b611b2b91810190611ae9565b6040516302910f8b60e31b81526001600160a01b039283166004820181905291906020816024817f000000000000000000000000000000000000000000000000000000000000000088165afa908115610597575f91611c3e575b5015611c2c57611bc0604091611bbb611c0694611ba0612030565b60018060a01b03166001600160601b0360a01b5f5416175f55565b61219c565b6020810151600180546001600160a01b0319166001600160a01b0390921691909117905580516001600160a01b0316848116611c1c575b5001516001600160a01b031690565b908116611c105750565b611c1990611890565b50565b611c25906117e5565b505f611bf7565b6040516362df054560e01b8152600490fd5b611c57915060203d6020116105905761058281836109f8565b5f611b85565b9081602091031261027a575163ffffffff8116810361027a5790565b90600163ffffffff8093160191821161144957565b91805115611d675780602080611ca993518301019101611c5d565b91611cb4838261240d565b92611cc5845165ffffffffffff1690565b9065ffffffffffff8085169216828114611d5b5782119182611cfb575b5050611cf2576110fe925061233d565b50506020015190565b909150611d088354611669565b63ffffffff831614918215611d21575b50505f80611ce2565b611d53919250611d3c611d36611d4892611c79565b8561240d565b5165ffffffffffff1690565b65ffffffffffff1690565b115f80611d18565b50505050506020015190565b506110fe9161233d565b60405190611d7e826109dd565b60606040838281528260208201520152565b9060208282031261027a5781516001600160401b039283821161027a57019060608282031261027a5760405192611dc6846109dd565b825181811161027a5782611ddb91850161113e565b8452602083015181811161027a5782611df591850161113e565b6020850152604083015190811161027a57611e10920161113e565b604082015290565b9081602091031261027a575190565b60409065ffffffffffff6110fe94931681528160208201520190611101565b90939293611e52611d71565b94805180611f25575b50506004546001600160a01b03918216911603611f1d575f54611eb2929190602090611e9190610ec0906001600160a01b031681565b8187015190604051808097819463810da75d60e01b83528860048401611e27565b03915afa90811561059757611ee5935f92611eea575b50611ed991926040870151916110e8565b90818082109118021890565b915190565b611ed99250611f109060203d602011611f16575b611f0881836109f8565b810190611e18565b91611ec8565b503d611efe565b505090515f91565b611f39929650602080918301019101611d90565b935f80611e5b565b6004546001600160a01b0392908316908316036114d15760206004925f54166040519384809263bd49c35f60e01b82525afa918215610597575f92611f9c575b50611f97611ed9915f52600360205260405f2090565b611a9c565b611ed9919250611fbd611f979160203d602011611f1657611f0881836109f8565b929150611f81565b65ffffffffffff90818111611fd8571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b8054806120085750505f905f905f90565b5f19918183810111611449575f5260205f2001015460019165ffffffffffff82169160301c90565b6120386125b3565b6120406125b3565b60015f8051602061278c83398151915255565b60405190612060826109dd565b5f6040838281528260208201520152565b81601f8201121561027a578051916020916001600160401b0384116109d8578360051b90604051946120a5858401876109f8565b8552838086019282010192831161027a578301905b8282106120c8575050505090565b83809183516120d681610619565b8152019101906120ba565b60208183031261027a5780516001600160401b039182821161027a5701918281039260a0841261027a5760606040519461211a866109dd565b1261027a5760405161212b816109dd565b815161213681610619565b8152602082015161214681610619565b6020820152604082015161215981610619565b60408201528452606081015192831161027a5761217d608092611e10948301612071565b6020850152016113b1565b80518210156116295760209160051b010190565b6121a4612053565b506121ba815191602080809483010191016120e1565b8051516001600160a01b0393919084161580612331575b61231f576040818101805182516302910f8b60e31b81526001600160a01b0390911660048083019190915296929491928690829060249082907f0000000000000000000000000000000000000000000000000000000000000000165afa908115610597575f91612302575b50156122f05791938401915f5b835180518210156122bf57610ec06122648361227193612188565b516001600160a01b031690565b156122af5761229361228f61228a612264848851612188565b611966565b1590565b61229f57600101612249565b8451635140fefd60e11b81528790fd5b84516323cda06760e01b81528790fd5b50509051600480546001600160a01b0319166001600160a01b0390921691909117905593506122ec915050565b5190565b604051631f0853c160e21b8152600490fd5b6123199150863d88116105905761058281836109f8565b5f61223c565b6040516303501f5960e11b8152600490fd5b508281015151156121d1565b908154905f8291600584116123a7575b61235893508461270c565b8061238057505f905b6001600160d01b038216156114d1576110fe916001611ac19201611614565b61239a61238f6123a192611669565b835f5260205f200190565b5460301c90565b90612361565b91926123b2816125e1565b81039081116114495761235893855f5265ffffffffffff808360205f20015416908516105f146123e357509161234d565b9291506123ef9061143b565b9061234d565b60405190612402826109bd565b5f6020838281520152565b906020600161243161245d936124216123f5565b5061242a6123f5565b5085611614565b509360405194612440866109bd565b549465ffffffffffff86169586825260301c938491015201611614565b9054906040519261246d846109bd565b835260031b1c602082015290565b8054600160401b8110156109d85761249891600182018155611614565b6124c357815160209092015160301b65ffffffffffff191665ffffffffffff92909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b80549293928015612589576124ed6124f891611669565b825f5260205f200190565b9182549265ffffffffffff918285169281168084116125775787930361253e575061253792509065ffffffffffff82549181199060301b169116179055565b60301c9190565b9150506125729161255e612550610a19565b65ffffffffffff9093168352565b6001600160d01b038616602083015261247b565b612537565b604051632520601d60e01b8152600490fd5b50906125ae9161259a612550610a19565b6001600160d01b038516602083015261247b565b5f9190565b60ff5f805160206127ac8339815191525460401c16156125cf57565b604051631afcd79f60e31b8152600490fd5b60018111156110fe57600181600160801b8110156126fa575b6126a261269861268e61268461267a6126706126ae97600488600160401b6126a99a10156126ed575b6401000000008110156126e0575b620100008110156126d3575b6101008110156126c7575b60108110156126bb575b10156126b3575b60030260011c612669818b61141d565b0160011c90565b612669818a61141d565b612669818961141d565b612669818861141d565b612669818761141d565b612669818661141d565b809361141d565b821190565b900390565b60011b612659565b811c9160021b91612652565b60081c91811b91612648565b60101c9160081b9161263d565b60201c9160101b91612631565b60401c9160201b91612623565b50600160401b9050608082901c6125fa565b91905b83821061271c5750505090565b9091928083169080841860011c820180921161144957845f5265ffffffffffff808360205f20015416908416105f146127595750925b919061270f565b9392506127659061143b565b9161275256fe02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a264697066735822122099c8747f6aac9ead97812c589a552901603d5df823e30a33c65afa5af6eb0e3e64736f6c63430008190033","sourceMap":"611:4324:87:-:0;;;;-1:-1:-1;;;;;611:4324:87;;;;;;;;;;-1:-1:-1;;611:4324:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;8837:64:22;611:4324:87;;;;;;;;;7896:76:22;;611:4324:87;;;;7985:34:22;7981:146;;-1:-1:-1;525:17:76;;;611:4324:87;525:17:76;611:4324:87;552:12:76;611:4324:87;2360:34:83;611:4324:87;2404:28:83;2442:57;;;;2509:61;;;;1716:36:87;;;;611:4324;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7981:146:22;-1:-1:-1;;;;;;611:4324:87;;;;;;;;;;;;;8087:29:22;;611:4324:87;;8087:29:22;7981:146;;;;;7896:76;611:4324:87;;-1:-1:-1;;;7938:23:22;;;;;611:4324:87;-1:-1:-1;611:4324:87;;;;;;-1:-1:-1;611:4324:87;;;;;-1:-1:-1;611:4324:87;;;;-1:-1:-1;;;;;611:4324:87;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a714610224578063021453481461021f578063103f29071461021a578063128e5d82146102155780631a80e5001461021057806323f752d51461020b578063248a9ca3146102065780632dd31000146102015780632f2ff15d146101fc57806336568abe146101f75780633dfd3873146101f25780633eb22c0f146101ed578063439fab91146101e8578063557cab44146101e3578063570ca735146101de5780635d32a1c9146101d95780636679191e146101d45780637d24bb27146101cf5780637f5a7c7b146101ca57806383ce0322146101c557806391d14854146101c05780639f86fd85146101bb578063a217fddf146101b6578063bb24fe8a146101b1578063c0cd7c3e146101ac578063d15b740e146101a7578063d547741f146101a2578063e02f69371461019d578063e49561ee14610198578063fbfa77cf14610193578063fd4d447c1461018e578063ff54740f146101895763ffa1ad7414610184575f80fd5b6110aa565b61108d565b611063565b61103c565b610e51565b610df2565b610da6565b610d7c565b610d38565b610cf5565b610cdb565b610c21565b610bc3565b610b7f565b610b57565b610b1e565b610ae4565b610a89565b61096c565b610950565b610818565b6107ba565b6106c1565b610676565b61062a565b6105d5565b61059c565b610416565b6103d2565b61038e565b61034a565b61027e565b3461027a57602036600319011261027a5760043563ffffffff60e01b811680910361027a57602090637965db0b60e01b8114908115610269575b506040519015158152f35b6301ffc9a760e01b1490505f61025e565b5f80fd5b3461027a5760408060031936011261027a5760043590602435906102a0611578565b825f526002602052805f2054821161033a57825f526003602052816102c6825f20611a9c565b1461032a5781610325916103157e899d104fc3d8820bd96540612bcc5c448c8837b13b9f7faa43ad0728f0c14f94610306875f52600360205260405f2090565b61030f42611fc5565b90611677565b5050519081529081906020820190565b0390a2005b5163a741a04560e01b8152600490fd5b51631eefc06360e31b8152600490fd5b3461027a575f36600319011261027a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461027a575f36600319011261027a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461027a575f36600319011261027a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461027a57604036600319011261027a576004356001600160601b038116810361027a5760243590610446611739565b6040516302910f8b60e31b81523360048201526020816024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa908115610597575f91610568575b5015610556576001600160601b03166bffffffffffffffffffffffff193360601b161790806104d0835f52600260205260405f2090565b541461054457610529817fc67e7929681aa1bccd63f52b3799bf5805f3009f197db6fdf584b14f7fbf608c9261050e855f52600260205260405f2090565b556105198185611768565b6040519081529081906020820190565b0390a261054260015f8051602061278c83398151915255565b005b60405163a741a04560e01b8152600490fd5b6040516323d53b9760e21b8152600490fd5b61058a915060203d602011610590575b61058281836109f8565b8101906110c5565b5f610499565b503d610578565b6110dd565b3461027a57602036600319011261027a576004355f525f8051602061276c8339815191526020526020600160405f200154604051908152f35b3461027a575f36600319011261027a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6001600160a01b0381160361027a57565b3461027a57604036600319011261027a5761054260243560043561064d82610619565b805f525f8051602061276c833981519152602052610671600160405f2001546115d4565b6119d4565b3461027a57604036600319011261027a5760243561069381610619565b336001600160a01b038216036106af5761054290600435611a0a565b60405163334bd91960e11b8152600490fd5b3461027a57602036600319011261027a576004356106de81610619565b6106e6611739565b335f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c60205260409020547fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c9060ff161561079c57506001546001600160a01b039182169181168214610544576001600160a01b03191681176001557f5bbb1d3ebb6a3ad2a0f17ff35e579a83af60604d1d3c2a4c83c62adecadf666d5f80a260015f8051602061278c83398151915255005b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b3461027a57602036600319011261027a576004355f52600360205260206107e360405f20611a9c565b604051908152f35b9181601f8401121561027a578235916001600160401b03831161027a576020838186019501011161027a57565b3461027a57602036600319011261027a576001600160401b0360043581811161027a576108499036906004016107eb565b5f805160206127ac833981519152549260ff8460401c1615931680159081610948575b600114908161093e575b159081610935575b50610923575f805160206127ac833981519152805467ffffffffffffffff191660011790556108b191836108ff57611b1f565b6108b757005b5f805160206127ac833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f805160206127ac833981519152805460ff60401b1916600160401b179055611b1f565b60405163f92ee8a960e01b8152600490fd5b9050155f61087e565b303b159150610876565b84915061086c565b3461027a575f36600319011261027a576020604051614e208152f35b3461027a575f36600319011261027a576004546040516001600160a01b039091168152602090f35b6064359065ffffffffffff8216820361027a57565b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b038211176109d857604052565b6109a9565b606081019081106001600160401b038211176109d857604052565b90601f801991011681019081106001600160401b038211176109d857604052565b60405190610a26826109bd565b565b6001600160401b0381116109d857601f01601f191660200190565b81601f8201121561027a57803590610a5a82610a28565b92610a6860405194856109f8565b8284526020838301011161027a57815f926020809301838601378301015290565b3461027a57606036600319011261027a5760243565ffffffffffff8116810361027a576044356001600160401b03811161027a57602091610ad16107e3923690600401610a43565b906004355f526003845260405f20611c8e565b3461027a575f36600319011261027a5760206040517fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c8152f35b3461027a575f36600319011261027a5760206040517e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf8152f35b3461027a575f36600319011261027a576001546040516001600160a01b039091168152602090f35b3461027a575f36600319011261027a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461027a57604036600319011261027a57602060ff610c15602435610be781610619565b6004355f525f8051602061276c833981519152845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b3461027a5760408060031936011261027a57600435610c3f81610619565b602435906001600160401b03821161027a575f8091610c65610cc99436906004016107eb565b908187519283928337810184815203915af43d15610cd157610cbb3d610c8a81610a28565b90610c97865192836109f8565b81523d5f602083013e5b845194859315156020850152808401526060830190611101565b03601f1981018352826109f8565b805190602001fd5b610cbb6060610ca1565b3461027a575f36600319011261027a5760206040515f8152f35b3461027a575f36600319011261027a5760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461027a575f36600319011261027a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461027a57602036600319011261027a576004355f526002602052602060405f2054604051908152f35b3461027a57604036600319011261027a57610542602435600435610dc982610619565b805f525f8051602061276c833981519152602052610ded600160405f2001546115d4565b611a0a565b3461027a57608036600319011261027a57602435610e0f81610619565b6044359065ffffffffffff8216820361027a57606435906001600160401b03821161027a57602092610e486107e3933690600401610a43565b91600435611227565b3461027a5760a036600319011261027a57602435600435610e7182610619565b60443591610e7d610994565b90608435906001600160401b03821161027a57610e9f60049236908401610a43565b610ea7611739565b5f54602090610ecc90610ec0906001600160a01b031681565b6001600160a01b031690565b60405163b134427160e01b815294859182905afa928315610597575f9361100b575b506001600160a01b039283163303610ff9576001546001600160a01b0316838116610f6e575b50506040805195865265ffffffffffff909316602086015216927f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed91819081015b0390a361054260015f8051602061278c83398151915255565b909360405194610fa586610f97602082019363724ab0f760e11b8552858c898d602487016113d1565b03601f1981018852876109f8565b62042e305a10610fe7575f610f55938192827f741a5de99085c0d660f3e4192217b0ffb0ea4e35a0480de48e857a4bc3ee36ed9951926203d090f15093610f14565b604051638072475160e01b8152600490fd5b60405163dabc4ad960e01b8152600490fd5b61102e91935060203d602011611035575b61102681836109f8565b8101906113bc565b915f610eee565b503d61101c565b3461027a575f36600319011261027a575f546040516001600160a01b039091168152602090f35b3461027a57604036600319011261027a5760206107e360243561108581610619565b60043561144e565b3461027a575f36600319011261027a5760206040516203d0908152f35b3461027a575f36600319011261027a57602060405160018152f35b9081602091031261027a5751801515810361027a5790565b6040513d5f823e3d90fd5b906110fe92915f52600360205260405f20611c8e565b90565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b60405190611132826109bd565b60606020838281520152565b81601f8201121561027a5780519061115582610a28565b9261116360405194856109f8565b8284526020838301011161027a57815f9260208093018386015e8301015290565b9060208282031261027a5781516001600160401b039283821161027a57019060408282031261027a57604051926111ba846109bd565b825181811161027a57826111cf91850161113e565b8452602083015190811161027a576111e7920161113e565b602082015290565b6001600160a01b0391821681529116602082015265ffffffffffff90911660408201526080606082018190526110fe92910190611101565b9261123790929192828486611e46565b929093611242611125565b93805180611395575b505084159384156112ff575b841561126e575b505050506112695790565b505f90565b602080949550611299910151604051958694859463530e1d4360e01b865260601c90600486016111ef565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610597575f916112e0575b50155f80808061125e565b6112f9915060203d6020116105905761058281836109f8565b5f6112d5565b5f549094506001600160a01b0316602084865192611332604051948593849363530e1d4360e01b855289600486016111ef565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610597575f91611376575b501593611257565b61138f915060203d6020116105905761058281836109f8565b5f61136e565b6113a9929550602080918301019101611184565b925f8061124b565b5190610a2682610619565b9081602091031261027a57516110fe81610619565b919360a0936110fe969565ffffffffffff938552600180871b0316602085015260408401521660608201528160808201520190611101565b634e487b7160e01b5f52601160045260245ffd5b8115611427570490565b634e487b7160e01b5f52601260045260245ffd5b906001820180921161144957565b611409565b5f546040516308834cb560e21b8082526001600160a01b0385811660048401529283166024830152929392602092909183816044817f000000000000000000000000000000000000000000000000000000000000000086165afa908115610597575f9161155b575b50159182156114d7575b505090506114d1576110fe91611f41565b50505f90565b6040519081526001600160a01b0385166004820152606086901c602482015291508290829060449082907f0000000000000000000000000000000000000000000000000000000000000000165afa918215610597575f9261153e575b505015805f806114c0565b6115549250803d106105905761058281836109f8565b5f80611533565b6115729150843d86116105905761058281836109f8565b5f6114b6565b335f9081527f72a65082a5691803ab2b62c9bc729b34205ba1b183d950896526b2fd8714d0c7602052604090207e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf9060ff905b54161561079c5750565b5f8181525f8051602061276c83398151915260209081526040808320338452909152902060ff906115ca565b634e487b7160e01b5f52603260045260245ffd5b8054821015611629575f5260205f2001905f90565b611600565b90815491600160401b8310156109d85782611651916001610a2695018155611614565b90919082549060031b91821b915f19901b1916179055565b5f1981019190821161144957565b90929192600182019081548015611709575b508461169484611ff7565b509490928454936116a483611a9c565b96816116f4575b50156116d1575050505f1981019081116114495761165185916116cd93611614565b9190565b6116cd9492936116ed926001600160d01b0390911691906124d6565b505061162e565b65ffffffffffff83811691161490505f6116ab565b600160401b8110156109d8578060016117259201845583611614565b8154905f199060031b1b191690555f611689565b5f8051602061278c83398151915260028154146117565760029055565b604051633ee5aeb560e01b8152600490fd5b90815f52600360205260405f208161177f82611ff7565b9193905083156117dd5761179f916001600160d01b031690600101611614565b90549060031b1c5b826117d3575b50506117b7575050565b6117cf915f52600360205260405f2061030f42611fc5565b5050565b119050815f6117ad565b50505f6117a7565b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260409020545f8051602061276c8339815191529060ff166114d1575f808052602091825260408082206001600160a01b038516835290925220805460ff1916600117905533906001600160a01b03165f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b6001600160a01b0381165f9081527f9ebbcbe0d2961d3fbe56ca6f679bc753bd848d3e6bb3eaf9041c51b286881d2c602052604090207fd1c1f6fa6bf27d54c5e54c7c1dc6e5004d3c027ea1994fe68b29c1b51b69c36c905f8051602061276c8339815191529060ff905b541661195f575f828152602091825260408082206001600160a01b038616835290925220805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b5050505f90565b6001600160a01b0381165f9081527f72a65082a5691803ab2b62c9bc729b34205ba1b183d950896526b2fd8714d0c7602052604090207e8b9b1e5fa9cf3b14f87f435649268146305ddf689f082e5961a335b07a9abf905f8051602061276c8339815191529060ff906118fb565b5f8181525f8051602061276c833981519152602081815260408084206001600160a01b038716855290915290912060ff906118fb565b5f8181525f8051602061276c833981519152602081815260408084206001600160a01b03871685529091529091205460ff161561195f575f828152602091825260408082206001600160a01b038616835290925220805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b805480611acb57505f5b6001600160d01b038116156114d1576001611ac19201611614565b90549060031b1c90565b5f1990808281011161144957825f5260205f2001015460301c611aa6565b91909160408184031261027a578035611b0181610619565b9260208201356001600160401b03811161027a576110fe9201610a43565b611b2b91810190611ae9565b6040516302910f8b60e31b81526001600160a01b039283166004820181905291906020816024817f000000000000000000000000000000000000000000000000000000000000000088165afa908115610597575f91611c3e575b5015611c2c57611bc0604091611bbb611c0694611ba0612030565b60018060a01b03166001600160601b0360a01b5f5416175f55565b61219c565b6020810151600180546001600160a01b0319166001600160a01b0390921691909117905580516001600160a01b0316848116611c1c575b5001516001600160a01b031690565b908116611c105750565b611c1990611890565b50565b611c25906117e5565b505f611bf7565b6040516362df054560e01b8152600490fd5b611c57915060203d6020116105905761058281836109f8565b5f611b85565b9081602091031261027a575163ffffffff8116810361027a5790565b90600163ffffffff8093160191821161144957565b91805115611d675780602080611ca993518301019101611c5d565b91611cb4838261240d565b92611cc5845165ffffffffffff1690565b9065ffffffffffff8085169216828114611d5b5782119182611cfb575b5050611cf2576110fe925061233d565b50506020015190565b909150611d088354611669565b63ffffffff831614918215611d21575b50505f80611ce2565b611d53919250611d3c611d36611d4892611c79565b8561240d565b5165ffffffffffff1690565b65ffffffffffff1690565b115f80611d18565b50505050506020015190565b506110fe9161233d565b60405190611d7e826109dd565b60606040838281528260208201520152565b9060208282031261027a5781516001600160401b039283821161027a57019060608282031261027a5760405192611dc6846109dd565b825181811161027a5782611ddb91850161113e565b8452602083015181811161027a5782611df591850161113e565b6020850152604083015190811161027a57611e10920161113e565b604082015290565b9081602091031261027a575190565b60409065ffffffffffff6110fe94931681528160208201520190611101565b90939293611e52611d71565b94805180611f25575b50506004546001600160a01b03918216911603611f1d575f54611eb2929190602090611e9190610ec0906001600160a01b031681565b8187015190604051808097819463810da75d60e01b83528860048401611e27565b03915afa90811561059757611ee5935f92611eea575b50611ed991926040870151916110e8565b90818082109118021890565b915190565b611ed99250611f109060203d602011611f16575b611f0881836109f8565b810190611e18565b91611ec8565b503d611efe565b505090515f91565b611f39929650602080918301019101611d90565b935f80611e5b565b6004546001600160a01b0392908316908316036114d15760206004925f54166040519384809263bd49c35f60e01b82525afa918215610597575f92611f9c575b50611f97611ed9915f52600360205260405f2090565b611a9c565b611ed9919250611fbd611f979160203d602011611f1657611f0881836109f8565b929150611f81565b65ffffffffffff90818111611fd8571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b8054806120085750505f905f905f90565b5f19918183810111611449575f5260205f2001015460019165ffffffffffff82169160301c90565b6120386125b3565b6120406125b3565b60015f8051602061278c83398151915255565b60405190612060826109dd565b5f6040838281528260208201520152565b81601f8201121561027a578051916020916001600160401b0384116109d8578360051b90604051946120a5858401876109f8565b8552838086019282010192831161027a578301905b8282106120c8575050505090565b83809183516120d681610619565b8152019101906120ba565b60208183031261027a5780516001600160401b039182821161027a5701918281039260a0841261027a5760606040519461211a866109dd565b1261027a5760405161212b816109dd565b815161213681610619565b8152602082015161214681610619565b6020820152604082015161215981610619565b60408201528452606081015192831161027a5761217d608092611e10948301612071565b6020850152016113b1565b80518210156116295760209160051b010190565b6121a4612053565b506121ba815191602080809483010191016120e1565b8051516001600160a01b0393919084161580612331575b61231f576040818101805182516302910f8b60e31b81526001600160a01b0390911660048083019190915296929491928690829060249082907f0000000000000000000000000000000000000000000000000000000000000000165afa908115610597575f91612302575b50156122f05791938401915f5b835180518210156122bf57610ec06122648361227193612188565b516001600160a01b031690565b156122af5761229361228f61228a612264848851612188565b611966565b1590565b61229f57600101612249565b8451635140fefd60e11b81528790fd5b84516323cda06760e01b81528790fd5b50509051600480546001600160a01b0319166001600160a01b0390921691909117905593506122ec915050565b5190565b604051631f0853c160e21b8152600490fd5b6123199150863d88116105905761058281836109f8565b5f61223c565b6040516303501f5960e11b8152600490fd5b508281015151156121d1565b908154905f8291600584116123a7575b61235893508461270c565b8061238057505f905b6001600160d01b038216156114d1576110fe916001611ac19201611614565b61239a61238f6123a192611669565b835f5260205f200190565b5460301c90565b90612361565b91926123b2816125e1565b81039081116114495761235893855f5265ffffffffffff808360205f20015416908516105f146123e357509161234d565b9291506123ef9061143b565b9061234d565b60405190612402826109bd565b5f6020838281520152565b906020600161243161245d936124216123f5565b5061242a6123f5565b5085611614565b509360405194612440866109bd565b549465ffffffffffff86169586825260301c938491015201611614565b9054906040519261246d846109bd565b835260031b1c602082015290565b8054600160401b8110156109d85761249891600182018155611614565b6124c357815160209092015160301b65ffffffffffff191665ffffffffffff92909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b80549293928015612589576124ed6124f891611669565b825f5260205f200190565b9182549265ffffffffffff918285169281168084116125775787930361253e575061253792509065ffffffffffff82549181199060301b169116179055565b60301c9190565b9150506125729161255e612550610a19565b65ffffffffffff9093168352565b6001600160d01b038616602083015261247b565b612537565b604051632520601d60e01b8152600490fd5b50906125ae9161259a612550610a19565b6001600160d01b038516602083015261247b565b5f9190565b60ff5f805160206127ac8339815191525460401c16156125cf57565b604051631afcd79f60e31b8152600490fd5b60018111156110fe57600181600160801b8110156126fa575b6126a261269861268e61268461267a6126706126ae97600488600160401b6126a99a10156126ed575b6401000000008110156126e0575b620100008110156126d3575b6101008110156126c7575b60108110156126bb575b10156126b3575b60030260011c612669818b61141d565b0160011c90565b612669818a61141d565b612669818961141d565b612669818861141d565b612669818761141d565b612669818661141d565b809361141d565b821190565b900390565b60011b612659565b811c9160021b91612652565b60081c91811b91612648565b60101c9160081b9161263d565b60201c9160101b91612631565b60401c9160201b91612623565b50600160401b9050608082901c6125fa565b91905b83821061271c5750505090565b9091928083169080841860011c820180921161144957845f5265ffffffffffff808360205f20015416908416105f146127595750925b919061270f565b9392506127659061143b565b9161275256fe02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a264697066735822122099c8747f6aac9ead97812c589a552901603d5df823e30a33c65afa5af6eb0e3e64736f6c63430008190033","sourceMap":"611:4324:87:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;-1:-1:-1;;611:4324:87;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3551:47:19;;;:87;;;;611:4324:87;;;;;;;;;;3551:87:19;-1:-1:-1;;;1134:40:28;;-1:-1:-1;3551:87:19;;;611:4324:87;-1:-1:-1;611:4324:87;;;;;;;;;;;;;;;;;;;;3202:4:19;;;:::i;:::-;611:4324:87;-1:-1:-1;611:4324:87;2428:15;611:4324;;;-1:-1:-1;611:4324:87;;2419:36;;2415:98;;611:4324;-1:-1:-1;611:4324:87;2193:13;611:4324;;;2193:34;611:4324;-1:-1:-1;611:4324:87;2193:34;:::i;:::-;2527;2523:84;;2617:25;2689:35;2617:25;:56;2689:35;2617:25;;;611:4324;;2193:13;611:4324;;;;;;;2617:25;819:34:68;837:15;819:34;:::i;:::-;2617:56:87;;:::i;:::-;-1:-1:-1;;611:4324:87;;;;;;;;;;;;2689:35;;;;611:4324;2523:84;611:4324;-1:-1:-1;;;2584:12:87;;611:4324;;2584:12;2415:98;611:4324;-1:-1:-1;;;2478:24:87;;611:4324;;2478:24;611:4324;;;;;;-1:-1:-1;;611:4324:87;;;;;;1537:38:83;-1:-1:-1;;;;;611:4324:87;;;;;;;;;;;;-1:-1:-1;;611:4324:87;;;;;;1632:54:83;-1:-1:-1;;;;;611:4324:87;;;;;;;;;;;;-1:-1:-1;;611:4324:87;;;;;;1743:56:83;-1:-1:-1;;;;;611:4324:87;;;;;;;;;;;;-1:-1:-1;;611:4324:87;;;;;;-1:-1:-1;;;;;611:4324:87;;;;;;;;3361:103:26;;;:::i;:::-;611:4324:87;;-1:-1:-1;;;4285:48:83;;4322:10;611:4324:87;4285:48:83;;611:4324:87;;;;;-1:-1:-1;;;;;4295:16:83;611:4324:87;4285:48:83;;;;;;;-1:-1:-1;4285:48:83;;;611:4324:87;4284:49:83;;4280:99;;-1:-1:-1;;;;;611:4324:87;-1:-1:-1;;4322:10:83;297:2:95;611:4324:87;;267:46:95;4459:27:83;;;;611:4324:87;;4459:15:83;611:4324:87;;;;;;;4459:27:83;611:4324:87;4459:37:83;4455:87;;4654:38;4552:27;4654:38;4552:27;;;611:4324:87;;4459:15:83;611:4324:87;;;;;;;4552:27:83;611:4324:87;4631:6:83;;;;:::i;:::-;611:4324:87;;;;;;;;;;;;;4654:38:83;;;;3426:1:26;1949;-1:-1:-1;;;;;;;;;;;611:4324:87;3860:283:26;3426:1;611:4324:87;4455:87:83;611:4324:87;;-1:-1:-1;;;4519:12:83;;611:4324:87;;4519:12:83;4280:99;611:4324:87;;-1:-1:-1;;;4356:12:83;;611:4324:87;;4356:12:83;4285:48;;;;611:4324:87;4285:48:83;611:4324:87;4285:48:83;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;611:4324:87:-;;;;;;-1:-1:-1;;611:4324:87;;;;;;-1:-1:-1;611:4324:87;-1:-1:-1;;;;;;;;;;;611:4324:87;;;4919:24:19;611:4324:87;-1:-1:-1;611:4324:87;4919:24:19;611:4324:87;;;;;;;;;;;;;-1:-1:-1;;611:4324:87;;;;;;322:32:76;-1:-1:-1;;;;;611:4324:87;;;;;;;-1:-1:-1;;;;;611:4324:87;;;;;:::o;:::-;;;;;;-1:-1:-1;;611:4324:87;;;;5350:25:19;611:4324:87;;;;;;;:::i;:::-;;-1:-1:-1;611:4324:87;-1:-1:-1;;;;;;;;;;;611:4324:87;;3202:4:19;4919:24;611:4324:87;-1:-1:-1;611:4324:87;4919:24:19;611:4324:87;3202:4:19;:::i;:::-;5350:25;:::i;611:4324:87:-;;;;;;-1:-1:-1;;611:4324:87;;;;;;;;;:::i;:::-;966:10:24;-1:-1:-1;;;;;611:4324:87;;6441:34:19;6437:102;;6549:37;611:4324:87;;;6549:37:19;:::i;6437:102::-;611:4324:87;;-1:-1:-1;;;6498:30:19;;611:4324:87;;6498:30:19;611:4324:87;;;;;;-1:-1:-1;;611:4324:87;;;;;;;;;:::i;:::-;3361:103:26;;:::i;:::-;966:10:24;-1:-1:-1;611:4324:87;;;;;;;;;;1356:26:83;;611:4324:87;;4468:23:19;4464:108;;-1:-1:-1;4861:4:83;611:4324:87;-1:-1:-1;;;;;611:4324:87;;;;;;4861:13:83;;4857:63;;-1:-1:-1;;;;;;611:4324:87;;;4861:4:83;611:4324:87;4958:14:83;-1:-1:-1;;4958:14:83;4861:4;-1:-1:-1;;;;;;;;;;;611:4324:87;;4464:108:19;611:4324:87;;;;4514:47:19;;;;;;966:10:24;611:4324:87;4514:47:19;;611:4324:87;;;;;4514:47:19;611:4324:87;;;;;;-1:-1:-1;;611:4324:87;;;;;;-1:-1:-1;611:4324:87;2193:13;611:4324;;;2193:34;611:4324;-1:-1:-1;611:4324:87;2193:34;:::i;:::-;611:4324;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;611:4324:87;;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;611:4324:87;;;;-1:-1:-1;;;;;611:4324:87;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;611:4324:87;;;;;;;4301:16:22;611:4324:87;;4726:16:22;;:34;;;;611:4324:87;4805:1:22;4790:16;:50;;;;611:4324:87;4855:13:22;:30;;;;611:4324:87;4851:91:22;;;-1:-1:-1;;;;;;;;;;;611:4324:87;;-1:-1:-1;;611:4324:87;;;;;718:4:76;;4951:18:22;4979:67;;718:4:76;:::i;:::-;5066:101:22;;611:4324:87;5066:101:22;-1:-1:-1;;;;;;;;;;;611:4324:87;;-1:-1:-1;;;;611:4324:87;;;;;-1:-1:-1;611:4324:87;;5142:14:22;;611:4324:87;;5142:14:22;611:4324:87;4979:67:22;-1:-1:-1;;;;;;;;;;;611:4324:87;;-1:-1:-1;;;;611:4324:87;-1:-1:-1;;;611:4324:87;;;718:4:76;:::i;4851:91:22:-;611:4324:87;;-1:-1:-1;;;4908:23:22;;611:4324:87;;4908:23:22;4855:30;4872:13;;;4855:30;;;4790:50;4818:4;4810:25;:30;;-1:-1:-1;4790:50:22;;4726:34;;;-1:-1:-1;4726:34:22;;611:4324:87;;;;;;-1:-1:-1;;611:4324:87;;;;;;;1253:6:83;611:4324:87;;;;;;;;;-1:-1:-1;;611:4324:87;;;;;;;;-1:-1:-1;;;;;611:4324:87;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;611:4324:87;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;-1:-1:-1;;;;;611:4324:87;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;611:4324:87;;;;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;:::-;-1:-1:-1;;;;;611:4324:87;;;;;;-1:-1:-1;;611:4324:87;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;611:4324:87;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;611:4324:87;;;;;;;;;;;;;;;-1:-1:-1;;;;;611:4324:87;;;;;;;1955:60;611:4324;;;;;;:::i;:::-;;;;-1:-1:-1;611:4324:87;1955:13;611:4324;;;-1:-1:-1;611:4324:87;1955:60;:::i;611:4324::-;;;;;;-1:-1:-1;;611:4324:87;;;;;;;1356:26:83;611:4324:87;;;;;;;;;-1:-1:-1;;611:4324:87;;;;;;;885:35;611:4324;;;;;;;;;-1:-1:-1;;611:4324:87;;;;;;;;-1:-1:-1;;;;;611:4324:87;;;;;;;;;;;;;;-1:-1:-1;;611:4324:87;;;;;;989:42;-1:-1:-1;;;;;611:4324:87;;;;;;;;;;;;-1:-1:-1;;611:4324:87;;;;;;3901:31:19;611:4324:87;;;;;:::i;:::-;;;-1:-1:-1;611:4324:87;-1:-1:-1;;;;;;;;;;;611:4324:87;;;-1:-1:-1;611:4324:87;;;;;;;;;;;;;;;;;3901:31:19;611:4324:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;611:4324:87;;;;-1:-1:-1;611:4324:87;;;477:31:82;611:4324:87;;;;;;:::i;:::-;;;;;;;;;;;;;;;416:25:82;;;;611:4324:87;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;611:4324:87;;;;;;;;;;;;;477:31:82;;611:4324:87;;;;;;;;;;:::i;:::-;477:31:82;611:4324:87;;477:31:82;;;;;;:::i;:::-;518:79;;;611:4324:87;518:79:82;;611:4324:87;;;;;;;;;;;-1:-1:-1;;611:4324:87;;;;;;;;;;;;;;;;;-1:-1:-1;;611:4324:87;;;;;;;-1:-1:-1;;;;;404:28:76;611:4324:87;;;;;;;;;;-1:-1:-1;;611:4324:87;;;;;;1439:41:83;-1:-1:-1;;;;;611:4324:87;;;;;;;;;;;;-1:-1:-1;;611:4324:87;;;;;;-1:-1:-1;611:4324:87;2009:67:83;611:4324:87;;;;-1:-1:-1;611:4324:87;;;;;;;;;;;;;;-1:-1:-1;;611:4324:87;;;;5767:26:19;611:4324:87;;;;;;;:::i;:::-;;-1:-1:-1;611:4324:87;-1:-1:-1;;;;;;;;;;;611:4324:87;;3202:4:19;4919:24;611:4324:87;-1:-1:-1;611:4324:87;4919:24:19;611:4324:87;3202:4:19;:::i;:::-;5767:26;:::i;611:4324:87:-;;;;;;-1:-1:-1;;611:4324:87;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;611:4324:87;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;-1:-1:-1;;611:4324:87;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;611:4324:87;;;;;;;;;;;;:::i;:::-;3361:103:26;;:::i;:::-;-1:-1:-1;611:4324:87;;;5246:21:83;;:13;;-1:-1:-1;;;;;611:4324:87;5246:13:83;611:4324:87;;-1:-1:-1;;;;;611:4324:87;;;5246:21:83;611:4324:87;;-1:-1:-1;;;5246:23:83;;611:4324:87;;;;;5246:23:83;;;;;;;-1:-1:-1;5246:23:83;;;611:4324:87;-1:-1:-1;;;;;;611:4324:87;;;5232:10:83;:37;5228:87;;5341:4;611:4324:87;-1:-1:-1;;;;;611:4324:87;;;;5355:469:83;;611:4324:87;-1:-1:-1;;611:4324:87;;;;;;;;;;;;;;;;5839:55:83;;611:4324:87;;;;5839:55:83;;;;3426:1:26;1949;-1:-1:-1;;;;;;;;;;;611:4324:87;3860:283:26;5355:469:83;611:4324:87;;;;5435:94:83;;;;611:4324:87;5435:94:83;;;;;;;;;;;;611:4324:87;5435:94:83;;;:::i;:::-;;611:4324:87;;5435:94:83;;;;;;:::i;:::-;611:4324:87;5548:9:83;:51;5544:118;;-1:-1:-1;5839:55:83;5676:138;;;;5839:55;5676:138;;;1150:7;5676:138;;5355:469;;;5544:118;611:4324:87;;-1:-1:-1;;;5626:21:83;;611:4324:87;;5626:21:83;5228:87;611:4324:87;;-1:-1:-1;;;5292:12:83;;611:4324:87;;5292:12:83;5246:23;;;;;611:4324:87;5246:23:83;611:4324:87;5246:23:83;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;611:4324:87;;;;;;-1:-1:-1;;611:4324:87;;;;;;;;-1:-1:-1;;;;;611:4324:87;;;;;;;;;;;;;;-1:-1:-1;;611:4324:87;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;-1:-1:-1;;611:4324:87;;;;;;;1150:7:83;611:4324:87;;;;;;;;;-1:-1:-1;;611:4324:87;;;;;;;2700:1:83;611:4324:87;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;1827:195;;1955:60;1827:195;;-1:-1:-1;611:4324:87;1955:13;611:4324;;;-1:-1:-1;611:4324:87;1955:60;:::i;:::-;1827:195;:::o;611:4324::-;;;;;;;;;;;;;;;;;-1:-1:-1;611:4324:87;;;;;;;;-1:-1:-1;;611:4324:87;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;611:4324:87;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;611:4324:87;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;-1:-1:-1;;;;;611:4324:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2764:920:83:-;;2978:48;2764:920;;;;2978:48;;;;:::i;:::-;3036:36;;;611:4324:87;;:::i;:::-;;;;3086:20:83;3082:107;;2764:920;3216:11;;;;:193;;;;;2764:920;3216:394;;;;2764:920;3199:455;;;;;;2764:920;:::o;3199:455::-;3635:8;-1:-1:-1;3635:8:83;:::o;3216:394::-;3553:39;;;;;3430:180;3553:39;;;611:4324:87;;;;;;;;;;3430:180:83;;467:2:95;611:4324:87;3430:180:83;;;;;:::i;:::-;;611:4324:87;3444:31:83;-1:-1:-1;;;;;611:4324:87;3430:180:83;;;;;;;-1:-1:-1;3430:180:83;;;3216:394;3429:181;;3216:394;;;;;;3430:180;;;;3553:39;3430:180;3553:39;3430:180;;;;;;;:::i;:::-;;;;3216:193;-1:-1:-1;611:4324:87;;;-1:-1:-1;;;;;;611:4324:87;3248:161:83;3354:37;;;611:4324:87;3248:161:83;611:4324:87;;;;;;;;;;3248:161:83;;;;;;;:::i;:::-;;611:4324:87;3262:29:83;-1:-1:-1;;;;;611:4324:87;3248:161:83;;;;;;;-1:-1:-1;3248:161:83;;;3216:193;3247:162;;3216:193;;;3248:161;;;;;;;;;;;;;;:::i;:::-;;;;3082:107;3139:39;;;;;;;;;;;;;:::i;:::-;3082:107;;;;;611:4324:87;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;9999:1:66;611:4324:87;;;;;;;:::o;:::-;;:::i;3740:389:83:-;3918:5;611:4324:87;;;-1:-1:-1;;;3853:71:83;;;-1:-1:-1;;;;;611:4324:87;;;3853:71:83;;;611:4324:87;;;;;;;;3740:389:83;;611:4324:87;3853:71:83;;611:4324:87;;3853:71:83;611:4324:87;;;3867:29:83;611:4324:87;;3853:71:83;;;;;;;3918:5;3853:71;;;3740:389;3852:72;;611:4324:87;;;3852:181:83;;3740:389;3835:242;;;;;;4094:28;;;:::i;3835:242::-;4058:8;;3918:5;4058:8;:::o;3852:181::-;611:4324:87;;3945:88:83;;;-1:-1:-1;;;;;611:4324:87;;3853:71:83;3945:88;;611:4324:87;467:2:95;611:4324:87;;;;;;;;-1:-1:-1;611:4324:87;;;;;;;;3959:31:83;611:4324:87;3945:88:83;;;;;;;3918:5;3945:88;;;3852:181;3944:89;;;3852:181;;;;;3945:88;;;;;;-1:-1:-1;3945:88:83;;;;;;:::i;:::-;;;;;3853:71;;;;;;;;;;;;;;:::i;:::-;;;;4148:103:19;966:10:24;-1:-1:-1;611:4324:87;;;;;;;;;885:35;;611:4324;;3901:31:19;611:4324:87;;4468:23:19;4464:108;;4148:103;:::o;:::-;-1:-1:-1;611:4324:87;;;-1:-1:-1;;;;;;;;;;;611:4324:87;;;;;;;;966:10:24;611:4324:87;;;;;;;;;3901:31:19;611:4324:87;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;611:4324:87;;-1:-1:-1;611:4324:87;;;-1:-1:-1;611:4324:87;:::o;:::-;;:::i;:::-;;;;;-1:-1:-1;;;611:4324:87;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;611:4324:87;;;;;;;;:::o;6246:584:93:-;;;;;6360:12;;;611:4324:87;;;6360:24:93;;6356:75;;6246:584;6474:30;;;;;:::i;:::-;611:4324:87;;;;;;6578:12:93;;;;:::i;:::-;6604:24;;;;6246:584;-1:-1:-1;6600:188:93;;;-1:-1:-1;;;;;611:4324:87;;;;;;;6644:21:93;;;:29;:21;;:::i;:29::-;6798:25;6246:584;:::o;6600:188::-;6753:24;;611:4324:87;;8310:38:66;;-1:-1:-1;;;;;611:4324:87;;;;;8310:38:66;:::i;:::-;6753:24:93;;;:::i;6604:::-;611:4324:87;;;;;;6614:14:93;;-1:-1:-1;6604:24:93;;;6356:75;-1:-1:-1;;;611:4324:87;;;;;;6360:12:93;611:4324:87;;;;;;;:::i;:::-;;;;;;;;;;;;;;6356:75:93;;;3470:384:26;-1:-1:-1;;;;;;;;;;;1991:1:26;611:4324:87;;3670:20:26;3666:88;;1991:1;611:4324:87;;3470:384:26:o;3666:88::-;611:4324:87;;-1:-1:-1;;;3713:30:26;;;;;3701:308:87;;611:4324;-1:-1:-1;611:4324:87;3832:13;611:4324;;;-1:-1:-1;611:4324:87;11124:30:93;;;;:::i;:::-;11173;;;-1:-1:-1;11173:30:93;;;;11182:17;;-1:-1:-1;;;;;611:4324:87;;11182:12:93;;:17;:::i;:::-;611:4324:87;;;3832:13;611:4324;;11173:30:93;3890::87;;;11173::93;3886:117:87;;;;3701:308;;:::o;3886:117::-;3936:56;611:4324;-1:-1:-1;611:4324:87;3832:13;611:4324;;;-1:-1:-1;611:4324:87;819:34:68;837:15;819:34;:::i;3936:56:87:-;3701:308;;:::o;3890:30::-;3900:20;;-1:-1:-1;3890:30:87;;;;11173::93;;;-1:-1:-1;11173:30:93;;7270:387:19;-1:-1:-1;;;;;611:4324:87;;-1:-1:-1;611:4324:87;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2887:71:19;611:4324:87;;;;-1:-1:-1;611:4324:87;;;;;;;;;;;-1:-1:-1;;;;;611:4324:87;;;;;;;;;;-1:-1:-1;;611:4324:87;7509:4:19;611:4324:87;;;966:10:24;;-1:-1:-1;;;;;611:4324:87;-1:-1:-1;7532:40:19;-1:-1:-1;;7532:40:19;7509:4;7586:11;:::o;7270:387::-;-1:-1:-1;;;;;611:4324:87;;-1:-1:-1;611:4324:87;;;;;;;;;1356:26:83;;-1:-1:-1;;;;;;;;;;;2887:71:19;611:4324:87;;3901:31:19;611:4324:87;;;;-1:-1:-1;611:4324:87;;;;;;;;;;;-1:-1:-1;;;;;611:4324:87;;;;;;;;;;-1:-1:-1;;611:4324:87;7509:4:19;611:4324:87;;;966:10:24;;-1:-1:-1;;;;;611:4324:87;;7532:40:19;-1:-1:-1;;7532:40:19;7509:4;7586:11;:::o;7432:219::-;7628:12;;;-1:-1:-1;7628:12:19;:::o;7270:387::-;-1:-1:-1;;;;;611:4324:87;;-1:-1:-1;611:4324:87;;;;;;;;;885:35;;-1:-1:-1;;;;;;;;;;;2887:71:19;611:4324:87;;3901:31:19;611:4324:87;7270:387:19;-1:-1:-1;611:4324:87;;;-1:-1:-1;;;;;;;;;;;611:4324:87;;;;;;;;-1:-1:-1;;;;;611:4324:87;;;;;;;;;;;;3901:31:19;611:4324:87;7892:388:19;-1:-1:-1;611:4324:87;;;-1:-1:-1;;;;;;;;;;;611:4324:87;;;;;;;;-1:-1:-1;;;;;611:4324:87;;;;;;;;;;;;;;;;-1:-1:-1;611:4324:87;;;;;;;;;;;-1:-1:-1;;;;;611:4324:87;;;;;;;;;;-1:-1:-1;;611:4324:87;;;966:10:24;;-1:-1:-1;;;;;611:4324:87;;8155:40:19;-1:-1:-1;;8155:40:19;611:4324:87;8209:11:19;:::o;10580:184:93:-;611:4324:87;;10446:8:66;;;:63;-1:-1:-1;10446:63:66;-1:-1:-1;;;;;611:4324:87;;10726:7:93;611:4324:87;;10736:12:93;:17;:12;;:17;:::i;:::-;611:4324:87;;;;;;10580:184:93;:::o;10446:63:66:-;611:4324:87;;;;;;;;;;14439:109:66;-1:-1:-1;14439:109:66;;-1:-1:-1;14439:109:66;;;611:4324:87;;;10446:63:66;;611:4324:87;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;611:4324:87;;;;;;;;:::i;5907:716:83:-;6030:34;5907:716;6030:34;;;;:::i;:::-;611:4324:87;;-1:-1:-1;;;6080:41:83;;-1:-1:-1;;;;;611:4324:87;;;6080:41:83;;;611:4324:87;;;;;6080:41:83;611:4324:87;;;6090:13:83;611:4324:87;;6080:41:83;;;;;;;-1:-1:-1;6080:41:83;;;5907:716;6079:42;;6075:90;;6266:27;611:4324:87;2684:111:26;6210:14:83;611:4324:87;2684:111:26;;;:::i;:::-;611:4324:87;;;;;;-1:-1:-1;;;;;611:4324:87;;-1:-1:-1;611:4324:87;;;-1:-1:-1;611:4324:87;;6210:14:83;6266:27;:::i;:::-;6080:41;6311:15;;611:4324:87;;;;-1:-1:-1;;;;;;611:4324:87;-1:-1:-1;;;;;611:4324:87;;;;;;;;;;;-1:-1:-1;;;;;611:4324:87;;;;6337:143:83;;5907:716;-1:-1:-1;6493:28:83;611:4324:87;-1:-1:-1;;;;;611:4324:87;;;;;;;6489:128:83;;5907:716;:::o;6489:128::-;6551:55;;;:::i;:::-;;5907:716::o;6337:143::-;6404:65;;;:::i;:::-;;6337:143;;;6075:90;611:4324:87;;-1:-1:-1;;;6144:10:83;;6080:41;;6144:10;6080:41;;;;;;;;;;;;;;:::i;:::-;;;;611:4324:87;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::o;7558:604:93:-;;611:4324:87;;7686:17:93;7682:83;;611:4324:87;7789:27:93;611:4324:87;7789:27:93;611:4324:87;;7789:27:93;;;;;;:::i;:::-;7860:14;;;;;:::i;:::-;611:4324:87;;;;;;;;;;;;;;;;7888:22:93;;;7884:77;;7975:21;-1:-1:-1;7975:84:93;;;;7558:604;7971:139;;;;8127:28;;;;:::i;7971:139::-;8082:17;;7789:27;8082:17;611:4324:87;8075:24:93;:::o;7975:84::-;611:4324:87;;;8009:16:93;611:4324:87;;8009:16:93;:::i;:::-;611:4324:87;;;8001:24:93;:57;;;;;7975:84;;;;;;;8001:57;8029:29;8038:8;;;8029:18;8038:8;8029:23;8038:8;;:::i;:::-;8029:18;;:::i;:::-;611:4324:87;;;;;8029:23:93;611:4324:87;;;;8029:29:93;;8001:57;;;;7884:77;7933:17;;;;;7789:27;7933:17;611:4324:87;7926:24:93;:::o;7682:83::-;7726:28;;;;:::i;611:4324:87:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;611:4324:87;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;2737:699::-;;;;;611:4324;;:::i;:::-;;;;2978:16;2974:92;;2737:699;-1:-1:-1;;3080:8:87;611:4324;-1:-1:-1;;;;;611:4324:87;;;;;3080:21;3076:85;;-1:-1:-1;611:4324:87;3218:67;;611:4324;;3257:27;;3218;;:13;;-1:-1:-1;;;;;611:4324:87;3218:13;611:4324;3218:27;3257;;;;611:4324;;;;;;;;;;;3218:67;;;3080:8;3218:67;;;:::i;:::-;;;;;;;;;;3192:192;3218:67;-1:-1:-1;3218:67:87;;;2737:699;3341:28;3303:67;3341:28;;611:4324;3341:28;;;3303:67;;:::i;:::-;3192:192;3463:5:63;;;;3066;;611:4324:87;3060:42:63;3371:111;;3192:192:87;3398:21;;2737:699;:::o;3218:67::-;3303;3218;;;;3257:27;3218:67;3257:27;3218:67;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;3076:85;-1:-1:-1;;3128:21:87;;-1:-1:-1;;3117:33:87:o;2974:92::-;3024:31;;;;;;;;;;;;;:::i;:::-;2974:92;;;;;3442:253;3552:8;611:4324;-1:-1:-1;;;;;611:4324:87;;;;;;;3552:21;3548:60;;3634:27;3552:8;611:4324;-1:-1:-1;611:4324:87;;;;;;;;;;;3634:27;;;;;;;;;-1:-1:-1;3634:27:87;;;3442:253;2193:25;;:34;:25;611:4324;;2193:13;611:4324;;;;;;;2193:25;:34;:::i;3634:27::-;2193:34;3634:27;;;;2193:25;3634:27;;;;;;;;;;;:::i;:::-;;;;;;14296:213:64;611:4324:87;14374:24:64;;;;14370:103;;611:4324:87;14296:213:64;:::o;14370:103::-;611:4324:87;;;;14421:41:64;;;;;;14452:2;14421:41;;;611:4324:87;;;;;14421:41:64;10695:389:66;611:4324:87;;10871:8:66;;;10895:20;;10833:17;10895:20;10833:17;10895:20;10833:17;10895:20;:::o;10867:211::-;611:4324:87;;;;;;;;;;10833:17:66;14439:109;;10833:17;14439:109;;;611:4324:87;11014:1:66;611:4324:87;;;;;;;11030:37:66;:::o;6893:76:22:-;;;:::i;:::-;;;:::i;:::-;1949:1:26;-1:-1:-1;;;;;;;;;;;611:4324:87;6893:76:22:o;611:4324:87:-;;;;;;;:::i;:::-;-1:-1:-1;611:4324:87;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;611:4324:87;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;611:4324:87;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::o;4015:918::-;611:4324;;:::i;:::-;;4163:30;611:4324;;4163:30;;;;;;;;;;;:::i;:::-;4208:17;;611:4324;-1:-1:-1;;;;;611:4324:87;;4208:17;611:4324;;4208:54;;:103;;4015:918;4204:161;;4418:15;;;;611:4324;;;;-1:-1:-1;;;4380:54:87;;-1:-1:-1;;;;;611:4324:87;;;4380:54;;;;611:4324;;;;4380:54;4418:15;;;;611:4324;;;;;;;;4390:17;611:4324;4380:54;;;;;;;4208:17;4380:54;;;4015:918;4379:55;;4375:106;;4496:9;;4511:33;;;4208:17;4553:3;4511:33;;611:4324;;4507:44;;;;;4576:36;;;:50;:36;;:::i;:::-;611:4324;-1:-1:-1;;;;;611:4324:87;;;4576:50;;4572:119;;4709:73;4710:72;4745:36;;:33;;;:36;:::i;:::-;4710:72;:::i;:::-;4709:73;;611:4324;4709:73;4705:140;;611:4324;;4496:9;;4705:140;611:4324;;-1:-1:-1;;;4809:21:87;;611:4324;;4809:21;4572:119;611:4324;;-1:-1:-1;;;4653:23:87;;611:4324;;4653:23;4507:44;-1:-1:-1;;611:4324:87;;4380:54;611:4324;;-1:-1:-1;;;;;;611:4324:87;-1:-1:-1;;;;;611:4324:87;;;;;;;;;;-1:-1:-1;4865:26:87;;-1:-1:-1;;611:4324:87;4865:26;4909:17;4015:918;:::o;4375:106::-;4418:15;611:4324;-1:-1:-1;;;4457:13:87;;4380:54;;4457:13;4380:54;;;;;;;;;;;;;;:::i;:::-;;;;4204:161;611:4324;;-1:-1:-1;;;4334:20:87;;;;;4208:103;4266:33;;;;;611:4324;4266:45;4208:103;;6999:207:93;;611:4324:87;;9737:15:66;-1:-1:-1;9762:18:66;9795:7;9801:1;9795:7;;9791:234;;6999:207:93;10049:53:66;;;;;:::i;:::-;10120:8;;;:63;-1:-1:-1;10120:63:66;;-1:-1:-1;;;;;611:4324:87;;7168:7:93;611:4324:87;;;7178:12:93;;:17;:12;;:17;:::i;10120:63:66:-;10135:41;10168:7;10135:48;10168:7;;:::i;:::-;10135:41;14439:109;;;;;;14289:265;;10135:41;611:4324:87;;;;;10135:48:66;10120:63;;;9791:234;9838:14;;;;;:::i;:::-;611:4324:87;;;;;;;10049:53:66;14439:109;;-1:-1:-1;14439:109:66;611:4324:87;14439:109:66;;;-1:-1:-1;14439:109:66;;611:4324:87;;;;;9870:48:66;9866:149;611:4324:87;;;9938:10:66;9866:149;9791:234;;9866:149;9993:7;;;;;;:::i;:::-;9866:149;9791:234;;611:4324:87;;;;;;;:::i;:::-;-1:-1:-1;611:4324:87;;;;;;;:::o;11486:272:93:-;;611:4324:87;11718:12:93;11452:22:66;11718:31:93;11486:272;611:4324:87;;:::i;:::-;;;;:::i;:::-;;11452:22:66;;:::i;:::-;611:4324:87;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;11718:12:93;:31;:::i;:::-;611:4324:87;;;;;;;;;:::i;:::-;;;;;;;11672:79:93;;611:4324:87;11486:272:93;:::o;611:4324:87:-;;;-1:-1:-1;;;611:4324:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;611:4324:87;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;11657:922:66;611:4324:87;;11657:922:66;;;11864:7;;;;11936;11916:28;11936:7;;:::i;:::-;11916:28;14439:109;;;;;;14289:265;;11916:28;611:4324:87;;;;;;;;;;;;12103:13:66;;;12099:89;;12251:14;;;;;12285:19;;;;611:4324:87;;;;;;;;;;;;;;;;;12285:19:66;611:4324:87;;12423:25:66;;:::o;12247:163::-;611:4324:87;;;12343:52:66;611:4324:87;12353:41:66;611:4324:87;;:::i;:::-;;;;;;;;12353:41:66;-1:-1:-1;;;;;611:4324:87;;12353:41:66;;;611:4324:87;12343:52:66;:::i;:::-;12247:163;;12099:89;611:4324:87;;-1:-1:-1;;;12143:30:66;;;;;11860:713;611:4324:87;;12479:52:66;611:4324:87;12489:41:66;611:4324:87;;:::i;12489:41:66:-;-1:-1:-1;;;;;611:4324:87;;12489:41:66;;;611:4324:87;12343:52:66;:::i;12479:::-;11870:1;12545:17;;:::o;7084:141:22:-;611:4324:87;-1:-1:-1;;;;;;;;;;;611:4324:87;;;;7150:18:22;7146:73;;7084:141::o;7146:73::-;611:4324:87;;-1:-1:-1;;;7191:17:22;;;;;18080:5181:63;18246:1;18241:6;;;18237:53;;18246:1;19217:14;-1:-1:-1;;;19278:16:63;;;19274:92;;18080:5181;22827:18;22717;22607;22498;22387;22278;23216:28;19383:15;19898:6;19383:15;-1:-1:-1;;;23237:6:63;19383:15;;;19379:90;;18080:5181;19493:7;19486:15;;;19482:90;;18080:5181;19596:7;19589:15;;;19585:89;;18080:5181;19698:6;19691:14;;;19687:87;;18080:5181;19798:6;19791:14;;;19787:87;;18080:5181;19891:14;;19887:61;;18080:5181;20374:1;611:4324:87;18246:1:63;611:4324:87;22284:6:63;;;;:::i;:::-;611:4324:87;;;;;22278:18:63;22393:6;;;;:::i;22387:18::-;22504:6;;;;:::i;22498:18::-;22613:6;;;;:::i;22607:18::-;22723:6;;;;:::i;22717:18::-;22833:6;;;;:::i;22827:18::-;23237:6;;;:::i;:::-;23232:11;;;611:4324:87;23216:28:63;611:4324:87;;18080:5181:63;:::o;19887:61::-;18246:1;611:4324:87;19887:61:63;;19787:87;611:4324:87;;;;;19787:87:63;;;19687;611:4324:87;;;;;19687:87:63;;;19585:89;611:4324:87;;;;;19585:89:63;;;19482:90;611:4324:87;;;;;19482:90:63;;;19379;611:4324:87;;;;;19379:90:63;;;19274:92;-1:-1:-1;;;;611:4324:87;-1:-1:-1;611:4324:87;;;;19274:92:63;;12929:433:66;;;13112:10;;;;;;13344:11;;;12929:433;:::o;13105:230::-;3721:5:63;;;;;;3731;;;;611:4324:87;;;;;;;;;14439:109:66;-1:-1:-1;14439:109:66;611:4324:87;14439:109:66;;;-1:-1:-1;14439:109:66;;611:4324:87;;;;;-1:-1:-1;13189:136:66;611:4324:87;;;13248:10:66;13189:136;;13105:230;;;;13189:136;13303:7;;;;;;:::i;:::-;13189:136;;","linkReferences":{},"immutableReferences":{"56598":[{"start":1514,"length":32}],"56601":[{"start":3348,"length":32}],"57552":[{"start":1129,"length":32},{"start":3405,"length":32}],"57555":[{"start":863,"length":32},{"start":6996,"length":32}],"57558":[{"start":931,"length":32},{"start":4918,"length":32},{"start":5253,"length":32}],"57561":[{"start":999,"length":32},{"start":4765,"length":32},{"start":5379,"length":32}],"59477":[{"start":2964,"length":32},{"start":8716,"length":32}]}},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","FACTORY()":"2dd31000","HOOK_GAS_LIMIT()":"ff54740f","HOOK_RESERVE()":"557cab44","HOOK_SET_ROLE()":"6679191e","NETWORK_LIMIT_SET_ROLE()":"7d24bb27","NETWORK_REGISTRY()":"c0cd7c3e","OPERATOR_NETWORK_OPT_IN_SERVICE()":"1a80e500","OPERATOR_REGISTRY()":"83ce0322","OPERATOR_VAULT_OPT_IN_SERVICE()":"128e5d82","TYPE()":"bb24fe8a","VAULT_FACTORY()":"103f2907","VERSION()":"ffa1ad74","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","hook()":"7f5a7c7b","initialize(bytes)":"439fab91","maxNetworkLimit(bytes32)":"d15b740e","networkLimit(bytes32)":"3eb22c0f","networkLimitAt(bytes32,uint48,bytes)":"5d32a1c9","onSlash(bytes32,address,uint256,uint48,bytes)":"e49561ee","operator()":"570ca735","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","setHook(address)":"3dfd3873","setMaxNetworkLimit(uint96,uint256)":"23f752d5","setNetworkLimit(bytes32,uint256)":"02145348","stake(bytes32,address)":"fd4d447c","stakeAt(bytes32,address,uint48,bytes)":"e02f6937","staticDelegateCall(address,bytes)":"9f86fd85","supportsInterface(bytes4)":"01ffc9a7","vault()":"fbfa77cf"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operatorRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"networkRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"vaultFactory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operatorVaultOptInService\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operatorNetworkOptInService\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegatorFactory\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"entityType\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadySet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CheckpointUnorderedInsertion\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DuplicateRoleHolder\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedsMaxNetworkLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientHookGas\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingRoleHolders\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotNetwork\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotOperator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotSlasher\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressRoleHolder\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"}],\"name\":\"OnSlash\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"hook\",\"type\":\"address\"}],\"name\":\"SetHook\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"SetMaxNetworkLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"SetNetworkLimit\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HOOK_GAS_LIMIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HOOK_RESERVE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HOOK_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NETWORK_LIMIT_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NETWORK_REGISTRY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_NETWORK_OPT_IN_SERVICE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_REGISTRY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_VAULT_OPT_IN_SERVICE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TYPE\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VAULT_FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VERSION\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hook\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"}],\"name\":\"maxNetworkLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"}],\"name\":\"networkLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"networkLimitAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"hook_\",\"type\":\"address\"}],\"name\":\"setHook\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint96\",\"name\":\"identifier\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"setMaxNetworkLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"setNetworkLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"stake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hints\",\"type\":\"bytes\"}],\"name\":\"stakeAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"staticDelegateCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"CheckpointUnorderedInsertion()\":[{\"details\":\"A value was attempted to be inserted on a past checkpoint.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"OnSlash(bytes32,address,uint256,uint48)\":{\"params\":{\"amount\":\"amount of the collateral to be slashed\",\"captureTimestamp\":\"time point when the stake was captured\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"SetHook(address)\":{\"params\":{\"hook\":\"address of the hook\"}},\"SetMaxNetworkLimit(bytes32,uint256)\":{\"params\":{\"amount\":\"new maximum subnetwork's limit (how much stake the subnetwork is ready to get)\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"SetNetworkLimit(bytes32,uint256)\":{\"params\":{\"amount\":\"new subnetwork's limit (how much stake the vault curator is ready to give to the subnetwork)\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}}},\"kind\":\"dev\",\"methods\":{\"VERSION()\":{\"details\":\"Must return 1 for this one.\",\"returns\":{\"_0\":\"version of the delegator\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize(bytes)\":{\"params\":{\"data\":\"some data to use\"}},\"networkLimit(bytes32)\":{\"params\":{\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"_0\":\"limit of the subnetwork\"}},\"networkLimitAt(bytes32,uint48,bytes)\":{\"params\":{\"hint\":\"hint for checkpoint index\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\",\"timestamp\":\"time point to get the subnetwork limit at\"},\"returns\":{\"_0\":\"limit of the subnetwork at the given timestamp\"}},\"onSlash(bytes32,address,uint256,uint48,bytes)\":{\"details\":\"Only the vault's slasher can call this function.\",\"params\":{\"amount\":\"amount of the collateral slashed\",\"captureTimestamp\":\"time point when the stake was captured\",\"data\":\"some additional data\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"setHook(address)\":{\"details\":\"Only a HOOK_SET_ROLE holder can call this function. The hook can have arbitrary logic under certain functions, however, it doesn't affect the stake guarantees.\",\"params\":{\"hook\":\"address of the hook\"}},\"setMaxNetworkLimit(uint96,uint256)\":{\"details\":\"Only a network can call this function.\",\"params\":{\"amount\":\"new maximum subnetwork's limit\"}},\"setNetworkLimit(bytes32,uint256)\":{\"details\":\"Only a NETWORK_LIMIT_SET_ROLE holder can call this function.\",\"params\":{\"amount\":\"new limit of the subnetwork\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"stake(bytes32,address)\":{\"details\":\"Warning: this function is not safe to use for stake capturing, as it can change by the end of the block.\",\"params\":{\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"_0\":\"slashable stake until the end of the next epoch\"}},\"stakeAt(bytes32,address,uint48,bytes)\":{\"details\":\"Warning: it is not safe to use timestamp >= current one for the stake capturing, as it can change later.\",\"params\":{\"hints\":\"hints for the checkpoints' indexes\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\",\"timestamp\":\"time point to capture the stake at\"},\"returns\":{\"_0\":\"slashable stake at the given timestamp until the end of the consequent epoch\"}},\"staticDelegateCall(address,bytes)\":{\"details\":\"It allows to use this contract's storage on-chain.\",\"params\":{\"data\":\"data to make a delegatecall with\",\"target\":\"address of the contract to make a delegatecall to\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"stateVariables\":{\"NETWORK_LIMIT_SET_ROLE\":{\"return\":\"identifier of the subnetwork limit setter role\",\"returns\":{\"_0\":\"identifier of the subnetwork limit setter role\"}},\"OPERATOR_REGISTRY\":{\"return\":\"address of the operator registry\",\"returns\":{\"_0\":\"address of the operator registry\"}},\"operator\":{\"return\":\"address of the operator\",\"returns\":{\"_0\":\"address of the operator\"}}},\"version\":1},\"userdoc\":{\"events\":{\"OnSlash(bytes32,address,uint256,uint48)\":{\"notice\":\"Emitted when a slash happens.\"},\"SetHook(address)\":{\"notice\":\"Emitted when a hook is set.\"},\"SetMaxNetworkLimit(bytes32,uint256)\":{\"notice\":\"Emitted when a subnetwork's maximum limit is set.\"},\"SetNetworkLimit(bytes32,uint256)\":{\"notice\":\"Emitted when a subnetwork's limit is set.\"}},\"kind\":\"user\",\"methods\":{\"FACTORY()\":{\"notice\":\"Get the factory's address.\"},\"HOOK_GAS_LIMIT()\":{\"notice\":\"Get a gas limit for the hook.\"},\"HOOK_RESERVE()\":{\"notice\":\"Get a reserve gas between the gas limit check and the hook's execution.\"},\"HOOK_SET_ROLE()\":{\"notice\":\"Get a hook setter's role.\"},\"NETWORK_LIMIT_SET_ROLE()\":{\"notice\":\"Get a subnetwork limit setter's role.\"},\"NETWORK_REGISTRY()\":{\"notice\":\"Get the network registry's address.\"},\"OPERATOR_NETWORK_OPT_IN_SERVICE()\":{\"notice\":\"Get the operator-network opt-in service's address.\"},\"OPERATOR_REGISTRY()\":{\"notice\":\"Get the operator registry's address.\"},\"OPERATOR_VAULT_OPT_IN_SERVICE()\":{\"notice\":\"Get the operator-vault opt-in service's address.\"},\"TYPE()\":{\"notice\":\"Get the entity's type.\"},\"VAULT_FACTORY()\":{\"notice\":\"Get the vault factory's address.\"},\"VERSION()\":{\"notice\":\"Get a version of the delegator (different versions mean different interfaces).\"},\"hook()\":{\"notice\":\"Get the hook's address.\"},\"initialize(bytes)\":{\"notice\":\"Initialize this entity contract by using a given data.\"},\"maxNetworkLimit(bytes32)\":{\"notice\":\"Get a particular subnetwork's maximum limit (meaning the subnetwork is not ready to get more as a stake).\"},\"networkLimit(bytes32)\":{\"notice\":\"Get a subnetwork's limit (how much stake the vault curator is ready to give to the subnetwork).\"},\"networkLimitAt(bytes32,uint48,bytes)\":{\"notice\":\"Get a subnetwork's limit at a given timestamp using a hint (how much stake the vault curator is ready to give to the subnetwork).\"},\"onSlash(bytes32,address,uint256,uint48,bytes)\":{\"notice\":\"Called when a slash happens.\"},\"operator()\":{\"notice\":\"Get an operator managing the vault's funds.\"},\"setHook(address)\":{\"notice\":\"Set a new hook.\"},\"setMaxNetworkLimit(uint96,uint256)\":{\"notice\":\"Set a maximum limit for a subnetwork (how much stake the subnetwork is ready to get). identifier identifier of the subnetwork\"},\"setNetworkLimit(bytes32,uint256)\":{\"notice\":\"Set a subnetwork's limit (how much stake the vault curator is ready to give to the subnetwork).\"},\"stake(bytes32,address)\":{\"notice\":\"Get a stake that a given subnetwork will be able to slash for a certain operator until the end of the next epoch (if no cross-slashing and no slashings by the subnetwork).\"},\"stakeAt(bytes32,address,uint48,bytes)\":{\"notice\":\"Get a stake that a given subnetwork could be able to slash for a certain operator at a given timestamp until the end of the consequent epoch using hints (if no cross-slashing and no slashings by the subnetwork).\"},\"staticDelegateCall(address,bytes)\":{\"notice\":\"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data).\"},\"vault()\":{\"notice\":\"Get the vault's address.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/delegator/OperatorSpecificDelegator.sol\":\"OperatorSpecificDelegator\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf\",\"dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89\",\"dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1\",\"dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44\",\"dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6\",\"dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza\"]},\"src/contracts/common/Entity.sol\":{\"keccak256\":\"0x3d61a932995b8443381f3950542d388223a2c26dd5d29a3274dea3baa7388bd7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7cdf5f03ca72fd263fd32ff59c8d88ddca911ae83896a287d10772c1bbe9b138\",\"dweb:/ipfs/QmbP84r5BWT1Rn9AYTntWSf3xUMTTCohTZJFhbBhDXFoHa\"]},\"src/contracts/common/StaticDelegateCallable.sol\":{\"keccak256\":\"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764\",\"dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD\"]},\"src/contracts/delegator/BaseDelegator.sol\":{\"keccak256\":\"0x7c54d491fdd4415b764a9c8defa068e56d4c0c8c9419be0053a1d377669290e8\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://9238bfbad0f6eeb0dc7727724de14380f1980b395902269703d5e2ef07e52e10\",\"dweb:/ipfs/QmPJn1V4HNXcEghYvogGuSTF24dSQUPosR5qtsXcmNqRm3\"]},\"src/contracts/delegator/OperatorSpecificDelegator.sol\":{\"keccak256\":\"0x630ce62fa30b9f3349ab7a8cf8dbf041319febc6dd757be2f94d3d25944ed328\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c2ac59d47ce57d2a6819ae9833e1a618a371eccff93eb5ab367b201b01f42bfa\",\"dweb:/ipfs/QmdBpGMBivpNPv2WbH8vnCUy5xkVeaxQvGgqi33vKCz1kA\"]},\"src/contracts/libraries/Checkpoints.sol\":{\"keccak256\":\"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609\",\"dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE\"]},\"src/contracts/libraries/Subnetwork.sol\":{\"keccak256\":\"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56\",\"dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32\"]},\"src/interfaces/common/IEntity.sol\":{\"keccak256\":\"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b\",\"dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv\"]},\"src/interfaces/common/IMigratableEntity.sol\":{\"keccak256\":\"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c\",\"dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds\"]},\"src/interfaces/common/IRegistry.sol\":{\"keccak256\":\"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014\",\"dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK\"]},\"src/interfaces/common/IStaticDelegateCallable.sol\":{\"keccak256\":\"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516\",\"dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi\"]},\"src/interfaces/delegator/IBaseDelegator.sol\":{\"keccak256\":\"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2\",\"dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8\"]},\"src/interfaces/delegator/IDelegatorHook.sol\":{\"keccak256\":\"0xc51aa8d7d1f6c8043ee819b7aeb86da0e993912e1442098df897e299f01f9f46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://adddf5cb2ba282aeb576b26efb28640f865a1721cc9b6eee8b3ee0457a2c9780\",\"dweb:/ipfs/QmNYgAmnLRwWZbhTuQhZs9rx4zcme1df5mEepkrniorSoW\"]},\"src/interfaces/delegator/IOperatorSpecificDelegator.sol\":{\"keccak256\":\"0x72075cab585dc17240cc3e32bc99b92f0d5627ddd988fed680e3e1a52d5a01e4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7448bc90699409ae61d85216b5efc2143a37f0f73354be2aea993bc54afca441\",\"dweb:/ipfs/QmXE4gAxM8pHosZK8mcTcj17puBx484meDCcmrDePskGHZ\"]},\"src/interfaces/service/IOptInService.sol\":{\"keccak256\":\"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337\",\"dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24\"]},\"src/interfaces/vault/IVault.sol\":{\"keccak256\":\"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9\",\"dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R\"]},\"src/interfaces/vault/IVaultStorage.sol\":{\"keccak256\":\"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e\",\"dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"operatorRegistry","type":"address"},{"internalType":"address","name":"networkRegistry","type":"address"},{"internalType":"address","name":"vaultFactory","type":"address"},{"internalType":"address","name":"operatorVaultOptInService","type":"address"},{"internalType":"address","name":"operatorNetworkOptInService","type":"address"},{"internalType":"address","name":"delegatorFactory","type":"address"},{"internalType":"uint64","name":"entityType","type":"uint64"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"inputs":[],"type":"error","name":"AlreadySet"},{"inputs":[],"type":"error","name":"CheckpointUnorderedInsertion"},{"inputs":[],"type":"error","name":"DuplicateRoleHolder"},{"inputs":[],"type":"error","name":"ExceedsMaxNetworkLimit"},{"inputs":[],"type":"error","name":"InsufficientHookGas"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"MissingRoleHolders"},{"inputs":[],"type":"error","name":"NotInitialized"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"NotNetwork"},{"inputs":[],"type":"error","name":"NotOperator"},{"inputs":[],"type":"error","name":"NotSlasher"},{"inputs":[],"type":"error","name":"NotVault"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintDowncast"},{"inputs":[],"type":"error","name":"ZeroAddressRoleHolder"},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint48","name":"captureTimestamp","type":"uint48","indexed":false}],"type":"event","name":"OnSlash","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[{"internalType":"address","name":"hook","type":"address","indexed":true}],"type":"event","name":"SetHook","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"SetMaxNetworkLimit","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"SetNetworkLimit","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HOOK_GAS_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HOOK_RESERVE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HOOK_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"NETWORK_LIMIT_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"NETWORK_REGISTRY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_NETWORK_OPT_IN_SERVICE","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_REGISTRY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_VAULT_OPT_IN_SERVICE","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"TYPE","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VAULT_FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"VERSION","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"hook","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"}],"stateMutability":"view","type":"function","name":"maxNetworkLimit","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"}],"stateMutability":"view","type":"function","name":"networkLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"networkLimitAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint48","name":"captureTimestamp","type":"uint48"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"onSlash"},{"inputs":[],"stateMutability":"view","type":"function","name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"address","name":"hook_","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setHook"},{"inputs":[{"internalType":"uint96","name":"identifier","type":"uint96"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setMaxNetworkLimit"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setNetworkLimit"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"stake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hints","type":"bytes"}],"stateMutability":"view","type":"function","name":"stakeAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"staticDelegateCall"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"vault","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"VERSION()":{"details":"Must return 1 for this one.","returns":{"_0":"version of the delegator"}},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"initialize(bytes)":{"params":{"data":"some data to use"}},"networkLimit(bytes32)":{"params":{"subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"_0":"limit of the subnetwork"}},"networkLimitAt(bytes32,uint48,bytes)":{"params":{"hint":"hint for checkpoint index","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)","timestamp":"time point to get the subnetwork limit at"},"returns":{"_0":"limit of the subnetwork at the given timestamp"}},"onSlash(bytes32,address,uint256,uint48,bytes)":{"details":"Only the vault's slasher can call this function.","params":{"amount":"amount of the collateral slashed","captureTimestamp":"time point when the stake was captured","data":"some additional data","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"}},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"setHook(address)":{"details":"Only a HOOK_SET_ROLE holder can call this function. The hook can have arbitrary logic under certain functions, however, it doesn't affect the stake guarantees.","params":{"hook":"address of the hook"}},"setMaxNetworkLimit(uint96,uint256)":{"details":"Only a network can call this function.","params":{"amount":"new maximum subnetwork's limit"}},"setNetworkLimit(bytes32,uint256)":{"details":"Only a NETWORK_LIMIT_SET_ROLE holder can call this function.","params":{"amount":"new limit of the subnetwork","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"}},"stake(bytes32,address)":{"details":"Warning: this function is not safe to use for stake capturing, as it can change by the end of the block.","params":{"operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"_0":"slashable stake until the end of the next epoch"}},"stakeAt(bytes32,address,uint48,bytes)":{"details":"Warning: it is not safe to use timestamp >= current one for the stake capturing, as it can change later.","params":{"hints":"hints for the checkpoints' indexes","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)","timestamp":"time point to capture the stake at"},"returns":{"_0":"slashable stake at the given timestamp until the end of the consequent epoch"}},"staticDelegateCall(address,bytes)":{"details":"It allows to use this contract's storage on-chain.","params":{"data":"data to make a delegatecall with","target":"address of the contract to make a delegatecall to"}},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."}},"version":1},"userdoc":{"kind":"user","methods":{"FACTORY()":{"notice":"Get the factory's address."},"HOOK_GAS_LIMIT()":{"notice":"Get a gas limit for the hook."},"HOOK_RESERVE()":{"notice":"Get a reserve gas between the gas limit check and the hook's execution."},"HOOK_SET_ROLE()":{"notice":"Get a hook setter's role."},"NETWORK_LIMIT_SET_ROLE()":{"notice":"Get a subnetwork limit setter's role."},"NETWORK_REGISTRY()":{"notice":"Get the network registry's address."},"OPERATOR_NETWORK_OPT_IN_SERVICE()":{"notice":"Get the operator-network opt-in service's address."},"OPERATOR_REGISTRY()":{"notice":"Get the operator registry's address."},"OPERATOR_VAULT_OPT_IN_SERVICE()":{"notice":"Get the operator-vault opt-in service's address."},"TYPE()":{"notice":"Get the entity's type."},"VAULT_FACTORY()":{"notice":"Get the vault factory's address."},"VERSION()":{"notice":"Get a version of the delegator (different versions mean different interfaces)."},"hook()":{"notice":"Get the hook's address."},"initialize(bytes)":{"notice":"Initialize this entity contract by using a given data."},"maxNetworkLimit(bytes32)":{"notice":"Get a particular subnetwork's maximum limit (meaning the subnetwork is not ready to get more as a stake)."},"networkLimit(bytes32)":{"notice":"Get a subnetwork's limit (how much stake the vault curator is ready to give to the subnetwork)."},"networkLimitAt(bytes32,uint48,bytes)":{"notice":"Get a subnetwork's limit at a given timestamp using a hint (how much stake the vault curator is ready to give to the subnetwork)."},"onSlash(bytes32,address,uint256,uint48,bytes)":{"notice":"Called when a slash happens."},"operator()":{"notice":"Get an operator managing the vault's funds."},"setHook(address)":{"notice":"Set a new hook."},"setMaxNetworkLimit(uint96,uint256)":{"notice":"Set a maximum limit for a subnetwork (how much stake the subnetwork is ready to get). identifier identifier of the subnetwork"},"setNetworkLimit(bytes32,uint256)":{"notice":"Set a subnetwork's limit (how much stake the vault curator is ready to give to the subnetwork)."},"stake(bytes32,address)":{"notice":"Get a stake that a given subnetwork will be able to slash for a certain operator until the end of the next epoch (if no cross-slashing and no slashings by the subnetwork)."},"stakeAt(bytes32,address,uint48,bytes)":{"notice":"Get a stake that a given subnetwork could be able to slash for a certain operator at a given timestamp until the end of the consequent epoch using hints (if no cross-slashing and no slashings by the subnetwork)."},"staticDelegateCall(address,bytes)":{"notice":"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data)."},"vault()":{"notice":"Get the vault's address."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/delegator/OperatorSpecificDelegator.sol":"OperatorSpecificDelegator"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol":{"keccak256":"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866","urls":["bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf","dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab","urls":["bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89","dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606","urls":["bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1","dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol":{"keccak256":"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f","urls":["bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44","dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc","urls":["bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6","dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza"],"license":"MIT"},"src/contracts/common/Entity.sol":{"keccak256":"0x3d61a932995b8443381f3950542d388223a2c26dd5d29a3274dea3baa7388bd7","urls":["bzz-raw://7cdf5f03ca72fd263fd32ff59c8d88ddca911ae83896a287d10772c1bbe9b138","dweb:/ipfs/QmbP84r5BWT1Rn9AYTntWSf3xUMTTCohTZJFhbBhDXFoHa"],"license":"BUSL-1.1"},"src/contracts/common/StaticDelegateCallable.sol":{"keccak256":"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90","urls":["bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764","dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD"],"license":"BUSL-1.1"},"src/contracts/delegator/BaseDelegator.sol":{"keccak256":"0x7c54d491fdd4415b764a9c8defa068e56d4c0c8c9419be0053a1d377669290e8","urls":["bzz-raw://9238bfbad0f6eeb0dc7727724de14380f1980b395902269703d5e2ef07e52e10","dweb:/ipfs/QmPJn1V4HNXcEghYvogGuSTF24dSQUPosR5qtsXcmNqRm3"],"license":"BUSL-1.1"},"src/contracts/delegator/OperatorSpecificDelegator.sol":{"keccak256":"0x630ce62fa30b9f3349ab7a8cf8dbf041319febc6dd757be2f94d3d25944ed328","urls":["bzz-raw://c2ac59d47ce57d2a6819ae9833e1a618a371eccff93eb5ab367b201b01f42bfa","dweb:/ipfs/QmdBpGMBivpNPv2WbH8vnCUy5xkVeaxQvGgqi33vKCz1kA"],"license":"BUSL-1.1"},"src/contracts/libraries/Checkpoints.sol":{"keccak256":"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c","urls":["bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609","dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE"],"license":"MIT"},"src/contracts/libraries/Subnetwork.sol":{"keccak256":"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe","urls":["bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56","dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32"],"license":"MIT"},"src/interfaces/common/IEntity.sol":{"keccak256":"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21","urls":["bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b","dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv"],"license":"MIT"},"src/interfaces/common/IMigratableEntity.sol":{"keccak256":"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4","urls":["bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c","dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds"],"license":"MIT"},"src/interfaces/common/IRegistry.sol":{"keccak256":"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb","urls":["bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014","dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK"],"license":"MIT"},"src/interfaces/common/IStaticDelegateCallable.sol":{"keccak256":"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5","urls":["bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516","dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi"],"license":"MIT"},"src/interfaces/delegator/IBaseDelegator.sol":{"keccak256":"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee","urls":["bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2","dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8"],"license":"MIT"},"src/interfaces/delegator/IDelegatorHook.sol":{"keccak256":"0xc51aa8d7d1f6c8043ee819b7aeb86da0e993912e1442098df897e299f01f9f46","urls":["bzz-raw://adddf5cb2ba282aeb576b26efb28640f865a1721cc9b6eee8b3ee0457a2c9780","dweb:/ipfs/QmNYgAmnLRwWZbhTuQhZs9rx4zcme1df5mEepkrniorSoW"],"license":"MIT"},"src/interfaces/delegator/IOperatorSpecificDelegator.sol":{"keccak256":"0x72075cab585dc17240cc3e32bc99b92f0d5627ddd988fed680e3e1a52d5a01e4","urls":["bzz-raw://7448bc90699409ae61d85216b5efc2143a37f0f73354be2aea993bc54afca441","dweb:/ipfs/QmXE4gAxM8pHosZK8mcTcj17puBx484meDCcmrDePskGHZ"],"license":"MIT"},"src/interfaces/service/IOptInService.sol":{"keccak256":"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a","urls":["bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337","dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24"],"license":"MIT"},"src/interfaces/vault/IVault.sol":{"keccak256":"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235","urls":["bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9","dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R"],"license":"MIT"},"src/interfaces/vault/IVaultStorage.sol":{"keccak256":"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22","urls":["bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e","dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6"],"license":"MIT"}},"version":1},"id":87} \ No newline at end of file diff --git a/out/OptInService.sol/OptInService.json b/out/OptInService.sol/OptInService.json index 6b874204..a3a0f48b 100644 --- a/out/OptInService.sol/OptInService.json +++ b/out/OptInService.sol/OptInService.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"whoRegistry","type":"address","internalType":"address"},{"name":"whereRegistry","type":"address","internalType":"address"},{"name":"name","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"WHERE_REGISTRY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"WHO_REGISTRY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"eip712Domain","inputs":[],"outputs":[{"name":"fields","type":"bytes1","internalType":"bytes1"},{"name":"name","type":"string","internalType":"string"},{"name":"version","type":"string","internalType":"string"},{"name":"chainId","type":"uint256","internalType":"uint256"},{"name":"verifyingContract","type":"address","internalType":"address"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"extensions","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"increaseNonce","inputs":[{"name":"where","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isOptedIn","inputs":[{"name":"who","type":"address","internalType":"address"},{"name":"where","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isOptedInAt","inputs":[{"name":"who","type":"address","internalType":"address"},{"name":"where","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"nonces","inputs":[{"name":"who","type":"address","internalType":"address"},{"name":"where","type":"address","internalType":"address"}],"outputs":[{"name":"nonce","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"optIn","inputs":[{"name":"where","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"optIn","inputs":[{"name":"who","type":"address","internalType":"address"},{"name":"where","type":"address","internalType":"address"},{"name":"deadline","type":"uint48","internalType":"uint48"},{"name":"signature","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"optOut","inputs":[{"name":"who","type":"address","internalType":"address"},{"name":"where","type":"address","internalType":"address"},{"name":"deadline","type":"uint48","internalType":"uint48"},{"name":"signature","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"optOut","inputs":[{"name":"where","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"staticDelegateCall","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"EIP712DomainChanged","inputs":[],"anonymous":false},{"type":"event","name":"IncreaseNonce","inputs":[{"name":"who","type":"address","indexed":true,"internalType":"address"},{"name":"where","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OptIn","inputs":[{"name":"who","type":"address","indexed":true,"internalType":"address"},{"name":"where","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OptOut","inputs":[{"name":"who","type":"address","indexed":true,"internalType":"address"},{"name":"where","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AlreadyOptedIn","inputs":[]},{"type":"error","name":"CheckpointUnorderedInsertion","inputs":[]},{"type":"error","name":"ExpiredSignature","inputs":[]},{"type":"error","name":"InvalidShortString","inputs":[]},{"type":"error","name":"InvalidSignature","inputs":[]},{"type":"error","name":"NotOptedIn","inputs":[]},{"type":"error","name":"NotWhereEntity","inputs":[]},{"type":"error","name":"NotWho","inputs":[]},{"type":"error","name":"OptOutCooldown","inputs":[]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"StringTooLong","inputs":[{"name":"str","type":"string","internalType":"string"}]}],"bytecode":{"object":"0x6101a0604090808252346101dc57611c85803803809161001f82856101e0565b833981016060828203126101dc5761003682610203565b6020610043818501610203565b848601516001600160401b03959194918682116101dc57019181601f840112156101dc5782518681116101c857875193610086601f8301601f19168401866101e0565b818552828501938383830101116101dc57815f9284809301865e85010152865190878201828110888211176101c857885260018252808201603160f81b81526100ce85610217565b936101209485526100de846103ae565b95610140968752519020928360e0525190209761010098808a524660a0528151928301937f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f85528284015260608301524660808301523060a083015260a0825260c0820197828910908911176101c8578790525190206080523060c0526101609283526101809384526117a095866104e5873960805186611222015260a051866112dd015260c051866111ec015260e0518661127101525185611297015251846102dd015251836103060152518281816105d90152610c3901525181818161024e0152610c8c0152f35b634e487b7160e01b5f52604160045260245ffd5b5f80fd5b601f909101601f19168101906001600160401b038211908210176101c857604052565b51906001600160a01b03821682036101dc57565b80516020908181101561028d5750601f82511161024f578082519201519080831061024157501790565b825f19910360031b1b161790565b60448260405192839163305a27a960e01b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fd5b906001600160401b0382116101c8575f54926001938481811c911680156103a4575b8382101461039057601f811161035d575b5081601f84116001146102fb57509282939183925f946102f0575b50501b915f199060031b1c1916175f5560ff90565b015192505f806102db565b919083601f1981165f8052845f20945f905b88838310610343575050501061032b575b505050811b015f5560ff90565b01515f1960f88460031b161c191690555f808061031e565b85870151885590960195948501948793509081019061030d565b5f805284601f845f20920160051c820191601f860160051c015b8281106103855750506102c0565b5f8155018590610377565b634e487b7160e01b5f52602260045260245ffd5b90607f16906102af565b8051602090818110156103d85750601f82511161024f578082519201519080831061024157501790565b9192916001600160401b0381116101c85760019182548381811c911680156104da575b8282101461039057601f81116104a7575b5080601f83116001146104475750819293945f9261043c575b50505f19600383901b1c191690821b17905560ff90565b015190505f80610425565b90601f19831695845f52825f20925f905b8882106104905750508385969710610478575b505050811b01905560ff90565b01515f1960f88460031b161c191690555f808061046b565b808785968294968601518155019501930190610458565b835f5283601f835f20920160051c820191601f850160051c015b8281106104cf57505061040c565b5f81550184906104c1565b90607f16906103fb56fe60806040526004361015610011575f80fd5b5f3560e01c8063220d32d4146100d4578063530e1d43146100cf5780636d0fae4a146100ca5780638247a97c146100c557806384b0196e146100c05780639333fbda146100bb57806393f79bc3146100b65780639f86fd85146100b1578063b1138ad1146100ac578063c4b5d62c146100a7578063ced44ba7146100a25763d46104831461009d575f80fd5b6106cc565b610608565b6105c4565b6105a2565b610511565b610412565b6103bb565b6102c5565b61027d565b610239565b6101d3565b610109565b600435906001600160a01b03821682036100ef57565b5f80fd5b602435906001600160a01b03821682036100ef57565b346100ef5760403660031901126100ef5760206101356101276100d9565b61012f6100f3565b906106ee565b6040519015158152f35b9181601f840112156100ef5782359167ffffffffffffffff83116100ef57602083818601950101116100ef57565b9060806003198301126100ef576001600160a01b039160043583811681036100ef579260243590811681036100ef579160443565ffffffffffff811681036100ef57916064359067ffffffffffffffff82116100ef576101cf9160040161013f565b9091565b346100ef576020600161022961022f61021a6101ee3661016d565b969290949193888060a01b03165f526003895260405f209060018060a01b03165f5260205260405f2090565b92868060d01b0395369161080b565b916108c3565b1614604051908152f35b346100ef575f3660031901126100ef576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346100ef5760203660031901126100ef5761029f6102996100d9565b336109bf565b005b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b346100ef575f3660031901126100ef5761035e6103017f0000000000000000000000000000000000000000000000000000000000000000610e2a565b61032a7f0000000000000000000000000000000000000000000000000000000000000000610f28565b6040519061033782610786565b5f825261036c602091604051958695600f60f81b875260e0602088015260e08701906102a1565b9085820360408701526102a1565b4660608501523060808501525f60a085015283810360c0850152602080845192838152019301915f5b8281106103a457505050500390f35b835185528695509381019392810192600101610395565b346100ef5760403660031901126100ef5760206104096103d96100d9565b6103e16100f3565b6001600160a01b039182165f9081526002855260408082209290931681526020919091522090565b54604051908152f35b346100ef576104203661016d565b909165ffffffffffff8061043342610ff1565b1691169081106104ff576104df926104d06104d89260018060a01b0380891691825f5260026020526104788960405f209060018060a01b03165f5260205260405f2090565b546040519260208401947f7830334d17a05ab8aeca8f1778e27182208fc2d454ac7b38a4edc2069ee3a4a6865260408501528a166060840152608083015260a082015260a081526104c8816107a2565b519020611023565b92369161080b565b9084610a15565b156104ed5761029f91610af1565b604051638baa579f60e01b8152600490fd5b60405163df4cc36d60e01b8152600490fd5b346100ef5760403660031901126100ef5761052a6100d9565b60243567ffffffffffffffff81116100ef575f9161054d8392369060040161013f565b90816040519283928337810184815203915af461059a61056b610841565b9161058c6040519384921515602084015260408084015260608301906102a1565b03601f1981018352826107be565b805190602001fd5b346100ef5760203660031901126100ef5761029f6105be6100d9565b33610c0d565b346100ef575f3660031901126100ef576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346100ef576106163661016d565b909165ffffffffffff8061062942610ff1565b1691169081106104ff576106be926104d06104d89260018060a01b0380891691825f52600260205261066e8960405f209060018060a01b03165f5260205260405f2090565b546040519260208401947f6ab5200f1123a8d51d1695a9e5e757267926b53c6359f90b8873cc7dcc30ea2c865260408501528a166060840152608083015260a082015260a081526104c8816107a2565b156104ed5761029f91610c0d565b346100ef5760203660031901126100ef5761029f6106e86100d9565b33610af1565b6001600160a01b039081165f908152600360209081526040808320939094168252919091522080548061072c57505060015f5b818060d01b03161490565b5f1990808281011161074c576001925f5260205f2001015460301c610721565b61088c565b634e487b7160e01b5f52604160045260245ffd5b6040810190811067ffffffffffffffff82111761078157604052565b610751565b6020810190811067ffffffffffffffff82111761078157604052565b60c0810190811067ffffffffffffffff82111761078157604052565b90601f8019910116810190811067ffffffffffffffff82111761078157604052565b604051906107ed82610765565b565b67ffffffffffffffff811161078157601f01601f191660200190565b929192610817826107ef565b9161082560405193846107be565b8294818452818301116100ef578281602093845f960137010152565b3d1561086b573d90610852826107ef565b9161086060405193846107be565b82523d5f602084013e565b606090565b908160209103126100ef575163ffffffff811681036100ef5790565b634e487b7160e01b5f52601160045260245ffd5b5f1981019190821161074c57565b90600163ffffffff8093160191821161074c57565b918051156109b557806020806108de93518301019101610870565b916108e98382610dd6565b926108fa845165ffffffffffff1690565b9065ffffffffffff808516921682811461099c578211918261093c575b505061092a576109279250611091565b90565b5050602001516001600160d01b031690565b90915061094983546108a0565b63ffffffff831614918215610962575b50505f80610917565b61099491925061097d610977610989926108ae565b85610dd6565b5165ffffffffffff1690565b65ffffffffffff1690565b115f80610959565b50505050602091909101516001600160d01b0316905090565b5061092791611091565b6001600160a01b039081165f8181526002602090815260408083209590941680835294905291822080546001019055907f8ed32926585579e6191b145240df788165f4957e1135f30a00e08ee8feb9d6809080a3565b610a1f8383611049565b506004819592951015610add57159384610ac7575b508315610a42575b50505090565b5f929350908291604051610a7a8161058c6020820194630b135d3f60e11b998a875260248401526040604484015260648301906102a1565b51915afa90610a87610841565b82610ab9575b82610a9d575b50505f8080610a3c565b9091506020818051810103126100ef5760200151145f80610a93565b915060208251101591610a8d565b6001600160a01b0383811691161493505f610a34565b634e487b7160e01b5f52602160045260245ffd5b90610b2d610b2882610b138560018060a01b03165f52600360205260405f2090565b9060018060a01b03165f5260205260405f2090565b611385565b9091506001600160d01b031615610bd85765ffffffffffff80610b4f42610ff1565b16911614610bc657610b87610b7882610b138560018060a01b03165f52600360205260405f2090565b610b8142610ff1565b90611590565b5050610b9381836109bf565b6001600160a01b0390811691167f1629cd9ad365627cf8408d19c50224af8f3213c1a18ae48062d92e22bddf7de55f80a3565b60405163291bf4b760e21b8152600490fd5b6040516334b09b3960e11b8152600490fd5b908160209103126100ef575180151581036100ef5790565b6040513d5f823e3d90fd5b6040516302910f8b60e31b8082526001600160a01b0383811660048401529293916020919082816024817f000000000000000000000000000000000000000000000000000000000000000089165afa908115610d8a575f91610da1575b5015610d8f576040519081526001600160a01b038316600482015281816024817f000000000000000000000000000000000000000000000000000000000000000088165afa918215610d8a575f92610d5d575b505015610d4b57610cce81846106ee565b610d395780610d04610cf58493610b138760018060a01b03165f52600360205260405f2090565b610cfe42610ff1565b9061168f565b5050610d1081856109bf565b1691167f9b730d5b907ee509de729817a2bb37e404418ba569b3a50f36192372f973cb415f80a3565b60405163dcdeaba360e01b8152600490fd5b6040516321f5408d60e01b8152600490fd5b610d7c9250803d10610d83575b610d7481836107be565b810190610bea565b5f80610cbd565b503d610d6a565b610c02565b604051630fb9ff9560e41b8152600490fd5b610db89150833d8511610d8357610d7481836107be565b5f610c6a565b60405190610dcb82610765565b5f6020838281520152565b610dfb91610df591610de6610dbe565b50610def610dbe565b50611170565b50611199565b65ffffffffffff81511690602060018060d01b039101511660405191610e2083610765565b8252602082015290565b60ff8114610e3b57610927906111bd565b506040515f80546001918160011c9260018316908115610f1e575b602090602086108314610f0a5785875286946020860193908115610eeb5750600114610e8c575b505050610927925003826107be565b925093610eb95f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56390565b945f935b828510610ed5575050506109279350015f8080610e7d565b8654858501529586019587955093810193610ebd565b925050506109279491925060ff19168252151560051b015f8080610e7d565b634e487b7160e01b5f52602260045260245ffd5b93607f1693610e56565b60ff8114610f3957610927906111bd565b506040516001805480821c915f90828116908115610fe7575b602090602086108314610f0a5785875286946020860193908115610eeb5750600114610f8757505050610927925003826107be565b925093610fb560015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf690565b945f935b828510610fd1575050506109279350015f8080610e7d565b8654858501529586019587955093810193610fb9565b93607f1693610f52565b65ffffffffffff90818111611004571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b60429061102e6111e9565b906040519161190160f01b8352600283015260228201522090565b8151919060418303611079576110729250602082015190606060408401519301515f1a90611303565b9192909190565b50505f9160029190565b906001820180921161074c57565b908154905f918060058111611127575b50915b8281106110da575050806110b85750505f90565b610927916110c86110d3926108a0565b905f5260205f200190565b5460301c90565b90918082169080831860011c820180921161074c57845f5265ffffffffffff808360205f20015416908516105f146111155750915b906110a4565b92915061112190611083565b9061110f565b90611131826113f2565b820391821161074c57845f5265ffffffffffff808360205f20015416908416105f1461115f57505b5f6110a1565b925061116a90611083565b91611159565b8054821015611185575f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b906040516111a681610765565b915465ffffffffffff8116835260301c6020830152565b60ff811690601f82116111d75760405191610e2083610765565b604051632cd44ac360e21b8152600490fd5b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806112da575b15611244577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a081526112d4816107a2565b51902090565b507f0000000000000000000000000000000000000000000000000000000000000000461461121b565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841161137a579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa15610d8a575f516001600160a01b0381161561137057905f905f90565b505f906001905f90565b5050505f9160039190565b8054806113965750505f905f905f90565b5f1990808281011161074c576113b3925f5260205f200101611199565b9065ffffffffffff82511691602060018060d01b0391015116906001929190565b81156113de570490565b634e487b7160e01b5f52601260045260245ffd5b801561152b57806114c46114bd6114b36114a961149f61149561148b61148160016109279a5f908b60801c8061151f575b508060401c80611512575b508060201c80611505575b508060101c806114f8575b508060081c806114eb575b508060041c806114de575b508060021c806114d1575b50821c6114ca575b811c1b61147a818b6113d4565b0160011c90565b61147a818a6113d4565b61147a81896113d4565b61147a81886113d4565b61147a81876113d4565b61147a81866113d4565b61147a81856113d4565b80926113d4565b90611758565b810161146d565b600291509101905f611465565b600491509101905f61145a565b600891509101905f61144f565b601091509101905f611444565b602091509101905f611439565b604091509101905f61142e565b9150506080905f611423565b505f90565b8054680100000000000000008110156107815761155291600182018155611170565b91909161157d57805160209091015160301b65ffffffffffff191665ffffffffffff91909116179055565b634e487b7160e01b5f525f60045260245ffd5b805490811561166d576115b86115b36115a8846108a0565b835f5260205f200190565b611199565b906115c9825165ffffffffffff1690565b65ffffffffffff858116949116841061165b57611628946020946115f6610989865165ffffffffffff1690565b0361162d575061161a916110c861160c926108a0565b65ffffffffffff8154169055565b01516001600160d01b031690565b905f90565b90506116569161164c61163e6107e0565b65ffffffffffff9093168352565b5f85830152611530565b61161a565b604051632520601d60e01b8152600490fd5b61168992915061167e61163e6107e0565b5f6020830152611530565b5f905f90565b8054908115611734576116a76115b36115a8846108a0565b906116b8825165ffffffffffff1690565b65ffffffffffff858116949116841061165b57611712946020946116e5610989865165ffffffffffff1690565b03611718575061161a916110c86116fb926108a0565b660100000000000065ffffffffffff825416179055565b90600190565b90506116569161172961163e6107e0565b600182860152611530565b61175192915061174561163e6107e0565b60016020830152611530565b5f90600190565b9080821015611765575090565b90509056fea2646970667358221220e3d0b21c7d8dc3a0d63f417bf3497f69de6a0208097dd894acd7ab6691797d6b64736f6c63430008190033","sourceMap":"583:4371:91:-:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;583:4371:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;583:4371:91;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;583:4371:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;583:4371:91;;3401:45:52;;;:::i;:::-;3393:53;;;;;3467:51;;;:::i;:::-;3456:62;;;;;583:4371:91;3542:22:52;;3528:36;;;;583:4371:91;3591:25:52;;3574:42;;;;;;3644:13;3627:30;;583:4371:91;;4204:80:52;;;2079:95;;;;;;;;583:4371:91;2079:95:52;;;3644:13;2079:95;;;;4278:4;3627:30;2079:95;;;3627:30;4204:80;;2079:95;583:4371:91;;;;;;;;;;;;;;;;4194:91:52;;2079:95;3667:48;4278:4;2079:95;3725:27;1675:26:91;;;;1711:30;;;;583:4371;;;;;;2079:95:52;583:4371:91;;;;;3627:30:52;583:4371:91;;;;;2079:95:52;583:4371:91;;;;;3528:36:52;583:4371:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;583:4371:91;;;;;-1:-1:-1;583:4371:91;;-1:-1:-1;583:4371:91;;;;;;;-1:-1:-1;;583:4371:91;;;;-1:-1:-1;;;;;583:4371:91;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;583:4371:91;;;;;;:::o;2914:340:48:-;583:4371:91;;3059:2:48;;3037:24;;;3059:2;;;583:4371:91;1854:2:48;583:4371:91;;1840:16:48;1836:72;;583:4371:91;;;;;2079:95:52;583:4371:91;;;;;;1949:36:48;;3077:27;:::o;583:4371:91:-;;;;;;;;;;1949:36:48;3077:27;:::o;1836:72::-;583:4371:91;;;;1879:18:48;;;;;;;;;;;;583:4371:91;;;;;;;;;;;;;;;;3432:13:52;583:4371:91;;;;;;1854:2:48;583:4371:91;-1:-1:-1;;583:4371:91;;;1879:18:48;;;;3033:215;583:4371:91;-1:-1:-1;;;;;583:4371:91;;;;3432:13:52;583:4371:91;;;;;;;;;;;;;;3033:215:48;583:4371:91;;;;;;;;;;;3033:215:48;583:4371:91;;;;;;;;;;;;;;;;3432:13:52;583:4371:91;;;;;;;;;;;;;;;;;3432:13:52;583:4371:91;1390:66:48;3195:42;:::o;583:4371:91:-;;;;-1:-1:-1;583:4371:91;;;;;;;;;;;;3432:13:52;583:4371:91;;;3432:13:52;583:4371:91;;3432:13:52;583:4371:91;;;;;;;;;;;;;;;;;;;;;3432:13:52;583:4371:91;1390:66:48;3195:42;:::o;583:4371:91:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;583:4371:91;;;;;;;3432:13:52;583:4371:91;;;;;3432:13:52;583:4371:91;;;;;;;;;;;;;;;;;;;;;;;;;3432:13:52;583:4371:91;;;;;;;;;;;3432:13:52;583:4371:91;;;;;3432:13:52;583:4371:91;;;;;;;;2914:340:48;583:4371:91;;3059:2:48;;3037:24;;;3059:2;;;583:4371:91;1854:2:48;583:4371:91;;1840:16:48;1836:72;;583:4371:91;;;;;2079:95:52;583:4371:91;;;;;;1949:36:48;;3077:27;:::o;3033:215::-;583:4371:91;;;-1:-1:-1;;;;;583:4371:91;;;;;;;;;;;;;;;;;;3033:215:48;583:4371:91;;;;;;;;;;;3033:215:48;583:4371:91;;;;;;;;;;;;;;-1:-1:-1;583:4371:91;;;;-1:-1:-1;;;;583:4371:91;;;;;;;;;;;;;1390:66:48;;3195:42::o;583:4371:91:-;;;;-1:-1:-1;583:4371:91;;;;;;;;;;;;-1:-1:-1;583:4371:91;;-1:-1:-1;583:4371:91;;-1:-1:-1;583:4371:91;;;;;;;;;;;;;;;;;;;;;;;;;1390:66:48;3195:42;:::o;583:4371:91:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;583:4371:91;;;;-1:-1:-1;583:4371:91;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;583:4371:91;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c8063220d32d4146100d4578063530e1d43146100cf5780636d0fae4a146100ca5780638247a97c146100c557806384b0196e146100c05780639333fbda146100bb57806393f79bc3146100b65780639f86fd85146100b1578063b1138ad1146100ac578063c4b5d62c146100a7578063ced44ba7146100a25763d46104831461009d575f80fd5b6106cc565b610608565b6105c4565b6105a2565b610511565b610412565b6103bb565b6102c5565b61027d565b610239565b6101d3565b610109565b600435906001600160a01b03821682036100ef57565b5f80fd5b602435906001600160a01b03821682036100ef57565b346100ef5760403660031901126100ef5760206101356101276100d9565b61012f6100f3565b906106ee565b6040519015158152f35b9181601f840112156100ef5782359167ffffffffffffffff83116100ef57602083818601950101116100ef57565b9060806003198301126100ef576001600160a01b039160043583811681036100ef579260243590811681036100ef579160443565ffffffffffff811681036100ef57916064359067ffffffffffffffff82116100ef576101cf9160040161013f565b9091565b346100ef576020600161022961022f61021a6101ee3661016d565b969290949193888060a01b03165f526003895260405f209060018060a01b03165f5260205260405f2090565b92868060d01b0395369161080b565b916108c3565b1614604051908152f35b346100ef575f3660031901126100ef576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346100ef5760203660031901126100ef5761029f6102996100d9565b336109bf565b005b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b346100ef575f3660031901126100ef5761035e6103017f0000000000000000000000000000000000000000000000000000000000000000610e2a565b61032a7f0000000000000000000000000000000000000000000000000000000000000000610f28565b6040519061033782610786565b5f825261036c602091604051958695600f60f81b875260e0602088015260e08701906102a1565b9085820360408701526102a1565b4660608501523060808501525f60a085015283810360c0850152602080845192838152019301915f5b8281106103a457505050500390f35b835185528695509381019392810192600101610395565b346100ef5760403660031901126100ef5760206104096103d96100d9565b6103e16100f3565b6001600160a01b039182165f9081526002855260408082209290931681526020919091522090565b54604051908152f35b346100ef576104203661016d565b909165ffffffffffff8061043342610ff1565b1691169081106104ff576104df926104d06104d89260018060a01b0380891691825f5260026020526104788960405f209060018060a01b03165f5260205260405f2090565b546040519260208401947f7830334d17a05ab8aeca8f1778e27182208fc2d454ac7b38a4edc2069ee3a4a6865260408501528a166060840152608083015260a082015260a081526104c8816107a2565b519020611023565b92369161080b565b9084610a15565b156104ed5761029f91610af1565b604051638baa579f60e01b8152600490fd5b60405163df4cc36d60e01b8152600490fd5b346100ef5760403660031901126100ef5761052a6100d9565b60243567ffffffffffffffff81116100ef575f9161054d8392369060040161013f565b90816040519283928337810184815203915af461059a61056b610841565b9161058c6040519384921515602084015260408084015260608301906102a1565b03601f1981018352826107be565b805190602001fd5b346100ef5760203660031901126100ef5761029f6105be6100d9565b33610c0d565b346100ef575f3660031901126100ef576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346100ef576106163661016d565b909165ffffffffffff8061062942610ff1565b1691169081106104ff576106be926104d06104d89260018060a01b0380891691825f52600260205261066e8960405f209060018060a01b03165f5260205260405f2090565b546040519260208401947f6ab5200f1123a8d51d1695a9e5e757267926b53c6359f90b8873cc7dcc30ea2c865260408501528a166060840152608083015260a082015260a081526104c8816107a2565b156104ed5761029f91610c0d565b346100ef5760203660031901126100ef5761029f6106e86100d9565b33610af1565b6001600160a01b039081165f908152600360209081526040808320939094168252919091522080548061072c57505060015f5b818060d01b03161490565b5f1990808281011161074c576001925f5260205f2001015460301c610721565b61088c565b634e487b7160e01b5f52604160045260245ffd5b6040810190811067ffffffffffffffff82111761078157604052565b610751565b6020810190811067ffffffffffffffff82111761078157604052565b60c0810190811067ffffffffffffffff82111761078157604052565b90601f8019910116810190811067ffffffffffffffff82111761078157604052565b604051906107ed82610765565b565b67ffffffffffffffff811161078157601f01601f191660200190565b929192610817826107ef565b9161082560405193846107be565b8294818452818301116100ef578281602093845f960137010152565b3d1561086b573d90610852826107ef565b9161086060405193846107be565b82523d5f602084013e565b606090565b908160209103126100ef575163ffffffff811681036100ef5790565b634e487b7160e01b5f52601160045260245ffd5b5f1981019190821161074c57565b90600163ffffffff8093160191821161074c57565b918051156109b557806020806108de93518301019101610870565b916108e98382610dd6565b926108fa845165ffffffffffff1690565b9065ffffffffffff808516921682811461099c578211918261093c575b505061092a576109279250611091565b90565b5050602001516001600160d01b031690565b90915061094983546108a0565b63ffffffff831614918215610962575b50505f80610917565b61099491925061097d610977610989926108ae565b85610dd6565b5165ffffffffffff1690565b65ffffffffffff1690565b115f80610959565b50505050602091909101516001600160d01b0316905090565b5061092791611091565b6001600160a01b039081165f8181526002602090815260408083209590941680835294905291822080546001019055907f8ed32926585579e6191b145240df788165f4957e1135f30a00e08ee8feb9d6809080a3565b610a1f8383611049565b506004819592951015610add57159384610ac7575b508315610a42575b50505090565b5f929350908291604051610a7a8161058c6020820194630b135d3f60e11b998a875260248401526040604484015260648301906102a1565b51915afa90610a87610841565b82610ab9575b82610a9d575b50505f8080610a3c565b9091506020818051810103126100ef5760200151145f80610a93565b915060208251101591610a8d565b6001600160a01b0383811691161493505f610a34565b634e487b7160e01b5f52602160045260245ffd5b90610b2d610b2882610b138560018060a01b03165f52600360205260405f2090565b9060018060a01b03165f5260205260405f2090565b611385565b9091506001600160d01b031615610bd85765ffffffffffff80610b4f42610ff1565b16911614610bc657610b87610b7882610b138560018060a01b03165f52600360205260405f2090565b610b8142610ff1565b90611590565b5050610b9381836109bf565b6001600160a01b0390811691167f1629cd9ad365627cf8408d19c50224af8f3213c1a18ae48062d92e22bddf7de55f80a3565b60405163291bf4b760e21b8152600490fd5b6040516334b09b3960e11b8152600490fd5b908160209103126100ef575180151581036100ef5790565b6040513d5f823e3d90fd5b6040516302910f8b60e31b8082526001600160a01b0383811660048401529293916020919082816024817f000000000000000000000000000000000000000000000000000000000000000089165afa908115610d8a575f91610da1575b5015610d8f576040519081526001600160a01b038316600482015281816024817f000000000000000000000000000000000000000000000000000000000000000088165afa918215610d8a575f92610d5d575b505015610d4b57610cce81846106ee565b610d395780610d04610cf58493610b138760018060a01b03165f52600360205260405f2090565b610cfe42610ff1565b9061168f565b5050610d1081856109bf565b1691167f9b730d5b907ee509de729817a2bb37e404418ba569b3a50f36192372f973cb415f80a3565b60405163dcdeaba360e01b8152600490fd5b6040516321f5408d60e01b8152600490fd5b610d7c9250803d10610d83575b610d7481836107be565b810190610bea565b5f80610cbd565b503d610d6a565b610c02565b604051630fb9ff9560e41b8152600490fd5b610db89150833d8511610d8357610d7481836107be565b5f610c6a565b60405190610dcb82610765565b5f6020838281520152565b610dfb91610df591610de6610dbe565b50610def610dbe565b50611170565b50611199565b65ffffffffffff81511690602060018060d01b039101511660405191610e2083610765565b8252602082015290565b60ff8114610e3b57610927906111bd565b506040515f80546001918160011c9260018316908115610f1e575b602090602086108314610f0a5785875286946020860193908115610eeb5750600114610e8c575b505050610927925003826107be565b925093610eb95f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56390565b945f935b828510610ed5575050506109279350015f8080610e7d565b8654858501529586019587955093810193610ebd565b925050506109279491925060ff19168252151560051b015f8080610e7d565b634e487b7160e01b5f52602260045260245ffd5b93607f1693610e56565b60ff8114610f3957610927906111bd565b506040516001805480821c915f90828116908115610fe7575b602090602086108314610f0a5785875286946020860193908115610eeb5750600114610f8757505050610927925003826107be565b925093610fb560015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf690565b945f935b828510610fd1575050506109279350015f8080610e7d565b8654858501529586019587955093810193610fb9565b93607f1693610f52565b65ffffffffffff90818111611004571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b60429061102e6111e9565b906040519161190160f01b8352600283015260228201522090565b8151919060418303611079576110729250602082015190606060408401519301515f1a90611303565b9192909190565b50505f9160029190565b906001820180921161074c57565b908154905f918060058111611127575b50915b8281106110da575050806110b85750505f90565b610927916110c86110d3926108a0565b905f5260205f200190565b5460301c90565b90918082169080831860011c820180921161074c57845f5265ffffffffffff808360205f20015416908516105f146111155750915b906110a4565b92915061112190611083565b9061110f565b90611131826113f2565b820391821161074c57845f5265ffffffffffff808360205f20015416908416105f1461115f57505b5f6110a1565b925061116a90611083565b91611159565b8054821015611185575f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b906040516111a681610765565b915465ffffffffffff8116835260301c6020830152565b60ff811690601f82116111d75760405191610e2083610765565b604051632cd44ac360e21b8152600490fd5b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806112da575b15611244577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a081526112d4816107a2565b51902090565b507f0000000000000000000000000000000000000000000000000000000000000000461461121b565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841161137a579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa15610d8a575f516001600160a01b0381161561137057905f905f90565b505f906001905f90565b5050505f9160039190565b8054806113965750505f905f905f90565b5f1990808281011161074c576113b3925f5260205f200101611199565b9065ffffffffffff82511691602060018060d01b0391015116906001929190565b81156113de570490565b634e487b7160e01b5f52601260045260245ffd5b801561152b57806114c46114bd6114b36114a961149f61149561148b61148160016109279a5f908b60801c8061151f575b508060401c80611512575b508060201c80611505575b508060101c806114f8575b508060081c806114eb575b508060041c806114de575b508060021c806114d1575b50821c6114ca575b811c1b61147a818b6113d4565b0160011c90565b61147a818a6113d4565b61147a81896113d4565b61147a81886113d4565b61147a81876113d4565b61147a81866113d4565b61147a81856113d4565b80926113d4565b90611758565b810161146d565b600291509101905f611465565b600491509101905f61145a565b600891509101905f61144f565b601091509101905f611444565b602091509101905f611439565b604091509101905f61142e565b9150506080905f611423565b505f90565b8054680100000000000000008110156107815761155291600182018155611170565b91909161157d57805160209091015160301b65ffffffffffff191665ffffffffffff91909116179055565b634e487b7160e01b5f525f60045260245ffd5b805490811561166d576115b86115b36115a8846108a0565b835f5260205f200190565b611199565b906115c9825165ffffffffffff1690565b65ffffffffffff858116949116841061165b57611628946020946115f6610989865165ffffffffffff1690565b0361162d575061161a916110c861160c926108a0565b65ffffffffffff8154169055565b01516001600160d01b031690565b905f90565b90506116569161164c61163e6107e0565b65ffffffffffff9093168352565b5f85830152611530565b61161a565b604051632520601d60e01b8152600490fd5b61168992915061167e61163e6107e0565b5f6020830152611530565b5f905f90565b8054908115611734576116a76115b36115a8846108a0565b906116b8825165ffffffffffff1690565b65ffffffffffff858116949116841061165b57611712946020946116e5610989865165ffffffffffff1690565b03611718575061161a916110c86116fb926108a0565b660100000000000065ffffffffffff825416179055565b90600190565b90506116569161172961163e6107e0565b600182860152611530565b61175192915061174561163e6107e0565b60016020830152611530565b5f90600190565b9080821015611765575090565b90509056fea2646970667358221220e3d0b21c7d8dc3a0d63f417bf3497f69de6a0208097dd894acd7ab6691797d6b64736f6c63430008190033","sourceMap":"583:4371:91:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;583:4371:91;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;;;;583:4371:91;;;;;;:::o;:::-;;;;;;-1:-1:-1;;583:4371:91;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;583:4371:91;;;;;-1:-1:-1;;;;;583:4371:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;2036:1;583:4371;1975:57;:22;583:4371;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;583:4371:91;1975:10;583:4371;;;-1:-1:-1;583:4371:91;;;;;;;;;;;;;;;;;1975:22;583:4371;;;;;;;;;;:::i;:::-;1975:57;;:::i;:::-;583:4371;1975:62;583:4371;;;;;;;;;;;;-1:-1:-1;;583:4371:91;;;;;;851:39;-1:-1:-1;;;;;583:4371:91;;;;;;;;;;;;-1:-1:-1;;583:4371:91;;;;3493:5;583:4371;;:::i;:::-;3481:10;3493:5;:::i;:::-;583:4371;;;;;;;;;;;;;;;;;;-1:-1:-1;583:4371:91;;;;;;;;-1:-1:-1;;583:4371:91;;;;:::o;:::-;;;;;;-1:-1:-1;;583:4371:91;;;;;6099:41:52;:5;:41;:::i;:::-;6554:47;:8;:47;:::i;:::-;583:4371:91;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;5590:13:52;583:4371:91;;;;5625:4:52;583:4371:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;583:4371:91;;;;;;;;6584:16:52;583:4371:91;;;;;;;;;-1:-1:-1;;583:4371:91;;;;;1214:77;583:4371;;:::i;:::-;;;:::i;:::-;-1:-1:-1;;;;;583:4371:91;;;-1:-1:-1;583:4371:91;;;1214:77;583:4371;;;;;;;;;;;;-1:-1:-1;583:4371:91;;;;;;;1214:77;583:4371;;;;;;;;;;;;;;:::i;:::-;;;;837:15:62;819:34;837:15;819:34;:::i;:::-;583:4371:91;;;1469:27;;;1465:83;;3164:88;583:4371;4587:179;583:4371;;;;;;;;;;;;-1:-1:-1;583:4371:91;4713:6;583:4371;;4713:18;583:4371;;-1:-1:-1;583:4371:91;;;;;;;;;;;;;;;;;4713:18;583:4371;;;4644:98;583:4371;4644:98;;583:4371;1082:76;583:4371;;;948:75;;583:4371;;;948:75;;;583:4371;948:75;;;583:4371;948:75;;;;;4644:98;;;;;:::i;:::-;583:4371;4617:139;;4587:179;:::i;:::-;583:4371;;;;:::i;:::-;3164:88;;;:::i;:::-;3163:89;3159:145;;3327:5;;;:::i;3159:145::-;583:4371;;-1:-1:-1;;;3275:18:91;;583:4371;;3275:18;1465:83;583:4371;;-1:-1:-1;;;1519:18:91;;583:4371;;1519:18;583:4371;;;;;;-1:-1:-1;;583:4371:91;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;583:4371:91;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;416:25:75;;;;477:31;416:25;;:::i;:::-;583:4371:91;;;;;;;;;;477:31:75;;583:4371:91;;;;;;;;;;;:::i;:::-;477:31:75;583:4371:91;;477:31:75;;;;;;:::i;:::-;518:79;;;583:4371:91;518:79:75;;583:4371:91;;;;;;-1:-1:-1;;583:4371:91;;;;2370:5;583:4371;;:::i;:::-;2358:10;2370:5;:::i;583:4371::-;;;;;;-1:-1:-1;;583:4371:91;;;;;;758:37;-1:-1:-1;;;;;583:4371:91;;;;;;;;;;;;;:::i;:::-;;;;837:15:62;819:34;837:15;819:34;:::i;:::-;583:4371:91;;;1469:27;;;1465:83;;2610:87;583:4371;4587:179;583:4371;;;;;;;;;;;;-1:-1:-1;583:4371:91;4713:6;583:4371;;4713:18;583:4371;;-1:-1:-1;583:4371:91;;;;;;;;;;;;;;;;;4713:18;583:4371;;;4644:98;583:4371;4644:98;;583:4371;948:75;583:4371;;;948:75;;583:4371;;;948:75;;;583:4371;948:75;;;583:4371;948:75;;;;;4644:98;;;;;:::i;2610:87::-;2609:88;2605:144;;2771:5;;;:::i;583:4371::-;;;;;;-1:-1:-1;;583:4371:91;;;;2923:5;583:4371;;:::i;:::-;2911:10;2923:5;:::i;2099:134::-;-1:-1:-1;;;;;583:4371:91;;;-1:-1:-1;583:4371:91;;;2190:10;583:4371;;;;;;;;;;;;;;;;;;;;;10303:8:60;;;:63;;2225:1:91;-1:-1:-1;10303:63:60;583:4371:91;;;;;;2190:36;2099:134;:::o;10303:63:60:-;583:4371:91;;;;;;;;;;2225:1;14249:109:60;-1:-1:-1;14249:109:60;583:4371:91;-1:-1:-1;14249:109:60;;;583:4371:91;;;10303:63:60;;583:4371:91;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::o;:::-;948:75;583:4371;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;-1:-1:-1;;583:4371:91;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;583:4371:91;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;583:4371:91;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;583:4371:91;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::o;1818:604:86:-;;583:4371:91;;1946:17:86;1942:83;;583:4371:91;2049:27:86;583:4371:91;2049:27:86;583:4371:91;;2049:27:86;;;;;;:::i;:::-;2120:14;;;;;:::i;:::-;583:4371:91;;;;;;;;;;;;;;;;2148:22:86;;;2144:77;;2235:21;-1:-1:-1;2235:84:86;;;;1818:604;2231:139;;;;1425:34;;;;:::i;:::-;1818:604;:::o;2231:139::-;-1:-1:-1;;2049:27:86;2342:17;583:4371:91;-1:-1:-1;;;;;583:4371:91;1818:604:86;:::o;2235:84::-;583:4371:91;;;2269:16:86;583:4371:91;;2269:16:86;:::i;:::-;583:4371:91;;;2261:24:86;:57;;;;;2235:84;;;;;;;2261:57;2289:29;2298:8;;;2289:18;2298:8;2289:23;2298:8;;:::i;:::-;2289:18;;:::i;:::-;583:4371:91;;;;;2289:23:86;583:4371:91;;;;2289:29:86;;2261:57;;;;2144:77;-1:-1:-1;;;;2049:27:86;2193:17;;;;583:4371:91;-1:-1:-1;;;;;583:4371:91;;-1:-1:-1;1818:604:86;:::o;1942:83::-;1425:34;;;;:::i;4779:173:91:-;-1:-1:-1;;;;;583:4371:91;;;-1:-1:-1;583:4371:91;;;4876:6;583:4371;;;;;;;;;;;;;;;;;;;;;;;;;;;;4920:25;;-1:-1:-1;4920:25:91;4779:173::o;1039:368:54:-;1211:33;;;;:::i;:::-;583:4371:91;;;;;;;;;;1274:35:54;:58;;;;1039:368;1273:127;;;;;1039:368;1254:146;;;1039:368;:::o;1273:127::-;1283:26;583:4371:91;;;;;;;;2041:60:54;;583:4371:91;2041:60:54;;;;;;;;;;;;;;583:4371:91;;;;;;;;;;;:::i;2041:60:54:-;2010:101;;;;;;;:::i;:::-;2129:42;;;1273:127;2129:134;;;1273:127;;;;;;;;2129:134;583:4371:91;;;2041:60:54;583:4371:91;;;2187:29:54;;583:4371:91;;;;2041:60:54;2187:29;583:4371:91;2187:76:54;2129:134;;;;:42;583:4371:91;;2041:60:54;583:4371:91;;2152:19:54;;2129:42;;;1274:58;-1:-1:-1;;;;;583:4371:91;;;;;1313:19:54;;-1:-1:-1;1274:58:54;;;583:4371:91;;;;1283:26:54;583:4371:91;;;;;1283:26:54;583:4371:91;3991:467;;5260:30:86;4105:22:91;:15;;;583:4371;;;;;;;;4105:10;583:4371;;;;;;;4105:15;583:4371;;;;;;;;;;;;;;;;4105:22;5260:30:86;:::i;:::-;583:4371:91;;-1:-1:-1;;;;;;583:4371:91;4161:16;4157:66;;583:4371;837:15:62;819:34;837:15;819:34;:::i;:::-;583:4371:91;;;4237:35;4233:89;;8167:38:60;4332:22:91;:15;;;583:4371;;;;;;;;4105:10;583:4371;;;;;;;4332:22;819:34:62;837:15;819:34;:::i;:::-;8167:38:60;;:::i;:::-;4411:5:91;;;;;;:::i;:::-;-1:-1:-1;;;;;583:4371:91;;;;;4433:18;-1:-1:-1;;4433:18:91;3991:467::o;4233:89::-;583:4371;;-1:-1:-1;;;4295:16:91;;;;;4157:66;583:4371;;-1:-1:-1;;;4200:12:91;;;;;583:4371;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;3512:473;583:4371;;-1:-1:-1;;;3580:37:91;;;-1:-1:-1;;;;;583:4371:91;;;3580:37;;;583:4371;;;3512:473;3580:37;;583:4371;3580:37;583:4371;;;3590:12;583:4371;;3580:37;;;;;;;-1:-1:-1;3580:37:91;;;3512:473;3579:38;;3575:84;;583:4371;;3674:41;;;-1:-1:-1;;;;;583:4371:91;;3580:37;3674:41;;583:4371;3674:41;583:4371;;;3684:14;583:4371;;3674:41;;;;;;;-1:-1:-1;3674:41:91;;;3512:473;3673:42;;;3669:96;;3779:21;;;;:::i;:::-;3775:75;;3860:15;8167:38:60;3860:22:91;:15;;;;583:4371;;;;;;;;4105:10;583:4371;;;;;;;3860:22;819:34:62;837:15;819:34;:::i;:::-;8167:38:60;;:::i;:::-;3939:5:91;;;;;;:::i;:::-;583:4371;;;3961:17;-1:-1:-1;3961:17:91;;3512:473::o;3775:75::-;583:4371;;-1:-1:-1;;;3823:16:91;;3580:37;;3823:16;3669:96;583:4371;;-1:-1:-1;;;3738:16:91;;3580:37;;3738:16;3674:41;;;;;;-1:-1:-1;3674:41:91;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;:::i;3575:84::-;583:4371;;-1:-1:-1;;;3640:8:91;;3580:37;;3640:8;3580:37;;;;;;;;;;;;;;:::i;:::-;;;;583:4371;;;;;;;:::i;:::-;-1:-1:-1;583:4371:91;;;;;;;:::o;5573:258:86:-;583:4371:91;5573:258:86;11308:22:60;5573:258:86;583:4371:91;;:::i;:::-;;;;:::i;:::-;;11308:22:60;:::i;:::-;583:4371:91;;:::i;:::-;;;;;;5805:17:86;583:4371:91;;;;;5805:17:86;;583:4371:91;;;;;;;;:::i;:::-;;;5805:17:86;5759:65;;583:4371:91;5573:258:86;:::o;3385:267:48:-;1390:66;3508:46;;1390:66;;3577:15;;;:::i;3504:142::-;583:4371:91;;;;;1390:66:48;;;;;;;;;;;;;;;3504:142;1390:66;;;;;;;;;583:4371:91;;;1390:66:48;;583:4371:91;;;1390:66:48;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;583:4371:91;1390:66:48;;;;;;;583:4371:91;1390:66:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1390:66:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;583:4371:91;;;;1390:66:48;;;;;583:4371:91;1390:66:48;;;;;;;;3385:267;1390:66;3508:46;;1390:66;;3577:15;;;:::i;3504:142::-;-1:-1:-1;583:4371:91;;6584:16:52;1390:66:48;;;;;;-1:-1:-1;;1390:66:48;;;;;;;;3504:142;1390:66;;;;;;;;;583:4371:91;;;1390:66:48;;583:4371:91;;;1390:66:48;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;6584:16:52;1390:66:48;;;;;;;-1:-1:-1;1390:66:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1390:66:48;;;;;;;;;;;;;14291:213:58;583:4371:91;14369:24:58;;;;14365:103;;583:4371:91;14291:213:58;:::o;14365:103::-;583:4371:91;;;;14416:41:58;;;;;;14447:2;14416:41;;;583:4371:91;;;;;14416:41:58;4917:176:52;3515:233:53;4917:176:52;5053:20;;:::i;:::-;3515:233:53;;;;-1:-1:-1;;;3515:233:53;;;;;;;;;;;4917:176:52;:::o;2129:766:51:-;583:4371:91;;;2129:766:51;2276:2;2256:22;;2276:2;;2739:25;2539:180;;;;;;;;;;;;;;;-1:-1:-1;2539:180:51;2739:25;;:::i;:::-;2732:32;;;;;:::o;2252:637::-;2795:83;;2811:1;2795:83;2815:35;2795:83;;:::o;583:4371:91:-;;9856:1:60;583:4371:91;;;;;;;:::o;9441:606:60:-;;583:4371:91;;9594:15:60;9559:17;9619:18;;9658:1;9652:7;;9648:234;;9441:606;9906:53;;12919:10;;;;;;-1:-1:-1;;9977:8:60;;;:63;;9559:17;9441:606;:::o;9977:63::-;9992:48;10025:7;;9992:41;10025:7;;:::i;:::-;9992:41;14249:109;;;;;;14099:265;;9992:41;583:4371:91;;;;;12912:230:60;2900:5:57;;;;;2910;;;;583:4371:91;;;;;;;;;14249:109:60;9559:17;14249:109;583:4371:91;14249:109:60;;;9559:17;14249:109;;583:4371:91;;;;;-1:-1:-1;12996:136:60;583:4371:91;;;13055:10:60;12996:136;;12912:230;;;12996:136;13110:7;;;;;;:::i;:::-;12996:136;;;9648:234;9695:14;;;;:::i;:::-;583:4371:91;;;;;;;14249:109:60;9559:17;14249:109;583:4371:91;14249:109:60;;;9559:17;14249:109;;583:4371:91;;;;;9727:48:60;9723:149;583:4371:91;;;9795:10:60;9723:149;9648:234;;;9723:149;9850:7;;;;;:::i;:::-;9723:149;;;583:4371:91;;;;;;;;-1:-1:-1;1390:66:48;;-1:-1:-1;1390:66:48;583:4371:91;;-1:-1:-1;583:4371:91;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;2078:405:48:-;2688:4;2652:40;;2706:11;2715:2;2706:11;;2702:69;;583:4371:91;;;;;;:::i;2702:69:48:-;583:4371:91;;-1:-1:-1;;;2740:20:48;;;;;3845:262:52;3929:4;3938:11;-1:-1:-1;;;;;583:4371:91;3921:28:52;;:63;;3845:262;3917:184;;;4007:22;4000:29;:::o;3917:184::-;583:4371:91;;4204:80:52;;;583:4371:91;2079:95:52;583:4371:91;;4226:11:52;583:4371:91;2079:95:52;;583:4371:91;4239:14:52;2079:95;;;583:4371:91;4255:13:52;2079:95;;;583:4371:91;3929:4:52;2079:95;;;583:4371:91;2079:95:52;4204:80;;;;;:::i;:::-;583:4371:91;4194:91:52;;4060:30;:::o;3921:63::-;3970:14;;3953:13;:31;3921:63;;5140:1530:51;;;6199:66;6186:79;;6182:164;;583:4371:91;;;;;;-1:-1:-1;583:4371:91;;;;;;;;;;;;;;;;;;;6457:24:51;;;;;;;;;-1:-1:-1;6457:24:51;-1:-1:-1;;;;;583:4371:91;;6495:20:51;6491:113;;6614:49;-1:-1:-1;6614:49:51;-1:-1:-1;5140:1530:51;:::o;6491:113::-;6531:62;-1:-1:-1;6531:62:51;6457:24;6531:62;-1:-1:-1;6531:62:51;:::o;6182:164::-;6281:54;;;6297:1;6281:54;6301:30;6281:54;;:::o;10552:388:60:-;583:4371:91;;10728:8:60;;;10752:20;;10690:17;10752:20;10690:17;10752:20;10690:17;10752:20;:::o;10724:210::-;583:4371:91;;;;;;;;;;;14249:109:60;10690:17;14249:109;;10690:17;14249:109;;;583:4371:91;:::i;:::-;;;;;;;14249:109:60;583:4371:91;;;;;10911:11:60;;583:4371:91;;10886:37:60;10870:1;10886:37;;;:::o;583:4371:91:-;;;;;;;:::o;:::-;;;;;;;;;;;;8587:1642:57;8658:6;;8654:45;;9401:7;10201:10;10142:26;10093;10044;9995;9946;9897;9848;583:4371:91;10189:23:57;9401:7;8663:1;583:4371:91;;;;10826:16:57;10822:99;;8587:1642;583:4371:91;;;;10938:15:57;10934:96;;8587:1642;583:4371:91;;;;11047:15:57;11043:96;;8587:1642;583:4371:91;;;;11156:15:57;11152:96;;8587:1642;583:4371:91;;;;11265:14:57;11261:93;;8587:1642;583:4371:91;;;;11371:14:57;11367:93;;8587:1642;583:4371:91;;;;11477:14:57;11473:93;;8587:1642;583:4371:91;;;11579:64:57;;8587:1642;583:4371:91;;;9858:10:57;;;;:::i;:::-;583:4371:91;;;;;9848:26:57;9907:10;;;;:::i;9897:26::-;9956:10;;;;:::i;9946:26::-;10005:10;;;;:::i;9995:26::-;10054:10;;;;:::i;10044:26::-;10103:10;;;;:::i;10093:26::-;10152:10;;;;:::i;10142:26::-;10201:10;;;:::i;:::-;10189:23;;:::i;11579:64::-;583:4371:91;;11579:64:57;;11473:93;583:4371:91;11511:11:57;;583:4371:91;;11473:93:57;;;;11367;583:4371:91;11405:11:57;;583:4371:91;;11367:93:57;;;;11261;583:4371:91;11299:11:57;;583:4371:91;;11261:93:57;;;;11152:96;583:4371:91;11191:12:57;;583:4371:91;;11152:96:57;;;;11043;583:4371:91;11082:12:57;;583:4371:91;;11043:96:57;;;;10934;583:4371:91;10973:12:57;;583:4371:91;;10934:96:57;;;;10822:99;10862:13;;;583:4371:91;10822:99:57;;;;8654:45;8680:8;8663:1;8680:8;:::o;583:4371:91:-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;583:4371:91;;;;;;;;;:::o;:::-;;;;;;;;;;;;11513:870:60;583:4371:91;;;11672:7:60;;;;583:4371:91;11775:28:60;11795:7;;;:::i;:::-;11775:28;14249:109;;;;;;14099:265;;11775:28;583:4371:91;:::i;:::-;;;;;;;;;;;;;;;;;11877:15:60;-1:-1:-1;11873:91:60;;583:4371:91;;12233:11:60;583:4371:91;12027:16:60;583:4371:91;;;;;;;12027:16:60;;;;12083:7;12063:43;12083:7;;12063:28;12083:7;;:::i;12063:28::-;583:4371:91;;;;;;;12063:43:60;12233:11;583:4371:91;-1:-1:-1;;;;;583:4371:91;;;;12225:27:60;583:4371:91;12225:27:60;:::o;12023:189::-;583:4371:91;;12145:52:60;583:4371:91;12155:41:60;583:4371:91;;:::i;:::-;;;;;;;;12155:41:60;583:4371:91;12155:41:60;;;583:4371:91;12145:52:60;:::i;:::-;12023:189;;11873:91;583:4371:91;;-1:-1:-1;;;11919:30:60;;;;;11668:709;12283:52;583:4371:91;;;12293:41:60;583:4371:91;;:::i;12293:41:60:-;583:4371:91;12293:41:60;;;583:4371:91;12283:52:60;:::i;:::-;583:4371:91;12349:17:60;583:4371:91;12349:17:60;:::o;11513:870::-;583:4371:91;;;11672:7:60;;;;583:4371:91;11775:28:60;11795:7;;;:::i;583:4371:91:-;;;;;;;;;;;;;;;;;11877:15:60;-1:-1:-1;11873:91:60;;583:4371:91;;12233:11:60;583:4371:91;12027:16:60;583:4371:91;;;;;;;12027:16:60;;;;12083:7;12063:43;12083:7;;12063:28;12083:7;;:::i;12063:28::-;583:4371:91;;;;;;;;;;12225:27:60;583:4371:91;12225:27:60;:::o;12023:189::-;583:4371:91;;12145:52:60;583:4371:91;12155:41:60;583:4371:91;;:::i;12155:41:60:-;583:4371:91;12155:41:60;;;583:4371:91;12145:52:60;:::i;11668:709::-;12283:52;583:4371:91;;;12293:41:60;583:4371:91;;:::i;12293:41:60:-;583:4371:91;12293:41:60;;;583:4371:91;12145:52:60;:::i;12283:::-;11678:1;12349:17;583:4371:91;12349:17:60;:::o;2557:104:57:-;;2641:5;;;;;;:13;2557:104;:::o;2641:13::-;;;2557:104;:::o","linkReferences":{},"immutableReferences":{"51758":[{"start":4642,"length":32}],"51760":[{"start":4829,"length":32}],"51762":[{"start":4588,"length":32}],"51764":[{"start":4721,"length":32}],"51766":[{"start":4759,"length":32}],"51769":[{"start":733,"length":32}],"51772":[{"start":774,"length":32}],"65131":[{"start":1497,"length":32},{"start":3129,"length":32}],"65134":[{"start":590,"length":32},{"start":3212,"length":32}]}},"methodIdentifiers":{"WHERE_REGISTRY()":"6d0fae4a","WHO_REGISTRY()":"c4b5d62c","eip712Domain()":"84b0196e","increaseNonce(address)":"8247a97c","isOptedIn(address,address)":"220d32d4","isOptedInAt(address,address,uint48,bytes)":"530e1d43","nonces(address,address)":"9333fbda","optIn(address)":"b1138ad1","optIn(address,address,uint48,bytes)":"ced44ba7","optOut(address)":"d4610483","optOut(address,address,uint48,bytes)":"93f79bc3","staticDelegateCall(address,bytes)":"9f86fd85"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"whoRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"whereRegistry\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AlreadyOptedIn\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CheckpointUnorderedInsertion\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpiredSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidShortString\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotOptedIn\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotWhereEntity\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotWho\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OptOutCooldown\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"str\",\"type\":\"string\"}],\"name\":\"StringTooLong\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EIP712DomainChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"}],\"name\":\"IncreaseNonce\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"}],\"name\":\"OptIn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"}],\"name\":\"OptOut\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"WHERE_REGISTRY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WHO_REGISTRY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"}],\"name\":\"increaseNonce\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"}],\"name\":\"isOptedIn\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"isOptedInAt\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"}],\"name\":\"optIn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"deadline\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"optIn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"deadline\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"optOut\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"}],\"name\":\"optOut\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"staticDelegateCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"CheckpointUnorderedInsertion()\":[{\"details\":\"A value was attempted to be inserted on a past checkpoint.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}]},\"events\":{\"EIP712DomainChanged()\":{\"details\":\"MAY be emitted to signal that the domain could have changed.\"},\"IncreaseNonce(address,address)\":{\"params\":{\"where\":\"address of the \\\"where\\\" entity\",\"who\":\"address of the \\\"who\\\"\"}},\"OptIn(address,address)\":{\"params\":{\"where\":\"address of the \\\"where\\\" entity\",\"who\":\"address of the \\\"who\\\"\"}},\"OptOut(address,address)\":{\"params\":{\"where\":\"address of the \\\"where\\\" entity\",\"who\":\"address of the \\\"who\\\"\"}}},\"kind\":\"dev\",\"methods\":{\"eip712Domain()\":{\"details\":\"See {IERC-5267}.\"},\"increaseNonce(address)\":{\"details\":\"It can be used to invalidate a given signature.\",\"params\":{\"where\":\"address of the \\\"where\\\" entity\"}},\"isOptedIn(address,address)\":{\"params\":{\"where\":\"address of the \\\"where\\\" entity\",\"who\":\"address of the \\\"who\\\"\"},\"returns\":{\"_0\":\"if the \\\"who\\\" is opted-in\"}},\"isOptedInAt(address,address,uint48,bytes)\":{\"params\":{\"hint\":\"hint for the checkpoint index\",\"timestamp\":\"time point to get if the \\\"who\\\" is opted-in at\",\"where\":\"address of the \\\"where\\\" entity\",\"who\":\"address of the \\\"who\\\"\"},\"returns\":{\"_0\":\"if the \\\"who\\\" is opted-in at the given timestamp\"}},\"optIn(address)\":{\"params\":{\"where\":\"address of the \\\"where\\\" entity\"}},\"optIn(address,address,uint48,bytes)\":{\"params\":{\"deadline\":\"time point until the signature is valid (inclusively)\",\"signature\":\"signature of the \\\"who\\\"\",\"where\":\"address of the \\\"where\\\" entity\",\"who\":\"address of the \\\"who\\\"\"}},\"optOut(address)\":{\"params\":{\"where\":\"address of the \\\"where\\\" entity\"}},\"optOut(address,address,uint48,bytes)\":{\"params\":{\"deadline\":\"time point until the signature is valid (inclusively)\",\"signature\":\"signature of the \\\"who\\\"\",\"where\":\"address of the \\\"where\\\" entity\",\"who\":\"address of the \\\"who\\\"\"}},\"staticDelegateCall(address,bytes)\":{\"details\":\"It allows to use this contract's storage on-chain.\",\"params\":{\"data\":\"data to make a delegatecall with\",\"target\":\"address of the contract to make a delegatecall to\"}}},\"stateVariables\":{\"WHERE_REGISTRY\":{\"return\":\"address of the \\\"where\\\" registry\",\"returns\":{\"_0\":\"address of the \\\"where\\\" registry\"}},\"WHO_REGISTRY\":{\"return\":\"address of the \\\"who\\\" registry\",\"returns\":{\"_0\":\"address of the \\\"who\\\" registry\"}},\"nonces\":{\"params\":{\"where\":\"address of the \\\"where\\\" entity\",\"who\":\"address of the \\\"who\\\"\"},\"return\":\"nonce\",\"returns\":{\"nonce\":\"nonce\"}}},\"version\":1},\"userdoc\":{\"events\":{\"IncreaseNonce(address,address)\":{\"notice\":\"Emitted when the nonce of a \\\"who\\\" to a \\\"where\\\" entity is increased.\"},\"OptIn(address,address)\":{\"notice\":\"Emitted when a \\\"who\\\" opts into a \\\"where\\\" entity.\"},\"OptOut(address,address)\":{\"notice\":\"Emitted when a \\\"who\\\" opts out from a \\\"where\\\" entity.\"}},\"kind\":\"user\",\"methods\":{\"WHERE_REGISTRY()\":{\"notice\":\"Get the address of the registry where to opt-in.\"},\"WHO_REGISTRY()\":{\"notice\":\"Get the \\\"who\\\" registry's address.\"},\"increaseNonce(address)\":{\"notice\":\"Increase the nonce of a given \\\"who\\\" to a particular \\\"where\\\" entity.\"},\"isOptedIn(address,address)\":{\"notice\":\"Check if a given \\\"who\\\" is opted-in to a particular \\\"where\\\" entity.\"},\"isOptedInAt(address,address,uint48,bytes)\":{\"notice\":\"Get if a given \\\"who\\\" is opted-in to a particular \\\"where\\\" entity at a given timestamp using a hint.\"},\"nonces(address,address)\":{\"notice\":\"Get the nonce of a given \\\"who\\\" to a particular \\\"where\\\" entity.\"},\"optIn(address)\":{\"notice\":\"Opt-in a calling \\\"who\\\" to a particular \\\"where\\\" entity.\"},\"optIn(address,address,uint48,bytes)\":{\"notice\":\"Opt-in a \\\"who\\\" to a particular \\\"where\\\" entity with a signature.\"},\"optOut(address)\":{\"notice\":\"Opt-out a calling \\\"who\\\" from a particular \\\"where\\\" entity.\"},\"optOut(address,address,uint48,bytes)\":{\"notice\":\"Opt-out a \\\"who\\\" from a particular \\\"where\\\" entity with a signature.\"},\"staticDelegateCall(address,bytes)\":{\"notice\":\"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data).\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/service/OptInService.sol\":\"OptInService\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol\":{\"keccak256\":\"0x85a45f3f10014a0f8be41157a32b6a5f905753ea64a4b64e29fc12b7deeecf39\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c3c74009ce36136b36c77c23935b8e4a7b4f253be2da2be4fb4a916b1ce43743\",\"dweb:/ipfs/QmcH36v3iN7SJJuF73AunLR2LtNxhVJ1wm63ph4dPZ4pcL\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]},\"lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x18a7171df639a934592915a520ecb97c5bbc9675a1105607aac8a94e72bf62c6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7478e1f13da69a2867ccd883001d836b75620362e743f196376d63ed0c422a1c\",\"dweb:/ipfs/QmWywcQ9TNfwtoqAxbn25d8C5VrV12PrPS9UjtGe6pL2BA\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xeed0a08b0b091f528356cbc7245891a4c748682d4f6a18055e8e6ca77d12a6cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba80ba06c8e6be852847e4c5f4492cef801feb6558ae09ed705ff2e04ea8b13c\",\"dweb:/ipfs/QmXRJDv3xHLVQCVXg1ZvR35QS9sij5y9NDWYzMfUfAdTHF\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x999f705a027ed6dc2d4e0df2cc4a509852c6bfd11de1c8161bf88832d0503fd0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0798def67258d9a3cc20b2b4da7ebf351a5cefe0abfdd665d2d81f8e32f89b21\",\"dweb:/ipfs/QmPEvJosnPfzHNjKvCv2D3891mA2Ww8eUwkqrxBjuYdHCt\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0xba333517a3add42cd35fe877656fc3dfcc9de53baa4f3aabbd6d12a92e4ea435\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ceacff44c0fdc81e48e0e0b1db87a2076d3c1fb497341de077bf1da9f6b406c\",\"dweb:/ipfs/QmRUo1muMRAewxrKQ7TkXUtknyRoR57AyEkoPpiuZQ8FzX\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/SignatureChecker.sol\":{\"keccak256\":\"0x6b11eb41a228cca35d4b662b4df69fcd75192851365102690f57b2ac01e83fe6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab006a2983ed350d2af21ddcdd835dcae3b8340086cc4d088460da5abd041f69\",\"dweb:/ipfs/QmbEacDhkJZiGrgzLjB4pNtE8Z1uudjDw1DvcDUTVQFsLG\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c\",\"dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0xbdc5e074d7dd6678f67e92b1a51a20226801a407b0e1af3da367c5d1ff4519ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a36cca6b22fff3db16fc789ff6c60eea71d4b156065d4d0c83a0bc5e91a77a8b\",\"dweb:/ipfs/QmYN3exd5AemxjBrN8XMB1p5LbbE16uC3sjbYjwi8AjcGR\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0xc7755af115020049e4140f224f9ee88d7e1799ffb0646f37bf0df24bf6213f58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f09bf94d5274334ec021f61a04659db303f31e60460e14b709c9bf187740111\",\"dweb:/ipfs/QmNvgomZYUwFAt4cZbPWAiTeSZQreGehY9BK5xyVJsUttb\"]},\"src/contracts/common/StaticDelegateCallable.sol\":{\"keccak256\":\"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764\",\"dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD\"]},\"src/contracts/libraries/Checkpoints.sol\":{\"keccak256\":\"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609\",\"dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE\"]},\"src/contracts/service/OptInService.sol\":{\"keccak256\":\"0x4e0932077f2686b7990e10d59deb2535334c0d09e52ef6e57c6ab09eca21c4b1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7c00d311032ed4a1743aca7475f3c86ce15cdfc2218108efc3731c03d34a5278\",\"dweb:/ipfs/QmUGGfVwVhaHr5kS4177yKKYiLYzi5qZpkEmvYxBZqazxf\"]},\"src/interfaces/common/IRegistry.sol\":{\"keccak256\":\"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014\",\"dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK\"]},\"src/interfaces/common/IStaticDelegateCallable.sol\":{\"keccak256\":\"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516\",\"dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi\"]},\"src/interfaces/service/IOptInService.sol\":{\"keccak256\":\"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337\",\"dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"whoRegistry","type":"address"},{"internalType":"address","name":"whereRegistry","type":"address"},{"internalType":"string","name":"name","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AlreadyOptedIn"},{"inputs":[],"type":"error","name":"CheckpointUnorderedInsertion"},{"inputs":[],"type":"error","name":"ExpiredSignature"},{"inputs":[],"type":"error","name":"InvalidShortString"},{"inputs":[],"type":"error","name":"InvalidSignature"},{"inputs":[],"type":"error","name":"NotOptedIn"},{"inputs":[],"type":"error","name":"NotWhereEntity"},{"inputs":[],"type":"error","name":"NotWho"},{"inputs":[],"type":"error","name":"OptOutCooldown"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintDowncast"},{"inputs":[{"internalType":"string","name":"str","type":"string"}],"type":"error","name":"StringTooLong"},{"inputs":[],"type":"event","name":"EIP712DomainChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":true},{"internalType":"address","name":"where","type":"address","indexed":true}],"type":"event","name":"IncreaseNonce","anonymous":false},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":true},{"internalType":"address","name":"where","type":"address","indexed":true}],"type":"event","name":"OptIn","anonymous":false},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":true},{"internalType":"address","name":"where","type":"address","indexed":true}],"type":"event","name":"OptOut","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"WHERE_REGISTRY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"WHO_REGISTRY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"eip712Domain","outputs":[{"internalType":"bytes1","name":"fields","type":"bytes1"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"version","type":"string"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"verifyingContract","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256[]","name":"extensions","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"where","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"increaseNonce"},{"inputs":[{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"where","type":"address"}],"stateMutability":"view","type":"function","name":"isOptedIn","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"where","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"isOptedInAt","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"where","type":"address"}],"stateMutability":"view","type":"function","name":"nonces","outputs":[{"internalType":"uint256","name":"nonce","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"where","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"optIn"},{"inputs":[{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"where","type":"address"},{"internalType":"uint48","name":"deadline","type":"uint48"},{"internalType":"bytes","name":"signature","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"optIn"},{"inputs":[{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"where","type":"address"},{"internalType":"uint48","name":"deadline","type":"uint48"},{"internalType":"bytes","name":"signature","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"optOut"},{"inputs":[{"internalType":"address","name":"where","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"optOut"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"staticDelegateCall"}],"devdoc":{"kind":"dev","methods":{"eip712Domain()":{"details":"See {IERC-5267}."},"increaseNonce(address)":{"details":"It can be used to invalidate a given signature.","params":{"where":"address of the \"where\" entity"}},"isOptedIn(address,address)":{"params":{"where":"address of the \"where\" entity","who":"address of the \"who\""},"returns":{"_0":"if the \"who\" is opted-in"}},"isOptedInAt(address,address,uint48,bytes)":{"params":{"hint":"hint for the checkpoint index","timestamp":"time point to get if the \"who\" is opted-in at","where":"address of the \"where\" entity","who":"address of the \"who\""},"returns":{"_0":"if the \"who\" is opted-in at the given timestamp"}},"optIn(address)":{"params":{"where":"address of the \"where\" entity"}},"optIn(address,address,uint48,bytes)":{"params":{"deadline":"time point until the signature is valid (inclusively)","signature":"signature of the \"who\"","where":"address of the \"where\" entity","who":"address of the \"who\""}},"optOut(address)":{"params":{"where":"address of the \"where\" entity"}},"optOut(address,address,uint48,bytes)":{"params":{"deadline":"time point until the signature is valid (inclusively)","signature":"signature of the \"who\"","where":"address of the \"where\" entity","who":"address of the \"who\""}},"staticDelegateCall(address,bytes)":{"details":"It allows to use this contract's storage on-chain.","params":{"data":"data to make a delegatecall with","target":"address of the contract to make a delegatecall to"}}},"version":1},"userdoc":{"kind":"user","methods":{"WHERE_REGISTRY()":{"notice":"Get the address of the registry where to opt-in."},"WHO_REGISTRY()":{"notice":"Get the \"who\" registry's address."},"increaseNonce(address)":{"notice":"Increase the nonce of a given \"who\" to a particular \"where\" entity."},"isOptedIn(address,address)":{"notice":"Check if a given \"who\" is opted-in to a particular \"where\" entity."},"isOptedInAt(address,address,uint48,bytes)":{"notice":"Get if a given \"who\" is opted-in to a particular \"where\" entity at a given timestamp using a hint."},"nonces(address,address)":{"notice":"Get the nonce of a given \"who\" to a particular \"where\" entity."},"optIn(address)":{"notice":"Opt-in a calling \"who\" to a particular \"where\" entity."},"optIn(address,address,uint48,bytes)":{"notice":"Opt-in a \"who\" to a particular \"where\" entity with a signature."},"optOut(address)":{"notice":"Opt-out a calling \"who\" from a particular \"where\" entity."},"optOut(address,address,uint48,bytes)":{"notice":"Opt-out a \"who\" from a particular \"where\" entity with a signature."},"staticDelegateCall(address,bytes)":{"notice":"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data)."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/service/OptInService.sol":"OptInService"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol":{"keccak256":"0x85a45f3f10014a0f8be41157a32b6a5f905753ea64a4b64e29fc12b7deeecf39","urls":["bzz-raw://c3c74009ce36136b36c77c23935b8e4a7b4f253be2da2be4fb4a916b1ce43743","dweb:/ipfs/QmcH36v3iN7SJJuF73AunLR2LtNxhVJ1wm63ph4dPZ4pcL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol":{"keccak256":"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92","urls":["bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a","dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol":{"keccak256":"0x18a7171df639a934592915a520ecb97c5bbc9675a1105607aac8a94e72bf62c6","urls":["bzz-raw://7478e1f13da69a2867ccd883001d836b75620362e743f196376d63ed0c422a1c","dweb:/ipfs/QmWywcQ9TNfwtoqAxbn25d8C5VrV12PrPS9UjtGe6pL2BA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418","urls":["bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c","dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792","urls":["bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453","dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0xeed0a08b0b091f528356cbc7245891a4c748682d4f6a18055e8e6ca77d12a6cf","urls":["bzz-raw://ba80ba06c8e6be852847e4c5f4492cef801feb6558ae09ed705ff2e04ea8b13c","dweb:/ipfs/QmXRJDv3xHLVQCVXg1ZvR35QS9sij5y9NDWYzMfUfAdTHF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol":{"keccak256":"0x999f705a027ed6dc2d4e0df2cc4a509852c6bfd11de1c8161bf88832d0503fd0","urls":["bzz-raw://0798def67258d9a3cc20b2b4da7ebf351a5cefe0abfdd665d2d81f8e32f89b21","dweb:/ipfs/QmPEvJosnPfzHNjKvCv2D3891mA2Ww8eUwkqrxBjuYdHCt"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0xba333517a3add42cd35fe877656fc3dfcc9de53baa4f3aabbd6d12a92e4ea435","urls":["bzz-raw://2ceacff44c0fdc81e48e0e0b1db87a2076d3c1fb497341de077bf1da9f6b406c","dweb:/ipfs/QmRUo1muMRAewxrKQ7TkXUtknyRoR57AyEkoPpiuZQ8FzX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/SignatureChecker.sol":{"keccak256":"0x6b11eb41a228cca35d4b662b4df69fcd75192851365102690f57b2ac01e83fe6","urls":["bzz-raw://ab006a2983ed350d2af21ddcdd835dcae3b8340086cc4d088460da5abd041f69","dweb:/ipfs/QmbEacDhkJZiGrgzLjB4pNtE8Z1uudjDw1DvcDUTVQFsLG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe","urls":["bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c","dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72","urls":["bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc","dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol":{"keccak256":"0xbdc5e074d7dd6678f67e92b1a51a20226801a407b0e1af3da367c5d1ff4519ad","urls":["bzz-raw://a36cca6b22fff3db16fc789ff6c60eea71d4b156065d4d0c83a0bc5e91a77a8b","dweb:/ipfs/QmYN3exd5AemxjBrN8XMB1p5LbbE16uC3sjbYjwi8AjcGR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0xc7755af115020049e4140f224f9ee88d7e1799ffb0646f37bf0df24bf6213f58","urls":["bzz-raw://7f09bf94d5274334ec021f61a04659db303f31e60460e14b709c9bf187740111","dweb:/ipfs/QmNvgomZYUwFAt4cZbPWAiTeSZQreGehY9BK5xyVJsUttb"],"license":"MIT"},"src/contracts/common/StaticDelegateCallable.sol":{"keccak256":"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90","urls":["bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764","dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD"],"license":"BUSL-1.1"},"src/contracts/libraries/Checkpoints.sol":{"keccak256":"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c","urls":["bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609","dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE"],"license":"MIT"},"src/contracts/service/OptInService.sol":{"keccak256":"0x4e0932077f2686b7990e10d59deb2535334c0d09e52ef6e57c6ab09eca21c4b1","urls":["bzz-raw://7c00d311032ed4a1743aca7475f3c86ce15cdfc2218108efc3731c03d34a5278","dweb:/ipfs/QmUGGfVwVhaHr5kS4177yKKYiLYzi5qZpkEmvYxBZqazxf"],"license":"BUSL-1.1"},"src/interfaces/common/IRegistry.sol":{"keccak256":"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb","urls":["bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014","dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK"],"license":"MIT"},"src/interfaces/common/IStaticDelegateCallable.sol":{"keccak256":"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5","urls":["bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516","dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi"],"license":"MIT"},"src/interfaces/service/IOptInService.sol":{"keccak256":"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a","urls":["bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337","dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24"],"license":"MIT"}},"version":1},"id":91} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[{"name":"whoRegistry","type":"address","internalType":"address"},{"name":"whereRegistry","type":"address","internalType":"address"},{"name":"name","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"WHERE_REGISTRY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"WHO_REGISTRY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"eip712Domain","inputs":[],"outputs":[{"name":"fields","type":"bytes1","internalType":"bytes1"},{"name":"name","type":"string","internalType":"string"},{"name":"version","type":"string","internalType":"string"},{"name":"chainId","type":"uint256","internalType":"uint256"},{"name":"verifyingContract","type":"address","internalType":"address"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"extensions","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"increaseNonce","inputs":[{"name":"where","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isOptedIn","inputs":[{"name":"who","type":"address","internalType":"address"},{"name":"where","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isOptedInAt","inputs":[{"name":"who","type":"address","internalType":"address"},{"name":"where","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"nonces","inputs":[{"name":"who","type":"address","internalType":"address"},{"name":"where","type":"address","internalType":"address"}],"outputs":[{"name":"nonce","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"optIn","inputs":[{"name":"where","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"optIn","inputs":[{"name":"who","type":"address","internalType":"address"},{"name":"where","type":"address","internalType":"address"},{"name":"deadline","type":"uint48","internalType":"uint48"},{"name":"signature","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"optOut","inputs":[{"name":"who","type":"address","internalType":"address"},{"name":"where","type":"address","internalType":"address"},{"name":"deadline","type":"uint48","internalType":"uint48"},{"name":"signature","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"optOut","inputs":[{"name":"where","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"staticDelegateCall","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"EIP712DomainChanged","inputs":[],"anonymous":false},{"type":"event","name":"IncreaseNonce","inputs":[{"name":"who","type":"address","indexed":true,"internalType":"address"},{"name":"where","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OptIn","inputs":[{"name":"who","type":"address","indexed":true,"internalType":"address"},{"name":"where","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OptOut","inputs":[{"name":"who","type":"address","indexed":true,"internalType":"address"},{"name":"where","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AlreadyOptedIn","inputs":[]},{"type":"error","name":"CheckpointUnorderedInsertion","inputs":[]},{"type":"error","name":"ExpiredSignature","inputs":[]},{"type":"error","name":"InvalidShortString","inputs":[]},{"type":"error","name":"InvalidSignature","inputs":[]},{"type":"error","name":"NotOptedIn","inputs":[]},{"type":"error","name":"NotWhereEntity","inputs":[]},{"type":"error","name":"NotWho","inputs":[]},{"type":"error","name":"OptOutCooldown","inputs":[]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"StringTooLong","inputs":[{"name":"str","type":"string","internalType":"string"}]}],"bytecode":{"object":"0x6101a0604090808252346101dc57611b8f803803809161001f82856101e0565b833981016060828203126101dc5761003682610203565b6020610043818501610203565b848601516001600160401b03959194918682116101dc57019181601f840112156101dc5782518681116101c857875193610086601f8301601f19168401866101e0565b818552828501938383830101116101dc57815f9284809301865e85010152865190878201828110888211176101c857885260018252808201603160f81b81526100ce85610217565b936101209485526100de846103ae565b95610140968752519020928360e0525190209761010098808a524660a0528151928301937f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f85528284015260608301524660808301523060a083015260a0825260c0820197828910908911176101c8578790525190206080523060c0526101609283526101809384526116aa95866104e58739608051866111f9015260a051866112b4015260c051866111c3015260e051866112480152518561126e015251846102dd015251836103060152518281816105d90152610c2e01525181818161024e0152610c810152f35b634e487b7160e01b5f52604160045260245ffd5b5f80fd5b601f909101601f19168101906001600160401b038211908210176101c857604052565b51906001600160a01b03821682036101dc57565b80516020908181101561028d5750601f82511161024f578082519201519080831061024157501790565b825f19910360031b1b161790565b60448260405192839163305a27a960e01b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fd5b906001600160401b0382116101c8575f54926001938481811c911680156103a4575b8382101461039057601f811161035d575b5081601f84116001146102fb57509282939183925f946102f0575b50501b915f199060031b1c1916175f5560ff90565b015192505f806102db565b919083601f1981165f8052845f20945f905b88838310610343575050501061032b575b505050811b015f5560ff90565b01515f1960f88460031b161c191690555f808061031e565b85870151885590960195948501948793509081019061030d565b5f805284601f845f20920160051c820191601f860160051c015b8281106103855750506102c0565b5f8155018590610377565b634e487b7160e01b5f52602260045260245ffd5b90607f16906102af565b8051602090818110156103d85750601f82511161024f578082519201519080831061024157501790565b9192916001600160401b0381116101c85760019182548381811c911680156104da575b8282101461039057601f81116104a7575b5080601f83116001146104475750819293945f9261043c575b50505f19600383901b1c191690821b17905560ff90565b015190505f80610425565b90601f19831695845f52825f20925f905b8882106104905750508385969710610478575b505050811b01905560ff90565b01515f1960f88460031b161c191690555f808061046b565b808785968294968601518155019501930190610458565b835f5283601f835f20920160051c820191601f850160051c015b8281106104cf57505061040c565b5f81550184906104c1565b90607f16906103fb56fe60806040526004361015610011575f80fd5b5f3560e01c8063220d32d4146100d4578063530e1d43146100cf5780636d0fae4a146100ca5780638247a97c146100c557806384b0196e146100c05780639333fbda146100bb57806393f79bc3146100b65780639f86fd85146100b1578063b1138ad1146100ac578063c4b5d62c146100a7578063ced44ba7146100a25763d46104831461009d575f80fd5b6106cc565b610608565b6105c4565b6105a2565b610511565b610412565b6103bb565b6102c5565b61027d565b610239565b6101d3565b610109565b600435906001600160a01b03821682036100ef57565b5f80fd5b602435906001600160a01b03821682036100ef57565b346100ef5760403660031901126100ef5760206101356101276100d9565b61012f6100f3565b906106ee565b6040519015158152f35b9181601f840112156100ef5782359167ffffffffffffffff83116100ef57602083818601950101116100ef57565b9060806003198301126100ef576001600160a01b039160043583811681036100ef579260243590811681036100ef579160443565ffffffffffff811681036100ef57916064359067ffffffffffffffff82116100ef576101cf9160040161013f565b9091565b346100ef576020600161022961022f61021a6101ee3661016d565b969290949193888060a01b03165f526003895260405f209060018060a01b03165f5260205260405f2090565b92868060d01b0395369161080b565b916108c3565b1614604051908152f35b346100ef575f3660031901126100ef576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346100ef5760203660031901126100ef5761029f6102996100d9565b336109bf565b005b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b346100ef575f3660031901126100ef5761035e6103017f0000000000000000000000000000000000000000000000000000000000000000610e25565b61032a7f0000000000000000000000000000000000000000000000000000000000000000610f23565b6040519061033782610786565b5f825261036c602091604051958695600f60f81b875260e0602088015260e08701906102a1565b9085820360408701526102a1565b4660608501523060808501525f60a085015283810360c0850152602080845192838152019301915f5b8281106103a457505050500390f35b835185528695509381019392810192600101610395565b346100ef5760403660031901126100ef5760206104096103d96100d9565b6103e16100f3565b6001600160a01b039182165f9081526002855260408082209290931681526020919091522090565b54604051908152f35b346100ef576104203661016d565b909165ffffffffffff8061043342610fec565b1691169081106104ff576104df926104d06104d89260018060a01b0380891691825f5260026020526104788960405f209060018060a01b03165f5260205260405f2090565b546040519260208401947f7830334d17a05ab8aeca8f1778e27182208fc2d454ac7b38a4edc2069ee3a4a6865260408501528a166060840152608083015260a082015260a081526104c8816107a2565b51902061101e565b92369161080b565b9084610a33565b156104ed5761029f91610ae6565b604051638baa579f60e01b8152600490fd5b60405163df4cc36d60e01b8152600490fd5b346100ef5760403660031901126100ef5761052a6100d9565b60243567ffffffffffffffff81116100ef575f9161054d8392369060040161013f565b90816040519283928337810184815203915af461059a61056b610841565b9161058c6040519384921515602084015260408084015260608301906102a1565b03601f1981018352826107be565b805190602001fd5b346100ef5760203660031901126100ef5761029f6105be6100d9565b33610c02565b346100ef575f3660031901126100ef576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346100ef576106163661016d565b909165ffffffffffff8061062942610fec565b1691169081106104ff576106be926104d06104d89260018060a01b0380891691825f52600260205261066e8960405f209060018060a01b03165f5260205260405f2090565b546040519260208401947f6ab5200f1123a8d51d1695a9e5e757267926b53c6359f90b8873cc7dcc30ea2c865260408501528a166060840152608083015260a082015260a081526104c8816107a2565b156104ed5761029f91610c02565b346100ef5760203660031901126100ef5761029f6106e86100d9565b33610ae6565b6001600160a01b039081165f908152600360209081526040808320939094168252919091522080548061072c57505060015f5b818060d01b03161490565b5f1990808281011161074c576001925f5260205f2001015460301c610721565b61088c565b634e487b7160e01b5f52604160045260245ffd5b6040810190811067ffffffffffffffff82111761078157604052565b610751565b6020810190811067ffffffffffffffff82111761078157604052565b60c0810190811067ffffffffffffffff82111761078157604052565b90601f8019910116810190811067ffffffffffffffff82111761078157604052565b604051906107ed82610765565b565b67ffffffffffffffff811161078157601f01601f191660200190565b929192610817826107ef565b9161082560405193846107be565b8294818452818301116100ef578281602093845f960137010152565b3d1561086b573d90610852826107ef565b9161086060405193846107be565b82523d5f602084013e565b606090565b908160209103126100ef575163ffffffff811681036100ef5790565b634e487b7160e01b5f52601160045260245ffd5b5f1981019190821161074c57565b90600163ffffffff8093160191821161074c57565b918051156109b557806020806108de93518301019101610870565b916108e98382610dcb565b926108fa845165ffffffffffff1690565b9065ffffffffffff808516921682811461099c578211918261093c575b505061092a57610927925061108c565b90565b5050602001516001600160d01b031690565b90915061094983546108a0565b63ffffffff831614918215610962575b50505f80610917565b61099491925061097d610977610989926108ae565b85610dcb565b5165ffffffffffff1690565b65ffffffffffff1690565b115f80610959565b50505050602091909101516001600160d01b0316905090565b506109279161108c565b6001600160a01b039081165f8181526002602090815260408083209590941680835294905291822080546001019055907f8ed32926585579e6191b145240df788165f4957e1135f30a00e08ee8feb9d6809080a3565b60041115610a1f57565b634e487b7160e01b5f52602160045260245ffd5b9091813b610a6e57610a459192611044565b50610a4f81610a15565b159182610a5b57505090565b6001600160a01b03918216911614919050565b5f918291604051610aa38161058c6020820194630b135d3f60e11b998a875260248401526040604484015260648301906102a1565b51915afa90610ab0610841565b82610ad8575b82610ac057505090565b9091506020818051810103126100ef57602001511490565b915060208251101591610ab6565b90610b22610b1d82610b088560018060a01b03165f52600360205260405f2090565b9060018060a01b03165f5260205260405f2090565b61135c565b9091506001600160d01b031615610bcd5765ffffffffffff80610b4442610fec565b16911614610bbb57610b7c610b6d82610b088560018060a01b03165f52600360205260405f2090565b610b7642610fec565b90611539565b5050610b8881836109bf565b6001600160a01b0390811691167f1629cd9ad365627cf8408d19c50224af8f3213c1a18ae48062d92e22bddf7de55f80a3565b60405163291bf4b760e21b8152600490fd5b6040516334b09b3960e11b8152600490fd5b908160209103126100ef575180151581036100ef5790565b6040513d5f823e3d90fd5b6040516302910f8b60e31b8082526001600160a01b0383811660048401529293916020919082816024817f000000000000000000000000000000000000000000000000000000000000000089165afa908115610d7f575f91610d96575b5015610d84576040519081526001600160a01b038316600482015281816024817f000000000000000000000000000000000000000000000000000000000000000088165afa918215610d7f575f92610d52575b505015610d4057610cc381846106ee565b610d2e5780610cf9610cea8493610b088760018060a01b03165f52600360205260405f2090565b610cf342610fec565b906115e6565b5050610d0581856109bf565b1691167f9b730d5b907ee509de729817a2bb37e404418ba569b3a50f36192372f973cb415f80a3565b60405163dcdeaba360e01b8152600490fd5b6040516321f5408d60e01b8152600490fd5b610d719250803d10610d78575b610d6981836107be565b810190610bdf565b5f80610cb2565b503d610d5f565b610bf7565b604051630fb9ff9560e41b8152600490fd5b610dad9150833d8511610d7857610d6981836107be565b5f610c5f565b60405190610dc082610765565b5f6020838281520152565b90610de791610dd8610db3565b50610de1610db3565b5061116b565b50602060405191610df783610765565b549165ffffffffffff83169283825260301c918291015260405191610e1b83610765565b8252602082015290565b60ff8114610e365761092790611194565b506040515f80546001918160011c9260018316908115610f19575b602090602086108314610f055785875286946020860193908115610ee65750600114610e87575b505050610927925003826107be565b925093610eb45f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56390565b945f935b828510610ed0575050506109279350015f8080610e78565b8654858501529586019587955093810193610eb8565b925050506109279491925060ff19168252151560051b015f8080610e78565b634e487b7160e01b5f52602260045260245ffd5b93607f1693610e51565b60ff8114610f345761092790611194565b506040516001805480821c915f90828116908115610fe2575b602090602086108314610f055785875286946020860193908115610ee65750600114610f8257505050610927925003826107be565b925093610fb060015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf690565b945f935b828510610fcc575050506109279350015f8080610e78565b8654858501529586019587955093810193610fb4565b93607f1693610f4d565b65ffffffffffff90818111610fff571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b6042906110296111c0565b906040519161190160f01b8352600283015260228201522090565b81519190604183036110745761106d9250602082015190606060408401519301515f1a906112da565b9192909190565b50505f9160029190565b906001820180921161074c57565b908154905f918060058111611122575b50915b8281106110d5575050806110b35750505f90565b610927916110c36110ce926108a0565b905f5260205f200190565b5460301c90565b90918082169080831860011c820180921161074c57845f5265ffffffffffff808360205f20015416908516105f146111105750915b9061109f565b92915061111c9061107e565b9061110a565b9061112c826113b3565b820391821161074c57845f5265ffffffffffff808360205f20015416908416105f1461115a57505b5f61109c565b92506111659061107e565b91611154565b8054821015611180575f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b60ff811690601f82116111ae5760405191610e1b83610765565b604051632cd44ac360e21b8152600490fd5b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806112b1575b1561121b577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a081526112ab816107a2565b51902090565b507f000000000000000000000000000000000000000000000000000000000000000046146111f2565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411611351579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa15610d7f575f516001600160a01b0381161561134757905f905f90565b505f906001905f90565b5050505f9160039190565b80548061136d5750505f905f905f90565b5f1991818381011161074c575f5260205f2001015460019165ffffffffffff82169160301c90565b811561139f570490565b634e487b7160e01b5f52601260045260245ffd5b600181111561092757600181600160801b8110156114cc575b61147461146a61146061145661144c61144261148097600488600160401b61147b9a10156114bf575b6401000000008110156114b2575b620100008110156114a5575b610100811015611499575b601081101561148d575b1015611485575b60030260011c61143b818b611395565b0160011c90565b61143b818a611395565b61143b8189611395565b61143b8188611395565b61143b8187611395565b61143b8186611395565b8093611395565b821190565b900390565b60011b61142b565b811c9160021b91611424565b60081c91811b9161141a565b60101c9160081b9161140f565b60201c9160101b91611403565b60401c9160201b916113f5565b50600160401b9050608082901c6113cc565b8054600160401b811015610781576114fb9160018201815561116b565b91909161152657805160209091015160301b65ffffffffffff191665ffffffffffff91909116179055565b634e487b7160e01b5f525f60045260245ffd5b805490919080156115d05761155061155b916108a0565b835f5260205f200190565b9081549265ffffffffffff808516908316908181116115be5703611590575050805465ffffffffffff1690555b60301c905f90565b6115b992506115ae6115a06107e0565b65ffffffffffff9093168352565b5f60208301526114de565b611588565b604051632520601d60e01b8152600490fd5b506115e0916115ae6115a06107e0565b5f905f90565b8054909190801561165d576115506115fd916108a0565b9081549265ffffffffffff808516908316908181116115be570361163c575050805465ffffffffffff1666010000000000001790555b60301c90600190565b611658925061164c6115a06107e0565b600160208301526114de565b611633565b5061166d9161164c6115a06107e0565b5f9060019056fea26469706673582212204d33aa95931a3940239031bcc50bb109b46d7e6c0abc460be8c95c41bd8eec0664736f6c63430008190033","sourceMap":"583:4371:98:-:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;583:4371:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;583:4371:98;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;583:4371:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;583:4371:98;;3401:45:59;;;:::i;:::-;3393:53;;;;;3467:51;;;:::i;:::-;3456:62;;;;;583:4371:98;3542:22:59;;3528:36;;;;583:4371:98;3591:25:59;;3574:42;;;;;;3644:13;3627:30;;583:4371:98;;4204:80:59;;;2079:95;;;;;;;;583:4371:98;2079:95:59;;;3644:13;2079:95;;;;4278:4;3627:30;2079:95;;;3627:30;4204:80;;2079:95;583:4371:98;;;;;;;;;;;;;;;;4194:91:59;;2079:95;3667:48;4278:4;2079:95;3725:27;1675:26:98;;;;1711:30;;;;583:4371;;;;;;2079:95:59;583:4371:98;;;;;3627:30:59;583:4371:98;;;;;2079:95:59;583:4371:98;;;;;3528:36:59;583:4371:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;583:4371:98;;;;;-1:-1:-1;583:4371:98;;-1:-1:-1;583:4371:98;;;;;;;-1:-1:-1;;583:4371:98;;;;-1:-1:-1;;;;;583:4371:98;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;583:4371:98;;;;;;:::o;2887:340:55:-;583:4371:98;;3032:2:55;;3010:24;;;3032:2;;;583:4371:98;1854:2:55;583:4371:98;;1840:16:55;1836:72;;583:4371:98;;;;;2079:95:59;583:4371:98;;;;;;1949:36:55;;3050:27;:::o;583:4371:98:-;;;;;;;;;;1949:36:55;3050:27;:::o;1836:72::-;583:4371:98;;;;1879:18:55;;;;;;;;;;;;583:4371:98;;;;;;;;;;;;;;;;3432:13:59;583:4371:98;;;;;;1854:2:55;583:4371:98;-1:-1:-1;;583:4371:98;;;1879:18:55;;;;3006:215;583:4371:98;-1:-1:-1;;;;;583:4371:98;;;;3432:13:59;583:4371:98;;;;;;;;;;;;;;3006:215:55;583:4371:98;;;;;;;;;;;3006:215:55;583:4371:98;;;;;;;;;;;;;;;;3432:13:59;583:4371:98;;;;;;;;;;;;;;;;;3432:13:59;583:4371:98;1390:66:55;3168:42;:::o;583:4371:98:-;;;;-1:-1:-1;583:4371:98;;;;;;;;;;;;3432:13:59;583:4371:98;;;3432:13:59;583:4371:98;;3432:13:59;583:4371:98;;;;;;;;;;;;;;;;;;;;;3432:13:59;583:4371:98;1390:66:55;3168:42;:::o;583:4371:98:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;583:4371:98;;;;;;;3432:13:59;583:4371:98;;;;;3432:13:59;583:4371:98;;;;;;;;;;;;;;;;;;;;;;;;;3432:13:59;583:4371:98;;;;;;;;;;;3432:13:59;583:4371:98;;;;;3432:13:59;583:4371:98;;;;;;;;2887:340:55;583:4371:98;;3032:2:55;;3010:24;;;3032:2;;;583:4371:98;1854:2:55;583:4371:98;;1840:16:55;1836:72;;583:4371:98;;;;;2079:95:59;583:4371:98;;;;;;1949:36:55;;3050:27;:::o;3006:215::-;583:4371:98;;;-1:-1:-1;;;;;583:4371:98;;;;;;;;;;;;;;;;;;3006:215:55;583:4371:98;;;;;;;;;;;3006:215:55;583:4371:98;;;;;;;;;;;;;;-1:-1:-1;583:4371:98;;;;-1:-1:-1;;;;583:4371:98;;;;;;;;;;;;;1390:66:55;;3168:42::o;583:4371:98:-;;;;-1:-1:-1;583:4371:98;;;;;;;;;;;;-1:-1:-1;583:4371:98;;-1:-1:-1;583:4371:98;;-1:-1:-1;583:4371:98;;;;;;;;;;;;;;;;;;;;;;;;;1390:66:55;3168:42;:::o;583:4371:98:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;583:4371:98;;;;-1:-1:-1;583:4371:98;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;583:4371:98;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c8063220d32d4146100d4578063530e1d43146100cf5780636d0fae4a146100ca5780638247a97c146100c557806384b0196e146100c05780639333fbda146100bb57806393f79bc3146100b65780639f86fd85146100b1578063b1138ad1146100ac578063c4b5d62c146100a7578063ced44ba7146100a25763d46104831461009d575f80fd5b6106cc565b610608565b6105c4565b6105a2565b610511565b610412565b6103bb565b6102c5565b61027d565b610239565b6101d3565b610109565b600435906001600160a01b03821682036100ef57565b5f80fd5b602435906001600160a01b03821682036100ef57565b346100ef5760403660031901126100ef5760206101356101276100d9565b61012f6100f3565b906106ee565b6040519015158152f35b9181601f840112156100ef5782359167ffffffffffffffff83116100ef57602083818601950101116100ef57565b9060806003198301126100ef576001600160a01b039160043583811681036100ef579260243590811681036100ef579160443565ffffffffffff811681036100ef57916064359067ffffffffffffffff82116100ef576101cf9160040161013f565b9091565b346100ef576020600161022961022f61021a6101ee3661016d565b969290949193888060a01b03165f526003895260405f209060018060a01b03165f5260205260405f2090565b92868060d01b0395369161080b565b916108c3565b1614604051908152f35b346100ef575f3660031901126100ef576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346100ef5760203660031901126100ef5761029f6102996100d9565b336109bf565b005b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b346100ef575f3660031901126100ef5761035e6103017f0000000000000000000000000000000000000000000000000000000000000000610e25565b61032a7f0000000000000000000000000000000000000000000000000000000000000000610f23565b6040519061033782610786565b5f825261036c602091604051958695600f60f81b875260e0602088015260e08701906102a1565b9085820360408701526102a1565b4660608501523060808501525f60a085015283810360c0850152602080845192838152019301915f5b8281106103a457505050500390f35b835185528695509381019392810192600101610395565b346100ef5760403660031901126100ef5760206104096103d96100d9565b6103e16100f3565b6001600160a01b039182165f9081526002855260408082209290931681526020919091522090565b54604051908152f35b346100ef576104203661016d565b909165ffffffffffff8061043342610fec565b1691169081106104ff576104df926104d06104d89260018060a01b0380891691825f5260026020526104788960405f209060018060a01b03165f5260205260405f2090565b546040519260208401947f7830334d17a05ab8aeca8f1778e27182208fc2d454ac7b38a4edc2069ee3a4a6865260408501528a166060840152608083015260a082015260a081526104c8816107a2565b51902061101e565b92369161080b565b9084610a33565b156104ed5761029f91610ae6565b604051638baa579f60e01b8152600490fd5b60405163df4cc36d60e01b8152600490fd5b346100ef5760403660031901126100ef5761052a6100d9565b60243567ffffffffffffffff81116100ef575f9161054d8392369060040161013f565b90816040519283928337810184815203915af461059a61056b610841565b9161058c6040519384921515602084015260408084015260608301906102a1565b03601f1981018352826107be565b805190602001fd5b346100ef5760203660031901126100ef5761029f6105be6100d9565b33610c02565b346100ef575f3660031901126100ef576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346100ef576106163661016d565b909165ffffffffffff8061062942610fec565b1691169081106104ff576106be926104d06104d89260018060a01b0380891691825f52600260205261066e8960405f209060018060a01b03165f5260205260405f2090565b546040519260208401947f6ab5200f1123a8d51d1695a9e5e757267926b53c6359f90b8873cc7dcc30ea2c865260408501528a166060840152608083015260a082015260a081526104c8816107a2565b156104ed5761029f91610c02565b346100ef5760203660031901126100ef5761029f6106e86100d9565b33610ae6565b6001600160a01b039081165f908152600360209081526040808320939094168252919091522080548061072c57505060015f5b818060d01b03161490565b5f1990808281011161074c576001925f5260205f2001015460301c610721565b61088c565b634e487b7160e01b5f52604160045260245ffd5b6040810190811067ffffffffffffffff82111761078157604052565b610751565b6020810190811067ffffffffffffffff82111761078157604052565b60c0810190811067ffffffffffffffff82111761078157604052565b90601f8019910116810190811067ffffffffffffffff82111761078157604052565b604051906107ed82610765565b565b67ffffffffffffffff811161078157601f01601f191660200190565b929192610817826107ef565b9161082560405193846107be565b8294818452818301116100ef578281602093845f960137010152565b3d1561086b573d90610852826107ef565b9161086060405193846107be565b82523d5f602084013e565b606090565b908160209103126100ef575163ffffffff811681036100ef5790565b634e487b7160e01b5f52601160045260245ffd5b5f1981019190821161074c57565b90600163ffffffff8093160191821161074c57565b918051156109b557806020806108de93518301019101610870565b916108e98382610dcb565b926108fa845165ffffffffffff1690565b9065ffffffffffff808516921682811461099c578211918261093c575b505061092a57610927925061108c565b90565b5050602001516001600160d01b031690565b90915061094983546108a0565b63ffffffff831614918215610962575b50505f80610917565b61099491925061097d610977610989926108ae565b85610dcb565b5165ffffffffffff1690565b65ffffffffffff1690565b115f80610959565b50505050602091909101516001600160d01b0316905090565b506109279161108c565b6001600160a01b039081165f8181526002602090815260408083209590941680835294905291822080546001019055907f8ed32926585579e6191b145240df788165f4957e1135f30a00e08ee8feb9d6809080a3565b60041115610a1f57565b634e487b7160e01b5f52602160045260245ffd5b9091813b610a6e57610a459192611044565b50610a4f81610a15565b159182610a5b57505090565b6001600160a01b03918216911614919050565b5f918291604051610aa38161058c6020820194630b135d3f60e11b998a875260248401526040604484015260648301906102a1565b51915afa90610ab0610841565b82610ad8575b82610ac057505090565b9091506020818051810103126100ef57602001511490565b915060208251101591610ab6565b90610b22610b1d82610b088560018060a01b03165f52600360205260405f2090565b9060018060a01b03165f5260205260405f2090565b61135c565b9091506001600160d01b031615610bcd5765ffffffffffff80610b4442610fec565b16911614610bbb57610b7c610b6d82610b088560018060a01b03165f52600360205260405f2090565b610b7642610fec565b90611539565b5050610b8881836109bf565b6001600160a01b0390811691167f1629cd9ad365627cf8408d19c50224af8f3213c1a18ae48062d92e22bddf7de55f80a3565b60405163291bf4b760e21b8152600490fd5b6040516334b09b3960e11b8152600490fd5b908160209103126100ef575180151581036100ef5790565b6040513d5f823e3d90fd5b6040516302910f8b60e31b8082526001600160a01b0383811660048401529293916020919082816024817f000000000000000000000000000000000000000000000000000000000000000089165afa908115610d7f575f91610d96575b5015610d84576040519081526001600160a01b038316600482015281816024817f000000000000000000000000000000000000000000000000000000000000000088165afa918215610d7f575f92610d52575b505015610d4057610cc381846106ee565b610d2e5780610cf9610cea8493610b088760018060a01b03165f52600360205260405f2090565b610cf342610fec565b906115e6565b5050610d0581856109bf565b1691167f9b730d5b907ee509de729817a2bb37e404418ba569b3a50f36192372f973cb415f80a3565b60405163dcdeaba360e01b8152600490fd5b6040516321f5408d60e01b8152600490fd5b610d719250803d10610d78575b610d6981836107be565b810190610bdf565b5f80610cb2565b503d610d5f565b610bf7565b604051630fb9ff9560e41b8152600490fd5b610dad9150833d8511610d7857610d6981836107be565b5f610c5f565b60405190610dc082610765565b5f6020838281520152565b90610de791610dd8610db3565b50610de1610db3565b5061116b565b50602060405191610df783610765565b549165ffffffffffff83169283825260301c918291015260405191610e1b83610765565b8252602082015290565b60ff8114610e365761092790611194565b506040515f80546001918160011c9260018316908115610f19575b602090602086108314610f055785875286946020860193908115610ee65750600114610e87575b505050610927925003826107be565b925093610eb45f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56390565b945f935b828510610ed0575050506109279350015f8080610e78565b8654858501529586019587955093810193610eb8565b925050506109279491925060ff19168252151560051b015f8080610e78565b634e487b7160e01b5f52602260045260245ffd5b93607f1693610e51565b60ff8114610f345761092790611194565b506040516001805480821c915f90828116908115610fe2575b602090602086108314610f055785875286946020860193908115610ee65750600114610f8257505050610927925003826107be565b925093610fb060015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf690565b945f935b828510610fcc575050506109279350015f8080610e78565b8654858501529586019587955093810193610fb4565b93607f1693610f4d565b65ffffffffffff90818111610fff571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b6042906110296111c0565b906040519161190160f01b8352600283015260228201522090565b81519190604183036110745761106d9250602082015190606060408401519301515f1a906112da565b9192909190565b50505f9160029190565b906001820180921161074c57565b908154905f918060058111611122575b50915b8281106110d5575050806110b35750505f90565b610927916110c36110ce926108a0565b905f5260205f200190565b5460301c90565b90918082169080831860011c820180921161074c57845f5265ffffffffffff808360205f20015416908516105f146111105750915b9061109f565b92915061111c9061107e565b9061110a565b9061112c826113b3565b820391821161074c57845f5265ffffffffffff808360205f20015416908416105f1461115a57505b5f61109c565b92506111659061107e565b91611154565b8054821015611180575f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b60ff811690601f82116111ae5760405191610e1b83610765565b604051632cd44ac360e21b8152600490fd5b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806112b1575b1561121b577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a081526112ab816107a2565b51902090565b507f000000000000000000000000000000000000000000000000000000000000000046146111f2565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411611351579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa15610d7f575f516001600160a01b0381161561134757905f905f90565b505f906001905f90565b5050505f9160039190565b80548061136d5750505f905f905f90565b5f1991818381011161074c575f5260205f2001015460019165ffffffffffff82169160301c90565b811561139f570490565b634e487b7160e01b5f52601260045260245ffd5b600181111561092757600181600160801b8110156114cc575b61147461146a61146061145661144c61144261148097600488600160401b61147b9a10156114bf575b6401000000008110156114b2575b620100008110156114a5575b610100811015611499575b601081101561148d575b1015611485575b60030260011c61143b818b611395565b0160011c90565b61143b818a611395565b61143b8189611395565b61143b8188611395565b61143b8187611395565b61143b8186611395565b8093611395565b821190565b900390565b60011b61142b565b811c9160021b91611424565b60081c91811b9161141a565b60101c9160081b9161140f565b60201c9160101b91611403565b60401c9160201b916113f5565b50600160401b9050608082901c6113cc565b8054600160401b811015610781576114fb9160018201815561116b565b91909161152657805160209091015160301b65ffffffffffff191665ffffffffffff91909116179055565b634e487b7160e01b5f525f60045260245ffd5b805490919080156115d05761155061155b916108a0565b835f5260205f200190565b9081549265ffffffffffff808516908316908181116115be5703611590575050805465ffffffffffff1690555b60301c905f90565b6115b992506115ae6115a06107e0565b65ffffffffffff9093168352565b5f60208301526114de565b611588565b604051632520601d60e01b8152600490fd5b506115e0916115ae6115a06107e0565b5f905f90565b8054909190801561165d576115506115fd916108a0565b9081549265ffffffffffff808516908316908181116115be570361163c575050805465ffffffffffff1666010000000000001790555b60301c90600190565b611658925061164c6115a06107e0565b600160208301526114de565b611633565b5061166d9161164c6115a06107e0565b5f9060019056fea26469706673582212204d33aa95931a3940239031bcc50bb109b46d7e6c0abc460be8c95c41bd8eec0664736f6c63430008190033","sourceMap":"583:4371:98:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;583:4371:98;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;;;;583:4371:98;;;;;;:::o;:::-;;;;;;-1:-1:-1;;583:4371:98;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;583:4371:98;;;;;-1:-1:-1;;;;;583:4371:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;2036:1;583:4371;1975:57;:22;583:4371;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;583:4371:98;1975:10;583:4371;;;-1:-1:-1;583:4371:98;;;;;;;;;;;;;;;;;1975:22;583:4371;;;;;;;;;;:::i;:::-;1975:57;;:::i;:::-;583:4371;1975:62;583:4371;;;;;;;;;;;;-1:-1:-1;;583:4371:98;;;;;;851:39;-1:-1:-1;;;;;583:4371:98;;;;;;;;;;;;-1:-1:-1;;583:4371:98;;;;3493:5;583:4371;;:::i;:::-;3481:10;3493:5;:::i;:::-;583:4371;;;;;;;;;;;;;;;;;;-1:-1:-1;583:4371:98;;;;;;;;-1:-1:-1;;583:4371:98;;;;:::o;:::-;;;;;;-1:-1:-1;;583:4371:98;;;;;6099:41:59;:5;:41;:::i;:::-;6554:47;:8;:47;:::i;:::-;583:4371:98;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;5590:13:59;583:4371:98;;;;5625:4:59;583:4371:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;583:4371:98;;;;;;;;6584:16:59;583:4371:98;;;;;;;;;-1:-1:-1;;583:4371:98;;;;;1214:77;583:4371;;:::i;:::-;;;:::i;:::-;-1:-1:-1;;;;;583:4371:98;;;-1:-1:-1;583:4371:98;;;1214:77;583:4371;;;;;;;;;;;;-1:-1:-1;583:4371:98;;;;;;;1214:77;583:4371;;;;;;;;;;;;;;:::i;:::-;;;;837:15:68;819:34;837:15;819:34;:::i;:::-;583:4371:98;;;1469:27;;;1465:83;;3164:88;583:4371;4587:179;583:4371;;;;;;;;;;;;-1:-1:-1;583:4371:98;4713:6;583:4371;;4713:18;583:4371;;-1:-1:-1;583:4371:98;;;;;;;;;;;;;;;;;4713:18;583:4371;;;4644:98;583:4371;4644:98;;583:4371;1082:76;583:4371;;;948:75;;583:4371;;;948:75;;;583:4371;948:75;;;583:4371;948:75;;;;;4644:98;;;;;:::i;:::-;583:4371;4617:139;;4587:179;:::i;:::-;583:4371;;;;:::i;:::-;3164:88;;;:::i;:::-;3163:89;3159:145;;3327:5;;;:::i;3159:145::-;583:4371;;-1:-1:-1;;;3275:18:98;;583:4371;;3275:18;1465:83;583:4371;;-1:-1:-1;;;1519:18:98;;583:4371;;1519:18;583:4371;;;;;;-1:-1:-1;;583:4371:98;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;583:4371:98;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;416:25:82;;;;477:31;416:25;;:::i;:::-;583:4371:98;;;;;;;;;;477:31:82;;583:4371:98;;;;;;;;;;;:::i;:::-;477:31:82;583:4371:98;;477:31:82;;;;;;:::i;:::-;518:79;;;583:4371:98;518:79:82;;583:4371:98;;;;;;-1:-1:-1;;583:4371:98;;;;2370:5;583:4371;;:::i;:::-;2358:10;2370:5;:::i;583:4371::-;;;;;;-1:-1:-1;;583:4371:98;;;;;;758:37;-1:-1:-1;;;;;583:4371:98;;;;;;;;;;;;;:::i;:::-;;;;837:15:68;819:34;837:15;819:34;:::i;:::-;583:4371:98;;;1469:27;;;1465:83;;2610:87;583:4371;4587:179;583:4371;;;;;;;;;;;;-1:-1:-1;583:4371:98;4713:6;583:4371;;4713:18;583:4371;;-1:-1:-1;583:4371:98;;;;;;;;;;;;;;;;;4713:18;583:4371;;;4644:98;583:4371;4644:98;;583:4371;948:75;583:4371;;;948:75;;583:4371;;;948:75;;;583:4371;948:75;;;583:4371;948:75;;;;;4644:98;;;;;:::i;2610:87::-;2609:88;2605:144;;2771:5;;;:::i;583:4371::-;;;;;;-1:-1:-1;;583:4371:98;;;;2923:5;583:4371;;:::i;:::-;2911:10;2923:5;:::i;2099:134::-;-1:-1:-1;;;;;583:4371:98;;;-1:-1:-1;583:4371:98;;;2190:10;583:4371;;;;;;;;;;;;;;;;;;;;;10446:8:66;;;:63;;2225:1:98;-1:-1:-1;10446:63:66;583:4371:98;;;;;;2190:36;2099:134;:::o;10446:63:66:-;583:4371:98;;;;;;;;;;2225:1;14439:109:66;-1:-1:-1;14439:109:66;583:4371:98;-1:-1:-1;14439:109:66;;;583:4371:98;;;10446:63:66;;583:4371:98;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::o;:::-;948:75;583:4371;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;-1:-1:-1;;583:4371:98;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;583:4371:98;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;583:4371:98;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;583:4371:98;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::o;1818:604:93:-;;583:4371:98;;1946:17:93;1942:83;;583:4371:98;2049:27:93;583:4371:98;2049:27:93;583:4371:98;;2049:27:93;;;;;;:::i;:::-;2120:14;;;;;:::i;:::-;583:4371:98;;;;;;;;;;;;;;;;2148:22:93;;;2144:77;;2235:21;-1:-1:-1;2235:84:93;;;;1818:604;2231:139;;;;1425:34;;;;:::i;:::-;1818:604;:::o;2231:139::-;-1:-1:-1;;2049:27:93;2342:17;583:4371:98;-1:-1:-1;;;;;583:4371:98;1818:604:93;:::o;2235:84::-;583:4371:98;;;2269:16:93;583:4371:98;;2269:16:93;:::i;:::-;583:4371:98;;;2261:24:93;:57;;;;;2235:84;;;;;;;2261:57;2289:29;2298:8;;;2289:18;2298:8;2289:23;2298:8;;:::i;:::-;2289:18;;:::i;:::-;583:4371:98;;;;;2289:23:93;583:4371:98;;;;2289:29:93;;2261:57;;;;2144:77;-1:-1:-1;;;;2049:27:93;2193:17;;;;583:4371:98;-1:-1:-1;;;;;583:4371:98;;-1:-1:-1;1818:604:93;:::o;1942:83::-;1425:34;;;;:::i;4779:173:98:-;-1:-1:-1;;;;;583:4371:98;;;-1:-1:-1;583:4371:98;;;4876:6;583:4371;;;;;;;;;;;;;;;;;;;;;;;;;;;;4920:25;;-1:-1:-1;4920:25:98;4779:173::o;583:4371::-;;-1:-1:-1;583:4371:98;;;:::o;:::-;;;;;;;;;;;;1041:429:61;;;1167:18;;;;1254:33;;;;:::i;:::-;583:4371:98;;;;:::i;:::-;1308:33:61;:56;;;;1301:63;;;:::o;1308:56::-;-1:-1:-1;;;;;583:4371:98;;;;;1345:19:61;;1301:63;-1:-1:-1;1301:63:61:o;1163:301::-;1189:1;583:4371:98;;;;;2105:60:61;;583:4371:98;2105:60:61;;;;;;;;;;;;;;583:4371:98;;;;;;;;;;;:::i;2105:60:61:-;2074:101;;;;;;;:::i;:::-;2193:42;;;1163:301;2193:134;;;1395:58;;;:::o;2193:134::-;583:4371:98;;;2105:60:61;583:4371:98;;;2251:29:61;;583:4371:98;;;;2105:60:61;2251:29;583:4371:98;2251:76:61;1395:58;:::o;2193:42::-;583:4371:98;;2105:60:61;583:4371:98;;2216:19:61;;2193:42;;;3991:467:98;;5260:30:93;4105:22:98;:15;;;583:4371;;;;;;;;4105:10;583:4371;;;;;;;4105:15;583:4371;;;;;;;;;;;;;;;;4105:22;5260:30:93;:::i;:::-;583:4371:98;;-1:-1:-1;;;;;;583:4371:98;4161:16;4157:66;;583:4371;837:15:68;819:34;837:15;819:34;:::i;:::-;583:4371:98;;;4237:35;4233:89;;8310:38:66;4332:22:98;:15;;;583:4371;;;;;;;;4105:10;583:4371;;;;;;;4332:22;819:34:68;837:15;819:34;:::i;:::-;8310:38:66;;:::i;:::-;4411:5:98;;;;;;:::i;:::-;-1:-1:-1;;;;;583:4371:98;;;;;4433:18;-1:-1:-1;;4433:18:98;3991:467::o;4233:89::-;583:4371;;-1:-1:-1;;;4295:16:98;;;;;4157:66;583:4371;;-1:-1:-1;;;4200:12:98;;;;;583:4371;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;3512:473;583:4371;;-1:-1:-1;;;3580:37:98;;;-1:-1:-1;;;;;583:4371:98;;;3580:37;;;583:4371;;;3512:473;3580:37;;583:4371;3580:37;583:4371;;;3590:12;583:4371;;3580:37;;;;;;;-1:-1:-1;3580:37:98;;;3512:473;3579:38;;3575:84;;583:4371;;3674:41;;;-1:-1:-1;;;;;583:4371:98;;3580:37;3674:41;;583:4371;3674:41;583:4371;;;3684:14;583:4371;;3674:41;;;;;;;-1:-1:-1;3674:41:98;;;3512:473;3673:42;;;3669:96;;3779:21;;;;:::i;:::-;3775:75;;3860:15;8310:38:66;3860:22:98;:15;;;;583:4371;;;;;;;;4105:10;583:4371;;;;;;;3860:22;819:34:68;837:15;819:34;:::i;:::-;8310:38:66;;:::i;:::-;3939:5:98;;;;;;:::i;:::-;583:4371;;;3961:17;-1:-1:-1;3961:17:98;;3512:473::o;3775:75::-;583:4371;;-1:-1:-1;;;3823:16:98;;3580:37;;3823:16;3669:96;583:4371;;-1:-1:-1;;;3738:16:98;;3580:37;;3738:16;3674:41;;;;;;-1:-1:-1;3674:41:98;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;:::i;3575:84::-;583:4371;;-1:-1:-1;;;3640:8:98;;3580:37;;3640:8;3580:37;;;;;;;;;;;;;;:::i;:::-;;;;583:4371;;;;;;;:::i;:::-;-1:-1:-1;583:4371:98;;;;;;;:::o;5573:258:93:-;;11452:22:66;5573:258:93;583:4371:98;;:::i;:::-;;;;:::i;:::-;;11452:22:66;:::i;:::-;583:4371:98;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;5759:65:93;;583:4371:98;5573:258:93;:::o;3358:267:55:-;1390:66;3481:46;;1390:66;;3550:15;;;:::i;3477:142::-;583:4371:98;;;;;1390:66:55;;;;;;;;;;;;;;;3477:142;1390:66;;;;;;;;;583:4371:98;;;1390:66:55;;583:4371:98;;;1390:66:55;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;583:4371:98;1390:66:55;;;;;;;583:4371:98;1390:66:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1390:66:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;583:4371:98;;;;1390:66:55;;;;;583:4371:98;1390:66:55;;;;;;;;3358:267;1390:66;3481:46;;1390:66;;3550:15;;;:::i;3477:142::-;-1:-1:-1;583:4371:98;;6584:16:59;1390:66:55;;;;;;-1:-1:-1;;1390:66:55;;;;;;;;3477:142;1390:66;;;;;;;;;583:4371:98;;;1390:66:55;;583:4371:98;;;1390:66:55;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;6584:16:59;1390:66:55;;;;;;;-1:-1:-1;1390:66:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1390:66:55;;;;;;;;;;;;;14296:213:64;583:4371:98;14374:24:64;;;;14370:103;;583:4371:98;14296:213:64;:::o;14370:103::-;583:4371:98;;;;14421:41:64;;;;;;14452:2;14421:41;;;583:4371:98;;;;;14421:41:64;4917:176:59;3445:249:60;4917:176:59;5053:20;;:::i;:::-;3445:249:60;;;;-1:-1:-1;;;3445:249:60;;;;;;;;;;;4917:176:59;:::o;2129:778:58:-;583:4371:98;;;2129:778:58;2319:2;2299:22;;2319:2;;2751:25;2535:196;;;;;;;;;;;;;;;-1:-1:-1;2535:196:58;2751:25;;:::i;:::-;2744:32;;;;;:::o;2295:606::-;2807:83;;2823:1;2807:83;2827:35;2807:83;;:::o;583:4371:98:-;;9999:1:66;583:4371:98;;;;;;;:::o;9584:606:66:-;;583:4371:98;;9737:15:66;9702:17;9762:18;;9801:1;9795:7;;9791:234;;9584:606;10049:53;;13112:10;;;;;;-1:-1:-1;;10120:8:66;;;:63;;9702:17;9584:606;:::o;10120:63::-;10135:48;10168:7;;10135:41;10168:7;;:::i;:::-;10135:41;14439:109;;;;;;14289:265;;10135:41;583:4371:98;;;;;13105:230:66;3721:5:63;;;;;3731;;;;583:4371:98;;;;;;;;;14439:109:66;9702:17;14439:109;583:4371:98;14439:109:66;;;9702:17;14439:109;;583:4371:98;;;;;-1:-1:-1;13189:136:66;583:4371:98;;;13248:10:66;13189:136;;13105:230;;;13189:136;13303:7;;;;;;:::i;:::-;13189:136;;;9791:234;9838:14;;;;:::i;:::-;583:4371:98;;;;;;;14439:109:66;9702:17;14439:109;583:4371:98;14439:109:66;;;9702:17;14439:109;;583:4371:98;;;;;9870:48:66;9866:149;583:4371:98;;;9938:10:66;9866:149;9791:234;;;9866:149;9993:7;;;;;:::i;:::-;9866:149;;;583:4371:98;;;;;;;;-1:-1:-1;1390:66:55;;-1:-1:-1;1390:66:55;583:4371:98;;-1:-1:-1;583:4371:98;:::o;:::-;;;;;;;;;;;;2078:378:55;2661:4;2625:40;;2679:11;2688:2;2679:11;;2675:69;;583:4371:98;;;;;;:::i;2675:69:55:-;583:4371:98;;-1:-1:-1;;;2713:20:55;;;;;3845:262:59;3929:4;3938:11;-1:-1:-1;;;;;583:4371:98;3921:28:59;;:63;;3845:262;3917:184;;;4007:22;4000:29;:::o;3917:184::-;583:4371:98;;4204:80:59;;;583:4371:98;2079:95:59;583:4371:98;;4226:11:59;583:4371:98;2079:95:59;;583:4371:98;4239:14:59;2079:95;;;583:4371:98;4255:13:59;2079:95;;;583:4371:98;3929:4:59;2079:95;;;583:4371:98;2079:95:59;4204:80;;;;;:::i;:::-;583:4371:98;4194:91:59;;4060:30;:::o;3921:63::-;3970:14;;3953:13;:31;3921:63;;5203:1551:58;;;6283:66;6270:79;;6266:164;;583:4371:98;;;;;;-1:-1:-1;583:4371:98;;;;;;;;;;;;;;;;;;;6541:24:58;;;;;;;;;-1:-1:-1;6541:24:58;-1:-1:-1;;;;;583:4371:98;;6579:20:58;6575:113;;6698:49;-1:-1:-1;6698:49:58;-1:-1:-1;5203:1551:58;:::o;6575:113::-;6615:62;-1:-1:-1;6615:62:58;6541:24;6615:62;-1:-1:-1;6615:62:58;:::o;6266:164::-;6365:54;;;6381:1;6365:54;6385:30;6365:54;;:::o;10695:389:66:-;583:4371:98;;10871:8:66;;;10895:20;;10833:17;10895:20;10833:17;10895:20;10833:17;10895:20;:::o;10867:211::-;583:4371:98;;;;;;;;;;10833:17:66;14439:109;;10833:17;14439:109;;;583:4371:98;11014:1:66;583:4371:98;;;;;;;11030:37:66;:::o;583:4371:98:-;;;;;;;:::o;:::-;;;;;;;;;;;;18080:5181:63;18246:1;18241:6;;;18237:53;;18246:1;19217:14;-1:-1:-1;;;19278:16:63;;;19274:92;;18080:5181;22827:18;22717;22607;22498;22387;22278;23216:28;19383:15;19898:6;19383:15;-1:-1:-1;;;23237:6:63;19383:15;;;19379:90;;18080:5181;19493:7;19486:15;;;19482:90;;18080:5181;19596:7;19589:15;;;19585:89;;18080:5181;19698:6;19691:14;;;19687:87;;18080:5181;19798:6;19791:14;;;19787:87;;18080:5181;19891:14;;19887:61;;18080:5181;20374:1;583:4371:98;18246:1:63;583:4371:98;22284:6:63;;;;:::i;:::-;583:4371:98;;;;;22278:18:63;22393:6;;;;:::i;22387:18::-;22504:6;;;;:::i;22498:18::-;22613:6;;;;:::i;22607:18::-;22723:6;;;;:::i;22717:18::-;22833:6;;;;:::i;22827:18::-;23237:6;;;:::i;:::-;23232:11;;;583:4371:98;23216:28:63;583:4371:98;;18080:5181:63;:::o;19887:61::-;18246:1;583:4371:98;19887:61:63;;19787:87;583:4371:98;;;;;19787:87:63;;;19687;583:4371:98;;;;;19687:87:63;;;19585:89;583:4371:98;;;;;19585:89:63;;;19482:90;583:4371:98;;;;;19482:90:63;;;19379;583:4371:98;;;;;19379:90:63;;;19274:92;-1:-1:-1;;;;583:4371:98;-1:-1:-1;583:4371:98;;;;19274:92:63;;583:4371:98;;;-1:-1:-1;;;583:4371:98;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;583:4371:98;;;;;;;;;:::o;:::-;;;;;;;;;;;;11657:922:66;583:4371:98;;11657:922:66;;;11864:7;;;;11936;11916:28;11936:7;;:::i;:::-;11916:28;14439:109;;;;;;14289:265;;11916:28;583:4371:98;;;;;;;;;;;12103:13:66;;;;12099:89;;12251:14;;;-1:-1:-1;;583:4371:98;;;;;;12285:19:66;583:4371:98;;12423:25:66;583:4371:98;12423:25:66;:::o;12247:163::-;12343:52;583:4371:98;;12353:41:66;583:4371:98;;:::i;:::-;;;;;;;;12353:41:66;583:4371:98;12353:41:66;;;583:4371:98;12343:52:66;:::i;:::-;12247:163;;12099:89;583:4371:98;;-1:-1:-1;;;12143:30:66;;;;;11860:713;583:4371:98;12479:52:66;583:4371:98;12489:41:66;583:4371:98;;:::i;12479:52:66:-;583:4371:98;12545:17:66;583:4371:98;12545:17:66;:::o;11657:922::-;583:4371:98;;11657:922:66;;;11864:7;;;;11936;11916:28;11936:7;;:::i;11916:28::-;583:4371:98;;;;;;;;;;;12103:13:66;;;;12099:89;;12251:14;;;-1:-1:-1;;583:4371:98;;;;;;;;12285:19:66;583:4371:98;;12423:25:66;583:4371:98;12423:25:66;:::o;12247:163::-;12343:52;583:4371:98;;12353:41:66;583:4371:98;;:::i;12353:41:66:-;583:4371:98;12353:41:66;;;583:4371:98;12343:52:66;:::i;:::-;12247:163;;11860:713;583:4371:98;12479:52:66;583:4371:98;12489:41:66;583:4371:98;;:::i;12479:52:66:-;11870:1;12545:17;583:4371:98;12545:17:66;:::o","linkReferences":{},"immutableReferences":{"49086":[{"start":4601,"length":32}],"49088":[{"start":4788,"length":32}],"49090":[{"start":4547,"length":32}],"49092":[{"start":4680,"length":32}],"49094":[{"start":4718,"length":32}],"49097":[{"start":733,"length":32}],"49100":[{"start":774,"length":32}],"63921":[{"start":1497,"length":32},{"start":3118,"length":32}],"63924":[{"start":590,"length":32},{"start":3201,"length":32}]}},"methodIdentifiers":{"WHERE_REGISTRY()":"6d0fae4a","WHO_REGISTRY()":"c4b5d62c","eip712Domain()":"84b0196e","increaseNonce(address)":"8247a97c","isOptedIn(address,address)":"220d32d4","isOptedInAt(address,address,uint48,bytes)":"530e1d43","nonces(address,address)":"9333fbda","optIn(address)":"b1138ad1","optIn(address,address,uint48,bytes)":"ced44ba7","optOut(address)":"d4610483","optOut(address,address,uint48,bytes)":"93f79bc3","staticDelegateCall(address,bytes)":"9f86fd85"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"whoRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"whereRegistry\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AlreadyOptedIn\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CheckpointUnorderedInsertion\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpiredSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidShortString\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotOptedIn\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotWhereEntity\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotWho\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OptOutCooldown\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"str\",\"type\":\"string\"}],\"name\":\"StringTooLong\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EIP712DomainChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"}],\"name\":\"IncreaseNonce\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"}],\"name\":\"OptIn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"}],\"name\":\"OptOut\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"WHERE_REGISTRY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WHO_REGISTRY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"}],\"name\":\"increaseNonce\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"}],\"name\":\"isOptedIn\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"isOptedInAt\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"}],\"name\":\"optIn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"deadline\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"optIn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"deadline\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"optOut\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"}],\"name\":\"optOut\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"staticDelegateCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"CheckpointUnorderedInsertion()\":[{\"details\":\"A value was attempted to be inserted on a past checkpoint.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}]},\"events\":{\"EIP712DomainChanged()\":{\"details\":\"MAY be emitted to signal that the domain could have changed.\"},\"IncreaseNonce(address,address)\":{\"params\":{\"where\":\"address of the \\\"where\\\" entity\",\"who\":\"address of the \\\"who\\\"\"}},\"OptIn(address,address)\":{\"params\":{\"where\":\"address of the \\\"where\\\" entity\",\"who\":\"address of the \\\"who\\\"\"}},\"OptOut(address,address)\":{\"params\":{\"where\":\"address of the \\\"where\\\" entity\",\"who\":\"address of the \\\"who\\\"\"}}},\"kind\":\"dev\",\"methods\":{\"eip712Domain()\":{\"details\":\"See {IERC-5267}.\"},\"increaseNonce(address)\":{\"details\":\"It can be used to invalidate a given signature.\",\"params\":{\"where\":\"address of the \\\"where\\\" entity\"}},\"isOptedIn(address,address)\":{\"params\":{\"where\":\"address of the \\\"where\\\" entity\",\"who\":\"address of the \\\"who\\\"\"},\"returns\":{\"_0\":\"if the \\\"who\\\" is opted-in\"}},\"isOptedInAt(address,address,uint48,bytes)\":{\"params\":{\"hint\":\"hint for the checkpoint index\",\"timestamp\":\"time point to get if the \\\"who\\\" is opted-in at\",\"where\":\"address of the \\\"where\\\" entity\",\"who\":\"address of the \\\"who\\\"\"},\"returns\":{\"_0\":\"if the \\\"who\\\" is opted-in at the given timestamp\"}},\"optIn(address)\":{\"params\":{\"where\":\"address of the \\\"where\\\" entity\"}},\"optIn(address,address,uint48,bytes)\":{\"params\":{\"deadline\":\"time point until the signature is valid (inclusively)\",\"signature\":\"signature of the \\\"who\\\"\",\"where\":\"address of the \\\"where\\\" entity\",\"who\":\"address of the \\\"who\\\"\"}},\"optOut(address)\":{\"params\":{\"where\":\"address of the \\\"where\\\" entity\"}},\"optOut(address,address,uint48,bytes)\":{\"params\":{\"deadline\":\"time point until the signature is valid (inclusively)\",\"signature\":\"signature of the \\\"who\\\"\",\"where\":\"address of the \\\"where\\\" entity\",\"who\":\"address of the \\\"who\\\"\"}},\"staticDelegateCall(address,bytes)\":{\"details\":\"It allows to use this contract's storage on-chain.\",\"params\":{\"data\":\"data to make a delegatecall with\",\"target\":\"address of the contract to make a delegatecall to\"}}},\"stateVariables\":{\"WHERE_REGISTRY\":{\"return\":\"address of the \\\"where\\\" registry\",\"returns\":{\"_0\":\"address of the \\\"where\\\" registry\"}},\"WHO_REGISTRY\":{\"return\":\"address of the \\\"who\\\" registry\",\"returns\":{\"_0\":\"address of the \\\"who\\\" registry\"}},\"nonces\":{\"params\":{\"where\":\"address of the \\\"where\\\" entity\",\"who\":\"address of the \\\"who\\\"\"},\"return\":\"nonce\",\"returns\":{\"nonce\":\"nonce\"}}},\"version\":1},\"userdoc\":{\"events\":{\"IncreaseNonce(address,address)\":{\"notice\":\"Emitted when the nonce of a \\\"who\\\" to a \\\"where\\\" entity is increased.\"},\"OptIn(address,address)\":{\"notice\":\"Emitted when a \\\"who\\\" opts into a \\\"where\\\" entity.\"},\"OptOut(address,address)\":{\"notice\":\"Emitted when a \\\"who\\\" opts out from a \\\"where\\\" entity.\"}},\"kind\":\"user\",\"methods\":{\"WHERE_REGISTRY()\":{\"notice\":\"Get the address of the registry where to opt-in.\"},\"WHO_REGISTRY()\":{\"notice\":\"Get the \\\"who\\\" registry's address.\"},\"increaseNonce(address)\":{\"notice\":\"Increase the nonce of a given \\\"who\\\" to a particular \\\"where\\\" entity.\"},\"isOptedIn(address,address)\":{\"notice\":\"Check if a given \\\"who\\\" is opted-in to a particular \\\"where\\\" entity.\"},\"isOptedInAt(address,address,uint48,bytes)\":{\"notice\":\"Get if a given \\\"who\\\" is opted-in to a particular \\\"where\\\" entity at a given timestamp using a hint.\"},\"nonces(address,address)\":{\"notice\":\"Get the nonce of a given \\\"who\\\" to a particular \\\"where\\\" entity.\"},\"optIn(address)\":{\"notice\":\"Opt-in a calling \\\"who\\\" to a particular \\\"where\\\" entity.\"},\"optIn(address,address,uint48,bytes)\":{\"notice\":\"Opt-in a \\\"who\\\" to a particular \\\"where\\\" entity with a signature.\"},\"optOut(address)\":{\"notice\":\"Opt-out a calling \\\"who\\\" from a particular \\\"where\\\" entity.\"},\"optOut(address,address,uint48,bytes)\":{\"notice\":\"Opt-out a \\\"who\\\" from a particular \\\"where\\\" entity with a signature.\"},\"staticDelegateCall(address,bytes)\":{\"notice\":\"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data).\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/service/OptInService.sol\":\"OptInService\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol\":{\"keccak256\":\"0x4aaaf1c0737dd16e81f0d2b9833c549747a5ede6873bf1444bc72aa572d03e98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eada27d7668eebaea16c3b890aa1b38ffc53965292e26c96f7c44834623f4710\",\"dweb:/ipfs/QmVSWuLtxyCqNbLyY89ptxkvsk4CLLKDQYigEne5Qj8k1L\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x7d94fa0af099a2172eb01f9c8a8a443cbe7e0e43654841563e4e09968efdb549\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65e38fb76b6add407d4557753ae83dd1268e8261195dbe5c19a580d5ba6e4e9a\",\"dweb:/ipfs/QmTkGSJtaQrqjcyWM4AgemeEmKgtDydKPPVRajsUJRQSrK\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0\",\"dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x10eb97d047f8d84fe263a02bb4a656ac6674f6679d74532cc37546289e073a9d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3e41287d40b0c46982f1083d40d32de2761f009c5c51627fe79a7feb0ab1cf5c\",\"dweb:/ipfs/Qme7dbh6HX3ZvUJdbQAcVqXkmyXyfcLiUZRhhon3cU6K8p\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e\",\"dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/SignatureChecker.sol\":{\"keccak256\":\"0xbdc3bb48ccedb818cd75a6d74a16df55a822e9f6d3cc54c59f576f10aab67b5f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2284f25f2478f419d7781573b17a89d0e7c5589a865d55e2d6ed5163aee23aa8\",\"dweb:/ipfs/QmNsr2625APBQiNKpYnX5VcSnYgfUHR9Uzzp9pRXjoDqK7\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44\",\"dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6\",\"dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza\"]},\"src/contracts/common/StaticDelegateCallable.sol\":{\"keccak256\":\"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764\",\"dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD\"]},\"src/contracts/libraries/Checkpoints.sol\":{\"keccak256\":\"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609\",\"dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE\"]},\"src/contracts/service/OptInService.sol\":{\"keccak256\":\"0x4e0932077f2686b7990e10d59deb2535334c0d09e52ef6e57c6ab09eca21c4b1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7c00d311032ed4a1743aca7475f3c86ce15cdfc2218108efc3731c03d34a5278\",\"dweb:/ipfs/QmUGGfVwVhaHr5kS4177yKKYiLYzi5qZpkEmvYxBZqazxf\"]},\"src/interfaces/common/IRegistry.sol\":{\"keccak256\":\"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014\",\"dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK\"]},\"src/interfaces/common/IStaticDelegateCallable.sol\":{\"keccak256\":\"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516\",\"dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi\"]},\"src/interfaces/service/IOptInService.sol\":{\"keccak256\":\"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337\",\"dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"whoRegistry","type":"address"},{"internalType":"address","name":"whereRegistry","type":"address"},{"internalType":"string","name":"name","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AlreadyOptedIn"},{"inputs":[],"type":"error","name":"CheckpointUnorderedInsertion"},{"inputs":[],"type":"error","name":"ExpiredSignature"},{"inputs":[],"type":"error","name":"InvalidShortString"},{"inputs":[],"type":"error","name":"InvalidSignature"},{"inputs":[],"type":"error","name":"NotOptedIn"},{"inputs":[],"type":"error","name":"NotWhereEntity"},{"inputs":[],"type":"error","name":"NotWho"},{"inputs":[],"type":"error","name":"OptOutCooldown"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintDowncast"},{"inputs":[{"internalType":"string","name":"str","type":"string"}],"type":"error","name":"StringTooLong"},{"inputs":[],"type":"event","name":"EIP712DomainChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":true},{"internalType":"address","name":"where","type":"address","indexed":true}],"type":"event","name":"IncreaseNonce","anonymous":false},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":true},{"internalType":"address","name":"where","type":"address","indexed":true}],"type":"event","name":"OptIn","anonymous":false},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":true},{"internalType":"address","name":"where","type":"address","indexed":true}],"type":"event","name":"OptOut","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"WHERE_REGISTRY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"WHO_REGISTRY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"eip712Domain","outputs":[{"internalType":"bytes1","name":"fields","type":"bytes1"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"version","type":"string"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"verifyingContract","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256[]","name":"extensions","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"where","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"increaseNonce"},{"inputs":[{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"where","type":"address"}],"stateMutability":"view","type":"function","name":"isOptedIn","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"where","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"isOptedInAt","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"where","type":"address"}],"stateMutability":"view","type":"function","name":"nonces","outputs":[{"internalType":"uint256","name":"nonce","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"where","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"optIn"},{"inputs":[{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"where","type":"address"},{"internalType":"uint48","name":"deadline","type":"uint48"},{"internalType":"bytes","name":"signature","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"optIn"},{"inputs":[{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"where","type":"address"},{"internalType":"uint48","name":"deadline","type":"uint48"},{"internalType":"bytes","name":"signature","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"optOut"},{"inputs":[{"internalType":"address","name":"where","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"optOut"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"staticDelegateCall"}],"devdoc":{"kind":"dev","methods":{"eip712Domain()":{"details":"See {IERC-5267}."},"increaseNonce(address)":{"details":"It can be used to invalidate a given signature.","params":{"where":"address of the \"where\" entity"}},"isOptedIn(address,address)":{"params":{"where":"address of the \"where\" entity","who":"address of the \"who\""},"returns":{"_0":"if the \"who\" is opted-in"}},"isOptedInAt(address,address,uint48,bytes)":{"params":{"hint":"hint for the checkpoint index","timestamp":"time point to get if the \"who\" is opted-in at","where":"address of the \"where\" entity","who":"address of the \"who\""},"returns":{"_0":"if the \"who\" is opted-in at the given timestamp"}},"optIn(address)":{"params":{"where":"address of the \"where\" entity"}},"optIn(address,address,uint48,bytes)":{"params":{"deadline":"time point until the signature is valid (inclusively)","signature":"signature of the \"who\"","where":"address of the \"where\" entity","who":"address of the \"who\""}},"optOut(address)":{"params":{"where":"address of the \"where\" entity"}},"optOut(address,address,uint48,bytes)":{"params":{"deadline":"time point until the signature is valid (inclusively)","signature":"signature of the \"who\"","where":"address of the \"where\" entity","who":"address of the \"who\""}},"staticDelegateCall(address,bytes)":{"details":"It allows to use this contract's storage on-chain.","params":{"data":"data to make a delegatecall with","target":"address of the contract to make a delegatecall to"}}},"version":1},"userdoc":{"kind":"user","methods":{"WHERE_REGISTRY()":{"notice":"Get the address of the registry where to opt-in."},"WHO_REGISTRY()":{"notice":"Get the \"who\" registry's address."},"increaseNonce(address)":{"notice":"Increase the nonce of a given \"who\" to a particular \"where\" entity."},"isOptedIn(address,address)":{"notice":"Check if a given \"who\" is opted-in to a particular \"where\" entity."},"isOptedInAt(address,address,uint48,bytes)":{"notice":"Get if a given \"who\" is opted-in to a particular \"where\" entity at a given timestamp using a hint."},"nonces(address,address)":{"notice":"Get the nonce of a given \"who\" to a particular \"where\" entity."},"optIn(address)":{"notice":"Opt-in a calling \"who\" to a particular \"where\" entity."},"optIn(address,address,uint48,bytes)":{"notice":"Opt-in a \"who\" to a particular \"where\" entity with a signature."},"optOut(address)":{"notice":"Opt-out a calling \"who\" from a particular \"where\" entity."},"optOut(address,address,uint48,bytes)":{"notice":"Opt-out a \"who\" from a particular \"where\" entity with a signature."},"staticDelegateCall(address,bytes)":{"notice":"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data)."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/service/OptInService.sol":"OptInService"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol":{"keccak256":"0x4aaaf1c0737dd16e81f0d2b9833c549747a5ede6873bf1444bc72aa572d03e98","urls":["bzz-raw://eada27d7668eebaea16c3b890aa1b38ffc53965292e26c96f7c44834623f4710","dweb:/ipfs/QmVSWuLtxyCqNbLyY89ptxkvsk4CLLKDQYigEne5Qj8k1L"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol":{"keccak256":"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92","urls":["bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a","dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol":{"keccak256":"0x7d94fa0af099a2172eb01f9c8a8a443cbe7e0e43654841563e4e09968efdb549","urls":["bzz-raw://65e38fb76b6add407d4557753ae83dd1268e8261195dbe5c19a580d5ba6e4e9a","dweb:/ipfs/QmTkGSJtaQrqjcyWM4AgemeEmKgtDydKPPVRajsUJRQSrK"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed","urls":["bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0","dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84","urls":["bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9","dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol":{"keccak256":"0x10eb97d047f8d84fe263a02bb4a656ac6674f6679d74532cc37546289e073a9d","urls":["bzz-raw://3e41287d40b0c46982f1083d40d32de2761f009c5c51627fe79a7feb0ab1cf5c","dweb:/ipfs/Qme7dbh6HX3ZvUJdbQAcVqXkmyXyfcLiUZRhhon3cU6K8p"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575","urls":["bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e","dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/SignatureChecker.sol":{"keccak256":"0xbdc3bb48ccedb818cd75a6d74a16df55a822e9f6d3cc54c59f576f10aab67b5f","urls":["bzz-raw://2284f25f2478f419d7781573b17a89d0e7c5589a865d55e2d6ed5163aee23aa8","dweb:/ipfs/QmNsr2625APBQiNKpYnX5VcSnYgfUHR9Uzzp9pRXjoDqK7"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3","urls":["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03","dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol":{"keccak256":"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f","urls":["bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44","dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc","urls":["bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6","dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza"],"license":"MIT"},"src/contracts/common/StaticDelegateCallable.sol":{"keccak256":"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90","urls":["bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764","dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD"],"license":"BUSL-1.1"},"src/contracts/libraries/Checkpoints.sol":{"keccak256":"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c","urls":["bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609","dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE"],"license":"MIT"},"src/contracts/service/OptInService.sol":{"keccak256":"0x4e0932077f2686b7990e10d59deb2535334c0d09e52ef6e57c6ab09eca21c4b1","urls":["bzz-raw://7c00d311032ed4a1743aca7475f3c86ce15cdfc2218108efc3731c03d34a5278","dweb:/ipfs/QmUGGfVwVhaHr5kS4177yKKYiLYzi5qZpkEmvYxBZqazxf"],"license":"BUSL-1.1"},"src/interfaces/common/IRegistry.sol":{"keccak256":"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb","urls":["bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014","dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK"],"license":"MIT"},"src/interfaces/common/IStaticDelegateCallable.sol":{"keccak256":"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5","urls":["bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516","dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi"],"license":"MIT"},"src/interfaces/service/IOptInService.sol":{"keccak256":"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a","urls":["bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337","dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24"],"license":"MIT"}},"version":1},"id":98} \ No newline at end of file diff --git a/out/OptInServiceHints.sol/OptInServiceHints.json b/out/OptInServiceHints.sol/OptInServiceHints.json index 57794bb8..db25171e 100644 --- a/out/OptInServiceHints.sol/OptInServiceHints.json +++ b/out/OptInServiceHints.sol/OptInServiceHints.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"WHERE_REGISTRY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"WHO_REGISTRY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"eip712Domain","inputs":[],"outputs":[{"name":"fields","type":"bytes1","internalType":"bytes1"},{"name":"name","type":"string","internalType":"string"},{"name":"version","type":"string","internalType":"string"},{"name":"chainId","type":"uint256","internalType":"uint256"},{"name":"verifyingContract","type":"address","internalType":"address"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"extensions","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"increaseNonce","inputs":[{"name":"where","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isOptedIn","inputs":[{"name":"who","type":"address","internalType":"address"},{"name":"where","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isOptedInAt","inputs":[{"name":"who","type":"address","internalType":"address"},{"name":"where","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"nonces","inputs":[{"name":"who","type":"address","internalType":"address"},{"name":"where","type":"address","internalType":"address"}],"outputs":[{"name":"nonce","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"optIn","inputs":[{"name":"where","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"optIn","inputs":[{"name":"who","type":"address","internalType":"address"},{"name":"where","type":"address","internalType":"address"},{"name":"deadline","type":"uint48","internalType":"uint48"},{"name":"signature","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"optInHint","inputs":[{"name":"optInService","type":"address","internalType":"address"},{"name":"who","type":"address","internalType":"address"},{"name":"where","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"optInHintInternal","inputs":[{"name":"who","type":"address","internalType":"address"},{"name":"where","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"exists","type":"bool","internalType":"bool"},{"name":"hint","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"optOut","inputs":[{"name":"who","type":"address","internalType":"address"},{"name":"where","type":"address","internalType":"address"},{"name":"deadline","type":"uint48","internalType":"uint48"},{"name":"signature","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"optOut","inputs":[{"name":"where","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"staticDelegateCall","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"EIP712DomainChanged","inputs":[],"anonymous":false},{"type":"event","name":"IncreaseNonce","inputs":[{"name":"who","type":"address","indexed":true,"internalType":"address"},{"name":"where","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OptIn","inputs":[{"name":"who","type":"address","indexed":true,"internalType":"address"},{"name":"where","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OptOut","inputs":[{"name":"who","type":"address","indexed":true,"internalType":"address"},{"name":"where","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AlreadyOptedIn","inputs":[]},{"type":"error","name":"CheckpointUnorderedInsertion","inputs":[]},{"type":"error","name":"ExpiredSignature","inputs":[]},{"type":"error","name":"ExternalCall","inputs":[]},{"type":"error","name":"InvalidShortString","inputs":[]},{"type":"error","name":"InvalidSignature","inputs":[]},{"type":"error","name":"NotOptedIn","inputs":[]},{"type":"error","name":"NotWhereEntity","inputs":[]},{"type":"error","name":"NotWho","inputs":[]},{"type":"error","name":"OptOutCooldown","inputs":[]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"StringTooLong","inputs":[{"name":"str","type":"string","internalType":"string"}]}],"bytecode":{"object":"0x6101c034610171576001600160401b03602082018181118382101761015d576040908082525f84528151938285018581108582111761015d5783526001855260208501603160f81b81523060805261005682610175565b926101409384526100668761030c565b926101609384525190209061010096828852519020610120948186524660c05280519160208301937f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f85528284015260608301524660808301523060a083015260a0825260c08201968288109088111761015d5786905251902060a0523060e052610180915f83526101a0935f8552611b9d9687610443883960805187610571015260a05187611770015260c0518761182b015260e0518761173a015251866117bf015251856117e5015251846102fd015251836103260152518281816106c1015261104e01525181818161026e01526110a10152f35b634e487b7160e01b5f52604160045260245ffd5b5f80fd5b8051602090818110156101eb5750601f8251116101ad578082519201519080831061019f57501790565b825f19910360031b1b161790565b60448260405192839163305a27a960e01b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fd5b906001600160401b03821161015d575f54926001938481811c91168015610302575b838210146102ee57601f81116102bb575b5081601f841160011461025957509282939183925f9461024e575b50501b915f199060031b1c1916175f5560ff90565b015192505f80610239565b919083601f1981165f8052845f20945f905b888383106102a15750505010610289575b505050811b015f5560ff90565b01515f1960f88460031b161c191690555f808061027c565b85870151885590960195948501948793509081019061026b565b5f805284601f845f20920160051c820191601f860160051c015b8281106102e357505061021e565b5f81550185906102d5565b634e487b7160e01b5f52602260045260245ffd5b90607f169061020d565b8051602090818110156103365750601f8251116101ad578082519201519080831061019f57501790565b9192916001600160401b03811161015d5760019182548381811c91168015610438575b828210146102ee57601f8111610405575b5080601f83116001146103a55750819293945f9261039a575b50505f19600383901b1c191690821b17905560ff90565b015190505f80610383565b90601f19831695845f52825f20925f905b8882106103ee57505083859697106103d6575b505050811b01905560ff90565b01515f1960f88460031b161c191690555f80806103c9565b8087859682949686015181550195019301906103b6565b835f5283601f835f20920160051c820191601f850160051c015b82811061042d57505061036a565b5f815501849061041f565b90607f169061035956fe60806040526004361015610011575f80fd5b5f3560e01c8063220d32d4146100f4578063530e1d43146100ef5780636d0fae4a146100ea5780638247a97c146100e557806384b0196e146100e05780639333fbda146100db57806393f79bc3146100d65780639a15d7a5146100d15780639f86fd85146100cc578063b1138ad1146100c7578063c4b5d62c146100c2578063ced44ba7146100bd578063d4610483146100b85763d4a63862146100b3575f80fd5b6107d6565b6107b4565b6106f0565b6106ac565b61068a565b6105f9565b610531565b610432565b6103db565b6102e5565b61029d565b610259565b6101f3565b610129565b600435906001600160a01b038216820361010f57565b5f80fd5b602435906001600160a01b038216820361010f57565b3461010f57604036600319011261010f5760206101556101476100f9565b61014f610113565b9061083f565b6040519015158152f35b9181601f8401121561010f5782359167ffffffffffffffff831161010f576020838186019501011161010f57565b90608060031983011261010f576001600160a01b0391600435838116810361010f5792602435908116810361010f579160443565ffffffffffff8116810361010f57916064359067ffffffffffffffff821161010f576101ef9160040161015f565b9091565b3461010f576020600161024961024f61023a61020e3661018d565b969290949193888060a01b03165f526003895260405f209060018060a01b03165f5260205260405f2090565b92868060d01b03953691610978565b91610bd6565b1614604051908152f35b3461010f575f36600319011261010f576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461010f57602036600319011261010f576102bf6102b96100f9565b33610ccf565b005b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b3461010f575f36600319011261010f5761037e6103217f000000000000000000000000000000000000000000000000000000000000000061123f565b61034a7f000000000000000000000000000000000000000000000000000000000000000061133d565b60405190610357826108d7565b5f825261038c602091604051958695600f60f81b875260e0602088015260e08701906102c1565b9085820360408701526102c1565b4660608501523060808501525f60a085015283810360c0850152602080845192838152019301915f5b8281106103c457505050500390f35b8351855286955093810193928101926001016103b5565b3461010f57604036600319011261010f5760206104296103f96100f9565b610401610113565b6001600160a01b039182165f9081526002855260408082209290931681526020919091522090565b54604051908152f35b3461010f576104403661018d565b909165ffffffffffff8061045342611406565b16911690811061051f576104ff926104f06104f89260018060a01b0380891691825f5260026020526104988960405f209060018060a01b03165f5260205260405f2090565b546040519260208401947f7830334d17a05ab8aeca8f1778e27182208fc2d454ac7b38a4edc2069ee3a4a6865260408501528a166060840152608083015260a082015260a081526104e8816108f3565b519020611438565b923691610978565b9084610d25565b1561050d576102bf91610e01565b604051638baa579f60e01b8152600490fd5b60405163df4cc36d60e01b8152600490fd5b3461010f57606036600319011261010f5761054a6100f9565b610552610113565b906044359065ffffffffffff8216820361010f576001600160a01b03927f0000000000000000000000000000000000000000000000000000000000000000841633036105e7576105c6936105c192165f52600360205260405f209060018060a01b03165f5260205260405f2090565b610f2c565b60408051941515855263ffffffff91909116602085015292915050f35b0390f35b604051637ca475e560e11b8152600490fd5b3461010f57604036600319011261010f576106126100f9565b60243567ffffffffffffffff811161010f575f916106358392369060040161015f565b90816040519283928337810184815203915af46106826106536109ae565b916106746040519384921515602084015260408084015260608301906102c1565b03601f19810183528261092b565b805190602001fd5b3461010f57602036600319011261010f576102bf6106a66100f9565b33611022565b3461010f575f36600319011261010f576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461010f576106fe3661018d565b909165ffffffffffff8061071142611406565b16911690811061051f576107a6926104f06104f89260018060a01b0380891691825f5260026020526107568960405f209060018060a01b03165f5260205260405f2090565b546040519260208401947f6ab5200f1123a8d51d1695a9e5e757267926b53c6359f90b8873cc7dcc30ea2c865260408501528a166060840152608083015260a082015260a081526104e8816108f3565b1561050d576102bf91611022565b3461010f57602036600319011261010f576102bf6107d06100f9565b33610e01565b3461010f57608036600319011261010f576107ef6100f9565b6107f7610113565b906044356001600160a01b038116810361010f576064359065ffffffffffff8216820361010f576105e39361082b93610a1f565b6040519182916020835260208301906102c1565b6001600160a01b039081165f908152600360209081526040808320939094168252919091522080548061087d57505060015f5b818060d01b03161490565b5f1990808281011161089d576001925f5260205f2001015460301c610872565b610b9f565b634e487b7160e01b5f52604160045260245ffd5b6040810190811067ffffffffffffffff8211176108d257604052565b6108a2565b6020810190811067ffffffffffffffff8211176108d257604052565b60c0810190811067ffffffffffffffff8211176108d257604052565b60a0810190811067ffffffffffffffff8211176108d257604052565b90601f8019910116810190811067ffffffffffffffff8211176108d257604052565b6040519061095a826108b6565b565b67ffffffffffffffff81116108d257601f01601f191660200190565b9291926109848261095c565b91610992604051938461092b565b82948184528183011161010f578281602093845f960137010152565b3d156109d8573d906109bf8261095c565b916109cd604051938461092b565b82523d5f602084013e565b606090565b5190811515820361010f57565b519063ffffffff8216820361010f57565b919082604091031261010f57610a1c6020610a15846109dd565b93016109ea565b90565b9392915f8060609665ffffffffffff604096875196602096639a15d7a560e01b888a015260018060a01b0380921660248a015216604488015216606486015260648552610a6b8561090f565b85519485610a9686820192639f86fd8560e01b845230602484015289604484015260648301906102c1565b0395610aaa601f199788810183528261092b565b51915afa50610ab76109ae565b8051810190848184840193031261010f57610ad38382016109dd565b90858101519067ffffffffffffffff821161010f57019082603f8301121561010f5783820151610b028161095c565b92610b0f8851948561092b565b8184528584019488838301011161010f57815f9289889301875e8401015215610b7d57908282610b4293510101906109fb565b9390610b4e5750505050565b610a1c93949550610b719051948592830191909163ffffffff6020820193169052565b0390810183528261092b565b8091505191821561010f5701fd5b9081602091031261010f57610a1c906109ea565b634e487b7160e01b5f52601160045260245ffd5b5f1981019190821161089d57565b90600163ffffffff8093160191821161089d57565b91805115610cc55780602080610bf193518301019101610b8b565b91610bfc83826111eb565b92610c0d845165ffffffffffff1690565b9065ffffffffffff8085169216828114610cac5782119182610c4c575b5050610c3a57610a1c9250611656565b5050602001516001600160d01b031690565b909150610c598354610bb3565b63ffffffff831614918215610c72575b50505f80610c2a565b610ca4919250610c8d610c87610c9992610bc1565b856111eb565b5165ffffffffffff1690565b65ffffffffffff1690565b115f80610c69565b50505050602091909101516001600160d01b0316905090565b50610a1c91611656565b6001600160a01b039081165f8181526002602090815260408083209590941680835294905291822080546001019055907f8ed32926585579e6191b145240df788165f4957e1135f30a00e08ee8feb9d6809080a3565b610d2f838361145e565b506004819592951015610ded57159384610dd7575b508315610d52575b50505090565b5f929350908291604051610d8a816106746020820194630b135d3f60e11b998a875260248401526040604484015260648301906102c1565b51915afa90610d976109ae565b82610dc9575b82610dad575b50505f8080610d4c565b90915060208180518101031261010f5760200151145f80610da3565b915060208251101591610d9d565b6001600160a01b0383811691161493505f610d44565b634e487b7160e01b5f52602160045260245ffd5b90610e3d610e3882610e238560018060a01b03165f52600360205260405f2090565b9060018060a01b03165f5260205260405f2090565b6118d3565b9091506001600160d01b031615610ee85765ffffffffffff80610e5f42611406565b16911614610ed657610e97610e8882610e238560018060a01b03165f52600360205260405f2090565b610e9142611406565b90611994565b5050610ea38183610ccf565b6001600160a01b0390811691167f1629cd9ad365627cf8408d19c50224af8f3213c1a18ae48062d92e22bddf7de55f80a3565b60405163291bf4b760e21b8152600490fd5b6040516334b09b3960e11b8152600490fd5b906001820180921161089d57565b90604051610f15816108b6565b915465ffffffffffff8116835260301c6020830152565b908154905f829160058411610fb5575b610f479350846115f4565b908115610fa957610f6890610f5b83610bb3565b905f5260205f2001610f08565b91610fa2610f99610f936020610f84875165ffffffffffff1690565b9601516001600160d01b031690565b93610bb3565b63ffffffff1690565b6001939291565b50505f905f905f905f90565b9192610fc0816114b6565b810390811161089d57610f4793855f5265ffffffffffff808360205f20015416908516105f14610ff1575091610f3c565b929150610ffd90610efa565b90610f3c565b9081602091031261010f57610a1c906109dd565b6040513d5f823e3d90fd5b6040516302910f8b60e31b8082526001600160a01b0383811660048401529293916020919082816024817f000000000000000000000000000000000000000000000000000000000000000089165afa90811561119f575f916111b6575b50156111a4576040519081526001600160a01b038316600482015281816024817f000000000000000000000000000000000000000000000000000000000000000088165afa91821561119f575f92611172575b505015611160576110e3818461083f565b61114e578061111961110a8493610e238760018060a01b03165f52600360205260405f2090565b61111342611406565b90611a9e565b50506111258185610ccf565b1691167f9b730d5b907ee509de729817a2bb37e404418ba569b3a50f36192372f973cb415f80a3565b60405163dcdeaba360e01b8152600490fd5b6040516321f5408d60e01b8152600490fd5b6111919250803d10611198575b611189818361092b565b810190611003565b5f806110d2565b503d61117f565b611017565b604051630fb9ff9560e41b8152600490fd5b6111cd9150833d851161119857611189818361092b565b5f61107f565b604051906111e0826108b6565b5f6020838281520152565b6112109161120a916111fb6111d3565b506112046111d3565b506116e2565b50610f08565b65ffffffffffff81511690602060018060d01b039101511660405191611235836108b6565b8252602082015290565b60ff811461125057610a1c9061170b565b506040515f80546001918160011c9260018316908115611333575b60209060208610831461131f578587528694602086019390811561130057506001146112a1575b505050610a1c9250038261092b565b9250936112ce5f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56390565b945f935b8285106112ea57505050610a1c9350015f8080611292565b86548585015295860195879550938101936112d2565b92505050610a1c9491925060ff19168252151560051b015f8080611292565b634e487b7160e01b5f52602260045260245ffd5b93607f169361126b565b60ff811461134e57610a1c9061170b565b506040516001805480821c915f908281169081156113fc575b60209060208610831461131f5785875286946020860193908115611300575060011461139c57505050610a1c9250038261092b565b9250936113ca60015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf690565b945f935b8285106113e657505050610a1c9350015f8080611292565b86548585015295860195879550938101936113ce565b93607f1693611367565b65ffffffffffff90818111611419571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b604290611443611737565b906040519161190160f01b8352600283015260228201522090565b815191906041830361148e576114879250602082015190606060408401519301515f1a90611851565b9192909190565b50505f9160029190565b81156114a2570490565b634e487b7160e01b5f52601260045260245ffd5b80156115ef578061158861158161157761156d61156361155961154f6115456001610a1c9a5f908b60801c806115e3575b508060401c806115d6575b508060201c806115c9575b508060101c806115bc575b508060081c806115af575b508060041c806115a2575b508060021c80611595575b50821c61158e575b811c1b61153e818b611498565b0160011c90565b61153e818a611498565b61153e8189611498565b61153e8188611498565b61153e8187611498565b61153e8186611498565b61153e8185611498565b8092611498565b90611922565b8101611531565b600291509101905f611529565b600491509101905f61151e565b600891509101905f611513565b601091509101905f611508565b602091509101905f6114fd565b604091509101905f6114f2565b9150506080905f6114e7565b505f90565b91905b8382106116045750505090565b909192808316906001818518811c830180931161089d57855f5265ffffffffffff808460205f20015416908516105f14611643575050925b91906115f7565b90949350810180911161089d579161163c565b908154905f829160058411611694575b6116719350846115f4565b8061167c5750505f90565b61168590610bb3565b905f5260205f20015460301c90565b919261169f816114b6565b810390811161089d5761167193855f5265ffffffffffff808360205f20015416908516105f146116d0575091611666565b9291506116dc90610efa565b90611666565b80548210156116f7575f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b60ff811690601f82116117255760405191611235836108b6565b604051632cd44ac360e21b8152600490fd5b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480611828575b15611792577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a08152611822816108f3565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614611769565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084116118c8579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa1561119f575f516001600160a01b038116156118be57905f905f90565b505f906001905f90565b5050505f9160039190565b8054806118e45750505f905f905f90565b5f1990808281011161089d57611901925f5260205f200101610f08565b9065ffffffffffff82511691602060018060d01b0391015116906001929190565b908082101561192f575090565b905090565b8054680100000000000000008110156108d257611956916001820181556116e2565b91909161198157805160209091015160301b65ffffffffffff191665ffffffffffff91909116179055565b634e487b7160e01b5f525f60045260245ffd5b8054908115611a7c576119bc6119b76119ac84610bb3565b835f5260205f200190565b610f08565b906119cd825165ffffffffffff1690565b65ffffffffffff8581169491168410611a6a57611a37946020946119fa610c99865165ffffffffffff1690565b03611a3c5750611a2991611a10611a1b92610bb3565b905f5260205f200190565b65ffffffffffff8154169055565b01516001600160d01b031690565b905f90565b9050611a6591611a5b611a4d61094d565b65ffffffffffff9093168352565b5f85830152611934565b611a29565b604051632520601d60e01b8152600490fd5b611a98929150611a8d611a4d61094d565b5f6020830152611934565b5f905f90565b8054908115611b4357611ab66119b76119ac84610bb3565b90611ac7825165ffffffffffff1690565b65ffffffffffff8581169491168410611a6a57611b2194602094611af4610c99865165ffffffffffff1690565b03611b275750611a2991611a10611b0a92610bb3565b660100000000000065ffffffffffff825416179055565b90600190565b9050611a6591611b38611a4d61094d565b600182860152611934565b611b60929150611b54611a4d61094d565b60016020830152611934565b5f9060019056fea2646970667358221220a2601598b530c384dfaa52fda9ec24334fb67ce73c9d54796027ec5092285f3464736f6c63430008190033","sourceMap":"215:929:83:-:0;;;;-1:-1:-1;;;;;215:929:83;;;;;;;;;;;;;;;;;-1:-1:-1;215:929:83;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;215:929:83;;348:4:82;332:21;;3401:45:52;;;:::i;:::-;3393:53;;;;;3467:51;;;:::i;:::-;3456:62;;;;;215:929:83;3542:22:52;;3528:36;;;;;;215:929:83;3591:25:52;;3574:42;;;;;3644:13;3627:30;;215:929:83;;4204:80:52;215:929:83;4204:80:52;;2079:95;;;;;;;;;;;;3644:13;332:21:82;2079:95:52;;;348:4:82;2079:95:52;;;;;4204:80;;3627:30;215:929:83;;;;;;;;;;;;;;;;4194:91:52;;2079:95;3667:48;348:4:82;3725:27:52;;1675:26:91;;-1:-1:-1;1675:26:91;;1711:30;;-1:-1:-1;1711:30:91;;215:929:83;;;;;;332:21:82;215:929:83;;;;;2079:95:52;215:929:83;;;;;3627:30:52;215:929:83;;;;;3725:27:52;215:929:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;215:929:83;;;;;-1:-1:-1;215:929:83;;;;;2914:340:48;215:929:83;;3059:2:48;;3037:24;;;3059:2;;;215:929:83;1854:2:48;215:929:83;;1840:16:48;1836:72;;215:929:83;;;;;2079:95:52;215:929:83;;;;;;1949:36:48;;3077:27;:::o;215:929:83:-;;;;;;;;;;1949:36:48;3077:27;:::o;1836:72::-;215:929:83;;;;1879:18:48;;;;;;;;;;;;215:929:83;;;;;;;;;;;;;;;;355:1;215:929;;;;;;1854:2:48;215:929:83;-1:-1:-1;;215:929:83;;;1879:18:48;;;;3033:215;215:929:83;-1:-1:-1;;;;;215:929:83;;;;355:1;215:929;;;;;;;;;;;;;;3033:215:48;215:929:83;;;;;;;;;;;3033:215:48;215:929:83;;;;;;;;;;;;;;;;355:1;215:929;;;;;;;;;;;;;;;;;355:1;215:929;1390:66:48;3195:42;:::o;215:929:83:-;;;;-1:-1:-1;215:929:83;;;;;;;;;;;;355:1;215:929;;;355:1;215:929;;355:1;215:929;;;;;;;;;;;;;;;;;;;;;355:1;215:929;1390:66:48;3195:42;:::o;215:929:83:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;215:929:83;;;;;;;355:1;215:929;;;;;355:1;215:929;;;;;;;;;;;;;;;;;;;;;;;;;355:1;215:929;;;;;;;;;;;355:1;215:929;;;;;355:1;215:929;;;;;;;;2914:340:48;215:929:83;;3059:2:48;;3037:24;;;3059:2;;;215:929:83;1854:2:48;215:929:83;;1840:16:48;1836:72;;215:929:83;;;;;2079:95:52;215:929:83;;;;;;1949:36:48;;3077:27;:::o;3033:215::-;215:929:83;;;-1:-1:-1;;;;;215:929:83;;;;;;;;;;;;;;;;;;3033:215:48;215:929:83;;;;;;;;;;;3033:215:48;215:929:83;;;;;;;;;;;;;;-1:-1:-1;215:929:83;;;;-1:-1:-1;;;;215:929:83;;;;;;;;;;;;;1390:66:48;;3195:42::o;215:929:83:-;;;;-1:-1:-1;215:929:83;;;;;;;;;;;;-1:-1:-1;215:929:83;;-1:-1:-1;215:929:83;;-1:-1:-1;215:929:83;;;;;;;;;;;;;;;;;;;;;;;;;1390:66:48;3195:42;:::o;215:929:83:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;215:929:83;;;;-1:-1:-1;215:929:83;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;215:929:83;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c8063220d32d4146100f4578063530e1d43146100ef5780636d0fae4a146100ea5780638247a97c146100e557806384b0196e146100e05780639333fbda146100db57806393f79bc3146100d65780639a15d7a5146100d15780639f86fd85146100cc578063b1138ad1146100c7578063c4b5d62c146100c2578063ced44ba7146100bd578063d4610483146100b85763d4a63862146100b3575f80fd5b6107d6565b6107b4565b6106f0565b6106ac565b61068a565b6105f9565b610531565b610432565b6103db565b6102e5565b61029d565b610259565b6101f3565b610129565b600435906001600160a01b038216820361010f57565b5f80fd5b602435906001600160a01b038216820361010f57565b3461010f57604036600319011261010f5760206101556101476100f9565b61014f610113565b9061083f565b6040519015158152f35b9181601f8401121561010f5782359167ffffffffffffffff831161010f576020838186019501011161010f57565b90608060031983011261010f576001600160a01b0391600435838116810361010f5792602435908116810361010f579160443565ffffffffffff8116810361010f57916064359067ffffffffffffffff821161010f576101ef9160040161015f565b9091565b3461010f576020600161024961024f61023a61020e3661018d565b969290949193888060a01b03165f526003895260405f209060018060a01b03165f5260205260405f2090565b92868060d01b03953691610978565b91610bd6565b1614604051908152f35b3461010f575f36600319011261010f576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461010f57602036600319011261010f576102bf6102b96100f9565b33610ccf565b005b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b3461010f575f36600319011261010f5761037e6103217f000000000000000000000000000000000000000000000000000000000000000061123f565b61034a7f000000000000000000000000000000000000000000000000000000000000000061133d565b60405190610357826108d7565b5f825261038c602091604051958695600f60f81b875260e0602088015260e08701906102c1565b9085820360408701526102c1565b4660608501523060808501525f60a085015283810360c0850152602080845192838152019301915f5b8281106103c457505050500390f35b8351855286955093810193928101926001016103b5565b3461010f57604036600319011261010f5760206104296103f96100f9565b610401610113565b6001600160a01b039182165f9081526002855260408082209290931681526020919091522090565b54604051908152f35b3461010f576104403661018d565b909165ffffffffffff8061045342611406565b16911690811061051f576104ff926104f06104f89260018060a01b0380891691825f5260026020526104988960405f209060018060a01b03165f5260205260405f2090565b546040519260208401947f7830334d17a05ab8aeca8f1778e27182208fc2d454ac7b38a4edc2069ee3a4a6865260408501528a166060840152608083015260a082015260a081526104e8816108f3565b519020611438565b923691610978565b9084610d25565b1561050d576102bf91610e01565b604051638baa579f60e01b8152600490fd5b60405163df4cc36d60e01b8152600490fd5b3461010f57606036600319011261010f5761054a6100f9565b610552610113565b906044359065ffffffffffff8216820361010f576001600160a01b03927f0000000000000000000000000000000000000000000000000000000000000000841633036105e7576105c6936105c192165f52600360205260405f209060018060a01b03165f5260205260405f2090565b610f2c565b60408051941515855263ffffffff91909116602085015292915050f35b0390f35b604051637ca475e560e11b8152600490fd5b3461010f57604036600319011261010f576106126100f9565b60243567ffffffffffffffff811161010f575f916106358392369060040161015f565b90816040519283928337810184815203915af46106826106536109ae565b916106746040519384921515602084015260408084015260608301906102c1565b03601f19810183528261092b565b805190602001fd5b3461010f57602036600319011261010f576102bf6106a66100f9565b33611022565b3461010f575f36600319011261010f576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461010f576106fe3661018d565b909165ffffffffffff8061071142611406565b16911690811061051f576107a6926104f06104f89260018060a01b0380891691825f5260026020526107568960405f209060018060a01b03165f5260205260405f2090565b546040519260208401947f6ab5200f1123a8d51d1695a9e5e757267926b53c6359f90b8873cc7dcc30ea2c865260408501528a166060840152608083015260a082015260a081526104e8816108f3565b1561050d576102bf91611022565b3461010f57602036600319011261010f576102bf6107d06100f9565b33610e01565b3461010f57608036600319011261010f576107ef6100f9565b6107f7610113565b906044356001600160a01b038116810361010f576064359065ffffffffffff8216820361010f576105e39361082b93610a1f565b6040519182916020835260208301906102c1565b6001600160a01b039081165f908152600360209081526040808320939094168252919091522080548061087d57505060015f5b818060d01b03161490565b5f1990808281011161089d576001925f5260205f2001015460301c610872565b610b9f565b634e487b7160e01b5f52604160045260245ffd5b6040810190811067ffffffffffffffff8211176108d257604052565b6108a2565b6020810190811067ffffffffffffffff8211176108d257604052565b60c0810190811067ffffffffffffffff8211176108d257604052565b60a0810190811067ffffffffffffffff8211176108d257604052565b90601f8019910116810190811067ffffffffffffffff8211176108d257604052565b6040519061095a826108b6565b565b67ffffffffffffffff81116108d257601f01601f191660200190565b9291926109848261095c565b91610992604051938461092b565b82948184528183011161010f578281602093845f960137010152565b3d156109d8573d906109bf8261095c565b916109cd604051938461092b565b82523d5f602084013e565b606090565b5190811515820361010f57565b519063ffffffff8216820361010f57565b919082604091031261010f57610a1c6020610a15846109dd565b93016109ea565b90565b9392915f8060609665ffffffffffff604096875196602096639a15d7a560e01b888a015260018060a01b0380921660248a015216604488015216606486015260648552610a6b8561090f565b85519485610a9686820192639f86fd8560e01b845230602484015289604484015260648301906102c1565b0395610aaa601f199788810183528261092b565b51915afa50610ab76109ae565b8051810190848184840193031261010f57610ad38382016109dd565b90858101519067ffffffffffffffff821161010f57019082603f8301121561010f5783820151610b028161095c565b92610b0f8851948561092b565b8184528584019488838301011161010f57815f9289889301875e8401015215610b7d57908282610b4293510101906109fb565b9390610b4e5750505050565b610a1c93949550610b719051948592830191909163ffffffff6020820193169052565b0390810183528261092b565b8091505191821561010f5701fd5b9081602091031261010f57610a1c906109ea565b634e487b7160e01b5f52601160045260245ffd5b5f1981019190821161089d57565b90600163ffffffff8093160191821161089d57565b91805115610cc55780602080610bf193518301019101610b8b565b91610bfc83826111eb565b92610c0d845165ffffffffffff1690565b9065ffffffffffff8085169216828114610cac5782119182610c4c575b5050610c3a57610a1c9250611656565b5050602001516001600160d01b031690565b909150610c598354610bb3565b63ffffffff831614918215610c72575b50505f80610c2a565b610ca4919250610c8d610c87610c9992610bc1565b856111eb565b5165ffffffffffff1690565b65ffffffffffff1690565b115f80610c69565b50505050602091909101516001600160d01b0316905090565b50610a1c91611656565b6001600160a01b039081165f8181526002602090815260408083209590941680835294905291822080546001019055907f8ed32926585579e6191b145240df788165f4957e1135f30a00e08ee8feb9d6809080a3565b610d2f838361145e565b506004819592951015610ded57159384610dd7575b508315610d52575b50505090565b5f929350908291604051610d8a816106746020820194630b135d3f60e11b998a875260248401526040604484015260648301906102c1565b51915afa90610d976109ae565b82610dc9575b82610dad575b50505f8080610d4c565b90915060208180518101031261010f5760200151145f80610da3565b915060208251101591610d9d565b6001600160a01b0383811691161493505f610d44565b634e487b7160e01b5f52602160045260245ffd5b90610e3d610e3882610e238560018060a01b03165f52600360205260405f2090565b9060018060a01b03165f5260205260405f2090565b6118d3565b9091506001600160d01b031615610ee85765ffffffffffff80610e5f42611406565b16911614610ed657610e97610e8882610e238560018060a01b03165f52600360205260405f2090565b610e9142611406565b90611994565b5050610ea38183610ccf565b6001600160a01b0390811691167f1629cd9ad365627cf8408d19c50224af8f3213c1a18ae48062d92e22bddf7de55f80a3565b60405163291bf4b760e21b8152600490fd5b6040516334b09b3960e11b8152600490fd5b906001820180921161089d57565b90604051610f15816108b6565b915465ffffffffffff8116835260301c6020830152565b908154905f829160058411610fb5575b610f479350846115f4565b908115610fa957610f6890610f5b83610bb3565b905f5260205f2001610f08565b91610fa2610f99610f936020610f84875165ffffffffffff1690565b9601516001600160d01b031690565b93610bb3565b63ffffffff1690565b6001939291565b50505f905f905f905f90565b9192610fc0816114b6565b810390811161089d57610f4793855f5265ffffffffffff808360205f20015416908516105f14610ff1575091610f3c565b929150610ffd90610efa565b90610f3c565b9081602091031261010f57610a1c906109dd565b6040513d5f823e3d90fd5b6040516302910f8b60e31b8082526001600160a01b0383811660048401529293916020919082816024817f000000000000000000000000000000000000000000000000000000000000000089165afa90811561119f575f916111b6575b50156111a4576040519081526001600160a01b038316600482015281816024817f000000000000000000000000000000000000000000000000000000000000000088165afa91821561119f575f92611172575b505015611160576110e3818461083f565b61114e578061111961110a8493610e238760018060a01b03165f52600360205260405f2090565b61111342611406565b90611a9e565b50506111258185610ccf565b1691167f9b730d5b907ee509de729817a2bb37e404418ba569b3a50f36192372f973cb415f80a3565b60405163dcdeaba360e01b8152600490fd5b6040516321f5408d60e01b8152600490fd5b6111919250803d10611198575b611189818361092b565b810190611003565b5f806110d2565b503d61117f565b611017565b604051630fb9ff9560e41b8152600490fd5b6111cd9150833d851161119857611189818361092b565b5f61107f565b604051906111e0826108b6565b5f6020838281520152565b6112109161120a916111fb6111d3565b506112046111d3565b506116e2565b50610f08565b65ffffffffffff81511690602060018060d01b039101511660405191611235836108b6565b8252602082015290565b60ff811461125057610a1c9061170b565b506040515f80546001918160011c9260018316908115611333575b60209060208610831461131f578587528694602086019390811561130057506001146112a1575b505050610a1c9250038261092b565b9250936112ce5f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56390565b945f935b8285106112ea57505050610a1c9350015f8080611292565b86548585015295860195879550938101936112d2565b92505050610a1c9491925060ff19168252151560051b015f8080611292565b634e487b7160e01b5f52602260045260245ffd5b93607f169361126b565b60ff811461134e57610a1c9061170b565b506040516001805480821c915f908281169081156113fc575b60209060208610831461131f5785875286946020860193908115611300575060011461139c57505050610a1c9250038261092b565b9250936113ca60015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf690565b945f935b8285106113e657505050610a1c9350015f8080611292565b86548585015295860195879550938101936113ce565b93607f1693611367565b65ffffffffffff90818111611419571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b604290611443611737565b906040519161190160f01b8352600283015260228201522090565b815191906041830361148e576114879250602082015190606060408401519301515f1a90611851565b9192909190565b50505f9160029190565b81156114a2570490565b634e487b7160e01b5f52601260045260245ffd5b80156115ef578061158861158161157761156d61156361155961154f6115456001610a1c9a5f908b60801c806115e3575b508060401c806115d6575b508060201c806115c9575b508060101c806115bc575b508060081c806115af575b508060041c806115a2575b508060021c80611595575b50821c61158e575b811c1b61153e818b611498565b0160011c90565b61153e818a611498565b61153e8189611498565b61153e8188611498565b61153e8187611498565b61153e8186611498565b61153e8185611498565b8092611498565b90611922565b8101611531565b600291509101905f611529565b600491509101905f61151e565b600891509101905f611513565b601091509101905f611508565b602091509101905f6114fd565b604091509101905f6114f2565b9150506080905f6114e7565b505f90565b91905b8382106116045750505090565b909192808316906001818518811c830180931161089d57855f5265ffffffffffff808460205f20015416908516105f14611643575050925b91906115f7565b90949350810180911161089d579161163c565b908154905f829160058411611694575b6116719350846115f4565b8061167c5750505f90565b61168590610bb3565b905f5260205f20015460301c90565b919261169f816114b6565b810390811161089d5761167193855f5265ffffffffffff808360205f20015416908516105f146116d0575091611666565b9291506116dc90610efa565b90611666565b80548210156116f7575f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b60ff811690601f82116117255760405191611235836108b6565b604051632cd44ac360e21b8152600490fd5b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480611828575b15611792577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a08152611822816108f3565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614611769565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084116118c8579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa1561119f575f516001600160a01b038116156118be57905f905f90565b505f906001905f90565b5050505f9160039190565b8054806118e45750505f905f905f90565b5f1990808281011161089d57611901925f5260205f200101610f08565b9065ffffffffffff82511691602060018060d01b0391015116906001929190565b908082101561192f575090565b905090565b8054680100000000000000008110156108d257611956916001820181556116e2565b91909161198157805160209091015160301b65ffffffffffff191665ffffffffffff91909116179055565b634e487b7160e01b5f525f60045260245ffd5b8054908115611a7c576119bc6119b76119ac84610bb3565b835f5260205f200190565b610f08565b906119cd825165ffffffffffff1690565b65ffffffffffff8581169491168410611a6a57611a37946020946119fa610c99865165ffffffffffff1690565b03611a3c5750611a2991611a10611a1b92610bb3565b905f5260205f200190565b65ffffffffffff8154169055565b01516001600160d01b031690565b905f90565b9050611a6591611a5b611a4d61094d565b65ffffffffffff9093168352565b5f85830152611934565b611a29565b604051632520601d60e01b8152600490fd5b611a98929150611a8d611a4d61094d565b5f6020830152611934565b5f905f90565b8054908115611b4357611ab66119b76119ac84610bb3565b90611ac7825165ffffffffffff1690565b65ffffffffffff8581169491168410611a6a57611b2194602094611af4610c99865165ffffffffffff1690565b03611b275750611a2991611a10611b0a92610bb3565b660100000000000065ffffffffffff825416179055565b90600190565b9050611a6591611b38611a4d61094d565b600182860152611934565b611b60929150611b54611a4d61094d565b60016020830152611934565b5f9060019056fea2646970667358221220a2601598b530c384dfaa52fda9ec24334fb67ce73c9d54796027ec5092285f3464736f6c63430008190033","sourceMap":"215:929:83:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;215:929:83;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;;;;215:929:83;;;;;;:::o;:::-;;;;;;-1:-1:-1;;215:929:83;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;215:929:83;;;;;-1:-1:-1;;;;;215:929:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;2036:1:91;215:929:83;1975:57:91;:22;215:929:83;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;215:929:83;1975:10:91;215:929:83;;;-1:-1:-1;215:929:83;;;;;;;;;;;;;;;;;1975:22:91;215:929:83;;;;;;;;;;:::i;:::-;1975:57:91;;:::i;:::-;215:929:83;1975:62:91;215:929:83;;;;;;;;;;;;-1:-1:-1;;215:929:83;;;;;;851:39:91;-1:-1:-1;;;;;215:929:83;;;;;;;;;;;;-1:-1:-1;;215:929:83;;;;3493:5:91;215:929:83;;:::i;:::-;3481:10:91;3493:5;:::i;:::-;215:929:83;;;;;;;;;;;;;;;;;;-1:-1:-1;215:929:83;;;;;;;;-1:-1:-1;;215:929:83;;;;:::o;:::-;;;;;;-1:-1:-1;;215:929:83;;;;;6099:41:52;:5;:41;:::i;:::-;6554:47;:8;:47;:::i;:::-;215:929:83;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;5590:13:52;215:929:83;;;;5625:4:52;215:929:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;215:929:83;;;;;;;;6584:16:52;215:929:83;;;;;;;;;-1:-1:-1;;215:929:83;;;;;1214:77:91;215:929:83;;:::i;:::-;;;:::i;:::-;-1:-1:-1;;;;;215:929:83;;;-1:-1:-1;215:929:83;;;1214:77:91;215:929:83;;;;;;;;;;;;-1:-1:-1;215:929:83;;;;;;;1214:77:91;215:929:83;;;;;;;;;;;;;;:::i;:::-;;;;837:15:62;819:34;837:15;819:34;:::i;:::-;215:929:83;;;1469:27:91;;;1465:83;;3164:88;215:929:83;4587:179:91;215:929:83;;;;;;;;;;;;-1:-1:-1;215:929:83;4713:6:91;215:929:83;;4713:18:91;215:929:83;;-1:-1:-1;215:929:83;;;;;;;;;;;;;;;;;4713:18:91;215:929:83;;;4644:98:91;215:929:83;4644:98:91;;215:929:83;1082:76:91;215:929:83;;;948:75:91;;215:929:83;;;948:75:91;;;215:929:83;948:75:91;;;215:929:83;948:75:91;;;215:929:83;948:75:91;4644:98;;;;;:::i;:::-;215:929:83;4617:139:91;;4587:179;:::i;:::-;215:929:83;;;;:::i;:::-;3164:88:91;;;:::i;:::-;3163:89;3159:145;;3327:5;;;:::i;3159:145::-;215:929:83;;-1:-1:-1;;;3275:18:91;;215:929:83;;3275:18:91;1465:83;215:929:83;;-1:-1:-1;;;1519:18:91;;215:929:83;;1519:18:91;215:929:83;;;;;;-1:-1:-1;;215:929:83;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;215:929:83;449:5:82;215:929:83;;435:10:82;:19;431:71;;581:61:83;215:929;581:22;215:929;;-1:-1:-1;215:929:83;581:10;215:929;;;-1:-1:-1;215:929:83;;;;;;;;;;;;;;;;;581:22;:61;:::i;:::-;215:929;;;;;;;;;;;;;;;;;;;-1:-1:-1;;215:929:83;;;;;431:71:82;215:929:83;;-1:-1:-1;;;477:14:82;;215:929:83;;477:14:82;215:929:83;;;;;;-1:-1:-1;;215:929:83;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;215:929:83;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;416:25:75;;;;477:31;416:25;;:::i;:::-;215:929:83;;;;;;;;;;477:31:75;;215:929:83;;;;;;;;;;;:::i;:::-;477:31:75;215:929:83;;477:31:75;;;;;;:::i;:::-;518:79;;;215:929:83;518:79:75;;215:929:83;;;;;;-1:-1:-1;;215:929:83;;;;2370:5:91;215:929:83;;:::i;:::-;2358:10:91;2370:5;:::i;215:929:83:-;;;;;;-1:-1:-1;;215:929:83;;;;;;758:37:91;-1:-1:-1;;;;;215:929:83;;;;;;;;;;;;;:::i;:::-;;;;837:15:62;819:34;837:15;819:34;:::i;:::-;215:929:83;;;1469:27:91;;;1465:83;;2610:87;215:929:83;4587:179:91;215:929:83;;;;;;;;;;;;-1:-1:-1;215:929:83;4713:6:91;215:929:83;;4713:18:91;215:929:83;;-1:-1:-1;215:929:83;;;;;;;;;;;;;;;;;4713:18:91;215:929:83;;;4644:98:91;215:929:83;4644:98:91;;215:929:83;948:75:91;215:929:83;;;948:75:91;;215:929:83;;;948:75:91;;;215:929:83;948:75:91;;;215:929:83;948:75:91;;;215:929:83;948:75:91;4644:98;;;;;:::i;2610:87::-;2609:88;2605:144;;2771:5;;;:::i;215:929:83:-;;;;;;-1:-1:-1;;215:929:83;;;;2923:5:91;215:929:83;;:::i;:::-;2911:10:91;2923:5;:::i;215:929:83:-;;;;;;-1:-1:-1;;215:929:83;;;;;;:::i;:::-;;;:::i;:::-;;;;-1:-1:-1;;;;;215:929:83;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;2099:134:91:-;-1:-1:-1;;;;;215:929:83;;;-1:-1:-1;215:929:83;;;2190:10:91;215:929:83;;;;;;;;;;;;;;;;;;;;;10303:8:60;;;:63;;2225:1:91;-1:-1:-1;10303:63:60;215:929:83;;;;;;2190:36:91;2099:134;:::o;10303:63:60:-;215:929:83;;;;;;;;;;2225:1:91;13267:109:86;-1:-1:-1;13267:109:86;215:929:83;-1:-1:-1;13267:109:86;;;215:929:83;;;10303:63:60;;215:929:83;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::o;:::-;948:75:91;215:929:83;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;-1:-1:-1;;215:929:83;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;215:929:83;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;215:929:83;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;:::o;655:487::-;;;;-1:-1:-1;803:12:83;215:929;;;;;;;936:76;;;;;;;;;;215:929;;;;;;;;936:76;;;215:929;;;;;;;;;;;;936:76;;;;;:::i;:::-;215:929;;716:88:82;;215:929:83;716:88:82;;;;;;;;;783:4;936:76:83;716:88:82;;215:929:83;;;;;;;;;;;:::i;:::-;716:88:82;215:929:83;716:88:82;215:929:83;;716:88:82;;;;;;;;:::i;:::-;698:107;;;;;;;:::i;:::-;215:929:83;;857:45:82;;;;;;;;215:929:83;;;;;;857:45:82;;;215:929:83;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;215:929:83;;;;;;;;;;;916:8:82;912:175;;215:929:83;;;857:207;215:929;;857:207;;;;:::i;:::-;1075:61;;;;655:487;;;;:::o;1075:61::-;1108:17;215:929;;;;1108:17;215:929;;1108:17;;;;;215:929;;;;;;;;;;;;1108:17;;;;;;;;;:::i;912:175:82:-;215:929:83;;;;944:22:82;;;940:36;;990:87;;215:929:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;215:929:83;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::o;1818:604:86:-;;215:929:83;;1946:17:86;1942:83;;215:929:83;2049:27:86;215:929:83;2049:27:86;215:929:83;;2049:27:86;;;;;;:::i;:::-;2120:14;;;;;:::i;:::-;215:929:83;;;;;;;;;;;;;;;;2148:22:86;;;2144:77;;2235:21;-1:-1:-1;2235:84:86;;;;1818:604;2231:139;;;;1425:34;;;;:::i;2231:139::-;-1:-1:-1;;2049:27:86;2342:17;215:929:83;-1:-1:-1;;;;;215:929:83;;:::o;2235:84:86:-;215:929:83;;;2269:16:86;215:929:83;;2269:16:86;:::i;:::-;215:929:83;;;2261:24:86;:57;;;;;2235:84;;;;;;;2261:57;2289:29;2298:8;;;2289:18;2298:8;2289:23;2298:8;;:::i;:::-;2289:18;;:::i;:::-;215:929:83;;;;;2289:23:86;215:929:83;;;;2289:29:86;;2261:57;;;;2144:77;-1:-1:-1;;;;2049:27:86;2193:17;;;;215:929:83;-1:-1:-1;;;;;215:929:83;;-1:-1:-1;215:929:83;:::o;1942:83:86:-;1425:34;;;;:::i;4779:173:91:-;-1:-1:-1;;;;;215:929:83;;;-1:-1:-1;215:929:83;;;4876:6:91;215:929:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;4920:25:91;;-1:-1:-1;4920:25:91;4779:173::o;1039:368:54:-;1211:33;;;;:::i;:::-;215:929:83;;;;;;;;;;1274:35:54;:58;;;;1039:368;1273:127;;;;;1039:368;1254:146;;;1039:368;:::o;1273:127::-;1283:26;215:929:83;;;;;;;;2041:60:54;;215:929:83;2041:60:54;;;;;;;;;;;;;;215:929:83;;;;;;;;;;;:::i;2041:60:54:-;2010:101;;;;;;;:::i;:::-;2129:42;;;1273:127;2129:134;;;1273:127;;;;;;;;2129:134;215:929:83;;;2041:60:54;215:929:83;;;2187:29:54;;215:929:83;;;;2041:60:54;2187:29;215:929:83;2187:76:54;2129:134;;;;:42;215:929:83;;2041:60:54;215:929:83;;2152:19:54;;2129:42;;;1274:58;-1:-1:-1;;;;;215:929:83;;;;;1313:19:54;;-1:-1:-1;1274:58:54;;;215:929:83;;;;1283:26:54;215:929:83;;;;;1283:26:54;215:929:83;3991:467:91;;5260:30:86;4105:22:91;:15;;;215:929:83;;;;;;;;4105:10:91;215:929:83;;;;;;;4105:15:91;215:929:83;;;;;;;;;;;;;;;;4105:22:91;5260:30:86;:::i;:::-;215:929:83;;-1:-1:-1;;;;;;215:929:83;4161:16:91;4157:66;;215:929:83;837:15:62;819:34;837:15;819:34;:::i;:::-;215:929:83;;;4237:35:91;4233:89;;8167:38:60;4332:22:91;:15;;;215:929:83;;;;;;;;4105:10:91;215:929:83;;;;;;;4332:22:91;819:34:62;837:15;819:34;:::i;:::-;8167:38:60;;:::i;:::-;4411:5:91;;;;;;:::i;:::-;-1:-1:-1;;;;;215:929:83;;;;;4433:18:91;-1:-1:-1;;4433:18:91;3991:467::o;4233:89::-;215:929:83;;-1:-1:-1;;;4295:16:91;;;;;4157:66;215:929:83;;-1:-1:-1;;;4200:12:91;;;;;215:929:83;;3149:1:86;215:929:83;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;2666:855:86:-;;215:929:83;;2880:15:86;2838:11;2905:18;2938:7;2944:1;2938:7;;2934:241;;2666:855;3199:60;;;;;:::i;:::-;3274:8;;;3270:62;;215:929:83;3430:7:86;;;;:::i;:::-;13267:109;2838:11;13267:109;;2838:11;13267:109;;215:929:83;:::i;:::-;;3498:15:86;3505:7;215:929:83;13267:109:86;215:929:83;;;;;;;;3479:17:86;;215:929:83;-1:-1:-1;;;;;215:929:83;;;;3505:7:86;;:::i;:::-;215:929:83;;;;3498:15:86;3436:1;;3448:66;;2666:855::o;3270:62::-;3298:23;;2838:11;3298:23;2838:11;3298:23;2838:11;3298:23;2838:11;3298:23;:::o;2934:241::-;2981:14;;;;;:::i;:::-;215:929:83;;;;;;;3199:60:86;13267:109;;2838:11;13267:109;215:929:83;13267:109:86;;;2838:11;13267:109;;215:929:83;;;;;3013:55:86;3009:156;215:929:83;;;3088:10:86;3009:156;2934:241;;3009:156;3143:7;;;;;;:::i;:::-;3009:156;2934:241;;215:929:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3512:473:91;215:929:83;;-1:-1:-1;;;3580:37:91;;;-1:-1:-1;;;;;215:929:83;;;3580:37:91;;;215:929:83;;;3512:473:91;3580:37;;215:929:83;3580:37:91;215:929:83;;;3590:12:91;215:929:83;;3580:37:91;;;;;;;-1:-1:-1;3580:37:91;;;3512:473;3579:38;;3575:84;;215:929:83;;3674:41:91;;;-1:-1:-1;;;;;215:929:83;;3580:37:91;3674:41;;215:929:83;3674:41:91;215:929:83;;;3684:14:91;215:929:83;;3674:41:91;;;;;;;-1:-1:-1;3674:41:91;;;3512:473;3673:42;;;3669:96;;3779:21;;;;:::i;:::-;3775:75;;3860:15;8167:38:60;3860:22:91;:15;;;;215:929:83;;;;;;;;4105:10:91;215:929:83;;;;;;;3860:22:91;819:34:62;837:15;819:34;:::i;:::-;8167:38:60;;:::i;:::-;3939:5:91;;;;;;:::i;:::-;215:929:83;;;3961:17:91;-1:-1:-1;3961:17:91;;3512:473::o;3775:75::-;215:929:83;;-1:-1:-1;;;3823:16:91;;3580:37;;3823:16;3669:96;215:929:83;;-1:-1:-1;;;3738:16:91;;3580:37;;3738:16;3674:41;;;;;;-1:-1:-1;3674:41:91;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;:::i;3575:84::-;215:929:83;;-1:-1:-1;;;3640:8:91;;3580:37;;3640:8;3580:37;;;;;;;;;;;;;;:::i;:::-;;;;215:929:83;;;;;;;:::i;:::-;-1:-1:-1;215:929:83;;;;;;;:::o;5573:258:86:-;215:929:83;5573:258:86;11308:22:60;5573:258:86;215:929:83;;:::i;:::-;;;;:::i;:::-;;11308:22:60;:::i;:::-;215:929:83;;:::i;:::-;;;;;;5805:17:86;215:929:83;;;;;5805:17:86;;215:929:83;;;;;;;;:::i;:::-;;;5805:17:86;5759:65;;215:929:83;5573:258:86;:::o;3385:267:48:-;1390:66;3508:46;;1390:66;;3577:15;;;:::i;3504:142::-;215:929:83;;;;;1390:66:48;;;;;;;;;;;;;;;3504:142;1390:66;;;;;;;;;215:929:83;;;1390:66:48;;215:929:83;;;1390:66:48;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;215:929:83;1390:66:48;;;;;;;215:929:83;1390:66:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1390:66:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;215:929:83;;;;1390:66:48;;;;;215:929:83;1390:66:48;;;;;;;;3385:267;1390:66;3508:46;;1390:66;;3577:15;;;:::i;3504:142::-;-1:-1:-1;215:929:83;;6584:16:52;1390:66:48;;;;;;-1:-1:-1;;1390:66:48;;;;;;;;3504:142;1390:66;;;;;;;;;215:929:83;;;1390:66:48;;215:929:83;;;1390:66:48;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;6584:16:52;1390:66:48;;;;;;;-1:-1:-1;1390:66:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1390:66:48;;;;;;;;;;;;;14291:213:58;215:929:83;14369:24:58;;;;14365:103;;215:929:83;14291:213:58;:::o;14365:103::-;215:929:83;;;;14416:41:58;;;;;;14447:2;14416:41;;;215:929:83;;;;;14416:41:58;4917:176:52;3515:233:53;4917:176:52;5053:20;;:::i;:::-;3515:233:53;;;;-1:-1:-1;;;3515:233:53;;;;;;;;;;;4917:176:52;:::o;2129:766:51:-;215:929:83;;;2129:766:51;2276:2;2256:22;;2276:2;;2739:25;2539:180;;;;;;;;;;;;;;;-1:-1:-1;2539:180:51;2739:25;;:::i;:::-;2732:32;;;;;:::o;2252:637::-;2795:83;;2811:1;2795:83;2815:35;2795:83;;:::o;215:929:83:-;;;;;;;:::o;:::-;;;;;;;;;;;;8587:1642:57;8658:6;;8654:45;;9401:7;10201:10;10142:26;10093;10044;9995;9946;9897;9848;215:929:83;10189:23:57;9401:7;8663:1;215:929:83;;;;10826:16:57;10822:99;;8587:1642;215:929:83;;;;10938:15:57;10934:96;;8587:1642;215:929:83;;;;11047:15:57;11043:96;;8587:1642;215:929:83;;;;11156:15:57;11152:96;;8587:1642;215:929:83;;;;11265:14:57;11261:93;;8587:1642;215:929:83;;;;11371:14:57;11367:93;;8587:1642;215:929:83;;;;11477:14:57;11473:93;;8587:1642;215:929:83;;;11579:64:57;;8587:1642;215:929:83;;;9858:10:57;;;;:::i;:::-;215:929:83;;;;;9848:26:57;9907:10;;;;:::i;9897:26::-;9956:10;;;;:::i;9946:26::-;10005:10;;;;:::i;9995:26::-;10054:10;;;;:::i;10044:26::-;10103:10;;;;:::i;10093:26::-;10152:10;;;;:::i;10142:26::-;10201:10;;;:::i;:::-;10189:23;;:::i;11579:64::-;215:929:83;;11579:64:57;;11473:93;215:929:83;11511:11:57;;215:929:83;;11473:93:57;;;;11367;215:929:83;11405:11:57;;215:929:83;;11367:93:57;;;;11261;215:929:83;11299:11:57;;215:929:83;;11261:93:57;;;;11152:96;215:929:83;11191:12:57;;215:929:83;;11152:96:57;;;;11043;215:929:83;11082:12:57;;215:929:83;;11043:96:57;;;;10934;215:929:83;10973:12:57;;215:929:83;;10934:96:57;;;;10822:99;10862:13;;;215:929:83;10822:99:57;;;;8654:45;8680:8;8663:1;8680:8;:::o;12497:447:86:-;;;12694:10;;;;;;12926:11;;;12497:447;:::o;12687:230::-;2900:5:57;;;;;;215:929:83;;2910:5:57;;;215:929:83;;;;;;;;;13267:109:86;-1:-1:-1;13267:109:86;215:929:83;13267:109:86;;;-1:-1:-1;13267:109:86;;215:929:83;;;;;-1:-1:-1;12771:136:86;215:929:83;;;12830:10:86;;12771:136;;12687:230;;;;12771:136;215:929:83;;;;;;;;;;;12771:136:86;;;9441:606:60;;215:929:83;;9594:15:60;9559:17;9619:18;9652:7;9658:1;9652:7;;9648:234;;9441:606;9906:53;;;;;:::i;:::-;9977:8;;;:63;;9559:17;9441:606;:::o;9977:63::-;10025:7;;;:::i;:::-;13267:109:86;9559:17:60;13267:109:86;;9559:17:60;13267:109:86;;215:929:83;;;9441:606:60;:::o;9648:234::-;9695:14;;;;;:::i;:::-;215:929:83;;;;;;;9906:53:60;13267:109:86;;9559:17:60;13267:109:86;215:929:83;13267:109:86;;;9559:17:60;13267:109:86;;215:929:83;;;;;9727:48:60;9723:149;215:929:83;;;9795:10:60;9723:149;9648:234;;9723:149;9850:7;;;;;;:::i;:::-;9723:149;9648:234;;215:929:83;;;;;;;;-1:-1:-1;1390:66:48;;-1:-1:-1;1390:66:48;215:929:83;;-1:-1:-1;215:929:83;:::o;:::-;;;;;;;;;;;;2078:405:48;2688:4;2652:40;;2706:11;2715:2;2706:11;;2702:69;;215:929:83;;;;;;:::i;2702:69:48:-;215:929:83;;-1:-1:-1;;;2740:20:48;;;;;3845:262:52;3929:4;3938:11;-1:-1:-1;;;;;215:929:83;3921:28:52;;:63;;3845:262;3917:184;;;4007:22;4000:29;:::o;3917:184::-;215:929:83;;4204:80:52;;;215:929:83;2079:95:52;215:929:83;;4226:11:52;215:929:83;2079:95:52;;215:929:83;4239:14:52;2079:95;;;215:929:83;4255:13:52;2079:95;;;215:929:83;3929:4:52;2079:95;;;215:929:83;2079:95:52;4204:80;;;;;:::i;:::-;215:929:83;4194:91:52;;4060:30;:::o;3921:63::-;3970:14;;3953:13;:31;3921:63;;5140:1530:51;;;6199:66;6186:79;;6182:164;;215:929:83;;;;;;-1:-1:-1;215:929:83;;;;;;;;;;;;;;;;;;;6457:24:51;;;;;;;;;-1:-1:-1;6457:24:51;-1:-1:-1;;;;;215:929:83;;6495:20:51;6491:113;;6614:49;-1:-1:-1;6614:49:51;-1:-1:-1;5140:1530:51;:::o;6491:113::-;6531:62;-1:-1:-1;6531:62:51;6457:24;6531:62;-1:-1:-1;6531:62:51;:::o;6182:164::-;6281:54;;;6297:1;6281:54;6301:30;6281:54;;:::o;10552:388:60:-;215:929:83;;10728:8:60;;;10752:20;;10690:17;10752:20;10690:17;10752:20;10690:17;10752:20;:::o;10724:210::-;215:929:83;;;;;;;;;;;13267:109:86;10690:17:60;13267:109:86;;10690:17:60;13267:109:86;;;215:929:83;:::i;:::-;;;;;;;13267:109:86;215:929:83;;;;;10911:11:60;;215:929:83;;10886:37:60;10870:1;10886:37;;;:::o;2557:104:57:-;;2641:5;;;;;;:13;2557:104;:::o;2641:13::-;;;2557:104;:::o;215:929:83:-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;215:929:83;;;;;;;;;:::o;:::-;;;;;;;;;;;;11513:870:60;215:929:83;;;11672:7:60;;;;215:929:83;11775:28:60;11795:7;;;:::i;:::-;11775:28;13267:109:86;;;;;;13089:293;;11775:28:60;215:929:83;:::i;:::-;;;;;;;;;;;;;;;;;11877:15:60;-1:-1:-1;11873:91:60;;215:929:83;;12233:11:60;215:929:83;12027:16:60;215:929:83;;;;;;;12027:16:60;;;;12083:7;12063:43;12083:7;;12063:28;12083:7;;:::i;:::-;12063:28;13267:109:86;;;;;;13089:293;;12063:28:60;215:929:83;;;;;;;12063:43:60;12233:11;215:929:83;-1:-1:-1;;;;;215:929:83;;;;12225:27:60;215:929:83;12225:27:60;:::o;12023:189::-;215:929:83;;12145:52:60;215:929:83;12155:41:60;215:929:83;;:::i;:::-;;;;;;;;12155:41:60;215:929:83;12155:41:60;;;215:929:83;12145:52:60;:::i;:::-;12023:189;;11873:91;215:929:83;;-1:-1:-1;;;11919:30:60;;;;;11668:709;12283:52;215:929:83;;;12293:41:60;215:929:83;;:::i;12293:41:60:-;215:929:83;12293:41:60;;;215:929:83;12283:52:60;:::i;:::-;215:929:83;12349:17:60;215:929:83;12349:17:60;:::o;11513:870::-;215:929:83;;;11672:7:60;;;;215:929:83;11775:28:60;11795:7;;;:::i;215:929:83:-;;;;;;;;;;;;;;;;;11877:15:60;-1:-1:-1;11873:91:60;;215:929:83;;12233:11:60;215:929:83;12027:16:60;215:929:83;;;;;;;12027:16:60;;;;12083:7;12063:43;12083:7;;12063:28;12083:7;;:::i;12063:28::-;215:929:83;;;;;;;;;;12225:27:60;215:929:83;12225:27:60;:::o;12023:189::-;215:929:83;;12145:52:60;215:929:83;12155:41:60;215:929:83;;:::i;12155:41:60:-;215:929:83;12155:41:60;;;215:929:83;12145:52:60;:::i;11668:709::-;12283:52;215:929:83;;;12293:41:60;215:929:83;;:::i;12293:41:60:-;215:929:83;12293:41:60;;;215:929:83;12145:52:60;:::i;12283:::-;11678:1;12349:17;215:929:83;12349:17:60;:::o","linkReferences":{},"immutableReferences":{"51758":[{"start":6000,"length":32}],"51760":[{"start":6187,"length":32}],"51762":[{"start":5946,"length":32}],"51764":[{"start":6079,"length":32}],"51766":[{"start":6117,"length":32}],"51769":[{"start":765,"length":32}],"51772":[{"start":806,"length":32}],"62368":[{"start":1393,"length":32}],"65131":[{"start":1729,"length":32},{"start":4174,"length":32}],"65134":[{"start":622,"length":32},{"start":4257,"length":32}]}},"methodIdentifiers":{"WHERE_REGISTRY()":"6d0fae4a","WHO_REGISTRY()":"c4b5d62c","eip712Domain()":"84b0196e","increaseNonce(address)":"8247a97c","isOptedIn(address,address)":"220d32d4","isOptedInAt(address,address,uint48,bytes)":"530e1d43","nonces(address,address)":"9333fbda","optIn(address)":"b1138ad1","optIn(address,address,uint48,bytes)":"ced44ba7","optInHint(address,address,address,uint48)":"d4a63862","optInHintInternal(address,address,uint48)":"9a15d7a5","optOut(address)":"d4610483","optOut(address,address,uint48,bytes)":"93f79bc3","staticDelegateCall(address,bytes)":"9f86fd85"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AlreadyOptedIn\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CheckpointUnorderedInsertion\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpiredSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExternalCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidShortString\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotOptedIn\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotWhereEntity\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotWho\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OptOutCooldown\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"str\",\"type\":\"string\"}],\"name\":\"StringTooLong\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EIP712DomainChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"}],\"name\":\"IncreaseNonce\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"}],\"name\":\"OptIn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"}],\"name\":\"OptOut\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"WHERE_REGISTRY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WHO_REGISTRY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"}],\"name\":\"increaseNonce\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"}],\"name\":\"isOptedIn\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"isOptedInAt\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"}],\"name\":\"optIn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"deadline\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"optIn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"optInService\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"optInHint\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"optInHintInternal\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"exists\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"hint\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"deadline\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"optOut\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"}],\"name\":\"optOut\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"staticDelegateCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"CheckpointUnorderedInsertion()\":[{\"details\":\"A value was attempted to be inserted on a past checkpoint.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}]},\"events\":{\"EIP712DomainChanged()\":{\"details\":\"MAY be emitted to signal that the domain could have changed.\"},\"IncreaseNonce(address,address)\":{\"params\":{\"where\":\"address of the \\\"where\\\" entity\",\"who\":\"address of the \\\"who\\\"\"}},\"OptIn(address,address)\":{\"params\":{\"where\":\"address of the \\\"where\\\" entity\",\"who\":\"address of the \\\"who\\\"\"}},\"OptOut(address,address)\":{\"params\":{\"where\":\"address of the \\\"where\\\" entity\",\"who\":\"address of the \\\"who\\\"\"}}},\"kind\":\"dev\",\"methods\":{\"eip712Domain()\":{\"details\":\"See {IERC-5267}.\"},\"increaseNonce(address)\":{\"details\":\"It can be used to invalidate a given signature.\",\"params\":{\"where\":\"address of the \\\"where\\\" entity\"}},\"isOptedIn(address,address)\":{\"params\":{\"where\":\"address of the \\\"where\\\" entity\",\"who\":\"address of the \\\"who\\\"\"},\"returns\":{\"_0\":\"if the \\\"who\\\" is opted-in\"}},\"isOptedInAt(address,address,uint48,bytes)\":{\"params\":{\"hint\":\"hint for the checkpoint index\",\"timestamp\":\"time point to get if the \\\"who\\\" is opted-in at\",\"where\":\"address of the \\\"where\\\" entity\",\"who\":\"address of the \\\"who\\\"\"},\"returns\":{\"_0\":\"if the \\\"who\\\" is opted-in at the given timestamp\"}},\"optIn(address)\":{\"params\":{\"where\":\"address of the \\\"where\\\" entity\"}},\"optIn(address,address,uint48,bytes)\":{\"params\":{\"deadline\":\"time point until the signature is valid (inclusively)\",\"signature\":\"signature of the \\\"who\\\"\",\"where\":\"address of the \\\"where\\\" entity\",\"who\":\"address of the \\\"who\\\"\"}},\"optOut(address)\":{\"params\":{\"where\":\"address of the \\\"where\\\" entity\"}},\"optOut(address,address,uint48,bytes)\":{\"params\":{\"deadline\":\"time point until the signature is valid (inclusively)\",\"signature\":\"signature of the \\\"who\\\"\",\"where\":\"address of the \\\"where\\\" entity\",\"who\":\"address of the \\\"who\\\"\"}},\"staticDelegateCall(address,bytes)\":{\"details\":\"It allows to use this contract's storage on-chain.\",\"params\":{\"data\":\"data to make a delegatecall with\",\"target\":\"address of the contract to make a delegatecall to\"}}},\"version\":1},\"userdoc\":{\"events\":{\"IncreaseNonce(address,address)\":{\"notice\":\"Emitted when the nonce of a \\\"who\\\" to a \\\"where\\\" entity is increased.\"},\"OptIn(address,address)\":{\"notice\":\"Emitted when a \\\"who\\\" opts into a \\\"where\\\" entity.\"},\"OptOut(address,address)\":{\"notice\":\"Emitted when a \\\"who\\\" opts out from a \\\"where\\\" entity.\"}},\"kind\":\"user\",\"methods\":{\"WHERE_REGISTRY()\":{\"notice\":\"Get the address of the registry where to opt-in.\"},\"WHO_REGISTRY()\":{\"notice\":\"Get the \\\"who\\\" registry's address.\"},\"increaseNonce(address)\":{\"notice\":\"Increase the nonce of a given \\\"who\\\" to a particular \\\"where\\\" entity.\"},\"isOptedIn(address,address)\":{\"notice\":\"Check if a given \\\"who\\\" is opted-in to a particular \\\"where\\\" entity.\"},\"isOptedInAt(address,address,uint48,bytes)\":{\"notice\":\"Get if a given \\\"who\\\" is opted-in to a particular \\\"where\\\" entity at a given timestamp using a hint.\"},\"nonces(address,address)\":{\"notice\":\"Get the nonce of a given \\\"who\\\" to a particular \\\"where\\\" entity.\"},\"optIn(address)\":{\"notice\":\"Opt-in a calling \\\"who\\\" to a particular \\\"where\\\" entity.\"},\"optIn(address,address,uint48,bytes)\":{\"notice\":\"Opt-in a \\\"who\\\" to a particular \\\"where\\\" entity with a signature.\"},\"optOut(address)\":{\"notice\":\"Opt-out a calling \\\"who\\\" from a particular \\\"where\\\" entity.\"},\"optOut(address,address,uint48,bytes)\":{\"notice\":\"Opt-out a \\\"who\\\" from a particular \\\"where\\\" entity with a signature.\"},\"staticDelegateCall(address,bytes)\":{\"notice\":\"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data).\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/hints/OptInServiceHints.sol\":\"OptInServiceHints\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol\":{\"keccak256\":\"0x85a45f3f10014a0f8be41157a32b6a5f905753ea64a4b64e29fc12b7deeecf39\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c3c74009ce36136b36c77c23935b8e4a7b4f253be2da2be4fb4a916b1ce43743\",\"dweb:/ipfs/QmcH36v3iN7SJJuF73AunLR2LtNxhVJ1wm63ph4dPZ4pcL\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x18a7171df639a934592915a520ecb97c5bbc9675a1105607aac8a94e72bf62c6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7478e1f13da69a2867ccd883001d836b75620362e743f196376d63ed0c422a1c\",\"dweb:/ipfs/QmWywcQ9TNfwtoqAxbn25d8C5VrV12PrPS9UjtGe6pL2BA\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xeed0a08b0b091f528356cbc7245891a4c748682d4f6a18055e8e6ca77d12a6cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba80ba06c8e6be852847e4c5f4492cef801feb6558ae09ed705ff2e04ea8b13c\",\"dweb:/ipfs/QmXRJDv3xHLVQCVXg1ZvR35QS9sij5y9NDWYzMfUfAdTHF\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x999f705a027ed6dc2d4e0df2cc4a509852c6bfd11de1c8161bf88832d0503fd0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0798def67258d9a3cc20b2b4da7ebf351a5cefe0abfdd665d2d81f8e32f89b21\",\"dweb:/ipfs/QmPEvJosnPfzHNjKvCv2D3891mA2Ww8eUwkqrxBjuYdHCt\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0xba333517a3add42cd35fe877656fc3dfcc9de53baa4f3aabbd6d12a92e4ea435\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ceacff44c0fdc81e48e0e0b1db87a2076d3c1fb497341de077bf1da9f6b406c\",\"dweb:/ipfs/QmRUo1muMRAewxrKQ7TkXUtknyRoR57AyEkoPpiuZQ8FzX\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/SignatureChecker.sol\":{\"keccak256\":\"0x6b11eb41a228cca35d4b662b4df69fcd75192851365102690f57b2ac01e83fe6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab006a2983ed350d2af21ddcdd835dcae3b8340086cc4d088460da5abd041f69\",\"dweb:/ipfs/QmbEacDhkJZiGrgzLjB4pNtE8Z1uudjDw1DvcDUTVQFsLG\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c\",\"dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0xbdc5e074d7dd6678f67e92b1a51a20226801a407b0e1af3da367c5d1ff4519ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a36cca6b22fff3db16fc789ff6c60eea71d4b156065d4d0c83a0bc5e91a77a8b\",\"dweb:/ipfs/QmYN3exd5AemxjBrN8XMB1p5LbbE16uC3sjbYjwi8AjcGR\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0xc7755af115020049e4140f224f9ee88d7e1799ffb0646f37bf0df24bf6213f58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f09bf94d5274334ec021f61a04659db303f31e60460e14b709c9bf187740111\",\"dweb:/ipfs/QmNvgomZYUwFAt4cZbPWAiTeSZQreGehY9BK5xyVJsUttb\"]},\"src/contracts/common/StaticDelegateCallable.sol\":{\"keccak256\":\"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764\",\"dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD\"]},\"src/contracts/hints/Hints.sol\":{\"keccak256\":\"0x8b565df1ae35993c097a9e642002782a8f451f6fd01809cad6bcd345bdf1b99c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://99a19adb01e350a92f534095b3078229df1f2f83077992d75d58d8684be45971\",\"dweb:/ipfs/QmbmwcuswVbzvwHQFTtrJG86oV98GnfxqYTb8cV8u1acox\"]},\"src/contracts/hints/OptInServiceHints.sol\":{\"keccak256\":\"0x95d9407900d27b9f4a1233b772aeed809c07b2dc5b31cfc9fa77ca26514c49e5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://a13a8877e312d7e6b8b85bde3668c5d84ff5ecc83f762cd573f2b7104c64eb42\",\"dweb:/ipfs/QmYV2J55acuGzCNnS3juABuUHY5U1xc8g8o9jwEyFFdeG5\"]},\"src/contracts/libraries/Checkpoints.sol\":{\"keccak256\":\"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609\",\"dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE\"]},\"src/contracts/service/OptInService.sol\":{\"keccak256\":\"0x4e0932077f2686b7990e10d59deb2535334c0d09e52ef6e57c6ab09eca21c4b1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7c00d311032ed4a1743aca7475f3c86ce15cdfc2218108efc3731c03d34a5278\",\"dweb:/ipfs/QmUGGfVwVhaHr5kS4177yKKYiLYzi5qZpkEmvYxBZqazxf\"]},\"src/interfaces/common/IRegistry.sol\":{\"keccak256\":\"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014\",\"dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK\"]},\"src/interfaces/common/IStaticDelegateCallable.sol\":{\"keccak256\":\"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516\",\"dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi\"]},\"src/interfaces/service/IOptInService.sol\":{\"keccak256\":\"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337\",\"dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AlreadyOptedIn"},{"inputs":[],"type":"error","name":"CheckpointUnorderedInsertion"},{"inputs":[],"type":"error","name":"ExpiredSignature"},{"inputs":[],"type":"error","name":"ExternalCall"},{"inputs":[],"type":"error","name":"InvalidShortString"},{"inputs":[],"type":"error","name":"InvalidSignature"},{"inputs":[],"type":"error","name":"NotOptedIn"},{"inputs":[],"type":"error","name":"NotWhereEntity"},{"inputs":[],"type":"error","name":"NotWho"},{"inputs":[],"type":"error","name":"OptOutCooldown"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintDowncast"},{"inputs":[{"internalType":"string","name":"str","type":"string"}],"type":"error","name":"StringTooLong"},{"inputs":[],"type":"event","name":"EIP712DomainChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":true},{"internalType":"address","name":"where","type":"address","indexed":true}],"type":"event","name":"IncreaseNonce","anonymous":false},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":true},{"internalType":"address","name":"where","type":"address","indexed":true}],"type":"event","name":"OptIn","anonymous":false},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":true},{"internalType":"address","name":"where","type":"address","indexed":true}],"type":"event","name":"OptOut","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"WHERE_REGISTRY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"WHO_REGISTRY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"eip712Domain","outputs":[{"internalType":"bytes1","name":"fields","type":"bytes1"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"version","type":"string"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"verifyingContract","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256[]","name":"extensions","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"where","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"increaseNonce"},{"inputs":[{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"where","type":"address"}],"stateMutability":"view","type":"function","name":"isOptedIn","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"where","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"isOptedInAt","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"where","type":"address"}],"stateMutability":"view","type":"function","name":"nonces","outputs":[{"internalType":"uint256","name":"nonce","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"where","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"optIn"},{"inputs":[{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"where","type":"address"},{"internalType":"uint48","name":"deadline","type":"uint48"},{"internalType":"bytes","name":"signature","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"optIn"},{"inputs":[{"internalType":"address","name":"optInService","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"where","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"optInHint","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"where","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"optInHintInternal","outputs":[{"internalType":"bool","name":"exists","type":"bool"},{"internalType":"uint32","name":"hint","type":"uint32"}]},{"inputs":[{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"where","type":"address"},{"internalType":"uint48","name":"deadline","type":"uint48"},{"internalType":"bytes","name":"signature","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"optOut"},{"inputs":[{"internalType":"address","name":"where","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"optOut"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"staticDelegateCall"}],"devdoc":{"kind":"dev","methods":{"eip712Domain()":{"details":"See {IERC-5267}."},"increaseNonce(address)":{"details":"It can be used to invalidate a given signature.","params":{"where":"address of the \"where\" entity"}},"isOptedIn(address,address)":{"params":{"where":"address of the \"where\" entity","who":"address of the \"who\""},"returns":{"_0":"if the \"who\" is opted-in"}},"isOptedInAt(address,address,uint48,bytes)":{"params":{"hint":"hint for the checkpoint index","timestamp":"time point to get if the \"who\" is opted-in at","where":"address of the \"where\" entity","who":"address of the \"who\""},"returns":{"_0":"if the \"who\" is opted-in at the given timestamp"}},"optIn(address)":{"params":{"where":"address of the \"where\" entity"}},"optIn(address,address,uint48,bytes)":{"params":{"deadline":"time point until the signature is valid (inclusively)","signature":"signature of the \"who\"","where":"address of the \"where\" entity","who":"address of the \"who\""}},"optOut(address)":{"params":{"where":"address of the \"where\" entity"}},"optOut(address,address,uint48,bytes)":{"params":{"deadline":"time point until the signature is valid (inclusively)","signature":"signature of the \"who\"","where":"address of the \"where\" entity","who":"address of the \"who\""}},"staticDelegateCall(address,bytes)":{"details":"It allows to use this contract's storage on-chain.","params":{"data":"data to make a delegatecall with","target":"address of the contract to make a delegatecall to"}}},"version":1},"userdoc":{"kind":"user","methods":{"WHERE_REGISTRY()":{"notice":"Get the address of the registry where to opt-in."},"WHO_REGISTRY()":{"notice":"Get the \"who\" registry's address."},"increaseNonce(address)":{"notice":"Increase the nonce of a given \"who\" to a particular \"where\" entity."},"isOptedIn(address,address)":{"notice":"Check if a given \"who\" is opted-in to a particular \"where\" entity."},"isOptedInAt(address,address,uint48,bytes)":{"notice":"Get if a given \"who\" is opted-in to a particular \"where\" entity at a given timestamp using a hint."},"nonces(address,address)":{"notice":"Get the nonce of a given \"who\" to a particular \"where\" entity."},"optIn(address)":{"notice":"Opt-in a calling \"who\" to a particular \"where\" entity."},"optIn(address,address,uint48,bytes)":{"notice":"Opt-in a \"who\" to a particular \"where\" entity with a signature."},"optOut(address)":{"notice":"Opt-out a calling \"who\" from a particular \"where\" entity."},"optOut(address,address,uint48,bytes)":{"notice":"Opt-out a \"who\" from a particular \"where\" entity with a signature."},"staticDelegateCall(address,bytes)":{"notice":"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data)."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/hints/OptInServiceHints.sol":"OptInServiceHints"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol":{"keccak256":"0x85a45f3f10014a0f8be41157a32b6a5f905753ea64a4b64e29fc12b7deeecf39","urls":["bzz-raw://c3c74009ce36136b36c77c23935b8e4a7b4f253be2da2be4fb4a916b1ce43743","dweb:/ipfs/QmcH36v3iN7SJJuF73AunLR2LtNxhVJ1wm63ph4dPZ4pcL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol":{"keccak256":"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92","urls":["bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a","dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721","urls":["bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245","dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol":{"keccak256":"0x18a7171df639a934592915a520ecb97c5bbc9675a1105607aac8a94e72bf62c6","urls":["bzz-raw://7478e1f13da69a2867ccd883001d836b75620362e743f196376d63ed0c422a1c","dweb:/ipfs/QmWywcQ9TNfwtoqAxbn25d8C5VrV12PrPS9UjtGe6pL2BA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418","urls":["bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c","dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792","urls":["bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453","dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0xeed0a08b0b091f528356cbc7245891a4c748682d4f6a18055e8e6ca77d12a6cf","urls":["bzz-raw://ba80ba06c8e6be852847e4c5f4492cef801feb6558ae09ed705ff2e04ea8b13c","dweb:/ipfs/QmXRJDv3xHLVQCVXg1ZvR35QS9sij5y9NDWYzMfUfAdTHF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol":{"keccak256":"0x999f705a027ed6dc2d4e0df2cc4a509852c6bfd11de1c8161bf88832d0503fd0","urls":["bzz-raw://0798def67258d9a3cc20b2b4da7ebf351a5cefe0abfdd665d2d81f8e32f89b21","dweb:/ipfs/QmPEvJosnPfzHNjKvCv2D3891mA2Ww8eUwkqrxBjuYdHCt"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0xba333517a3add42cd35fe877656fc3dfcc9de53baa4f3aabbd6d12a92e4ea435","urls":["bzz-raw://2ceacff44c0fdc81e48e0e0b1db87a2076d3c1fb497341de077bf1da9f6b406c","dweb:/ipfs/QmRUo1muMRAewxrKQ7TkXUtknyRoR57AyEkoPpiuZQ8FzX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/SignatureChecker.sol":{"keccak256":"0x6b11eb41a228cca35d4b662b4df69fcd75192851365102690f57b2ac01e83fe6","urls":["bzz-raw://ab006a2983ed350d2af21ddcdd835dcae3b8340086cc4d088460da5abd041f69","dweb:/ipfs/QmbEacDhkJZiGrgzLjB4pNtE8Z1uudjDw1DvcDUTVQFsLG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe","urls":["bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c","dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72","urls":["bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc","dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol":{"keccak256":"0xbdc5e074d7dd6678f67e92b1a51a20226801a407b0e1af3da367c5d1ff4519ad","urls":["bzz-raw://a36cca6b22fff3db16fc789ff6c60eea71d4b156065d4d0c83a0bc5e91a77a8b","dweb:/ipfs/QmYN3exd5AemxjBrN8XMB1p5LbbE16uC3sjbYjwi8AjcGR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0xc7755af115020049e4140f224f9ee88d7e1799ffb0646f37bf0df24bf6213f58","urls":["bzz-raw://7f09bf94d5274334ec021f61a04659db303f31e60460e14b709c9bf187740111","dweb:/ipfs/QmNvgomZYUwFAt4cZbPWAiTeSZQreGehY9BK5xyVJsUttb"],"license":"MIT"},"src/contracts/common/StaticDelegateCallable.sol":{"keccak256":"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90","urls":["bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764","dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD"],"license":"BUSL-1.1"},"src/contracts/hints/Hints.sol":{"keccak256":"0x8b565df1ae35993c097a9e642002782a8f451f6fd01809cad6bcd345bdf1b99c","urls":["bzz-raw://99a19adb01e350a92f534095b3078229df1f2f83077992d75d58d8684be45971","dweb:/ipfs/QmbmwcuswVbzvwHQFTtrJG86oV98GnfxqYTb8cV8u1acox"],"license":"BUSL-1.1"},"src/contracts/hints/OptInServiceHints.sol":{"keccak256":"0x95d9407900d27b9f4a1233b772aeed809c07b2dc5b31cfc9fa77ca26514c49e5","urls":["bzz-raw://a13a8877e312d7e6b8b85bde3668c5d84ff5ecc83f762cd573f2b7104c64eb42","dweb:/ipfs/QmYV2J55acuGzCNnS3juABuUHY5U1xc8g8o9jwEyFFdeG5"],"license":"BUSL-1.1"},"src/contracts/libraries/Checkpoints.sol":{"keccak256":"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c","urls":["bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609","dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE"],"license":"MIT"},"src/contracts/service/OptInService.sol":{"keccak256":"0x4e0932077f2686b7990e10d59deb2535334c0d09e52ef6e57c6ab09eca21c4b1","urls":["bzz-raw://7c00d311032ed4a1743aca7475f3c86ce15cdfc2218108efc3731c03d34a5278","dweb:/ipfs/QmUGGfVwVhaHr5kS4177yKKYiLYzi5qZpkEmvYxBZqazxf"],"license":"BUSL-1.1"},"src/interfaces/common/IRegistry.sol":{"keccak256":"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb","urls":["bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014","dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK"],"license":"MIT"},"src/interfaces/common/IStaticDelegateCallable.sol":{"keccak256":"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5","urls":["bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516","dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi"],"license":"MIT"},"src/interfaces/service/IOptInService.sol":{"keccak256":"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a","urls":["bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337","dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24"],"license":"MIT"}},"version":1},"id":83} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"WHERE_REGISTRY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"WHO_REGISTRY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"eip712Domain","inputs":[],"outputs":[{"name":"fields","type":"bytes1","internalType":"bytes1"},{"name":"name","type":"string","internalType":"string"},{"name":"version","type":"string","internalType":"string"},{"name":"chainId","type":"uint256","internalType":"uint256"},{"name":"verifyingContract","type":"address","internalType":"address"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"extensions","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"increaseNonce","inputs":[{"name":"where","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isOptedIn","inputs":[{"name":"who","type":"address","internalType":"address"},{"name":"where","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isOptedInAt","inputs":[{"name":"who","type":"address","internalType":"address"},{"name":"where","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"nonces","inputs":[{"name":"who","type":"address","internalType":"address"},{"name":"where","type":"address","internalType":"address"}],"outputs":[{"name":"nonce","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"optIn","inputs":[{"name":"where","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"optIn","inputs":[{"name":"who","type":"address","internalType":"address"},{"name":"where","type":"address","internalType":"address"},{"name":"deadline","type":"uint48","internalType":"uint48"},{"name":"signature","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"optInHint","inputs":[{"name":"optInService","type":"address","internalType":"address"},{"name":"who","type":"address","internalType":"address"},{"name":"where","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"optInHintInternal","inputs":[{"name":"who","type":"address","internalType":"address"},{"name":"where","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"exists","type":"bool","internalType":"bool"},{"name":"hint","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"optOut","inputs":[{"name":"who","type":"address","internalType":"address"},{"name":"where","type":"address","internalType":"address"},{"name":"deadline","type":"uint48","internalType":"uint48"},{"name":"signature","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"optOut","inputs":[{"name":"where","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"staticDelegateCall","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"EIP712DomainChanged","inputs":[],"anonymous":false},{"type":"event","name":"IncreaseNonce","inputs":[{"name":"who","type":"address","indexed":true,"internalType":"address"},{"name":"where","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OptIn","inputs":[{"name":"who","type":"address","indexed":true,"internalType":"address"},{"name":"where","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OptOut","inputs":[{"name":"who","type":"address","indexed":true,"internalType":"address"},{"name":"where","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AlreadyOptedIn","inputs":[]},{"type":"error","name":"CheckpointUnorderedInsertion","inputs":[]},{"type":"error","name":"ExpiredSignature","inputs":[]},{"type":"error","name":"ExternalCall","inputs":[]},{"type":"error","name":"InvalidShortString","inputs":[]},{"type":"error","name":"InvalidSignature","inputs":[]},{"type":"error","name":"NotOptedIn","inputs":[]},{"type":"error","name":"NotWhereEntity","inputs":[]},{"type":"error","name":"NotWho","inputs":[]},{"type":"error","name":"OptOutCooldown","inputs":[]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"StringTooLong","inputs":[{"name":"str","type":"string","internalType":"string"}]}],"bytecode":{"object":"0x6101c034610171576001600160401b03602082018181118382101761015d576040908082525f84528151938285018581108582111761015d5783526001855260208501603160f81b81523060805261005682610175565b926101409384526100668761030c565b926101609384525190209061010096828852519020610120948186524660c05280519160208301937f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f85528284015260608301524660808301523060a083015260a0825260c08201968288109088111761015d5786905251902060a0523060e052610180915f83526101a0935f8552611af69687610443883960805187610571015260a05187611779015260c05187611834015260e05187611743015251866117c8015251856117ee015251846102fd015251836103260152518281816106c1015261108a01525181818161026e01526110dd0152f35b634e487b7160e01b5f52604160045260245ffd5b5f80fd5b8051602090818110156101eb5750601f8251116101ad578082519201519080831061019f57501790565b825f19910360031b1b161790565b60448260405192839163305a27a960e01b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fd5b906001600160401b03821161015d575f54926001938481811c91168015610302575b838210146102ee57601f81116102bb575b5081601f841160011461025957509282939183925f9461024e575b50501b915f199060031b1c1916175f5560ff90565b015192505f80610239565b919083601f1981165f8052845f20945f905b888383106102a15750505010610289575b505050811b015f5560ff90565b01515f1960f88460031b161c191690555f808061027c565b85870151885590960195948501948793509081019061026b565b5f805284601f845f20920160051c820191601f860160051c015b8281106102e357505061021e565b5f81550185906102d5565b634e487b7160e01b5f52602260045260245ffd5b90607f169061020d565b8051602090818110156103365750601f8251116101ad578082519201519080831061019f57501790565b9192916001600160401b03811161015d5760019182548381811c91168015610438575b828210146102ee57601f8111610405575b5080601f83116001146103a55750819293945f9261039a575b50505f19600383901b1c191690821b17905560ff90565b015190505f80610383565b90601f19831695845f52825f20925f905b8882106103ee57505083859697106103d6575b505050811b01905560ff90565b01515f1960f88460031b161c191690555f80806103c9565b8087859682949686015181550195019301906103b6565b835f5283601f835f20920160051c820191601f850160051c015b82811061042d57505061036a565b5f815501849061041f565b90607f169061035956fe60806040526004361015610011575f80fd5b5f3560e01c8063220d32d4146100f4578063530e1d43146100ef5780636d0fae4a146100ea5780638247a97c146100e557806384b0196e146100e05780639333fbda146100db57806393f79bc3146100d65780639a15d7a5146100d15780639f86fd85146100cc578063b1138ad1146100c7578063c4b5d62c146100c2578063ced44ba7146100bd578063d4610483146100b85763d4a63862146100b3575f80fd5b6107d6565b6107b4565b6106f0565b6106ac565b61068a565b6105f9565b610531565b610432565b6103db565b6102e5565b61029d565b610259565b6101f3565b610129565b600435906001600160a01b038216820361010f57565b5f80fd5b602435906001600160a01b038216820361010f57565b3461010f57604036600319011261010f5760206101556101476100f9565b61014f610113565b9061083f565b6040519015158152f35b9181601f8401121561010f5782359167ffffffffffffffff831161010f576020838186019501011161010f57565b90608060031983011261010f576001600160a01b0391600435838116810361010f5792602435908116810361010f579160443565ffffffffffff8116810361010f57916064359067ffffffffffffffff821161010f576101ef9160040161015f565b9091565b3461010f576020600161024961024f61023a61020e3661018d565b969290949193888060a01b03165f526003895260405f209060018060a01b03165f5260205260405f2090565b92868060d01b03953691610978565b91610bd6565b1614604051908152f35b3461010f575f36600319011261010f576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461010f57602036600319011261010f576102bf6102b96100f9565b33610ccf565b005b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b3461010f575f36600319011261010f5761037e6103217f000000000000000000000000000000000000000000000000000000000000000061127b565b61034a7f0000000000000000000000000000000000000000000000000000000000000000611379565b60405190610357826108d7565b5f825261038c602091604051958695600f60f81b875260e0602088015260e08701906102c1565b9085820360408701526102c1565b4660608501523060808501525f60a085015283810360c0850152602080845192838152019301915f5b8281106103c457505050500390f35b8351855286955093810193928101926001016103b5565b3461010f57604036600319011261010f5760206104296103f96100f9565b610401610113565b6001600160a01b039182165f9081526002855260408082209290931681526020919091522090565b54604051908152f35b3461010f576104403661018d565b909165ffffffffffff8061045342611442565b16911690811061051f576104ff926104f06104f89260018060a01b0380891691825f5260026020526104988960405f209060018060a01b03165f5260205260405f2090565b546040519260208401947f7830334d17a05ab8aeca8f1778e27182208fc2d454ac7b38a4edc2069ee3a4a6865260408501528a166060840152608083015260a082015260a081526104e8816108f3565b519020611474565b923691610978565b9084610d43565b1561050d576102bf91610df6565b604051638baa579f60e01b8152600490fd5b60405163df4cc36d60e01b8152600490fd5b3461010f57606036600319011261010f5761054a6100f9565b610552610113565b906044359065ffffffffffff8216820361010f576001600160a01b03927f0000000000000000000000000000000000000000000000000000000000000000841633036105e7576105c6936105c192165f52600360205260405f209060018060a01b03165f5260205260405f2090565b610f21565b60408051941515855263ffffffff91909116602085015292915050f35b0390f35b604051637ca475e560e11b8152600490fd5b3461010f57604036600319011261010f576106126100f9565b60243567ffffffffffffffff811161010f575f916106358392369060040161015f565b90816040519283928337810184815203915af46106826106536109ae565b916106746040519384921515602084015260408084015260608301906102c1565b03601f19810183528261092b565b805190602001fd5b3461010f57602036600319011261010f576102bf6106a66100f9565b3361105e565b3461010f575f36600319011261010f576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461010f576106fe3661018d565b909165ffffffffffff8061071142611442565b16911690811061051f576107a6926104f06104f89260018060a01b0380891691825f5260026020526107568960405f209060018060a01b03165f5260205260405f2090565b546040519260208401947f6ab5200f1123a8d51d1695a9e5e757267926b53c6359f90b8873cc7dcc30ea2c865260408501528a166060840152608083015260a082015260a081526104e8816108f3565b1561050d576102bf9161105e565b3461010f57602036600319011261010f576102bf6107d06100f9565b33610df6565b3461010f57608036600319011261010f576107ef6100f9565b6107f7610113565b906044356001600160a01b038116810361010f576064359065ffffffffffff8216820361010f576105e39361082b93610a1f565b6040519182916020835260208301906102c1565b6001600160a01b039081165f908152600360209081526040808320939094168252919091522080548061087d57505060015f5b818060d01b03161490565b5f1990808281011161089d576001925f5260205f2001015460301c610872565b610b9f565b634e487b7160e01b5f52604160045260245ffd5b6040810190811067ffffffffffffffff8211176108d257604052565b6108a2565b6020810190811067ffffffffffffffff8211176108d257604052565b60c0810190811067ffffffffffffffff8211176108d257604052565b60a0810190811067ffffffffffffffff8211176108d257604052565b90601f8019910116810190811067ffffffffffffffff8211176108d257604052565b6040519061095a826108b6565b565b67ffffffffffffffff81116108d257601f01601f191660200190565b9291926109848261095c565b91610992604051938461092b565b82948184528183011161010f578281602093845f960137010152565b3d156109d8573d906109bf8261095c565b916109cd604051938461092b565b82523d5f602084013e565b606090565b5190811515820361010f57565b519063ffffffff8216820361010f57565b919082604091031261010f57610a1c6020610a15846109dd565b93016109ea565b90565b9392915f8060609665ffffffffffff604096875196602096639a15d7a560e01b888a015260018060a01b0380921660248a015216604488015216606486015260648552610a6b8561090f565b85519485610a9686820192639f86fd8560e01b845230602484015289604484015260648301906102c1565b0395610aaa601f199788810183528261092b565b51915afa50610ab76109ae565b8051810190848184840193031261010f57610ad38382016109dd565b90858101519067ffffffffffffffff821161010f57019082603f8301121561010f5783820151610b028161095c565b92610b0f8851948561092b565b8184528584019488838301011161010f57815f9289889301875e8401015215610b7d57908282610b4293510101906109fb565b9390610b4e5750505050565b610a1c93949550610b719051948592830191909163ffffffff6020820193169052565b0390810183528261092b565b8091505191821561010f5701fd5b9081602091031261010f57610a1c906109ea565b634e487b7160e01b5f52601160045260245ffd5b5f1981019190821161089d57565b90600163ffffffff8093160191821161089d57565b91805115610cc55780602080610bf193518301019101610b8b565b91610bfc8382611227565b92610c0d845165ffffffffffff1690565b9065ffffffffffff8085169216828114610cac5782119182610c4c575b5050610c3a57610a1c925061161d565b5050602001516001600160d01b031690565b909150610c598354610bb3565b63ffffffff831614918215610c72575b50505f80610c2a565b610ca4919250610c8d610c87610c9992610bc1565b85611227565b5165ffffffffffff1690565b65ffffffffffff1690565b115f80610c69565b50505050602091909101516001600160d01b0316905090565b50610a1c9161161d565b6001600160a01b039081165f8181526002602090815260408083209590941680835294905291822080546001019055907f8ed32926585579e6191b145240df788165f4957e1135f30a00e08ee8feb9d6809080a3565b60041115610d2f57565b634e487b7160e01b5f52602160045260245ffd5b9091813b610d7e57610d55919261149a565b50610d5f81610d25565b159182610d6b57505090565b6001600160a01b03918216911614919050565b5f918291604051610db3816106746020820194630b135d3f60e11b998a875260248401526040604484015260648301906102c1565b51915afa90610dc06109ae565b82610de8575b82610dd057505090565b90915060208180518101031261010f57602001511490565b915060208251101591610dc6565b90610e32610e2d82610e188560018060a01b03165f52600360205260405f2090565b9060018060a01b03165f5260205260405f2090565b6118dc565b9091506001600160d01b031615610edd5765ffffffffffff80610e5442611442565b16911614610ecb57610e8c610e7d82610e188560018060a01b03165f52600360205260405f2090565b610e8642611442565b90611985565b5050610e988183610ccf565b6001600160a01b0390811691167f1629cd9ad365627cf8408d19c50224af8f3213c1a18ae48062d92e22bddf7de55f80a3565b60405163291bf4b760e21b8152600490fd5b6040516334b09b3960e11b8152600490fd5b906001820180921161089d57565b90604051610f0a816108b6565b915465ffffffffffff8116835260301c6020830152565b8054915f928060058111610ff6575b5092905b838210610fb05750508115610fa457610f5e610f6391610f5384610bb3565b905f5260205f200190565b610efd565b91610f9d610f94610f8e6020610f7f875165ffffffffffff1690565b9601516001600160d01b031690565b93610bb3565b63ffffffff1690565b6001939291565b50505f905f905f905f90565b9092610fbc8185611915565b90835f5265ffffffffffff808360205f20015416908416105f14610fe35750925b90610f34565b93506001810180911115610fdd57610b9f565b90611000826114f2565b820391821161089d57835f5265ffffffffffff808360205f20015416908416105f1461102e57505b5f610f30565b935061103990610eef565b92611028565b9081602091031261010f57610a1c906109dd565b6040513d5f823e3d90fd5b6040516302910f8b60e31b8082526001600160a01b0383811660048401529293916020919082816024817f000000000000000000000000000000000000000000000000000000000000000089165afa9081156111db575f916111f2575b50156111e0576040519081526001600160a01b038316600482015281816024817f000000000000000000000000000000000000000000000000000000000000000088165afa9182156111db575f926111ae575b50501561119c5761111f818461083f565b61118a57806111556111468493610e188760018060a01b03165f52600360205260405f2090565b61114f42611442565b90611a32565b50506111618185610ccf565b1691167f9b730d5b907ee509de729817a2bb37e404418ba569b3a50f36192372f973cb415f80a3565b60405163dcdeaba360e01b8152600490fd5b6040516321f5408d60e01b8152600490fd5b6111cd9250803d106111d4575b6111c5818361092b565b81019061103f565b5f8061110e565b503d6111bb565b611053565b604051630fb9ff9560e41b8152600490fd5b6112099150833d85116111d4576111c5818361092b565b5f6110bb565b6040519061121c826108b6565b5f6020838281520152565b61124c916112469161123761120f565b5061124061120f565b506116eb565b50610efd565b65ffffffffffff81511690602060018060d01b039101511660405191611271836108b6565b8252602082015290565b60ff811461128c57610a1c90611714565b506040515f80546001918160011c926001831690811561136f575b60209060208610831461135b578587528694602086019390811561133c57506001146112dd575b505050610a1c9250038261092b565b92509361130a5f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56390565b945f935b82851061132657505050610a1c9350015f80806112ce565b865485850152958601958795509381019361130e565b92505050610a1c9491925060ff19168252151560051b015f80806112ce565b634e487b7160e01b5f52602260045260245ffd5b93607f16936112a7565b60ff811461138a57610a1c90611714565b506040516001805480821c915f90828116908115611438575b60209060208610831461135b578587528694602086019390811561133c57506001146113d857505050610a1c9250038261092b565b92509361140660015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf690565b945f935b82851061142257505050610a1c9350015f80806112ce565b865485850152958601958795509381019361140a565b93607f16936113a3565b65ffffffffffff90818111611455571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b60429061147f611740565b906040519161190160f01b8352600283015260228201522090565b81519190604183036114ca576114c39250602082015190606060408401519301515f1a9061185a565b9192909190565b50505f9160029190565b81156114de570490565b634e487b7160e01b5f52601260045260245ffd5b6001811115610a1c57600181600160801b81101561160b575b6115b36115a961159f61159561158b6115816115bf97600488600160401b6115ba9a10156115fe575b6401000000008110156115f1575b620100008110156115e4575b6101008110156115d8575b60108110156115cc575b10156115c4575b60030260011c61157a818b6114d4565b0160011c90565b61157a818a6114d4565b61157a81896114d4565b61157a81886114d4565b61157a81876114d4565b61157a81866114d4565b80936114d4565b821190565b900390565b60011b61156a565b811c9160021b91611563565b60081c91811b91611559565b60101c9160081b9161154e565b60201c9160101b91611542565b60401c9160201b91611534565b50600160401b9050608082901c61150b565b908154905f9180600581116116a2575b5091905b82821061165c575050806116455750505f90565b610a1c91610f5361165592610bb3565b5460301c90565b90916116688184611915565b90845f5265ffffffffffff808360205f20015416908416105f1461168f5750915b90611631565b9250600181018091111561168957610b9f565b906116ac826114f2565b820391821161089d57845f5265ffffffffffff808360205f20015416908416105f146116da57505b5f61162d565b92506116e590610eef565b916116d4565b8054821015611700575f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b60ff811690601f821161172e5760405191611271836108b6565b604051632cd44ac360e21b8152600490fd5b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480611831575b1561179b577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815261182b816108f3565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614611772565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084116118d1579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa156111db575f516001600160a01b038116156118c757905f905f90565b505f906001905f90565b5050505f9160039190565b8054806118ed5750505f905f905f90565b5f1991818381011161089d575f5260205f2001015460019165ffffffffffff82169160301c90565b90808216911860011c810180911161089d5790565b8054600160401b8110156108d257611947916001820181556116eb565b91909161197257805160209091015160301b65ffffffffffff191665ffffffffffff91909116179055565b634e487b7160e01b5f525f60045260245ffd5b80549091908015611a1c5761199c6119a791610bb3565b835f5260205f200190565b9081549265ffffffffffff80851690831690818111611a0a57036119dc575050805465ffffffffffff1690555b60301c905f90565b611a0592506119fa6119ec61094d565b65ffffffffffff9093168352565b5f602083015261192a565b6119d4565b604051632520601d60e01b8152600490fd5b50611a2c916119fa6119ec61094d565b5f905f90565b80549091908015611aa95761199c611a4991610bb3565b9081549265ffffffffffff80851690831690818111611a0a5703611a88575050805465ffffffffffff1666010000000000001790555b60301c90600190565b611aa49250611a986119ec61094d565b6001602083015261192a565b611a7f565b50611ab991611a986119ec61094d565b5f9060019056fea2646970667358221220a266476d6bdc15fdd35d2c1b3891517589b2455cbd74bc76637e9d51cf4096a664736f6c63430008190033","sourceMap":"215:929:90:-:0;;;;-1:-1:-1;;;;;215:929:90;;;;;;;;;;;;;;;;;-1:-1:-1;215:929:90;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;215:929:90;;348:4:89;332:21;;3401:45:59;;;:::i;:::-;3393:53;;;;;3467:51;;;:::i;:::-;3456:62;;;;;215:929:90;3542:22:59;;3528:36;;;;;;215:929:90;3591:25:59;;3574:42;;;;;3644:13;3627:30;;215:929:90;;4204:80:59;215:929:90;4204:80:59;;2079:95;;;;;;;;;;;;3644:13;332:21:89;2079:95:59;;;348:4:89;2079:95:59;;;;;4204:80;;3627:30;215:929:90;;;;;;;;;;;;;;;;4194:91:59;;2079:95;3667:48;348:4:89;3725:27:59;;1675:26:98;;-1:-1:-1;1675:26:98;;1711:30;;-1:-1:-1;1711:30:98;;215:929:90;;;;;;332:21:89;215:929:90;;;;;2079:95:59;215:929:90;;;;;3627:30:59;215:929:90;;;;;3725:27:59;215:929:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;215:929:90;;;;;-1:-1:-1;215:929:90;;;;;2887:340:55;215:929:90;;3032:2:55;;3010:24;;;3032:2;;;215:929:90;1854:2:55;215:929:90;;1840:16:55;1836:72;;215:929:90;;;;;2079:95:59;215:929:90;;;;;;1949:36:55;;3050:27;:::o;215:929:90:-;;;;;;;;;;1949:36:55;3050:27;:::o;1836:72::-;215:929:90;;;;1879:18:55;;;;;;;;;;;;215:929:90;;;;;;;;;;;;;;;;355:1;215:929;;;;;;1854:2:55;215:929:90;-1:-1:-1;;215:929:90;;;1879:18:55;;;;3006:215;215:929:90;-1:-1:-1;;;;;215:929:90;;;;355:1;215:929;;;;;;;;;;;;;;3006:215:55;215:929:90;;;;;;;;;;;3006:215:55;215:929:90;;;;;;;;;;;;;;;;355:1;215:929;;;;;;;;;;;;;;;;;355:1;215:929;1390:66:55;3168:42;:::o;215:929:90:-;;;;-1:-1:-1;215:929:90;;;;;;;;;;;;355:1;215:929;;;355:1;215:929;;355:1;215:929;;;;;;;;;;;;;;;;;;;;;355:1;215:929;1390:66:55;3168:42;:::o;215:929:90:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;215:929:90;;;;;;;355:1;215:929;;;;;355:1;215:929;;;;;;;;;;;;;;;;;;;;;;;;;355:1;215:929;;;;;;;;;;;355:1;215:929;;;;;355:1;215:929;;;;;;;;2887:340:55;215:929:90;;3032:2:55;;3010:24;;;3032:2;;;215:929:90;1854:2:55;215:929:90;;1840:16:55;1836:72;;215:929:90;;;;;2079:95:59;215:929:90;;;;;;1949:36:55;;3050:27;:::o;3006:215::-;215:929:90;;;-1:-1:-1;;;;;215:929:90;;;;;;;;;;;;;;;;;;3006:215:55;215:929:90;;;;;;;;;;;3006:215:55;215:929:90;;;;;;;;;;;;;;-1:-1:-1;215:929:90;;;;-1:-1:-1;;;;215:929:90;;;;;;;;;;;;;1390:66:55;;3168:42::o;215:929:90:-;;;;-1:-1:-1;215:929:90;;;;;;;;;;;;-1:-1:-1;215:929:90;;-1:-1:-1;215:929:90;;-1:-1:-1;215:929:90;;;;;;;;;;;;;;;;;;;;;;;;;1390:66:55;3168:42;:::o;215:929:90:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;215:929:90;;;;-1:-1:-1;215:929:90;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;215:929:90;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c8063220d32d4146100f4578063530e1d43146100ef5780636d0fae4a146100ea5780638247a97c146100e557806384b0196e146100e05780639333fbda146100db57806393f79bc3146100d65780639a15d7a5146100d15780639f86fd85146100cc578063b1138ad1146100c7578063c4b5d62c146100c2578063ced44ba7146100bd578063d4610483146100b85763d4a63862146100b3575f80fd5b6107d6565b6107b4565b6106f0565b6106ac565b61068a565b6105f9565b610531565b610432565b6103db565b6102e5565b61029d565b610259565b6101f3565b610129565b600435906001600160a01b038216820361010f57565b5f80fd5b602435906001600160a01b038216820361010f57565b3461010f57604036600319011261010f5760206101556101476100f9565b61014f610113565b9061083f565b6040519015158152f35b9181601f8401121561010f5782359167ffffffffffffffff831161010f576020838186019501011161010f57565b90608060031983011261010f576001600160a01b0391600435838116810361010f5792602435908116810361010f579160443565ffffffffffff8116810361010f57916064359067ffffffffffffffff821161010f576101ef9160040161015f565b9091565b3461010f576020600161024961024f61023a61020e3661018d565b969290949193888060a01b03165f526003895260405f209060018060a01b03165f5260205260405f2090565b92868060d01b03953691610978565b91610bd6565b1614604051908152f35b3461010f575f36600319011261010f576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461010f57602036600319011261010f576102bf6102b96100f9565b33610ccf565b005b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b3461010f575f36600319011261010f5761037e6103217f000000000000000000000000000000000000000000000000000000000000000061127b565b61034a7f0000000000000000000000000000000000000000000000000000000000000000611379565b60405190610357826108d7565b5f825261038c602091604051958695600f60f81b875260e0602088015260e08701906102c1565b9085820360408701526102c1565b4660608501523060808501525f60a085015283810360c0850152602080845192838152019301915f5b8281106103c457505050500390f35b8351855286955093810193928101926001016103b5565b3461010f57604036600319011261010f5760206104296103f96100f9565b610401610113565b6001600160a01b039182165f9081526002855260408082209290931681526020919091522090565b54604051908152f35b3461010f576104403661018d565b909165ffffffffffff8061045342611442565b16911690811061051f576104ff926104f06104f89260018060a01b0380891691825f5260026020526104988960405f209060018060a01b03165f5260205260405f2090565b546040519260208401947f7830334d17a05ab8aeca8f1778e27182208fc2d454ac7b38a4edc2069ee3a4a6865260408501528a166060840152608083015260a082015260a081526104e8816108f3565b519020611474565b923691610978565b9084610d43565b1561050d576102bf91610df6565b604051638baa579f60e01b8152600490fd5b60405163df4cc36d60e01b8152600490fd5b3461010f57606036600319011261010f5761054a6100f9565b610552610113565b906044359065ffffffffffff8216820361010f576001600160a01b03927f0000000000000000000000000000000000000000000000000000000000000000841633036105e7576105c6936105c192165f52600360205260405f209060018060a01b03165f5260205260405f2090565b610f21565b60408051941515855263ffffffff91909116602085015292915050f35b0390f35b604051637ca475e560e11b8152600490fd5b3461010f57604036600319011261010f576106126100f9565b60243567ffffffffffffffff811161010f575f916106358392369060040161015f565b90816040519283928337810184815203915af46106826106536109ae565b916106746040519384921515602084015260408084015260608301906102c1565b03601f19810183528261092b565b805190602001fd5b3461010f57602036600319011261010f576102bf6106a66100f9565b3361105e565b3461010f575f36600319011261010f576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461010f576106fe3661018d565b909165ffffffffffff8061071142611442565b16911690811061051f576107a6926104f06104f89260018060a01b0380891691825f5260026020526107568960405f209060018060a01b03165f5260205260405f2090565b546040519260208401947f6ab5200f1123a8d51d1695a9e5e757267926b53c6359f90b8873cc7dcc30ea2c865260408501528a166060840152608083015260a082015260a081526104e8816108f3565b1561050d576102bf9161105e565b3461010f57602036600319011261010f576102bf6107d06100f9565b33610df6565b3461010f57608036600319011261010f576107ef6100f9565b6107f7610113565b906044356001600160a01b038116810361010f576064359065ffffffffffff8216820361010f576105e39361082b93610a1f565b6040519182916020835260208301906102c1565b6001600160a01b039081165f908152600360209081526040808320939094168252919091522080548061087d57505060015f5b818060d01b03161490565b5f1990808281011161089d576001925f5260205f2001015460301c610872565b610b9f565b634e487b7160e01b5f52604160045260245ffd5b6040810190811067ffffffffffffffff8211176108d257604052565b6108a2565b6020810190811067ffffffffffffffff8211176108d257604052565b60c0810190811067ffffffffffffffff8211176108d257604052565b60a0810190811067ffffffffffffffff8211176108d257604052565b90601f8019910116810190811067ffffffffffffffff8211176108d257604052565b6040519061095a826108b6565b565b67ffffffffffffffff81116108d257601f01601f191660200190565b9291926109848261095c565b91610992604051938461092b565b82948184528183011161010f578281602093845f960137010152565b3d156109d8573d906109bf8261095c565b916109cd604051938461092b565b82523d5f602084013e565b606090565b5190811515820361010f57565b519063ffffffff8216820361010f57565b919082604091031261010f57610a1c6020610a15846109dd565b93016109ea565b90565b9392915f8060609665ffffffffffff604096875196602096639a15d7a560e01b888a015260018060a01b0380921660248a015216604488015216606486015260648552610a6b8561090f565b85519485610a9686820192639f86fd8560e01b845230602484015289604484015260648301906102c1565b0395610aaa601f199788810183528261092b565b51915afa50610ab76109ae565b8051810190848184840193031261010f57610ad38382016109dd565b90858101519067ffffffffffffffff821161010f57019082603f8301121561010f5783820151610b028161095c565b92610b0f8851948561092b565b8184528584019488838301011161010f57815f9289889301875e8401015215610b7d57908282610b4293510101906109fb565b9390610b4e5750505050565b610a1c93949550610b719051948592830191909163ffffffff6020820193169052565b0390810183528261092b565b8091505191821561010f5701fd5b9081602091031261010f57610a1c906109ea565b634e487b7160e01b5f52601160045260245ffd5b5f1981019190821161089d57565b90600163ffffffff8093160191821161089d57565b91805115610cc55780602080610bf193518301019101610b8b565b91610bfc8382611227565b92610c0d845165ffffffffffff1690565b9065ffffffffffff8085169216828114610cac5782119182610c4c575b5050610c3a57610a1c925061161d565b5050602001516001600160d01b031690565b909150610c598354610bb3565b63ffffffff831614918215610c72575b50505f80610c2a565b610ca4919250610c8d610c87610c9992610bc1565b85611227565b5165ffffffffffff1690565b65ffffffffffff1690565b115f80610c69565b50505050602091909101516001600160d01b0316905090565b50610a1c9161161d565b6001600160a01b039081165f8181526002602090815260408083209590941680835294905291822080546001019055907f8ed32926585579e6191b145240df788165f4957e1135f30a00e08ee8feb9d6809080a3565b60041115610d2f57565b634e487b7160e01b5f52602160045260245ffd5b9091813b610d7e57610d55919261149a565b50610d5f81610d25565b159182610d6b57505090565b6001600160a01b03918216911614919050565b5f918291604051610db3816106746020820194630b135d3f60e11b998a875260248401526040604484015260648301906102c1565b51915afa90610dc06109ae565b82610de8575b82610dd057505090565b90915060208180518101031261010f57602001511490565b915060208251101591610dc6565b90610e32610e2d82610e188560018060a01b03165f52600360205260405f2090565b9060018060a01b03165f5260205260405f2090565b6118dc565b9091506001600160d01b031615610edd5765ffffffffffff80610e5442611442565b16911614610ecb57610e8c610e7d82610e188560018060a01b03165f52600360205260405f2090565b610e8642611442565b90611985565b5050610e988183610ccf565b6001600160a01b0390811691167f1629cd9ad365627cf8408d19c50224af8f3213c1a18ae48062d92e22bddf7de55f80a3565b60405163291bf4b760e21b8152600490fd5b6040516334b09b3960e11b8152600490fd5b906001820180921161089d57565b90604051610f0a816108b6565b915465ffffffffffff8116835260301c6020830152565b8054915f928060058111610ff6575b5092905b838210610fb05750508115610fa457610f5e610f6391610f5384610bb3565b905f5260205f200190565b610efd565b91610f9d610f94610f8e6020610f7f875165ffffffffffff1690565b9601516001600160d01b031690565b93610bb3565b63ffffffff1690565b6001939291565b50505f905f905f905f90565b9092610fbc8185611915565b90835f5265ffffffffffff808360205f20015416908416105f14610fe35750925b90610f34565b93506001810180911115610fdd57610b9f565b90611000826114f2565b820391821161089d57835f5265ffffffffffff808360205f20015416908416105f1461102e57505b5f610f30565b935061103990610eef565b92611028565b9081602091031261010f57610a1c906109dd565b6040513d5f823e3d90fd5b6040516302910f8b60e31b8082526001600160a01b0383811660048401529293916020919082816024817f000000000000000000000000000000000000000000000000000000000000000089165afa9081156111db575f916111f2575b50156111e0576040519081526001600160a01b038316600482015281816024817f000000000000000000000000000000000000000000000000000000000000000088165afa9182156111db575f926111ae575b50501561119c5761111f818461083f565b61118a57806111556111468493610e188760018060a01b03165f52600360205260405f2090565b61114f42611442565b90611a32565b50506111618185610ccf565b1691167f9b730d5b907ee509de729817a2bb37e404418ba569b3a50f36192372f973cb415f80a3565b60405163dcdeaba360e01b8152600490fd5b6040516321f5408d60e01b8152600490fd5b6111cd9250803d106111d4575b6111c5818361092b565b81019061103f565b5f8061110e565b503d6111bb565b611053565b604051630fb9ff9560e41b8152600490fd5b6112099150833d85116111d4576111c5818361092b565b5f6110bb565b6040519061121c826108b6565b5f6020838281520152565b61124c916112469161123761120f565b5061124061120f565b506116eb565b50610efd565b65ffffffffffff81511690602060018060d01b039101511660405191611271836108b6565b8252602082015290565b60ff811461128c57610a1c90611714565b506040515f80546001918160011c926001831690811561136f575b60209060208610831461135b578587528694602086019390811561133c57506001146112dd575b505050610a1c9250038261092b565b92509361130a5f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56390565b945f935b82851061132657505050610a1c9350015f80806112ce565b865485850152958601958795509381019361130e565b92505050610a1c9491925060ff19168252151560051b015f80806112ce565b634e487b7160e01b5f52602260045260245ffd5b93607f16936112a7565b60ff811461138a57610a1c90611714565b506040516001805480821c915f90828116908115611438575b60209060208610831461135b578587528694602086019390811561133c57506001146113d857505050610a1c9250038261092b565b92509361140660015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf690565b945f935b82851061142257505050610a1c9350015f80806112ce565b865485850152958601958795509381019361140a565b93607f16936113a3565b65ffffffffffff90818111611455571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b60429061147f611740565b906040519161190160f01b8352600283015260228201522090565b81519190604183036114ca576114c39250602082015190606060408401519301515f1a9061185a565b9192909190565b50505f9160029190565b81156114de570490565b634e487b7160e01b5f52601260045260245ffd5b6001811115610a1c57600181600160801b81101561160b575b6115b36115a961159f61159561158b6115816115bf97600488600160401b6115ba9a10156115fe575b6401000000008110156115f1575b620100008110156115e4575b6101008110156115d8575b60108110156115cc575b10156115c4575b60030260011c61157a818b6114d4565b0160011c90565b61157a818a6114d4565b61157a81896114d4565b61157a81886114d4565b61157a81876114d4565b61157a81866114d4565b80936114d4565b821190565b900390565b60011b61156a565b811c9160021b91611563565b60081c91811b91611559565b60101c9160081b9161154e565b60201c9160101b91611542565b60401c9160201b91611534565b50600160401b9050608082901c61150b565b908154905f9180600581116116a2575b5091905b82821061165c575050806116455750505f90565b610a1c91610f5361165592610bb3565b5460301c90565b90916116688184611915565b90845f5265ffffffffffff808360205f20015416908416105f1461168f5750915b90611631565b9250600181018091111561168957610b9f565b906116ac826114f2565b820391821161089d57845f5265ffffffffffff808360205f20015416908416105f146116da57505b5f61162d565b92506116e590610eef565b916116d4565b8054821015611700575f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b60ff811690601f821161172e5760405191611271836108b6565b604051632cd44ac360e21b8152600490fd5b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480611831575b1561179b577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815261182b816108f3565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614611772565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084116118d1579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa156111db575f516001600160a01b038116156118c757905f905f90565b505f906001905f90565b5050505f9160039190565b8054806118ed5750505f905f905f90565b5f1991818381011161089d575f5260205f2001015460019165ffffffffffff82169160301c90565b90808216911860011c810180911161089d5790565b8054600160401b8110156108d257611947916001820181556116eb565b91909161197257805160209091015160301b65ffffffffffff191665ffffffffffff91909116179055565b634e487b7160e01b5f525f60045260245ffd5b80549091908015611a1c5761199c6119a791610bb3565b835f5260205f200190565b9081549265ffffffffffff80851690831690818111611a0a57036119dc575050805465ffffffffffff1690555b60301c905f90565b611a0592506119fa6119ec61094d565b65ffffffffffff9093168352565b5f602083015261192a565b6119d4565b604051632520601d60e01b8152600490fd5b50611a2c916119fa6119ec61094d565b5f905f90565b80549091908015611aa95761199c611a4991610bb3565b9081549265ffffffffffff80851690831690818111611a0a5703611a88575050805465ffffffffffff1666010000000000001790555b60301c90600190565b611aa49250611a986119ec61094d565b6001602083015261192a565b611a7f565b50611ab991611a986119ec61094d565b5f9060019056fea2646970667358221220a266476d6bdc15fdd35d2c1b3891517589b2455cbd74bc76637e9d51cf4096a664736f6c63430008190033","sourceMap":"215:929:90:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;215:929:90;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;;;;215:929:90;;;;;;:::o;:::-;;;;;;-1:-1:-1;;215:929:90;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;215:929:90;;;;;-1:-1:-1;;;;;215:929:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;2036:1:98;215:929:90;1975:57:98;:22;215:929:90;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;215:929:90;1975:10:98;215:929:90;;;-1:-1:-1;215:929:90;;;;;;;;;;;;;;;;;1975:22:98;215:929:90;;;;;;;;;;:::i;:::-;1975:57:98;;:::i;:::-;215:929:90;1975:62:98;215:929:90;;;;;;;;;;;;-1:-1:-1;;215:929:90;;;;;;851:39:98;-1:-1:-1;;;;;215:929:90;;;;;;;;;;;;-1:-1:-1;;215:929:90;;;;3493:5:98;215:929:90;;:::i;:::-;3481:10:98;3493:5;:::i;:::-;215:929:90;;;;;;;;;;;;;;;;;;-1:-1:-1;215:929:90;;;;;;;;-1:-1:-1;;215:929:90;;;;:::o;:::-;;;;;;-1:-1:-1;;215:929:90;;;;;6099:41:59;:5;:41;:::i;:::-;6554:47;:8;:47;:::i;:::-;215:929:90;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;5590:13:59;215:929:90;;;;5625:4:59;215:929:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;215:929:90;;;;;;;;6584:16:59;215:929:90;;;;;;;;;-1:-1:-1;;215:929:90;;;;;1214:77:98;215:929:90;;:::i;:::-;;;:::i;:::-;-1:-1:-1;;;;;215:929:90;;;-1:-1:-1;215:929:90;;;1214:77:98;215:929:90;;;;;;;;;;;;-1:-1:-1;215:929:90;;;;;;;1214:77:98;215:929:90;;;;;;;;;;;;;;:::i;:::-;;;;837:15:68;819:34;837:15;819:34;:::i;:::-;215:929:90;;;1469:27:98;;;1465:83;;3164:88;215:929:90;4587:179:98;215:929:90;;;;;;;;;;;;-1:-1:-1;215:929:90;4713:6:98;215:929:90;;4713:18:98;215:929:90;;-1:-1:-1;215:929:90;;;;;;;;;;;;;;;;;4713:18:98;215:929:90;;;4644:98:98;215:929:90;4644:98:98;;215:929:90;1082:76:98;215:929:90;;;948:75:98;;215:929:90;;;948:75:98;;;215:929:90;948:75:98;;;215:929:90;948:75:98;;;215:929:90;948:75:98;4644:98;;;;;:::i;:::-;215:929:90;4617:139:98;;4587:179;:::i;:::-;215:929:90;;;;:::i;:::-;3164:88:98;;;:::i;:::-;3163:89;3159:145;;3327:5;;;:::i;3159:145::-;215:929:90;;-1:-1:-1;;;3275:18:98;;215:929:90;;3275:18:98;1465:83;215:929:90;;-1:-1:-1;;;1519:18:98;;215:929:90;;1519:18:98;215:929:90;;;;;;-1:-1:-1;;215:929:90;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;215:929:90;449:5:89;215:929:90;;435:10:89;:19;431:71;;581:61:90;215:929;581:22;215:929;;-1:-1:-1;215:929:90;581:10;215:929;;;-1:-1:-1;215:929:90;;;;;;;;;;;;;;;;;581:22;:61;:::i;:::-;215:929;;;;;;;;;;;;;;;;;;;-1:-1:-1;;215:929:90;;;;;431:71:89;215:929:90;;-1:-1:-1;;;477:14:89;;215:929:90;;477:14:89;215:929:90;;;;;;-1:-1:-1;;215:929:90;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;215:929:90;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;416:25:82;;;;477:31;416:25;;:::i;:::-;215:929:90;;;;;;;;;;477:31:82;;215:929:90;;;;;;;;;;;:::i;:::-;477:31:82;215:929:90;;477:31:82;;;;;;:::i;:::-;518:79;;;215:929:90;518:79:82;;215:929:90;;;;;;-1:-1:-1;;215:929:90;;;;2370:5:98;215:929:90;;:::i;:::-;2358:10:98;2370:5;:::i;215:929:90:-;;;;;;-1:-1:-1;;215:929:90;;;;;;758:37:98;-1:-1:-1;;;;;215:929:90;;;;;;;;;;;;;:::i;:::-;;;;837:15:68;819:34;837:15;819:34;:::i;:::-;215:929:90;;;1469:27:98;;;1465:83;;2610:87;215:929:90;4587:179:98;215:929:90;;;;;;;;;;;;-1:-1:-1;215:929:90;4713:6:98;215:929:90;;4713:18:98;215:929:90;;-1:-1:-1;215:929:90;;;;;;;;;;;;;;;;;4713:18:98;215:929:90;;;4644:98:98;215:929:90;4644:98:98;;215:929:90;948:75:98;215:929:90;;;948:75:98;;215:929:90;;;948:75:98;;;215:929:90;948:75:98;;;215:929:90;948:75:98;;;215:929:90;948:75:98;4644:98;;;;;:::i;2610:87::-;2609:88;2605:144;;2771:5;;;:::i;215:929:90:-;;;;;;-1:-1:-1;;215:929:90;;;;2923:5:98;215:929:90;;:::i;:::-;2911:10:98;2923:5;:::i;215:929:90:-;;;;;;-1:-1:-1;;215:929:90;;;;;;:::i;:::-;;;:::i;:::-;;;;-1:-1:-1;;;;;215:929:90;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;2099:134:98:-;-1:-1:-1;;;;;215:929:90;;;-1:-1:-1;215:929:90;;;2190:10:98;215:929:90;;;;;;;;;;;;;;;;;;;;;10446:8:66;;;:63;;2225:1:98;-1:-1:-1;10446:63:66;215:929:90;;;;;;2190:36:98;2099:134;:::o;10446:63:66:-;215:929:90;;;;;;;;;;2225:1:98;13267:109:93;-1:-1:-1;13267:109:93;215:929:90;-1:-1:-1;13267:109:93;;;215:929:90;;;10446:63:66;;215:929:90;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::o;:::-;948:75:98;215:929:90;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;-1:-1:-1;;215:929:90;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;215:929:90;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;215:929:90;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;:::o;655:487::-;;;;-1:-1:-1;803:12:90;215:929;;;;;;;936:76;;;;;;;;;;215:929;;;;;;;;936:76;;;215:929;;;;;;;;;;;;936:76;;;;;:::i;:::-;215:929;;716:88:89;;215:929:90;716:88:89;;;;;;;;;783:4;936:76:90;716:88:89;;215:929:90;;;;;;;;;;;:::i;:::-;716:88:89;215:929:90;716:88:89;215:929:90;;716:88:89;;;;;;;;:::i;:::-;698:107;;;;;;;:::i;:::-;215:929:90;;857:45:89;;;;;;;;215:929:90;;;;;;857:45:89;;;215:929:90;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;215:929:90;;;;;;;;;;;916:8:89;912:175;;215:929:90;;;857:207;215:929;;857:207;;;;:::i;:::-;1075:61;;;;655:487;;;;:::o;1075:61::-;1108:17;215:929;;;;1108:17;215:929;;1108:17;;;;;215:929;;;;;;;;;;;;1108:17;;;;;;;;;:::i;912:175:89:-;215:929:90;;;;944:22:89;;;940:36;;990:87;;215:929:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;215:929:90;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::o;1818:604:93:-;;215:929:90;;1946:17:93;1942:83;;215:929:90;2049:27:93;215:929:90;2049:27:93;215:929:90;;2049:27:93;;;;;;:::i;:::-;2120:14;;;;;:::i;:::-;215:929:90;;;;;;;;;;;;;;;;2148:22:93;;;2144:77;;2235:21;-1:-1:-1;2235:84:93;;;;1818:604;2231:139;;;;1425:34;;;;:::i;2231:139::-;-1:-1:-1;;2049:27:93;2342:17;215:929:90;-1:-1:-1;;;;;215:929:90;;:::o;2235:84:93:-;215:929:90;;;2269:16:93;215:929:90;;2269:16:93;:::i;:::-;215:929:90;;;2261:24:93;:57;;;;;2235:84;;;;;;;2261:57;2289:29;2298:8;;;2289:18;2298:8;2289:23;2298:8;;:::i;:::-;2289:18;;:::i;:::-;215:929:90;;;;;2289:23:93;215:929:90;;;;2289:29:93;;2261:57;;;;2144:77;-1:-1:-1;;;;2049:27:93;2193:17;;;;215:929:90;-1:-1:-1;;;;;215:929:90;;-1:-1:-1;215:929:90;:::o;1942:83:93:-;1425:34;;;;:::i;4779:173:98:-;-1:-1:-1;;;;;215:929:90;;;-1:-1:-1;215:929:90;;;4876:6:98;215:929:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;4920:25:98;;-1:-1:-1;4920:25:98;4779:173::o;215:929:90:-;;-1:-1:-1;215:929:90;;;:::o;:::-;;;;;;;;;;;;1041:429:61;;;1167:18;;;;1254:33;;;;:::i;:::-;215:929:90;;;;:::i;:::-;1308:33:61;:56;;;;1301:63;;;:::o;1308:56::-;-1:-1:-1;;;;;215:929:90;;;;;1345:19:61;;1301:63;-1:-1:-1;1301:63:61:o;1163:301::-;1189:1;215:929:90;;;;;2105:60:61;;215:929:90;2105:60:61;;;;;;;;;;;;;;215:929:90;;;;;;;;;;;:::i;2105:60:61:-;2074:101;;;;;;;:::i;:::-;2193:42;;;1163:301;2193:134;;;1395:58;;;:::o;2193:134::-;215:929:90;;;2105:60:61;215:929:90;;;2251:29:61;;215:929:90;;;;2105:60:61;2251:29;215:929:90;2251:76:61;1395:58;:::o;2193:42::-;215:929:90;;2105:60:61;215:929:90;;2216:19:61;;2193:42;;;3991:467:98;;5260:30:93;4105:22:98;:15;;;215:929:90;;;;;;;;4105:10:98;215:929:90;;;;;;;4105:15:98;215:929:90;;;;;;;;;;;;;;;;4105:22:98;5260:30:93;:::i;:::-;215:929:90;;-1:-1:-1;;;;;;215:929:90;4161:16:98;4157:66;;215:929:90;837:15:68;819:34;837:15;819:34;:::i;:::-;215:929:90;;;4237:35:98;4233:89;;8310:38:66;4332:22:98;:15;;;215:929:90;;;;;;;;4105:10:98;215:929:90;;;;;;;4332:22:98;819:34:68;837:15;819:34;:::i;:::-;8310:38:66;;:::i;:::-;4411:5:98;;;;;;:::i;:::-;-1:-1:-1;;;;;215:929:90;;;;;4433:18:98;-1:-1:-1;;4433:18:98;3991:467::o;4233:89::-;215:929:90;;-1:-1:-1;;;4295:16:98;;;;;4157:66;215:929:90;;-1:-1:-1;;;4200:12:98;;;;;215:929:90;;3149:1:93;215:929:90;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;2666:855:93:-;215:929:90;;2880:15:93;2838:11;2905:18;;2944:1;2938:7;;2934:241;;2666:855;3199:60;;12687:230;12694:10;;;;;;3274:8;;;;3270:62;;3390:48;215:929:90;3430:7:93;;;;:::i;:::-;3390:48;13267:109;;;;;;13089:293;;3390:48;215:929:90;:::i;:::-;;3498:15:93;3505:7;215:929:90;13267:109:93;215:929:90;;;;;;;;3479:17:93;;215:929:90;-1:-1:-1;;;;;215:929:90;;;;3505:7:93;;:::i;:::-;215:929:90;;;;3498:15:93;3436:1;;3448:66;;2666:855::o;3270:62::-;3298:23;;2838:11;3298:23;2838:11;3298:23;2838:11;3298:23;2838:11;3298:23;:::o;12687:230::-;12734:23;;;;;;:::i;:::-;13267:109;;2838:11;13267:109;215:929:90;13267:109:93;;;2838:11;13267:109;;215:929:90;;;;;-1:-1:-1;12771:136:93;215:929:90;;;12830:10:93;12771:136;;12687:230;;;12771:136;215:929:90;;12891:1:93;215:929:90;;;;;;12771:136:93;215:929:90;;:::i;2934:241:93:-;2981:14;;;;:::i;:::-;215:929:90;;;;;;;13267:109:93;2838:11;13267:109;215:929:90;13267:109:93;;;2838:11;13267:109;;215:929:90;;;;;3013:55:93;3009:156;215:929:90;;;3088:10:93;3009:156;2934:241;;;3009:156;3143:7;;;;;:::i;:::-;3009:156;;;215:929:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3512:473:98;215:929:90;;-1:-1:-1;;;3580:37:98;;;-1:-1:-1;;;;;215:929:90;;;3580:37:98;;;215:929:90;;;3512:473:98;3580:37;;215:929:90;3580:37:98;215:929:90;;;3590:12:98;215:929:90;;3580:37:98;;;;;;;-1:-1:-1;3580:37:98;;;3512:473;3579:38;;3575:84;;215:929:90;;3674:41:98;;;-1:-1:-1;;;;;215:929:90;;3580:37:98;3674:41;;215:929:90;3674:41:98;215:929:90;;;3684:14:98;215:929:90;;3674:41:98;;;;;;;-1:-1:-1;3674:41:98;;;3512:473;3673:42;;;3669:96;;3779:21;;;;:::i;:::-;3775:75;;3860:15;8310:38:66;3860:22:98;:15;;;;215:929:90;;;;;;;;4105:10:98;215:929:90;;;;;;;3860:22:98;819:34:68;837:15;819:34;:::i;:::-;8310:38:66;;:::i;:::-;3939:5:98;;;;;;:::i;:::-;215:929:90;;;3961:17:98;-1:-1:-1;3961:17:98;;3512:473::o;3775:75::-;215:929:90;;-1:-1:-1;;;3823:16:98;;3580:37;;3823:16;3669:96;215:929:90;;-1:-1:-1;;;3738:16:98;;3580:37;;3738:16;3674:41;;;;;;-1:-1:-1;3674:41:98;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;:::i;3575:84::-;215:929:90;;-1:-1:-1;;;3640:8:98;;3580:37;;3640:8;3580:37;;;;;;;;;;;;;;:::i;:::-;;;;215:929:90;;;;;;;:::i;:::-;-1:-1:-1;215:929:90;;;;;;;:::o;5573:258:93:-;215:929:90;5573:258:93;11452:22:66;5573:258:93;215:929:90;;:::i;:::-;;;;:::i;:::-;;11452:22:66;:::i;:::-;215:929:90;;:::i;:::-;;;;;;5805:17:93;215:929:90;;;;;5805:17:93;;215:929:90;;;;;;;;:::i;:::-;;;5805:17:93;5759:65;;215:929:90;5573:258:93;:::o;3358:267:55:-;1390:66;3481:46;;1390:66;;3550:15;;;:::i;3477:142::-;215:929:90;;;;;1390:66:55;;;;;;;;;;;;;;;3477:142;1390:66;;;;;;;;;215:929:90;;;1390:66:55;;215:929:90;;;1390:66:55;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;215:929:90;1390:66:55;;;;;;;215:929:90;1390:66:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1390:66:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;215:929:90;;;;1390:66:55;;;;;215:929:90;1390:66:55;;;;;;;;3358:267;1390:66;3481:46;;1390:66;;3550:15;;;:::i;3477:142::-;-1:-1:-1;215:929:90;;6584:16:59;1390:66:55;;;;;;-1:-1:-1;;1390:66:55;;;;;;;;3477:142;1390:66;;;;;;;;;215:929:90;;;1390:66:55;;215:929:90;;;1390:66:55;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;6584:16:59;1390:66:55;;;;;;;-1:-1:-1;1390:66:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1390:66:55;;;;;;;;;;;;;14296:213:64;215:929:90;14374:24:64;;;;14370:103;;215:929:90;14296:213:64;:::o;14370:103::-;215:929:90;;;;14421:41:64;;;;;;14452:2;14421:41;;;215:929:90;;;;;14421:41:64;4917:176:59;3445:249:60;4917:176:59;5053:20;;:::i;:::-;3445:249:60;;;;-1:-1:-1;;;3445:249:60;;;;;;;;;;;4917:176:59;:::o;2129:778:58:-;215:929:90;;;2129:778:58;2319:2;2299:22;;2319:2;;2751:25;2535:196;;;;;;;;;;;;;;;-1:-1:-1;2535:196:58;2751:25;;:::i;:::-;2744:32;;;;;:::o;2295:606::-;2807:83;;2823:1;2807:83;2827:35;2807:83;;:::o;215:929:90:-;;;;;;;:::o;:::-;;;;;;;;;;;;18080:5181:63;18246:1;18241:6;;;18237:53;;18246:1;19217:14;-1:-1:-1;;;19278:16:63;;;19274:92;;18080:5181;22827:18;22717;22607;22498;22387;22278;23216:28;19383:15;19898:6;19383:15;-1:-1:-1;;;23237:6:63;19383:15;;;19379:90;;18080:5181;19493:7;19486:15;;;19482:90;;18080:5181;19596:7;19589:15;;;19585:89;;18080:5181;19698:6;19691:14;;;19687:87;;18080:5181;19798:6;19791:14;;;19787:87;;18080:5181;19891:14;;19887:61;;18080:5181;20374:1;215:929:90;18246:1:63;215:929:90;22284:6:63;;;;:::i;:::-;215:929:90;;;;;22278:18:63;22393:6;;;;:::i;22387:18::-;22504:6;;;;:::i;22498:18::-;22613:6;;;;:::i;22607:18::-;22723:6;;;;:::i;22717:18::-;22833:6;;;;:::i;22827:18::-;23237:6;;;:::i;:::-;23232:11;;;215:929:90;23216:28:63;215:929:90;;18080:5181:63;:::o;19887:61::-;18246:1;215:929:90;19887:61:63;;19787:87;215:929:90;;;;;19787:87:63;;;19687;215:929:90;;;;;19687:87:63;;;19585:89;215:929:90;;;;;19585:89:63;;;19482:90;215:929:90;;;;;19482:90:63;;;19379;215:929:90;;;;;19379:90:63;;;19274:92;-1:-1:-1;;;;215:929:90;-1:-1:-1;215:929:90;;;;19274:92:63;;9584:606:66;;215:929:90;;9737:15:66;9702:17;9762:18;;9801:1;9795:7;;9791:234;;9584:606;10049:53;;13105:230;13112:10;;;;;;-1:-1:-1;;10120:8:66;;;:63;;9702:17;9584:606;:::o;10120:63::-;10135:48;10168:7;;10135:41;10168:7;;:::i;10135:41::-;215:929:90;;;;;13105:230:66;13152:23;;;;;;:::i;:::-;13267:109:93;;9702:17:66;13267:109:93;215:929:90;13267:109:93;;;9702:17:66;13267:109:93;;215:929:90;;;;;-1:-1:-1;13189:136:66;215:929:90;;;13248:10:66;13189:136;;13105:230;;;13189:136;215:929:90;;13309:1:66;215:929:90;;;;;;13189:136:66;215:929:90;;:::i;9791:234:66:-;9838:14;;;;:::i;:::-;215:929:90;;;;;;;13267:109:93;9702:17:66;13267:109:93;215:929:90;13267:109:93;;;9702:17:66;13267:109:93;;215:929:90;;;;;9870:48:66;9866:149;215:929:90;;;9938:10:66;9866:149;9791:234;;;9866:149;9993:7;;;;;:::i;:::-;9866:149;;;215:929:90;;;;;;;;-1:-1:-1;1390:66:55;;-1:-1:-1;1390:66:55;215:929:90;;-1:-1:-1;215:929:90;:::o;:::-;;;;;;;;;;;;2078:378:55;2661:4;2625:40;;2679:11;2688:2;2679:11;;2675:69;;215:929:90;;;;;;:::i;2675:69:55:-;215:929:90;;-1:-1:-1;;;2713:20:55;;;;;3845:262:59;3929:4;3938:11;-1:-1:-1;;;;;215:929:90;3921:28:59;;:63;;3845:262;3917:184;;;4007:22;4000:29;:::o;3917:184::-;215:929:90;;4204:80:59;;;215:929:90;2079:95:59;215:929:90;;4226:11:59;215:929:90;2079:95:59;;215:929:90;4239:14:59;2079:95;;;215:929:90;4255:13:59;2079:95;;;215:929:90;3929:4:59;2079:95;;;215:929:90;2079:95:59;4204:80;;;;;:::i;:::-;215:929:90;4194:91:59;;4060:30;:::o;3921:63::-;3970:14;;3953:13;:31;3921:63;;5203:1551:58;;;6283:66;6270:79;;6266:164;;215:929:90;;;;;;-1:-1:-1;215:929:90;;;;;;;;;;;;;;;;;;;6541:24:58;;;;;;;;;-1:-1:-1;6541:24:58;-1:-1:-1;;;;;215:929:90;;6579:20:58;6575:113;;6698:49;-1:-1:-1;6698:49:58;-1:-1:-1;5203:1551:58;:::o;6575:113::-;6615:62;-1:-1:-1;6615:62:58;6541:24;6615:62;-1:-1:-1;6615:62:58;:::o;6266:164::-;6365:54;;;6381:1;6365:54;6385:30;6365:54;;:::o;10695:389:66:-;215:929:90;;10871:8:66;;;10895:20;;10833:17;10895:20;10833:17;10895:20;10833:17;10895:20;:::o;10867:211::-;215:929:90;;;;;;;;;;10833:17:66;13267:109:93;;10833:17:66;13267:109:93;;;215:929:90;11014:1:66;215:929:90;;;;;;;11030:37:66;:::o;3595:153:63:-;;3721:5;;;3731;;215:929:90;;;;;;;;;3595:153:63;:::o;215:929:90:-;;;-1:-1:-1;;;215:929:90;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;215:929:90;;;;;;;;;:::o;:::-;;;;;;;;;;;;11657:922:66;215:929:90;;11657:922:66;;;11864:7;;;;11936;11916:28;11936:7;;:::i;:::-;11916:28;13267:109:93;;;;;;13089:293;;11916:28:66;215:929:90;;;;;;;;;;;12103:13:66;;;;12099:89;;12251:14;;;-1:-1:-1;;215:929:90;;;;;;12285:19:66;215:929:90;;12423:25:66;215:929:90;12423:25:66;:::o;12247:163::-;12343:52;215:929:90;;12353:41:66;215:929:90;;:::i;:::-;;;;;;;;12353:41:66;215:929:90;12353:41:66;;;215:929:90;12343:52:66;:::i;:::-;12247:163;;12099:89;215:929:90;;-1:-1:-1;;;12143:30:66;;;;;11860:713;215:929:90;12479:52:66;215:929:90;12489:41:66;215:929:90;;:::i;12479:52:66:-;215:929:90;12545:17:66;215:929:90;12545:17:66;:::o;11657:922::-;215:929:90;;11657:922:66;;;11864:7;;;;11936;11916:28;11936:7;;:::i;11916:28::-;215:929:90;;;;;;;;;;;12103:13:66;;;;12099:89;;12251:14;;;-1:-1:-1;;215:929:90;;;;;;;;12285:19:66;215:929:90;;12423:25:66;215:929:90;12423:25:66;:::o;12247:163::-;12343:52;215:929:90;;12353:41:66;215:929:90;;:::i;12353:41:66:-;215:929:90;12353:41:66;;;215:929:90;12343:52:66;:::i;:::-;12247:163;;11860:713;215:929:90;12479:52:66;215:929:90;12489:41:66;215:929:90;;:::i;12479:52:66:-;11870:1;12545:17;215:929:90;12545:17:66;:::o","linkReferences":{},"immutableReferences":{"49086":[{"start":6009,"length":32}],"49088":[{"start":6196,"length":32}],"49090":[{"start":5955,"length":32}],"49092":[{"start":6088,"length":32}],"49094":[{"start":6126,"length":32}],"49097":[{"start":765,"length":32}],"49100":[{"start":806,"length":32}],"61158":[{"start":1393,"length":32}],"63921":[{"start":1729,"length":32},{"start":4234,"length":32}],"63924":[{"start":622,"length":32},{"start":4317,"length":32}]}},"methodIdentifiers":{"WHERE_REGISTRY()":"6d0fae4a","WHO_REGISTRY()":"c4b5d62c","eip712Domain()":"84b0196e","increaseNonce(address)":"8247a97c","isOptedIn(address,address)":"220d32d4","isOptedInAt(address,address,uint48,bytes)":"530e1d43","nonces(address,address)":"9333fbda","optIn(address)":"b1138ad1","optIn(address,address,uint48,bytes)":"ced44ba7","optInHint(address,address,address,uint48)":"d4a63862","optInHintInternal(address,address,uint48)":"9a15d7a5","optOut(address)":"d4610483","optOut(address,address,uint48,bytes)":"93f79bc3","staticDelegateCall(address,bytes)":"9f86fd85"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AlreadyOptedIn\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CheckpointUnorderedInsertion\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpiredSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExternalCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidShortString\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotOptedIn\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotWhereEntity\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotWho\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OptOutCooldown\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"str\",\"type\":\"string\"}],\"name\":\"StringTooLong\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EIP712DomainChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"}],\"name\":\"IncreaseNonce\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"}],\"name\":\"OptIn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"}],\"name\":\"OptOut\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"WHERE_REGISTRY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WHO_REGISTRY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"}],\"name\":\"increaseNonce\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"}],\"name\":\"isOptedIn\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"isOptedInAt\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"}],\"name\":\"optIn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"deadline\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"optIn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"optInService\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"optInHint\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"optInHintInternal\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"exists\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"hint\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"deadline\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"optOut\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"}],\"name\":\"optOut\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"staticDelegateCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"CheckpointUnorderedInsertion()\":[{\"details\":\"A value was attempted to be inserted on a past checkpoint.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}]},\"events\":{\"EIP712DomainChanged()\":{\"details\":\"MAY be emitted to signal that the domain could have changed.\"},\"IncreaseNonce(address,address)\":{\"params\":{\"where\":\"address of the \\\"where\\\" entity\",\"who\":\"address of the \\\"who\\\"\"}},\"OptIn(address,address)\":{\"params\":{\"where\":\"address of the \\\"where\\\" entity\",\"who\":\"address of the \\\"who\\\"\"}},\"OptOut(address,address)\":{\"params\":{\"where\":\"address of the \\\"where\\\" entity\",\"who\":\"address of the \\\"who\\\"\"}}},\"kind\":\"dev\",\"methods\":{\"eip712Domain()\":{\"details\":\"See {IERC-5267}.\"},\"increaseNonce(address)\":{\"details\":\"It can be used to invalidate a given signature.\",\"params\":{\"where\":\"address of the \\\"where\\\" entity\"}},\"isOptedIn(address,address)\":{\"params\":{\"where\":\"address of the \\\"where\\\" entity\",\"who\":\"address of the \\\"who\\\"\"},\"returns\":{\"_0\":\"if the \\\"who\\\" is opted-in\"}},\"isOptedInAt(address,address,uint48,bytes)\":{\"params\":{\"hint\":\"hint for the checkpoint index\",\"timestamp\":\"time point to get if the \\\"who\\\" is opted-in at\",\"where\":\"address of the \\\"where\\\" entity\",\"who\":\"address of the \\\"who\\\"\"},\"returns\":{\"_0\":\"if the \\\"who\\\" is opted-in at the given timestamp\"}},\"optIn(address)\":{\"params\":{\"where\":\"address of the \\\"where\\\" entity\"}},\"optIn(address,address,uint48,bytes)\":{\"params\":{\"deadline\":\"time point until the signature is valid (inclusively)\",\"signature\":\"signature of the \\\"who\\\"\",\"where\":\"address of the \\\"where\\\" entity\",\"who\":\"address of the \\\"who\\\"\"}},\"optOut(address)\":{\"params\":{\"where\":\"address of the \\\"where\\\" entity\"}},\"optOut(address,address,uint48,bytes)\":{\"params\":{\"deadline\":\"time point until the signature is valid (inclusively)\",\"signature\":\"signature of the \\\"who\\\"\",\"where\":\"address of the \\\"where\\\" entity\",\"who\":\"address of the \\\"who\\\"\"}},\"staticDelegateCall(address,bytes)\":{\"details\":\"It allows to use this contract's storage on-chain.\",\"params\":{\"data\":\"data to make a delegatecall with\",\"target\":\"address of the contract to make a delegatecall to\"}}},\"version\":1},\"userdoc\":{\"events\":{\"IncreaseNonce(address,address)\":{\"notice\":\"Emitted when the nonce of a \\\"who\\\" to a \\\"where\\\" entity is increased.\"},\"OptIn(address,address)\":{\"notice\":\"Emitted when a \\\"who\\\" opts into a \\\"where\\\" entity.\"},\"OptOut(address,address)\":{\"notice\":\"Emitted when a \\\"who\\\" opts out from a \\\"where\\\" entity.\"}},\"kind\":\"user\",\"methods\":{\"WHERE_REGISTRY()\":{\"notice\":\"Get the address of the registry where to opt-in.\"},\"WHO_REGISTRY()\":{\"notice\":\"Get the \\\"who\\\" registry's address.\"},\"increaseNonce(address)\":{\"notice\":\"Increase the nonce of a given \\\"who\\\" to a particular \\\"where\\\" entity.\"},\"isOptedIn(address,address)\":{\"notice\":\"Check if a given \\\"who\\\" is opted-in to a particular \\\"where\\\" entity.\"},\"isOptedInAt(address,address,uint48,bytes)\":{\"notice\":\"Get if a given \\\"who\\\" is opted-in to a particular \\\"where\\\" entity at a given timestamp using a hint.\"},\"nonces(address,address)\":{\"notice\":\"Get the nonce of a given \\\"who\\\" to a particular \\\"where\\\" entity.\"},\"optIn(address)\":{\"notice\":\"Opt-in a calling \\\"who\\\" to a particular \\\"where\\\" entity.\"},\"optIn(address,address,uint48,bytes)\":{\"notice\":\"Opt-in a \\\"who\\\" to a particular \\\"where\\\" entity with a signature.\"},\"optOut(address)\":{\"notice\":\"Opt-out a calling \\\"who\\\" from a particular \\\"where\\\" entity.\"},\"optOut(address,address,uint48,bytes)\":{\"notice\":\"Opt-out a \\\"who\\\" from a particular \\\"where\\\" entity with a signature.\"},\"staticDelegateCall(address,bytes)\":{\"notice\":\"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data).\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/hints/OptInServiceHints.sol\":\"OptInServiceHints\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol\":{\"keccak256\":\"0x4aaaf1c0737dd16e81f0d2b9833c549747a5ede6873bf1444bc72aa572d03e98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eada27d7668eebaea16c3b890aa1b38ffc53965292e26c96f7c44834623f4710\",\"dweb:/ipfs/QmVSWuLtxyCqNbLyY89ptxkvsk4CLLKDQYigEne5Qj8k1L\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x7d94fa0af099a2172eb01f9c8a8a443cbe7e0e43654841563e4e09968efdb549\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65e38fb76b6add407d4557753ae83dd1268e8261195dbe5c19a580d5ba6e4e9a\",\"dweb:/ipfs/QmTkGSJtaQrqjcyWM4AgemeEmKgtDydKPPVRajsUJRQSrK\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0\",\"dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x10eb97d047f8d84fe263a02bb4a656ac6674f6679d74532cc37546289e073a9d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3e41287d40b0c46982f1083d40d32de2761f009c5c51627fe79a7feb0ab1cf5c\",\"dweb:/ipfs/Qme7dbh6HX3ZvUJdbQAcVqXkmyXyfcLiUZRhhon3cU6K8p\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e\",\"dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/SignatureChecker.sol\":{\"keccak256\":\"0xbdc3bb48ccedb818cd75a6d74a16df55a822e9f6d3cc54c59f576f10aab67b5f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2284f25f2478f419d7781573b17a89d0e7c5589a865d55e2d6ed5163aee23aa8\",\"dweb:/ipfs/QmNsr2625APBQiNKpYnX5VcSnYgfUHR9Uzzp9pRXjoDqK7\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44\",\"dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6\",\"dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza\"]},\"src/contracts/common/StaticDelegateCallable.sol\":{\"keccak256\":\"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764\",\"dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD\"]},\"src/contracts/hints/Hints.sol\":{\"keccak256\":\"0x8b565df1ae35993c097a9e642002782a8f451f6fd01809cad6bcd345bdf1b99c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://99a19adb01e350a92f534095b3078229df1f2f83077992d75d58d8684be45971\",\"dweb:/ipfs/QmbmwcuswVbzvwHQFTtrJG86oV98GnfxqYTb8cV8u1acox\"]},\"src/contracts/hints/OptInServiceHints.sol\":{\"keccak256\":\"0x95d9407900d27b9f4a1233b772aeed809c07b2dc5b31cfc9fa77ca26514c49e5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://a13a8877e312d7e6b8b85bde3668c5d84ff5ecc83f762cd573f2b7104c64eb42\",\"dweb:/ipfs/QmYV2J55acuGzCNnS3juABuUHY5U1xc8g8o9jwEyFFdeG5\"]},\"src/contracts/libraries/Checkpoints.sol\":{\"keccak256\":\"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609\",\"dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE\"]},\"src/contracts/service/OptInService.sol\":{\"keccak256\":\"0x4e0932077f2686b7990e10d59deb2535334c0d09e52ef6e57c6ab09eca21c4b1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7c00d311032ed4a1743aca7475f3c86ce15cdfc2218108efc3731c03d34a5278\",\"dweb:/ipfs/QmUGGfVwVhaHr5kS4177yKKYiLYzi5qZpkEmvYxBZqazxf\"]},\"src/interfaces/common/IRegistry.sol\":{\"keccak256\":\"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014\",\"dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK\"]},\"src/interfaces/common/IStaticDelegateCallable.sol\":{\"keccak256\":\"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516\",\"dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi\"]},\"src/interfaces/service/IOptInService.sol\":{\"keccak256\":\"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337\",\"dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AlreadyOptedIn"},{"inputs":[],"type":"error","name":"CheckpointUnorderedInsertion"},{"inputs":[],"type":"error","name":"ExpiredSignature"},{"inputs":[],"type":"error","name":"ExternalCall"},{"inputs":[],"type":"error","name":"InvalidShortString"},{"inputs":[],"type":"error","name":"InvalidSignature"},{"inputs":[],"type":"error","name":"NotOptedIn"},{"inputs":[],"type":"error","name":"NotWhereEntity"},{"inputs":[],"type":"error","name":"NotWho"},{"inputs":[],"type":"error","name":"OptOutCooldown"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintDowncast"},{"inputs":[{"internalType":"string","name":"str","type":"string"}],"type":"error","name":"StringTooLong"},{"inputs":[],"type":"event","name":"EIP712DomainChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":true},{"internalType":"address","name":"where","type":"address","indexed":true}],"type":"event","name":"IncreaseNonce","anonymous":false},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":true},{"internalType":"address","name":"where","type":"address","indexed":true}],"type":"event","name":"OptIn","anonymous":false},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":true},{"internalType":"address","name":"where","type":"address","indexed":true}],"type":"event","name":"OptOut","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"WHERE_REGISTRY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"WHO_REGISTRY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"eip712Domain","outputs":[{"internalType":"bytes1","name":"fields","type":"bytes1"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"version","type":"string"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"verifyingContract","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256[]","name":"extensions","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"where","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"increaseNonce"},{"inputs":[{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"where","type":"address"}],"stateMutability":"view","type":"function","name":"isOptedIn","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"where","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"isOptedInAt","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"where","type":"address"}],"stateMutability":"view","type":"function","name":"nonces","outputs":[{"internalType":"uint256","name":"nonce","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"where","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"optIn"},{"inputs":[{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"where","type":"address"},{"internalType":"uint48","name":"deadline","type":"uint48"},{"internalType":"bytes","name":"signature","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"optIn"},{"inputs":[{"internalType":"address","name":"optInService","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"where","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"optInHint","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"where","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"optInHintInternal","outputs":[{"internalType":"bool","name":"exists","type":"bool"},{"internalType":"uint32","name":"hint","type":"uint32"}]},{"inputs":[{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"where","type":"address"},{"internalType":"uint48","name":"deadline","type":"uint48"},{"internalType":"bytes","name":"signature","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"optOut"},{"inputs":[{"internalType":"address","name":"where","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"optOut"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"staticDelegateCall"}],"devdoc":{"kind":"dev","methods":{"eip712Domain()":{"details":"See {IERC-5267}."},"increaseNonce(address)":{"details":"It can be used to invalidate a given signature.","params":{"where":"address of the \"where\" entity"}},"isOptedIn(address,address)":{"params":{"where":"address of the \"where\" entity","who":"address of the \"who\""},"returns":{"_0":"if the \"who\" is opted-in"}},"isOptedInAt(address,address,uint48,bytes)":{"params":{"hint":"hint for the checkpoint index","timestamp":"time point to get if the \"who\" is opted-in at","where":"address of the \"where\" entity","who":"address of the \"who\""},"returns":{"_0":"if the \"who\" is opted-in at the given timestamp"}},"optIn(address)":{"params":{"where":"address of the \"where\" entity"}},"optIn(address,address,uint48,bytes)":{"params":{"deadline":"time point until the signature is valid (inclusively)","signature":"signature of the \"who\"","where":"address of the \"where\" entity","who":"address of the \"who\""}},"optOut(address)":{"params":{"where":"address of the \"where\" entity"}},"optOut(address,address,uint48,bytes)":{"params":{"deadline":"time point until the signature is valid (inclusively)","signature":"signature of the \"who\"","where":"address of the \"where\" entity","who":"address of the \"who\""}},"staticDelegateCall(address,bytes)":{"details":"It allows to use this contract's storage on-chain.","params":{"data":"data to make a delegatecall with","target":"address of the contract to make a delegatecall to"}}},"version":1},"userdoc":{"kind":"user","methods":{"WHERE_REGISTRY()":{"notice":"Get the address of the registry where to opt-in."},"WHO_REGISTRY()":{"notice":"Get the \"who\" registry's address."},"increaseNonce(address)":{"notice":"Increase the nonce of a given \"who\" to a particular \"where\" entity."},"isOptedIn(address,address)":{"notice":"Check if a given \"who\" is opted-in to a particular \"where\" entity."},"isOptedInAt(address,address,uint48,bytes)":{"notice":"Get if a given \"who\" is opted-in to a particular \"where\" entity at a given timestamp using a hint."},"nonces(address,address)":{"notice":"Get the nonce of a given \"who\" to a particular \"where\" entity."},"optIn(address)":{"notice":"Opt-in a calling \"who\" to a particular \"where\" entity."},"optIn(address,address,uint48,bytes)":{"notice":"Opt-in a \"who\" to a particular \"where\" entity with a signature."},"optOut(address)":{"notice":"Opt-out a calling \"who\" from a particular \"where\" entity."},"optOut(address,address,uint48,bytes)":{"notice":"Opt-out a \"who\" from a particular \"where\" entity with a signature."},"staticDelegateCall(address,bytes)":{"notice":"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data)."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/hints/OptInServiceHints.sol":"OptInServiceHints"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol":{"keccak256":"0x4aaaf1c0737dd16e81f0d2b9833c549747a5ede6873bf1444bc72aa572d03e98","urls":["bzz-raw://eada27d7668eebaea16c3b890aa1b38ffc53965292e26c96f7c44834623f4710","dweb:/ipfs/QmVSWuLtxyCqNbLyY89ptxkvsk4CLLKDQYigEne5Qj8k1L"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol":{"keccak256":"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92","urls":["bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a","dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol":{"keccak256":"0x7d94fa0af099a2172eb01f9c8a8a443cbe7e0e43654841563e4e09968efdb549","urls":["bzz-raw://65e38fb76b6add407d4557753ae83dd1268e8261195dbe5c19a580d5ba6e4e9a","dweb:/ipfs/QmTkGSJtaQrqjcyWM4AgemeEmKgtDydKPPVRajsUJRQSrK"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed","urls":["bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0","dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84","urls":["bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9","dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol":{"keccak256":"0x10eb97d047f8d84fe263a02bb4a656ac6674f6679d74532cc37546289e073a9d","urls":["bzz-raw://3e41287d40b0c46982f1083d40d32de2761f009c5c51627fe79a7feb0ab1cf5c","dweb:/ipfs/Qme7dbh6HX3ZvUJdbQAcVqXkmyXyfcLiUZRhhon3cU6K8p"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575","urls":["bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e","dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/SignatureChecker.sol":{"keccak256":"0xbdc3bb48ccedb818cd75a6d74a16df55a822e9f6d3cc54c59f576f10aab67b5f","urls":["bzz-raw://2284f25f2478f419d7781573b17a89d0e7c5589a865d55e2d6ed5163aee23aa8","dweb:/ipfs/QmNsr2625APBQiNKpYnX5VcSnYgfUHR9Uzzp9pRXjoDqK7"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3","urls":["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03","dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol":{"keccak256":"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f","urls":["bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44","dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc","urls":["bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6","dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza"],"license":"MIT"},"src/contracts/common/StaticDelegateCallable.sol":{"keccak256":"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90","urls":["bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764","dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD"],"license":"BUSL-1.1"},"src/contracts/hints/Hints.sol":{"keccak256":"0x8b565df1ae35993c097a9e642002782a8f451f6fd01809cad6bcd345bdf1b99c","urls":["bzz-raw://99a19adb01e350a92f534095b3078229df1f2f83077992d75d58d8684be45971","dweb:/ipfs/QmbmwcuswVbzvwHQFTtrJG86oV98GnfxqYTb8cV8u1acox"],"license":"BUSL-1.1"},"src/contracts/hints/OptInServiceHints.sol":{"keccak256":"0x95d9407900d27b9f4a1233b772aeed809c07b2dc5b31cfc9fa77ca26514c49e5","urls":["bzz-raw://a13a8877e312d7e6b8b85bde3668c5d84ff5ecc83f762cd573f2b7104c64eb42","dweb:/ipfs/QmYV2J55acuGzCNnS3juABuUHY5U1xc8g8o9jwEyFFdeG5"],"license":"BUSL-1.1"},"src/contracts/libraries/Checkpoints.sol":{"keccak256":"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c","urls":["bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609","dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE"],"license":"MIT"},"src/contracts/service/OptInService.sol":{"keccak256":"0x4e0932077f2686b7990e10d59deb2535334c0d09e52ef6e57c6ab09eca21c4b1","urls":["bzz-raw://7c00d311032ed4a1743aca7475f3c86ce15cdfc2218108efc3731c03d34a5278","dweb:/ipfs/QmUGGfVwVhaHr5kS4177yKKYiLYzi5qZpkEmvYxBZqazxf"],"license":"BUSL-1.1"},"src/interfaces/common/IRegistry.sol":{"keccak256":"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb","urls":["bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014","dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK"],"license":"MIT"},"src/interfaces/common/IStaticDelegateCallable.sol":{"keccak256":"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5","urls":["bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516","dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi"],"license":"MIT"},"src/interfaces/service/IOptInService.sol":{"keccak256":"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a","urls":["bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337","dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24"],"license":"MIT"}},"version":1},"id":90} \ No newline at end of file diff --git a/out/Slasher.sol/Slasher.json b/out/Slasher.sol/Slasher.json index f7722ead..9039508d 100644 --- a/out/Slasher.sol/Slasher.json +++ b/out/Slasher.sol/Slasher.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"vaultFactory","type":"address","internalType":"address"},{"name":"networkMiddlewareService","type":"address","internalType":"address"},{"name":"slasherFactory","type":"address","internalType":"address"},{"name":"entityType","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"BURNER_GAS_LIMIT","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"BURNER_RESERVE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"NETWORK_MIDDLEWARE_SERVICE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"TYPE","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"VAULT_FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"cumulativeSlash","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"cumulativeSlashAt","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isBurnerHook","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"latestSlashedCaptureTimestamp","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"value","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"slash","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","internalType":"uint48"},{"name":"hints","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"slashedAmount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"slashableStake","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"captureTimestamp","type":"uint48","internalType":"uint48"},{"name":"hints","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"staticDelegateCall","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"vault","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"Slash","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"slashedAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","indexed":false,"internalType":"uint48"}],"anonymous":false},{"type":"error","name":"CheckpointUnorderedInsertion","inputs":[]},{"type":"error","name":"InsufficientBurnerGas","inputs":[]},{"type":"error","name":"InsufficientSlash","inputs":[]},{"type":"error","name":"InvalidCaptureTimestamp","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NoBurner","inputs":[]},{"type":"error","name":"NotInitialized","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"NotNetworkMiddleware","inputs":[]},{"type":"error","name":"NotVault","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x6101003461015857601f611ecf38819003918201601f1916830192916001600160401b03918285118486101761015c5781608092859260409788528339810103126101585761004d82610170565b9061005a60208401610170565b926060610068868301610170565b910151918083168303610158577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff82891c16610147578080831603610103575b50505060805260a05260c05260e05251611d4a908161018582396080518161044a015260a051818181610850015261119a015260c0518181816102fd01526114ca015260e0518181816101fc01526104060152f35b6001600160401b0319909116811790915585519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80806100ae565b875163f92ee8a960e01b8152600490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101585756fe60806040526004361015610011575f80fd5b5f3560e01c8063021a815614610104578063103f2907146100ff5780631a2be2c4146100fa578063267de1f3146100f55780632964f8dc146100f05780632c9d45b3146100eb5780632dd31000146100e657806334d098ea146100e1578063439fab91146100dc5780639f86fd85146100d7578063aa8e6489146100d2578063aab3595f146100cd578063bb24fe8a146100c8578063d5c24e1a146100c35763fbfa77cf146100be575f80fd5b610891565b610874565b610831565b61080c565b6107ce565b6105d5565b61049d565b610479565b610435565b6103f1565b6103d5565b610380565b61032c565b6102e8565b61015b565b6001600160a01b0381160361011a57565b5f80fd5b65ffffffffffff81160361011a57565b9181601f8401121561011a578235916001600160401b03831161011a576020838186019501011161011a57565b3461011a5760a036600319011261011a5760043560243561017b81610109565b6064356101878161011e565b6084356001600160401b03811161011a576101a690369060040161012e565b917f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0060028154146102cc5760029055604051635daf681960e11b8152606086901c60048201526001600160a01b036020826024817f000000000000000000000000000000000000000000000000000000000000000085165afa9182156102c7575f92610296575b50339116036102845761028094610247946044359161096a565b61027060017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6040519081529081906020820190565b0390f35b60405163227bf64d60e01b8152600490fd5b6102b991925060203d6020116102c0575b6102b181836106f1565b810190610bba565b905f61022d565b503d6102a7565b61092e565b604051633ee5aeb560e01b8152600490fd5b5f91031261011a57565b3461011a575f36600319011261011a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461011a57604036600319011261011a57602061037861037360243561035181610109565b6004355f526002845260405f209060018060a01b03165f5260205260405f2090565b6113e9565b604051908152f35b3461011a57604036600319011261011a57602065ffffffffffff6103cb6024356103a981610109565b6004355f526001845260405f209060018060a01b03165f5260205260405f2090565b5416604051908152f35b3461011a575f36600319011261011a576020604051614e208152f35b3461011a575f36600319011261011a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461011a575f36600319011261011a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461011a575f36600319011261011a57602060ff5f5460a01c166040519015158152f35b3461011a57602036600319011261011a576001600160401b0360043581811161011a576104ce90369060040161012e565b5f80516020611cf5833981519152549260ff8460401c16159316801590816105cd575b60011490816105c3575b1590816105ba575b506105a8575f80516020611cf5833981519152805467ffffffffffffffff19166001179055610536918361058457611493565b61053c57005b5f80516020611cf5833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f80516020611cf5833981519152805460ff60401b1916600160401b179055611493565b60405163f92ee8a960e01b8152600490fd5b9050155f610503565b303b1591506104fb565b8491506104f1565b3461011a5760408060031936011261011a576004356105f381610109565b602435906001600160401b03821161011a575f809161061961067d94369060040161012e565b908187519283928337810184815203915af43d156106855761066f3d61063e81610721565b9061064b865192836106f1565b81523d5f602083013e5b845194859315156020850152808401526060830190610b6a565b03601f1981018352826106f1565b805190602001fd5b61066f6060610655565b634e487b7160e01b5f52604160045260245ffd5b602081019081106001600160401b038211176106be57604052565b61068f565b604081019081106001600160401b038211176106be57604052565b6001600160401b0381116106be57604052565b90601f801991011681019081106001600160401b038211176106be57604052565b6040519061071f826106c3565b565b6001600160401b0381116106be57601f01601f191660200190565b81601f8201121561011a5780359061075382610721565b9261076160405194856106f1565b8284526020838301011161011a57815f926020809301838601378301015290565b90608060031983011261011a576004359160243561079f81610109565b916044356107ac8161011e565b91606435906001600160401b03821161011a576107cb9160040161073c565b90565b3461011a5760206103786108076107e436610782565b939190925f526002865260405f209060018060a01b03165f5260205260405f2090565b61162d565b3461011a57602061082861081f36610782565b92919091610cfa565b50604051908152f35b3461011a575f36600319011261011a5760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461011a575f36600319011261011a576020604051620249f08152f35b3461011a575f36600319011261011a575f546040516001600160a01b039091168152602090f35b604051906108c5826106a3565b60608252565b9060208282031261011a5781356001600160401b039283821161011a57019060208282031261011a5760405192610901846106a3565b823590811161011a57610914920161073c565b815290565b9081602091031261011a57516107cb8161011e565b6040513d5f823e3d90fd5b634e487b7160e01b5f52601160045260245ffd5b65ffffffffffff918216908216039190821161096557565b610939565b929395949190956109796108b8565b9280610b54575b505061098b42611705565b5f546004906020906109b3906109a7906001600160a01b031681565b6001600160a01b031690565b6040516327f843b560e11b815292839182905afa80156102c7576109ed926109e2925f92610b23575b5061094d565b65ffffffffffff1690565b65ffffffffffff8516908110908115610b0d575b50610afb57610a16610a1f9251858886610cfa565b92908092610f2a565b958615610ae957610aa461066f610a9b610ae4947fe0cbbe1f1e6fd806ca87036fafcebaf7ab5247474a3b20e1c37bb50122c3a88496610a608a878b610f3c565b610a6b8c878b610fca565b610a73610712565b9182526020820152604051928391602083019190916020806040830194805184520151910152565b86898488611136565b610aae858861123f565b610aba858883876112c4565b6040805188815265ffffffffffff90961660208701526001600160a01b0390911694918291820190565b0390a3565b60405163167f871760e31b8152600490fd5b604051631357ac9160e11b8152600490fd5b9050610b1b6109e242611705565b11155f610a01565b610b4691925060203d602011610b4d575b610b3e81836106f1565b810190610919565b905f6109dc565b503d610b34565b610b629293508101906108cb565b905f80610980565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b5f9081526002602090815260408083206001600160a01b039094168352929052206107cb92919061162d565b9081602091031261011a57516107cb81610109565b60405190610bdc826106c3565b60606020838281520152565b81601f8201121561011a57805190610bff82610721565b92610c0d60405194856106f1565b8284526020838301011161011a57815f9260208093018386015e8301015290565b9060208282031261011a5781516001600160401b039283821161011a57019060408282031261011a5760405192610c64846106c3565b825181811161011a5782610c79918501610be8565b8452602083015190811161011a57610c919201610be8565b602082015290565b9081602091031261011a575190565b9081526001600160a01b03909116602082015265ffffffffffff90911660408201526080606082018190526107cb92910190610b6a565b5f1981019190821161096557565b9190820391821161096557565b92610d03610bcf565b90805180610f10575b5050610d1742611705565b5f54909490610d30906109a7906001600160a01b031681565b93604051956327f843b560e11b875260209687816004818a5afa80156102c757610d64926109e2925f92610ef8575061094d565b65ffffffffffff8216908110908115610ee1575b8115610eb0575b50610ea4578560049560405196878092630ce9b79360e41b82525afa9485156102c757610dd19587915f91610e87575b50845190604051808099819463e02f693760e01b8352878b8a60048601610ca8565b03916001600160a01b03165afa9384156102c757610e43955f95610e46575b5092610e388593610e3e93610e3896869a610e2f61037383610e1a875f52600260205260405f2090565b9060018060a01b03165f5260205260405f2090565b95015192610b8e565b90610ced565b610f2a565b91565b610e3e929550610e38949193610e74610e38928a3d8c11610e80575b610e6c81836106f1565b810190610c99565b96935093919450610df0565b503d610e62565b610e9e9150823d84116102c0576102b181836106f1565b5f610daf565b5050505050505f905f90565b9050610eda6109e2610ece87610e1a875f52600160205260405f2090565b5465ffffffffffff1690565b115f610d7f565b9050610eef6109e242611705565b81101590610d78565b610b469192508a3d8c11610b4d57610b3e81836106f1565b610f239250602080918301019101610c2e565b5f80610d0c565b9080821015610f37575090565b905090565b919091805f52600160205265ffffffffffff80610f6c8560405f209060018060a01b03165f5260205260405f2090565b541690831611610f7b57505050565b61071f92610fa3915f52600160205260405f209060018060a01b03165f5260205260405f2090565b9065ffffffffffff1665ffffffffffff19825416179055565b906001820180921161096557565b9190825f526002602052611022610373610ff78360405f209060018060a01b03165f5260205260405f2090565b9261100142611705565b955f52600260205260405f209060018060a01b03165f5260205260405f2090565b9182018092116109655760018101908154156110c6575b61104281611961565b509490835495611051846113e9565b50816110b1575b50156110905750505f1983019283116109655761071f92611078916113c0565b90919082549060031b91821b915f19901b1916179055565b61071f946110aa926001600160d01b039091169190611a38565b5050611764565b65ffffffffffff83811691161490505f611058565b6110cf82611737565b611039565b606060206107cb938184526001600160401b03815116828501520151916040808201520190610b6a565b919360a0936107cb969565ffffffffffff938552600180871b0316602085015260408401521660608201528160808201520190610b6a565b929390600460206111536109a76109a75f5460018060a01b031690565b604051630ce9b79360e41b815292839182905afa9081156102c75761066f916111d1915f91611220575b506001600160a01b031693611190610712565b6001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152906020820152604051928391602083016110d4565b823b1561011a575f946111fc86926040519889978896879563724ab0f760e11b8752600487016110fe565b03925af180156102c75761120d5750565b8061121a61071f926106de565b806102de565b611239915060203d6020116102c0576102b181836106f1565b5f61117d565b5f8054604051631c9e38c760e21b8152600481019390935265ffffffffffff9390931660248301529091602091839160449183916001600160a01b03165af180156102c75761128b5750565b6112a39060203d602011610e8057610e6c81836106f1565b50565b81156112b0570490565b634e487b7160e01b5f52601260045260245ffd5b92905f549060ff8260a01c166112dc575b5050505050565b6040516313c085b760e11b815291602090839060049082906001600160a01b03165afa9182156102c7575f92611399575b5060405163065c1e0360e01b6020820190815260248201969096526001600160a01b039091166044820152606481019390935265ffffffffffff90911660848301526113668260a481015b03601f1981018452836106f1565b6202a15c5a10611387575f928380935192620249f0f1505f808080806112d5565b604051632153f33560e21b8152600490fd5b61136692506113b96113589160203d6020116102c0576102b181836106f1565b925061130d565b80548210156113d5575f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b80548061141e57505f5b6001600160d01b0381161561141857600161140e92016113c0565b90549060031b1c90565b50505f90565b5f1990808281011161096557825f5260205f2001015460301c6113f3565b91909160408184031261011a57803561145481610109565b9260208201356001600160401b03811161011a576107cb920161073c565b5190811515820361011a57565b9081602091031261011a576107cb90611472565b61149f9181019061143c565b6040516302910f8b60e31b81526001600160a01b0392831660048201819052929160209182816024817f000000000000000000000000000000000000000000000000000000000000000088165afa9081156102c7575f916115cf575b50156115bd578161152f600492611510611787565b5f80546001600160a01b0319166001600160a01b0389161790556117bd565b94604051928380926313c085b760e11b82525afa9182156102c7575f926115a0575b5050161580611596575b611584575161071f9015155f805460ff60a01b191691151560a01b60ff60a01b16919091179055565b60405163d2420f5960e01b8152600490fd5b508051151561155b565b6115b69250803d106102c0576102b181836106f1565b5f80611551565b6040516362df054560e01b8152600490fd5b6115ef9150833d85116115f5575b6115e781836106f1565b81019061147f565b5f6114fb565b503d6115dd565b9081602091031261011a575163ffffffff8116810361011a5790565b90600163ffffffff8093160191821161096557565b918051156116fb5780602080611648935183010191016115fc565b9161165383826118d5565b92611664845165ffffffffffff1690565b9065ffffffffffff80851692168281146116ef578211918261169a575b5050611691576107cb9250611805565b50506020015190565b9091506116a78354610cdf565b63ffffffff8316149182156116c0575b50505f80611681565b6116e79192506116db6116d56109e292611618565b856118d5565b5165ffffffffffff1690565b115f806116b7565b50505050506020015190565b506107cb91611805565b65ffffffffffff90818111611718571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b8054600160401b8110156106be57611754916001820181556113c0565b8154905f199060031b1b19169055565b90815491600160401b8310156106be578261107891600161071f950181556113c0565b61178f6119b0565b6117976119b0565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5f6040516117ca816106a3565b5260208180518101031261011a576020906040516117e7816106a3565b6117ff6040519384936117f9856106a3565b01611472565b82525290565b908154905f82916005841161186f575b611820935084611c95565b8061184857505f905b6001600160d01b03821615611418576107cb91600161140e92016113c0565b61186261185761186992610cdf565b835f5260205f200190565b5460301c90565b90611829565b919261187a81611b57565b81039081116109655761182093855f5265ffffffffffff808360205f20015416908516105f146118ab575091611815565b9291506118b790610fbc565b90611815565b604051906118ca826106c3565b5f6020838281520152565b906118fe6118f861191f926118e86118bd565b506118f16118bd565b50846113c0565b5061193d565b91600165ffffffffffff845116936020828060d01b039101511691016113c0565b9054906040519261192f846106c3565b835260031b1c602082015290565b9060405161194a816106c3565b915465ffffffffffff8116835260301c6020830152565b8054806119725750505f905f905f90565b5f199080828101116109655761198f925f5260205f20010161193d565b9065ffffffffffff82511691602060018060d01b0391015116906001929190565b60ff5f80516020611cf58339815191525460401c16156119cc57565b604051631afcd79f60e31b8152600490fd5b8054600160401b8110156106be576119fb916001820181556113c0565b611a2557815160209092015160301b65ffffffffffff191665ffffffffffff909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b805492939291908215611b2e57611a59611a5461185785610cdf565b61193d565b90611a6a825165ffffffffffff1690565b65ffffffffffff84811691168110611b1c57611ae0946020948892611a986109e2875165ffffffffffff1690565b03611ae45750611ad292611aae611ab992610cdf565b905f5260205f200190565b9065ffffffffffff82549181199060301b169116179055565b01516001600160d01b031690565b9190565b915050611b1791611b04611af6610712565b65ffffffffffff9093168352565b6001600160d01b038816828601526119de565b611ad2565b604051632520601d60e01b8152600490fd5b611b529250611b3e611af6610712565b6001600160d01b03851660208301526119de565b5f9190565b8015611c905780611c29611c22611c18611c0e611c04611bfa611bf0611be660016107cb9a5f908b60801c80611c84575b508060401c80611c77575b508060201c80611c6a575b508060101c80611c5d575b508060081c80611c50575b508060041c80611c43575b508060021c80611c36575b50821c611c2f575b811c1b611bdf818b6112a6565b0160011c90565b611bdf818a6112a6565b611bdf81896112a6565b611bdf81886112a6565b611bdf81876112a6565b611bdf81866112a6565b611bdf81856112a6565b80926112a6565b90610f2a565b8101611bd2565b600291509101905f611bca565b600491509101905f611bbf565b600891509101905f611bb4565b601091509101905f611ba9565b602091509101905f611b9e565b604091509101905f611b93565b9150506080905f611b88565b505f90565b91905b838210611ca55750505090565b9091928083169080841860011c820180921161096557845f5265ffffffffffff808360205f20015416908416105f14611ce25750925b9190611c98565b939250611cee90610fbc565b91611cdb56fef0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212201cb882c312b55bd78905b97324f1dbe4c6f9bc2ebd77cd8f2ad2c6521b0531d864736f6c63430008190033","sourceMap":"445:2048:93:-:0;;;;;;;;;;;;;-1:-1:-1;;445:2048:93;;;;;-1:-1:-1;;;;;445:2048:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;8837:64:25;445:2048:93;;;;;;;;;7896:76:25;;445:2048:93;;;;7985:34:25;7981:146;;-1:-1:-1;525:17:69;;;445:2048:93;525:17:69;552:12;;2353:28:92;;2391:53;;445:2048:93;;;;;;;;;;;;;552:12:69;445:2048:93;;;;;;;;;;2353:28:92;445:2048:93;;;;;;;;;;2391:53:92;445:2048:93;;;;;;;;;;;7981:146:25;-1:-1:-1;;;;;;445:2048:93;;;;;;;;;;;;;8087:29:25;;445:2048:93;;8087:29:25;7981:146;;;;;7896:76;445:2048:93;;-1:-1:-1;;;7938:23:25;;;;;445:2048:93;-1:-1:-1;445:2048:93;;;;;;-1:-1:-1;445:2048:93;;;;;-1:-1:-1;445:2048:93;;;;-1:-1:-1;;;;;445:2048:93;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c8063021a815614610104578063103f2907146100ff5780631a2be2c4146100fa578063267de1f3146100f55780632964f8dc146100f05780632c9d45b3146100eb5780632dd31000146100e657806334d098ea146100e1578063439fab91146100dc5780639f86fd85146100d7578063aa8e6489146100d2578063aab3595f146100cd578063bb24fe8a146100c8578063d5c24e1a146100c35763fbfa77cf146100be575f80fd5b610891565b610874565b610831565b61080c565b6107ce565b6105d5565b61049d565b610479565b610435565b6103f1565b6103d5565b610380565b61032c565b6102e8565b61015b565b6001600160a01b0381160361011a57565b5f80fd5b65ffffffffffff81160361011a57565b9181601f8401121561011a578235916001600160401b03831161011a576020838186019501011161011a57565b3461011a5760a036600319011261011a5760043560243561017b81610109565b6064356101878161011e565b6084356001600160401b03811161011a576101a690369060040161012e565b917f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0060028154146102cc5760029055604051635daf681960e11b8152606086901c60048201526001600160a01b036020826024817f000000000000000000000000000000000000000000000000000000000000000085165afa9182156102c7575f92610296575b50339116036102845761028094610247946044359161096a565b61027060017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6040519081529081906020820190565b0390f35b60405163227bf64d60e01b8152600490fd5b6102b991925060203d6020116102c0575b6102b181836106f1565b810190610bba565b905f61022d565b503d6102a7565b61092e565b604051633ee5aeb560e01b8152600490fd5b5f91031261011a57565b3461011a575f36600319011261011a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461011a57604036600319011261011a57602061037861037360243561035181610109565b6004355f526002845260405f209060018060a01b03165f5260205260405f2090565b6113e9565b604051908152f35b3461011a57604036600319011261011a57602065ffffffffffff6103cb6024356103a981610109565b6004355f526001845260405f209060018060a01b03165f5260205260405f2090565b5416604051908152f35b3461011a575f36600319011261011a576020604051614e208152f35b3461011a575f36600319011261011a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461011a575f36600319011261011a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461011a575f36600319011261011a57602060ff5f5460a01c166040519015158152f35b3461011a57602036600319011261011a576001600160401b0360043581811161011a576104ce90369060040161012e565b5f80516020611cf5833981519152549260ff8460401c16159316801590816105cd575b60011490816105c3575b1590816105ba575b506105a8575f80516020611cf5833981519152805467ffffffffffffffff19166001179055610536918361058457611493565b61053c57005b5f80516020611cf5833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f80516020611cf5833981519152805460ff60401b1916600160401b179055611493565b60405163f92ee8a960e01b8152600490fd5b9050155f610503565b303b1591506104fb565b8491506104f1565b3461011a5760408060031936011261011a576004356105f381610109565b602435906001600160401b03821161011a575f809161061961067d94369060040161012e565b908187519283928337810184815203915af43d156106855761066f3d61063e81610721565b9061064b865192836106f1565b81523d5f602083013e5b845194859315156020850152808401526060830190610b6a565b03601f1981018352826106f1565b805190602001fd5b61066f6060610655565b634e487b7160e01b5f52604160045260245ffd5b602081019081106001600160401b038211176106be57604052565b61068f565b604081019081106001600160401b038211176106be57604052565b6001600160401b0381116106be57604052565b90601f801991011681019081106001600160401b038211176106be57604052565b6040519061071f826106c3565b565b6001600160401b0381116106be57601f01601f191660200190565b81601f8201121561011a5780359061075382610721565b9261076160405194856106f1565b8284526020838301011161011a57815f926020809301838601378301015290565b90608060031983011261011a576004359160243561079f81610109565b916044356107ac8161011e565b91606435906001600160401b03821161011a576107cb9160040161073c565b90565b3461011a5760206103786108076107e436610782565b939190925f526002865260405f209060018060a01b03165f5260205260405f2090565b61162d565b3461011a57602061082861081f36610782565b92919091610cfa565b50604051908152f35b3461011a575f36600319011261011a5760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461011a575f36600319011261011a576020604051620249f08152f35b3461011a575f36600319011261011a575f546040516001600160a01b039091168152602090f35b604051906108c5826106a3565b60608252565b9060208282031261011a5781356001600160401b039283821161011a57019060208282031261011a5760405192610901846106a3565b823590811161011a57610914920161073c565b815290565b9081602091031261011a57516107cb8161011e565b6040513d5f823e3d90fd5b634e487b7160e01b5f52601160045260245ffd5b65ffffffffffff918216908216039190821161096557565b610939565b929395949190956109796108b8565b9280610b54575b505061098b42611705565b5f546004906020906109b3906109a7906001600160a01b031681565b6001600160a01b031690565b6040516327f843b560e11b815292839182905afa80156102c7576109ed926109e2925f92610b23575b5061094d565b65ffffffffffff1690565b65ffffffffffff8516908110908115610b0d575b50610afb57610a16610a1f9251858886610cfa565b92908092610f2a565b958615610ae957610aa461066f610a9b610ae4947fe0cbbe1f1e6fd806ca87036fafcebaf7ab5247474a3b20e1c37bb50122c3a88496610a608a878b610f3c565b610a6b8c878b610fca565b610a73610712565b9182526020820152604051928391602083019190916020806040830194805184520151910152565b86898488611136565b610aae858861123f565b610aba858883876112c4565b6040805188815265ffffffffffff90961660208701526001600160a01b0390911694918291820190565b0390a3565b60405163167f871760e31b8152600490fd5b604051631357ac9160e11b8152600490fd5b9050610b1b6109e242611705565b11155f610a01565b610b4691925060203d602011610b4d575b610b3e81836106f1565b810190610919565b905f6109dc565b503d610b34565b610b629293508101906108cb565b905f80610980565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b5f9081526002602090815260408083206001600160a01b039094168352929052206107cb92919061162d565b9081602091031261011a57516107cb81610109565b60405190610bdc826106c3565b60606020838281520152565b81601f8201121561011a57805190610bff82610721565b92610c0d60405194856106f1565b8284526020838301011161011a57815f9260208093018386015e8301015290565b9060208282031261011a5781516001600160401b039283821161011a57019060408282031261011a5760405192610c64846106c3565b825181811161011a5782610c79918501610be8565b8452602083015190811161011a57610c919201610be8565b602082015290565b9081602091031261011a575190565b9081526001600160a01b03909116602082015265ffffffffffff90911660408201526080606082018190526107cb92910190610b6a565b5f1981019190821161096557565b9190820391821161096557565b92610d03610bcf565b90805180610f10575b5050610d1742611705565b5f54909490610d30906109a7906001600160a01b031681565b93604051956327f843b560e11b875260209687816004818a5afa80156102c757610d64926109e2925f92610ef8575061094d565b65ffffffffffff8216908110908115610ee1575b8115610eb0575b50610ea4578560049560405196878092630ce9b79360e41b82525afa9485156102c757610dd19587915f91610e87575b50845190604051808099819463e02f693760e01b8352878b8a60048601610ca8565b03916001600160a01b03165afa9384156102c757610e43955f95610e46575b5092610e388593610e3e93610e3896869a610e2f61037383610e1a875f52600260205260405f2090565b9060018060a01b03165f5260205260405f2090565b95015192610b8e565b90610ced565b610f2a565b91565b610e3e929550610e38949193610e74610e38928a3d8c11610e80575b610e6c81836106f1565b810190610c99565b96935093919450610df0565b503d610e62565b610e9e9150823d84116102c0576102b181836106f1565b5f610daf565b5050505050505f905f90565b9050610eda6109e2610ece87610e1a875f52600160205260405f2090565b5465ffffffffffff1690565b115f610d7f565b9050610eef6109e242611705565b81101590610d78565b610b469192508a3d8c11610b4d57610b3e81836106f1565b610f239250602080918301019101610c2e565b5f80610d0c565b9080821015610f37575090565b905090565b919091805f52600160205265ffffffffffff80610f6c8560405f209060018060a01b03165f5260205260405f2090565b541690831611610f7b57505050565b61071f92610fa3915f52600160205260405f209060018060a01b03165f5260205260405f2090565b9065ffffffffffff1665ffffffffffff19825416179055565b906001820180921161096557565b9190825f526002602052611022610373610ff78360405f209060018060a01b03165f5260205260405f2090565b9261100142611705565b955f52600260205260405f209060018060a01b03165f5260205260405f2090565b9182018092116109655760018101908154156110c6575b61104281611961565b509490835495611051846113e9565b50816110b1575b50156110905750505f1983019283116109655761071f92611078916113c0565b90919082549060031b91821b915f19901b1916179055565b61071f946110aa926001600160d01b039091169190611a38565b5050611764565b65ffffffffffff83811691161490505f611058565b6110cf82611737565b611039565b606060206107cb938184526001600160401b03815116828501520151916040808201520190610b6a565b919360a0936107cb969565ffffffffffff938552600180871b0316602085015260408401521660608201528160808201520190610b6a565b929390600460206111536109a76109a75f5460018060a01b031690565b604051630ce9b79360e41b815292839182905afa9081156102c75761066f916111d1915f91611220575b506001600160a01b031693611190610712565b6001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152906020820152604051928391602083016110d4565b823b1561011a575f946111fc86926040519889978896879563724ab0f760e11b8752600487016110fe565b03925af180156102c75761120d5750565b8061121a61071f926106de565b806102de565b611239915060203d6020116102c0576102b181836106f1565b5f61117d565b5f8054604051631c9e38c760e21b8152600481019390935265ffffffffffff9390931660248301529091602091839160449183916001600160a01b03165af180156102c75761128b5750565b6112a39060203d602011610e8057610e6c81836106f1565b50565b81156112b0570490565b634e487b7160e01b5f52601260045260245ffd5b92905f549060ff8260a01c166112dc575b5050505050565b6040516313c085b760e11b815291602090839060049082906001600160a01b03165afa9182156102c7575f92611399575b5060405163065c1e0360e01b6020820190815260248201969096526001600160a01b039091166044820152606481019390935265ffffffffffff90911660848301526113668260a481015b03601f1981018452836106f1565b6202a15c5a10611387575f928380935192620249f0f1505f808080806112d5565b604051632153f33560e21b8152600490fd5b61136692506113b96113589160203d6020116102c0576102b181836106f1565b925061130d565b80548210156113d5575f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b80548061141e57505f5b6001600160d01b0381161561141857600161140e92016113c0565b90549060031b1c90565b50505f90565b5f1990808281011161096557825f5260205f2001015460301c6113f3565b91909160408184031261011a57803561145481610109565b9260208201356001600160401b03811161011a576107cb920161073c565b5190811515820361011a57565b9081602091031261011a576107cb90611472565b61149f9181019061143c565b6040516302910f8b60e31b81526001600160a01b0392831660048201819052929160209182816024817f000000000000000000000000000000000000000000000000000000000000000088165afa9081156102c7575f916115cf575b50156115bd578161152f600492611510611787565b5f80546001600160a01b0319166001600160a01b0389161790556117bd565b94604051928380926313c085b760e11b82525afa9182156102c7575f926115a0575b5050161580611596575b611584575161071f9015155f805460ff60a01b191691151560a01b60ff60a01b16919091179055565b60405163d2420f5960e01b8152600490fd5b508051151561155b565b6115b69250803d106102c0576102b181836106f1565b5f80611551565b6040516362df054560e01b8152600490fd5b6115ef9150833d85116115f5575b6115e781836106f1565b81019061147f565b5f6114fb565b503d6115dd565b9081602091031261011a575163ffffffff8116810361011a5790565b90600163ffffffff8093160191821161096557565b918051156116fb5780602080611648935183010191016115fc565b9161165383826118d5565b92611664845165ffffffffffff1690565b9065ffffffffffff80851692168281146116ef578211918261169a575b5050611691576107cb9250611805565b50506020015190565b9091506116a78354610cdf565b63ffffffff8316149182156116c0575b50505f80611681565b6116e79192506116db6116d56109e292611618565b856118d5565b5165ffffffffffff1690565b115f806116b7565b50505050506020015190565b506107cb91611805565b65ffffffffffff90818111611718571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b8054600160401b8110156106be57611754916001820181556113c0565b8154905f199060031b1b19169055565b90815491600160401b8310156106be578261107891600161071f950181556113c0565b61178f6119b0565b6117976119b0565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5f6040516117ca816106a3565b5260208180518101031261011a576020906040516117e7816106a3565b6117ff6040519384936117f9856106a3565b01611472565b82525290565b908154905f82916005841161186f575b611820935084611c95565b8061184857505f905b6001600160d01b03821615611418576107cb91600161140e92016113c0565b61186261185761186992610cdf565b835f5260205f200190565b5460301c90565b90611829565b919261187a81611b57565b81039081116109655761182093855f5265ffffffffffff808360205f20015416908516105f146118ab575091611815565b9291506118b790610fbc565b90611815565b604051906118ca826106c3565b5f6020838281520152565b906118fe6118f861191f926118e86118bd565b506118f16118bd565b50846113c0565b5061193d565b91600165ffffffffffff845116936020828060d01b039101511691016113c0565b9054906040519261192f846106c3565b835260031b1c602082015290565b9060405161194a816106c3565b915465ffffffffffff8116835260301c6020830152565b8054806119725750505f905f905f90565b5f199080828101116109655761198f925f5260205f20010161193d565b9065ffffffffffff82511691602060018060d01b0391015116906001929190565b60ff5f80516020611cf58339815191525460401c16156119cc57565b604051631afcd79f60e31b8152600490fd5b8054600160401b8110156106be576119fb916001820181556113c0565b611a2557815160209092015160301b65ffffffffffff191665ffffffffffff909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b805492939291908215611b2e57611a59611a5461185785610cdf565b61193d565b90611a6a825165ffffffffffff1690565b65ffffffffffff84811691168110611b1c57611ae0946020948892611a986109e2875165ffffffffffff1690565b03611ae45750611ad292611aae611ab992610cdf565b905f5260205f200190565b9065ffffffffffff82549181199060301b169116179055565b01516001600160d01b031690565b9190565b915050611b1791611b04611af6610712565b65ffffffffffff9093168352565b6001600160d01b038816828601526119de565b611ad2565b604051632520601d60e01b8152600490fd5b611b529250611b3e611af6610712565b6001600160d01b03851660208301526119de565b5f9190565b8015611c905780611c29611c22611c18611c0e611c04611bfa611bf0611be660016107cb9a5f908b60801c80611c84575b508060401c80611c77575b508060201c80611c6a575b508060101c80611c5d575b508060081c80611c50575b508060041c80611c43575b508060021c80611c36575b50821c611c2f575b811c1b611bdf818b6112a6565b0160011c90565b611bdf818a6112a6565b611bdf81896112a6565b611bdf81886112a6565b611bdf81876112a6565b611bdf81866112a6565b611bdf81856112a6565b80926112a6565b90610f2a565b8101611bd2565b600291509101905f611bca565b600491509101905f611bbf565b600891509101905f611bb4565b601091509101905f611ba9565b602091509101905f611b9e565b604091509101905f611b93565b9150506080905f611b88565b505f90565b91905b838210611ca55750505090565b9091928083169080841860011c820180921161096557845f5265ffffffffffff808360205f20015416908416105f14611ce25750925b9190611c98565b939250611cee90610fbc565b91611cdb56fef0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212201cb882c312b55bd78905b97324f1dbe4c6f9bc2ebd77cd8f2ad2c6521b0531d864736f6c63430008190033","sourceMap":"445:2048:93:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;-1:-1:-1;;;;;445:2048:93;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;445:2048:93;;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;445:2048:93;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;-1:-1:-1;;;;;445:2048:93;;;;;;;;;;;:::i;:::-;2355:73:28;;1847:1;445:2048:93;;3526:20:28;3522:88;;1847:1;;;445:2048:93;;-1:-1:-1;;;4546:86:92;;467:2:88;445:2048:93;;;;4546:86:92;;445:2048:93;-1:-1:-1;;;;;4546:86:92;445:2048:93;;;4572:26:92;445:2048:93;;4546:86:92;;;;;;;-1:-1:-1;4546:86:92;;;445:2048:93;4636:10:92;;445:2048:93;;4546:100:92;4542:160;;445:2048:93;;774:1493;445:2048;;;774:1493;;:::i;:::-;3282:1:28;1805;2355:73;1847:1;3716:283;3282:1;445:2048:93;;;;;;;;;;;;;;;;;4542:160:92;445:2048:93;;-1:-1:-1;;;4669:22:92;;445:2048:93;;4669:22:92;4546:86;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;:::i;3522:88:28:-;445:2048:93;;-1:-1:-1;;;3569:30:28;;445:2048:93;;3569:30:28;445:2048:93;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;445:2048:93;;;;;;1435:38:92;-1:-1:-1;;;;;445:2048:93;;;;;;;;;;;;-1:-1:-1;;445:2048:93;;;;;2936:47:92;:38;445:2048:93;;;;;:::i;:::-;;;-1:-1:-1;445:2048:93;2936:16:92;445:2048:93;;;-1:-1:-1;445:2048:93;;;;;;;;;;;;;;;;;2936:38:92;:47;:::i;:::-;445:2048:93;;;;;;;;;;;;-1:-1:-1;;445:2048:93;;;;;;1788:109:92;445:2048:93;;;;;:::i;:::-;;;-1:-1:-1;445:2048:93;1788:109:92;445:2048:93;;;-1:-1:-1;445:2048:93;;;;;;;;;;;;;;;;;1788:109:92;445:2048:93;;;;;;;;;;;;;;-1:-1:-1;;445:2048:93;;;;;;;1374:6:92;445:2048:93;;;;;;;;;-1:-1:-1;;445:2048:93;;;;;;1528:51:92;-1:-1:-1;;;;;445:2048:93;;;;;;;;;;;;-1:-1:-1;;445:2048:93;;;;;;322:32:69;-1:-1:-1;;;;;445:2048:93;;;;;;;;;;;;-1:-1:-1;;445:2048:93;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;445:2048:93;;;;-1:-1:-1;;;;;445:2048:93;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;445:2048:93;;;;;;;4301:16:25;445:2048:93;;4726:16:25;;:34;;;;445:2048:93;4805:1:25;4790:16;:50;;;;445:2048:93;4855:13:25;:30;;;;445:2048:93;4851:91:25;;;-1:-1:-1;;;;;;;;;;;445:2048:93;;-1:-1:-1;;445:2048:93;;;;;718:4:69;;4951:18:25;4979:67;;718:4:69;:::i;:::-;5066:101:25;;445:2048:93;5066:101:25;-1:-1:-1;;;;;;;;;;;445:2048:93;;-1:-1:-1;;;;445:2048:93;;;;;-1:-1:-1;445:2048:93;;5142:14:25;;445:2048:93;;5142:14:25;445:2048:93;4979:67:25;-1:-1:-1;;;;;;;;;;;445:2048:93;;-1:-1:-1;;;;445:2048:93;-1:-1:-1;;;445:2048:93;;;718:4:69;:::i;4851:91:25:-;445:2048:93;;-1:-1:-1;;;4908:23:25;;445:2048:93;;4908:23:25;4855:30;4872:13;;;4855:30;;;4790:50;4818:4;4810:25;:30;;-1:-1:-1;4790:50:25;;4726:34;;;-1:-1:-1;4726:34:25;;445:2048:93;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;445:2048:93;;;;-1:-1:-1;445:2048:93;;;477:31:75;445:2048:93;;;;;;:::i;:::-;;;;;;;;;;;;;;;416:25:75;;;;445:2048:93;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;445:2048:93;;;;;;;;;;;;;477:31:75;;445:2048:93;;;;;;;;;;:::i;:::-;477:31:75;;;;;;;;;:::i;:::-;518:79;;;445:2048:93;518:79:75;;445:2048:93;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;445:2048:93;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;-1:-1:-1;;;;;445:2048:93;;;;;;;:::o;:::-;-1:-1:-1;;;;;445:2048:93;;;;;;:::o;:::-;;;477:31:75;;445:2048:93;;;;;;;;-1:-1:-1;;;;;445:2048:93;;;;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;:::-;-1:-1:-1;;;;;445:2048:93;;;;;;-1:-1:-1;;445:2048:93;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;445:2048:93;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;445:2048:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;445:2048:93;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;2692:73:92;:38;445:2048:93;;;:::i;:::-;;;;;-1:-1:-1;445:2048:93;2692:16:92;445:2048:93;;;-1:-1:-1;445:2048:93;;;;;;;;;;;;;;;;;2692:38:92;:73;:::i;445:2048:93:-;;;;;3248:62:92;445:2048:93;;;:::i;:::-;3248:62:92;;;;;:::i;:::-;445:2048:93;;;;;;;;;;;;;-1:-1:-1;;445:2048:93;;;;;;;-1:-1:-1;;;;;404:28:69;445:2048:93;;;;;;;;;;-1:-1:-1;;445:2048:93;;;;;;;1271:7:92;445:2048:93;;;;;;;;;-1:-1:-1;;445:2048:93;;;;;;;;-1:-1:-1;;;;;445:2048:93;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;445:2048:93;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;774:1493::-;;;;;;;;445:2048;;:::i;:::-;1076:16;;1072:91;;774:1493;837:15:62;;819:34;837:15;819:34;:::i;:::-;-1:-1:-1;445:2048:93;1215:29;;;;:27;;:13;;-1:-1:-1;;;;;445:2048:93;1215:13;445:2048;;-1:-1:-1;;;;;445:2048:93;;;1215:27;445:2048;;-1:-1:-1;;;1215:29:93;;445:2048;;;;;1215:29;;;;;;1177:67;1215:29;1196:48;1215:29;-1:-1:-1;1215:29:93;;;774:1493;1196:48;;:::i;:::-;445:2048;;;;1177:67;445:2048;;;1177:67;;;:107;;;;;774:1493;1173:178;;;1418:87;1531:33;1474:30;;1418:87;;;;:::i;:::-;1531:33;;;;;:::i;:::-;1578:18;;;1574:75;;1950:87;;;2200:60;1718:16;2200:60;1718:16;;;;;;:::i;:::-;1791:13;;;;;:::i;:::-;445:2048;;:::i;:::-;;;;1215:29;1961:75;;445:2048;;;1950:87;;;1215:29;1950:87;;445:2048;;;;;;;;;;;;;;;;;;;1950:87;;;;;;:::i;:::-;2087:16;;;;:::i;:::-;2167;;;;;;:::i;:::-;445:2048;;;;;;;;;;;;;;-1:-1:-1;;;;;445:2048:93;;;;;;;;;;;2200:60;;;;774:1493::o;1574:75::-;445:2048;;-1:-1:-1;;;1619:19:93;;1215:29;;1619:19;1173:178;445:2048;;-1:-1:-1;;;1315:25:93;;1215:29;;1315:25;1177:107;837:15:62;;1248:36:93;819:34:62;837:15;819:34;:::i;1248:36:93:-;-1:-1:-1;1248:36:93;1177:107;;;1215:29;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;1072:91;1121:31;;;;;;;;:::i;:::-;1072:91;;;;;445:2048;;;;;;;;;;;;;;;;;-1:-1:-1;445:2048:93;;;;;;;;-1:-1:-1;;445:2048:93;;;;:::o;2505:267:92:-;-1:-1:-1;445:2048:93;;;2692:16:92;445:2048:93;;;;;;;;-1:-1:-1;;;;;445:2048:93;;;;;;;;;2692:73:92;;2505:267;;2692:73;:::i;445:2048:93:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;445:2048:93;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;445:2048:93;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;445:2048:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;445:2048:93;;;;;;;;:::o;:::-;;;;;;;;;;:::o;3323:1122:92:-;;445:2048:93;;:::i;:::-;;;;3608:16:92;3604:109;;3323:1122;837:15:62;;819:34;837:15;819:34;:::i;:::-;-1:-1:-1;445:2048:93;;;;3778:27:92;;:13;;-1:-1:-1;;;;;445:2048:93;3778:13:92;445:2048:93;3778:27:92;445:2048:93;;;;;;;3778:29:92;;;;;;;;;;;;;;;3740:67;3778:29;3759:48;3778:29;-1:-1:-1;3778:29:92;;;3759:48;;:::i;3740:67::-;445:2048:93;;;3740:67:92;;;:107;;;;;3323:1122;3740:197;;;;3323:1122;3723:263;;;445:2048:93;3778:29:92;445:2048:93;;;;;;;;;;4025:25:92;;;;;;;;;4010:143;4025:25;;;-1:-1:-1;4025:25:92;;;3323:1122;4113:30;;;445:2048:93;;;;;;;;;;;4010:143:92;;;;;3778:29;4010:143;;;:::i;:::-;;;-1:-1:-1;;;;;445:2048:93;4010:143:92;;;;;;;4181:257;4010:143;-1:-1:-1;4010:143:92;;;3323:1122;3996:157;;4293:102;3996:157;;4233:162;3996:157;4207:231;3996:157;;2936:28;:47;:38;:28;;;445:2048:93;;2936:16:92;445:2048:93;;;;;;;2936:28:92;445:2048:93;;;;;;;;;;;;;;;;2936:47:92;4351:43;;;4293:102;;:::i;:::-;4233:162;;:::i;:::-;4207:231;:::i;4181:257::-;3323:1122;:::o;4010:143::-;4233:162;4010:143;;;4207:231;4010:143;;;;4293:102;4010:143;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;4025:25;;;;;;;;;;;;;;:::i;:::-;;;;3723:263;3962:13;;;;;;-1:-1:-1;3962:13:92;-1:-1:-1;3962:13:92;:::o;3740:197::-;3886:41;;3867:70;3886:51;;:41;;;445:2048:93;;3886:29:92;445:2048:93;;;;;;;3886:51:92;445:2048:93;;;;;3867:70:92;-1:-1:-1;3740:197:92;;;:107;837:15:62;;3811:36:92;819:34:62;837:15;819:34;:::i;3811:36:92:-;;;;3740:107;;;3778:29;;;;;;;;;;;;;;;:::i;3604:109::-;3662:40;;;;;;;;;;;;:::i;:::-;3604:109;;;;2557:104:57;;2641:5;;;;;;:13;2557:104;:::o;2641:13::-;;;2557:104;:::o;4714:335:92:-;;;;445:2048:93;-1:-1:-1;445:2048:93;4876:29:92;445:2048:93;;;;4876:51:92;445:2048:93;;-1:-1:-1;445:2048:93;;;;;;;;;;;;;;;;;4876:51:92;445:2048:93;;;;;-1:-1:-1;4872:171:92;;4714:335;;;:::o;4872:171::-;4962:70;445:2048:93;4962:51:92;445:2048:93;-1:-1:-1;445:2048:93;4876:29:92;445:2048:93;;;-1:-1:-1;445:2048:93;;;;;;;;;;;;;;;;;4962:51:92;445:2048:93;;;;;;;;;;;;;;9856:1:60;445:2048:93;;;;;;;:::o;5055:221:92:-;;;445:2048:93;-1:-1:-1;445:2048:93;5160:16:92;445:2048:93;;2936:47:92;:38;5160;445:2048:93;;-1:-1:-1;445:2048:93;;;;;;;;;;;;;;;;;5160:38:92;837:15:62;819:34;837:15;819:34;:::i;:::-;445:2048:93;-1:-1:-1;445:2048:93;5160:16:92;445:2048:93;;;-1:-1:-1;445:2048:93;;;;;;;;;;;;;;;;;2936:47:92;445:2048:93;;;;;;;;6360:12:86;;;445:2048:93;;;6360:24:86;6356:75;;5055:221:92;6474:30:86;;;:::i;:::-;445:2048:93;;;;;6578:12:86;;;;:::i;:::-;;6604:24;;;5055:221:92;-1:-1:-1;6600:188:86;;;-1:-1:-1;;;;445:2048:93;;;;;;;6644:29:86;:21;;;;:::i;:::-;:29;445:2048:93;;;;;;;;;;;;;;;;;;;;;6600:188:86;6753:24;;8167:38:60;;-1:-1:-1;;;;;445:2048:93;;;;;8167:38:60;:::i;:::-;6753:24:86;;;:::i;6604:::-;445:2048:93;;;;;;6614:14:86;;-1:-1:-1;6604:24:86;;;6356:75;6400:20;;;:::i;:::-;6356:75;;445:2048:93;;;;;;;;-1:-1:-1;;;;;445:2048:93;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;5282:431:92:-;;;;5487:25;;:23;:13;445:2048:93;5494:5:92;445:2048:93;;;;;;;;;5487:23:92;445:2048:93;;-1:-1:-1;;;5487:25:92;;445:2048:93;;;;;5487:25:92;;;;;;;5631:65;5487:25;5631:65;5487:25;5494:5;5487:25;;;5282:431;-1:-1:-1;;;;;;445:2048:93;;;;:::i;:::-;-1:-1:-1;;;;;5677:4:92;445:2048:93;;;5677:4:92;5487:25;5642:53;;445:2048:93;;;5631:65:92;;;5487:25;5631:65;;;:::i;:::-;5472:234;;;;;5494:5;445:2048:93;5472:234:92;445:2048:93;;;;;;;;;;;;;;5472:234:92;;5487:25;5472:234;;;:::i;:::-;;;;;;;;;;;5282:431;:::o;5472:234::-;;;;;;:::i;:::-;;;:::i;5487:25::-;;;;;;;;;;;;;;:::i;:::-;;;;5719:137;5809:5;445:2048:93;;;;-1:-1:-1;;;5802:47:92;;;;;445:2048:93;;;;;;;;;;;;;;;5802:47:92;;445:2048:93;;;;;;-1:-1:-1;;;;;445:2048:93;5802:47:92;;;;;;;;5719:137;:::o;5802:47::-;;;;;;;;;;;;;:::i;:::-;;5719:137::o;445:2048:93:-;;;;;;;:::o;:::-;;;;;;;;;;;;5862:623:92;;;5988:12;445:2048:93;;;;;;;5984:495:92;;5862:623;;;;;;:::o;5984:495::-;445:2048:93;;-1:-1:-1;;;6033:22:92;;445:2048:93;6033:22:92;;445:2048:93;;6033:22:92;;445:2048:93;;-1:-1:-1;;;;;445:2048:93;6033:22:92;;;;;;;5988:12;6033:22;;;5984:495;-1:-1:-1;445:2048:93;;-1:-1:-1;;;6033:22:92;6094:81;;;;;;;;445:2048:93;;;;-1:-1:-1;;;;;445:2048:93;;;;;;;;;;;;;;;;;;;;;;6094:81:92;445:2048:93;;;;6094:81:92;;477:31:75;;6094:81:92;;;;;;:::i;:::-;445:2048:93;6194:9:92;:55;6190:124;;5988:12;6328:141;;;;;;1271:7;6328:141;;5984:495;;;;;;;6190:124;445:2048:93;;-1:-1:-1;;;6276:23:92;;6033:22;;6276:23;6033:22;6094:81;6033:22;;;6094:81;6033:22;;;;;;;;;;;:::i;:::-;;;;;445:2048:93;;;;;;;;-1:-1:-1;445:2048:93;;-1:-1:-1;445:2048:93;;;-1:-1:-1;445:2048:93;:::o;:::-;;;;;;;;;;;;10580:184:86;445:2048:93;;10303:8:60;;;:63;-1:-1:-1;10303:63:60;-1:-1:-1;;;;;445:2048:93;;10726:7:86;445:2048:93;;10736:12:86;:17;:12;;:17;:::i;:::-;445:2048:93;;;;;;10580:184:86;:::o;10726:31::-;;;-1:-1:-1;10580:184:86;:::o;10303:63:60:-;445:2048:93;;;;;;;;;;14249:109:60;-1:-1:-1;14249:109:60;;-1:-1:-1;14249:109:60;;;445:2048:93;;;10303:63:60;;445:2048:93;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;445:2048:93;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;:::i;6491:564:92:-;6614:34;6491:564;6614:34;;;;:::i;:::-;445:2048:93;;-1:-1:-1;;;6664:41:92;;-1:-1:-1;;;;;445:2048:93;;;6664:41:92;;;445:2048:93;;;;;6664:41:92;;;445:2048:93;;;6674:13:92;445:2048:93;;6664:41:92;;;;;;;-1:-1:-1;6664:41:92;;;6491:564;6663:42;;6659:90;;2540:111:28;6850:27:92;6664:41;2540:111:28;;;:::i;:::-;-1:-1:-1;445:2048:93;;-1:-1:-1;;;;;;445:2048:93;-1:-1:-1;;;;;445:2048:93;;;;;6850:27:92;:::i;:::-;445:2048:93;;;;;;;;;;6892:23:92;;;;;;;;;-1:-1:-1;6892:23:92;;;6491:564;445:2048:93;;;6892:37:92;:64;;;6491:564;6888:112;;445:2048:93;7010:38:92;;445:2048:93;;-1:-1:-1;445:2048:93;;-1:-1:-1;;;;445:2048:93;;;;;;-1:-1:-1;;;445:2048:93;;;;;;;;6888:112:92;445:2048:93;;-1:-1:-1;;;6979:10:92;;6664:41;;6979:10;6892:64;-1:-1:-1;445:2048:93;;;;6892:64:92;;:23;;;;;;-1:-1:-1;6892:23:92;;;;;;:::i;:::-;;;;;6659:90;445:2048:93;;-1:-1:-1;;;6728:10:92;;6664:41;;6728:10;6664:41;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;445:2048:93;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::o;7558:604:86:-;;445:2048:93;;7686:17:86;7682:83;;445:2048:93;7789:27:86;445:2048:93;7789:27:86;445:2048:93;;7789:27:86;;;;;;:::i;:::-;7860:14;;;;;:::i;:::-;445:2048:93;;;;;;;;;;;;;;;;7888:22:86;;;7884:77;;7975:21;-1:-1:-1;7975:84:86;;;;7558:604;7971:139;;;;8127:28;;;;:::i;7971:139::-;8082:17;;7789:27;8082:17;445:2048:93;8075:24:86;:::o;7975:84::-;445:2048:93;;;8009:16:86;445:2048:93;;8009:16:86;:::i;:::-;445:2048:93;;;8001:24:86;:57;;;;;7975:84;;;;;;;8001:57;8029:29;8038:8;;;8029:18;8038:8;8029:23;8038:8;;:::i;:::-;8029:18;;:::i;:::-;445:2048:93;;;;;8029:29:86;;8001:57;;;;7884:77;7933:17;;;;;7789:27;7933:17;445:2048:93;7926:24:86;:::o;7682:83::-;7726:28;;;;:::i;14291:213:58:-;445:2048:93;14369:24:58;;;;14365:103;;445:2048:93;14291:213:58;:::o;14365:103::-;445:2048:93;;;;14416:41:58;;;;;;14447:2;14416:41;;;445:2048:93;;;;;14416:41:58;445:2048:93;;;-1:-1:-1;;;445:2048:93;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;-1:-1:-1;;;445:2048:93;;;;;;;;;;;;;;;:::i;6893:76:25:-;;;:::i;:::-;;;:::i;:::-;1805:1:28;2355:73;1847:1;6893:76:25:o;2273:218:93:-;-1:-1:-1;445:2048:93;;;;;:::i;:::-;;;;;;2419:30;;445:2048;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;2419:30;445:2048;:::i;:::-;;;;2273:218;:::o;6999:207:86:-;;445:2048:93;;9594:15:60;-1:-1:-1;9619:18:60;9652:7;9658:1;9652:7;;9648:234;;6999:207:86;9906:53:60;;;;;:::i;:::-;9977:8;;;:63;-1:-1:-1;9977:63:60;;-1:-1:-1;;;;;445:2048:93;;7168:7:86;445:2048:93;;;7178:12:86;;:17;:12;;:17;:::i;9977:63:60:-;9992:41;10025:7;9992:48;10025:7;;:::i;:::-;9992:41;14249:109;;;;;;14099:265;;9992:41;445:2048:93;;;;;9992:48:60;9977:63;;;9648:234;9695:14;;;;;:::i;:::-;445:2048:93;;;;;;;9906:53:60;14249:109;;-1:-1:-1;14249:109:60;445:2048:93;14249:109:60;;;-1:-1:-1;14249:109:60;;445:2048:93;;;;;9727:48:60;9723:149;445:2048:93;;;9795:10:60;9723:149;9648:234;;9723:149;9850:7;;;;;;:::i;:::-;9723:149;9648:234;;445:2048:93;;;;;;;:::i;:::-;-1:-1:-1;445:2048:93;;;;;;;:::o;11486:272:86:-;;445:2048:93;11308:22:60;11718:31:86;11486:272;445:2048:93;;:::i;:::-;;;;:::i;:::-;;11308:22:60;;:::i;:::-;445:2048:93;;:::i;:::-;;11718:12:86;445:2048:93;;;;;11731:17:86;445:2048:93;;;;;11731:17:86;;445:2048:93;;11718:12:86;;:31;:::i;:::-;445:2048:93;;;;;;;;;:::i;:::-;;;;;;11731:17:86;11672:79;;445:2048:93;11486:272:86;:::o;445:2048:93:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;10552:388:60:-;445:2048:93;;10728:8:60;;;10752:20;;10690:17;10752:20;10690:17;10752:20;10690:17;10752:20;:::o;10724:210::-;445:2048:93;;;;;;;;;;;14249:109:60;10690:17;14249:109;;10690:17;14249:109;;;445:2048:93;:::i;:::-;;;;;;;14249:109:60;445:2048:93;;;;;10911:11:60;;445:2048:93;;10886:37:60;10870:1;10886:37;;;:::o;7084:141:25:-;445:2048:93;-1:-1:-1;;;;;;;;;;;445:2048:93;;;;7150:18:25;7146:73;;7084:141::o;7146:73::-;445:2048:93;;-1:-1:-1;;;7191:17:25;;;;;445:2048:93;;;-1:-1:-1;;;445:2048:93;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;445:2048:93;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;11513:870:60;445:2048:93;;11513:870:60;;;445:2048:93;11513:870:60;11672:7;;;;445:2048:93;11775:28:60;11795:7;;;:::i;11775:28::-;445:2048:93;:::i;:::-;;;;;;;;;;;;;;;;11877:15:60;-1:-1:-1;11873:91:60;;445:2048:93;;12233:11:60;445:2048:93;;;12027:16:60;445:2048:93;;;;;;;12027:16:60;;;;12083:7;12063:43;12083:7;;12063:28;12083:7;;:::i;:::-;12063:28;14249:109;;;;;;14099:265;;12063:28;445:2048:93;;;;;;;;;;;;;;;;;12063:43:60;12233:11;445:2048:93;-1:-1:-1;;;;;445:2048:93;;;;12225:27:60;;:::o;12023:189::-;445:2048:93;;;12145:52:60;445:2048:93;12155:41:60;445:2048:93;;:::i;:::-;;;;;;;;12155:41:60;-1:-1:-1;;;;;445:2048:93;;12155:41:60;;;445:2048:93;12145:52:60;:::i;:::-;12023:189;;11873:91;445:2048:93;;-1:-1:-1;;;11919:30:60;;;;;11668:709;12283:52;445:2048:93;;12293:41:60;445:2048:93;;:::i;12293:41:60:-;-1:-1:-1;;;;;445:2048:93;;12293:41:60;;;445:2048:93;12145:52:60;:::i;12283:::-;11678:1;12349:17;;:::o;8587:1642:57:-;8658:6;;8654:45;;9401:7;10201:10;10142:26;10093;10044;9995;9946;9897;9848;445:2048:93;10189:23:57;9401:7;8663:1;445:2048:93;;;;10826:16:57;10822:99;;8587:1642;445:2048:93;;;;10938:15:57;10934:96;;8587:1642;445:2048:93;;;;11047:15:57;11043:96;;8587:1642;445:2048:93;;;;11156:15:57;11152:96;;8587:1642;445:2048:93;;;;11265:14:57;11261:93;;8587:1642;445:2048:93;;;;11371:14:57;11367:93;;8587:1642;445:2048:93;;;;11477:14:57;11473:93;;8587:1642;445:2048:93;;;11579:64:57;;8587:1642;445:2048:93;;;9858:10:57;;;;:::i;:::-;445:2048:93;;;;;9848:26:57;9907:10;;;;:::i;9897:26::-;9956:10;;;;:::i;9946:26::-;10005:10;;;;:::i;9995:26::-;10054:10;;;;:::i;10044:26::-;10103:10;;;;:::i;10093:26::-;10152:10;;;;:::i;10142:26::-;10201:10;;;:::i;:::-;10189:23;;:::i;11579:64::-;445:2048:93;;11579:64:57;;11473:93;445:2048:93;11511:11:57;;445:2048:93;;11473:93:57;;;;11367;445:2048:93;11405:11:57;;445:2048:93;;11367:93:57;;;;11261;445:2048:93;11299:11:57;;445:2048:93;;11261:93:57;;;;11152:96;445:2048:93;11191:12:57;;445:2048:93;;11152:96:57;;;;11043;445:2048:93;11082:12:57;;445:2048:93;;11043:96:57;;;;10934;445:2048:93;10973:12:57;;445:2048:93;;10934:96:57;;;;10822:99;10862:13;;;445:2048:93;10822:99:57;;;;8654:45;8680:8;8663:1;8680:8;:::o;12736:433:60:-;;;12919:10;;;;;;13151:11;;;12736:433;:::o;12912:230::-;2900:5:57;;;;;;2910;;;;445:2048:93;;;;;;;;;14249:109:60;-1:-1:-1;14249:109:60;445:2048:93;14249:109:60;;;-1:-1:-1;14249:109:60;;445:2048:93;;;;;-1:-1:-1;12996:136:60;445:2048:93;;;13055:10:60;12996:136;;12912:230;;;;12996:136;13110:7;;;;;;:::i;:::-;12996:136;;","linkReferences":{},"immutableReferences":{"57808":[{"start":1098,"length":32}],"57811":[{"start":2128,"length":32},{"start":4506,"length":32}],"65592":[{"start":765,"length":32},{"start":5322,"length":32}],"65595":[{"start":508,"length":32},{"start":1030,"length":32}]}},"methodIdentifiers":{"BURNER_GAS_LIMIT()":"d5c24e1a","BURNER_RESERVE()":"2964f8dc","FACTORY()":"2dd31000","NETWORK_MIDDLEWARE_SERVICE()":"2c9d45b3","TYPE()":"bb24fe8a","VAULT_FACTORY()":"103f2907","cumulativeSlash(bytes32,address)":"1a2be2c4","cumulativeSlashAt(bytes32,address,uint48,bytes)":"aa8e6489","initialize(bytes)":"439fab91","isBurnerHook()":"34d098ea","latestSlashedCaptureTimestamp(bytes32,address)":"267de1f3","slash(bytes32,address,uint256,uint48,bytes)":"021a8156","slashableStake(bytes32,address,uint48,bytes)":"aab3595f","staticDelegateCall(address,bytes)":"9f86fd85","vault()":"fbfa77cf"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vaultFactory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"networkMiddlewareService\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"slasherFactory\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"entityType\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"CheckpointUnorderedInsertion\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBurnerGas\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientSlash\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCaptureTimestamp\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoBurner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotNetworkMiddleware\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slashedAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"}],\"name\":\"Slash\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BURNER_GAS_LIMIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BURNER_RESERVE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NETWORK_MIDDLEWARE_SERVICE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TYPE\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VAULT_FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"cumulativeSlash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"cumulativeSlashAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isBurnerHook\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"latestSlashedCaptureTimestamp\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"value\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hints\",\"type\":\"bytes\"}],\"name\":\"slash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"slashedAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hints\",\"type\":\"bytes\"}],\"name\":\"slashableStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"staticDelegateCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"CheckpointUnorderedInsertion()\":[{\"details\":\"A value was attempted to be inserted on a past checkpoint.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Slash(bytes32,address,uint256,uint48)\":{\"params\":{\"captureTimestamp\":\"time point when the stake was captured\",\"operator\":\"operator that is slashed\",\"slashedAmount\":\"virtual amount of the collateral slashed\",\"subnetwork\":\"subnetwork that requested the slash\"}}},\"kind\":\"dev\",\"methods\":{\"cumulativeSlash(bytes32,address)\":{\"params\":{\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"_0\":\"cumulative slash amount\"}},\"cumulativeSlashAt(bytes32,address,uint48,bytes)\":{\"params\":{\"hint\":\"hint for the checkpoint index\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\",\"timestamp\":\"time point to get the cumulative slash amount until (inclusively)\"},\"returns\":{\"_0\":\"cumulative slash amount until the given timestamp (inclusively)\"}},\"initialize(bytes)\":{\"params\":{\"data\":\"some data to use\"}},\"slash(bytes32,address,uint256,uint48,bytes)\":{\"details\":\"Only a network middleware can call this function.\",\"params\":{\"amount\":\"maximum amount of the collateral to be slashed\",\"captureTimestamp\":\"time point when the stake was captured\",\"hints\":\"hints for checkpoints' indexes\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"slashedAmount\":\"virtual amount of the collateral slashed\"}},\"slashableStake(bytes32,address,uint48,bytes)\":{\"params\":{\"captureTimestamp\":\"time point to get the stake amount at\",\"hints\":\"hints for the checkpoints' indexes\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"amount\":\"slashable amount of the stake\"}},\"staticDelegateCall(address,bytes)\":{\"details\":\"It allows to use this contract's storage on-chain.\",\"params\":{\"data\":\"data to make a delegatecall with\",\"target\":\"address of the contract to make a delegatecall to\"}}},\"version\":1},\"userdoc\":{\"events\":{\"Slash(bytes32,address,uint256,uint48)\":{\"notice\":\"Emitted when a slash is performed.\"}},\"kind\":\"user\",\"methods\":{\"BURNER_GAS_LIMIT()\":{\"notice\":\"Get a gas limit for the burner.\"},\"BURNER_RESERVE()\":{\"notice\":\"Get a reserve gas between the gas limit check and the burner's execution.\"},\"FACTORY()\":{\"notice\":\"Get the factory's address.\"},\"NETWORK_MIDDLEWARE_SERVICE()\":{\"notice\":\"Get the network middleware service's address.\"},\"TYPE()\":{\"notice\":\"Get the entity's type.\"},\"VAULT_FACTORY()\":{\"notice\":\"Get the vault factory's address.\"},\"cumulativeSlash(bytes32,address)\":{\"notice\":\"Get a cumulative slash amount for an operator on a subnetwork.\"},\"cumulativeSlashAt(bytes32,address,uint48,bytes)\":{\"notice\":\"Get a cumulative slash amount for an operator on a subnetwork until a given timestamp (inclusively) using a hint.\"},\"initialize(bytes)\":{\"notice\":\"Initialize this entity contract by using a given data.\"},\"isBurnerHook()\":{\"notice\":\"Get if the burner is needed to be called on a slashing.\"},\"latestSlashedCaptureTimestamp(bytes32,address)\":{\"notice\":\"Get the latest capture timestamp that was slashed on a subnetwork.\"},\"slash(bytes32,address,uint256,uint48,bytes)\":{\"notice\":\"Perform a slash using a subnetwork for a particular operator by a given amount using hints.\"},\"slashableStake(bytes32,address,uint48,bytes)\":{\"notice\":\"Get a slashable amount of a stake got at a given capture timestamp using hints.\"},\"staticDelegateCall(address,bytes)\":{\"notice\":\"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data).\"},\"vault()\":{\"notice\":\"Get the vault's address.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/slasher/Slasher.sol\":\"Slasher\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://942dad22fbdc1669f025540ba63aa3ccfad5f8458fc5d4525b31ebf272e7af45\",\"dweb:/ipfs/Qmdo4X2M82aM3AMoW2kf2jhYkSCyC4T1pHNd6obdsDFnAB\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c\",\"dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0xbdc5e074d7dd6678f67e92b1a51a20226801a407b0e1af3da367c5d1ff4519ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a36cca6b22fff3db16fc789ff6c60eea71d4b156065d4d0c83a0bc5e91a77a8b\",\"dweb:/ipfs/QmYN3exd5AemxjBrN8XMB1p5LbbE16uC3sjbYjwi8AjcGR\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0xc7755af115020049e4140f224f9ee88d7e1799ffb0646f37bf0df24bf6213f58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f09bf94d5274334ec021f61a04659db303f31e60460e14b709c9bf187740111\",\"dweb:/ipfs/QmNvgomZYUwFAt4cZbPWAiTeSZQreGehY9BK5xyVJsUttb\"]},\"src/contracts/common/Entity.sol\":{\"keccak256\":\"0x3d61a932995b8443381f3950542d388223a2c26dd5d29a3274dea3baa7388bd7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7cdf5f03ca72fd263fd32ff59c8d88ddca911ae83896a287d10772c1bbe9b138\",\"dweb:/ipfs/QmbP84r5BWT1Rn9AYTntWSf3xUMTTCohTZJFhbBhDXFoHa\"]},\"src/contracts/common/StaticDelegateCallable.sol\":{\"keccak256\":\"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764\",\"dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD\"]},\"src/contracts/libraries/Checkpoints.sol\":{\"keccak256\":\"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609\",\"dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE\"]},\"src/contracts/libraries/Subnetwork.sol\":{\"keccak256\":\"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56\",\"dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32\"]},\"src/contracts/slasher/BaseSlasher.sol\":{\"keccak256\":\"0x190e5dce196a061bdad42468c52e9f5b0eb7810cd7d0c19f04d6a2e94984f1b6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://07ca08d0cd43c2fe5d54a5577f6bdd522ced410f5d3a52e764deaa7ba26b5f06\",\"dweb:/ipfs/QmZe3PiMKBQKWcwodaLupragdqxPjgS4v1qMC7RXau8hDF\"]},\"src/contracts/slasher/Slasher.sol\":{\"keccak256\":\"0xeee0cb25fad58d496fdcc641d852d11bae06e6ceed5230ae21150964175c494f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://34aa27d21246a1bcee0b6a2afa8d9d613441156362430392f75d176511d58c61\",\"dweb:/ipfs/Qmf53Y3zdGfH4PU2zpSGeHZ8mMLzLXCtmkQrG5mnVJECQ3\"]},\"src/interfaces/common/IEntity.sol\":{\"keccak256\":\"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b\",\"dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv\"]},\"src/interfaces/common/IMigratableEntity.sol\":{\"keccak256\":\"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c\",\"dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds\"]},\"src/interfaces/common/IRegistry.sol\":{\"keccak256\":\"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014\",\"dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK\"]},\"src/interfaces/common/IStaticDelegateCallable.sol\":{\"keccak256\":\"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516\",\"dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi\"]},\"src/interfaces/delegator/IBaseDelegator.sol\":{\"keccak256\":\"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2\",\"dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8\"]},\"src/interfaces/service/INetworkMiddlewareService.sol\":{\"keccak256\":\"0x347afc7fcf1fbcdb96d66162070ef6c78aed27b3af2c1d5dfb4e511840631783\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d90b8ceb495159e8e4e95d76447719dd166443f67dfabdd942846162071595c\",\"dweb:/ipfs/QmVVuiAWYx92T6vBvNMKZfTvraCf1fa16BsUKkdNs3hdHA\"]},\"src/interfaces/slasher/IBaseSlasher.sol\":{\"keccak256\":\"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf\",\"dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx\"]},\"src/interfaces/slasher/IBurner.sol\":{\"keccak256\":\"0xaf495dacc19ae0b3c787ba8021c5944927d70261536addd234d7dab146158c2b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b3cc66251008be6ff9fc8b11ecc6831d5a9dca49a3fe9817fcd970253c1d447\",\"dweb:/ipfs/QmVxfb9ALGdF9W3SN2h41gQbUct6tawvu5bw4K89kFQ4HW\"]},\"src/interfaces/slasher/ISlasher.sol\":{\"keccak256\":\"0x34d226d67a3d5e16571f2fac91a8b9773551bcc41c88a96279669dd78d192625\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a6e8c1462ee4a1b0f745414be043c09012ea676613790aba004b06c85c980d1\",\"dweb:/ipfs/QmadjNEbHKRthtA1EeNy3Kg2sXpejH2KBeHm8QZtBPvXbJ\"]},\"src/interfaces/vault/IVault.sol\":{\"keccak256\":\"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9\",\"dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R\"]},\"src/interfaces/vault/IVaultStorage.sol\":{\"keccak256\":\"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e\",\"dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"vaultFactory","type":"address"},{"internalType":"address","name":"networkMiddlewareService","type":"address"},{"internalType":"address","name":"slasherFactory","type":"address"},{"internalType":"uint64","name":"entityType","type":"uint64"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"CheckpointUnorderedInsertion"},{"inputs":[],"type":"error","name":"InsufficientBurnerGas"},{"inputs":[],"type":"error","name":"InsufficientSlash"},{"inputs":[],"type":"error","name":"InvalidCaptureTimestamp"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"NoBurner"},{"inputs":[],"type":"error","name":"NotInitialized"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"NotNetworkMiddleware"},{"inputs":[],"type":"error","name":"NotVault"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintDowncast"},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"slashedAmount","type":"uint256","indexed":false},{"internalType":"uint48","name":"captureTimestamp","type":"uint48","indexed":false}],"type":"event","name":"Slash","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"BURNER_GAS_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"BURNER_RESERVE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"NETWORK_MIDDLEWARE_SERVICE","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"TYPE","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VAULT_FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"cumulativeSlash","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"cumulativeSlashAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"isBurnerHook","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"latestSlashedCaptureTimestamp","outputs":[{"internalType":"uint48","name":"value","type":"uint48"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint48","name":"captureTimestamp","type":"uint48"},{"internalType":"bytes","name":"hints","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"slash","outputs":[{"internalType":"uint256","name":"slashedAmount","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"captureTimestamp","type":"uint48"},{"internalType":"bytes","name":"hints","type":"bytes"}],"stateMutability":"view","type":"function","name":"slashableStake","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"staticDelegateCall"},{"inputs":[],"stateMutability":"view","type":"function","name":"vault","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"cumulativeSlash(bytes32,address)":{"params":{"operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"_0":"cumulative slash amount"}},"cumulativeSlashAt(bytes32,address,uint48,bytes)":{"params":{"hint":"hint for the checkpoint index","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)","timestamp":"time point to get the cumulative slash amount until (inclusively)"},"returns":{"_0":"cumulative slash amount until the given timestamp (inclusively)"}},"initialize(bytes)":{"params":{"data":"some data to use"}},"slash(bytes32,address,uint256,uint48,bytes)":{"details":"Only a network middleware can call this function.","params":{"amount":"maximum amount of the collateral to be slashed","captureTimestamp":"time point when the stake was captured","hints":"hints for checkpoints' indexes","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"slashedAmount":"virtual amount of the collateral slashed"}},"slashableStake(bytes32,address,uint48,bytes)":{"params":{"captureTimestamp":"time point to get the stake amount at","hints":"hints for the checkpoints' indexes","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"amount":"slashable amount of the stake"}},"staticDelegateCall(address,bytes)":{"details":"It allows to use this contract's storage on-chain.","params":{"data":"data to make a delegatecall with","target":"address of the contract to make a delegatecall to"}}},"version":1},"userdoc":{"kind":"user","methods":{"BURNER_GAS_LIMIT()":{"notice":"Get a gas limit for the burner."},"BURNER_RESERVE()":{"notice":"Get a reserve gas between the gas limit check and the burner's execution."},"FACTORY()":{"notice":"Get the factory's address."},"NETWORK_MIDDLEWARE_SERVICE()":{"notice":"Get the network middleware service's address."},"TYPE()":{"notice":"Get the entity's type."},"VAULT_FACTORY()":{"notice":"Get the vault factory's address."},"cumulativeSlash(bytes32,address)":{"notice":"Get a cumulative slash amount for an operator on a subnetwork."},"cumulativeSlashAt(bytes32,address,uint48,bytes)":{"notice":"Get a cumulative slash amount for an operator on a subnetwork until a given timestamp (inclusively) using a hint."},"initialize(bytes)":{"notice":"Initialize this entity contract by using a given data."},"isBurnerHook()":{"notice":"Get if the burner is needed to be called on a slashing."},"latestSlashedCaptureTimestamp(bytes32,address)":{"notice":"Get the latest capture timestamp that was slashed on a subnetwork."},"slash(bytes32,address,uint256,uint48,bytes)":{"notice":"Perform a slash using a subnetwork for a particular operator by a given amount using hints."},"slashableStake(bytes32,address,uint48,bytes)":{"notice":"Get a slashable amount of a stake got at a given capture timestamp using hints."},"staticDelegateCall(address,bytes)":{"notice":"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data)."},"vault()":{"notice":"Get the vault's address."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/slasher/Slasher.sol":"Slasher"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol":{"keccak256":"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74","urls":["bzz-raw://942dad22fbdc1669f025540ba63aa3ccfad5f8458fc5d4525b31ebf272e7af45","dweb:/ipfs/Qmdo4X2M82aM3AMoW2kf2jhYkSCyC4T1pHNd6obdsDFnAB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe","urls":["bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c","dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol":{"keccak256":"0xbdc5e074d7dd6678f67e92b1a51a20226801a407b0e1af3da367c5d1ff4519ad","urls":["bzz-raw://a36cca6b22fff3db16fc789ff6c60eea71d4b156065d4d0c83a0bc5e91a77a8b","dweb:/ipfs/QmYN3exd5AemxjBrN8XMB1p5LbbE16uC3sjbYjwi8AjcGR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0xc7755af115020049e4140f224f9ee88d7e1799ffb0646f37bf0df24bf6213f58","urls":["bzz-raw://7f09bf94d5274334ec021f61a04659db303f31e60460e14b709c9bf187740111","dweb:/ipfs/QmNvgomZYUwFAt4cZbPWAiTeSZQreGehY9BK5xyVJsUttb"],"license":"MIT"},"src/contracts/common/Entity.sol":{"keccak256":"0x3d61a932995b8443381f3950542d388223a2c26dd5d29a3274dea3baa7388bd7","urls":["bzz-raw://7cdf5f03ca72fd263fd32ff59c8d88ddca911ae83896a287d10772c1bbe9b138","dweb:/ipfs/QmbP84r5BWT1Rn9AYTntWSf3xUMTTCohTZJFhbBhDXFoHa"],"license":"BUSL-1.1"},"src/contracts/common/StaticDelegateCallable.sol":{"keccak256":"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90","urls":["bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764","dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD"],"license":"BUSL-1.1"},"src/contracts/libraries/Checkpoints.sol":{"keccak256":"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c","urls":["bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609","dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE"],"license":"MIT"},"src/contracts/libraries/Subnetwork.sol":{"keccak256":"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe","urls":["bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56","dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32"],"license":"MIT"},"src/contracts/slasher/BaseSlasher.sol":{"keccak256":"0x190e5dce196a061bdad42468c52e9f5b0eb7810cd7d0c19f04d6a2e94984f1b6","urls":["bzz-raw://07ca08d0cd43c2fe5d54a5577f6bdd522ced410f5d3a52e764deaa7ba26b5f06","dweb:/ipfs/QmZe3PiMKBQKWcwodaLupragdqxPjgS4v1qMC7RXau8hDF"],"license":"BUSL-1.1"},"src/contracts/slasher/Slasher.sol":{"keccak256":"0xeee0cb25fad58d496fdcc641d852d11bae06e6ceed5230ae21150964175c494f","urls":["bzz-raw://34aa27d21246a1bcee0b6a2afa8d9d613441156362430392f75d176511d58c61","dweb:/ipfs/Qmf53Y3zdGfH4PU2zpSGeHZ8mMLzLXCtmkQrG5mnVJECQ3"],"license":"BUSL-1.1"},"src/interfaces/common/IEntity.sol":{"keccak256":"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21","urls":["bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b","dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv"],"license":"MIT"},"src/interfaces/common/IMigratableEntity.sol":{"keccak256":"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4","urls":["bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c","dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds"],"license":"MIT"},"src/interfaces/common/IRegistry.sol":{"keccak256":"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb","urls":["bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014","dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK"],"license":"MIT"},"src/interfaces/common/IStaticDelegateCallable.sol":{"keccak256":"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5","urls":["bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516","dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi"],"license":"MIT"},"src/interfaces/delegator/IBaseDelegator.sol":{"keccak256":"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee","urls":["bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2","dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8"],"license":"MIT"},"src/interfaces/service/INetworkMiddlewareService.sol":{"keccak256":"0x347afc7fcf1fbcdb96d66162070ef6c78aed27b3af2c1d5dfb4e511840631783","urls":["bzz-raw://2d90b8ceb495159e8e4e95d76447719dd166443f67dfabdd942846162071595c","dweb:/ipfs/QmVVuiAWYx92T6vBvNMKZfTvraCf1fa16BsUKkdNs3hdHA"],"license":"MIT"},"src/interfaces/slasher/IBaseSlasher.sol":{"keccak256":"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404","urls":["bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf","dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx"],"license":"MIT"},"src/interfaces/slasher/IBurner.sol":{"keccak256":"0xaf495dacc19ae0b3c787ba8021c5944927d70261536addd234d7dab146158c2b","urls":["bzz-raw://9b3cc66251008be6ff9fc8b11ecc6831d5a9dca49a3fe9817fcd970253c1d447","dweb:/ipfs/QmVxfb9ALGdF9W3SN2h41gQbUct6tawvu5bw4K89kFQ4HW"],"license":"MIT"},"src/interfaces/slasher/ISlasher.sol":{"keccak256":"0x34d226d67a3d5e16571f2fac91a8b9773551bcc41c88a96279669dd78d192625","urls":["bzz-raw://7a6e8c1462ee4a1b0f745414be043c09012ea676613790aba004b06c85c980d1","dweb:/ipfs/QmadjNEbHKRthtA1EeNy3Kg2sXpejH2KBeHm8QZtBPvXbJ"],"license":"MIT"},"src/interfaces/vault/IVault.sol":{"keccak256":"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235","urls":["bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9","dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R"],"license":"MIT"},"src/interfaces/vault/IVaultStorage.sol":{"keccak256":"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22","urls":["bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e","dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6"],"license":"MIT"}},"version":1},"id":93} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[{"name":"vaultFactory","type":"address","internalType":"address"},{"name":"networkMiddlewareService","type":"address","internalType":"address"},{"name":"slasherFactory","type":"address","internalType":"address"},{"name":"entityType","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"BURNER_GAS_LIMIT","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"BURNER_RESERVE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"NETWORK_MIDDLEWARE_SERVICE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"TYPE","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"VAULT_FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"cumulativeSlash","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"cumulativeSlashAt","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isBurnerHook","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"latestSlashedCaptureTimestamp","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"value","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"slash","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","internalType":"uint48"},{"name":"hints","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"slashedAmount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"slashableStake","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"captureTimestamp","type":"uint48","internalType":"uint48"},{"name":"hints","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"staticDelegateCall","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"vault","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"Slash","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"slashedAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","indexed":false,"internalType":"uint48"}],"anonymous":false},{"type":"error","name":"CheckpointUnorderedInsertion","inputs":[]},{"type":"error","name":"InsufficientBurnerGas","inputs":[]},{"type":"error","name":"InsufficientSlash","inputs":[]},{"type":"error","name":"InvalidCaptureTimestamp","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NoBurner","inputs":[]},{"type":"error","name":"NotInitialized","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"NotNetworkMiddleware","inputs":[]},{"type":"error","name":"NotVault","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x6101003461015857601f611e4038819003918201601f1916830192916001600160401b03918285118486101761015c5781608092859260409788528339810103126101585761004d82610170565b9061005a60208401610170565b926060610068868301610170565b910151918083168303610158577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff82891c16610147578080831603610103575b50505060805260a05260c05260e05251611cbb908161018582396080518161044a015260a0518181816108500152611194015260c0518181816102fd01526114c4015260e0518181816101fc01526104060152f35b6001600160401b0319909116811790915585519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80806100ae565b875163f92ee8a960e01b8152600490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101585756fe60806040526004361015610011575f80fd5b5f3560e01c8063021a815614610104578063103f2907146100ff5780631a2be2c4146100fa578063267de1f3146100f55780632964f8dc146100f05780632c9d45b3146100eb5780632dd31000146100e657806334d098ea146100e1578063439fab91146100dc5780639f86fd85146100d7578063aa8e6489146100d2578063aab3595f146100cd578063bb24fe8a146100c8578063d5c24e1a146100c35763fbfa77cf146100be575f80fd5b610891565b610874565b610831565b61080c565b6107ce565b6105d5565b61049d565b610479565b610435565b6103f1565b6103d5565b610380565b61032c565b6102e8565b61015b565b6001600160a01b0381160361011a57565b5f80fd5b65ffffffffffff81160361011a57565b9181601f8401121561011a578235916001600160401b03831161011a576020838186019501011161011a57565b3461011a5760a036600319011261011a5760043560243561017b81610109565b6064356101878161011e565b6084356001600160401b03811161011a576101a690369060040161012e565b917f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0060028154146102cc5760029055604051635daf681960e11b8152606086901c60048201526001600160a01b036020826024817f000000000000000000000000000000000000000000000000000000000000000085165afa9182156102c7575f92610296575b50339116036102845761028094610247946044359161096a565b61027060017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6040519081529081906020820190565b0390f35b60405163227bf64d60e01b8152600490fd5b6102b991925060203d6020116102c0575b6102b181836106f1565b810190610bc0565b905f61022d565b503d6102a7565b61092e565b604051633ee5aeb560e01b8152600490fd5b5f91031261011a57565b3461011a575f36600319011261011a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461011a57604036600319011261011a57602061037861037360243561035181610109565b6004355f526002845260405f209060018060a01b03165f5260205260405f2090565b6113e3565b604051908152f35b3461011a57604036600319011261011a57602065ffffffffffff6103cb6024356103a981610109565b6004355f526001845260405f209060018060a01b03165f5260205260405f2090565b5416604051908152f35b3461011a575f36600319011261011a576020604051614e208152f35b3461011a575f36600319011261011a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461011a575f36600319011261011a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461011a575f36600319011261011a57602060ff5f5460a01c166040519015158152f35b3461011a57602036600319011261011a576001600160401b0360043581811161011a576104ce90369060040161012e565b5f80516020611c66833981519152549260ff8460401c16159316801590816105cd575b60011490816105c3575b1590816105ba575b506105a8575f80516020611c66833981519152805467ffffffffffffffff1916600117905561053691836105845761148d565b61053c57005b5f80516020611c66833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f80516020611c66833981519152805460ff60401b1916600160401b17905561148d565b60405163f92ee8a960e01b8152600490fd5b9050155f610503565b303b1591506104fb565b8491506104f1565b3461011a5760408060031936011261011a576004356105f381610109565b602435906001600160401b03821161011a575f809161061961067d94369060040161012e565b908187519283928337810184815203915af43d156106855761066f3d61063e81610721565b9061064b865192836106f1565b81523d5f602083013e5b845194859315156020850152808401526060830190610b70565b03601f1981018352826106f1565b805190602001fd5b61066f6060610655565b634e487b7160e01b5f52604160045260245ffd5b602081019081106001600160401b038211176106be57604052565b61068f565b604081019081106001600160401b038211176106be57604052565b6001600160401b0381116106be57604052565b90601f801991011681019081106001600160401b038211176106be57604052565b6040519061071f826106c3565b565b6001600160401b0381116106be57601f01601f191660200190565b81601f8201121561011a5780359061075382610721565b9261076160405194856106f1565b8284526020838301011161011a57815f926020809301838601378301015290565b90608060031983011261011a576004359160243561079f81610109565b916044356107ac8161011e565b91606435906001600160401b03821161011a576107cb9160040161073c565b90565b3461011a5760206103786108076107e436610782565b939190925f526002865260405f209060018060a01b03165f5260205260405f2090565b611627565b3461011a57602061082861081f36610782565b92919091610d00565b50604051908152f35b3461011a575f36600319011261011a5760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461011a575f36600319011261011a576020604051620249f08152f35b3461011a575f36600319011261011a575f546040516001600160a01b039091168152602090f35b604051906108c5826106a3565b60608252565b9060208282031261011a5781356001600160401b039283821161011a57019060208282031261011a5760405192610901846106a3565b823590811161011a57610914920161073c565b815290565b9081602091031261011a57516107cb8161011e565b6040513d5f823e3d90fd5b634e487b7160e01b5f52601160045260245ffd5b65ffffffffffff918216908216039190821161096557565b610939565b929395949190956109796108b8565b9280610b5a575b505061098b426116ff565b5f546004906020906109b3906109a7906001600160a01b031681565b6001600160a01b031690565b6040516327f843b560e11b815292839182905afa80156102c7576109ed926109e2925f92610b29575b5061094d565b65ffffffffffff1690565b65ffffffffffff8516908110908115610b13575b50610b0157610a16610a259251858886610d00565b92909180831890831102821890565b958615610aef57610aaa61066f610aa1610aea947fe0cbbe1f1e6fd806ca87036fafcebaf7ab5247474a3b20e1c37bb50122c3a88496610a668a878b610f36565b610a718c878b610fc4565b610a79610712565b9182526020820152604051928391602083019190916020806040830194805184520151910152565b86898488611130565b610ab48588611239565b610ac0858883876112be565b6040805188815265ffffffffffff90961660208701526001600160a01b0390911694918291820190565b0390a3565b60405163167f871760e31b8152600490fd5b604051631357ac9160e11b8152600490fd5b9050610b216109e2426116ff565b11155f610a01565b610b4c91925060203d602011610b53575b610b4481836106f1565b810190610919565b905f6109dc565b503d610b3a565b610b689293508101906108cb565b905f80610980565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b5f9081526002602090815260408083206001600160a01b039094168352929052206107cb929190611627565b9081602091031261011a57516107cb81610109565b60405190610be2826106c3565b60606020838281520152565b81601f8201121561011a57805190610c0582610721565b92610c1360405194856106f1565b8284526020838301011161011a57815f9260208093018386015e8301015290565b9060208282031261011a5781516001600160401b039283821161011a57019060408282031261011a5760405192610c6a846106c3565b825181811161011a5782610c7f918501610bee565b8452602083015190811161011a57610c979201610bee565b602082015290565b9081602091031261011a575190565b9081526001600160a01b03909116602082015265ffffffffffff90911660408201526080606082018190526107cb92910190610b70565b5f1981019190821161096557565b9190820391821161096557565b92610d09610bd5565b90805180610f1c575b5050610d1d426116ff565b5f54909490610d36906109a7906001600160a01b031681565b93604051956327f843b560e11b875260209687816004818a5afa80156102c757610d6a926109e2925f92610f04575061094d565b65ffffffffffff8216908110908115610eed575b8115610ebc575b50610eb0578560049560405196878092630ce9b79360e41b82525afa9485156102c757610dd79587915f91610e93575b50845190604051808099819463e02f693760e01b8352878b8a60048601610cae565b03916001600160a01b03165afa9384156102c757610e4f955f95610e52575b5092610e3e8593610e4493610e3e96869a610e3561037383610e20875f52600260205260405f2090565b9060018060a01b03165f5260205260405f2090565b95015192610b94565b90610cf3565b818082109118021890565b91565b610e44929550610e3e949193610e80610e3e928a3d8c11610e8c575b610e7881836106f1565b810190610c9f565b96935093919450610df6565b503d610e6e565b610eaa9150823d84116102c0576102b181836106f1565b5f610db5565b5050505050505f905f90565b9050610ee66109e2610eda87610e20875f52600160205260405f2090565b5465ffffffffffff1690565b115f610d85565b9050610efb6109e2426116ff565b81101590610d7e565b610b4c9192508a3d8c11610b5357610b4481836106f1565b610f2f9250602080918301019101610c34565b5f80610d12565b919091805f52600160205265ffffffffffff80610f668560405f209060018060a01b03165f5260205260405f2090565b541690831611610f7557505050565b61071f92610f9d915f52600160205260405f209060018060a01b03165f5260205260405f2090565b9065ffffffffffff1665ffffffffffff19825416179055565b906001820180921161096557565b9190825f52600260205261101c610373610ff18360405f209060018060a01b03165f5260205260405f2090565b92610ffb426116ff565b955f52600260205260405f209060018060a01b03165f5260205260405f2090565b9182018092116109655760018101908154156110c0575b61103c8161193d565b50949083549561104b846113e3565b50816110ab575b501561108a5750505f1983019283116109655761071f92611072916113ba565b90919082549060031b91821b915f19901b1916179055565b61071f946110a4926001600160d01b0390911691906119fe565b505061175e565b65ffffffffffff83811691161490505f611052565b6110c982611731565b611033565b606060206107cb938184526001600160401b03815116828501520151916040808201520190610b70565b919360a0936107cb969565ffffffffffff938552600180871b0316602085015260408401521660608201528160808201520190610b70565b9293906004602061114d6109a76109a75f5460018060a01b031690565b604051630ce9b79360e41b815292839182905afa9081156102c75761066f916111cb915f9161121a575b506001600160a01b03169361118a610712565b6001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152906020820152604051928391602083016110ce565b823b1561011a575f946111f686926040519889978896879563724ab0f760e11b8752600487016110f8565b03925af180156102c7576112075750565b8061121461071f926106de565b806102de565b611233915060203d6020116102c0576102b181836106f1565b5f611177565b5f8054604051631c9e38c760e21b8152600481019390935265ffffffffffff9390931660248301529091602091839160449183916001600160a01b03165af180156102c7576112855750565b61129d9060203d602011610e8c57610e7881836106f1565b50565b81156112aa570490565b634e487b7160e01b5f52601260045260245ffd5b92905f549060ff8260a01c166112d6575b5050505050565b6040516313c085b760e11b815291602090839060049082906001600160a01b03165afa9182156102c7575f92611393575b5060405163065c1e0360e01b6020820190815260248201969096526001600160a01b039091166044820152606481019390935265ffffffffffff90911660848301526113608260a481015b03601f1981018452836106f1565b6202a15c5a10611381575f928380935192620249f0f1505f808080806112cf565b604051632153f33560e21b8152600490fd5b61136092506113b36113529160203d6020116102c0576102b181836106f1565b9250611307565b80548210156113cf575f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b80548061141857505f5b6001600160d01b0381161561141257600161140892016113ba565b90549060031b1c90565b50505f90565b5f1990808281011161096557825f5260205f2001015460301c6113ed565b91909160408184031261011a57803561144e81610109565b9260208201356001600160401b03811161011a576107cb920161073c565b5190811515820361011a57565b9081602091031261011a576107cb9061146c565b61149991810190611436565b6040516302910f8b60e31b81526001600160a01b0392831660048201819052929160209182816024817f000000000000000000000000000000000000000000000000000000000000000088165afa9081156102c7575f916115c9575b50156115b7578161152960049261150a611781565b5f80546001600160a01b0319166001600160a01b0389161790556117b7565b94604051928380926313c085b760e11b82525afa9182156102c7575f9261159a575b5050161580611590575b61157e575161071f9015155f805460ff60a01b191691151560a01b60ff60a01b16919091179055565b60405163d2420f5960e01b8152600490fd5b5080511515611555565b6115b09250803d106102c0576102b181836106f1565b5f8061154b565b6040516362df054560e01b8152600490fd5b6115e99150833d85116115ef575b6115e181836106f1565b810190611479565b5f6114f5565b503d6115d7565b9081602091031261011a575163ffffffff8116810361011a5790565b90600163ffffffff8093160191821161096557565b918051156116f55780602080611642935183010191016115f6565b9161164d83826118cf565b9261165e845165ffffffffffff1690565b9065ffffffffffff80851692168281146116e95782119182611694575b505061168b576107cb92506117ff565b50506020015190565b9091506116a18354610ce5565b63ffffffff8316149182156116ba575b50505f8061167b565b6116e19192506116d56116cf6109e292611612565b856118cf565b5165ffffffffffff1690565b115f806116b1565b50505050506020015190565b506107cb916117ff565b65ffffffffffff90818111611712571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b8054600160401b8110156106be5761174e916001820181556113ba565b8154905f199060031b1b19169055565b90815491600160401b8310156106be578261107291600161071f950181556113ba565b611789611976565b611791611976565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5f6040516117c4816106a3565b5260208180518101031261011a576020906040516117e1816106a3565b6117f96040519384936117f3856106a3565b0161146c565b82525290565b908154905f829160058411611869575b61181a935084611c06565b8061184257505f905b6001600160d01b03821615611412576107cb91600161140892016113ba565b61185c61185161186392610ce5565b835f5260205f200190565b5460301c90565b90611823565b919261187481611adb565b81039081116109655761181a93855f5265ffffffffffff808360205f20015416908516105f146118a557509161180f565b9291506118b190610fb6565b9061180f565b604051906118c4826106c3565b5f6020838281520152565b90602060016118f361191f936118e36118b7565b506118ec6118b7565b50856113ba565b509360405194611902866106c3565b549465ffffffffffff86169586825260301c9384910152016113ba565b9054906040519261192f846106c3565b835260031b1c602082015290565b80548061194e5750505f905f905f90565b5f19918183810111610965575f5260205f2001015460019165ffffffffffff82169160301c90565b60ff5f80516020611c668339815191525460401c161561199257565b604051631afcd79f60e31b8152600490fd5b8054600160401b8110156106be576119c1916001820181556113ba565b6119eb57815160209092015160301b65ffffffffffff191665ffffffffffff909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b80549293928015611ab157611a15611a2091610ce5565b825f5260205f200190565b9182549265ffffffffffff91828516928116808411611a9f57879303611a665750611a5f92509065ffffffffffff82549181199060301b169116179055565b60301c9190565b915050611a9a91611a86611a78610712565b65ffffffffffff9093168352565b6001600160d01b03861660208301526119a4565b611a5f565b604051632520601d60e01b8152600490fd5b5090611ad691611ac2611a78610712565b6001600160d01b03851660208301526119a4565b5f9190565b60018111156107cb57600181600160801b811015611bf4575b611b9c611b92611b88611b7e611b74611b6a611ba897600488600160401b611ba39a1015611be7575b640100000000811015611bda575b62010000811015611bcd575b610100811015611bc1575b6010811015611bb5575b1015611bad575b60030260011c611b63818b6112a0565b0160011c90565b611b63818a6112a0565b611b6381896112a0565b611b6381886112a0565b611b6381876112a0565b611b6381866112a0565b80936112a0565b821190565b900390565b60011b611b53565b811c9160021b91611b4c565b60081c91811b91611b42565b60101c9160081b91611b37565b60201c9160101b91611b2b565b60401c9160201b91611b1d565b50600160401b9050608082901c611af4565b91905b838210611c165750505090565b9091928083169080841860011c820180921161096557845f5265ffffffffffff808360205f20015416908416105f14611c535750925b9190611c09565b939250611c5f90610fb6565b91611c4c56fef0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220fbcaa914a07c97ad55623ae1232e81e064cb7541dbc8b538014dd0366099ddcf64736f6c63430008190033","sourceMap":"445:2048:100:-:0;;;;;;;;;;;;;-1:-1:-1;;445:2048:100;;;;;-1:-1:-1;;;;;445:2048:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;8837:64:22;445:2048:100;;;;;;;;;7896:76:22;;445:2048:100;;;;7985:34:22;7981:146;;-1:-1:-1;525:17:76;;;445:2048:100;525:17:76;552:12;;2353:28:99;;2391:53;;445:2048:100;;;;;;;;;;;;;552:12:76;445:2048:100;;;;;;;;;;2353:28:99;445:2048:100;;;;;;;;;;2391:53:99;445:2048:100;;;;;;;;;;;7981:146:22;-1:-1:-1;;;;;;445:2048:100;;;;;;;;;;;;;8087:29:22;;445:2048:100;;8087:29:22;7981:146;;;;;7896:76;445:2048:100;;-1:-1:-1;;;7938:23:22;;;;;445:2048:100;-1:-1:-1;445:2048:100;;;;;;-1:-1:-1;445:2048:100;;;;;-1:-1:-1;445:2048:100;;;;-1:-1:-1;;;;;445:2048:100;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c8063021a815614610104578063103f2907146100ff5780631a2be2c4146100fa578063267de1f3146100f55780632964f8dc146100f05780632c9d45b3146100eb5780632dd31000146100e657806334d098ea146100e1578063439fab91146100dc5780639f86fd85146100d7578063aa8e6489146100d2578063aab3595f146100cd578063bb24fe8a146100c8578063d5c24e1a146100c35763fbfa77cf146100be575f80fd5b610891565b610874565b610831565b61080c565b6107ce565b6105d5565b61049d565b610479565b610435565b6103f1565b6103d5565b610380565b61032c565b6102e8565b61015b565b6001600160a01b0381160361011a57565b5f80fd5b65ffffffffffff81160361011a57565b9181601f8401121561011a578235916001600160401b03831161011a576020838186019501011161011a57565b3461011a5760a036600319011261011a5760043560243561017b81610109565b6064356101878161011e565b6084356001600160401b03811161011a576101a690369060040161012e565b917f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0060028154146102cc5760029055604051635daf681960e11b8152606086901c60048201526001600160a01b036020826024817f000000000000000000000000000000000000000000000000000000000000000085165afa9182156102c7575f92610296575b50339116036102845761028094610247946044359161096a565b61027060017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6040519081529081906020820190565b0390f35b60405163227bf64d60e01b8152600490fd5b6102b991925060203d6020116102c0575b6102b181836106f1565b810190610bc0565b905f61022d565b503d6102a7565b61092e565b604051633ee5aeb560e01b8152600490fd5b5f91031261011a57565b3461011a575f36600319011261011a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461011a57604036600319011261011a57602061037861037360243561035181610109565b6004355f526002845260405f209060018060a01b03165f5260205260405f2090565b6113e3565b604051908152f35b3461011a57604036600319011261011a57602065ffffffffffff6103cb6024356103a981610109565b6004355f526001845260405f209060018060a01b03165f5260205260405f2090565b5416604051908152f35b3461011a575f36600319011261011a576020604051614e208152f35b3461011a575f36600319011261011a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461011a575f36600319011261011a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461011a575f36600319011261011a57602060ff5f5460a01c166040519015158152f35b3461011a57602036600319011261011a576001600160401b0360043581811161011a576104ce90369060040161012e565b5f80516020611c66833981519152549260ff8460401c16159316801590816105cd575b60011490816105c3575b1590816105ba575b506105a8575f80516020611c66833981519152805467ffffffffffffffff1916600117905561053691836105845761148d565b61053c57005b5f80516020611c66833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f80516020611c66833981519152805460ff60401b1916600160401b17905561148d565b60405163f92ee8a960e01b8152600490fd5b9050155f610503565b303b1591506104fb565b8491506104f1565b3461011a5760408060031936011261011a576004356105f381610109565b602435906001600160401b03821161011a575f809161061961067d94369060040161012e565b908187519283928337810184815203915af43d156106855761066f3d61063e81610721565b9061064b865192836106f1565b81523d5f602083013e5b845194859315156020850152808401526060830190610b70565b03601f1981018352826106f1565b805190602001fd5b61066f6060610655565b634e487b7160e01b5f52604160045260245ffd5b602081019081106001600160401b038211176106be57604052565b61068f565b604081019081106001600160401b038211176106be57604052565b6001600160401b0381116106be57604052565b90601f801991011681019081106001600160401b038211176106be57604052565b6040519061071f826106c3565b565b6001600160401b0381116106be57601f01601f191660200190565b81601f8201121561011a5780359061075382610721565b9261076160405194856106f1565b8284526020838301011161011a57815f926020809301838601378301015290565b90608060031983011261011a576004359160243561079f81610109565b916044356107ac8161011e565b91606435906001600160401b03821161011a576107cb9160040161073c565b90565b3461011a5760206103786108076107e436610782565b939190925f526002865260405f209060018060a01b03165f5260205260405f2090565b611627565b3461011a57602061082861081f36610782565b92919091610d00565b50604051908152f35b3461011a575f36600319011261011a5760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461011a575f36600319011261011a576020604051620249f08152f35b3461011a575f36600319011261011a575f546040516001600160a01b039091168152602090f35b604051906108c5826106a3565b60608252565b9060208282031261011a5781356001600160401b039283821161011a57019060208282031261011a5760405192610901846106a3565b823590811161011a57610914920161073c565b815290565b9081602091031261011a57516107cb8161011e565b6040513d5f823e3d90fd5b634e487b7160e01b5f52601160045260245ffd5b65ffffffffffff918216908216039190821161096557565b610939565b929395949190956109796108b8565b9280610b5a575b505061098b426116ff565b5f546004906020906109b3906109a7906001600160a01b031681565b6001600160a01b031690565b6040516327f843b560e11b815292839182905afa80156102c7576109ed926109e2925f92610b29575b5061094d565b65ffffffffffff1690565b65ffffffffffff8516908110908115610b13575b50610b0157610a16610a259251858886610d00565b92909180831890831102821890565b958615610aef57610aaa61066f610aa1610aea947fe0cbbe1f1e6fd806ca87036fafcebaf7ab5247474a3b20e1c37bb50122c3a88496610a668a878b610f36565b610a718c878b610fc4565b610a79610712565b9182526020820152604051928391602083019190916020806040830194805184520151910152565b86898488611130565b610ab48588611239565b610ac0858883876112be565b6040805188815265ffffffffffff90961660208701526001600160a01b0390911694918291820190565b0390a3565b60405163167f871760e31b8152600490fd5b604051631357ac9160e11b8152600490fd5b9050610b216109e2426116ff565b11155f610a01565b610b4c91925060203d602011610b53575b610b4481836106f1565b810190610919565b905f6109dc565b503d610b3a565b610b689293508101906108cb565b905f80610980565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b5f9081526002602090815260408083206001600160a01b039094168352929052206107cb929190611627565b9081602091031261011a57516107cb81610109565b60405190610be2826106c3565b60606020838281520152565b81601f8201121561011a57805190610c0582610721565b92610c1360405194856106f1565b8284526020838301011161011a57815f9260208093018386015e8301015290565b9060208282031261011a5781516001600160401b039283821161011a57019060408282031261011a5760405192610c6a846106c3565b825181811161011a5782610c7f918501610bee565b8452602083015190811161011a57610c979201610bee565b602082015290565b9081602091031261011a575190565b9081526001600160a01b03909116602082015265ffffffffffff90911660408201526080606082018190526107cb92910190610b70565b5f1981019190821161096557565b9190820391821161096557565b92610d09610bd5565b90805180610f1c575b5050610d1d426116ff565b5f54909490610d36906109a7906001600160a01b031681565b93604051956327f843b560e11b875260209687816004818a5afa80156102c757610d6a926109e2925f92610f04575061094d565b65ffffffffffff8216908110908115610eed575b8115610ebc575b50610eb0578560049560405196878092630ce9b79360e41b82525afa9485156102c757610dd79587915f91610e93575b50845190604051808099819463e02f693760e01b8352878b8a60048601610cae565b03916001600160a01b03165afa9384156102c757610e4f955f95610e52575b5092610e3e8593610e4493610e3e96869a610e3561037383610e20875f52600260205260405f2090565b9060018060a01b03165f5260205260405f2090565b95015192610b94565b90610cf3565b818082109118021890565b91565b610e44929550610e3e949193610e80610e3e928a3d8c11610e8c575b610e7881836106f1565b810190610c9f565b96935093919450610df6565b503d610e6e565b610eaa9150823d84116102c0576102b181836106f1565b5f610db5565b5050505050505f905f90565b9050610ee66109e2610eda87610e20875f52600160205260405f2090565b5465ffffffffffff1690565b115f610d85565b9050610efb6109e2426116ff565b81101590610d7e565b610b4c9192508a3d8c11610b5357610b4481836106f1565b610f2f9250602080918301019101610c34565b5f80610d12565b919091805f52600160205265ffffffffffff80610f668560405f209060018060a01b03165f5260205260405f2090565b541690831611610f7557505050565b61071f92610f9d915f52600160205260405f209060018060a01b03165f5260205260405f2090565b9065ffffffffffff1665ffffffffffff19825416179055565b906001820180921161096557565b9190825f52600260205261101c610373610ff18360405f209060018060a01b03165f5260205260405f2090565b92610ffb426116ff565b955f52600260205260405f209060018060a01b03165f5260205260405f2090565b9182018092116109655760018101908154156110c0575b61103c8161193d565b50949083549561104b846113e3565b50816110ab575b501561108a5750505f1983019283116109655761071f92611072916113ba565b90919082549060031b91821b915f19901b1916179055565b61071f946110a4926001600160d01b0390911691906119fe565b505061175e565b65ffffffffffff83811691161490505f611052565b6110c982611731565b611033565b606060206107cb938184526001600160401b03815116828501520151916040808201520190610b70565b919360a0936107cb969565ffffffffffff938552600180871b0316602085015260408401521660608201528160808201520190610b70565b9293906004602061114d6109a76109a75f5460018060a01b031690565b604051630ce9b79360e41b815292839182905afa9081156102c75761066f916111cb915f9161121a575b506001600160a01b03169361118a610712565b6001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152906020820152604051928391602083016110ce565b823b1561011a575f946111f686926040519889978896879563724ab0f760e11b8752600487016110f8565b03925af180156102c7576112075750565b8061121461071f926106de565b806102de565b611233915060203d6020116102c0576102b181836106f1565b5f611177565b5f8054604051631c9e38c760e21b8152600481019390935265ffffffffffff9390931660248301529091602091839160449183916001600160a01b03165af180156102c7576112855750565b61129d9060203d602011610e8c57610e7881836106f1565b50565b81156112aa570490565b634e487b7160e01b5f52601260045260245ffd5b92905f549060ff8260a01c166112d6575b5050505050565b6040516313c085b760e11b815291602090839060049082906001600160a01b03165afa9182156102c7575f92611393575b5060405163065c1e0360e01b6020820190815260248201969096526001600160a01b039091166044820152606481019390935265ffffffffffff90911660848301526113608260a481015b03601f1981018452836106f1565b6202a15c5a10611381575f928380935192620249f0f1505f808080806112cf565b604051632153f33560e21b8152600490fd5b61136092506113b36113529160203d6020116102c0576102b181836106f1565b9250611307565b80548210156113cf575f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b80548061141857505f5b6001600160d01b0381161561141257600161140892016113ba565b90549060031b1c90565b50505f90565b5f1990808281011161096557825f5260205f2001015460301c6113ed565b91909160408184031261011a57803561144e81610109565b9260208201356001600160401b03811161011a576107cb920161073c565b5190811515820361011a57565b9081602091031261011a576107cb9061146c565b61149991810190611436565b6040516302910f8b60e31b81526001600160a01b0392831660048201819052929160209182816024817f000000000000000000000000000000000000000000000000000000000000000088165afa9081156102c7575f916115c9575b50156115b7578161152960049261150a611781565b5f80546001600160a01b0319166001600160a01b0389161790556117b7565b94604051928380926313c085b760e11b82525afa9182156102c7575f9261159a575b5050161580611590575b61157e575161071f9015155f805460ff60a01b191691151560a01b60ff60a01b16919091179055565b60405163d2420f5960e01b8152600490fd5b5080511515611555565b6115b09250803d106102c0576102b181836106f1565b5f8061154b565b6040516362df054560e01b8152600490fd5b6115e99150833d85116115ef575b6115e181836106f1565b810190611479565b5f6114f5565b503d6115d7565b9081602091031261011a575163ffffffff8116810361011a5790565b90600163ffffffff8093160191821161096557565b918051156116f55780602080611642935183010191016115f6565b9161164d83826118cf565b9261165e845165ffffffffffff1690565b9065ffffffffffff80851692168281146116e95782119182611694575b505061168b576107cb92506117ff565b50506020015190565b9091506116a18354610ce5565b63ffffffff8316149182156116ba575b50505f8061167b565b6116e19192506116d56116cf6109e292611612565b856118cf565b5165ffffffffffff1690565b115f806116b1565b50505050506020015190565b506107cb916117ff565b65ffffffffffff90818111611712571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b8054600160401b8110156106be5761174e916001820181556113ba565b8154905f199060031b1b19169055565b90815491600160401b8310156106be578261107291600161071f950181556113ba565b611789611976565b611791611976565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5f6040516117c4816106a3565b5260208180518101031261011a576020906040516117e1816106a3565b6117f96040519384936117f3856106a3565b0161146c565b82525290565b908154905f829160058411611869575b61181a935084611c06565b8061184257505f905b6001600160d01b03821615611412576107cb91600161140892016113ba565b61185c61185161186392610ce5565b835f5260205f200190565b5460301c90565b90611823565b919261187481611adb565b81039081116109655761181a93855f5265ffffffffffff808360205f20015416908516105f146118a557509161180f565b9291506118b190610fb6565b9061180f565b604051906118c4826106c3565b5f6020838281520152565b90602060016118f361191f936118e36118b7565b506118ec6118b7565b50856113ba565b509360405194611902866106c3565b549465ffffffffffff86169586825260301c9384910152016113ba565b9054906040519261192f846106c3565b835260031b1c602082015290565b80548061194e5750505f905f905f90565b5f19918183810111610965575f5260205f2001015460019165ffffffffffff82169160301c90565b60ff5f80516020611c668339815191525460401c161561199257565b604051631afcd79f60e31b8152600490fd5b8054600160401b8110156106be576119c1916001820181556113ba565b6119eb57815160209092015160301b65ffffffffffff191665ffffffffffff909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b80549293928015611ab157611a15611a2091610ce5565b825f5260205f200190565b9182549265ffffffffffff91828516928116808411611a9f57879303611a665750611a5f92509065ffffffffffff82549181199060301b169116179055565b60301c9190565b915050611a9a91611a86611a78610712565b65ffffffffffff9093168352565b6001600160d01b03861660208301526119a4565b611a5f565b604051632520601d60e01b8152600490fd5b5090611ad691611ac2611a78610712565b6001600160d01b03851660208301526119a4565b5f9190565b60018111156107cb57600181600160801b811015611bf4575b611b9c611b92611b88611b7e611b74611b6a611ba897600488600160401b611ba39a1015611be7575b640100000000811015611bda575b62010000811015611bcd575b610100811015611bc1575b6010811015611bb5575b1015611bad575b60030260011c611b63818b6112a0565b0160011c90565b611b63818a6112a0565b611b6381896112a0565b611b6381886112a0565b611b6381876112a0565b611b6381866112a0565b80936112a0565b821190565b900390565b60011b611b53565b811c9160021b91611b4c565b60081c91811b91611b42565b60101c9160081b91611b37565b60201c9160101b91611b2b565b60401c9160201b91611b1d565b50600160401b9050608082901c611af4565b91905b838210611c165750505090565b9091928083169080841860011c820180921161096557845f5265ffffffffffff808360205f20015416908416105f14611c535750925b9190611c09565b939250611c5f90610fb6565b91611c4c56fef0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220fbcaa914a07c97ad55623ae1232e81e064cb7541dbc8b538014dd0366099ddcf64736f6c63430008190033","sourceMap":"445:2048:100:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;-1:-1:-1;;;;;445:2048:100;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;445:2048:100;;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;445:2048:100;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;-1:-1:-1;;;;;445:2048:100;;;;;;;;;;;:::i;:::-;2499:73:26;;1991:1;445:2048:100;;3670:20:26;3666:88;;1991:1;;;445:2048:100;;-1:-1:-1;;;4546:86:99;;467:2:95;445:2048:100;;;;4546:86:99;;445:2048:100;-1:-1:-1;;;;;4546:86:99;445:2048:100;;;4572:26:99;445:2048:100;;4546:86:99;;;;;;;-1:-1:-1;4546:86:99;;;445:2048:100;4636:10:99;;445:2048:100;;4546:100:99;4542:160;;445:2048:100;;774:1493;445:2048;;;774:1493;;:::i;:::-;3426:1:26;1949;2499:73;1991:1;3860:283;3426:1;445:2048:100;;;;;;;;;;;;;;;;;4542:160:99;445:2048:100;;-1:-1:-1;;;4669:22:99;;445:2048:100;;4669:22:99;4546:86;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;:::i;3666:88:26:-;445:2048:100;;-1:-1:-1;;;3713:30:26;;445:2048:100;;3713:30:26;445:2048:100;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;445:2048:100;;;;;;1435:38:99;-1:-1:-1;;;;;445:2048:100;;;;;;;;;;;;-1:-1:-1;;445:2048:100;;;;;2936:47:99;:38;445:2048:100;;;;;:::i;:::-;;;-1:-1:-1;445:2048:100;2936:16:99;445:2048:100;;;-1:-1:-1;445:2048:100;;;;;;;;;;;;;;;;;2936:38:99;:47;:::i;:::-;445:2048:100;;;;;;;;;;;;-1:-1:-1;;445:2048:100;;;;;;1788:109:99;445:2048:100;;;;;:::i;:::-;;;-1:-1:-1;445:2048:100;1788:109:99;445:2048:100;;;-1:-1:-1;445:2048:100;;;;;;;;;;;;;;;;;1788:109:99;445:2048:100;;;;;;;;;;;;;;-1:-1:-1;;445:2048:100;;;;;;;1374:6:99;445:2048:100;;;;;;;;;-1:-1:-1;;445:2048:100;;;;;;1528:51:99;-1:-1:-1;;;;;445:2048:100;;;;;;;;;;;;-1:-1:-1;;445:2048:100;;;;;;322:32:76;-1:-1:-1;;;;;445:2048:100;;;;;;;;;;;;-1:-1:-1;;445:2048:100;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;445:2048:100;;;;-1:-1:-1;;;;;445:2048:100;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;445:2048:100;;;;;;;4301:16:22;445:2048:100;;4726:16:22;;:34;;;;445:2048:100;4805:1:22;4790:16;:50;;;;445:2048:100;4855:13:22;:30;;;;445:2048:100;4851:91:22;;;-1:-1:-1;;;;;;;;;;;445:2048:100;;-1:-1:-1;;445:2048:100;;;;;718:4:76;;4951:18:22;4979:67;;718:4:76;:::i;:::-;5066:101:22;;445:2048:100;5066:101:22;-1:-1:-1;;;;;;;;;;;445:2048:100;;-1:-1:-1;;;;445:2048:100;;;;;-1:-1:-1;445:2048:100;;5142:14:22;;445:2048:100;;5142:14:22;445:2048:100;4979:67:22;-1:-1:-1;;;;;;;;;;;445:2048:100;;-1:-1:-1;;;;445:2048:100;-1:-1:-1;;;445:2048:100;;;718:4:76;:::i;4851:91:22:-;445:2048:100;;-1:-1:-1;;;4908:23:22;;445:2048:100;;4908:23:22;4855:30;4872:13;;;4855:30;;;4790:50;4818:4;4810:25;:30;;-1:-1:-1;4790:50:22;;4726:34;;;-1:-1:-1;4726:34:22;;445:2048:100;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;445:2048:100;;;;-1:-1:-1;445:2048:100;;;477:31:82;445:2048:100;;;;;;:::i;:::-;;;;;;;;;;;;;;;416:25:82;;;;445:2048:100;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;445:2048:100;;;;;;;;;;;;;477:31:82;;445:2048:100;;;;;;;;;;:::i;:::-;477:31:82;;;;;;;;;:::i;:::-;518:79;;;445:2048:100;518:79:82;;445:2048:100;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;445:2048:100;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;-1:-1:-1;;;;;445:2048:100;;;;;;;:::o;:::-;-1:-1:-1;;;;;445:2048:100;;;;;;:::o;:::-;;;477:31:82;;445:2048:100;;;;;;;;-1:-1:-1;;;;;445:2048:100;;;;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;:::-;-1:-1:-1;;;;;445:2048:100;;;;;;-1:-1:-1;;445:2048:100;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;445:2048:100;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;445:2048:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;445:2048:100;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;2692:73:99;:38;445:2048:100;;;:::i;:::-;;;;;-1:-1:-1;445:2048:100;2692:16:99;445:2048:100;;;-1:-1:-1;445:2048:100;;;;;;;;;;;;;;;;;2692:38:99;:73;:::i;445:2048:100:-;;;;;3248:62:99;445:2048:100;;;:::i;:::-;3248:62:99;;;;;:::i;:::-;445:2048:100;;;;;;;;;;;;;-1:-1:-1;;445:2048:100;;;;;;;-1:-1:-1;;;;;404:28:76;445:2048:100;;;;;;;;;;-1:-1:-1;;445:2048:100;;;;;;;1271:7:99;445:2048:100;;;;;;;;;-1:-1:-1;;445:2048:100;;;;;;;;-1:-1:-1;;;;;445:2048:100;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;445:2048:100;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;774:1493::-;;;;;;;;445:2048;;:::i;:::-;1076:16;;1072:91;;774:1493;837:15:68;;819:34;837:15;819:34;:::i;:::-;-1:-1:-1;445:2048:100;1215:29;;;;:27;;:13;;-1:-1:-1;;;;;445:2048:100;1215:13;445:2048;;-1:-1:-1;;;;;445:2048:100;;;1215:27;445:2048;;-1:-1:-1;;;1215:29:100;;445:2048;;;;;1215:29;;;;;;1177:67;1215:29;1196:48;1215:29;-1:-1:-1;1215:29:100;;;774:1493;1196:48;;:::i;:::-;445:2048;;;;1177:67;445:2048;;;1177:67;;;:107;;;;;774:1493;1173:178;;;1418:87;3455:20:63;1474:30:100;;1418:87;;;;:::i;:::-;3463:5:63;;;3066;;;3463;;-1:-1:-1;445:2048:100;3060:42:63;;;2825:294;3455:20;1578:18:100;;;1574:75;;1950:87;;;2200:60;1718:16;2200:60;1718:16;;;;;;:::i;:::-;1791:13;;;;;:::i;:::-;445:2048;;:::i;:::-;;;;1215:29;1961:75;;445:2048;;;1950:87;;;1215:29;1950:87;;445:2048;;;;;;;;;;;;;;;;;;;1950:87;;;;;;:::i;:::-;2087:16;;;;:::i;:::-;2167;;;;;;:::i;:::-;445:2048;;;;;;;;;;;;;;-1:-1:-1;;;;;445:2048:100;;;;;;;;;;;2200:60;;;;774:1493::o;1574:75::-;445:2048;;-1:-1:-1;;;1619:19:100;;1215:29;;1619:19;1173:178;445:2048;;-1:-1:-1;;;1315:25:100;;1215:29;;1315:25;1177:107;837:15:68;;1248:36:100;819:34:68;837:15;819:34;:::i;1248:36:100:-;-1:-1:-1;1248:36:100;1177:107;;;1215:29;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;1072:91;1121:31;;;;;;;;:::i;:::-;1072:91;;;;;445:2048;;;;;;;;;;;;;;;;;-1:-1:-1;445:2048:100;;;;;;;;-1:-1:-1;;445:2048:100;;;;:::o;2505:267:99:-;-1:-1:-1;445:2048:100;;;2692:16:99;445:2048:100;;;;;;;;-1:-1:-1;;;;;445:2048:100;;;;;;;;;2692:73:99;;2505:267;;2692:73;:::i;445:2048:100:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;445:2048:100;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;445:2048:100;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;445:2048:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;445:2048:100;;;;;;;;:::o;:::-;;;;;;;;;;:::o;3323:1122:99:-;;445:2048:100;;:::i;:::-;;;;3608:16:99;3604:109;;3323:1122;837:15:68;;819:34;837:15;819:34;:::i;:::-;-1:-1:-1;445:2048:100;;;;3778:27:99;;:13;;-1:-1:-1;;;;;445:2048:100;3778:13:99;445:2048:100;3778:27:99;445:2048:100;;;;;;;3778:29:99;;;;;;;;;;;;;;;3740:67;3778:29;3759:48;3778:29;-1:-1:-1;3778:29:99;;;3759:48;;:::i;3740:67::-;445:2048:100;;;3740:67:99;;;:107;;;;;3323:1122;3740:197;;;;3323:1122;3723:263;;;445:2048:100;3778:29:99;445:2048:100;;;;;;;;;;4025:25:99;;;;;;;;;4010:143;4025:25;;;-1:-1:-1;4025:25:99;;;3323:1122;4113:30;;;445:2048:100;;;;;;;;;;;4010:143:99;;;;;3778:29;4010:143;;;:::i;:::-;;;-1:-1:-1;;;;;445:2048:100;4010:143:99;;;;;;;4181:257;4010:143;-1:-1:-1;4010:143:99;;;3323:1122;3996:157;;4293:102;3996:157;;4233:162;3996:157;4207:231;3996:157;;2936:28;:47;:38;:28;;;445:2048:100;;2936:16:99;445:2048:100;;;;;;;2936:28:99;445:2048:100;;;;;;;;;;;;;;;;2936:47:99;4351:43;;;4293:102;;:::i;:::-;4233:162;;:::i;:::-;3463:5:63;;;;3066;;445:2048:100;3060:42:63;3371:111;;4181:257:99;3323:1122;:::o;4010:143::-;4233:162;4010:143;;;4207:231;4010:143;;;;4293:102;4010:143;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;4025:25;;;;;;;;;;;;;;:::i;:::-;;;;3723:263;3962:13;;;;;;-1:-1:-1;3962:13:99;-1:-1:-1;3962:13:99;:::o;3740:197::-;3886:41;;3867:70;3886:51;;:41;;;445:2048:100;;3886:29:99;445:2048:100;;;;;;;3886:51:99;445:2048:100;;;;;3867:70:99;-1:-1:-1;3740:197:99;;;:107;837:15:68;;3811:36:99;819:34:68;837:15;819:34;:::i;3811:36:99:-;;;;3740:107;;;3778:29;;;;;;;;;;;;;;;:::i;3604:109::-;3662:40;;;;;;;;;;;;:::i;:::-;3604:109;;;;4714:335;;;;445:2048:100;-1:-1:-1;445:2048:100;4876:29:99;445:2048:100;;;;4876:51:99;445:2048:100;;-1:-1:-1;445:2048:100;;;;;;;;;;;;;;;;;4876:51:99;445:2048:100;;;;;-1:-1:-1;4872:171:99;;4714:335;;;:::o;4872:171::-;4962:70;445:2048:100;4962:51:99;445:2048:100;-1:-1:-1;445:2048:100;4876:29:99;445:2048:100;;;-1:-1:-1;445:2048:100;;;;;;;;;;;;;;;;;4962:51:99;445:2048:100;;;;;;;;;;;;;;9999:1:66;445:2048:100;;;;;;;:::o;5055:221:99:-;;;445:2048:100;-1:-1:-1;445:2048:100;5160:16:99;445:2048:100;;2936:47:99;:38;5160;445:2048:100;;-1:-1:-1;445:2048:100;;;;;;;;;;;;;;;;;5160:38:99;837:15:68;819:34;837:15;819:34;:::i;:::-;445:2048:100;-1:-1:-1;445:2048:100;5160:16:99;445:2048:100;;;-1:-1:-1;445:2048:100;;;;;;;;;;;;;;;;;2936:47:99;445:2048:100;;;;;;;;6360:12:93;;;445:2048:100;;;6360:24:93;6356:75;;5055:221:99;6474:30:93;;;:::i;:::-;445:2048:100;;;;;6578:12:93;;;;:::i;:::-;;6604:24;;;5055:221:99;-1:-1:-1;6600:188:93;;;-1:-1:-1;;;;445:2048:100;;;;;;;6644:29:93;:21;;;;:::i;:::-;:29;445:2048:100;;;;;;;;;;;;;;;;;;;;;6600:188:93;6753:24;;8310:38:66;;-1:-1:-1;;;;;445:2048:100;;;;;8310:38:66;:::i;:::-;6753:24:93;;;:::i;6604:::-;445:2048:100;;;;;;6614:14:93;;-1:-1:-1;6604:24:93;;;6356:75;6400:20;;;:::i;:::-;6356:75;;445:2048:100;;;;;;;;-1:-1:-1;;;;;445:2048:100;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;5282:431:99:-;;;;5487:25;;:23;:13;445:2048:100;5494:5:99;445:2048:100;;;;;;;;;5487:23:99;445:2048:100;;-1:-1:-1;;;5487:25:99;;445:2048:100;;;;;5487:25:99;;;;;;;5631:65;5487:25;5631:65;5487:25;5494:5;5487:25;;;5282:431;-1:-1:-1;;;;;;445:2048:100;;;;:::i;:::-;-1:-1:-1;;;;;5677:4:99;445:2048:100;;;5677:4:99;5487:25;5642:53;;445:2048:100;;;5631:65:99;;;5487:25;5631:65;;;:::i;:::-;5472:234;;;;;5494:5;445:2048:100;5472:234:99;445:2048:100;;;;;;;;;;;;;;5472:234:99;;5487:25;5472:234;;;:::i;:::-;;;;;;;;;;;5282:431;:::o;5472:234::-;;;;;;:::i;:::-;;;:::i;5487:25::-;;;;;;;;;;;;;;:::i;:::-;;;;5719:137;5809:5;445:2048:100;;;;-1:-1:-1;;;5802:47:99;;;;;445:2048:100;;;;;;;;;;;;;;;5802:47:99;;445:2048:100;;;;;;-1:-1:-1;;;;;445:2048:100;5802:47:99;;;;;;;;5719:137;:::o;5802:47::-;;;;;;;;;;;;;:::i;:::-;;5719:137::o;445:2048:100:-;;;;;;;:::o;:::-;;;;;;;;;;;;5862:623:99;;;5988:12;445:2048:100;;;;;;;5984:495:99;;5862:623;;;;;;:::o;5984:495::-;445:2048:100;;-1:-1:-1;;;6033:22:99;;445:2048:100;6033:22:99;;445:2048:100;;6033:22:99;;445:2048:100;;-1:-1:-1;;;;;445:2048:100;6033:22:99;;;;;;;5988:12;6033:22;;;5984:495;-1:-1:-1;445:2048:100;;-1:-1:-1;;;6033:22:99;6094:81;;;;;;;;445:2048:100;;;;-1:-1:-1;;;;;445:2048:100;;;;;;;;;;;;;;;;;;;;;;6094:81:99;445:2048:100;;;;6094:81:99;;477:31:82;;6094:81:99;;;;;;:::i;:::-;445:2048:100;6194:9:99;:55;6190:124;;5988:12;6328:141;;;;;;1271:7;6328:141;;5984:495;;;;;;;6190:124;445:2048:100;;-1:-1:-1;;;6276:23:99;;6033:22;;6276:23;6033:22;6094:81;6033:22;;;6094:81;6033:22;;;;;;;;;;;:::i;:::-;;;;;445:2048:100;;;;;;;;-1:-1:-1;445:2048:100;;-1:-1:-1;445:2048:100;;;-1:-1:-1;445:2048:100;:::o;:::-;;;;;;;;;;;;10580:184:93;445:2048:100;;10446:8:66;;;:63;-1:-1:-1;10446:63:66;-1:-1:-1;;;;;445:2048:100;;10726:7:93;445:2048:100;;10736:12:93;:17;:12;;:17;:::i;:::-;445:2048:100;;;;;;10580:184:93;:::o;10726:31::-;;;-1:-1:-1;10580:184:93;:::o;10446:63:66:-;445:2048:100;;;;;;;;;;14439:109:66;-1:-1:-1;14439:109:66;;-1:-1:-1;14439:109:66;;;445:2048:100;;;10446:63:66;;445:2048:100;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;445:2048:100;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;:::i;6491:564:99:-;6614:34;6491:564;6614:34;;;;:::i;:::-;445:2048:100;;-1:-1:-1;;;6664:41:99;;-1:-1:-1;;;;;445:2048:100;;;6664:41:99;;;445:2048:100;;;;;6664:41:99;;;445:2048:100;;;6674:13:99;445:2048:100;;6664:41:99;;;;;;;-1:-1:-1;6664:41:99;;;6491:564;6663:42;;6659:90;;2684:111:26;6850:27:99;6664:41;2684:111:26;;;:::i;:::-;-1:-1:-1;445:2048:100;;-1:-1:-1;;;;;;445:2048:100;-1:-1:-1;;;;;445:2048:100;;;;;6850:27:99;:::i;:::-;445:2048:100;;;;;;;;;;6892:23:99;;;;;;;;;-1:-1:-1;6892:23:99;;;6491:564;445:2048:100;;;6892:37:99;:64;;;6491:564;6888:112;;445:2048:100;7010:38:99;;445:2048:100;;-1:-1:-1;445:2048:100;;-1:-1:-1;;;;445:2048:100;;;;;;-1:-1:-1;;;445:2048:100;;;;;;;;6888:112:99;445:2048:100;;-1:-1:-1;;;6979:10:99;;6664:41;;6979:10;6892:64;-1:-1:-1;445:2048:100;;;;6892:64:99;;:23;;;;;;-1:-1:-1;6892:23:99;;;;;;:::i;:::-;;;;;6659:90;445:2048:100;;-1:-1:-1;;;6728:10:99;;6664:41;;6728:10;6664:41;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;445:2048:100;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::o;7558:604:93:-;;445:2048:100;;7686:17:93;7682:83;;445:2048:100;7789:27:93;445:2048:100;7789:27:93;445:2048:100;;7789:27:93;;;;;;:::i;:::-;7860:14;;;;;:::i;:::-;445:2048:100;;;;;;;;;;;;;;;;7888:22:93;;;7884:77;;7975:21;-1:-1:-1;7975:84:93;;;;7558:604;7971:139;;;;8127:28;;;;:::i;7971:139::-;8082:17;;7789:27;8082:17;445:2048:100;8075:24:93;:::o;7975:84::-;445:2048:100;;;8009:16:93;445:2048:100;;8009:16:93;:::i;:::-;445:2048:100;;;8001:24:93;:57;;;;;7975:84;;;;;;;8001:57;8029:29;8038:8;;;8029:18;8038:8;8029:23;8038:8;;:::i;:::-;8029:18;;:::i;:::-;445:2048:100;;;;;8029:29:93;;8001:57;;;;7884:77;7933:17;;;;;7789:27;7933:17;445:2048:100;7926:24:93;:::o;7682:83::-;7726:28;;;;:::i;14296:213:64:-;445:2048:100;14374:24:64;;;;14370:103;;445:2048:100;14296:213:64;:::o;14370:103::-;445:2048:100;;;;14421:41:64;;;;;;14452:2;14421:41;;;445:2048:100;;;;;14421:41:64;445:2048:100;;;-1:-1:-1;;;445:2048:100;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;-1:-1:-1;;;445:2048:100;;;;;;;;;;;;;;;:::i;6893:76:22:-;;;:::i;:::-;;;:::i;:::-;1949:1:26;2499:73;1991:1;6893:76:22:o;2273:218:100:-;-1:-1:-1;445:2048:100;;;;;:::i;:::-;;;;;;2419:30;;445:2048;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;2419:30;445:2048;:::i;:::-;;;;2273:218;:::o;6999:207:93:-;;445:2048:100;;9737:15:66;-1:-1:-1;9762:18:66;9795:7;9801:1;9795:7;;9791:234;;6999:207:93;10049:53:66;;;;;:::i;:::-;10120:8;;;:63;-1:-1:-1;10120:63:66;;-1:-1:-1;;;;;445:2048:100;;7168:7:93;445:2048:100;;;7178:12:93;;:17;:12;;:17;:::i;10120:63:66:-;10135:41;10168:7;10135:48;10168:7;;:::i;:::-;10135:41;14439:109;;;;;;14289:265;;10135:41;445:2048:100;;;;;10135:48:66;10120:63;;;9791:234;9838:14;;;;;:::i;:::-;445:2048:100;;;;;;;10049:53:66;14439:109;;-1:-1:-1;14439:109:66;445:2048:100;14439:109:66;;;-1:-1:-1;14439:109:66;;445:2048:100;;;;;9870:48:66;9866:149;445:2048:100;;;9938:10:66;9866:149;9791:234;;9866:149;9993:7;;;;;;:::i;:::-;9866:149;9791:234;;445:2048:100;;;;;;;:::i;:::-;-1:-1:-1;445:2048:100;;;;;;;:::o;11486:272:93:-;;445:2048:100;11718:12:93;11452:22:66;11718:31:93;11486:272;445:2048:100;;:::i;:::-;;;;:::i;:::-;;11452:22:66;;:::i;:::-;445:2048:100;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;11718:12:93;:31;:::i;:::-;445:2048:100;;;;;;;;;:::i;:::-;;;;;;;11672:79:93;;445:2048:100;11486:272:93;:::o;10695:389:66:-;445:2048:100;;10871:8:66;;;10895:20;;10833:17;10895:20;10833:17;10895:20;10833:17;10895:20;:::o;10867:211::-;445:2048:100;;;;;;;;;;10833:17:66;14439:109;;10833:17;14439:109;;;445:2048:100;11014:1:66;445:2048:100;;;;;;;11030:37:66;:::o;7084:141:22:-;445:2048:100;-1:-1:-1;;;;;;;;;;;445:2048:100;;;;7150:18:22;7146:73;;7084:141::o;7146:73::-;445:2048:100;;-1:-1:-1;;;7191:17:22;;;;;445:2048:100;;;-1:-1:-1;;;445:2048:100;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;445:2048:100;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;11657:922:66;445:2048:100;;11657:922:66;;;11864:7;;;;11936;11916:28;11936:7;;:::i;:::-;11916:28;14439:109;;;;;;14289:265;;11916:28;445:2048:100;;;;;;;;;;;;12103:13:66;;;12099:89;;12251:14;;;;;12285:19;;;;445:2048:100;;;;;;;;;;;;;;;;;12285:19:66;445:2048:100;;12423:25:66;;:::o;12247:163::-;445:2048:100;;;12343:52:66;445:2048:100;12353:41:66;445:2048:100;;:::i;:::-;;;;;;;;12353:41:66;-1:-1:-1;;;;;445:2048:100;;12353:41:66;;;445:2048:100;12343:52:66;:::i;:::-;12247:163;;12099:89;445:2048:100;;-1:-1:-1;;;12143:30:66;;;;;11860:713;445:2048:100;;12479:52:66;445:2048:100;12489:41:66;445:2048:100;;:::i;12489:41:66:-;-1:-1:-1;;;;;445:2048:100;;12489:41:66;;;445:2048:100;12343:52:66;:::i;12479:::-;11870:1;12545:17;;:::o;18080:5181:63:-;18246:1;18241:6;;;18237:53;;18246:1;19217:14;-1:-1:-1;;;19278:16:63;;;19274:92;;18080:5181;22827:18;22717;22607;22498;22387;22278;23216:28;19383:15;19898:6;19383:15;-1:-1:-1;;;23237:6:63;19383:15;;;19379:90;;18080:5181;19493:7;19486:15;;;19482:90;;18080:5181;19596:7;19589:15;;;19585:89;;18080:5181;19698:6;19691:14;;;19687:87;;18080:5181;19798:6;19791:14;;;19787:87;;18080:5181;19891:14;;19887:61;;18080:5181;20374:1;445:2048:100;18246:1:63;445:2048:100;22284:6:63;;;;:::i;:::-;445:2048:100;;;;;22278:18:63;22393:6;;;;:::i;22387:18::-;22504:6;;;;:::i;22498:18::-;22613:6;;;;:::i;22607:18::-;22723:6;;;;:::i;22717:18::-;22833:6;;;;:::i;22827:18::-;23237:6;;;:::i;:::-;23232:11;;;445:2048:100;23216:28:63;445:2048:100;;18080:5181:63;:::o;19887:61::-;18246:1;445:2048:100;19887:61:63;;19787:87;445:2048:100;;;;;19787:87:63;;;19687;445:2048:100;;;;;19687:87:63;;;19585:89;445:2048:100;;;;;19585:89:63;;;19482:90;445:2048:100;;;;;19482:90:63;;;19379;445:2048:100;;;;;19379:90:63;;;19274:92;-1:-1:-1;;;;445:2048:100;-1:-1:-1;445:2048:100;;;;19274:92:63;;12929:433:66;;;13112:10;;;;;;13344:11;;;12929:433;:::o;13105:230::-;3721:5:63;;;;;;3731;;;;445:2048:100;;;;;;;;;14439:109:66;-1:-1:-1;14439:109:66;445:2048:100;14439:109:66;;;-1:-1:-1;14439:109:66;;445:2048:100;;;;;-1:-1:-1;13189:136:66;445:2048:100;;;13248:10:66;13189:136;;13105:230;;;;13189:136;13303:7;;;;;;:::i;:::-;13189:136;;","linkReferences":{},"immutableReferences":{"56598":[{"start":1098,"length":32}],"56601":[{"start":2128,"length":32},{"start":4500,"length":32}],"64382":[{"start":765,"length":32},{"start":5316,"length":32}],"64385":[{"start":508,"length":32},{"start":1030,"length":32}]}},"methodIdentifiers":{"BURNER_GAS_LIMIT()":"d5c24e1a","BURNER_RESERVE()":"2964f8dc","FACTORY()":"2dd31000","NETWORK_MIDDLEWARE_SERVICE()":"2c9d45b3","TYPE()":"bb24fe8a","VAULT_FACTORY()":"103f2907","cumulativeSlash(bytes32,address)":"1a2be2c4","cumulativeSlashAt(bytes32,address,uint48,bytes)":"aa8e6489","initialize(bytes)":"439fab91","isBurnerHook()":"34d098ea","latestSlashedCaptureTimestamp(bytes32,address)":"267de1f3","slash(bytes32,address,uint256,uint48,bytes)":"021a8156","slashableStake(bytes32,address,uint48,bytes)":"aab3595f","staticDelegateCall(address,bytes)":"9f86fd85","vault()":"fbfa77cf"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vaultFactory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"networkMiddlewareService\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"slasherFactory\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"entityType\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"CheckpointUnorderedInsertion\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBurnerGas\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientSlash\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCaptureTimestamp\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoBurner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotNetworkMiddleware\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slashedAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"}],\"name\":\"Slash\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BURNER_GAS_LIMIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BURNER_RESERVE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NETWORK_MIDDLEWARE_SERVICE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TYPE\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VAULT_FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"cumulativeSlash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"cumulativeSlashAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isBurnerHook\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"latestSlashedCaptureTimestamp\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"value\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hints\",\"type\":\"bytes\"}],\"name\":\"slash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"slashedAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hints\",\"type\":\"bytes\"}],\"name\":\"slashableStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"staticDelegateCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"CheckpointUnorderedInsertion()\":[{\"details\":\"A value was attempted to be inserted on a past checkpoint.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Slash(bytes32,address,uint256,uint48)\":{\"params\":{\"captureTimestamp\":\"time point when the stake was captured\",\"operator\":\"operator that is slashed\",\"slashedAmount\":\"virtual amount of the collateral slashed\",\"subnetwork\":\"subnetwork that requested the slash\"}}},\"kind\":\"dev\",\"methods\":{\"cumulativeSlash(bytes32,address)\":{\"params\":{\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"_0\":\"cumulative slash amount\"}},\"cumulativeSlashAt(bytes32,address,uint48,bytes)\":{\"params\":{\"hint\":\"hint for the checkpoint index\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\",\"timestamp\":\"time point to get the cumulative slash amount until (inclusively)\"},\"returns\":{\"_0\":\"cumulative slash amount until the given timestamp (inclusively)\"}},\"initialize(bytes)\":{\"params\":{\"data\":\"some data to use\"}},\"slash(bytes32,address,uint256,uint48,bytes)\":{\"details\":\"Only a network middleware can call this function.\",\"params\":{\"amount\":\"maximum amount of the collateral to be slashed\",\"captureTimestamp\":\"time point when the stake was captured\",\"hints\":\"hints for checkpoints' indexes\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"slashedAmount\":\"virtual amount of the collateral slashed\"}},\"slashableStake(bytes32,address,uint48,bytes)\":{\"params\":{\"captureTimestamp\":\"time point to get the stake amount at\",\"hints\":\"hints for the checkpoints' indexes\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"amount\":\"slashable amount of the stake\"}},\"staticDelegateCall(address,bytes)\":{\"details\":\"It allows to use this contract's storage on-chain.\",\"params\":{\"data\":\"data to make a delegatecall with\",\"target\":\"address of the contract to make a delegatecall to\"}}},\"version\":1},\"userdoc\":{\"events\":{\"Slash(bytes32,address,uint256,uint48)\":{\"notice\":\"Emitted when a slash is performed.\"}},\"kind\":\"user\",\"methods\":{\"BURNER_GAS_LIMIT()\":{\"notice\":\"Get a gas limit for the burner.\"},\"BURNER_RESERVE()\":{\"notice\":\"Get a reserve gas between the gas limit check and the burner's execution.\"},\"FACTORY()\":{\"notice\":\"Get the factory's address.\"},\"NETWORK_MIDDLEWARE_SERVICE()\":{\"notice\":\"Get the network middleware service's address.\"},\"TYPE()\":{\"notice\":\"Get the entity's type.\"},\"VAULT_FACTORY()\":{\"notice\":\"Get the vault factory's address.\"},\"cumulativeSlash(bytes32,address)\":{\"notice\":\"Get a cumulative slash amount for an operator on a subnetwork.\"},\"cumulativeSlashAt(bytes32,address,uint48,bytes)\":{\"notice\":\"Get a cumulative slash amount for an operator on a subnetwork until a given timestamp (inclusively) using a hint.\"},\"initialize(bytes)\":{\"notice\":\"Initialize this entity contract by using a given data.\"},\"isBurnerHook()\":{\"notice\":\"Get if the burner is needed to be called on a slashing.\"},\"latestSlashedCaptureTimestamp(bytes32,address)\":{\"notice\":\"Get the latest capture timestamp that was slashed on a subnetwork.\"},\"slash(bytes32,address,uint256,uint48,bytes)\":{\"notice\":\"Perform a slash using a subnetwork for a particular operator by a given amount using hints.\"},\"slashableStake(bytes32,address,uint48,bytes)\":{\"notice\":\"Get a slashable amount of a stake got at a given capture timestamp using hints.\"},\"staticDelegateCall(address,bytes)\":{\"notice\":\"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data).\"},\"vault()\":{\"notice\":\"Get the vault's address.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/slasher/Slasher.sol\":\"Slasher\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf\",\"dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44\",\"dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6\",\"dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza\"]},\"src/contracts/common/Entity.sol\":{\"keccak256\":\"0x3d61a932995b8443381f3950542d388223a2c26dd5d29a3274dea3baa7388bd7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7cdf5f03ca72fd263fd32ff59c8d88ddca911ae83896a287d10772c1bbe9b138\",\"dweb:/ipfs/QmbP84r5BWT1Rn9AYTntWSf3xUMTTCohTZJFhbBhDXFoHa\"]},\"src/contracts/common/StaticDelegateCallable.sol\":{\"keccak256\":\"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764\",\"dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD\"]},\"src/contracts/libraries/Checkpoints.sol\":{\"keccak256\":\"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609\",\"dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE\"]},\"src/contracts/libraries/Subnetwork.sol\":{\"keccak256\":\"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56\",\"dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32\"]},\"src/contracts/slasher/BaseSlasher.sol\":{\"keccak256\":\"0x190e5dce196a061bdad42468c52e9f5b0eb7810cd7d0c19f04d6a2e94984f1b6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://07ca08d0cd43c2fe5d54a5577f6bdd522ced410f5d3a52e764deaa7ba26b5f06\",\"dweb:/ipfs/QmZe3PiMKBQKWcwodaLupragdqxPjgS4v1qMC7RXau8hDF\"]},\"src/contracts/slasher/Slasher.sol\":{\"keccak256\":\"0xeee0cb25fad58d496fdcc641d852d11bae06e6ceed5230ae21150964175c494f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://34aa27d21246a1bcee0b6a2afa8d9d613441156362430392f75d176511d58c61\",\"dweb:/ipfs/Qmf53Y3zdGfH4PU2zpSGeHZ8mMLzLXCtmkQrG5mnVJECQ3\"]},\"src/interfaces/common/IEntity.sol\":{\"keccak256\":\"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b\",\"dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv\"]},\"src/interfaces/common/IMigratableEntity.sol\":{\"keccak256\":\"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c\",\"dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds\"]},\"src/interfaces/common/IRegistry.sol\":{\"keccak256\":\"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014\",\"dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK\"]},\"src/interfaces/common/IStaticDelegateCallable.sol\":{\"keccak256\":\"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516\",\"dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi\"]},\"src/interfaces/delegator/IBaseDelegator.sol\":{\"keccak256\":\"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2\",\"dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8\"]},\"src/interfaces/service/INetworkMiddlewareService.sol\":{\"keccak256\":\"0x347afc7fcf1fbcdb96d66162070ef6c78aed27b3af2c1d5dfb4e511840631783\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d90b8ceb495159e8e4e95d76447719dd166443f67dfabdd942846162071595c\",\"dweb:/ipfs/QmVVuiAWYx92T6vBvNMKZfTvraCf1fa16BsUKkdNs3hdHA\"]},\"src/interfaces/slasher/IBaseSlasher.sol\":{\"keccak256\":\"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf\",\"dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx\"]},\"src/interfaces/slasher/IBurner.sol\":{\"keccak256\":\"0xaf495dacc19ae0b3c787ba8021c5944927d70261536addd234d7dab146158c2b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b3cc66251008be6ff9fc8b11ecc6831d5a9dca49a3fe9817fcd970253c1d447\",\"dweb:/ipfs/QmVxfb9ALGdF9W3SN2h41gQbUct6tawvu5bw4K89kFQ4HW\"]},\"src/interfaces/slasher/ISlasher.sol\":{\"keccak256\":\"0x34d226d67a3d5e16571f2fac91a8b9773551bcc41c88a96279669dd78d192625\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a6e8c1462ee4a1b0f745414be043c09012ea676613790aba004b06c85c980d1\",\"dweb:/ipfs/QmadjNEbHKRthtA1EeNy3Kg2sXpejH2KBeHm8QZtBPvXbJ\"]},\"src/interfaces/vault/IVault.sol\":{\"keccak256\":\"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9\",\"dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R\"]},\"src/interfaces/vault/IVaultStorage.sol\":{\"keccak256\":\"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e\",\"dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"vaultFactory","type":"address"},{"internalType":"address","name":"networkMiddlewareService","type":"address"},{"internalType":"address","name":"slasherFactory","type":"address"},{"internalType":"uint64","name":"entityType","type":"uint64"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"CheckpointUnorderedInsertion"},{"inputs":[],"type":"error","name":"InsufficientBurnerGas"},{"inputs":[],"type":"error","name":"InsufficientSlash"},{"inputs":[],"type":"error","name":"InvalidCaptureTimestamp"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"NoBurner"},{"inputs":[],"type":"error","name":"NotInitialized"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"NotNetworkMiddleware"},{"inputs":[],"type":"error","name":"NotVault"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintDowncast"},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"slashedAmount","type":"uint256","indexed":false},{"internalType":"uint48","name":"captureTimestamp","type":"uint48","indexed":false}],"type":"event","name":"Slash","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"BURNER_GAS_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"BURNER_RESERVE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"NETWORK_MIDDLEWARE_SERVICE","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"TYPE","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VAULT_FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"cumulativeSlash","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"cumulativeSlashAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"isBurnerHook","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"latestSlashedCaptureTimestamp","outputs":[{"internalType":"uint48","name":"value","type":"uint48"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint48","name":"captureTimestamp","type":"uint48"},{"internalType":"bytes","name":"hints","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"slash","outputs":[{"internalType":"uint256","name":"slashedAmount","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"captureTimestamp","type":"uint48"},{"internalType":"bytes","name":"hints","type":"bytes"}],"stateMutability":"view","type":"function","name":"slashableStake","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"staticDelegateCall"},{"inputs":[],"stateMutability":"view","type":"function","name":"vault","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"cumulativeSlash(bytes32,address)":{"params":{"operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"_0":"cumulative slash amount"}},"cumulativeSlashAt(bytes32,address,uint48,bytes)":{"params":{"hint":"hint for the checkpoint index","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)","timestamp":"time point to get the cumulative slash amount until (inclusively)"},"returns":{"_0":"cumulative slash amount until the given timestamp (inclusively)"}},"initialize(bytes)":{"params":{"data":"some data to use"}},"slash(bytes32,address,uint256,uint48,bytes)":{"details":"Only a network middleware can call this function.","params":{"amount":"maximum amount of the collateral to be slashed","captureTimestamp":"time point when the stake was captured","hints":"hints for checkpoints' indexes","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"slashedAmount":"virtual amount of the collateral slashed"}},"slashableStake(bytes32,address,uint48,bytes)":{"params":{"captureTimestamp":"time point to get the stake amount at","hints":"hints for the checkpoints' indexes","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"amount":"slashable amount of the stake"}},"staticDelegateCall(address,bytes)":{"details":"It allows to use this contract's storage on-chain.","params":{"data":"data to make a delegatecall with","target":"address of the contract to make a delegatecall to"}}},"version":1},"userdoc":{"kind":"user","methods":{"BURNER_GAS_LIMIT()":{"notice":"Get a gas limit for the burner."},"BURNER_RESERVE()":{"notice":"Get a reserve gas between the gas limit check and the burner's execution."},"FACTORY()":{"notice":"Get the factory's address."},"NETWORK_MIDDLEWARE_SERVICE()":{"notice":"Get the network middleware service's address."},"TYPE()":{"notice":"Get the entity's type."},"VAULT_FACTORY()":{"notice":"Get the vault factory's address."},"cumulativeSlash(bytes32,address)":{"notice":"Get a cumulative slash amount for an operator on a subnetwork."},"cumulativeSlashAt(bytes32,address,uint48,bytes)":{"notice":"Get a cumulative slash amount for an operator on a subnetwork until a given timestamp (inclusively) using a hint."},"initialize(bytes)":{"notice":"Initialize this entity contract by using a given data."},"isBurnerHook()":{"notice":"Get if the burner is needed to be called on a slashing."},"latestSlashedCaptureTimestamp(bytes32,address)":{"notice":"Get the latest capture timestamp that was slashed on a subnetwork."},"slash(bytes32,address,uint256,uint48,bytes)":{"notice":"Perform a slash using a subnetwork for a particular operator by a given amount using hints."},"slashableStake(bytes32,address,uint48,bytes)":{"notice":"Get a slashable amount of a stake got at a given capture timestamp using hints."},"staticDelegateCall(address,bytes)":{"notice":"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data)."},"vault()":{"notice":"Get the vault's address."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/slasher/Slasher.sol":"Slasher"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol":{"keccak256":"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866","urls":["bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf","dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol":{"keccak256":"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f","urls":["bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44","dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc","urls":["bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6","dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza"],"license":"MIT"},"src/contracts/common/Entity.sol":{"keccak256":"0x3d61a932995b8443381f3950542d388223a2c26dd5d29a3274dea3baa7388bd7","urls":["bzz-raw://7cdf5f03ca72fd263fd32ff59c8d88ddca911ae83896a287d10772c1bbe9b138","dweb:/ipfs/QmbP84r5BWT1Rn9AYTntWSf3xUMTTCohTZJFhbBhDXFoHa"],"license":"BUSL-1.1"},"src/contracts/common/StaticDelegateCallable.sol":{"keccak256":"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90","urls":["bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764","dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD"],"license":"BUSL-1.1"},"src/contracts/libraries/Checkpoints.sol":{"keccak256":"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c","urls":["bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609","dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE"],"license":"MIT"},"src/contracts/libraries/Subnetwork.sol":{"keccak256":"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe","urls":["bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56","dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32"],"license":"MIT"},"src/contracts/slasher/BaseSlasher.sol":{"keccak256":"0x190e5dce196a061bdad42468c52e9f5b0eb7810cd7d0c19f04d6a2e94984f1b6","urls":["bzz-raw://07ca08d0cd43c2fe5d54a5577f6bdd522ced410f5d3a52e764deaa7ba26b5f06","dweb:/ipfs/QmZe3PiMKBQKWcwodaLupragdqxPjgS4v1qMC7RXau8hDF"],"license":"BUSL-1.1"},"src/contracts/slasher/Slasher.sol":{"keccak256":"0xeee0cb25fad58d496fdcc641d852d11bae06e6ceed5230ae21150964175c494f","urls":["bzz-raw://34aa27d21246a1bcee0b6a2afa8d9d613441156362430392f75d176511d58c61","dweb:/ipfs/Qmf53Y3zdGfH4PU2zpSGeHZ8mMLzLXCtmkQrG5mnVJECQ3"],"license":"BUSL-1.1"},"src/interfaces/common/IEntity.sol":{"keccak256":"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21","urls":["bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b","dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv"],"license":"MIT"},"src/interfaces/common/IMigratableEntity.sol":{"keccak256":"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4","urls":["bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c","dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds"],"license":"MIT"},"src/interfaces/common/IRegistry.sol":{"keccak256":"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb","urls":["bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014","dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK"],"license":"MIT"},"src/interfaces/common/IStaticDelegateCallable.sol":{"keccak256":"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5","urls":["bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516","dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi"],"license":"MIT"},"src/interfaces/delegator/IBaseDelegator.sol":{"keccak256":"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee","urls":["bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2","dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8"],"license":"MIT"},"src/interfaces/service/INetworkMiddlewareService.sol":{"keccak256":"0x347afc7fcf1fbcdb96d66162070ef6c78aed27b3af2c1d5dfb4e511840631783","urls":["bzz-raw://2d90b8ceb495159e8e4e95d76447719dd166443f67dfabdd942846162071595c","dweb:/ipfs/QmVVuiAWYx92T6vBvNMKZfTvraCf1fa16BsUKkdNs3hdHA"],"license":"MIT"},"src/interfaces/slasher/IBaseSlasher.sol":{"keccak256":"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404","urls":["bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf","dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx"],"license":"MIT"},"src/interfaces/slasher/IBurner.sol":{"keccak256":"0xaf495dacc19ae0b3c787ba8021c5944927d70261536addd234d7dab146158c2b","urls":["bzz-raw://9b3cc66251008be6ff9fc8b11ecc6831d5a9dca49a3fe9817fcd970253c1d447","dweb:/ipfs/QmVxfb9ALGdF9W3SN2h41gQbUct6tawvu5bw4K89kFQ4HW"],"license":"MIT"},"src/interfaces/slasher/ISlasher.sol":{"keccak256":"0x34d226d67a3d5e16571f2fac91a8b9773551bcc41c88a96279669dd78d192625","urls":["bzz-raw://7a6e8c1462ee4a1b0f745414be043c09012ea676613790aba004b06c85c980d1","dweb:/ipfs/QmadjNEbHKRthtA1EeNy3Kg2sXpejH2KBeHm8QZtBPvXbJ"],"license":"MIT"},"src/interfaces/vault/IVault.sol":{"keccak256":"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235","urls":["bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9","dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R"],"license":"MIT"},"src/interfaces/vault/IVaultStorage.sol":{"keccak256":"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22","urls":["bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e","dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6"],"license":"MIT"}},"version":1},"id":100} \ No newline at end of file diff --git a/out/SlasherFactory.sol/SlasherFactory.json b/out/SlasherFactory.sol/SlasherFactory.json index 5f20ab3f..2efa46e7 100644 --- a/out/SlasherFactory.sol/SlasherFactory.json +++ b/out/SlasherFactory.sol/SlasherFactory.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"owner_","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"blacklist","inputs":[{"name":"type_","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"blacklisted","inputs":[{"name":"type_","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"create","inputs":[{"name":"type_","type":"uint64","internalType":"uint64"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"entity_","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"entity","inputs":[{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"implementation","inputs":[{"name":"type_","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"isEntity","inputs":[{"name":"entity_","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"totalEntities","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"totalTypes","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"whitelist","inputs":[{"name":"implementation_","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"AddEntity","inputs":[{"name":"entity","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Blacklist","inputs":[{"name":"type_","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Whitelist","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AlreadyBlacklisted","inputs":[]},{"type":"error","name":"AlreadyWhitelisted","inputs":[]},{"type":"error","name":"ERC1167FailedCreateClone","inputs":[]},{"type":"error","name":"EntityNotExist","inputs":[]},{"type":"error","name":"InvalidImplementation","inputs":[]},{"type":"error","name":"InvalidType","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x60803460b557601f6109a338819003918201601f19168301916001600160401b0383118484101760b95780849260209460405283398101031260b557516001600160a01b03908181169081900360b5578015609d57600280546001600160a01b03198116831790915560405192167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a36108d590816100ce8239f35b604051631e4fbdf760e01b81525f6004820152602490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080604090808252600480361015610015575f80fd5b5f3560e01c91826314887c5814610698575081635cd8b15e1461067b578163715018a6146106205781638da5cb5b146105f85781639b19251a14610485578163b42ba2a21461041a578163b572a96614610375578163b6caa11914610338578163cd108ef814610194578163f15df2e51461016e578163f2fde38b146100dd575063f9661602146100a4575f80fd5b346100d95760203660031901126100d9576020906100c86100c36106d1565b61073e565b90516001600160a01b039091168152f35b5f80fd5b82346100d95760203660031901126100d9576001600160a01b038235818116939192908490036100d95761010f610799565b8315610158575050600254826bffffffffffffffffffffffff60a01b821617600255167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b905f6024925191631e4fbdf760e01b8352820152fd5b82346100d9575f3660031901126100d95767ffffffffffffffff60209254169051908152f35b82346100d957806003193601126100d9576101ad6106d1565b906024359167ffffffffffffffff8084116100d957366023850112156100d95783850135918183116100d957602485019460248436920101116100d9576e5af43d82803e903d91602b57fd5bf36102038261073e565b915f54908487519160208301938452168782015260608082015261023d8161022f60808201898c61071e565b03601f1981018352826106e8565b51902091763d602d80600a3d3981f3363d3d373d3d3d363d7300000062ffffff8260881c16175f5260781b1760205260018060a01b0390603760095ff5169384156103285761028b85610836565b50835192857fb919910dcefbf753bfd926ab3b1d3f85d877190c3d01ba1bd585047b99b99f0b5f80a2853b156100d957836102dd5f93829363439fab9160e01b845260208b850152602484019161071e565b038183885af1801561031e576102f8575b6020848451908152f35b811161030b5760209350815283806102ee565b604184634e487b7160e01b5f525260245ffd5b83513d5f823e3d90fd5b83516330be1a3d60e21b81528690fd5b82346100d95760203660031901126100d95760209067ffffffffffffffff61035e6106d1565b165f526003825260ff815f20541690519015158152f35b82346100d95760203660031901126100d95761038f6106d1565b91610398610799565b67ffffffffffffffff8082541693169283101561040c57825f52600360205260ff825f2054166103fe5750815f5260036020525f20600160ff198254161790557ffc8245c2838846b295ae66fbe0d08e20c799b737c93b56f7b209df2e5fa2d4585f80a2005b905163f53de75f60e01b8152fd5b905163b968846160e01b8152fd5b82346100d95760203660031901126100d95781355f54811015610472575f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563015490516001600160a01b03909116815260209150f35b603283634e487b7160e01b5f525260245ffd5b9050346100d957602091826003193601126100d95781356001600160a01b0381811694918590036100d9576104b8610799565b82516202dd3160ec1b81529082828681895afa9182156105ee575f926105b6575b501630148015919061053a575b5061052d576104f4836107c5565b1561052057827feb73900b98b6a3e2b8b01708fe544760cf570d21e7fbe5225f24e48b5b2b432e5f80a2005b5163b73e95e160e01b8152fd5b5163340aafcd60e11b8152fd5b8251635d927f4560e11b815290915081818581885afa91821561031e575f92610577575b505067ffffffffffffffff80845416911614155f6104e6565b90809250813d83116105af575b61058e81836106e8565b810103126100d9575167ffffffffffffffff811681036100d9575f8061055e565b503d610584565b9091508281813d83116105e7575b6105ce81836106e8565b810103126100d9575181811681036100d957905f6104d9565b503d6105c4565b84513d5f823e3d90fd5b82346100d9575f3660031901126100d95760025490516001600160a01b039091168152602090f35b346100d9575f3660031901126100d957610638610799565b600280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b82346100d9575f3660031901126100d9576020905f549051908152f35b9150346100d95760203660031901126100d957356001600160a01b03811692908390036100d9576020925f52600183525f205415158152f35b6004359067ffffffffffffffff821682036100d957565b90601f8019910116810190811067ffffffffffffffff82111761070a57604052565b634e487b7160e01b5f52604160045260245ffd5b908060209392818452848401375f828201840152601f01601f1916010190565b67ffffffffffffffff166004548110156107855760045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01546001600160a01b031690565b634e487b7160e01b5f52603260045260245ffd5b6002546001600160a01b031633036107ad57565b60405163118cdaa760e01b8152336004820152602490fd5b805f52600560205260405f2054155f1461083157600454600160401b81101561070a5760018101806004558110156107855781907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0155600454905f52600560205260405f2055600190565b505f90565b805f52600160205260405f2054155f14610831575f54600160401b81101561070a5760018101805f558110156107855781907f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56301555f54905f52600160205260405f205560019056fea2646970667358221220992c165f90045b811880db0cac96786cefb968fd9dcc9500cd861a9c11267a6a64736f6c63430008190033","sourceMap":"177:120:66:-:0;;;;;;;;;;;;;-1:-1:-1;;177:120:66;;;;-1:-1:-1;;;;;177:120:66;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;177:120:66;;;;;;;;;;1273:26:32;;1269:95;;3004:6;177:120:66;;-1:-1:-1;;;;;;177:120:66;;;;;;;;;;;3052:40:32;-1:-1:-1;;3052:40:32;177:120:66;;;;;;;1269:95:32;177:120:66;;-1:-1:-1;;;1322:31:32;;-1:-1:-1;1322:31:32;;;177:120:66;;;1322:31:32;177:120:66;-1:-1:-1;177:120:66;;;;;;-1:-1:-1;177:120:66;;;;;-1:-1:-1;177:120:66","linkReferences":{}},"deployedBytecode":{"object":"0x6080604090808252600480361015610015575f80fd5b5f3560e01c91826314887c5814610698575081635cd8b15e1461067b578163715018a6146106205781638da5cb5b146105f85781639b19251a14610485578163b42ba2a21461041a578163b572a96614610375578163b6caa11914610338578163cd108ef814610194578163f15df2e51461016e578163f2fde38b146100dd575063f9661602146100a4575f80fd5b346100d95760203660031901126100d9576020906100c86100c36106d1565b61073e565b90516001600160a01b039091168152f35b5f80fd5b82346100d95760203660031901126100d9576001600160a01b038235818116939192908490036100d95761010f610799565b8315610158575050600254826bffffffffffffffffffffffff60a01b821617600255167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b905f6024925191631e4fbdf760e01b8352820152fd5b82346100d9575f3660031901126100d95767ffffffffffffffff60209254169051908152f35b82346100d957806003193601126100d9576101ad6106d1565b906024359167ffffffffffffffff8084116100d957366023850112156100d95783850135918183116100d957602485019460248436920101116100d9576e5af43d82803e903d91602b57fd5bf36102038261073e565b915f54908487519160208301938452168782015260608082015261023d8161022f60808201898c61071e565b03601f1981018352826106e8565b51902091763d602d80600a3d3981f3363d3d373d3d3d363d7300000062ffffff8260881c16175f5260781b1760205260018060a01b0390603760095ff5169384156103285761028b85610836565b50835192857fb919910dcefbf753bfd926ab3b1d3f85d877190c3d01ba1bd585047b99b99f0b5f80a2853b156100d957836102dd5f93829363439fab9160e01b845260208b850152602484019161071e565b038183885af1801561031e576102f8575b6020848451908152f35b811161030b5760209350815283806102ee565b604184634e487b7160e01b5f525260245ffd5b83513d5f823e3d90fd5b83516330be1a3d60e21b81528690fd5b82346100d95760203660031901126100d95760209067ffffffffffffffff61035e6106d1565b165f526003825260ff815f20541690519015158152f35b82346100d95760203660031901126100d95761038f6106d1565b91610398610799565b67ffffffffffffffff8082541693169283101561040c57825f52600360205260ff825f2054166103fe5750815f5260036020525f20600160ff198254161790557ffc8245c2838846b295ae66fbe0d08e20c799b737c93b56f7b209df2e5fa2d4585f80a2005b905163f53de75f60e01b8152fd5b905163b968846160e01b8152fd5b82346100d95760203660031901126100d95781355f54811015610472575f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563015490516001600160a01b03909116815260209150f35b603283634e487b7160e01b5f525260245ffd5b9050346100d957602091826003193601126100d95781356001600160a01b0381811694918590036100d9576104b8610799565b82516202dd3160ec1b81529082828681895afa9182156105ee575f926105b6575b501630148015919061053a575b5061052d576104f4836107c5565b1561052057827feb73900b98b6a3e2b8b01708fe544760cf570d21e7fbe5225f24e48b5b2b432e5f80a2005b5163b73e95e160e01b8152fd5b5163340aafcd60e11b8152fd5b8251635d927f4560e11b815290915081818581885afa91821561031e575f92610577575b505067ffffffffffffffff80845416911614155f6104e6565b90809250813d83116105af575b61058e81836106e8565b810103126100d9575167ffffffffffffffff811681036100d9575f8061055e565b503d610584565b9091508281813d83116105e7575b6105ce81836106e8565b810103126100d9575181811681036100d957905f6104d9565b503d6105c4565b84513d5f823e3d90fd5b82346100d9575f3660031901126100d95760025490516001600160a01b039091168152602090f35b346100d9575f3660031901126100d957610638610799565b600280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b82346100d9575f3660031901126100d9576020905f549051908152f35b9150346100d95760203660031901126100d957356001600160a01b03811692908390036100d9576020925f52600183525f205415158152f35b6004359067ffffffffffffffff821682036100d957565b90601f8019910116810190811067ffffffffffffffff82111761070a57604052565b634e487b7160e01b5f52604160045260245ffd5b908060209392818452848401375f828201840152601f01601f1916010190565b67ffffffffffffffff166004548110156107855760045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01546001600160a01b031690565b634e487b7160e01b5f52603260045260245ffd5b6002546001600160a01b031633036107ad57565b60405163118cdaa760e01b8152336004820152602490fd5b805f52600560205260405f2054155f1461083157600454600160401b81101561070a5760018101806004558110156107855781907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0155600454905f52600560205260405f2055600190565b505f90565b805f52600160205260405f2054155f14610831575f54600160401b81101561070a5760018101805f558110156107855781907f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56301555f54905f52600160205260405f205560019056fea2646970667358221220992c165f90045b811880db0cac96786cefb968fd9dcc9500cd861a9c11267a6a64736f6c63430008190033","sourceMap":"177:120:66:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;177:120:66;;;;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;177:120:66;;;;;;;;;;;;;;;;;-1:-1:-1;;177:120:66;;;;-1:-1:-1;;;;;177:120:66;;;;;;;;;;;;;;1500:62:32;;:::i;:::-;2627:22;;2623:91;;177:120:66;;3004:6:32;177:120:66;;;;;;;;3004:6:32;177:120:66;;3052:40:32;177:120:66;3052:40:32;;177:120:66;2623:91:32;177:120:66;;;;;2672:31:32;;;;;;;;177:120:66;2672:31:32;177:120:66;;;;;;;-1:-1:-1;;177:120:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2364:565:36;2248:21:70;;;:::i;:::-;177:120:66;;;;;;;2299:40:70;177:120:66;2299:40:70;;177:120:66;;;;;;;;;;;;;2299:40:70;177:120:66;;;;;;;;:::i;:::-;2299:40:70;;;;;;;;;:::i;:::-;177:120:66;2289:51:70;;2364:565:36;;;;;;;;177:120:66;2364:565:36;;;;177:120:66;2364:565:36;177:120:66;;;;;2364:565:36;;;177:120:66;2364:565:36;177:120:66;2942:22:36;;;2938:86;;8409:50:61;;;:::i;:::-;;177:120:66;;1077:18:74;;;177:120:66;1077:18:74;;2382:33:70;;;;;177:120:66;;;;;;;;;2382:33:70;;177:120:66;2382:33:70;;;177:120:66;;;;;;:::i;:::-;2382:33:70;;;;;;;;;;;;177:120:66;;;;;;;;;2382:33:70;177:120:66;;;;;;;;;2382:33:70;;;;177:120:66;;;;;;;;;;;;2382:33:70;177:120:66;;;;;;;;;2938:86:36;177:120:66;;-1:-1:-1;;;2987:26:36;;177:120:66;;2987:26:36;177:120:66;;;;;;;-1:-1:-1;;177:120:66;;;;;;;;;:::i;:::-;;;;633:54:70;177:120:66;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;177:120:66;;;;;;:::i;:::-;1500:62:32;;;:::i;:::-;177:120:66;;;;;;;822:21:70;;;;818:72;;177:120:66;;;1946:11:70;177:120:66;;;;;;;;1942:76:70;;177:120:66;;;;1946:11:70;177:120:66;;;;2049:4:70;177:120:66;;;;;;;;2069:16:70;177:120:66;2069:16:70;;177:120:66;1942:76:70;177:120:66;;-1:-1:-1;;;1987:20:70;;;818:72;177:120:66;;-1:-1:-1;;;866:13:70;;;177:120:66;;;;;;;-1:-1:-1;;177:120:66;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;177:120:66;;;;;;;-1:-1:-1;177:120:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;177:120:66;;;;;;;;;;1500:62:32;;:::i;:::-;177:120:66;;-1:-1:-1;;;1476:34:70;;177:120:66;1476:34:70;177:120:66;1476:34:70;177:120:66;1476:34:70;;;;;;;;177:120:66;1476:34:70;;;177:120:66;-1:-1:-1;177:120:66;1522:4:70;1476:51;;;;;:102;;177:120:66;1472:163:70;;;8409:50:61;;;:::i;:::-;1648:49:70;1644:107;;1766:26;;177:120:66;1766:26:70;;177:120:66;1644:107:70;177:120:66;-1:-1:-1;;;1720:20:70;;;1472:163;177:120:66;-1:-1:-1;;;1601:23:70;;;1476:102;177:120:66;;-1:-1:-1;;;1531:31:70;;177:120:66;;-1:-1:-1;177:120:66;;1531:31:70;177:120:66;1531:31:70;;;;;;;;177:120:66;1531:31:70;;;1476:102;177:120:66;;;;;;;;;1531:47:70;;1476:102;;;1531:31;;;;;;;;;;;;;;;;:::i;:::-;;;177:120:66;;;;;;;;;;;;1531:31:70;;;;;;;;;1476:34;;;;;;;;;;;;;;;;;:::i;:::-;;;177:120:66;;;;;;;;;;;;1476:34:70;;;;;;;;;;177:120:66;;;;;;;;;;;;;;;;-1:-1:-1;;177:120:66;;;;1710:6:32;177:120:66;;;-1:-1:-1;;;;;177:120:66;;;;;;;;;;;;;;-1:-1:-1;;177:120:66;;;;1500:62:32;;:::i;:::-;3004:6;177:120:66;;-1:-1:-1;;;;;;177:120:66;;;;;;;-1:-1:-1;;;;;177:120:66;3052:40:32;177:120:66;;3052:40:32;177:120:66;;;;;;;;-1:-1:-1;;177:120:66;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;177:120:66;;;;;-1:-1:-1;;;;;177:120:66;;;;;;;;;;;;;4360:14:61;177:120:66;;;;;4360:26:61;;177:120:66;;;;;;;;;;;;;;:::o;:::-;;;2299:40:70;;177:120:66;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;177:120:66;;;;;;;;-1:-1:-1;;177:120:66;;;;:::o;1192:143:70:-;177:120:66;;1291:27:70;177:120:66;;;;;;1291:27:70;-1:-1:-1;177:120:66;;;;-1:-1:-1;;;;;177:120:66;;1192:143:70:o;177:120:66:-;;;;-1:-1:-1;177:120:66;;1291:27:70;177:120:66;;-1:-1:-1;177:120:66;1796:162:32;1710:6;177:120:66;-1:-1:-1;;;;;177:120:66;735:10:47;1855:23:32;1851:101;;1796:162::o;1851:101::-;177:120:66;;-1:-1:-1;;;1901:40:32;;735:10:47;1901:40:32;;;177:120:66;;;1901:40:32;2241:406:61;177:120:66;-1:-1:-1;177:120:66;4360:14:61;177:120:66;;;-1:-1:-1;177:120:66;;4360:26:61;2320:321;177:120:66;;;;;-1:-1:-1;;;177:120:66;;;;;4360:14:61;177:120:66;;;;;;;;;;;;;;;;;;-1:-1:-1;177:120:66;4360:14:61;177:120:66;;;-1:-1:-1;177:120:66;;4360:14:61;2576:11;:::o;2320:321::-;2618:12;-1:-1:-1;2618:12:61;:::o;2241:406::-;177:120:66;;;4360:14:61;177:120:66;;;;;;4360:26:61;2320:321;177:120:66;;;;;-1:-1:-1;;;177:120:66;;;;;4360:14:61;177:120:66;;;;;;;;;;;;;;;;;;;;4360:14:61;177:120:66;;;;;;4360:14:61;2576:11;:::o","linkReferences":{}},"methodIdentifiers":{"blacklist(uint64)":"b572a966","blacklisted(uint64)":"b6caa119","create(uint64,bytes)":"cd108ef8","entity(uint256)":"b42ba2a2","implementation(uint64)":"f9661602","isEntity(address)":"14887c58","owner()":"8da5cb5b","renounceOwnership()":"715018a6","totalEntities()":"5cd8b15e","totalTypes()":"f15df2e5","transferOwnership(address)":"f2fde38b","whitelist(address)":"9b19251a"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AlreadyBlacklisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadyWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1167FailedCreateClone\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EntityNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidType\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"entity\",\"type\":\"address\"}],\"name\":\"AddEntity\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"type_\",\"type\":\"uint64\"}],\"name\":\"Blacklist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Whitelist\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"type_\",\"type\":\"uint64\"}],\"name\":\"blacklist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"type_\",\"type\":\"uint64\"}],\"name\":\"blacklisted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"type_\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"create\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"entity_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"entity\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"type_\",\"type\":\"uint64\"}],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"entity_\",\"type\":\"address\"}],\"name\":\"isEntity\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalEntities\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalTypes\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation_\",\"type\":\"address\"}],\"name\":\"whitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"ERC1167FailedCreateClone()\":[{\"details\":\"A clone instance deployment failed.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"events\":{\"AddEntity(address)\":{\"params\":{\"entity\":\"address of the added entity\"}},\"Blacklist(uint64)\":{\"details\":\"The given type is still deployable.\",\"params\":{\"type_\":\"type that was blacklisted\"}},\"Whitelist(address)\":{\"params\":{\"implementation\":\"address of the new implementation\"}}},\"kind\":\"dev\",\"methods\":{\"blacklist(uint64)\":{\"details\":\"The given type will still be deployable.\",\"params\":{\"type_\":\"type to blacklist\"}},\"create(uint64,bytes)\":{\"details\":\"CREATE2 salt is constructed from the given parameters.\",\"params\":{\"data\":\"initial data for the entity creation\",\"type_\":\"type's implementation to use\"},\"returns\":{\"entity_\":\"address of the entity\"}},\"entity(uint256)\":{\"params\":{\"index\":\"index of the entity to get\"},\"returns\":{\"_0\":\"address of the entity\"}},\"implementation(uint64)\":{\"params\":{\"type_\":\"position to get the implementation at\"},\"returns\":{\"_0\":\"address of the implementation\"}},\"isEntity(address)\":{\"params\":{\"account\":\"address to check\"},\"returns\":{\"_0\":\"if the given address is an entity\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"totalEntities()\":{\"returns\":{\"_0\":\"total number of entities added\"}},\"totalTypes()\":{\"returns\":{\"_0\":\"total number of types\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"whitelist(address)\":{\"params\":{\"implementation\":\"address of the new implementation\"}}},\"version\":1},\"userdoc\":{\"events\":{\"AddEntity(address)\":{\"notice\":\"Emitted when an entity is added.\"},\"Blacklist(uint64)\":{\"notice\":\"Emitted when a type is blacklisted (e.g., in case of invalid implementation).\"},\"Whitelist(address)\":{\"notice\":\"Emitted when a new type is whitelisted.\"}},\"kind\":\"user\",\"methods\":{\"blacklist(uint64)\":{\"notice\":\"Blacklist a type of entity.\"},\"blacklisted(uint64)\":{\"notice\":\"Get if a type is blacklisted (e.g., in case of invalid implementation).\"},\"create(uint64,bytes)\":{\"notice\":\"Create a new entity at the factory.\"},\"entity(uint256)\":{\"notice\":\"Get an entity given its index.\"},\"implementation(uint64)\":{\"notice\":\"Get the implementation for a given type.\"},\"isEntity(address)\":{\"notice\":\"Get if a given address is an entity.\"},\"totalEntities()\":{\"notice\":\"Get a total number of entities.\"},\"totalTypes()\":{\"notice\":\"Get the total number of whitelisted types.\"},\"whitelist(address)\":{\"notice\":\"Whitelist a new type of entity.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/SlasherFactory.sol\":\"SlasherFactory\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/proxy/Clones.sol\":{\"keccak256\":\"0xd18408af8a91bedb3d56343eeb9b30eb852e6dea93a5e2d5c6db9ca4cb905155\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://061475b7302a732dc598907790f407417551c2b13e89daa57b3698489ef5484b\",\"dweb:/ipfs/QmdX5qmk3VSniSErFuD4aVawQxUi2MuUbP7spPcHddPfcX\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1\",\"dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA\"]},\"src/contracts/SlasherFactory.sol\":{\"keccak256\":\"0xbafc96e3d2511eb62942613645b4f5cbf6f603063a711b30e25940aaba08064c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://489440f1181b1858e3b27a90ec6f514c0c287c602b4779676048213202165867\",\"dweb:/ipfs/QmRG7AQ9m9qHr8ofEvP1Ur8S379fFXTo9rmiWaAtZ9rsUc\"]},\"src/contracts/common/Factory.sol\":{\"keccak256\":\"0x41764643e6a2a3d80d694a3efee91f50a2fd084fb2bcd13566259443840e6369\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://fefc1e2a2189275388826f4f82ca421ca79c2866d3ef39dc2c7df46fe7cbf7c9\",\"dweb:/ipfs/QmSJ4VGmgpYUv5ni4ZYoSV4qMuZrk5DLjyB3Vv9NbFgeNZ\"]},\"src/contracts/common/Registry.sol\":{\"keccak256\":\"0x4a4004836d920953a8ec6e223de9a330f43acf7a5b93c6b8b3e4a95e0f129889\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://e8bdda207f3852c683a2b481602239a914f7e26bcd042ade618e263a43b67652\",\"dweb:/ipfs/Qmb8GZykJWxZcfwNp3SqhFizDFydFuV6LXgemV3vnWyLyu\"]},\"src/interfaces/ISlasherFactory.sol\":{\"keccak256\":\"0x30018af5c2719d9b5cfacbfc0277017896815b3fcc4dfbea78813e6ae81c1e56\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5e028fbed23ab973d8d9eb2be4e53a528dd01248e3233f56ab0f8ac9a7c9c220\",\"dweb:/ipfs/Qmd9cHMRSE52ESmxMiu5gTBpRNmDHQK5q18f7UTj8DQke4\"]},\"src/interfaces/common/IEntity.sol\":{\"keccak256\":\"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b\",\"dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv\"]},\"src/interfaces/common/IFactory.sol\":{\"keccak256\":\"0xe835ebda85d181b70874f6eb53f2a892aa3223d23efe247060da9b51d2b8e969\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://48b3dfb5f0491d90efbc8ed498b45358260ebac6e8f2aa0106b8b8fabdc988cb\",\"dweb:/ipfs/QmWnnCs3xiHeUvYfUWMJTSFZWc34bSYn9Zpm7f7syra3TA\"]},\"src/interfaces/common/IRegistry.sol\":{\"keccak256\":\"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014\",\"dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AlreadyBlacklisted"},{"inputs":[],"type":"error","name":"AlreadyWhitelisted"},{"inputs":[],"type":"error","name":"ERC1167FailedCreateClone"},{"inputs":[],"type":"error","name":"EntityNotExist"},{"inputs":[],"type":"error","name":"InvalidImplementation"},{"inputs":[],"type":"error","name":"InvalidType"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"entity","type":"address","indexed":true}],"type":"event","name":"AddEntity","anonymous":false},{"inputs":[{"internalType":"uint64","name":"type_","type":"uint64","indexed":true}],"type":"event","name":"Blacklist","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Whitelist","anonymous":false},{"inputs":[{"internalType":"uint64","name":"type_","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"blacklist"},{"inputs":[{"internalType":"uint64","name":"type_","type":"uint64"}],"stateMutability":"view","type":"function","name":"blacklisted","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"type_","type":"uint64"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"create","outputs":[{"internalType":"address","name":"entity_","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function","name":"entity","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"type_","type":"uint64"}],"stateMutability":"view","type":"function","name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"entity_","type":"address"}],"stateMutability":"view","type":"function","name":"isEntity","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"totalEntities","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalTypes","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"address","name":"implementation_","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"whitelist"}],"devdoc":{"kind":"dev","methods":{"blacklist(uint64)":{"details":"The given type will still be deployable.","params":{"type_":"type to blacklist"}},"create(uint64,bytes)":{"details":"CREATE2 salt is constructed from the given parameters.","params":{"data":"initial data for the entity creation","type_":"type's implementation to use"},"returns":{"entity_":"address of the entity"}},"entity(uint256)":{"params":{"index":"index of the entity to get"},"returns":{"_0":"address of the entity"}},"implementation(uint64)":{"params":{"type_":"position to get the implementation at"},"returns":{"_0":"address of the implementation"}},"isEntity(address)":{"params":{"account":"address to check"},"returns":{"_0":"if the given address is an entity"}},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"totalEntities()":{"returns":{"_0":"total number of entities added"}},"totalTypes()":{"returns":{"_0":"total number of types"}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"whitelist(address)":{"params":{"implementation":"address of the new implementation"}}},"version":1},"userdoc":{"kind":"user","methods":{"blacklist(uint64)":{"notice":"Blacklist a type of entity."},"blacklisted(uint64)":{"notice":"Get if a type is blacklisted (e.g., in case of invalid implementation)."},"create(uint64,bytes)":{"notice":"Create a new entity at the factory."},"entity(uint256)":{"notice":"Get an entity given its index."},"implementation(uint64)":{"notice":"Get the implementation for a given type."},"isEntity(address)":{"notice":"Get if a given address is an entity."},"totalEntities()":{"notice":"Get a total number of entities."},"totalTypes()":{"notice":"Get the total number of whitelisted types."},"whitelist(address)":{"notice":"Whitelist a new type of entity."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/SlasherFactory.sol":"SlasherFactory"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/Clones.sol":{"keccak256":"0xd18408af8a91bedb3d56343eeb9b30eb852e6dea93a5e2d5c6db9ca4cb905155","urls":["bzz-raw://061475b7302a732dc598907790f407417551c2b13e89daa57b3698489ef5484b","dweb:/ipfs/QmdX5qmk3VSniSErFuD4aVawQxUi2MuUbP7spPcHddPfcX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol":{"keccak256":"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa","urls":["bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1","dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA"],"license":"MIT"},"src/contracts/SlasherFactory.sol":{"keccak256":"0xbafc96e3d2511eb62942613645b4f5cbf6f603063a711b30e25940aaba08064c","urls":["bzz-raw://489440f1181b1858e3b27a90ec6f514c0c287c602b4779676048213202165867","dweb:/ipfs/QmRG7AQ9m9qHr8ofEvP1Ur8S379fFXTo9rmiWaAtZ9rsUc"],"license":"BUSL-1.1"},"src/contracts/common/Factory.sol":{"keccak256":"0x41764643e6a2a3d80d694a3efee91f50a2fd084fb2bcd13566259443840e6369","urls":["bzz-raw://fefc1e2a2189275388826f4f82ca421ca79c2866d3ef39dc2c7df46fe7cbf7c9","dweb:/ipfs/QmSJ4VGmgpYUv5ni4ZYoSV4qMuZrk5DLjyB3Vv9NbFgeNZ"],"license":"BUSL-1.1"},"src/contracts/common/Registry.sol":{"keccak256":"0x4a4004836d920953a8ec6e223de9a330f43acf7a5b93c6b8b3e4a95e0f129889","urls":["bzz-raw://e8bdda207f3852c683a2b481602239a914f7e26bcd042ade618e263a43b67652","dweb:/ipfs/Qmb8GZykJWxZcfwNp3SqhFizDFydFuV6LXgemV3vnWyLyu"],"license":"BUSL-1.1"},"src/interfaces/ISlasherFactory.sol":{"keccak256":"0x30018af5c2719d9b5cfacbfc0277017896815b3fcc4dfbea78813e6ae81c1e56","urls":["bzz-raw://5e028fbed23ab973d8d9eb2be4e53a528dd01248e3233f56ab0f8ac9a7c9c220","dweb:/ipfs/Qmd9cHMRSE52ESmxMiu5gTBpRNmDHQK5q18f7UTj8DQke4"],"license":"MIT"},"src/interfaces/common/IEntity.sol":{"keccak256":"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21","urls":["bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b","dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv"],"license":"MIT"},"src/interfaces/common/IFactory.sol":{"keccak256":"0xe835ebda85d181b70874f6eb53f2a892aa3223d23efe247060da9b51d2b8e969","urls":["bzz-raw://48b3dfb5f0491d90efbc8ed498b45358260ebac6e8f2aa0106b8b8fabdc988cb","dweb:/ipfs/QmWnnCs3xiHeUvYfUWMJTSFZWc34bSYn9Zpm7f7syra3TA"],"license":"MIT"},"src/interfaces/common/IRegistry.sol":{"keccak256":"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb","urls":["bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014","dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK"],"license":"MIT"}},"version":1},"id":66} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[{"name":"owner_","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"blacklist","inputs":[{"name":"type_","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"blacklisted","inputs":[{"name":"type_","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"create","inputs":[{"name":"type_","type":"uint64","internalType":"uint64"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"entity_","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"entity","inputs":[{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"implementation","inputs":[{"name":"type_","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"isEntity","inputs":[{"name":"entity_","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"totalEntities","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"totalTypes","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"whitelist","inputs":[{"name":"implementation_","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"AddEntity","inputs":[{"name":"entity","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Blacklist","inputs":[{"name":"type_","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Whitelist","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AlreadyBlacklisted","inputs":[]},{"type":"error","name":"AlreadyWhitelisted","inputs":[]},{"type":"error","name":"EntityNotExist","inputs":[]},{"type":"error","name":"FailedDeployment","inputs":[]},{"type":"error","name":"InsufficientBalance","inputs":[{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidImplementation","inputs":[]},{"type":"error","name":"InvalidType","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x60803460b557601f6109a338819003918201601f19168301916001600160401b0383118484101760b95780849260209460405283398101031260b557516001600160a01b03908181169081900360b5578015609d57600280546001600160a01b03198116831790915560405192167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a36108d590816100ce8239f35b604051631e4fbdf760e01b81525f6004820152602490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080604090808252600480361015610015575f80fd5b5f3560e01c91826314887c5814610698575081635cd8b15e1461067b578163715018a6146106205781638da5cb5b146105f85781639b19251a14610485578163b42ba2a21461041a578163b572a96614610375578163b6caa11914610338578163cd108ef814610194578163f15df2e51461016e578163f2fde38b146100dd575063f9661602146100a4575f80fd5b346100d95760203660031901126100d9576020906100c86100c36106d1565b61073e565b90516001600160a01b039091168152f35b5f80fd5b82346100d95760203660031901126100d9576001600160a01b038235818116939192908490036100d95761010f610799565b8315610158575050600254826bffffffffffffffffffffffff60a01b821617600255167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b905f6024925191631e4fbdf760e01b8352820152fd5b82346100d9575f3660031901126100d95767ffffffffffffffff60209254169051908152f35b82346100d957806003193601126100d9576101ad6106d1565b906024359167ffffffffffffffff8084116100d957366023850112156100d95783850135918183116100d957602485019460248436920101116100d9576e5af43d82803e903d91602b57fd5bf36102038261073e565b915f54908487519160208301938452168782015260608082015261023d8161022f60808201898c61071e565b03601f1981018352826106e8565b51902091763d602d80600a3d3981f3363d3d373d3d3d363d7300000062ffffff8260881c16175f5260781b1760205260018060a01b0390603760095ff5169384156103285761028b85610836565b50835192857fb919910dcefbf753bfd926ab3b1d3f85d877190c3d01ba1bd585047b99b99f0b5f80a2853b156100d957836102dd5f93829363439fab9160e01b845260208b850152602484019161071e565b038183885af1801561031e576102f8575b6020848451908152f35b811161030b5760209350815283806102ee565b604184634e487b7160e01b5f525260245ffd5b83513d5f823e3d90fd5b835163b06ebf3d60e01b81528690fd5b82346100d95760203660031901126100d95760209067ffffffffffffffff61035e6106d1565b165f526003825260ff815f20541690519015158152f35b82346100d95760203660031901126100d95761038f6106d1565b91610398610799565b67ffffffffffffffff8082541693169283101561040c57825f52600360205260ff825f2054166103fe5750815f5260036020525f20600160ff198254161790557ffc8245c2838846b295ae66fbe0d08e20c799b737c93b56f7b209df2e5fa2d4585f80a2005b905163f53de75f60e01b8152fd5b905163b968846160e01b8152fd5b82346100d95760203660031901126100d95781355f54811015610472575f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563015490516001600160a01b03909116815260209150f35b603283634e487b7160e01b5f525260245ffd5b9050346100d957602091826003193601126100d95781356001600160a01b0381811694918590036100d9576104b8610799565b82516202dd3160ec1b81529082828681895afa9182156105ee575f926105b6575b501630148015919061053a575b5061052d576104f4836107c5565b1561052057827feb73900b98b6a3e2b8b01708fe544760cf570d21e7fbe5225f24e48b5b2b432e5f80a2005b5163b73e95e160e01b8152fd5b5163340aafcd60e11b8152fd5b8251635d927f4560e11b815290915081818581885afa91821561031e575f92610577575b505067ffffffffffffffff80845416911614155f6104e6565b90809250813d83116105af575b61058e81836106e8565b810103126100d9575167ffffffffffffffff811681036100d9575f8061055e565b503d610584565b9091508281813d83116105e7575b6105ce81836106e8565b810103126100d9575181811681036100d957905f6104d9565b503d6105c4565b84513d5f823e3d90fd5b82346100d9575f3660031901126100d95760025490516001600160a01b039091168152602090f35b346100d9575f3660031901126100d957610638610799565b600280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b82346100d9575f3660031901126100d9576020905f549051908152f35b9150346100d95760203660031901126100d957356001600160a01b03811692908390036100d9576020925f52600183525f205415158152f35b6004359067ffffffffffffffff821682036100d957565b90601f8019910116810190811067ffffffffffffffff82111761070a57604052565b634e487b7160e01b5f52604160045260245ffd5b908060209392818452848401375f828201840152601f01601f1916010190565b67ffffffffffffffff166004548110156107855760045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01546001600160a01b031690565b634e487b7160e01b5f52603260045260245ffd5b6002546001600160a01b031633036107ad57565b60405163118cdaa760e01b8152336004820152602490fd5b805f52600560205260405f2054155f1461083157600454600160401b81101561070a5760018101806004558110156107855781907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0155600454905f52600560205260405f2055600190565b505f90565b805f52600160205260405f2054155f14610831575f54600160401b81101561070a5760018101805f558110156107855781907f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56301555f54905f52600160205260405f205560019056fea2646970667358221220f2abbd4d9535ee260d0e3b8222ebdf0027209866573acf249089c2c7198fa3d064736f6c63430008190033","sourceMap":"177:120:73:-:0;;;;;;;;;;;;;-1:-1:-1;;177:120:73;;;;-1:-1:-1;;;;;177:120:73;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;177:120:73;;;;;;;;;;1273:26:30;;1269:95;;3004:6;177:120:73;;-1:-1:-1;;;;;;177:120:73;;;;;;;;;;;3052:40:30;-1:-1:-1;;3052:40:30;177:120:73;;;;;;;1269:95:30;177:120:73;;-1:-1:-1;;;1322:31:30;;-1:-1:-1;1322:31:30;;;177:120:73;;;1322:31:30;177:120:73;-1:-1:-1;177:120:73;;;;;;-1:-1:-1;177:120:73;;;;;-1:-1:-1;177:120:73","linkReferences":{}},"deployedBytecode":{"object":"0x6080604090808252600480361015610015575f80fd5b5f3560e01c91826314887c5814610698575081635cd8b15e1461067b578163715018a6146106205781638da5cb5b146105f85781639b19251a14610485578163b42ba2a21461041a578163b572a96614610375578163b6caa11914610338578163cd108ef814610194578163f15df2e51461016e578163f2fde38b146100dd575063f9661602146100a4575f80fd5b346100d95760203660031901126100d9576020906100c86100c36106d1565b61073e565b90516001600160a01b039091168152f35b5f80fd5b82346100d95760203660031901126100d9576001600160a01b038235818116939192908490036100d95761010f610799565b8315610158575050600254826bffffffffffffffffffffffff60a01b821617600255167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b905f6024925191631e4fbdf760e01b8352820152fd5b82346100d9575f3660031901126100d95767ffffffffffffffff60209254169051908152f35b82346100d957806003193601126100d9576101ad6106d1565b906024359167ffffffffffffffff8084116100d957366023850112156100d95783850135918183116100d957602485019460248436920101116100d9576e5af43d82803e903d91602b57fd5bf36102038261073e565b915f54908487519160208301938452168782015260608082015261023d8161022f60808201898c61071e565b03601f1981018352826106e8565b51902091763d602d80600a3d3981f3363d3d373d3d3d363d7300000062ffffff8260881c16175f5260781b1760205260018060a01b0390603760095ff5169384156103285761028b85610836565b50835192857fb919910dcefbf753bfd926ab3b1d3f85d877190c3d01ba1bd585047b99b99f0b5f80a2853b156100d957836102dd5f93829363439fab9160e01b845260208b850152602484019161071e565b038183885af1801561031e576102f8575b6020848451908152f35b811161030b5760209350815283806102ee565b604184634e487b7160e01b5f525260245ffd5b83513d5f823e3d90fd5b835163b06ebf3d60e01b81528690fd5b82346100d95760203660031901126100d95760209067ffffffffffffffff61035e6106d1565b165f526003825260ff815f20541690519015158152f35b82346100d95760203660031901126100d95761038f6106d1565b91610398610799565b67ffffffffffffffff8082541693169283101561040c57825f52600360205260ff825f2054166103fe5750815f5260036020525f20600160ff198254161790557ffc8245c2838846b295ae66fbe0d08e20c799b737c93b56f7b209df2e5fa2d4585f80a2005b905163f53de75f60e01b8152fd5b905163b968846160e01b8152fd5b82346100d95760203660031901126100d95781355f54811015610472575f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563015490516001600160a01b03909116815260209150f35b603283634e487b7160e01b5f525260245ffd5b9050346100d957602091826003193601126100d95781356001600160a01b0381811694918590036100d9576104b8610799565b82516202dd3160ec1b81529082828681895afa9182156105ee575f926105b6575b501630148015919061053a575b5061052d576104f4836107c5565b1561052057827feb73900b98b6a3e2b8b01708fe544760cf570d21e7fbe5225f24e48b5b2b432e5f80a2005b5163b73e95e160e01b8152fd5b5163340aafcd60e11b8152fd5b8251635d927f4560e11b815290915081818581885afa91821561031e575f92610577575b505067ffffffffffffffff80845416911614155f6104e6565b90809250813d83116105af575b61058e81836106e8565b810103126100d9575167ffffffffffffffff811681036100d9575f8061055e565b503d610584565b9091508281813d83116105e7575b6105ce81836106e8565b810103126100d9575181811681036100d957905f6104d9565b503d6105c4565b84513d5f823e3d90fd5b82346100d9575f3660031901126100d95760025490516001600160a01b039091168152602090f35b346100d9575f3660031901126100d957610638610799565b600280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b82346100d9575f3660031901126100d9576020905f549051908152f35b9150346100d95760203660031901126100d957356001600160a01b03811692908390036100d9576020925f52600183525f205415158152f35b6004359067ffffffffffffffff821682036100d957565b90601f8019910116810190811067ffffffffffffffff82111761070a57604052565b634e487b7160e01b5f52604160045260245ffd5b908060209392818452848401375f828201840152601f01601f1916010190565b67ffffffffffffffff166004548110156107855760045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01546001600160a01b031690565b634e487b7160e01b5f52603260045260245ffd5b6002546001600160a01b031633036107ad57565b60405163118cdaa760e01b8152336004820152602490fd5b805f52600560205260405f2054155f1461083157600454600160401b81101561070a5760018101806004558110156107855781907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0155600454905f52600560205260405f2055600190565b505f90565b805f52600160205260405f2054155f14610831575f54600160401b81101561070a5760018101805f558110156107855781907f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56301555f54905f52600160205260405f205560019056fea2646970667358221220f2abbd4d9535ee260d0e3b8222ebdf0027209866573acf249089c2c7198fa3d064736f6c63430008190033","sourceMap":"177:120:73:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;177:120:73;;;;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;177:120:73;;;;;;;;;;;;;;;;;-1:-1:-1;;177:120:73;;;;-1:-1:-1;;;;;177:120:73;;;;;;;;;;;;;;1500:62:30;;:::i;:::-;2627:22;;2623:91;;177:120:73;;3004:6:30;177:120:73;;;;;;;;3004:6:30;177:120:73;;3052:40:30;177:120:73;3052:40:30;;177:120:73;2623:91:30;177:120:73;;;;;2672:31:30;;;;;;;;177:120:73;2672:31:30;177:120:73;;;;;;;-1:-1:-1;;177:120:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3673:585:43;2248:21:77;;;:::i;:::-;177:120:73;;;;;;;2299:40:77;177:120:73;2299:40:77;;177:120:73;;;;;;;;;;;;;2299:40:77;177:120:73;;;;;;;;:::i;:::-;2299:40:77;;;;;;;;;:::i;:::-;177:120:73;2289:51:77;;3673:585:43;;;;;;;;177:120:73;3673:585:43;;;;177:120:73;3673:585:43;177:120:73;;;;;3673:585:43;;;177:120:73;3673:585:43;177:120:73;4271:22:43;;;4267:85;;8382:50:67;;;:::i;:::-;;177:120:73;;1077:18:81;;;177:120:73;1077:18:81;;2382:33:77;;;;;177:120:73;;;;;;;;;2382:33:77;;177:120:73;2382:33:77;;;177:120:73;;;;;;:::i;:::-;2382:33:77;;;;;;;;;;;;177:120:73;;;;;;;;;2382:33:77;177:120:73;;;;;;;;;2382:33:77;;;;177:120:73;;;;;;;;;;;;2382:33:77;177:120:73;;;;;;;;;4267:85:43;177:120:73;;-1:-1:-1;;;4316:25:43;;177:120:73;;4316:25:43;177:120:73;;;;;;;-1:-1:-1;;177:120:73;;;;;;;;;:::i;:::-;;;;633:54:77;177:120:73;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;177:120:73;;;;;;:::i;:::-;1500:62:30;;;:::i;:::-;177:120:73;;;;;;;822:21:77;;;;818:72;;177:120:73;;;1946:11:77;177:120:73;;;;;;;;1942:76:77;;177:120:73;;;;1946:11:77;177:120:73;;;;2049:4:77;177:120:73;;;;;;;;2069:16:77;177:120:73;2069:16:77;;177:120:73;1942:76:77;177:120:73;;-1:-1:-1;;;1987:20:77;;;818:72;177:120:73;;-1:-1:-1;;;866:13:77;;;177:120:73;;;;;;;-1:-1:-1;;177:120:73;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;177:120:73;;;;;;;-1:-1:-1;177:120:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;177:120:73;;;;;;;;;;1500:62:30;;:::i;:::-;177:120:73;;-1:-1:-1;;;1476:34:77;;177:120:73;1476:34:77;177:120:73;1476:34:77;177:120:73;1476:34:77;;;;;;;;177:120:73;1476:34:77;;;177:120:73;-1:-1:-1;177:120:73;1522:4:77;1476:51;;;;;:102;;177:120:73;1472:163:77;;;8382:50:67;;;:::i;:::-;1648:49:77;1644:107;;1766:26;;177:120:73;1766:26:77;;177:120:73;1644:107:77;177:120:73;-1:-1:-1;;;1720:20:77;;;1472:163;177:120:73;-1:-1:-1;;;1601:23:77;;;1476:102;177:120:73;;-1:-1:-1;;;1531:31:77;;177:120:73;;-1:-1:-1;177:120:73;;1531:31:77;177:120:73;1531:31:77;;;;;;;;177:120:73;1531:31:77;;;1476:102;177:120:73;;;;;;;;;1531:47:77;;1476:102;;;1531:31;;;;;;;;;;;;;;;;:::i;:::-;;;177:120:73;;;;;;;;;;;;1531:31:77;;;;;;;;;1476:34;;;;;;;;;;;;;;;;;:::i;:::-;;;177:120:73;;;;;;;;;;;;1476:34:77;;;;;;;;;;177:120:73;;;;;;;;;;;;;;;;-1:-1:-1;;177:120:73;;;;1710:6:30;177:120:73;;;-1:-1:-1;;;;;177:120:73;;;;;;;;;;;;;;-1:-1:-1;;177:120:73;;;;1500:62:30;;:::i;:::-;3004:6;177:120:73;;-1:-1:-1;;;;;;177:120:73;;;;;;;-1:-1:-1;;;;;177:120:73;3052:40:30;177:120:73;;3052:40:30;177:120:73;;;;;;;;-1:-1:-1;;177:120:73;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;177:120:73;;;;;-1:-1:-1;;;;;177:120:73;;;;;;;;;;;;;4360:14:67;177:120:73;;;;;4360:26:67;;177:120:73;;;;;;;;;;;;;;:::o;:::-;;;2299:40:77;;177:120:73;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;177:120:73;;;;;;;;-1:-1:-1;;177:120:73;;;;:::o;1192:143:77:-;177:120:73;;1291:27:77;177:120:73;;;;;;1291:27:77;-1:-1:-1;177:120:73;;;;-1:-1:-1;;;;;177:120:73;;1192:143:77:o;177:120:73:-;;;;-1:-1:-1;177:120:73;;1291:27:77;177:120:73;;-1:-1:-1;177:120:73;1796:162:30;1710:6;177:120:73;-1:-1:-1;;;;;177:120:73;735:10:52;1855:23:30;1851:101;;1796:162::o;1851:101::-;177:120:73;;-1:-1:-1;;;1901:40:30;;735:10:52;1901:40:30;;;177:120:73;;;1901:40:30;2241:406:67;177:120:73;-1:-1:-1;177:120:73;4360:14:67;177:120:73;;;-1:-1:-1;177:120:73;;4360:26:67;2320:321;177:120:73;;;;;-1:-1:-1;;;177:120:73;;;;;4360:14:67;177:120:73;;;;;;;;;;;;;;;;;;-1:-1:-1;177:120:73;4360:14:67;177:120:73;;;-1:-1:-1;177:120:73;;4360:14:67;2576:11;:::o;2320:321::-;2618:12;-1:-1:-1;2618:12:67;:::o;2241:406::-;177:120:73;;;4360:14:67;177:120:73;;;;;;4360:26:67;2320:321;177:120:73;;;;;-1:-1:-1;;;177:120:73;;;;;4360:14:67;177:120:73;;;;;;;;;;;;;;;;;;;;4360:14:67;177:120:73;;;;;;4360:14:67;2576:11;:::o","linkReferences":{}},"methodIdentifiers":{"blacklist(uint64)":"b572a966","blacklisted(uint64)":"b6caa119","create(uint64,bytes)":"cd108ef8","entity(uint256)":"b42ba2a2","implementation(uint64)":"f9661602","isEntity(address)":"14887c58","owner()":"8da5cb5b","renounceOwnership()":"715018a6","totalEntities()":"5cd8b15e","totalTypes()":"f15df2e5","transferOwnership(address)":"f2fde38b","whitelist(address)":"9b19251a"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AlreadyBlacklisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadyWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EntityNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedDeployment\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidType\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"entity\",\"type\":\"address\"}],\"name\":\"AddEntity\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"type_\",\"type\":\"uint64\"}],\"name\":\"Blacklist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Whitelist\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"type_\",\"type\":\"uint64\"}],\"name\":\"blacklist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"type_\",\"type\":\"uint64\"}],\"name\":\"blacklisted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"type_\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"create\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"entity_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"entity\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"type_\",\"type\":\"uint64\"}],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"entity_\",\"type\":\"address\"}],\"name\":\"isEntity\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalEntities\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalTypes\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation_\",\"type\":\"address\"}],\"name\":\"whitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"FailedDeployment()\":[{\"details\":\"The deployment failed.\"}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"events\":{\"AddEntity(address)\":{\"params\":{\"entity\":\"address of the added entity\"}},\"Blacklist(uint64)\":{\"details\":\"The given type is still deployable.\",\"params\":{\"type_\":\"type that was blacklisted\"}},\"Whitelist(address)\":{\"params\":{\"implementation\":\"address of the new implementation\"}}},\"kind\":\"dev\",\"methods\":{\"blacklist(uint64)\":{\"details\":\"The given type will still be deployable.\",\"params\":{\"type_\":\"type to blacklist\"}},\"create(uint64,bytes)\":{\"details\":\"CREATE2 salt is constructed from the given parameters.\",\"params\":{\"data\":\"initial data for the entity creation\",\"type_\":\"type's implementation to use\"},\"returns\":{\"entity_\":\"address of the entity\"}},\"entity(uint256)\":{\"params\":{\"index\":\"index of the entity to get\"},\"returns\":{\"_0\":\"address of the entity\"}},\"implementation(uint64)\":{\"params\":{\"type_\":\"position to get the implementation at\"},\"returns\":{\"_0\":\"address of the implementation\"}},\"isEntity(address)\":{\"params\":{\"account\":\"address to check\"},\"returns\":{\"_0\":\"if the given address is an entity\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"totalEntities()\":{\"returns\":{\"_0\":\"total number of entities added\"}},\"totalTypes()\":{\"returns\":{\"_0\":\"total number of types\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"whitelist(address)\":{\"params\":{\"implementation\":\"address of the new implementation\"}}},\"version\":1},\"userdoc\":{\"events\":{\"AddEntity(address)\":{\"notice\":\"Emitted when an entity is added.\"},\"Blacklist(uint64)\":{\"notice\":\"Emitted when a type is blacklisted (e.g., in case of invalid implementation).\"},\"Whitelist(address)\":{\"notice\":\"Emitted when a new type is whitelisted.\"}},\"kind\":\"user\",\"methods\":{\"blacklist(uint64)\":{\"notice\":\"Blacklist a type of entity.\"},\"blacklisted(uint64)\":{\"notice\":\"Get if a type is blacklisted (e.g., in case of invalid implementation).\"},\"create(uint64,bytes)\":{\"notice\":\"Create a new entity at the factory.\"},\"entity(uint256)\":{\"notice\":\"Get an entity given its index.\"},\"implementation(uint64)\":{\"notice\":\"Get the implementation for a given type.\"},\"isEntity(address)\":{\"notice\":\"Get if a given address is an entity.\"},\"totalEntities()\":{\"notice\":\"Get a total number of entities.\"},\"totalTypes()\":{\"notice\":\"Get the total number of whitelisted types.\"},\"whitelist(address)\":{\"notice\":\"Whitelist a new type of entity.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/SlasherFactory.sol\":\"SlasherFactory\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/proxy/Clones.sol\":{\"keccak256\":\"0xf55d01dac75cffdabec6833a79bf3be0c108fc0db10e273daf7adfd3e9e59dae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://540002a50a2a1a2b9dafffb976178e55adbf8d3a28db462c69f996921479c6b0\",\"dweb:/ipfs/QmQNAFyMf2FW3U1giM4Yej3zzd1pnxMtAA5GoADj4hTYYD\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f\",\"dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz\"]},\"src/contracts/SlasherFactory.sol\":{\"keccak256\":\"0xbafc96e3d2511eb62942613645b4f5cbf6f603063a711b30e25940aaba08064c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://489440f1181b1858e3b27a90ec6f514c0c287c602b4779676048213202165867\",\"dweb:/ipfs/QmRG7AQ9m9qHr8ofEvP1Ur8S379fFXTo9rmiWaAtZ9rsUc\"]},\"src/contracts/common/Factory.sol\":{\"keccak256\":\"0x41764643e6a2a3d80d694a3efee91f50a2fd084fb2bcd13566259443840e6369\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://fefc1e2a2189275388826f4f82ca421ca79c2866d3ef39dc2c7df46fe7cbf7c9\",\"dweb:/ipfs/QmSJ4VGmgpYUv5ni4ZYoSV4qMuZrk5DLjyB3Vv9NbFgeNZ\"]},\"src/contracts/common/Registry.sol\":{\"keccak256\":\"0x4a4004836d920953a8ec6e223de9a330f43acf7a5b93c6b8b3e4a95e0f129889\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://e8bdda207f3852c683a2b481602239a914f7e26bcd042ade618e263a43b67652\",\"dweb:/ipfs/Qmb8GZykJWxZcfwNp3SqhFizDFydFuV6LXgemV3vnWyLyu\"]},\"src/interfaces/ISlasherFactory.sol\":{\"keccak256\":\"0x30018af5c2719d9b5cfacbfc0277017896815b3fcc4dfbea78813e6ae81c1e56\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5e028fbed23ab973d8d9eb2be4e53a528dd01248e3233f56ab0f8ac9a7c9c220\",\"dweb:/ipfs/Qmd9cHMRSE52ESmxMiu5gTBpRNmDHQK5q18f7UTj8DQke4\"]},\"src/interfaces/common/IEntity.sol\":{\"keccak256\":\"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b\",\"dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv\"]},\"src/interfaces/common/IFactory.sol\":{\"keccak256\":\"0xe835ebda85d181b70874f6eb53f2a892aa3223d23efe247060da9b51d2b8e969\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://48b3dfb5f0491d90efbc8ed498b45358260ebac6e8f2aa0106b8b8fabdc988cb\",\"dweb:/ipfs/QmWnnCs3xiHeUvYfUWMJTSFZWc34bSYn9Zpm7f7syra3TA\"]},\"src/interfaces/common/IRegistry.sol\":{\"keccak256\":\"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014\",\"dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AlreadyBlacklisted"},{"inputs":[],"type":"error","name":"AlreadyWhitelisted"},{"inputs":[],"type":"error","name":"EntityNotExist"},{"inputs":[],"type":"error","name":"FailedDeployment"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"InsufficientBalance"},{"inputs":[],"type":"error","name":"InvalidImplementation"},{"inputs":[],"type":"error","name":"InvalidType"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"entity","type":"address","indexed":true}],"type":"event","name":"AddEntity","anonymous":false},{"inputs":[{"internalType":"uint64","name":"type_","type":"uint64","indexed":true}],"type":"event","name":"Blacklist","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Whitelist","anonymous":false},{"inputs":[{"internalType":"uint64","name":"type_","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"blacklist"},{"inputs":[{"internalType":"uint64","name":"type_","type":"uint64"}],"stateMutability":"view","type":"function","name":"blacklisted","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"type_","type":"uint64"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"create","outputs":[{"internalType":"address","name":"entity_","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function","name":"entity","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"type_","type":"uint64"}],"stateMutability":"view","type":"function","name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"entity_","type":"address"}],"stateMutability":"view","type":"function","name":"isEntity","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"totalEntities","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalTypes","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"address","name":"implementation_","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"whitelist"}],"devdoc":{"kind":"dev","methods":{"blacklist(uint64)":{"details":"The given type will still be deployable.","params":{"type_":"type to blacklist"}},"create(uint64,bytes)":{"details":"CREATE2 salt is constructed from the given parameters.","params":{"data":"initial data for the entity creation","type_":"type's implementation to use"},"returns":{"entity_":"address of the entity"}},"entity(uint256)":{"params":{"index":"index of the entity to get"},"returns":{"_0":"address of the entity"}},"implementation(uint64)":{"params":{"type_":"position to get the implementation at"},"returns":{"_0":"address of the implementation"}},"isEntity(address)":{"params":{"account":"address to check"},"returns":{"_0":"if the given address is an entity"}},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"totalEntities()":{"returns":{"_0":"total number of entities added"}},"totalTypes()":{"returns":{"_0":"total number of types"}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"whitelist(address)":{"params":{"implementation":"address of the new implementation"}}},"version":1},"userdoc":{"kind":"user","methods":{"blacklist(uint64)":{"notice":"Blacklist a type of entity."},"blacklisted(uint64)":{"notice":"Get if a type is blacklisted (e.g., in case of invalid implementation)."},"create(uint64,bytes)":{"notice":"Create a new entity at the factory."},"entity(uint256)":{"notice":"Get an entity given its index."},"implementation(uint64)":{"notice":"Get the implementation for a given type."},"isEntity(address)":{"notice":"Get if a given address is an entity."},"totalEntities()":{"notice":"Get a total number of entities."},"totalTypes()":{"notice":"Get the total number of whitelisted types."},"whitelist(address)":{"notice":"Whitelist a new type of entity."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/SlasherFactory.sol":"SlasherFactory"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/Clones.sol":{"keccak256":"0xf55d01dac75cffdabec6833a79bf3be0c108fc0db10e273daf7adfd3e9e59dae","urls":["bzz-raw://540002a50a2a1a2b9dafffb976178e55adbf8d3a28db462c69f996921479c6b0","dweb:/ipfs/QmQNAFyMf2FW3U1giM4Yej3zzd1pnxMtAA5GoADj4hTYYD"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol":{"keccak256":"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212","urls":["bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f","dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz"],"license":"MIT"},"src/contracts/SlasherFactory.sol":{"keccak256":"0xbafc96e3d2511eb62942613645b4f5cbf6f603063a711b30e25940aaba08064c","urls":["bzz-raw://489440f1181b1858e3b27a90ec6f514c0c287c602b4779676048213202165867","dweb:/ipfs/QmRG7AQ9m9qHr8ofEvP1Ur8S379fFXTo9rmiWaAtZ9rsUc"],"license":"BUSL-1.1"},"src/contracts/common/Factory.sol":{"keccak256":"0x41764643e6a2a3d80d694a3efee91f50a2fd084fb2bcd13566259443840e6369","urls":["bzz-raw://fefc1e2a2189275388826f4f82ca421ca79c2866d3ef39dc2c7df46fe7cbf7c9","dweb:/ipfs/QmSJ4VGmgpYUv5ni4ZYoSV4qMuZrk5DLjyB3Vv9NbFgeNZ"],"license":"BUSL-1.1"},"src/contracts/common/Registry.sol":{"keccak256":"0x4a4004836d920953a8ec6e223de9a330f43acf7a5b93c6b8b3e4a95e0f129889","urls":["bzz-raw://e8bdda207f3852c683a2b481602239a914f7e26bcd042ade618e263a43b67652","dweb:/ipfs/Qmb8GZykJWxZcfwNp3SqhFizDFydFuV6LXgemV3vnWyLyu"],"license":"BUSL-1.1"},"src/interfaces/ISlasherFactory.sol":{"keccak256":"0x30018af5c2719d9b5cfacbfc0277017896815b3fcc4dfbea78813e6ae81c1e56","urls":["bzz-raw://5e028fbed23ab973d8d9eb2be4e53a528dd01248e3233f56ab0f8ac9a7c9c220","dweb:/ipfs/Qmd9cHMRSE52ESmxMiu5gTBpRNmDHQK5q18f7UTj8DQke4"],"license":"MIT"},"src/interfaces/common/IEntity.sol":{"keccak256":"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21","urls":["bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b","dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv"],"license":"MIT"},"src/interfaces/common/IFactory.sol":{"keccak256":"0xe835ebda85d181b70874f6eb53f2a892aa3223d23efe247060da9b51d2b8e969","urls":["bzz-raw://48b3dfb5f0491d90efbc8ed498b45358260ebac6e8f2aa0106b8b8fabdc988cb","dweb:/ipfs/QmWnnCs3xiHeUvYfUWMJTSFZWc34bSYn9Zpm7f7syra3TA"],"license":"MIT"},"src/interfaces/common/IRegistry.sol":{"keccak256":"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb","urls":["bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014","dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK"],"license":"MIT"}},"version":1},"id":73} \ No newline at end of file diff --git a/out/SlasherHints.sol/BaseSlasherHints.json b/out/SlasherHints.sol/BaseSlasherHints.json index 5b301f97..510bbfea 100644 --- a/out/SlasherHints.sol/BaseSlasherHints.json +++ b/out/SlasherHints.sol/BaseSlasherHints.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"baseDelegatorHints","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"BASE_DELEGATOR_HINTS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"BURNER_GAS_LIMIT","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"BURNER_RESERVE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"NETWORK_MIDDLEWARE_SERVICE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"SLASHER_HINTS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"TYPE","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"VAULT_FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"VETO_SLASHER_HINTS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"cumulativeSlash","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"cumulativeSlashAt","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"cumulativeSlashHint","inputs":[{"name":"slasher","type":"address","internalType":"address"},{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"cumulativeSlashHintInternal","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"exists","type":"bool","internalType":"bool"},{"name":"hint","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isBurnerHook","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"latestSlashedCaptureTimestamp","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"value","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"slashableStake","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"captureTimestamp","type":"uint48","internalType":"uint48"},{"name":"hints","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"slashableStakeHints","inputs":[{"name":"slasher","type":"address","internalType":"address"},{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"captureTimestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"staticDelegateCall","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"vault","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"error","name":"ExternalCall","inputs":[]},{"type":"error","name":"InsufficientBurnerGas","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NoBurner","inputs":[]},{"type":"error","name":"NotInitialized","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"NotNetworkMiddleware","inputs":[]},{"type":"error","name":"NotVault","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x610180346101e757601f61741938819003918201601f19168301926001600160401b03929091838511838610176101825781602092849260409788528339810103126101e75751906001600160a01b039081831683036101e757306080527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460ff81871c166101d65780838080931603610196575b5050505f60a0525f60c0525f60e052610100935f8552610120938452805161209f8082019082821085831117610182576020918391611bfe83393081520301905ff091821561017857836101409316835281519061377c8083019183831090831117610182576020918391613c9d83393081520301905ff092831561017857610160931683525192611a1294856101ec8639608051856105fa015260a051856102cb015260c05185610909015260e0518581816101690152610e840152518461028701525183818161069b0152610c2f0152518261055c015251816105a00152f35b50513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b6001600160401b03191617905583518181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f8181610096565b855163f92ee8a960e01b8152600490fd5b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c8063103f2907146101545780631a2be2c41461014f578063267de1f31461014a5780632964f8dc146101455780632c9d45b3146101405780632dd310001461013b57806334d098ea14610136578063439fab91146101315780634a7196551461012c5780634ea2e926146101275780634eb5a242146101225780636565b7db1461011d578063770280461461011857806379d89614146101135780639f86fd851461010e578063aa8e648914610109578063aab3595f14610104578063bb24fe8a146100ff578063d5c24e1a146100fa5763fbfa77cf146100f5575f80fd5b61094a565b61092d565b6108ea565b6108c5565b610887565b6106ca565b610686565b6105cf565b61058b565b610547565b61052a565b6104f5565b61034b565b6102fa565b6102b6565b610272565b610256565b610201565b6101ad565b34610198575f366003190112610198576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5f80fd5b6001600160a01b0381160361019857565b346101985760403660031901126101985760206101f96101f46024356101d28161019c565b6004355f526002845260405f209060018060a01b03165f5260205260405f2090565b610daa565b604051908152f35b3461019857604036600319011261019857602065ffffffffffff61024c60243561022a8161019c565b6004355f526001845260405f209060018060a01b03165f5260205260405f2090565b5416604051908152f35b34610198575f366003190112610198576020604051614e208152f35b34610198575f366003190112610198576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610198575f366003190112610198576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610198575f36600319011261019857602060ff5f5460a01c166040519015158152f35b9181601f84011215610198578235916001600160401b038311610198576020838186019501011161019857565b34610198576020366003190112610198576001600160401b036004358181116101985761037c90369060040161031e565b5f805160206119bd833981519152549260ff8460401c1615931680159081610480575b6001149081610476575b15908161046d575b5061045b575f805160206119bd833981519152805467ffffffffffffffff191660011790556103e4918361043257610e4c565b6103ea57005b5f805160206119bd833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f805160206119bd833981519152805460ff60401b191668010000000000000000179055610e4c565b60405163f92ee8a960e01b8152600490fd5b9050155f6103b1565b303b1591506103a9565b84915061039f565b65ffffffffffff81160361019857565b6080906003190112610198576004356104b08161019c565b90602435906044356104c18161019c565b906064356104ce81610488565b90565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b346101985761052661051261050936610498565b929190916109b0565b6040519182916020835260208301906104d1565b0390f35b346101985761052661051261053e36610498565b92919091610b7b565b34610198575f366003190112610198576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610198575f366003190112610198576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610198576060366003190112610198576024356105ec8161019c565b6044356105f881610488565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361067457610652610657926004355f52600260205260405f209060018060a01b03165f5260205260405f2090565b61104a565b60408051941515855263ffffffff91909116602085015292915050f35b604051637ca475e560e11b8152600490fd5b34610198575f366003190112610198576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610198576040366003190112610198576004356106e78161019c565b6024356001600160401b038111610198575f916107098392369060040161031e565b90816040519283928337810184815203915af4610756610727610d26565b916107486040519384921515602084015260408084015260608301906104d1565b03601f1981018352826107ad565b805190602001fd5b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b0382111761078d57604052565b61075e565b60a081019081106001600160401b0382111761078d57604052565b90601f801991011681019081106001600160401b0382111761078d57604052565b604051906107db82610772565b565b6001600160401b03811161078d57601f01601f191660200190565b81601f820112156101985780359061080f826107dd565b9261081d60405194856107ad565b8284526020838301011161019857815f926020809301838601378301015290565b906080600319830112610198576004359160243561085b8161019c565b9160443561086881610488565b91606435906001600160401b038211610198576104ce916004016107f8565b346101985760206101f96108c061089d3661083e565b939190925f526002865260405f209060018060a01b03165f5260205260405f2090565b611178565b346101985760206108e16108d83661083e565b92919091611347565b50604051908152f35b34610198575f3660031901126101985760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610198575f366003190112610198576020604051620249f08152f35b34610198575f366003190112610198575f546040516001600160a01b039091168152602090f35b5190811515820361019857565b519063ffffffff8216820361019857565b9190826040910312610198576104ce60206109a984610971565b930161097e565b5f809195949593929365ffffffffffff60609760405195602097633b81402360e11b89890152602488015260018060a01b03166044870152166064850152606484526109fb84610792565b6040519384610a2887820192639f86fd8560e01b84523060248401526040604484015260648301906104d1565b0394610a3c601f19968781018352826107ad565b51915afa50610a5a610a4c610d26565b838082518301019101610fb5565b9015610aad57808380610a729351830101910161098f565b9290610a7d57505050565b6104ce92939450610aa1604051948592830191909163ffffffff6020820193169052565b039081018352826107ad565b809150519182156101985701fd5b9081602091031261019857516104ce8161019c565b6040513d5f823e3d90fd5b81601f8201121561019857805190610af2826107dd565b92610b0060405194856107ad565b8284526020838301011161019857815f9260208093018386015e8301015290565b906020828203126101985781516001600160401b038111610198576104ce9201610adb565b906104ce91602081526020610b66835160408385015260608401906104d1565b920151906040601f19828503019101526104d1565b60405163fbfa77cf60e01b815260609594919391926020926001600160a01b03929091908481600481878b165afa908115610cd757849186915f91610d09575b50600460405180948193630ce9b79360e41b8352165afa8015610cd75786948385925f948591610cdc575b506040516304bb92e160e31b81526001600160a01b039182166004820152602481019290925292909216604483015265ffffffffffff97909716606482015295869060849082907f0000000000000000000000000000000000000000000000000000000000000000165afa948515610cd7575f95610caf575b50610c6b9394956109b0565b825115801590610ca5575b610c7f57505050565b6104ce92939450610c8e6107ce565b938452818401526107486040519384928301610b46565b5080511515610c76565b610c6b949550610cd0903d805f833e610cc881836107ad565b810190610b21565b9493610c5f565b610ad0565b610cfc9150893d8b11610d02575b610cf481836107ad565b810190610abb565b5f610be6565b503d610cea565b610d209150823d8411610d0257610cf481836107ad565b5f610bbb565b3d15610d50573d90610d37826107dd565b91610d4560405193846107ad565b82523d5f602084013e565b606090565b5f9081526002602090815260408083206001600160a01b039094168352929052206104ce929190611178565b8054821015610d96575f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b805480610ddf57505f5b6001600160d01b03811615610dd9576001610dcf9201610d81565b90549060031b1c90565b50505f90565b5f19908082810111610dfd57825f5260205f2001015460301c610db4565b610fe9565b919091604081840312610198578035610e1a8161019c565b9260208201356001600160401b038111610198576104ce92016107f8565b90816020910312610198576104ce90610971565b610e5891810190610e02565b506040516302910f8b60e31b81526001600160a01b0391821660048201819052919060209081816024817f000000000000000000000000000000000000000000000000000000000000000087165afa908115610cd7575f91610f88575b5015610f7657610ec361159b565b5f80546001600160a01b0319166001600160a01b038516179055600481610ee86115d1565b94604051928380926313c085b760e11b82525afa918215610cd7575f92610f59575b5050161580610f4f575b610f3d57516107db9015155f805460ff60a01b191691151560a01b60ff60a01b16919091179055565b60405163d2420f5960e01b8152600490fd5b5080511515610f14565b610f6f9250803d10610d0257610cf481836107ad565b5f80610f0a565b6040516362df054560e01b8152600490fd5b610fa89150823d8411610fae575b610fa081836107ad565b810190610e38565b5f610eb5565b503d610f96565b91909160408184031261019857610fcb81610971565b9260208201516001600160401b038111610198576104ce9201610adb565b634e487b7160e01b5f52601160045260245ffd5b5f19810191908211610dfd57565b91908203918211610dfd57565b9060018201809211610dfd57565b9060405161103381610772565b915465ffffffffffff8116835260301c6020830152565b91908254905f8291600584116110e8575b61106693508561174f565b9081156110dc576110d56110cc6110c6610dcf61109861109361108888610ffd565b895f5260205f200190565b611026565b9660016110bf60206110b08b5165ffffffffffff1690565b9a01516001600160d01b031690565b9101610d81565b93610ffd565b63ffffffff1690565b6001939291565b5f925082915081908190565b91926110f381611611565b8103908111610dfd5761106693865f5261112761111c8360205f200165ffffffffffff90541690565b65ffffffffffff1690565b65ffffffffffff8516101561113d57509161105b565b92915061114990611018565b9061105b565b90816020910312610198576104ce9061097e565b90600163ffffffff80931601918211610dfd57565b9180511561124657806020806111939351830101910161114f565b9161119e8382611876565b926111af845165ffffffffffff1690565b9065ffffffffffff808516921682811461123a57821191826111e5575b50506111dc576104ce92506117a6565b50506020015190565b9091506111f28354610ffd565b63ffffffff83161491821561120b575b50505f806111cc565b61123291925061122661122061111c92611163565b85611876565b5165ffffffffffff1690565b115f80611202565b50505050506020015190565b506104ce916117a6565b6040519061125d82610772565b60606020838281520152565b906020828203126101985781516001600160401b0392838211610198570190604082820312610198576040519261129f84610772565b825181811161019857826112b4918501610adb565b84526020830151908111610198576112cc9201610adb565b602082015290565b9081602091031261019857516104ce81610488565b65ffffffffffff9182169082160391908211610dfd57565b90816020910312610198575190565b9081526001600160a01b03909116602082015265ffffffffffff90911660408201526080606082018190526104ce929101906104d1565b92611350611250565b90805180611581575b505061136442611933565b5f549094906113899061137d906001600160a01b031681565b6001600160a01b031690565b93604051956327f843b560e11b875260209687816004818a5afa8015610cd7576113be9261111c925f92611552575b506112e9565b65ffffffffffff821690811090811561153b575b811561150a575b506114fe578560049560405196878092630ce9b79360e41b82525afa948515610cd75761142b9587915f916114e1575b50845190604051808099819463e02f693760e01b8352878b8a60048601611310565b03916001600160a01b03165afa938415610cd75761149d955f956114a0575b509261149285936114989361149296869a6114896101f483611474875f52600260205260405f2090565b9060018060a01b03165f5260205260405f2090565b95015192610d55565b9061100b565b6118de565b91565b6114989295506114929491936114ce611492928a3d8c116114da575b6114c681836107ad565b810190611301565b9693509391945061144a565b503d6114bc565b6114f89150823d8411610d0257610cf481836107ad565b5f611409565b5050505050505f905f90565b905061153461111c61152887611474875f52600160205260405f2090565b5465ffffffffffff1690565b115f6113d9565b905061154961111c42611933565b811015906113d2565b6115739192508a3d8c1161157a575b61156b81836107ad565b8101906112d4565b905f6113b8565b503d611561565b6115949250602080918301019101611269565b5f80611359565b6115a36118f0565b6115ab6118f0565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60405190602082018281106001600160401b0382111761078d576040525f8252565b81156115fd570490565b634e487b7160e01b5f52601260045260245ffd5b801561174a57806116e36116dc6116d26116c86116be6116b46116aa6116a060016104ce9a5f908b60801c8061173e575b508060401c80611731575b508060201c80611724575b508060101c80611717575b508060081c8061170a575b508060041c806116fd575b508060021c806116f0575b50821c6116e9575b811c1b611699818b6115f3565b0160011c90565b611699818a6115f3565b61169981896115f3565b61169981886115f3565b61169981876115f3565b61169981866115f3565b61169981856115f3565b80926115f3565b906118de565b810161168c565b600291509101905f611684565b600491509101905f611679565b600891509101905f61166e565b601091509101905f611663565b602091509101905f611658565b604091509101905f61164d565b9150506080905f611642565b505f90565b905b83831061175e5750505090565b90919261176b818561191e565b90835f5265ffffffffffff808360205f20015416908416105f146117935750925b9190611751565b9350600181018091111561178c57610fe9565b908154905f829160058411611810575b6117c1935084611965565b806117e957505f905b6001600160d01b03821615610dd9576104ce916001610dcf9201610d81565b6118036117f861180a92610ffd565b835f5260205f200190565b5460301c90565b906117ca565b919261181b81611611565b8103908111610dfd576117c193855f5265ffffffffffff808360205f20015416908516105f1461184c5750916117b6565b92915061185890611018565b906117b6565b6040519061186b82610772565b5f6020838281520152565b9061189f6118996118c09261188961185e565b5061189261185e565b5084610d81565b50611026565b91600165ffffffffffff845116936020828060d01b03910151169101610d81565b905490604051926118d084610772565b835260031b1c602082015290565b90808210156118eb575090565b905090565b60ff5f805160206119bd8339815191525460401c161561190c57565b604051631afcd79f60e31b8152600490fd5b90808216911860011c8101809111610dfd5790565b65ffffffffffff90818111611946571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b905b8383106119745750505090565b909192611981818561191e565b90835f5265ffffffffffff808360205f20015416908416105f146119a95750925b9190611967565b935060018101809111156119a257610fe956fef0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212204516407e2adc4ef10f928db601f32a60d5944a2a517c00968a39e5541843a63a64736f6c634300081900336101403461015d576001600160401b0390601f61209f38819003918201601f1916830191848311848410176101615780849260209460405283398101031261015d5751906001600160a01b038216820361015d57306080527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff8260401c1661014b578080831603610106575b835f60a0525f60c0525f60e052610100905f825261012090815260405190611f299283610176843960805183505060a051836104f2015260c0518381816109490152611379015260e05183818161031d01526116a901525182818161021c01526104ae0152518181816106920152610d330152f35b6001600160401b031990911681179091556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f8080610091565b60405163f92ee8a960e01b8152600490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c8063021a815614610124578063103f29071461011f5780631a2be2c41461011a578063238ab85f14610115578063267de1f3146101105780632964f8dc1461010b5780632c9d45b3146101065780632dd310001461010157806334d098ea146100fc578063439fab91146100f7578063457821b7146100f25780639f86fd85146100ed578063aa8e6489146100e8578063aab3595f146100e3578063bb24fe8a146100de578063d5c24e1a146100d95763fbfa77cf146100d4575f80fd5b61098a565b61096d565b61092a565b610905565b6108c7565b6106c1565b61067d565b610545565b610521565b6104dd565b610499565b61047d565b610428565b6103c4565b61034c565b610308565b61017b565b6001600160a01b0381160361013a57565b5f80fd5b65ffffffffffff81160361013a57565b9181601f8401121561013a578235916001600160401b03831161013a576020838186019501011161013a57565b3461013a5760a036600319011261013a5760043560243561019b81610129565b6064356101a78161013e565b6084356001600160401b03811161013a576101c690369060040161014e565b917f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0060028154146102ec5760029055604051635daf681960e11b8152606086901c60048201526001600160a01b036020826024817f000000000000000000000000000000000000000000000000000000000000000085165afa9182156102e7575f926102b6575b50339116036102a4576102a0946102679460443591610a63565b61029060017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6040519081529081906020820190565b0390f35b60405163227bf64d60e01b8152600490fd5b6102d991925060203d6020116102e0575b6102d181836107dd565b810190610ddf565b905f61024d565b503d6102c7565b610a27565b604051633ee5aeb560e01b8152600490fd5b5f91031261013a57565b3461013a575f36600319011261013a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461013a57604036600319011261013a57602061039861039360243561037181610129565b6004355f526002845260405f209060018060a01b03165f5260205260405f2090565b6115c8565b604051908152f35b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b3461013a5760c036600319011261013a576102a06104146004356103e781610129565b6103f2602435610129565b6064356103fe81610129565b60a4359161040b8361013e565b60443590610ce7565b6040519182916020835260208301906103a0565b3461013a57604036600319011261013a57602065ffffffffffff61047360243561045181610129565b6004355f526001845260405f209060018060a01b03165f5260205260405f2090565b5416604051908152f35b3461013a575f36600319011261013a576020604051614e208152f35b3461013a575f36600319011261013a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461013a575f36600319011261013a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461013a575f36600319011261013a57602060ff5f5460a01c166040519015158152f35b3461013a57602036600319011261013a576001600160401b0360043581811161013a5761057690369060040161014e565b5f80516020611ed4833981519152549260ff8460401c1615931680159081610675575b600114908161066b575b159081610662575b50610650575f80516020611ed4833981519152805467ffffffffffffffff191660011790556105de918361062c57611672565b6105e457005b5f80516020611ed4833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f80516020611ed4833981519152805460ff60401b1916600160401b179055611672565b60405163f92ee8a960e01b8152600490fd5b9050155f6105ab565b303b1591506105a3565b849150610599565b3461013a575f36600319011261013a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461013a5760408060031936011261013a576004356106df81610129565b602435906001600160401b03821161013a575f809161070561076994369060040161014e565b908187519283928337810184815203915af43d156107715761075b3d61072a8161081a565b90610737865192836107dd565b81523d5f602083013e5b8451948593151560208501528084015260608301906103a0565b03601f1981018352826107dd565b805190602001fd5b61075b6060610741565b634e487b7160e01b5f52604160045260245ffd5b602081019081106001600160401b038211176107aa57604052565b61077b565b604081019081106001600160401b038211176107aa57604052565b6001600160401b0381116107aa57604052565b90601f801991011681019081106001600160401b038211176107aa57604052565b6040519061080b826107af565b565b6040519061080b8261078f565b6001600160401b0381116107aa57601f01601f191660200190565b81601f8201121561013a5780359061084c8261081a565b9261085a60405194856107dd565b8284526020838301011161013a57815f926020809301838601378301015290565b90608060031983011261013a576004359160243561089881610129565b916044356108a58161013e565b91606435906001600160401b03821161013a576108c491600401610835565b90565b3461013a5760206103986109006108dd3661087b565b939190925f526002865260405f209060018060a01b03165f5260205260405f2090565b61180c565b3461013a5760206109216109183661087b565b92919091610ed9565b50604051908152f35b3461013a575f36600319011261013a5760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461013a575f36600319011261013a576020604051620249f08152f35b3461013a575f36600319011261013a575f546040516001600160a01b039091168152602090f35b604051906109be8261078f565b60608252565b9060208282031261013a5781356001600160401b039283821161013a57019060208282031261013a57604051926109fa8461078f565b823590811161013a57610a0d9201610835565b815290565b9081602091031261013a57516108c48161013e565b6040513d5f823e3d90fd5b634e487b7160e01b5f52601160045260245ffd5b65ffffffffffff9182169082160391908211610a5e57565b610a32565b92939594919095610a726109b1565b9280610c4d575b5050610a84426118e4565b5f54600490602090610aac90610aa0906001600160a01b031681565b6001600160a01b031690565b6040516327f843b560e11b815292839182905afa80156102e757610ae692610adb925f92610c1c575b50610a46565b65ffffffffffff1690565b65ffffffffffff8516908110908115610c06575b50610bf457610b0f610b189251858886610ed9565b92908092611109565b958615610be257610b9d61075b610b94610bdd947fe0cbbe1f1e6fd806ca87036fafcebaf7ab5247474a3b20e1c37bb50122c3a88496610b598a878b61111b565b610b648c878b6111a9565b610b6c6107fe565b9182526020820152604051928391602083019190916020806040830194805184520151910152565b86898488611315565b610ba7858861141e565b610bb3858883876114a3565b6040805188815265ffffffffffff90961660208701526001600160a01b0390911694918291820190565b0390a3565b60405163167f871760e31b8152600490fd5b604051631357ac9160e11b8152600490fd5b9050610c14610adb426118e4565b11155f610afa565b610c3f91925060203d602011610c46575b610c3781836107dd565b810190610a12565b905f610ad5565b503d610c2d565b610c5b9293508101906109c4565b905f80610a79565b81601f8201121561013a57805190610c7a8261081a565b92610c8860405194856107dd565b8284526020838301011161013a57815f9260208093018386015e8301015290565b9060208282031261013a5781516001600160401b03811161013a576108c49201610c63565b60406108c49260208352519160208082015201906103a0565b604051632751749360e11b81526001600160a01b0391821660048201526024810192909252918216604482015265ffffffffffff909216606483015260609291905f90829060849082907f0000000000000000000000000000000000000000000000000000000000000000165afa9081156102e7575f91610d91575b508051610d6d5750565b61075b9192506108c490610d7f61080d565b90815260405192839160208301610cce565b610dad91503d805f833e610da581836107dd565b810190610ca9565b5f610d63565b5f9081526002602090815260408083206001600160a01b039094168352929052206108c492919061180c565b9081602091031261013a57516108c481610129565b60405190610e01826107af565b60606020838281520152565b9060208282031261013a5781516001600160401b039283821161013a57019060408282031261013a5760405192610e43846107af565b825181811161013a5782610e58918501610c63565b8452602083015190811161013a57610e709201610c63565b602082015290565b9081602091031261013a575190565b9081526001600160a01b03909116602082015265ffffffffffff90911660408201526080606082018190526108c4929101906103a0565b5f19810191908211610a5e57565b91908203918211610a5e57565b92610ee2610df4565b908051806110ef575b5050610ef6426118e4565b5f54909490610f0f90610aa0906001600160a01b031681565b93604051956327f843b560e11b875260209687816004818a5afa80156102e757610f4392610adb925f926110d75750610a46565b65ffffffffffff82169081109081156110c0575b811561108f575b50611083578560049560405196878092630ce9b79360e41b82525afa9485156102e757610fb09587915f91611066575b50845190604051808099819463e02f693760e01b8352878b8a60048601610e87565b03916001600160a01b03165afa9384156102e757611022955f95611025575b5092611017859361101d9361101796869a61100e61039383610ff9875f52600260205260405f2090565b9060018060a01b03165f5260205260405f2090565b95015192610db3565b90610ecc565b611109565b91565b61101d929550611017949193611053611017928a3d8c1161105f575b61104b81836107dd565b810190610e78565b96935093919450610fcf565b503d611041565b61107d9150823d84116102e0576102d181836107dd565b5f610f8e565b5050505050505f905f90565b90506110b9610adb6110ad87610ff9875f52600160205260405f2090565b5465ffffffffffff1690565b115f610f5e565b90506110ce610adb426118e4565b81101590610f57565b610c3f9192508a3d8c11610c4657610c3781836107dd565b6111029250602080918301019101610e0d565b5f80610eeb565b9080821015611116575090565b905090565b919091805f52600160205265ffffffffffff8061114b8560405f209060018060a01b03165f5260205260405f2090565b54169083161161115a57505050565b61080b92611182915f52600160205260405f209060018060a01b03165f5260205260405f2090565b9065ffffffffffff1665ffffffffffff19825416179055565b9060018201809211610a5e57565b9190825f5260026020526112016103936111d68360405f209060018060a01b03165f5260205260405f2090565b926111e0426118e4565b955f52600260205260405f209060018060a01b03165f5260205260405f2090565b918201809211610a5e5760018101908154156112a5575b61122181611b40565b509490835495611230846115c8565b5081611290575b501561126f5750505f198301928311610a5e5761080b926112579161159f565b90919082549060031b91821b915f19901b1916179055565b61080b94611289926001600160d01b039091169190611c17565b5050611943565b65ffffffffffff83811691161490505f611237565b6112ae82611916565b611218565b606060206108c4938184526001600160401b038151168285015201519160408082015201906103a0565b919360a0936108c4969565ffffffffffff938552600180871b03166020850152604084015216606082015281608082015201906103a0565b92939060046020611332610aa0610aa05f5460018060a01b031690565b604051630ce9b79360e41b815292839182905afa9081156102e75761075b916113b0915f916113ff575b506001600160a01b03169361136f6107fe565b6001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152906020820152604051928391602083016112b3565b823b1561013a575f946113db86926040519889978896879563724ab0f760e11b8752600487016112dd565b03925af180156102e7576113ec5750565b806113f961080b926107ca565b806102fe565b611418915060203d6020116102e0576102d181836107dd565b5f61135c565b5f8054604051631c9e38c760e21b8152600481019390935265ffffffffffff9390931660248301529091602091839160449183916001600160a01b03165af180156102e75761146a5750565b6114829060203d60201161105f5761104b81836107dd565b50565b811561148f570490565b634e487b7160e01b5f52601260045260245ffd5b92905f549060ff8260a01c166114bb575b5050505050565b6040516313c085b760e11b815291602090839060049082906001600160a01b03165afa9182156102e7575f92611578575b5060405163065c1e0360e01b6020820190815260248201969096526001600160a01b039091166044820152606481019390935265ffffffffffff90911660848301526115458260a481015b03601f1981018452836107dd565b6202a15c5a10611566575f928380935192620249f0f1505f808080806114b4565b604051632153f33560e21b8152600490fd5b61154592506115986115379160203d6020116102e0576102d181836107dd565b92506114ec565b80548210156115b4575f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b8054806115fd57505f5b6001600160d01b038116156115f75760016115ed920161159f565b90549060031b1c90565b50505f90565b5f19908082810111610a5e57825f5260205f2001015460301c6115d2565b91909160408184031261013a57803561163381610129565b9260208201356001600160401b03811161013a576108c49201610835565b5190811515820361013a57565b9081602091031261013a576108c490611651565b61167e9181019061161b565b6040516302910f8b60e31b81526001600160a01b0392831660048201819052929160209182816024817f000000000000000000000000000000000000000000000000000000000000000088165afa9081156102e7575f916117ae575b501561179c578161170e6004926116ef611966565b5f80546001600160a01b0319166001600160a01b03891617905561199c565b94604051928380926313c085b760e11b82525afa9182156102e7575f9261177f575b5050161580611775575b611763575161080b9015155f805460ff60a01b191691151560a01b60ff60a01b16919091179055565b60405163d2420f5960e01b8152600490fd5b508051151561173a565b6117959250803d106102e0576102d181836107dd565b5f80611730565b6040516362df054560e01b8152600490fd5b6117ce9150833d85116117d4575b6117c681836107dd565b81019061165e565b5f6116da565b503d6117bc565b9081602091031261013a575163ffffffff8116810361013a5790565b90600163ffffffff80931601918211610a5e57565b918051156118da5780602080611827935183010191016117db565b916118328382611ab4565b92611843845165ffffffffffff1690565b9065ffffffffffff80851692168281146118ce5782119182611879575b5050611870576108c492506119e4565b50506020015190565b9091506118868354610ebe565b63ffffffff83161491821561189f575b50505f80611860565b6118c69192506118ba6118b4610adb926117f7565b85611ab4565b5165ffffffffffff1690565b115f80611896565b50505050506020015190565b506108c4916119e4565b65ffffffffffff908181116118f7571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b8054600160401b8110156107aa576119339160018201815561159f565b8154905f199060031b1b19169055565b90815491600160401b8310156107aa578261125791600161080b9501815561159f565b61196e611b8f565b611976611b8f565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5f6040516119a98161078f565b5260208180518101031261013a576020906040516119c68161078f565b6119de6040519384936119d88561078f565b01611651565b82525290565b908154905f829160058411611a4e575b6119ff935084611e74565b80611a2757505f905b6001600160d01b038216156115f7576108c49160016115ed920161159f565b611a41611a36611a4892610ebe565b835f5260205f200190565b5460301c90565b90611a08565b9192611a5981611d36565b8103908111610a5e576119ff93855f5265ffffffffffff808360205f20015416908516105f14611a8a5750916119f4565b929150611a969061119b565b906119f4565b60405190611aa9826107af565b5f6020838281520152565b90611add611ad7611afe92611ac7611a9c565b50611ad0611a9c565b508461159f565b50611b1c565b91600165ffffffffffff845116936020828060d01b0391015116910161159f565b90549060405192611b0e846107af565b835260031b1c602082015290565b90604051611b29816107af565b915465ffffffffffff8116835260301c6020830152565b805480611b515750505f905f905f90565b5f19908082810111610a5e57611b6e925f5260205f200101611b1c565b9065ffffffffffff82511691602060018060d01b0391015116906001929190565b60ff5f80516020611ed48339815191525460401c1615611bab57565b604051631afcd79f60e31b8152600490fd5b8054600160401b8110156107aa57611bda9160018201815561159f565b611c0457815160209092015160301b65ffffffffffff191665ffffffffffff909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b805492939291908215611d0d57611c38611c33611a3685610ebe565b611b1c565b90611c49825165ffffffffffff1690565b65ffffffffffff84811691168110611cfb57611cbf946020948892611c77610adb875165ffffffffffff1690565b03611cc35750611cb192611c8d611c9892610ebe565b905f5260205f200190565b9065ffffffffffff82549181199060301b169116179055565b01516001600160d01b031690565b9190565b915050611cf691611ce3611cd56107fe565b65ffffffffffff9093168352565b6001600160d01b03881682860152611bbd565b611cb1565b604051632520601d60e01b8152600490fd5b611d319250611d1d611cd56107fe565b6001600160d01b0385166020830152611bbd565b5f9190565b8015611e6f5780611e08611e01611df7611ded611de3611dd9611dcf611dc560016108c49a5f908b60801c80611e63575b508060401c80611e56575b508060201c80611e49575b508060101c80611e3c575b508060081c80611e2f575b508060041c80611e22575b508060021c80611e15575b50821c611e0e575b811c1b611dbe818b611485565b0160011c90565b611dbe818a611485565b611dbe8189611485565b611dbe8188611485565b611dbe8187611485565b611dbe8186611485565b611dbe8185611485565b8092611485565b90611109565b8101611db1565b600291509101905f611da9565b600491509101905f611d9e565b600891509101905f611d93565b601091509101905f611d88565b602091509101905f611d7d565b604091509101905f611d72565b9150506080905f611d67565b505f90565b91905b838210611e845750505090565b9091928083169080841860011c8201809211610a5e57845f5265ffffffffffff808360205f20015416908416105f14611ec15750925b9190611e77565b939250611ecd9061119b565b91611eba56fef0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220bead91c521e34513050434cea50d07f95784d3ccc2f6242d53243cdc1dd2f24e64736f6c634300081900336101603461017c576001600160401b0390601f61377c38819003918201601f1916830191848311848410176101805780849260209460405283398101031261017c5751906001600160a01b038216820361017c57306080527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff8260401c1661016a578080831603610125575b835f60a0525f60c0525f60e052610100905f8252610120905f8252610140908152604051916135e79384610195853960805184610b66015260a0518461047b015260c0518481816115860152612c5a015260e0518481816102e801526122ba0152518381816104370152612444015251828181610c7801526115dc015251818181610806015281816119140152611d090152f35b6001600160401b031990911681179091556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f8080610091565b60405163f92ee8a960e01b8152600490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c80622a087514610213578063103f29071461020e5780631a2be2c4146102095780631dd5f60014610204578063267de1f3146101ff5780632964f8dc146101fa5780632c9d45b3146101f55780632dd31000146101f057806331ce4dfe146101eb57806334d098ea146101e6578063439fab91146101e1578063457821b7146101dc5780635264679b146101d7578063545ce389146101d257806369f78920146101cd5780638f42f9ab146101c85780638f82f931146101c35780639168f9d2146101be5780639a896551146101b95780639f86fd85146101b4578063a4ef9b4f146101af578063aa8e6489146101aa578063aab3595f146101a5578063b94c386e146101a0578063bb24fe8a1461019b578063bc6eac5b14610196578063c0cd7c3e14610191578063cd05b8a11461018c578063d5c24e1a14610187578063e054e08b14610182578063f9268d181461017d5763fbfa77cf14610178575f80fd5b611813565b6116a5565b611680565b611663565b61160b565b6115c7565b6115aa565b611567565b61121b565b6111c3565b611185565b611122565b61108e565b611003565b610bd8565b610b47565b610b2a565b610ae5565b61084f565b610835565b6107f1565b6106b9565b610668565b6105ff565b610466565b610422565b610406565b6103b1565b610397565b610317565b6102d3565b610261565b6001600160a01b0381160361022957565b5f80fd5b65ffffffffffff81160361022957565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b346102295760c0366003190112610229576102c56102b160043561028481610218565b61028f602435610218565b60643561029b81610218565b60a435916102a88361022d565b604435906118c9565b60405191829160208352602083019061023d565b0390f35b5f91031261022957565b34610229575f366003190112610229576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461022957604036600319011261022957602061036361035e60243561033c81610218565b6004355f526002845260405f209060018060a01b03165f5260205260405f2090565b6120d2565b604051908152f35b60609060031901126102295760043561038381610218565b90602435906044356103948161022d565b90565b34610229576102c56102b16103ab3661036b565b916119a0565b3461022957604036600319011261022957602065ffffffffffff6103fc6024356103da81610218565b6004355f526001845260405f209060018060a01b03165f5260205260405f2090565b5416604051908152f35b34610229575f366003190112610229576020604051614e208152f35b34610229575f366003190112610229576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610229575f366003190112610229576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b634e487b7160e01b5f52604160045260245ffd5b602081019081106001600160401b038211176104d957604052565b6104aa565b604081019081106001600160401b038211176104d957604052565b606081019081106001600160401b038211176104d957604052565b6001600160401b0381116104d957604052565b608081019081106001600160401b038211176104d957604052565b90601f801991011681019081106001600160401b038211176104d957604052565b6040519060c082018281106001600160401b038211176104d957604052565b6040519061058f826104f9565b565b6040519061058f826104de565b6001600160401b0381116104d957601f01601f191660200190565b81601f82011215610229578035906105d08261059e565b926105de6040519485610542565b8284526020838301011161022957815f926020809301838601378301015290565b346102295760603660031901126102295760243561061c8161022d565b604435906001600160401b0382116102295761065f61064160209336906004016105b9565b6004355f90815260068552604090206001600160a01b03939061214a565b16604051908152f35b34610229575f36600319011261022957602060ff5f5460a01c166040519015158152f35b9181601f84011215610229578235916001600160401b038311610229576020838186019501011161022957565b34610229576020366003190112610229576001600160401b03600435818111610229576106ea90369060040161068c565b5f80516020613592833981519152549260ff8460401c16159316801590816107e9575b60011490816107df575b1590816107d6575b506107c4575f80516020613592833981519152805467ffffffffffffffff1916600117905561075291836107a057612283565b61075857005b5f80516020613592833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f80516020613592833981519152805460ff60401b1916600160401b179055612283565b60405163f92ee8a960e01b8152600490fd5b9050155f61071f565b303b159150610717565b84915061070d565b34610229575f366003190112610229576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610229576102c56102b16108493661036b565b91611a24565b346102295760a0366003190112610229576004602435813561087082610218565b6064359161087d8361022d565b6084356001600160401b0381116102295761089b903690860161068c565b93906108a56123ed565b6108ae8461241c565b6108b6611ab6565b9480610acf575b50506108c8426125ff565b6108e26108db875465ffffffffffff1690565b8092611b17565b5f54909590610907906108fb906001600160a01b031681565b6001600160a01b031690565b958760206040988951928380926327f843b560e11b82525afa8015610aca576109469261093b925f92610a99575b50611a0c565b65ffffffffffff1690565b65ffffffffffff8416908110908115610a83575b50610a735761096f61097891518486886127da565b506044356124b3565b958615610a65576102c5610a3e878988887f3cb7f4ff6cecf74cee0eb9ae3ebf8933fa60a53014cce52f96da72a78dba8464896109bd8a6109b8426125ff565b611b17565b92600354978894610a0e6109cf610563565b8881526001600160a01b0385166020820152808b018a905265ffffffffffff8616606082015265ffffffffffff831660808201525f60a0820152611b59565b885197885265ffffffffffff938416602089015290921660408701526001600160a01b0316949081906060820190565b0390a4610a5760015f8051602061357283398151915255565b519081529081906020820190565b855163167f871760e31b8152fd5b8551631357ac9160e11b81528790fd5b9050610a9161093b426125ff565b11155f61095a565b610abc91925060203d602011610ac3575b610ab48183610542565b810190611b31565b905f610935565b503d610aaa565b6118a5565b610add929550810190611ac9565b925f806108bd565b34610229576080366003190112610229576102c56102b1600435610b0881610218565b604435610b1481610218565b60643591610b218361022d565b60243590611c8f565b34610229575f366003190112610229576020600354604051908152f35b3461022957604036600319011261022957602435610b648161022d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610bc65763ffffffff610bb16040926004355f526006602052835f206124e9565b91505083929192519215158352166020820152f35b604051637ca475e560e11b8152600490fd5b346102295760603660031901126102295760048035906bffffffffffffffffffffffff8216820361022957602435610c0f81610218565b6044356001600160401b03811161022957610c2d903690840161068c565b90610c366123ed565b610c3e611ab6565b5081610f9e575b5050604080516302910f8b60e31b8152338185019081526001600160a01b0395929491602091829082908190830103818a7f0000000000000000000000000000000000000000000000000000000000000000165afa908115610aca575f91610f71575b5015610f62575f54610ce3906001600160a01b0316936bffffffffffffffffffffffff166bffffffffffffffffffffffff193360601b161790565b95610cfe610cf9885f52600660205260405f2090565b61323a565b50949015610ef857610d1261093b426125ff565b65ffffffffffff9586161115610ec257610d3c610d37895f52600660205260405f2090565b6125c0565b505b610d616108fb6108fb6108fb610d5c8c5f52600660205260405f2090565b612e78565b91808716928303610dcd575b505050505050610db2907f7b0b759b513b299fd2811f51926dca8854222a675557e8d544ce0933bf5b7570925b516001600160a01b0390911681529081906020820190565b0390a2610dcb60015f8051602061357283398151915255565b005b610de48998959796985f52600660205260405f2090565b911692845163186a323160e21b815281818981885afa908115610aca575f91610ea5575b5081600554958751998a80926327f843b560e11b82525afa908115610aca5789610e6d610e7f977f7b0b759b513b299fd2811f51926dca8854222a675557e8d544ce0933bf5b75709c610e7495610db29d610e79985f92610e88575b50501690611dde565b9116611dff565b6125ff565b90613447565b82958495610d6d565b610e9e9250803d10610ac357610ab48183610542565b5f80610e64565b610ebc9150823d8411610ac357610ab48183610542565b5f610e08565b610ee06108fb6108fb6108fb610d5c8c5f52600660205260405f2090565b82871603610d3e57865163a741a04560e01b81528490fd5b5093949385169250508115610f54575091610db291610f4d7f7b0b759b513b299fd2811f51926dca8854222a675557e8d544ce0933bf5b757094610f44875f52600660205260405f2090565b610e79426125ff565b5050610d9a565b825163a741a04560e01b8152fd5b5083516323d53b9760e21b8152fd5b610f919150823d8411610f97575b610f898183610542565b810190611dca565b5f610ca8565b503d610f7f565b610faa91810190611ac9565b505f80610c45565b634e487b7160e01b5f52603260045260245ffd5b600354811015610ffe5760035f5260021b7fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b01905f90565b610fb2565b34610229576020366003190112610229576004356003548110156102295761102a90610fc6565b50805460018201546002830154600390930154604080519384526001600160a01b0390921660208401529082019290925265ffffffffffff808316606080840191909152603084901c90911660808301529190911c60ff16151560a082015260c090f35b34610229576040366003190112610229576004356110ab81610218565b6024356001600160401b038111610229575f916110cd8392369060040161068c565b90816040519283928337810184815203915af461111a6110eb611e0c565b9161110c60405193849215156020840152604080840152606083019061023d565b03601f198101835282610542565b805190602001fd5b34610229576102c56102b16111363661036b565b91611e6d565b906080600319830112610229576004359160243561115981610218565b916044356111668161022d565b91606435906001600160401b03821161022957610394916004016105b9565b346102295760206103636111be61119b3661113c565b939190925f526002865260405f209060018060a01b03165f5260205260405f2090565b612665565b346102295760206111df6111d63661113c565b929190916127da565b50604051908152f35b9060406003198301126102295760043591602435906001600160401b038211610229576112179160040161068c565b9091565b3461022957611229366111e8565b91906112336123ed565b61123b611f92565b9280611551575b505060035481101561153f5761125781610fc6565b50908154906112658261241c565b6003830180549365ffffffffffff9384861660018060a01b0361128a895183856119b7565b16151580611514575b806114fb575b6114e9576112af816112aa426125ff565b611a0c565b5f546112c5906108fb906001600160a01b031681565b96600460206040998a51928380926327f843b560e11b82525afa8015610aca5782915f916114ca575b50169116116114b957600183018054909861131993929188906001600160a01b0316910151926127da565b906113288160028501546124b3565b9687156114a85760601c60ff166114975792611450611443899461141b6114088b9687876102c59f6114168f9d8f9e6114569f61137286600160601b60ff60601b19825416179055565b8a54855461139491906001600160a01b0316885465ffffffffffff1691612a0a565b8a5485546113ad9189916001600160a01b031690612a8a565b8a5494546113cb906001600160a01b0316965465ffffffffffff1690565b976113d4610582565b9384526020840152818301525196879160208301919091604080606083019480518452602081015160208501520151910152565b03601f198101875286610542565b612bf6565b61143461142e855465ffffffffffff1690565b86612cff565b5494546001600160a01b031690565b915465ffffffffffff1690565b92612d7c565b81518381527f5cc28df3b54da9d06f805d87616ebf969c81310f2aa8369cb14ca50f815d411190602090a2610a5760015f8051602061357283398151915255565b8551633428e90760e01b8152600490fd5b865163167f871760e31b8152600490fd5b8551639ea153eb60e01b8152600490fd5b6114e3915060203d602011610ac357610ab48183610542565b5f6112ee565b60405163b62b15c760e01b8152600490fd5b5061150861093b426125ff565b868860301c1611611299565b506115386108fb61152c611527426125ff565b6119f0565b60208b015190856119b7565b1515611293565b604051637822972360e11b8152600490fd5b61155f929350810190611fb1565b905f80611242565b34610229575f3660031901126102295760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610229575f366003190112610229576020600554604051908152f35b34610229575f366003190112610229576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610229576040366003190112610229576024356001600160401b0381116102295761165161164060209236906004016105b9565b611649426125ff565b6004356119b7565b6040516001600160a01b039091168152f35b34610229575f366003190112610229576020604051620249f08152f35b34610229575f36600319011261022957602065ffffffffffff60045416604051908152f35b34610229576116b3366111e8565b906116bc6123ed565b6116c4612039565b91806117ff575b505060035482101561153f576116e082610fc6565b506003815491019182549165ffffffffffff9160018060a01b036117088251858716856119b7565b169182159182156117d6575b50506117c45733036117b25761172c61093b426125ff565b908260301c1611156117a15760601c60ff1661178f57805460ff60601b1916600160601b17905533907f7d3d269c851b72257a5194a401d151902e9be4347d555996dcff3ff86a077e925f80a3610dcb60015f8051602061357283398151915255565b604051633428e90760e01b8152600490fd5b60405162c457e560e81b8152600490fd5b604051635d154fe160e11b8152600490fd5b60405163dd1ebd9d60e01b8152600490fd5b6117f79250906108fb9160206117ee611527426125ff565b910151916119b7565b155f80611714565b61180c9250810190612052565b5f806116cb565b34610229575f366003190112610229575f546040516001600160a01b039091168152602090f35b81601f82011215610229578051906118518261059e565b9261185f6040519485610542565b8284526020838301011161022957815f9260208093018386015e8301015290565b906020828203126102295781516001600160401b03811161022957610394920161183a565b6040513d5f823e3d90fd5b604061039492602083525191602080820152019061023d565b604051632751749360e11b81526001600160a01b0391821660048201526024810192909252909116604482015265ffffffffffff9091166064820152606091905f81806084810103817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610aca575f9161197e575b5080516119565750565b61110c919250610394906040519061196d826104be565b8152604051928391602083016118b0565b61199a91503d805f833e6119928183610542565b810190611880565b5f61194c565b92916119ae91606094611e6d565b80516119565750565b5f9081526006602052604090206001600160a01b03926119d892909161214a565b1690565b634e487b7160e01b5f52601160045260245ffd5b65ffffffffffff9081165f190191908211611a0757565b6119dc565b65ffffffffffff9182169082160391908211611a0757565b611a4590939293611a386060958483611e6d565b92611136611527426125ff565b815115801590611aac575b611a58575050565b611a999293509061110c6103949260405192611a73846104de565b83526020830190815260405194859360208086015251604080860152608085019061023d565b9051838203603f1901606085015261023d565b5080511515611a50565b60405190611ac3826104be565b60608252565b906020828203126102295781356001600160401b03928382116102295701906020828203126102295760405192611aff846104be565b823590811161022957611b1292016105b9565b815290565b91909165ffffffffffff80809416911601918211611a0757565b9081602091031261022957516103948161022d565b634e487b7160e01b5f525f60045260245ffd5b600354600160401b8110156104d957806001611b789201600355610fc6565b919091611c3b578051825560208101516001830180546001600160a01b0319166001600160a01b039290921691909117905561058f91611c219060a090600390604085015160028201550192611bee65ffffffffffff606083015116859065ffffffffffff1665ffffffffffff19825416179055565b60808101516bffffffffffff00000000000085549160301b16906bffffffffffff00000000000019161784550151151590565b815460ff60601b191690151560601b60ff60601b16179055565b611b46565b906103949160208152611c5f825160606020840152608083019061023d565b9060606040611c7f602086015194601f199586868303018487015261023d565b940151928285030191015261023d565b919093925f606095611ca2838287611e6d565b94611d05611cbc611cb5611527426125ff565b8484611e6d565b604051632751749360e11b81526001600160a01b039384166004820152602481019490945291909516604483015265ffffffffffff909316606482015292839081906084820190565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa918215610aca575f92611da1575b50825115801590611d97575b8015611d8d575b611d5d57505050565b61110c939450906103949291611d71610582565b9283526020830152604082015260405192839160208301611c40565b5081511515611d54565b5080511515611d4d565b611db69192503d805f833e6119928183610542565b905f611d41565b5190811515820361022957565b908160209103126102295761039490611dbd565b81810292918115918404141715611a0757565b9060018201809211611a0757565b91908201809211611a0757565b3d15611e36573d90611e1d8261059e565b91611e2b6040519384610542565b82523d5f602084013e565b606090565b519063ffffffff8216820361022957565b9190826040910312610229576103946020611e6684611dbd565b9301611e3b565b92915f8060609565ffffffffffff60405194602096638f82f93160e01b88880152602487015216604485015260448452611ea684610527565b6040519384611ed387820192639f86fd8560e01b845230602484015260406044840152606483019061023d565b0394611ee7601f1996878101835282610542565b51915afa50611f05611ef7611e0c565b838082518301019101612631565b9015611f5857808380611f1d93518301019101611e4c565b9290611f2857505050565b61039492939450611f4c604051948592830191909163ffffffff6020820193169052565b03908101835282610542565b809150519182156102295701fd5b5f9081526002602090815260408083206001600160a01b03909416835292905220610394929190612665565b60405190611f9f826104f9565b60606040838281528260208201520152565b906020828203126102295781356001600160401b03928382116102295701906060828203126102295760405192611fe7846104f9565b82358181116102295782611ffc9185016105b9565b8452602083013581811161022957826120169185016105b9565b602085015260408301359081116102295761203192016105b9565b604082015290565b60405190612046826104de565b60606020838281520152565b906020828203126102295781356001600160401b03928382116102295701906040828203126102295760405192612088846104de565b8235818111610229578261209d9185016105b9565b84526020830135908111610229576120b592016105b9565b602082015290565b8054821015610ffe575f5260205f2001905f90565b6120db81612e78565b6001600160d01b038116156121005760016120f692016120bd565b90549060031b1c90565b50505f90565b908160209103126102295761039490611e3b565b5f19810191908211611a0757565b91908203918211611a0757565b90600163ffffffff80931601918211611a0757565b9180511561222e578060208061216593518301019101612106565b916121708382612eb8565b92612181845165ffffffffffff1690565b9065ffffffffffff808516921682811461221557821191826121c0575b50506121ae576103949250613346565b5050602001516001600160d01b031690565b9091506121cd835461211a565b63ffffffff8316149182156121e6575b50505f8061219e565b61220d9192506122016121fb61093b92612135565b85612eb8565b5165ffffffffffff1690565b115f806121dd565b50505050602091909101516001600160d01b0316905090565b5061039491613346565b91909160408184031261022957803561225081610218565b9260208201356001600160401b0381116102295761039492016105b9565b90816020910312610229575161039481610218565b61228f91810190612238565b6040516302910f8b60e31b81526001600160a01b0392831660048201819052929160209182816024817f000000000000000000000000000000000000000000000000000000000000000088165afa908115610aca575f916123d0575b50156123be5781612320600492612300612f0c565b5f80546001600160a01b0319166001600160a01b03891617905586612f99565b94604051928380926313c085b760e11b82525afa918215610aca575f92612391575b5050161580612387575b612375575161058f9015155f805460ff60a01b191691151560a01b60ff60a01b16919091179055565b60405163d2420f5960e01b8152600490fd5b508051151561234c565b6123b09250803d106123b7575b6123a88183610542565b81019061226e565b5f80612342565b503d61239e565b6040516362df054560e01b8152600490fd5b6123e79150833d8511610f9757610f898183610542565b5f6122eb565b5f80516020613572833981519152600281541461240a5760029055565b604051633ee5aeb560e01b8152600490fd5b604051635daf681960e11b815260609190911c60048201526001600160a01b036020826024817f000000000000000000000000000000000000000000000000000000000000000085165afa918215610aca575f92612492575b503391160361248057565b60405163227bf64d60e01b8152600490fd5b6124ac91925060203d6020116123b7576123a88183610542565b905f612475565b90808210156124c0575090565b905090565b906040516124d2816104de565b915465ffffffffffff8116835260301c6020830152565b908154905f829160058411612572575b6125049350846131d8565b90811561256657612525906125188361211a565b905f5260205f20016124c5565b9161255f6125566125506020612541875165ffffffffffff1690565b9601516001600160d01b031690565b9361211a565b63ffffffff1690565b6001939291565b50505f905f905f905f90565b919261257d8161309a565b8103908111611a075761250493855f5265ffffffffffff808360205f20015416908516105f146125ae5750916124f9565b9291506125ba90611df1565b906124f9565b906125ca82612e78565b91805480156125eb575f1901906125e182826120bd565b611c3b575f905555565b634e487b7160e01b5f52603160045260245ffd5b65ffffffffffff90818111612612571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b9190916040818403126102295761264781611dbd565b9260208201516001600160401b03811161022957610394920161183a565b91805115612727578060208061268093518301019101612106565b9161268b8382613294565b9261269c845165ffffffffffff1690565b9065ffffffffffff808516921682811461271b57821191826126d2575b50506126c9576103949250613289565b50506020015190565b9091506126df835461211a565b63ffffffff8316149182156126f8575b50505f806126b9565b61271391925061220161270d61093b92612135565b85613294565b115f806126ef565b50505050506020015190565b5061039491613289565b906020828203126102295781516001600160401b03928382116102295701906040828203126102295760405192612767846104de565b8251818111610229578261277c91850161183a565b84526020830151908111610229576120b5920161183a565b90816020910312610229575190565b9081526001600160a01b03909116602082015265ffffffffffff90911660408201526080606082018190526103949291019061023d565b926127e3612039565b908051806129f0575b50506127f7426125ff565b5f54909490612810906108fb906001600160a01b031681565b93604051956327f843b560e11b875260209687816004818a5afa8015610aca576128449261093b925f926129d85750611a0c565b65ffffffffffff82169081109081156129c1575b8115612990575b50612984578560049560405196878092630ce9b79360e41b82525afa948515610aca576128b19587915f91612967575b50845190604051808099819463e02f693760e01b8352878b8a600486016127a3565b03916001600160a01b03165afa938415610aca57612923955f95612926575b5092612918859361291e9361291896869a61290f61035e836128fa875f52600260205260405f2090565b9060018060a01b03165f5260205260405f2090565b95015192611f66565b90612128565b6124b3565b91565b61291e929550612918949193612954612918928a3d8c11612960575b61294c8183610542565b810190612794565b969350939194506128d0565b503d612942565b61297e9150823d84116123b7576123a88183610542565b5f61288f565b5050505050505f905f90565b90506129ba61093b6129ae876128fa875f52600160205260405f2090565b5465ffffffffffff1690565b115f61285f565b90506129cf61093b426125ff565b81101590612858565b610abc9192508a3d8c11610ac357610ab48183610542565b612a039250602080918301019101612731565b5f806127ec565b919091805f52600160205265ffffffffffff80612a3a8560405f209060018060a01b03165f5260205260405f2090565b541690831611612a4957505050565b61058f92612a71915f52600160205260405f209060018060a01b03165f5260205260405f2090565b9065ffffffffffff1665ffffffffffff19825416179055565b9190825f526002602052612ae261035e612ab78360405f209060018060a01b03165f5260205260405f2090565b92612ac1426125ff565b955f52600260205260405f209060018060a01b03165f5260205260405f2090565b918201809211611a07576001810190815415612b86575b612b028161323a565b509490835495612b11846120d2565b5081612b71575b5015612b505750505f198301928311611a075761058f92612b38916120bd565b90919082549060031b91821b915f19901b1916179055565b61058f94612b6a926001600160d01b039091169190613447565b5050613323565b65ffffffffffff83811691161490505f612b18565b612b8f826132f6565b612af9565b60606020610394938184526001600160401b0381511682850152015191604080820152019061023d565b919360a093610394969565ffffffffffff938552600180871b031660208501526040840152166060820152816080820152019061023d565b92939060046020612c136108fb6108fb5f5460018060a01b031690565b604051630ce9b79360e41b815292839182905afa908115610aca5761110c91612c91915f91612ce0575b506001600160a01b031693612c50610591565b6001600160401b037f000000000000000000000000000000000000000000000000000000000000000016815290602082015260405192839160208301612b94565b823b15610229575f94612cbc86926040519889978896879563724ab0f760e11b875260048701612bbe565b03925af18015610aca57612ccd5750565b80612cda61058f92610514565b806102c9565b612cf9915060203d6020116123b7576123a88183610542565b5f612c3d565b65ffffffffffff9160446020925f60018060a01b038154166040519687958694631c9e38c760e21b865260048601521660248401525af18015610aca57612d435750565b612d5b9060203d6020116129605761294c8183610542565b50565b8115612d68570490565b634e487b7160e01b5f52601260045260245ffd5b92905f549060ff8260a01c16612d94575b5050505050565b6040516313c085b760e11b815291602090839060049082906001600160a01b03165afa918215610aca575f92612e51575b5060405163065c1e0360e01b6020820190815260248201969096526001600160a01b039091166044820152606481019390935265ffffffffffff9091166084830152612e1e8260a481015b03601f198101845283610542565b6202a15c5a10612e3f575f928380935192620249f0f1505f80808080612d8d565b604051632153f33560e21b8152600490fd5b612e1e9250612e71612e109160203d6020116123b7576123a88183610542565b9250612dc5565b805480612e855750505f90565b5f19918183810111611a07575f5260205f2001015460301c90565b60405190612ead826104de565b5f6020838281520152565b612edd91612ed791612ec8612ea0565b50612ed1612ea0565b506120bd565b506124c5565b65ffffffffffff81511690602060018060d01b039101511660405191612f02836104de565b8252602082015290565b612f146133d2565b612f1c6133d2565b60015f8051602061357283398151915255565b60405190612f3c826104be565b5f8252565b809103906060821261022957602060405192612f5c846104f9565b12610229576040908151612f6f816104be565b612f7882611dbd565b815283526020810151612f8a8161022d565b60208401520151604082015290565b90600490612fa5612f2f565b508051612fbc602092838080948301019101612f41565b6040516327f843b560e11b815290949093849182906001600160a01b03165afa918215610aca575f9261307b575b50820190612ffe825165ffffffffffff1690565b65ffffffffffff91821691161015613069576040820160038151106130575761304d613033613053935165ffffffffffff1690565b65ffffffffffff1665ffffffffffff196004541617600455565b51600555565b5190565b6040516354f778f360e01b8152600490fd5b6040516367d5e3df60e11b8152600490fd5b816130939293503d8411610ac357610ab48183610542565b905f612fea565b80156131d3578061316c61316561315b61315161314761313d61313361312960016103949a5f908b60801c806131c7575b508060401c806131ba575b508060201c806131ad575b508060101c806131a0575b508060081c80613193575b508060041c80613186575b508060021c80613179575b50821c613172575b811c1b613122818b612d5e565b0160011c90565b613122818a612d5e565b6131228189612d5e565b6131228188612d5e565b6131228187612d5e565b6131228186612d5e565b6131228185612d5e565b8092612d5e565b906124b3565b8101613115565b600291509101905f61310d565b600491509101905f613102565b600891509101905f6130f7565b601091509101905f6130ec565b602091509101905f6130e1565b604091509101905f6130d6565b9150506080905f6130cb565b505f90565b91905b8382106131e85750505090565b909192808316906001818518811c8301809311611a0757855f5265ffffffffffff808460205f20015416908516105f14613227575050925b91906131db565b909493508101809111611a075791613220565b80548061324b5750505f905f905f90565b5f19908082810111611a0757613268925f5260205f2001016124c5565b9065ffffffffffff82511691602060018060d01b0391015116906001929190565b906120db9082613346565b906132b7612ed76132d8926132a7612ea0565b506132b0612ea0565b50846120bd565b91600165ffffffffffff845116936020828060d01b039101511691016120bd565b905490604051926132e8846104de565b835260031b1c602082015290565b8054600160401b8110156104d957613313916001820181556120bd565b8154905f199060031b1b19169055565b90815491600160401b8310156104d95782612b3891600161058f950181556120bd565b908154905f829160058411613384575b6133619350846131d8565b8061336c5750505f90565b6133759061211a565b905f5260205f20015460301c90565b919261338f8161309a565b8103908111611a075761336193855f5265ffffffffffff808360205f20015416908516105f146133c0575091613356565b9291506133cc90611df1565b90613356565b60ff5f805160206135928339815191525460401c16156133ee57565b604051631afcd79f60e31b8152600490fd5b8054600160401b8110156104d95761341d916001820181556120bd565b611c3b57815160209092015160301b65ffffffffffff191665ffffffffffff909216919091179055565b8054929392919082156135485761347361346e6134638561211a565b835f5260205f200190565b6124c5565b90613484825165ffffffffffff1690565b65ffffffffffff84811691168110613536576134fa9460209488926134b261093b875165ffffffffffff1690565b036134fe57506134ec926134c86134d39261211a565b905f5260205f200190565b9065ffffffffffff82549181199060301b169116179055565b01516001600160d01b031690565b9190565b9150506135319161351e613510610591565b65ffffffffffff9093168352565b6001600160d01b03881682860152613400565b6134ec565b604051632520601d60e01b8152600490fd5b61356c9250613558613510610591565b6001600160d01b0385166020830152613400565b5f919056fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a264697066735822122076922ea6e3ad8fc57d79a3decbb6a526695968650fb8ee8d88110f7794fd659264736f6c63430008190033","sourceMap":"624:2139:84:-:0;;;;;;;;;;;;;-1:-1:-1;;624:2139:84;;;;-1:-1:-1;;;;;624:2139:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;624:2139:84;;;;;;;;348:4:82;332:21;;8837:64:25;624:2139:84;;;;;;;7896:76:25;;624:2139:84;;;;;;7985:34:25;7981:146;;-1:-1:-1;525:17:69;;;-1:-1:-1;525:17:69;;-1:-1:-1;552:12:69;;-1:-1:-1;2353:28:92;;2391:53;;-1:-1:-1;2391:53:92;;987:41:84;;;;624:2139;;1062:31;;;;;;;;;;;;;;624:2139;1062:31;;;;;;348:4:82;624:2139:84;;1062:31;;;-1:-1:-1;1062:31:84;;;;;;1038:56;;624:2139;;1038:56;;624:2139;;1133:35;;;;;;;;;;;;;;;624:2139;1133:35;;;;;;348:4:82;624:2139:84;;1133:35;;;-1:-1:-1;1133:35:84;;;;;;1104:65;624:2139;;1104:65;;624:2139;;;;;;;;332:21:82;624:2139:84;;;;;525:17:69;624:2139:84;;;;;552:12:69;624:2139:84;;;;;2353:28:92;624:2139:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1133:35;624:2139;;;-1:-1:-1;624:2139:84;;;;;1133:35;624:2139;;;-1:-1:-1;624:2139:84;;;;;-1:-1:-1;624:2139:84;7981:146:25;-1:-1:-1;;;;;;624:2139:84;;;;;;;;;8087:29:25;;624:2139:84;;8087:29:25;7981:146;;;;;7896:76;624:2139:84;;-1:-1:-1;;;7938:23:25;;;;;624:2139:84;-1:-1:-1;624:2139:84;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c8063103f2907146101545780631a2be2c41461014f578063267de1f31461014a5780632964f8dc146101455780632c9d45b3146101405780632dd310001461013b57806334d098ea14610136578063439fab91146101315780634a7196551461012c5780634ea2e926146101275780634eb5a242146101225780636565b7db1461011d578063770280461461011857806379d89614146101135780639f86fd851461010e578063aa8e648914610109578063aab3595f14610104578063bb24fe8a146100ff578063d5c24e1a146100fa5763fbfa77cf146100f5575f80fd5b61094a565b61092d565b6108ea565b6108c5565b610887565b6106ca565b610686565b6105cf565b61058b565b610547565b61052a565b6104f5565b61034b565b6102fa565b6102b6565b610272565b610256565b610201565b6101ad565b34610198575f366003190112610198576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5f80fd5b6001600160a01b0381160361019857565b346101985760403660031901126101985760206101f96101f46024356101d28161019c565b6004355f526002845260405f209060018060a01b03165f5260205260405f2090565b610daa565b604051908152f35b3461019857604036600319011261019857602065ffffffffffff61024c60243561022a8161019c565b6004355f526001845260405f209060018060a01b03165f5260205260405f2090565b5416604051908152f35b34610198575f366003190112610198576020604051614e208152f35b34610198575f366003190112610198576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610198575f366003190112610198576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610198575f36600319011261019857602060ff5f5460a01c166040519015158152f35b9181601f84011215610198578235916001600160401b038311610198576020838186019501011161019857565b34610198576020366003190112610198576001600160401b036004358181116101985761037c90369060040161031e565b5f805160206119bd833981519152549260ff8460401c1615931680159081610480575b6001149081610476575b15908161046d575b5061045b575f805160206119bd833981519152805467ffffffffffffffff191660011790556103e4918361043257610e4c565b6103ea57005b5f805160206119bd833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f805160206119bd833981519152805460ff60401b191668010000000000000000179055610e4c565b60405163f92ee8a960e01b8152600490fd5b9050155f6103b1565b303b1591506103a9565b84915061039f565b65ffffffffffff81160361019857565b6080906003190112610198576004356104b08161019c565b90602435906044356104c18161019c565b906064356104ce81610488565b90565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b346101985761052661051261050936610498565b929190916109b0565b6040519182916020835260208301906104d1565b0390f35b346101985761052661051261053e36610498565b92919091610b7b565b34610198575f366003190112610198576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610198575f366003190112610198576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610198576060366003190112610198576024356105ec8161019c565b6044356105f881610488565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361067457610652610657926004355f52600260205260405f209060018060a01b03165f5260205260405f2090565b61104a565b60408051941515855263ffffffff91909116602085015292915050f35b604051637ca475e560e11b8152600490fd5b34610198575f366003190112610198576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610198576040366003190112610198576004356106e78161019c565b6024356001600160401b038111610198575f916107098392369060040161031e565b90816040519283928337810184815203915af4610756610727610d26565b916107486040519384921515602084015260408084015260608301906104d1565b03601f1981018352826107ad565b805190602001fd5b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b0382111761078d57604052565b61075e565b60a081019081106001600160401b0382111761078d57604052565b90601f801991011681019081106001600160401b0382111761078d57604052565b604051906107db82610772565b565b6001600160401b03811161078d57601f01601f191660200190565b81601f820112156101985780359061080f826107dd565b9261081d60405194856107ad565b8284526020838301011161019857815f926020809301838601378301015290565b906080600319830112610198576004359160243561085b8161019c565b9160443561086881610488565b91606435906001600160401b038211610198576104ce916004016107f8565b346101985760206101f96108c061089d3661083e565b939190925f526002865260405f209060018060a01b03165f5260205260405f2090565b611178565b346101985760206108e16108d83661083e565b92919091611347565b50604051908152f35b34610198575f3660031901126101985760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610198575f366003190112610198576020604051620249f08152f35b34610198575f366003190112610198575f546040516001600160a01b039091168152602090f35b5190811515820361019857565b519063ffffffff8216820361019857565b9190826040910312610198576104ce60206109a984610971565b930161097e565b5f809195949593929365ffffffffffff60609760405195602097633b81402360e11b89890152602488015260018060a01b03166044870152166064850152606484526109fb84610792565b6040519384610a2887820192639f86fd8560e01b84523060248401526040604484015260648301906104d1565b0394610a3c601f19968781018352826107ad565b51915afa50610a5a610a4c610d26565b838082518301019101610fb5565b9015610aad57808380610a729351830101910161098f565b9290610a7d57505050565b6104ce92939450610aa1604051948592830191909163ffffffff6020820193169052565b039081018352826107ad565b809150519182156101985701fd5b9081602091031261019857516104ce8161019c565b6040513d5f823e3d90fd5b81601f8201121561019857805190610af2826107dd565b92610b0060405194856107ad565b8284526020838301011161019857815f9260208093018386015e8301015290565b906020828203126101985781516001600160401b038111610198576104ce9201610adb565b906104ce91602081526020610b66835160408385015260608401906104d1565b920151906040601f19828503019101526104d1565b60405163fbfa77cf60e01b815260609594919391926020926001600160a01b03929091908481600481878b165afa908115610cd757849186915f91610d09575b50600460405180948193630ce9b79360e41b8352165afa8015610cd75786948385925f948591610cdc575b506040516304bb92e160e31b81526001600160a01b039182166004820152602481019290925292909216604483015265ffffffffffff97909716606482015295869060849082907f0000000000000000000000000000000000000000000000000000000000000000165afa948515610cd7575f95610caf575b50610c6b9394956109b0565b825115801590610ca5575b610c7f57505050565b6104ce92939450610c8e6107ce565b938452818401526107486040519384928301610b46565b5080511515610c76565b610c6b949550610cd0903d805f833e610cc881836107ad565b810190610b21565b9493610c5f565b610ad0565b610cfc9150893d8b11610d02575b610cf481836107ad565b810190610abb565b5f610be6565b503d610cea565b610d209150823d8411610d0257610cf481836107ad565b5f610bbb565b3d15610d50573d90610d37826107dd565b91610d4560405193846107ad565b82523d5f602084013e565b606090565b5f9081526002602090815260408083206001600160a01b039094168352929052206104ce929190611178565b8054821015610d96575f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b805480610ddf57505f5b6001600160d01b03811615610dd9576001610dcf9201610d81565b90549060031b1c90565b50505f90565b5f19908082810111610dfd57825f5260205f2001015460301c610db4565b610fe9565b919091604081840312610198578035610e1a8161019c565b9260208201356001600160401b038111610198576104ce92016107f8565b90816020910312610198576104ce90610971565b610e5891810190610e02565b506040516302910f8b60e31b81526001600160a01b0391821660048201819052919060209081816024817f000000000000000000000000000000000000000000000000000000000000000087165afa908115610cd7575f91610f88575b5015610f7657610ec361159b565b5f80546001600160a01b0319166001600160a01b038516179055600481610ee86115d1565b94604051928380926313c085b760e11b82525afa918215610cd7575f92610f59575b5050161580610f4f575b610f3d57516107db9015155f805460ff60a01b191691151560a01b60ff60a01b16919091179055565b60405163d2420f5960e01b8152600490fd5b5080511515610f14565b610f6f9250803d10610d0257610cf481836107ad565b5f80610f0a565b6040516362df054560e01b8152600490fd5b610fa89150823d8411610fae575b610fa081836107ad565b810190610e38565b5f610eb5565b503d610f96565b91909160408184031261019857610fcb81610971565b9260208201516001600160401b038111610198576104ce9201610adb565b634e487b7160e01b5f52601160045260245ffd5b5f19810191908211610dfd57565b91908203918211610dfd57565b9060018201809211610dfd57565b9060405161103381610772565b915465ffffffffffff8116835260301c6020830152565b91908254905f8291600584116110e8575b61106693508561174f565b9081156110dc576110d56110cc6110c6610dcf61109861109361108888610ffd565b895f5260205f200190565b611026565b9660016110bf60206110b08b5165ffffffffffff1690565b9a01516001600160d01b031690565b9101610d81565b93610ffd565b63ffffffff1690565b6001939291565b5f925082915081908190565b91926110f381611611565b8103908111610dfd5761106693865f5261112761111c8360205f200165ffffffffffff90541690565b65ffffffffffff1690565b65ffffffffffff8516101561113d57509161105b565b92915061114990611018565b9061105b565b90816020910312610198576104ce9061097e565b90600163ffffffff80931601918211610dfd57565b9180511561124657806020806111939351830101910161114f565b9161119e8382611876565b926111af845165ffffffffffff1690565b9065ffffffffffff808516921682811461123a57821191826111e5575b50506111dc576104ce92506117a6565b50506020015190565b9091506111f28354610ffd565b63ffffffff83161491821561120b575b50505f806111cc565b61123291925061122661122061111c92611163565b85611876565b5165ffffffffffff1690565b115f80611202565b50505050506020015190565b506104ce916117a6565b6040519061125d82610772565b60606020838281520152565b906020828203126101985781516001600160401b0392838211610198570190604082820312610198576040519261129f84610772565b825181811161019857826112b4918501610adb565b84526020830151908111610198576112cc9201610adb565b602082015290565b9081602091031261019857516104ce81610488565b65ffffffffffff9182169082160391908211610dfd57565b90816020910312610198575190565b9081526001600160a01b03909116602082015265ffffffffffff90911660408201526080606082018190526104ce929101906104d1565b92611350611250565b90805180611581575b505061136442611933565b5f549094906113899061137d906001600160a01b031681565b6001600160a01b031690565b93604051956327f843b560e11b875260209687816004818a5afa8015610cd7576113be9261111c925f92611552575b506112e9565b65ffffffffffff821690811090811561153b575b811561150a575b506114fe578560049560405196878092630ce9b79360e41b82525afa948515610cd75761142b9587915f916114e1575b50845190604051808099819463e02f693760e01b8352878b8a60048601611310565b03916001600160a01b03165afa938415610cd75761149d955f956114a0575b509261149285936114989361149296869a6114896101f483611474875f52600260205260405f2090565b9060018060a01b03165f5260205260405f2090565b95015192610d55565b9061100b565b6118de565b91565b6114989295506114929491936114ce611492928a3d8c116114da575b6114c681836107ad565b810190611301565b9693509391945061144a565b503d6114bc565b6114f89150823d8411610d0257610cf481836107ad565b5f611409565b5050505050505f905f90565b905061153461111c61152887611474875f52600160205260405f2090565b5465ffffffffffff1690565b115f6113d9565b905061154961111c42611933565b811015906113d2565b6115739192508a3d8c1161157a575b61156b81836107ad565b8101906112d4565b905f6113b8565b503d611561565b6115949250602080918301019101611269565b5f80611359565b6115a36118f0565b6115ab6118f0565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60405190602082018281106001600160401b0382111761078d576040525f8252565b81156115fd570490565b634e487b7160e01b5f52601260045260245ffd5b801561174a57806116e36116dc6116d26116c86116be6116b46116aa6116a060016104ce9a5f908b60801c8061173e575b508060401c80611731575b508060201c80611724575b508060101c80611717575b508060081c8061170a575b508060041c806116fd575b508060021c806116f0575b50821c6116e9575b811c1b611699818b6115f3565b0160011c90565b611699818a6115f3565b61169981896115f3565b61169981886115f3565b61169981876115f3565b61169981866115f3565b61169981856115f3565b80926115f3565b906118de565b810161168c565b600291509101905f611684565b600491509101905f611679565b600891509101905f61166e565b601091509101905f611663565b602091509101905f611658565b604091509101905f61164d565b9150506080905f611642565b505f90565b905b83831061175e5750505090565b90919261176b818561191e565b90835f5265ffffffffffff808360205f20015416908416105f146117935750925b9190611751565b9350600181018091111561178c57610fe9565b908154905f829160058411611810575b6117c1935084611965565b806117e957505f905b6001600160d01b03821615610dd9576104ce916001610dcf9201610d81565b6118036117f861180a92610ffd565b835f5260205f200190565b5460301c90565b906117ca565b919261181b81611611565b8103908111610dfd576117c193855f5265ffffffffffff808360205f20015416908516105f1461184c5750916117b6565b92915061185890611018565b906117b6565b6040519061186b82610772565b5f6020838281520152565b9061189f6118996118c09261188961185e565b5061189261185e565b5084610d81565b50611026565b91600165ffffffffffff845116936020828060d01b03910151169101610d81565b905490604051926118d084610772565b835260031b1c602082015290565b90808210156118eb575090565b905090565b60ff5f805160206119bd8339815191525460401c161561190c57565b604051631afcd79f60e31b8152600490fd5b90808216911860011c8101809111610dfd5790565b65ffffffffffff90818111611946571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b905b8383106119745750505090565b909192611981818561191e565b90835f5265ffffffffffff808360205f20015416908416105f146119a95750925b9190611967565b935060018101809111156119a257610fe956fef0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212204516407e2adc4ef10f928db601f32a60d5944a2a517c00968a39e5541843a63a64736f6c63430008190033","sourceMap":"624:2139:84:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;-1:-1:-1;;624:2139:84;;;;;;1435:38:92;-1:-1:-1;;;;;624:2139:84;;;;;;;;;;;-1:-1:-1;;;;;624:2139:84;;;;;:::o;:::-;;;;;;-1:-1:-1;;624:2139:84;;;;;2936:47:92;:38;624:2139:84;;;;;:::i;:::-;;;-1:-1:-1;624:2139:84;2936:16:92;624:2139:84;;;-1:-1:-1;624:2139:84;;;;;;;;;;;;;;;;;2936:38:92;:47;:::i;:::-;624:2139:84;;;;;;;;;;;;-1:-1:-1;;624:2139:84;;;;;;1788:109:92;624:2139:84;;;;;:::i;:::-;;;-1:-1:-1;624:2139:84;1788:109:92;624:2139:84;;;-1:-1:-1;624:2139:84;;;;;;;;;;;;;;;;;1788:109:92;624:2139:84;;;;;;;;;;;;;;-1:-1:-1;;624:2139:84;;;;;;;1374:6:92;624:2139:84;;;;;;;;;-1:-1:-1;;624:2139:84;;;;;;1528:51:92;-1:-1:-1;;;;;624:2139:84;;;;;;;;;;;;-1:-1:-1;;624:2139:84;;;;;;322:32:69;-1:-1:-1;;;;;624:2139:84;;;;;;;;;;;;-1:-1:-1;;624:2139:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;624:2139:84;;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;624:2139:84;;;;-1:-1:-1;;;;;624:2139:84;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;624:2139:84;;;;;;;4301:16:25;624:2139:84;;4726:16:25;;:34;;;;624:2139:84;4805:1:25;4790:16;:50;;;;624:2139:84;4855:13:25;:30;;;;624:2139:84;4851:91:25;;;-1:-1:-1;;;;;;;;;;;624:2139:84;;-1:-1:-1;;624:2139:84;;;;;718:4:69;;4951:18:25;4979:67;;718:4:69;:::i;:::-;5066:101:25;;624:2139:84;5066:101:25;-1:-1:-1;;;;;;;;;;;624:2139:84;;-1:-1:-1;;;;624:2139:84;;;;;-1:-1:-1;624:2139:84;;5142:14:25;;624:2139:84;;5142:14:25;624:2139:84;4979:67:25;-1:-1:-1;;;;;;;;;;;624:2139:84;;-1:-1:-1;;;;624:2139:84;;;;;718:4:69;:::i;4851:91:25:-;624:2139:84;;-1:-1:-1;;;4908:23:25;;624:2139:84;;4908:23:25;4855:30;4872:13;;;4855:30;;;4790:50;4818:4;4810:25;:30;;-1:-1:-1;4790:50:25;;4726:34;;;-1:-1:-1;4726:34:25;;624:2139:84;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;624:2139:84;;;;;;;;-1:-1:-1;;624:2139:84;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;-1:-1:-1;;624:2139:84;;;;;;778:38;-1:-1:-1;;;;;624:2139:84;;;;;;;;;;;;-1:-1:-1;;624:2139:84;;;;;;822:43;-1:-1:-1;;;;;624:2139:84;;;;;;;;;;;;-1:-1:-1;;624:2139:84;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;449:5:82;-1:-1:-1;;;;;624:2139:84;435:10:82;:19;431:71;;1400:38:84;:77;624:2139;;;-1:-1:-1;624:2139:84;1400:16;624:2139;;;-1:-1:-1;624:2139:84;;;;;;;;;;;;;;;;;1400:38;:77;:::i;:::-;624:2139;;;;;;;;;;;;;;;;;;;-1:-1:-1;;624:2139:84;431:71:82;624:2139:84;;-1:-1:-1;;;477:14:82;;624:2139:84;;477:14:82;624:2139:84;;;;;;-1:-1:-1;;624:2139:84;;;;;;727:45;-1:-1:-1;;;;;624:2139:84;;;;;;;;;;;;-1:-1:-1;;624:2139:84;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;624:2139:84;;;;-1:-1:-1;624:2139:84;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;416:25:75;;;;477:31;416:25;;:::i;:::-;624:2139:84;;;;;;;;;;477:31:75;;624:2139:84;;;;;;;;;;;:::i;:::-;477:31:75;624:2139:84;;477:31:75;;;;;;:::i;:::-;518:79;;;624:2139:84;518:79:75;;624:2139:84;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;624:2139:84;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;-1:-1:-1;;;;;624:2139:84;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;624:2139:84;;;;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;:::-;-1:-1:-1;;;;;624:2139:84;;;;;;-1:-1:-1;;624:2139:84;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;624:2139:84;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;624:2139:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;624:2139:84;;;;;;;;;:::i;:::-;;;;;2692:73:92;:38;624:2139:84;;;:::i;:::-;;;;;-1:-1:-1;624:2139:84;2692:16:92;624:2139:84;;;-1:-1:-1;624:2139:84;;;;;;;;;;;;;;;;;2692:38:92;:73;:::i;624:2139:84:-;;;;;3248:62:92;624:2139:84;;;:::i;:::-;3248:62:92;;;;;:::i;:::-;624:2139:84;;;;;;;;;;;;;-1:-1:-1;;624:2139:84;;;;;;;-1:-1:-1;;;;;404:28:69;624:2139:84;;;;;;;;;;-1:-1:-1;;624:2139:84;;;;;;;1271:7:92;624:2139:84;;;;;;;;;-1:-1:-1;;624:2139:84;;;;;;;;-1:-1:-1;;;;;624:2139:84;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;1490:514::-;-1:-1:-1;1490:514:84;;;;;;;;624:2139;;;;;1779:95;;;;;;;;;;;;;624:2139;;;;;;;;;;;;;;;;;1779:95;;;;;:::i;:::-;624:2139;;716:88:82;;624:2139:84;716:88:82;;;;;;;;;783:4;1779:95:84;716:88:82;;624:2139:84;;;;;;;;;;;:::i;:::-;716:88:82;624:2139:84;716:88:82;624:2139:84;;716:88:82;;;;;;;;:::i;:::-;698:107;;;;;857:45;698:107;;:::i;:::-;624:2139:84;;;;857:45:82;;;;;;:::i;:::-;916:8;;912:175;;624:2139:84;;;1705:221;624:2139;;1705:221;;;;;;:::i;:::-;1937:61;;;;1490:514;;;:::o;1937:61::-;1970:17;624:2139;;;;1970:17;624:2139;;1970:17;;;;;624:2139;;;;;;;;;;;;1970:17;;;;;;;;;:::i;912:175:82:-;624:2139:84;;;;944:22:82;;;940:36;;990:87;;624:2139:84;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;624:2139:84;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;624:2139:84;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;2010:751::-;624:2139;;-1:-1:-1;;;2301:28:84;;624:2139;;2010:751;;;;;2301:28;;-1:-1:-1;;;;;624:2139:84;2010:751;;;2301:28;624:2139;2301:28;624:2139;;;;2301:28;;;;;;;;;;;;;;;2010:751;624:2139;2301:28;624:2139;;;;;;;;;2295:47;;624:2139;2295:47;;;;;;;;;;;2301:28;2295:47;;;;;2010:751;-1:-1:-1;624:2139:84;;-1:-1:-1;;;2230:162:84;;-1:-1:-1;;;;;624:2139:84;;;2301:28;2230:162;;624:2139;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2249:20;624:2139;2230:162;;;;;;;2301:28;2230:162;;;2010:751;2442:68;;;;;;:::i;:::-;624:2139;;2525:21;;;:59;;;2010:751;2521:234;;2010:751;;;:::o;2521:234::-;2607:137;624:2139;;;;;;:::i;:::-;;;;2635:95;;;624:2139;2607:137;624:2139;;2607:137;;;;;;:::i;2525:59::-;624:2139;;;2550:34;;2525:59;;2230:162;2442:68;2230:162;;;;;;;2301:28;2230:162;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;2295:47::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;2301:28;;;;;;;;;;;;;;:::i;:::-;;;;624:2139;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;624:2139:84;;;;:::o;:::-;;;:::o;2505:267:92:-;-1:-1:-1;624:2139:84;;;2692:16:92;624:2139:84;;;;;;;;-1:-1:-1;;;;;624:2139:84;;;;;;;;;2692:73:92;;2505:267;;2692:73;:::i;624:2139:84:-;;;;;;;;-1:-1:-1;624:2139:84;;-1:-1:-1;624:2139:84;;;-1:-1:-1;624:2139:84;:::o;:::-;;;;;;;;;;;;10580:184:86;624:2139:84;;10303:8:60;;;:63;-1:-1:-1;10303:63:60;-1:-1:-1;;;;;624:2139:84;;10726:7:86;624:2139:84;;10736:12:86;:17;:12;;:17;:::i;:::-;624:2139:84;;;;;;10580:184:86;:::o;10726:31::-;;;-1:-1:-1;10580:184:86;:::o;10303:63:60:-;624:2139:84;;;;;;;;;;13267:109:86;-1:-1:-1;13267:109:86;;-1:-1:-1;13267:109:86;;;624:2139:84;;;10303:63:60;;624:2139:84;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;624:2139:84;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;6491:564:92:-;6614:34;6491:564;6614:34;;;;:::i;:::-;-1:-1:-1;624:2139:84;;-1:-1:-1;;;6664:41:92;;-1:-1:-1;;;;;624:2139:84;;;6664:41:92;;;624:2139:84;;;;;6664:41:92;;;624:2139:84;;;6674:13:92;624:2139:84;;6664:41:92;;;;;;;-1:-1:-1;6664:41:92;;;6491:564;6663:42;;6659:90;;2540:111:28;;:::i;:::-;-1:-1:-1;624:2139:84;;-1:-1:-1;;;;;;624:2139:84;-1:-1:-1;;;;;624:2139:84;;;;;6664:41:92;624:2139:84;;;:::i;:::-;;;;;;;;;;;6892:23:92;;;;;;;;;-1:-1:-1;6892:23:92;;;6491:564;624:2139:84;;;6892:37:92;:64;;;6491:564;6888:112;;624:2139:84;7010:38:92;;624:2139:84;;-1:-1:-1;624:2139:84;;-1:-1:-1;;;;624:2139:84;;;;;;-1:-1:-1;;;624:2139:84;;;;;;;;6888:112:92;624:2139:84;;-1:-1:-1;;;6979:10:92;;6664:41;;6979:10;6892:64;-1:-1:-1;624:2139:84;;;;6892:64:92;;:23;;;;;;-1:-1:-1;6892:23:92;;;;;;:::i;:::-;;;;;6659:90;624:2139:84;;-1:-1:-1;;;6728:10:92;;6664:41;;6728:10;6664:41;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;624:2139:84;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;624:2139:84;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;624:2139:84;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;8889:1:86;624:2139:84;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;8406:869:86:-;;;624:2139:84;;8620:15:86;8578:11;8645:18;8678:7;8684:1;8678:7;;8674:241;;8406:869;8939:60;;;;;:::i;:::-;9014:8;;;9010:62;;9252:15;9259:7;624:2139:84;9219:31:86;624:2139:84;9130:48:86;9170:7;;;:::i;:::-;9130:48;13267:109;;;;;;13089:293;;9130:48;624:2139:84;:::i;:::-;;9176:1:86;624:2139:84;9232:17:86;624:2139:84;;;;;;;;9232:17:86;;624:2139:84;-1:-1:-1;;;;;624:2139:84;;;;9219:12:86;;:31;:::i;624:2139:84:-;9259:7:86;;:::i;:::-;624:2139:84;;;;9252:15:86;9176:1;;9188:80;;8406:869::o;9010:62::-;8578:11;;-1:-1:-1;8578:11:86;;-1:-1:-1;8578:11:86;;;;9038:23::o;8674:241::-;8721:14;;;;;:::i;:::-;624:2139:84;;;;;;;8939:60:86;13267:109;;8578:11;13267:109;8753:55;8759:49;13267:109;;8578:11;13267:109;;624:2139:84;;;;;;8759:49:86;624:2139:84;;;;8753:55:86;624:2139:84;;;8753:55:86;13267:109;;;8828:10;8749:156;8674:241;;8749:156;8883:7;;;;;;:::i;:::-;8749:156;8674:241;;624:2139:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::o;7558:604:86:-;;624:2139:84;;7686:17:86;7682:83;;624:2139:84;7789:27:86;624:2139:84;7789:27:86;624:2139:84;;7789:27:86;;;;;;:::i;:::-;7860:14;;;;;:::i;:::-;624:2139:84;;;;;;;;;;;;;;;;7888:22:86;;;7884:77;;7975:21;-1:-1:-1;7975:84:86;;;;7558:604;7971:139;;;;8127:28;;;;:::i;7971:139::-;8082:17;;7789:27;8082:17;624:2139:84;8075:24:86;:::o;7975:84::-;624:2139:84;;;8009:16:86;624:2139:84;;8009:16:86;:::i;:::-;624:2139:84;;;8001:24:86;:57;;;;;7975:84;;;;;;;8001:57;8029:29;8038:8;;;8029:18;8038:8;8029:23;8038:8;;:::i;:::-;8029:18;;:::i;:::-;624:2139:84;;;;;8029:29:86;;8001:57;;;;7884:77;7933:17;;;;;7789:27;7933:17;624:2139:84;7926:24:86;:::o;7682:83::-;7726:28;;;;:::i;624:2139:84:-;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;624:2139:84;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;624:2139:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3323:1122:92:-;;624:2139:84;;:::i;:::-;;;;3608:16:92;3604:109;;3323:1122;837:15:62;;819:34;837:15;819:34;:::i;:::-;-1:-1:-1;624:2139:84;;;;3778:27:92;;:13;;-1:-1:-1;;;;;624:2139:84;3778:13:92;624:2139:84;;-1:-1:-1;;;;;624:2139:84;;;3778:27:92;624:2139:84;;;;;;;3778:29:92;;;;;;;;;;;;;;;3740:67;3778:29;3759:48;3778:29;-1:-1:-1;3778:29:92;;;3323:1122;3759:48;;:::i;3740:67::-;624:2139:84;;;3740:67:92;;;:107;;;;;3323:1122;3740:197;;;;3323:1122;3723:263;;;624:2139:84;3778:29:92;624:2139:84;;;;;;;;;;4025:25:92;;;;;;;;;4010:143;4025:25;;;-1:-1:-1;4025:25:92;;;3323:1122;4113:30;;;624:2139:84;;;;;;;;;;;4010:143:92;;;;;3778:29;4010:143;;;:::i;:::-;;;-1:-1:-1;;;;;624:2139:84;4010:143:92;;;;;;;4181:257;4010:143;-1:-1:-1;4010:143:92;;;3323:1122;3996:157;;4293:102;3996:157;;4233:162;3996:157;4207:231;3996:157;;2936:28;:47;:38;:28;;;624:2139:84;;2936:16:92;624:2139:84;;;;;;;2936:28:92;624:2139:84;;;;;;;;;;;;;;;;2936:47:92;4351:43;;;4293:102;;:::i;:::-;4233:162;;:::i;:::-;4207:231;:::i;4181:257::-;3323:1122;:::o;4010:143::-;4233:162;4010:143;;;4207:231;4010:143;;;;4293:102;4010:143;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;4025:25;;;;;;;;;;;;;;:::i;:::-;;;;3723:263;3962:13;;;;;;-1:-1:-1;3962:13:92;-1:-1:-1;3962:13:92;:::o;3740:197::-;3886:41;;3867:70;3886:51;;:41;;;624:2139:84;;3886:29:92;624:2139:84;;;;;;;3886:51:92;624:2139:84;;;;;3867:70:92;-1:-1:-1;3740:197:92;;;:107;837:15:62;;3811:36:92;819:34:62;837:15;819:34;:::i;3811:36:92:-;;;;3740:107;;;3778:29;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;3604:109;3662:40;;;;;;;;;;;;:::i;:::-;3604:109;;;;6893:76:25;;;:::i;:::-;;;:::i;:::-;1805:1:28;2355:73;1805:1;6893:76:25:o;624:2139:84:-;;;;;;;;;;-1:-1:-1;;;;;624:2139:84;;;;;;;-1:-1:-1;624:2139:84;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;8587:1642:57;8658:6;;8654:45;;9401:7;10201:10;10142:26;10093;10044;9995;9946;9897;9848;624:2139:84;10189:23:57;9401:7;8663:1;624:2139:84;;;;10826:16:57;10822:99;;8587:1642;624:2139:84;;;;10938:15:57;10934:96;;8587:1642;624:2139:84;;;;11047:15:57;11043:96;;8587:1642;624:2139:84;;;;11156:15:57;11152:96;;8587:1642;624:2139:84;;;;11265:14:57;11261:93;;8587:1642;624:2139:84;;;;11371:14:57;11367:93;;8587:1642;624:2139:84;;;;11477:14:57;11473:93;;8587:1642;624:2139:84;;;11579:64:57;;8587:1642;624:2139:84;;;9858:10:57;;;;:::i;:::-;624:2139:84;;;;;9848:26:57;9907:10;;;;:::i;9897:26::-;9956:10;;;;:::i;9946:26::-;10005:10;;;;:::i;9995:26::-;10054:10;;;;:::i;10044:26::-;10103:10;;;;:::i;10093:26::-;10152:10;;;;:::i;10142:26::-;10201:10;;;:::i;:::-;10189:23;;:::i;11579:64::-;624:2139:84;;11579:64:57;;11473:93;624:2139:84;11511:11:57;;624:2139:84;;11473:93:57;;;;11367;624:2139:84;11405:11:57;;624:2139:84;;11367:93:57;;;;11261;624:2139:84;11299:11:57;;624:2139:84;;11261:93:57;;;;11152:96;624:2139:84;11191:12:57;;624:2139:84;;11152:96:57;;;;11043;624:2139:84;11082:12:57;;624:2139:84;;11043:96:57;;;;10934;624:2139:84;10973:12:57;;624:2139:84;;10934:96:57;;;;10822:99;10862:13;;;624:2139:84;10822:99:57;;;;8654:45;8680:8;8663:1;8680:8;:::o;12497:447:86:-;;12694:10;;;;;;12926:11;;;12497:447;:::o;12687:230::-;12734:23;;;;;;;:::i;:::-;13267:109;;-1:-1:-1;13267:109:86;624:2139:84;13267:109:86;;;-1:-1:-1;13267:109:86;;624:2139:84;;;;;-1:-1:-1;12771:136:86;624:2139:84;;;12830:10:86;12771:136;;12687:230;;;;12771:136;624:2139:84;;12891:1:86;624:2139:84;;;;;;12771:136:86;624:2139:84;;:::i;6999:207:86:-;;624:2139:84;;9594:15:60;-1:-1:-1;9619:18:60;9652:7;9658:1;9652:7;;9648:234;;6999:207:86;9906:53:60;;;;;:::i;:::-;9977:8;;;:63;-1:-1:-1;9977:63:60;;-1:-1:-1;;;;;624:2139:84;;7168:7:86;624:2139:84;;;7178:12:86;;:17;:12;;:17;:::i;9977:63:60:-;9992:41;10025:7;9992:48;10025:7;;:::i;:::-;9992:41;13267:109:86;;;;;;13089:293;;9992:41:60;624:2139:84;;;;;9992:48:60;9977:63;;;9648:234;9695:14;;;;;:::i;:::-;624:2139:84;;;;;;;9906:53:60;13267:109:86;;-1:-1:-1;13267:109:86;624:2139:84;13267:109:86;;;-1:-1:-1;13267:109:86;;624:2139:84;;;;;9727:48:60;9723:149;624:2139:84;;;9795:10:60;9723:149;9648:234;;9723:149;9850:7;;;;;;:::i;:::-;9723:149;9648:234;;624:2139:84;;;;;;;:::i;:::-;-1:-1:-1;624:2139:84;;;;;;;:::o;11486:272:86:-;;624:2139:84;11308:22:60;11718:31:86;11486:272;624:2139:84;;:::i;:::-;;;;:::i;:::-;;11308:22:60;;:::i;:::-;624:2139:84;;:::i;:::-;;11718:12:86;624:2139:84;;;;;11731:17:86;624:2139:84;;;;;11731:17:86;;624:2139:84;;11718:12:86;;:31;:::i;:::-;624:2139:84;;;;;;;;;:::i;:::-;;;;;;11731:17:86;11672:79;;624:2139:84;11486:272:86;:::o;2557:104:57:-;;2641:5;;;;;;:13;2557:104;:::o;2641:13::-;;;2557:104;:::o;7084:141:25:-;624:2139:84;-1:-1:-1;;;;;;;;;;;624:2139:84;;;;7150:18:25;7146:73;;7084:141::o;7146:73::-;624:2139:84;;-1:-1:-1;;;7191:17:25;;;;;2774:153:57;;2900:5;;;2910;;624:2139:84;;;;;;;;;2774:153:57;:::o;14291:213:58:-;624:2139:84;14369:24:58;;;;14365:103;;624:2139:84;14291:213:58;:::o;14365:103::-;624:2139:84;;;;14416:41:58;;;;;;14447:2;14416:41;;;624:2139:84;;;;;14416:41:58;12736:433:60;;12919:10;;;;;;13151:11;;;12736:433;:::o;12912:230::-;12959:23;;;;;;;:::i;:::-;13267:109:86;;-1:-1:-1;13267:109:86;624:2139:84;13267:109:86;;;-1:-1:-1;13267:109:86;;624:2139:84;;;;;-1:-1:-1;12996:136:60;624:2139:84;;;13055:10:60;12996:136;;12912:230;;;;12996:136;624:2139:84;;13116:1:60;624:2139:84;;;;;;12996:136:60;624:2139:84;;:::i","linkReferences":{},"immutableReferences":{"57808":[{"start":715,"length":32}],"57811":[{"start":2313,"length":32}],"62368":[{"start":1530,"length":32}],"62711":[{"start":1691,"length":32},{"start":3119,"length":32}],"62713":[{"start":1372,"length":32}],"62715":[{"start":1440,"length":32}],"65592":[{"start":361,"length":32},{"start":3716,"length":32}],"65595":[{"start":647,"length":32}]}},"methodIdentifiers":{"BASE_DELEGATOR_HINTS()":"79d89614","BURNER_GAS_LIMIT()":"d5c24e1a","BURNER_RESERVE()":"2964f8dc","FACTORY()":"2dd31000","NETWORK_MIDDLEWARE_SERVICE()":"2c9d45b3","SLASHER_HINTS()":"4eb5a242","TYPE()":"bb24fe8a","VAULT_FACTORY()":"103f2907","VETO_SLASHER_HINTS()":"6565b7db","cumulativeSlash(bytes32,address)":"1a2be2c4","cumulativeSlashAt(bytes32,address,uint48,bytes)":"aa8e6489","cumulativeSlashHint(address,bytes32,address,uint48)":"4a719655","cumulativeSlashHintInternal(bytes32,address,uint48)":"77028046","initialize(bytes)":"439fab91","isBurnerHook()":"34d098ea","latestSlashedCaptureTimestamp(bytes32,address)":"267de1f3","slashableStake(bytes32,address,uint48,bytes)":"aab3595f","slashableStakeHints(address,bytes32,address,uint48)":"4ea2e926","staticDelegateCall(address,bytes)":"9f86fd85","vault()":"fbfa77cf"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"baseDelegatorHints\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ExternalCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBurnerGas\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoBurner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotNetworkMiddleware\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BASE_DELEGATOR_HINTS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BURNER_GAS_LIMIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BURNER_RESERVE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NETWORK_MIDDLEWARE_SERVICE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SLASHER_HINTS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TYPE\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VAULT_FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VETO_SLASHER_HINTS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"cumulativeSlash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"cumulativeSlashAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"slasher\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"cumulativeSlashHint\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"cumulativeSlashHintInternal\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"exists\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"hint\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isBurnerHook\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"latestSlashedCaptureTimestamp\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"value\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hints\",\"type\":\"bytes\"}],\"name\":\"slashableStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"slasher\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"}],\"name\":\"slashableStakeHints\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"staticDelegateCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"cumulativeSlash(bytes32,address)\":{\"params\":{\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"_0\":\"cumulative slash amount\"}},\"cumulativeSlashAt(bytes32,address,uint48,bytes)\":{\"params\":{\"hint\":\"hint for the checkpoint index\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\",\"timestamp\":\"time point to get the cumulative slash amount until (inclusively)\"},\"returns\":{\"_0\":\"cumulative slash amount until the given timestamp (inclusively)\"}},\"initialize(bytes)\":{\"params\":{\"data\":\"some data to use\"}},\"slashableStake(bytes32,address,uint48,bytes)\":{\"params\":{\"captureTimestamp\":\"time point to get the stake amount at\",\"hints\":\"hints for the checkpoints' indexes\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"amount\":\"slashable amount of the stake\"}},\"staticDelegateCall(address,bytes)\":{\"details\":\"It allows to use this contract's storage on-chain.\",\"params\":{\"data\":\"data to make a delegatecall with\",\"target\":\"address of the contract to make a delegatecall to\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"BURNER_GAS_LIMIT()\":{\"notice\":\"Get a gas limit for the burner.\"},\"BURNER_RESERVE()\":{\"notice\":\"Get a reserve gas between the gas limit check and the burner's execution.\"},\"FACTORY()\":{\"notice\":\"Get the factory's address.\"},\"NETWORK_MIDDLEWARE_SERVICE()\":{\"notice\":\"Get the network middleware service's address.\"},\"TYPE()\":{\"notice\":\"Get the entity's type.\"},\"VAULT_FACTORY()\":{\"notice\":\"Get the vault factory's address.\"},\"cumulativeSlash(bytes32,address)\":{\"notice\":\"Get a cumulative slash amount for an operator on a subnetwork.\"},\"cumulativeSlashAt(bytes32,address,uint48,bytes)\":{\"notice\":\"Get a cumulative slash amount for an operator on a subnetwork until a given timestamp (inclusively) using a hint.\"},\"initialize(bytes)\":{\"notice\":\"Initialize this entity contract by using a given data.\"},\"isBurnerHook()\":{\"notice\":\"Get if the burner is needed to be called on a slashing.\"},\"latestSlashedCaptureTimestamp(bytes32,address)\":{\"notice\":\"Get the latest capture timestamp that was slashed on a subnetwork.\"},\"slashableStake(bytes32,address,uint48,bytes)\":{\"notice\":\"Get a slashable amount of a stake got at a given capture timestamp using hints.\"},\"staticDelegateCall(address,bytes)\":{\"notice\":\"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data).\"},\"vault()\":{\"notice\":\"Get the vault's address.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/hints/SlasherHints.sol\":\"BaseSlasherHints\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://942dad22fbdc1669f025540ba63aa3ccfad5f8458fc5d4525b31ebf272e7af45\",\"dweb:/ipfs/Qmdo4X2M82aM3AMoW2kf2jhYkSCyC4T1pHNd6obdsDFnAB\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45\",\"dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26\",\"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol\":{\"keccak256\":\"0x85a45f3f10014a0f8be41157a32b6a5f905753ea64a4b64e29fc12b7deeecf39\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c3c74009ce36136b36c77c23935b8e4a7b4f253be2da2be4fb4a916b1ce43743\",\"dweb:/ipfs/QmcH36v3iN7SJJuF73AunLR2LtNxhVJ1wm63ph4dPZ4pcL\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x18a7171df639a934592915a520ecb97c5bbc9675a1105607aac8a94e72bf62c6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7478e1f13da69a2867ccd883001d836b75620362e743f196376d63ed0c422a1c\",\"dweb:/ipfs/QmWywcQ9TNfwtoqAxbn25d8C5VrV12PrPS9UjtGe6pL2BA\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xeed0a08b0b091f528356cbc7245891a4c748682d4f6a18055e8e6ca77d12a6cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba80ba06c8e6be852847e4c5f4492cef801feb6558ae09ed705ff2e04ea8b13c\",\"dweb:/ipfs/QmXRJDv3xHLVQCVXg1ZvR35QS9sij5y9NDWYzMfUfAdTHF\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x999f705a027ed6dc2d4e0df2cc4a509852c6bfd11de1c8161bf88832d0503fd0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0798def67258d9a3cc20b2b4da7ebf351a5cefe0abfdd665d2d81f8e32f89b21\",\"dweb:/ipfs/QmPEvJosnPfzHNjKvCv2D3891mA2Ww8eUwkqrxBjuYdHCt\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0xba333517a3add42cd35fe877656fc3dfcc9de53baa4f3aabbd6d12a92e4ea435\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ceacff44c0fdc81e48e0e0b1db87a2076d3c1fb497341de077bf1da9f6b406c\",\"dweb:/ipfs/QmRUo1muMRAewxrKQ7TkXUtknyRoR57AyEkoPpiuZQ8FzX\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/SignatureChecker.sol\":{\"keccak256\":\"0x6b11eb41a228cca35d4b662b4df69fcd75192851365102690f57b2ac01e83fe6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab006a2983ed350d2af21ddcdd835dcae3b8340086cc4d088460da5abd041f69\",\"dweb:/ipfs/QmbEacDhkJZiGrgzLjB4pNtE8Z1uudjDw1DvcDUTVQFsLG\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c\",\"dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0xbdc5e074d7dd6678f67e92b1a51a20226801a407b0e1af3da367c5d1ff4519ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a36cca6b22fff3db16fc789ff6c60eea71d4b156065d4d0c83a0bc5e91a77a8b\",\"dweb:/ipfs/QmYN3exd5AemxjBrN8XMB1p5LbbE16uC3sjbYjwi8AjcGR\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0xc7755af115020049e4140f224f9ee88d7e1799ffb0646f37bf0df24bf6213f58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f09bf94d5274334ec021f61a04659db303f31e60460e14b709c9bf187740111\",\"dweb:/ipfs/QmNvgomZYUwFAt4cZbPWAiTeSZQreGehY9BK5xyVJsUttb\"]},\"src/contracts/common/Entity.sol\":{\"keccak256\":\"0x3d61a932995b8443381f3950542d388223a2c26dd5d29a3274dea3baa7388bd7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7cdf5f03ca72fd263fd32ff59c8d88ddca911ae83896a287d10772c1bbe9b138\",\"dweb:/ipfs/QmbP84r5BWT1Rn9AYTntWSf3xUMTTCohTZJFhbBhDXFoHa\"]},\"src/contracts/common/MigratableEntity.sol\":{\"keccak256\":\"0x2d736f4dacd5d7e7697503bc426c78b8250fe1694ca157965ec178da6807de58\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f1237acf96b4b9f9b69156e068eddd726a6e15bd8e87a18dc999cd4ba4da069c\",\"dweb:/ipfs/QmS6M8fiFFSeuJ4ZKKq1z8W7w4ybeHQSy5TLASGoc1LVic\"]},\"src/contracts/common/StaticDelegateCallable.sol\":{\"keccak256\":\"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764\",\"dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD\"]},\"src/contracts/delegator/BaseDelegator.sol\":{\"keccak256\":\"0x7c54d491fdd4415b764a9c8defa068e56d4c0c8c9419be0053a1d377669290e8\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://9238bfbad0f6eeb0dc7727724de14380f1980b395902269703d5e2ef07e52e10\",\"dweb:/ipfs/QmPJn1V4HNXcEghYvogGuSTF24dSQUPosR5qtsXcmNqRm3\"]},\"src/contracts/delegator/FullRestakeDelegator.sol\":{\"keccak256\":\"0x0a81c4f8e72914563a9cb771e93acf889c71ea36b7bec040e4eb562b199d5af1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6fc66b6ba02da77046a0bbbd1dd407a62c08f52e04486c9cbd2cb1cca3da555f\",\"dweb:/ipfs/QmZQivK1ZnMxfRQQ5aLpV9co5u55wQVNev5Rg1hzAqxhkE\"]},\"src/contracts/delegator/NetworkRestakeDelegator.sol\":{\"keccak256\":\"0xd3a8e6522f9c6fdcc2da837c9023afd6bdff2bce45a35590320c475519e3636d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://58b17a87f6554f08376f9ea7fedf486a4aa75801bf0ad8b23ff5a46959b6b7a3\",\"dweb:/ipfs/QmSTmNh67tYt8CmjVZb57r8N3qX5yeYdMApKPJm3qvQgQw\"]},\"src/contracts/delegator/OperatorNetworkSpecificDelegator.sol\":{\"keccak256\":\"0x031a10722b9ec49048f0952710401131290adb87e71caf294e864e7ac3b98a16\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://72428febc875134b2f29205e6f294634a1c22a7d5c78d6a9cb2f8196f107c9b5\",\"dweb:/ipfs/QmTPwXR6h5oytckmkLrHdKeEMdphJxceDhYUR4zvQeWAwY\"]},\"src/contracts/delegator/OperatorSpecificDelegator.sol\":{\"keccak256\":\"0x630ce62fa30b9f3349ab7a8cf8dbf041319febc6dd757be2f94d3d25944ed328\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c2ac59d47ce57d2a6819ae9833e1a618a371eccff93eb5ab367b201b01f42bfa\",\"dweb:/ipfs/QmdBpGMBivpNPv2WbH8vnCUy5xkVeaxQvGgqi33vKCz1kA\"]},\"src/contracts/hints/DelegatorHints.sol\":{\"keccak256\":\"0x44aa0c396311a54afbc7c73e8dadeed41e3165a4fd13f712b27d63d50fc3376d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://2f255214f3531fc707d88be0d56a7a0aed4180439316d099d760d9118aa83093\",\"dweb:/ipfs/QmZD1w5p1ukJSXumUAjvxwGmkPhn7vsr21Y2atLGEZR2oi\"]},\"src/contracts/hints/Hints.sol\":{\"keccak256\":\"0x8b565df1ae35993c097a9e642002782a8f451f6fd01809cad6bcd345bdf1b99c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://99a19adb01e350a92f534095b3078229df1f2f83077992d75d58d8684be45971\",\"dweb:/ipfs/QmbmwcuswVbzvwHQFTtrJG86oV98GnfxqYTb8cV8u1acox\"]},\"src/contracts/hints/OptInServiceHints.sol\":{\"keccak256\":\"0x95d9407900d27b9f4a1233b772aeed809c07b2dc5b31cfc9fa77ca26514c49e5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://a13a8877e312d7e6b8b85bde3668c5d84ff5ecc83f762cd573f2b7104c64eb42\",\"dweb:/ipfs/QmYV2J55acuGzCNnS3juABuUHY5U1xc8g8o9jwEyFFdeG5\"]},\"src/contracts/hints/SlasherHints.sol\":{\"keccak256\":\"0xd77c5f3bbb0265af8ecd947df88f6f9684e136d80052b5292f5b29aaa3566a3f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://484a26504bf6706202ec82a9a4cfa7d196bbc552b5b78ced25bf7130c2842595\",\"dweb:/ipfs/QmaQqmkoZoUWEam4R94vmajzH3gKqFqpZQwFbrHDsN1peV\"]},\"src/contracts/hints/VaultHints.sol\":{\"keccak256\":\"0xccb505b7159b769cc114d67b87c2de6b106557f667fc8f3780114baad5c3c442\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6d0c80a908fc16e96a8b5605a0bd53f9e89ad0ef0a738fbbae80ba4d3160749b\",\"dweb:/ipfs/QmXo5UtWoR8YmunqcbBU8rQMm1nvmvjNPoXcVrDhh4pEwR\"]},\"src/contracts/libraries/Checkpoints.sol\":{\"keccak256\":\"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609\",\"dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE\"]},\"src/contracts/libraries/ERC4626Math.sol\":{\"keccak256\":\"0x8441160513c1cbeb1c3b9ee077bcc7e7ce20006b52a77c8dd39ff0ef89699939\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://943f8cc3e26ddf649f465f40c909819f5c864717c4baa339e9e403b9374a4653\",\"dweb:/ipfs/QmXPxi1sUDsrGprZdUgCzoPEosaZMv9ZhygWQ1vAi1phAB\"]},\"src/contracts/libraries/Subnetwork.sol\":{\"keccak256\":\"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56\",\"dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32\"]},\"src/contracts/service/OptInService.sol\":{\"keccak256\":\"0x4e0932077f2686b7990e10d59deb2535334c0d09e52ef6e57c6ab09eca21c4b1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7c00d311032ed4a1743aca7475f3c86ce15cdfc2218108efc3731c03d34a5278\",\"dweb:/ipfs/QmUGGfVwVhaHr5kS4177yKKYiLYzi5qZpkEmvYxBZqazxf\"]},\"src/contracts/slasher/BaseSlasher.sol\":{\"keccak256\":\"0x190e5dce196a061bdad42468c52e9f5b0eb7810cd7d0c19f04d6a2e94984f1b6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://07ca08d0cd43c2fe5d54a5577f6bdd522ced410f5d3a52e764deaa7ba26b5f06\",\"dweb:/ipfs/QmZe3PiMKBQKWcwodaLupragdqxPjgS4v1qMC7RXau8hDF\"]},\"src/contracts/slasher/Slasher.sol\":{\"keccak256\":\"0xeee0cb25fad58d496fdcc641d852d11bae06e6ceed5230ae21150964175c494f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://34aa27d21246a1bcee0b6a2afa8d9d613441156362430392f75d176511d58c61\",\"dweb:/ipfs/Qmf53Y3zdGfH4PU2zpSGeHZ8mMLzLXCtmkQrG5mnVJECQ3\"]},\"src/contracts/slasher/VetoSlasher.sol\":{\"keccak256\":\"0xeccc8128de5e1ad499c067feac1c526638fbbac1a18b96726fc7507969fd5897\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://cdfcf281338423625acbccdf8810115b258ef7cfe4aa3c10b8911ead1aa85429\",\"dweb:/ipfs/QmZFsDvZXpkFkx4PHcDXAVPN3ZCAahbSVfYpSVrMBvbt4k\"]},\"src/contracts/vault/Vault.sol\":{\"keccak256\":\"0x2ceff6ed3298c4cad144c99fcc79b51cb9397d6ebef00285b915848b476f8c2e\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://11f2fb3581854f3ab6e82e8d4935d9eb510c903a13c3f022346c2956a58f5307\",\"dweb:/ipfs/QmdUnoXoyYoG9SGWyQZCFyLDRUUX3eXyXetkRvw6jxqqBz\"]},\"src/contracts/vault/VaultStorage.sol\":{\"keccak256\":\"0x57db25b127d77ea3472de53e3a4af3354399655b9268638b99ca5925fa364a56\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://aa763d9a6ec508ae3abfb8228b72b9fd9525279e5135d4962e79ff059feb1173\",\"dweb:/ipfs/QmcbDR6E9wyEpu6V2FkEC4hnWy47zXA9LSKJde6zSGd33Q\"]},\"src/interfaces/common/IEntity.sol\":{\"keccak256\":\"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b\",\"dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv\"]},\"src/interfaces/common/IMigratableEntity.sol\":{\"keccak256\":\"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c\",\"dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds\"]},\"src/interfaces/common/IRegistry.sol\":{\"keccak256\":\"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014\",\"dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK\"]},\"src/interfaces/common/IStaticDelegateCallable.sol\":{\"keccak256\":\"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516\",\"dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi\"]},\"src/interfaces/delegator/IBaseDelegator.sol\":{\"keccak256\":\"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2\",\"dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8\"]},\"src/interfaces/delegator/IDelegatorHook.sol\":{\"keccak256\":\"0xc51aa8d7d1f6c8043ee819b7aeb86da0e993912e1442098df897e299f01f9f46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://adddf5cb2ba282aeb576b26efb28640f865a1721cc9b6eee8b3ee0457a2c9780\",\"dweb:/ipfs/QmNYgAmnLRwWZbhTuQhZs9rx4zcme1df5mEepkrniorSoW\"]},\"src/interfaces/delegator/IFullRestakeDelegator.sol\":{\"keccak256\":\"0xa3c8cb2e45d4d8ce90e95263bea40c01dc400f05ad65bc29597d878606be5e7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://782cf5e201aa4cca037ebafd3807a68ff1cc721d5b8416a35244db0d0607369e\",\"dweb:/ipfs/QmQkJks6x7CKndeTPa9LxgTNygD5uEi7obhADhpq1Lsr9A\"]},\"src/interfaces/delegator/INetworkRestakeDelegator.sol\":{\"keccak256\":\"0xe7030fe30389a147fd710e3436ec346b4842695fd3e65a81b95375c9f1d633fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://739c7e66d301778054f5c90bee45ec9438f68afba8a03eaaac52064c73b115ad\",\"dweb:/ipfs/QmfZ2ytKcTykAc76nxhg8ikUXV8NdBpetqb8W4YWPcox1Z\"]},\"src/interfaces/delegator/IOperatorNetworkSpecificDelegator.sol\":{\"keccak256\":\"0x74b95e64d29769202d45dd277bb830f623ff3d41ce77b80ce3ee4e318a5c71ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e512b903aae5c1b8a028c6e3f4f6223b5cb5d704503cfa6bd37b5346868f5c20\",\"dweb:/ipfs/QmZim9YExsPWtyxyeui993HTKAEmrg8MUcSkZ77Gp2JcuZ\"]},\"src/interfaces/delegator/IOperatorSpecificDelegator.sol\":{\"keccak256\":\"0x72075cab585dc17240cc3e32bc99b92f0d5627ddd988fed680e3e1a52d5a01e4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7448bc90699409ae61d85216b5efc2143a37f0f73354be2aea993bc54afca441\",\"dweb:/ipfs/QmXE4gAxM8pHosZK8mcTcj17puBx484meDCcmrDePskGHZ\"]},\"src/interfaces/service/INetworkMiddlewareService.sol\":{\"keccak256\":\"0x347afc7fcf1fbcdb96d66162070ef6c78aed27b3af2c1d5dfb4e511840631783\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d90b8ceb495159e8e4e95d76447719dd166443f67dfabdd942846162071595c\",\"dweb:/ipfs/QmVVuiAWYx92T6vBvNMKZfTvraCf1fa16BsUKkdNs3hdHA\"]},\"src/interfaces/service/IOptInService.sol\":{\"keccak256\":\"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337\",\"dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24\"]},\"src/interfaces/slasher/IBaseSlasher.sol\":{\"keccak256\":\"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf\",\"dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx\"]},\"src/interfaces/slasher/IBurner.sol\":{\"keccak256\":\"0xaf495dacc19ae0b3c787ba8021c5944927d70261536addd234d7dab146158c2b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b3cc66251008be6ff9fc8b11ecc6831d5a9dca49a3fe9817fcd970253c1d447\",\"dweb:/ipfs/QmVxfb9ALGdF9W3SN2h41gQbUct6tawvu5bw4K89kFQ4HW\"]},\"src/interfaces/slasher/ISlasher.sol\":{\"keccak256\":\"0x34d226d67a3d5e16571f2fac91a8b9773551bcc41c88a96279669dd78d192625\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a6e8c1462ee4a1b0f745414be043c09012ea676613790aba004b06c85c980d1\",\"dweb:/ipfs/QmadjNEbHKRthtA1EeNy3Kg2sXpejH2KBeHm8QZtBPvXbJ\"]},\"src/interfaces/slasher/IVetoSlasher.sol\":{\"keccak256\":\"0xdf7edd04a4f36e9aec3a15241dcb6b6315b2e64927b12710c2c410d571fc55e9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c4be6ac339c2ebf230fed65363f036784224095d0cd0f3f2d01d64d6e0da9508\",\"dweb:/ipfs/QmRSMbpfaHExqrzUA8vYZMYZWh6eQW1KX9JKJSLdgronfg\"]},\"src/interfaces/vault/IVault.sol\":{\"keccak256\":\"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9\",\"dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R\"]},\"src/interfaces/vault/IVaultStorage.sol\":{\"keccak256\":\"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e\",\"dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"baseDelegatorHints","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"ExternalCall"},{"inputs":[],"type":"error","name":"InsufficientBurnerGas"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"NoBurner"},{"inputs":[],"type":"error","name":"NotInitialized"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"NotNetworkMiddleware"},{"inputs":[],"type":"error","name":"NotVault"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintDowncast"},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"BASE_DELEGATOR_HINTS","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"BURNER_GAS_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"BURNER_RESERVE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"NETWORK_MIDDLEWARE_SERVICE","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"SLASHER_HINTS","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"TYPE","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VAULT_FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VETO_SLASHER_HINTS","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"cumulativeSlash","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"cumulativeSlashAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"slasher","type":"address"},{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"cumulativeSlashHint","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"cumulativeSlashHintInternal","outputs":[{"internalType":"bool","name":"exists","type":"bool"},{"internalType":"uint32","name":"hint","type":"uint32"}]},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"isBurnerHook","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"latestSlashedCaptureTimestamp","outputs":[{"internalType":"uint48","name":"value","type":"uint48"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"captureTimestamp","type":"uint48"},{"internalType":"bytes","name":"hints","type":"bytes"}],"stateMutability":"view","type":"function","name":"slashableStake","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"slasher","type":"address"},{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"captureTimestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"slashableStakeHints","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"staticDelegateCall"},{"inputs":[],"stateMutability":"view","type":"function","name":"vault","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"cumulativeSlash(bytes32,address)":{"params":{"operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"_0":"cumulative slash amount"}},"cumulativeSlashAt(bytes32,address,uint48,bytes)":{"params":{"hint":"hint for the checkpoint index","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)","timestamp":"time point to get the cumulative slash amount until (inclusively)"},"returns":{"_0":"cumulative slash amount until the given timestamp (inclusively)"}},"initialize(bytes)":{"params":{"data":"some data to use"}},"slashableStake(bytes32,address,uint48,bytes)":{"params":{"captureTimestamp":"time point to get the stake amount at","hints":"hints for the checkpoints' indexes","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"amount":"slashable amount of the stake"}},"staticDelegateCall(address,bytes)":{"details":"It allows to use this contract's storage on-chain.","params":{"data":"data to make a delegatecall with","target":"address of the contract to make a delegatecall to"}}},"version":1},"userdoc":{"kind":"user","methods":{"BURNER_GAS_LIMIT()":{"notice":"Get a gas limit for the burner."},"BURNER_RESERVE()":{"notice":"Get a reserve gas between the gas limit check and the burner's execution."},"FACTORY()":{"notice":"Get the factory's address."},"NETWORK_MIDDLEWARE_SERVICE()":{"notice":"Get the network middleware service's address."},"TYPE()":{"notice":"Get the entity's type."},"VAULT_FACTORY()":{"notice":"Get the vault factory's address."},"cumulativeSlash(bytes32,address)":{"notice":"Get a cumulative slash amount for an operator on a subnetwork."},"cumulativeSlashAt(bytes32,address,uint48,bytes)":{"notice":"Get a cumulative slash amount for an operator on a subnetwork until a given timestamp (inclusively) using a hint."},"initialize(bytes)":{"notice":"Initialize this entity contract by using a given data."},"isBurnerHook()":{"notice":"Get if the burner is needed to be called on a slashing."},"latestSlashedCaptureTimestamp(bytes32,address)":{"notice":"Get the latest capture timestamp that was slashed on a subnetwork."},"slashableStake(bytes32,address,uint48,bytes)":{"notice":"Get a slashable amount of a stake got at a given capture timestamp using hints."},"staticDelegateCall(address,bytes)":{"notice":"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data)."},"vault()":{"notice":"Get the vault's address."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/hints/SlasherHints.sol":"BaseSlasherHints"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol":{"keccak256":"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74","urls":["bzz-raw://942dad22fbdc1669f025540ba63aa3ccfad5f8458fc5d4525b31ebf272e7af45","dweb:/ipfs/Qmdo4X2M82aM3AMoW2kf2jhYkSCyC4T1pHNd6obdsDFnAB"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8","urls":["bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45","dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41","urls":["bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26","dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol":{"keccak256":"0x85a45f3f10014a0f8be41157a32b6a5f905753ea64a4b64e29fc12b7deeecf39","urls":["bzz-raw://c3c74009ce36136b36c77c23935b8e4a7b4f253be2da2be4fb4a916b1ce43743","dweb:/ipfs/QmcH36v3iN7SJJuF73AunLR2LtNxhVJ1wm63ph4dPZ4pcL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol":{"keccak256":"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92","urls":["bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a","dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70","urls":["bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c","dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff","urls":["bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d","dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386","urls":["bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0","dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721","urls":["bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245","dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol":{"keccak256":"0x18a7171df639a934592915a520ecb97c5bbc9675a1105607aac8a94e72bf62c6","urls":["bzz-raw://7478e1f13da69a2867ccd883001d836b75620362e743f196376d63ed0c422a1c","dweb:/ipfs/QmWywcQ9TNfwtoqAxbn25d8C5VrV12PrPS9UjtGe6pL2BA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418","urls":["bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c","dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792","urls":["bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453","dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0xeed0a08b0b091f528356cbc7245891a4c748682d4f6a18055e8e6ca77d12a6cf","urls":["bzz-raw://ba80ba06c8e6be852847e4c5f4492cef801feb6558ae09ed705ff2e04ea8b13c","dweb:/ipfs/QmXRJDv3xHLVQCVXg1ZvR35QS9sij5y9NDWYzMfUfAdTHF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol":{"keccak256":"0x999f705a027ed6dc2d4e0df2cc4a509852c6bfd11de1c8161bf88832d0503fd0","urls":["bzz-raw://0798def67258d9a3cc20b2b4da7ebf351a5cefe0abfdd665d2d81f8e32f89b21","dweb:/ipfs/QmPEvJosnPfzHNjKvCv2D3891mA2Ww8eUwkqrxBjuYdHCt"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0xba333517a3add42cd35fe877656fc3dfcc9de53baa4f3aabbd6d12a92e4ea435","urls":["bzz-raw://2ceacff44c0fdc81e48e0e0b1db87a2076d3c1fb497341de077bf1da9f6b406c","dweb:/ipfs/QmRUo1muMRAewxrKQ7TkXUtknyRoR57AyEkoPpiuZQ8FzX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/SignatureChecker.sol":{"keccak256":"0x6b11eb41a228cca35d4b662b4df69fcd75192851365102690f57b2ac01e83fe6","urls":["bzz-raw://ab006a2983ed350d2af21ddcdd835dcae3b8340086cc4d088460da5abd041f69","dweb:/ipfs/QmbEacDhkJZiGrgzLjB4pNtE8Z1uudjDw1DvcDUTVQFsLG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe","urls":["bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c","dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72","urls":["bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc","dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol":{"keccak256":"0xbdc5e074d7dd6678f67e92b1a51a20226801a407b0e1af3da367c5d1ff4519ad","urls":["bzz-raw://a36cca6b22fff3db16fc789ff6c60eea71d4b156065d4d0c83a0bc5e91a77a8b","dweb:/ipfs/QmYN3exd5AemxjBrN8XMB1p5LbbE16uC3sjbYjwi8AjcGR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0xc7755af115020049e4140f224f9ee88d7e1799ffb0646f37bf0df24bf6213f58","urls":["bzz-raw://7f09bf94d5274334ec021f61a04659db303f31e60460e14b709c9bf187740111","dweb:/ipfs/QmNvgomZYUwFAt4cZbPWAiTeSZQreGehY9BK5xyVJsUttb"],"license":"MIT"},"src/contracts/common/Entity.sol":{"keccak256":"0x3d61a932995b8443381f3950542d388223a2c26dd5d29a3274dea3baa7388bd7","urls":["bzz-raw://7cdf5f03ca72fd263fd32ff59c8d88ddca911ae83896a287d10772c1bbe9b138","dweb:/ipfs/QmbP84r5BWT1Rn9AYTntWSf3xUMTTCohTZJFhbBhDXFoHa"],"license":"BUSL-1.1"},"src/contracts/common/MigratableEntity.sol":{"keccak256":"0x2d736f4dacd5d7e7697503bc426c78b8250fe1694ca157965ec178da6807de58","urls":["bzz-raw://f1237acf96b4b9f9b69156e068eddd726a6e15bd8e87a18dc999cd4ba4da069c","dweb:/ipfs/QmS6M8fiFFSeuJ4ZKKq1z8W7w4ybeHQSy5TLASGoc1LVic"],"license":"BUSL-1.1"},"src/contracts/common/StaticDelegateCallable.sol":{"keccak256":"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90","urls":["bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764","dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD"],"license":"BUSL-1.1"},"src/contracts/delegator/BaseDelegator.sol":{"keccak256":"0x7c54d491fdd4415b764a9c8defa068e56d4c0c8c9419be0053a1d377669290e8","urls":["bzz-raw://9238bfbad0f6eeb0dc7727724de14380f1980b395902269703d5e2ef07e52e10","dweb:/ipfs/QmPJn1V4HNXcEghYvogGuSTF24dSQUPosR5qtsXcmNqRm3"],"license":"BUSL-1.1"},"src/contracts/delegator/FullRestakeDelegator.sol":{"keccak256":"0x0a81c4f8e72914563a9cb771e93acf889c71ea36b7bec040e4eb562b199d5af1","urls":["bzz-raw://6fc66b6ba02da77046a0bbbd1dd407a62c08f52e04486c9cbd2cb1cca3da555f","dweb:/ipfs/QmZQivK1ZnMxfRQQ5aLpV9co5u55wQVNev5Rg1hzAqxhkE"],"license":"BUSL-1.1"},"src/contracts/delegator/NetworkRestakeDelegator.sol":{"keccak256":"0xd3a8e6522f9c6fdcc2da837c9023afd6bdff2bce45a35590320c475519e3636d","urls":["bzz-raw://58b17a87f6554f08376f9ea7fedf486a4aa75801bf0ad8b23ff5a46959b6b7a3","dweb:/ipfs/QmSTmNh67tYt8CmjVZb57r8N3qX5yeYdMApKPJm3qvQgQw"],"license":"BUSL-1.1"},"src/contracts/delegator/OperatorNetworkSpecificDelegator.sol":{"keccak256":"0x031a10722b9ec49048f0952710401131290adb87e71caf294e864e7ac3b98a16","urls":["bzz-raw://72428febc875134b2f29205e6f294634a1c22a7d5c78d6a9cb2f8196f107c9b5","dweb:/ipfs/QmTPwXR6h5oytckmkLrHdKeEMdphJxceDhYUR4zvQeWAwY"],"license":"BUSL-1.1"},"src/contracts/delegator/OperatorSpecificDelegator.sol":{"keccak256":"0x630ce62fa30b9f3349ab7a8cf8dbf041319febc6dd757be2f94d3d25944ed328","urls":["bzz-raw://c2ac59d47ce57d2a6819ae9833e1a618a371eccff93eb5ab367b201b01f42bfa","dweb:/ipfs/QmdBpGMBivpNPv2WbH8vnCUy5xkVeaxQvGgqi33vKCz1kA"],"license":"BUSL-1.1"},"src/contracts/hints/DelegatorHints.sol":{"keccak256":"0x44aa0c396311a54afbc7c73e8dadeed41e3165a4fd13f712b27d63d50fc3376d","urls":["bzz-raw://2f255214f3531fc707d88be0d56a7a0aed4180439316d099d760d9118aa83093","dweb:/ipfs/QmZD1w5p1ukJSXumUAjvxwGmkPhn7vsr21Y2atLGEZR2oi"],"license":"BUSL-1.1"},"src/contracts/hints/Hints.sol":{"keccak256":"0x8b565df1ae35993c097a9e642002782a8f451f6fd01809cad6bcd345bdf1b99c","urls":["bzz-raw://99a19adb01e350a92f534095b3078229df1f2f83077992d75d58d8684be45971","dweb:/ipfs/QmbmwcuswVbzvwHQFTtrJG86oV98GnfxqYTb8cV8u1acox"],"license":"BUSL-1.1"},"src/contracts/hints/OptInServiceHints.sol":{"keccak256":"0x95d9407900d27b9f4a1233b772aeed809c07b2dc5b31cfc9fa77ca26514c49e5","urls":["bzz-raw://a13a8877e312d7e6b8b85bde3668c5d84ff5ecc83f762cd573f2b7104c64eb42","dweb:/ipfs/QmYV2J55acuGzCNnS3juABuUHY5U1xc8g8o9jwEyFFdeG5"],"license":"BUSL-1.1"},"src/contracts/hints/SlasherHints.sol":{"keccak256":"0xd77c5f3bbb0265af8ecd947df88f6f9684e136d80052b5292f5b29aaa3566a3f","urls":["bzz-raw://484a26504bf6706202ec82a9a4cfa7d196bbc552b5b78ced25bf7130c2842595","dweb:/ipfs/QmaQqmkoZoUWEam4R94vmajzH3gKqFqpZQwFbrHDsN1peV"],"license":"BUSL-1.1"},"src/contracts/hints/VaultHints.sol":{"keccak256":"0xccb505b7159b769cc114d67b87c2de6b106557f667fc8f3780114baad5c3c442","urls":["bzz-raw://6d0c80a908fc16e96a8b5605a0bd53f9e89ad0ef0a738fbbae80ba4d3160749b","dweb:/ipfs/QmXo5UtWoR8YmunqcbBU8rQMm1nvmvjNPoXcVrDhh4pEwR"],"license":"BUSL-1.1"},"src/contracts/libraries/Checkpoints.sol":{"keccak256":"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c","urls":["bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609","dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE"],"license":"MIT"},"src/contracts/libraries/ERC4626Math.sol":{"keccak256":"0x8441160513c1cbeb1c3b9ee077bcc7e7ce20006b52a77c8dd39ff0ef89699939","urls":["bzz-raw://943f8cc3e26ddf649f465f40c909819f5c864717c4baa339e9e403b9374a4653","dweb:/ipfs/QmXPxi1sUDsrGprZdUgCzoPEosaZMv9ZhygWQ1vAi1phAB"],"license":"MIT"},"src/contracts/libraries/Subnetwork.sol":{"keccak256":"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe","urls":["bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56","dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32"],"license":"MIT"},"src/contracts/service/OptInService.sol":{"keccak256":"0x4e0932077f2686b7990e10d59deb2535334c0d09e52ef6e57c6ab09eca21c4b1","urls":["bzz-raw://7c00d311032ed4a1743aca7475f3c86ce15cdfc2218108efc3731c03d34a5278","dweb:/ipfs/QmUGGfVwVhaHr5kS4177yKKYiLYzi5qZpkEmvYxBZqazxf"],"license":"BUSL-1.1"},"src/contracts/slasher/BaseSlasher.sol":{"keccak256":"0x190e5dce196a061bdad42468c52e9f5b0eb7810cd7d0c19f04d6a2e94984f1b6","urls":["bzz-raw://07ca08d0cd43c2fe5d54a5577f6bdd522ced410f5d3a52e764deaa7ba26b5f06","dweb:/ipfs/QmZe3PiMKBQKWcwodaLupragdqxPjgS4v1qMC7RXau8hDF"],"license":"BUSL-1.1"},"src/contracts/slasher/Slasher.sol":{"keccak256":"0xeee0cb25fad58d496fdcc641d852d11bae06e6ceed5230ae21150964175c494f","urls":["bzz-raw://34aa27d21246a1bcee0b6a2afa8d9d613441156362430392f75d176511d58c61","dweb:/ipfs/Qmf53Y3zdGfH4PU2zpSGeHZ8mMLzLXCtmkQrG5mnVJECQ3"],"license":"BUSL-1.1"},"src/contracts/slasher/VetoSlasher.sol":{"keccak256":"0xeccc8128de5e1ad499c067feac1c526638fbbac1a18b96726fc7507969fd5897","urls":["bzz-raw://cdfcf281338423625acbccdf8810115b258ef7cfe4aa3c10b8911ead1aa85429","dweb:/ipfs/QmZFsDvZXpkFkx4PHcDXAVPN3ZCAahbSVfYpSVrMBvbt4k"],"license":"BUSL-1.1"},"src/contracts/vault/Vault.sol":{"keccak256":"0x2ceff6ed3298c4cad144c99fcc79b51cb9397d6ebef00285b915848b476f8c2e","urls":["bzz-raw://11f2fb3581854f3ab6e82e8d4935d9eb510c903a13c3f022346c2956a58f5307","dweb:/ipfs/QmdUnoXoyYoG9SGWyQZCFyLDRUUX3eXyXetkRvw6jxqqBz"],"license":"BUSL-1.1"},"src/contracts/vault/VaultStorage.sol":{"keccak256":"0x57db25b127d77ea3472de53e3a4af3354399655b9268638b99ca5925fa364a56","urls":["bzz-raw://aa763d9a6ec508ae3abfb8228b72b9fd9525279e5135d4962e79ff059feb1173","dweb:/ipfs/QmcbDR6E9wyEpu6V2FkEC4hnWy47zXA9LSKJde6zSGd33Q"],"license":"BUSL-1.1"},"src/interfaces/common/IEntity.sol":{"keccak256":"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21","urls":["bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b","dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv"],"license":"MIT"},"src/interfaces/common/IMigratableEntity.sol":{"keccak256":"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4","urls":["bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c","dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds"],"license":"MIT"},"src/interfaces/common/IRegistry.sol":{"keccak256":"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb","urls":["bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014","dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK"],"license":"MIT"},"src/interfaces/common/IStaticDelegateCallable.sol":{"keccak256":"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5","urls":["bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516","dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi"],"license":"MIT"},"src/interfaces/delegator/IBaseDelegator.sol":{"keccak256":"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee","urls":["bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2","dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8"],"license":"MIT"},"src/interfaces/delegator/IDelegatorHook.sol":{"keccak256":"0xc51aa8d7d1f6c8043ee819b7aeb86da0e993912e1442098df897e299f01f9f46","urls":["bzz-raw://adddf5cb2ba282aeb576b26efb28640f865a1721cc9b6eee8b3ee0457a2c9780","dweb:/ipfs/QmNYgAmnLRwWZbhTuQhZs9rx4zcme1df5mEepkrniorSoW"],"license":"MIT"},"src/interfaces/delegator/IFullRestakeDelegator.sol":{"keccak256":"0xa3c8cb2e45d4d8ce90e95263bea40c01dc400f05ad65bc29597d878606be5e7d","urls":["bzz-raw://782cf5e201aa4cca037ebafd3807a68ff1cc721d5b8416a35244db0d0607369e","dweb:/ipfs/QmQkJks6x7CKndeTPa9LxgTNygD5uEi7obhADhpq1Lsr9A"],"license":"MIT"},"src/interfaces/delegator/INetworkRestakeDelegator.sol":{"keccak256":"0xe7030fe30389a147fd710e3436ec346b4842695fd3e65a81b95375c9f1d633fc","urls":["bzz-raw://739c7e66d301778054f5c90bee45ec9438f68afba8a03eaaac52064c73b115ad","dweb:/ipfs/QmfZ2ytKcTykAc76nxhg8ikUXV8NdBpetqb8W4YWPcox1Z"],"license":"MIT"},"src/interfaces/delegator/IOperatorNetworkSpecificDelegator.sol":{"keccak256":"0x74b95e64d29769202d45dd277bb830f623ff3d41ce77b80ce3ee4e318a5c71ec","urls":["bzz-raw://e512b903aae5c1b8a028c6e3f4f6223b5cb5d704503cfa6bd37b5346868f5c20","dweb:/ipfs/QmZim9YExsPWtyxyeui993HTKAEmrg8MUcSkZ77Gp2JcuZ"],"license":"MIT"},"src/interfaces/delegator/IOperatorSpecificDelegator.sol":{"keccak256":"0x72075cab585dc17240cc3e32bc99b92f0d5627ddd988fed680e3e1a52d5a01e4","urls":["bzz-raw://7448bc90699409ae61d85216b5efc2143a37f0f73354be2aea993bc54afca441","dweb:/ipfs/QmXE4gAxM8pHosZK8mcTcj17puBx484meDCcmrDePskGHZ"],"license":"MIT"},"src/interfaces/service/INetworkMiddlewareService.sol":{"keccak256":"0x347afc7fcf1fbcdb96d66162070ef6c78aed27b3af2c1d5dfb4e511840631783","urls":["bzz-raw://2d90b8ceb495159e8e4e95d76447719dd166443f67dfabdd942846162071595c","dweb:/ipfs/QmVVuiAWYx92T6vBvNMKZfTvraCf1fa16BsUKkdNs3hdHA"],"license":"MIT"},"src/interfaces/service/IOptInService.sol":{"keccak256":"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a","urls":["bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337","dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24"],"license":"MIT"},"src/interfaces/slasher/IBaseSlasher.sol":{"keccak256":"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404","urls":["bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf","dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx"],"license":"MIT"},"src/interfaces/slasher/IBurner.sol":{"keccak256":"0xaf495dacc19ae0b3c787ba8021c5944927d70261536addd234d7dab146158c2b","urls":["bzz-raw://9b3cc66251008be6ff9fc8b11ecc6831d5a9dca49a3fe9817fcd970253c1d447","dweb:/ipfs/QmVxfb9ALGdF9W3SN2h41gQbUct6tawvu5bw4K89kFQ4HW"],"license":"MIT"},"src/interfaces/slasher/ISlasher.sol":{"keccak256":"0x34d226d67a3d5e16571f2fac91a8b9773551bcc41c88a96279669dd78d192625","urls":["bzz-raw://7a6e8c1462ee4a1b0f745414be043c09012ea676613790aba004b06c85c980d1","dweb:/ipfs/QmadjNEbHKRthtA1EeNy3Kg2sXpejH2KBeHm8QZtBPvXbJ"],"license":"MIT"},"src/interfaces/slasher/IVetoSlasher.sol":{"keccak256":"0xdf7edd04a4f36e9aec3a15241dcb6b6315b2e64927b12710c2c410d571fc55e9","urls":["bzz-raw://c4be6ac339c2ebf230fed65363f036784224095d0cd0f3f2d01d64d6e0da9508","dweb:/ipfs/QmRSMbpfaHExqrzUA8vYZMYZWh6eQW1KX9JKJSLdgronfg"],"license":"MIT"},"src/interfaces/vault/IVault.sol":{"keccak256":"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235","urls":["bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9","dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R"],"license":"MIT"},"src/interfaces/vault/IVaultStorage.sol":{"keccak256":"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22","urls":["bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e","dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6"],"license":"MIT"}},"version":1},"id":84} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[{"name":"baseDelegatorHints","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"BASE_DELEGATOR_HINTS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"BURNER_GAS_LIMIT","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"BURNER_RESERVE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"NETWORK_MIDDLEWARE_SERVICE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"SLASHER_HINTS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"TYPE","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"VAULT_FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"VETO_SLASHER_HINTS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"cumulativeSlash","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"cumulativeSlashAt","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"cumulativeSlashHint","inputs":[{"name":"slasher","type":"address","internalType":"address"},{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"cumulativeSlashHintInternal","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"exists","type":"bool","internalType":"bool"},{"name":"hint","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isBurnerHook","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"latestSlashedCaptureTimestamp","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"value","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"slashableStake","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"captureTimestamp","type":"uint48","internalType":"uint48"},{"name":"hints","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"slashableStakeHints","inputs":[{"name":"slasher","type":"address","internalType":"address"},{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"captureTimestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"staticDelegateCall","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"vault","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"error","name":"ExternalCall","inputs":[]},{"type":"error","name":"InsufficientBurnerGas","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NoBurner","inputs":[]},{"type":"error","name":"NotInitialized","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"NotNetworkMiddleware","inputs":[]},{"type":"error","name":"NotVault","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x610180346101e757601f61732838819003918201601f19168301926001600160401b03929091838511838610176101825781602092849260409788528339810103126101e75751906001600160a01b039081831683036101e757306080527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460ff81871c166101d65780838080931603610196575b5050505f60a0525f60c0525f60e052610100935f855261012093845280516120108082019082821085831117610182576020918391611bda83393081520301905ff091821561017857836101409316835281519061373e8083019183831090831117610182576020918391613bea83393081520301905ff0928315610178576101609316835251926119ee94856101ec8639608051856105f5015260a051856102cb015260c05185610904015260e0518581816101690152610e7f015251846102870152518381816106960152610c2a015251826105570152518161059b0152f35b50513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b6001600160401b03191617905583518181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f8181610096565b855163f92ee8a960e01b8152600490fd5b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c8063103f2907146101545780631a2be2c41461014f578063267de1f31461014a5780632964f8dc146101455780632c9d45b3146101405780632dd310001461013b57806334d098ea14610136578063439fab91146101315780634a7196551461012c5780634ea2e926146101275780634eb5a242146101225780636565b7db1461011d578063770280461461011857806379d89614146101135780639f86fd851461010e578063aa8e648914610109578063aab3595f14610104578063bb24fe8a146100ff578063d5c24e1a146100fa5763fbfa77cf146100f5575f80fd5b610945565b610928565b6108e5565b6108c0565b610882565b6106c5565b610681565b6105ca565b610586565b610542565b610525565b6104f0565b61034b565b6102fa565b6102b6565b610272565b610256565b610201565b6101ad565b34610198575f366003190112610198576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5f80fd5b6001600160a01b0381160361019857565b346101985760403660031901126101985760206101f96101f46024356101d28161019c565b6004355f526002845260405f209060018060a01b03165f5260205260405f2090565b610da5565b604051908152f35b3461019857604036600319011261019857602065ffffffffffff61024c60243561022a8161019c565b6004355f526001845260405f209060018060a01b03165f5260205260405f2090565b5416604051908152f35b34610198575f366003190112610198576020604051614e208152f35b34610198575f366003190112610198576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610198575f366003190112610198576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610198575f36600319011261019857602060ff5f5460a01c166040519015158152f35b9181601f84011215610198578235916001600160401b038311610198576020838186019501011161019857565b34610198576020366003190112610198576001600160401b036004358181116101985761037c90369060040161031e565b5f80516020611999833981519152549260ff8460401c161593168015908161047b575b6001149081610471575b159081610468575b50610456575f80516020611999833981519152805467ffffffffffffffff191660011790556103e4918361043257610e47565b6103ea57005b5f80516020611999833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f80516020611999833981519152805460ff60401b1916600160401b179055610e47565b60405163f92ee8a960e01b8152600490fd5b9050155f6103b1565b303b1591506103a9565b84915061039f565b65ffffffffffff81160361019857565b6080906003190112610198576004356104ab8161019c565b90602435906044356104bc8161019c565b906064356104c981610483565b90565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b346101985761052161050d61050436610493565b929190916109ab565b6040519182916020835260208301906104cc565b0390f35b346101985761052161050d61053936610493565b92919091610b76565b34610198575f366003190112610198576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610198575f366003190112610198576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610198576060366003190112610198576024356105e78161019c565b6044356105f381610483565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361066f5761064d610652926004355f52600260205260405f209060018060a01b03165f5260205260405f2090565b611045565b60408051941515855263ffffffff91909116602085015292915050f35b604051637ca475e560e11b8152600490fd5b34610198575f366003190112610198576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610198576040366003190112610198576004356106e28161019c565b6024356001600160401b038111610198575f916107048392369060040161031e565b90816040519283928337810184815203915af4610751610722610d21565b916107436040519384921515602084015260408084015260608301906104cc565b03601f1981018352826107a8565b805190602001fd5b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b0382111761078857604052565b610759565b60a081019081106001600160401b0382111761078857604052565b90601f801991011681019081106001600160401b0382111761078857604052565b604051906107d68261076d565b565b6001600160401b03811161078857601f01601f191660200190565b81601f820112156101985780359061080a826107d8565b9261081860405194856107a8565b8284526020838301011161019857815f926020809301838601378301015290565b90608060031983011261019857600435916024356108568161019c565b9160443561086381610483565b91606435906001600160401b038211610198576104c9916004016107f3565b346101985760206101f96108bb61089836610839565b939190925f526002865260405f209060018060a01b03165f5260205260405f2090565b611173565b346101985760206108dc6108d336610839565b92919091611342565b50604051908152f35b34610198575f3660031901126101985760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610198575f366003190112610198576020604051620249f08152f35b34610198575f366003190112610198575f546040516001600160a01b039091168152602090f35b5190811515820361019857565b519063ffffffff8216820361019857565b9190826040910312610198576104c960206109a48461096c565b9301610979565b5f809195949593929365ffffffffffff60609760405195602097633b81402360e11b89890152602488015260018060a01b03166044870152166064850152606484526109f68461078d565b6040519384610a2387820192639f86fd8560e01b84523060248401526040604484015260648301906104cc565b0394610a37601f19968781018352826107a8565b51915afa50610a55610a47610d21565b838082518301019101610fb0565b9015610aa857808380610a6d9351830101910161098a565b9290610a7857505050565b6104c992939450610a9c604051948592830191909163ffffffff6020820193169052565b039081018352826107a8565b809150519182156101985701fd5b9081602091031261019857516104c98161019c565b6040513d5f823e3d90fd5b81601f8201121561019857805190610aed826107d8565b92610afb60405194856107a8565b8284526020838301011161019857815f9260208093018386015e8301015290565b906020828203126101985781516001600160401b038111610198576104c99201610ad6565b906104c991602081526020610b61835160408385015260608401906104cc565b920151906040601f19828503019101526104cc565b60405163fbfa77cf60e01b815260609594919391926020926001600160a01b03929091908481600481878b165afa908115610cd257849186915f91610d04575b50600460405180948193630ce9b79360e41b8352165afa8015610cd25786948385925f948591610cd7575b506040516304bb92e160e31b81526001600160a01b039182166004820152602481019290925292909216604483015265ffffffffffff97909716606482015295869060849082907f0000000000000000000000000000000000000000000000000000000000000000165afa948515610cd2575f95610caa575b50610c669394956109ab565b825115801590610ca0575b610c7a57505050565b6104c992939450610c896107c9565b938452818401526107436040519384928301610b41565b5080511515610c71565b610c66949550610ccb903d805f833e610cc381836107a8565b810190610b1c565b9493610c5a565b610acb565b610cf79150893d8b11610cfd575b610cef81836107a8565b810190610ab6565b5f610be1565b503d610ce5565b610d1b9150823d8411610cfd57610cef81836107a8565b5f610bb6565b3d15610d4b573d90610d32826107d8565b91610d4060405193846107a8565b82523d5f602084013e565b606090565b5f9081526002602090815260408083206001600160a01b039094168352929052206104c9929190611173565b8054821015610d91575f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b805480610dda57505f5b6001600160d01b03811615610dd4576001610dca9201610d7c565b90549060031b1c90565b50505f90565b5f19908082810111610df857825f5260205f2001015460301c610daf565b610fe4565b919091604081840312610198578035610e158161019c565b9260208201356001600160401b038111610198576104c992016107f3565b90816020910312610198576104c99061096c565b610e5391810190610dfd565b506040516302910f8b60e31b81526001600160a01b0391821660048201819052919060209081816024817f000000000000000000000000000000000000000000000000000000000000000087165afa908115610cd2575f91610f83575b5015610f7157610ebe61159c565b5f80546001600160a01b0319166001600160a01b038516179055600481610ee36115d2565b94604051928380926313c085b760e11b82525afa918215610cd2575f92610f54575b5050161580610f4a575b610f3857516107d69015155f805460ff60a01b191691151560a01b60ff60a01b16919091179055565b60405163d2420f5960e01b8152600490fd5b5080511515610f0f565b610f6a9250803d10610cfd57610cef81836107a8565b5f80610f05565b6040516362df054560e01b8152600490fd5b610fa39150823d8411610fa9575b610f9b81836107a8565b810190610e33565b5f610eb0565b503d610f91565b91909160408184031261019857610fc68161096c565b9260208201516001600160401b038111610198576104c99201610ad6565b634e487b7160e01b5f52601160045260245ffd5b5f19810191908211610df857565b91908203918211610df857565b9060018201809211610df857565b9060405161102e8161076d565b915465ffffffffffff8116835260301c6020830152565b91908254905f8291600584116110e3575b61106193508561173d565b9081156110d7576110d06110c76110c1610dca61109361108e61108388610ff8565b895f5260205f200190565b611021565b9660016110ba60206110ab8b5165ffffffffffff1690565b9a01516001600160d01b031690565b9101610d7c565b93610ff8565b63ffffffff1690565b6001939291565b5f925082915081908190565b91926110ee81611612565b8103908111610df85761106193865f526111226111178360205f200165ffffffffffff90541690565b65ffffffffffff1690565b65ffffffffffff85161015611138575091611056565b92915061114490611013565b90611056565b90816020910312610198576104c990610979565b90600163ffffffff80931601918211610df857565b91805115611241578060208061118e9351830101910161114a565b916111998382611864565b926111aa845165ffffffffffff1690565b9065ffffffffffff808516921682811461123557821191826111e0575b50506111d7576104c99250611794565b50506020015190565b9091506111ed8354610ff8565b63ffffffff831614918215611206575b50505f806111c7565b61122d91925061122161121b6111179261115e565b85611864565b5165ffffffffffff1690565b115f806111fd565b50505050506020015190565b506104c991611794565b604051906112588261076d565b60606020838281520152565b906020828203126101985781516001600160401b0392838211610198570190604082820312610198576040519261129a8461076d565b825181811161019857826112af918501610ad6565b84526020830151908111610198576112c79201610ad6565b602082015290565b9081602091031261019857516104c981610483565b65ffffffffffff9182169082160391908211610df857565b90816020910312610198575190565b9081526001600160a01b03909116602082015265ffffffffffff90911660408201526080606082018190526104c9929101906104cc565b9261134b61124b565b90805180611582575b505061135f4261190f565b5f5490949061138490611378906001600160a01b031681565b6001600160a01b031690565b93604051956327f843b560e11b875260209687816004818a5afa8015610cd2576113b992611117925f92611553575b506112e4565b65ffffffffffff821690811090811561153c575b811561150b575b506114ff578560049560405196878092630ce9b79360e41b82525afa948515610cd2576114269587915f916114e2575b50845190604051808099819463e02f693760e01b8352878b8a6004860161130b565b03916001600160a01b03165afa938415610cd25761149e955f956114a1575b509261148d85936114939361148d96869a6114846101f48361146f875f52600260205260405f2090565b9060018060a01b03165f5260205260405f2090565b95015192610d50565b90611006565b818082109118021890565b91565b61149392955061148d9491936114cf61148d928a3d8c116114db575b6114c781836107a8565b8101906112fc565b96935093919450611445565b503d6114bd565b6114f99150823d8411610cfd57610cef81836107a8565b5f611404565b5050505050505f905f90565b90506115356111176115298761146f875f52600160205260405f2090565b5465ffffffffffff1690565b115f6113d4565b905061154a6111174261190f565b811015906113cd565b6115749192508a3d8c1161157b575b61156c81836107a8565b8101906112cf565b905f6113b3565b503d611562565b6115959250602080918301019101611264565b5f80611354565b6115a46118cc565b6115ac6118cc565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60405190602082018281106001600160401b03821117610788576040525f8252565b81156115fe570490565b634e487b7160e01b5f52601260045260245ffd5b60018111156104c957600181600160801b81101561172b575b6116d36116c96116bf6116b56116ab6116a16116df97600488600160401b6116da9a101561171e575b640100000000811015611711575b62010000811015611704575b6101008110156116f8575b60108110156116ec575b10156116e4575b60030260011c61169a818b6115f4565b0160011c90565b61169a818a6115f4565b61169a81896115f4565b61169a81886115f4565b61169a81876115f4565b61169a81866115f4565b80936115f4565b821190565b900390565b60011b61168a565b811c9160021b91611683565b60081c91811b91611679565b60101c9160081b9161166e565b60201c9160101b91611662565b60401c9160201b91611654565b50600160401b9050608082901c61162b565b905b83831061174c5750505090565b90919261175981856118fa565b90835f5265ffffffffffff808360205f20015416908416105f146117815750925b919061173f565b9350600181018091111561177a57610fe4565b908154905f8291600584116117fe575b6117af935084611941565b806117d757505f905b6001600160d01b03821615610dd4576104c9916001610dca9201610d7c565b6117f16117e66117f892610ff8565b835f5260205f200190565b5460301c90565b906117b8565b919261180981611612565b8103908111610df8576117af93855f5265ffffffffffff808360205f20015416908516105f1461183a5750916117a4565b92915061184690611013565b906117a4565b604051906118598261076d565b5f6020838281520152565b9061188d6118876118ae9261187761184c565b5061188061184c565b5084610d7c565b50611021565b91600165ffffffffffff845116936020828060d01b03910151169101610d7c565b905490604051926118be8461076d565b835260031b1c602082015290565b60ff5f805160206119998339815191525460401c16156118e857565b604051631afcd79f60e31b8152600490fd5b90808216911860011c8101809111610df85790565b65ffffffffffff90818111611922571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b905b8383106119505750505090565b90919261195d81856118fa565b90835f5265ffffffffffff808360205f20015416908416105f146119855750925b9190611943565b9350600181018091111561197e57610fe456fef0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220f277a4f1d79c926d3cf47f1d1c69c51a336ff12303565531614d4d54627d5eb964736f6c634300081900336101403461015d576001600160401b0390601f61201038819003918201601f1916830191848311848410176101615780849260209460405283398101031261015d5751906001600160a01b038216820361015d57306080527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff8260401c1661014b578080831603610106575b835f60a0525f60c0525f60e052610100905f825261012090815260405190611e9a9283610176843960805183505060a051836104f2015260c0518381816109490152611373015260e05183818161031d01526116a301525182818161021c01526104ae0152518181816106920152610d390152f35b6001600160401b031990911681179091556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f8080610091565b60405163f92ee8a960e01b8152600490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c8063021a815614610124578063103f29071461011f5780631a2be2c41461011a578063238ab85f14610115578063267de1f3146101105780632964f8dc1461010b5780632c9d45b3146101065780632dd310001461010157806334d098ea146100fc578063439fab91146100f7578063457821b7146100f25780639f86fd85146100ed578063aa8e6489146100e8578063aab3595f146100e3578063bb24fe8a146100de578063d5c24e1a146100d95763fbfa77cf146100d4575f80fd5b61098a565b61096d565b61092a565b610905565b6108c7565b6106c1565b61067d565b610545565b610521565b6104dd565b610499565b61047d565b610428565b6103c4565b61034c565b610308565b61017b565b6001600160a01b0381160361013a57565b5f80fd5b65ffffffffffff81160361013a57565b9181601f8401121561013a578235916001600160401b03831161013a576020838186019501011161013a57565b3461013a5760a036600319011261013a5760043560243561019b81610129565b6064356101a78161013e565b6084356001600160401b03811161013a576101c690369060040161014e565b917f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0060028154146102ec5760029055604051635daf681960e11b8152606086901c60048201526001600160a01b036020826024817f000000000000000000000000000000000000000000000000000000000000000085165afa9182156102e7575f926102b6575b50339116036102a4576102a0946102679460443591610a63565b61029060017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6040519081529081906020820190565b0390f35b60405163227bf64d60e01b8152600490fd5b6102d991925060203d6020116102e0575b6102d181836107dd565b810190610de5565b905f61024d565b503d6102c7565b610a27565b604051633ee5aeb560e01b8152600490fd5b5f91031261013a57565b3461013a575f36600319011261013a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461013a57604036600319011261013a57602061039861039360243561037181610129565b6004355f526002845260405f209060018060a01b03165f5260205260405f2090565b6115c2565b604051908152f35b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b3461013a5760c036600319011261013a576102a06104146004356103e781610129565b6103f2602435610129565b6064356103fe81610129565b60a4359161040b8361013e565b60443590610ced565b6040519182916020835260208301906103a0565b3461013a57604036600319011261013a57602065ffffffffffff61047360243561045181610129565b6004355f526001845260405f209060018060a01b03165f5260205260405f2090565b5416604051908152f35b3461013a575f36600319011261013a576020604051614e208152f35b3461013a575f36600319011261013a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461013a575f36600319011261013a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461013a575f36600319011261013a57602060ff5f5460a01c166040519015158152f35b3461013a57602036600319011261013a576001600160401b0360043581811161013a5761057690369060040161014e565b5f80516020611e45833981519152549260ff8460401c1615931680159081610675575b600114908161066b575b159081610662575b50610650575f80516020611e45833981519152805467ffffffffffffffff191660011790556105de918361062c5761166c565b6105e457005b5f80516020611e45833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f80516020611e45833981519152805460ff60401b1916600160401b17905561166c565b60405163f92ee8a960e01b8152600490fd5b9050155f6105ab565b303b1591506105a3565b849150610599565b3461013a575f36600319011261013a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461013a5760408060031936011261013a576004356106df81610129565b602435906001600160401b03821161013a575f809161070561076994369060040161014e565b908187519283928337810184815203915af43d156107715761075b3d61072a8161081a565b90610737865192836107dd565b81523d5f602083013e5b8451948593151560208501528084015260608301906103a0565b03601f1981018352826107dd565b805190602001fd5b61075b6060610741565b634e487b7160e01b5f52604160045260245ffd5b602081019081106001600160401b038211176107aa57604052565b61077b565b604081019081106001600160401b038211176107aa57604052565b6001600160401b0381116107aa57604052565b90601f801991011681019081106001600160401b038211176107aa57604052565b6040519061080b826107af565b565b6040519061080b8261078f565b6001600160401b0381116107aa57601f01601f191660200190565b81601f8201121561013a5780359061084c8261081a565b9261085a60405194856107dd565b8284526020838301011161013a57815f926020809301838601378301015290565b90608060031983011261013a576004359160243561089881610129565b916044356108a58161013e565b91606435906001600160401b03821161013a576108c491600401610835565b90565b3461013a5760206103986109006108dd3661087b565b939190925f526002865260405f209060018060a01b03165f5260205260405f2090565b611806565b3461013a5760206109216109183661087b565b92919091610edf565b50604051908152f35b3461013a575f36600319011261013a5760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461013a575f36600319011261013a576020604051620249f08152f35b3461013a575f36600319011261013a575f546040516001600160a01b039091168152602090f35b604051906109be8261078f565b60608252565b9060208282031261013a5781356001600160401b039283821161013a57019060208282031261013a57604051926109fa8461078f565b823590811161013a57610a0d9201610835565b815290565b9081602091031261013a57516108c48161013e565b6040513d5f823e3d90fd5b634e487b7160e01b5f52601160045260245ffd5b65ffffffffffff9182169082160391908211610a5e57565b610a32565b92939594919095610a726109b1565b9280610c53575b5050610a84426118de565b5f54600490602090610aac90610aa0906001600160a01b031681565b6001600160a01b031690565b6040516327f843b560e11b815292839182905afa80156102e757610ae692610adb925f92610c22575b50610a46565b65ffffffffffff1690565b65ffffffffffff8516908110908115610c0c575b50610bfa57610b0f610b1e9251858886610edf565b92909180831890831102821890565b958615610be857610ba361075b610b9a610be3947fe0cbbe1f1e6fd806ca87036fafcebaf7ab5247474a3b20e1c37bb50122c3a88496610b5f8a878b611115565b610b6a8c878b6111a3565b610b726107fe565b9182526020820152604051928391602083019190916020806040830194805184520151910152565b8689848861130f565b610bad8588611418565b610bb98588838761149d565b6040805188815265ffffffffffff90961660208701526001600160a01b0390911694918291820190565b0390a3565b60405163167f871760e31b8152600490fd5b604051631357ac9160e11b8152600490fd5b9050610c1a610adb426118de565b11155f610afa565b610c4591925060203d602011610c4c575b610c3d81836107dd565b810190610a12565b905f610ad5565b503d610c33565b610c619293508101906109c4565b905f80610a79565b81601f8201121561013a57805190610c808261081a565b92610c8e60405194856107dd565b8284526020838301011161013a57815f9260208093018386015e8301015290565b9060208282031261013a5781516001600160401b03811161013a576108c49201610c69565b60406108c49260208352519160208082015201906103a0565b604051632751749360e11b81526001600160a01b0391821660048201526024810192909252918216604482015265ffffffffffff909216606483015260609291905f90829060849082907f0000000000000000000000000000000000000000000000000000000000000000165afa9081156102e7575f91610d97575b508051610d735750565b61075b9192506108c490610d8561080d565b90815260405192839160208301610cd4565b610db391503d805f833e610dab81836107dd565b810190610caf565b5f610d69565b5f9081526002602090815260408083206001600160a01b039094168352929052206108c4929190611806565b9081602091031261013a57516108c481610129565b60405190610e07826107af565b60606020838281520152565b9060208282031261013a5781516001600160401b039283821161013a57019060408282031261013a5760405192610e49846107af565b825181811161013a5782610e5e918501610c69565b8452602083015190811161013a57610e769201610c69565b602082015290565b9081602091031261013a575190565b9081526001600160a01b03909116602082015265ffffffffffff90911660408201526080606082018190526108c4929101906103a0565b5f19810191908211610a5e57565b91908203918211610a5e57565b92610ee8610dfa565b908051806110fb575b5050610efc426118de565b5f54909490610f1590610aa0906001600160a01b031681565b93604051956327f843b560e11b875260209687816004818a5afa80156102e757610f4992610adb925f926110e35750610a46565b65ffffffffffff82169081109081156110cc575b811561109b575b5061108f578560049560405196878092630ce9b79360e41b82525afa9485156102e757610fb69587915f91611072575b50845190604051808099819463e02f693760e01b8352878b8a60048601610e8d565b03916001600160a01b03165afa9384156102e75761102e955f95611031575b509261101d85936110239361101d96869a61101461039383610fff875f52600260205260405f2090565b9060018060a01b03165f5260205260405f2090565b95015192610db9565b90610ed2565b818082109118021890565b91565b61102392955061101d94919361105f61101d928a3d8c1161106b575b61105781836107dd565b810190610e7e565b96935093919450610fd5565b503d61104d565b6110899150823d84116102e0576102d181836107dd565b5f610f94565b5050505050505f905f90565b90506110c5610adb6110b987610fff875f52600160205260405f2090565b5465ffffffffffff1690565b115f610f64565b90506110da610adb426118de565b81101590610f5d565b610c459192508a3d8c11610c4c57610c3d81836107dd565b61110e9250602080918301019101610e13565b5f80610ef1565b919091805f52600160205265ffffffffffff806111458560405f209060018060a01b03165f5260205260405f2090565b54169083161161115457505050565b61080b9261117c915f52600160205260405f209060018060a01b03165f5260205260405f2090565b9065ffffffffffff1665ffffffffffff19825416179055565b9060018201809211610a5e57565b9190825f5260026020526111fb6103936111d08360405f209060018060a01b03165f5260205260405f2090565b926111da426118de565b955f52600260205260405f209060018060a01b03165f5260205260405f2090565b918201809211610a5e57600181019081541561129f575b61121b81611b1c565b50949083549561122a846115c2565b508161128a575b50156112695750505f198301928311610a5e5761080b9261125191611599565b90919082549060031b91821b915f19901b1916179055565b61080b94611283926001600160d01b039091169190611bdd565b505061193d565b65ffffffffffff83811691161490505f611231565b6112a882611910565b611212565b606060206108c4938184526001600160401b038151168285015201519160408082015201906103a0565b919360a0936108c4969565ffffffffffff938552600180871b03166020850152604084015216606082015281608082015201906103a0565b9293906004602061132c610aa0610aa05f5460018060a01b031690565b604051630ce9b79360e41b815292839182905afa9081156102e75761075b916113aa915f916113f9575b506001600160a01b0316936113696107fe565b6001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152906020820152604051928391602083016112ad565b823b1561013a575f946113d586926040519889978896879563724ab0f760e11b8752600487016112d7565b03925af180156102e7576113e65750565b806113f361080b926107ca565b806102fe565b611412915060203d6020116102e0576102d181836107dd565b5f611356565b5f8054604051631c9e38c760e21b8152600481019390935265ffffffffffff9390931660248301529091602091839160449183916001600160a01b03165af180156102e7576114645750565b61147c9060203d60201161106b5761105781836107dd565b50565b8115611489570490565b634e487b7160e01b5f52601260045260245ffd5b92905f549060ff8260a01c166114b5575b5050505050565b6040516313c085b760e11b815291602090839060049082906001600160a01b03165afa9182156102e7575f92611572575b5060405163065c1e0360e01b6020820190815260248201969096526001600160a01b039091166044820152606481019390935265ffffffffffff909116608483015261153f8260a481015b03601f1981018452836107dd565b6202a15c5a10611560575f928380935192620249f0f1505f808080806114ae565b604051632153f33560e21b8152600490fd5b61153f92506115926115319160203d6020116102e0576102d181836107dd565b92506114e6565b80548210156115ae575f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b8054806115f757505f5b6001600160d01b038116156115f15760016115e79201611599565b90549060031b1c90565b50505f90565b5f19908082810111610a5e57825f5260205f2001015460301c6115cc565b91909160408184031261013a57803561162d81610129565b9260208201356001600160401b03811161013a576108c49201610835565b5190811515820361013a57565b9081602091031261013a576108c49061164b565b61167891810190611615565b6040516302910f8b60e31b81526001600160a01b0392831660048201819052929160209182816024817f000000000000000000000000000000000000000000000000000000000000000088165afa9081156102e7575f916117a8575b501561179657816117086004926116e9611960565b5f80546001600160a01b0319166001600160a01b038916179055611996565b94604051928380926313c085b760e11b82525afa9182156102e7575f92611779575b505016158061176f575b61175d575161080b9015155f805460ff60a01b191691151560a01b60ff60a01b16919091179055565b60405163d2420f5960e01b8152600490fd5b5080511515611734565b61178f9250803d106102e0576102d181836107dd565b5f8061172a565b6040516362df054560e01b8152600490fd5b6117c89150833d85116117ce575b6117c081836107dd565b810190611658565b5f6116d4565b503d6117b6565b9081602091031261013a575163ffffffff8116810361013a5790565b90600163ffffffff80931601918211610a5e57565b918051156118d45780602080611821935183010191016117d5565b9161182c8382611aae565b9261183d845165ffffffffffff1690565b9065ffffffffffff80851692168281146118c85782119182611873575b505061186a576108c492506119de565b50506020015190565b9091506118808354610ec4565b63ffffffff831614918215611899575b50505f8061185a565b6118c09192506118b46118ae610adb926117f1565b85611aae565b5165ffffffffffff1690565b115f80611890565b50505050506020015190565b506108c4916119de565b65ffffffffffff908181116118f1571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b8054600160401b8110156107aa5761192d91600182018155611599565b8154905f199060031b1b19169055565b90815491600160401b8310156107aa578261125191600161080b95018155611599565b611968611b55565b611970611b55565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5f6040516119a38161078f565b5260208180518101031261013a576020906040516119c08161078f565b6119d86040519384936119d28561078f565b0161164b565b82525290565b908154905f829160058411611a48575b6119f9935084611de5565b80611a2157505f905b6001600160d01b038216156115f1576108c49160016115e79201611599565b611a3b611a30611a4292610ec4565b835f5260205f200190565b5460301c90565b90611a02565b9192611a5381611cba565b8103908111610a5e576119f993855f5265ffffffffffff808360205f20015416908516105f14611a845750916119ee565b929150611a9090611195565b906119ee565b60405190611aa3826107af565b5f6020838281520152565b9060206001611ad2611afe93611ac2611a96565b50611acb611a96565b5085611599565b509360405194611ae1866107af565b549465ffffffffffff86169586825260301c938491015201611599565b90549060405192611b0e846107af565b835260031b1c602082015290565b805480611b2d5750505f905f905f90565b5f19918183810111610a5e575f5260205f2001015460019165ffffffffffff82169160301c90565b60ff5f80516020611e458339815191525460401c1615611b7157565b604051631afcd79f60e31b8152600490fd5b8054600160401b8110156107aa57611ba091600182018155611599565b611bca57815160209092015160301b65ffffffffffff191665ffffffffffff909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b80549293928015611c9057611bf4611bff91610ec4565b825f5260205f200190565b9182549265ffffffffffff91828516928116808411611c7e57879303611c455750611c3e92509065ffffffffffff82549181199060301b169116179055565b60301c9190565b915050611c7991611c65611c576107fe565b65ffffffffffff9093168352565b6001600160d01b0386166020830152611b83565b611c3e565b604051632520601d60e01b8152600490fd5b5090611cb591611ca1611c576107fe565b6001600160d01b0385166020830152611b83565b5f9190565b60018111156108c457600181600160801b811015611dd3575b611d7b611d71611d67611d5d611d53611d49611d8797600488600160401b611d829a1015611dc6575b640100000000811015611db9575b62010000811015611dac575b610100811015611da0575b6010811015611d94575b1015611d8c575b60030260011c611d42818b61147f565b0160011c90565b611d42818a61147f565b611d42818961147f565b611d42818861147f565b611d42818761147f565b611d42818661147f565b809361147f565b821190565b900390565b60011b611d32565b811c9160021b91611d2b565b60081c91811b91611d21565b60101c9160081b91611d16565b60201c9160101b91611d0a565b60401c9160201b91611cfc565b50600160401b9050608082901c611cd3565b91905b838210611df55750505090565b9091928083169080841860011c8201809211610a5e57845f5265ffffffffffff808360205f20015416908416105f14611e325750925b9190611de8565b939250611e3e90611195565b91611e2b56fef0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220f6c8c6e53e56abe4ba9bf3f192a97636699c1edad17d1630537b4ec239db2d6c64736f6c634300081900336101603461017c576001600160401b0390601f61373e38819003918201601f1916830191848311848410176101805780849260209460405283398101031261017c5751906001600160a01b038216820361017c57306080527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff8260401c1661016a578080831603610125575b835f60a0525f60c0525f60e052610100905f8252610120905f8252610140908152604051916135a99384610195853960805184610b68015260a0518461047b015260c05184818161158e0152612c9d015260e0518481816102e801526122c2015251838181610437015261244c015251828181610c7a01526115e40152518181816108060152818161191c0152611d110152f35b6001600160401b031990911681179091556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f8080610091565b60405163f92ee8a960e01b8152600490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c80622a087514610213578063103f29071461020e5780631a2be2c4146102095780631dd5f60014610204578063267de1f3146101ff5780632964f8dc146101fa5780632c9d45b3146101f55780632dd31000146101f057806331ce4dfe146101eb57806334d098ea146101e6578063439fab91146101e1578063457821b7146101dc5780635264679b146101d7578063545ce389146101d257806369f78920146101cd5780638f42f9ab146101c85780638f82f931146101c35780639168f9d2146101be5780639a896551146101b95780639f86fd85146101b4578063a4ef9b4f146101af578063aa8e6489146101aa578063aab3595f146101a5578063b94c386e146101a0578063bb24fe8a1461019b578063bc6eac5b14610196578063c0cd7c3e14610191578063cd05b8a11461018c578063d5c24e1a14610187578063e054e08b14610182578063f9268d181461017d5763fbfa77cf14610178575f80fd5b61181b565b6116ad565b611688565b61166b565b611613565b6115cf565b6115b2565b61156f565b61121d565b6111c5565b611187565b611124565b611090565b611005565b610bda565b610b49565b610b2c565b610ae7565b61084f565b610835565b6107f1565b6106b9565b610668565b6105ff565b610466565b610422565b610406565b6103b1565b610397565b610317565b6102d3565b610261565b6001600160a01b0381160361022957565b5f80fd5b65ffffffffffff81160361022957565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b346102295760c0366003190112610229576102c56102b160043561028481610218565b61028f602435610218565b60643561029b81610218565b60a435916102a88361022d565b604435906118d1565b60405191829160208352602083019061023d565b0390f35b5f91031261022957565b34610229575f366003190112610229576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461022957604036600319011261022957602061036361035e60243561033c81610218565b6004355f526002845260405f209060018060a01b03165f5260205260405f2090565b6120da565b604051908152f35b60609060031901126102295760043561038381610218565b90602435906044356103948161022d565b90565b34610229576102c56102b16103ab3661036b565b916119a8565b3461022957604036600319011261022957602065ffffffffffff6103fc6024356103da81610218565b6004355f526001845260405f209060018060a01b03165f5260205260405f2090565b5416604051908152f35b34610229575f366003190112610229576020604051614e208152f35b34610229575f366003190112610229576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610229575f366003190112610229576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b634e487b7160e01b5f52604160045260245ffd5b602081019081106001600160401b038211176104d957604052565b6104aa565b604081019081106001600160401b038211176104d957604052565b606081019081106001600160401b038211176104d957604052565b6001600160401b0381116104d957604052565b608081019081106001600160401b038211176104d957604052565b90601f801991011681019081106001600160401b038211176104d957604052565b6040519060c082018281106001600160401b038211176104d957604052565b6040519061058f826104f9565b565b6040519061058f826104de565b6001600160401b0381116104d957601f01601f191660200190565b81601f82011215610229578035906105d08261059e565b926105de6040519485610542565b8284526020838301011161022957815f926020809301838601378301015290565b346102295760603660031901126102295760243561061c8161022d565b604435906001600160401b0382116102295761065f61064160209336906004016105b9565b6004355f90815260068552604090206001600160a01b039390612152565b16604051908152f35b34610229575f36600319011261022957602060ff5f5460a01c166040519015158152f35b9181601f84011215610229578235916001600160401b038311610229576020838186019501011161022957565b34610229576020366003190112610229576001600160401b03600435818111610229576106ea90369060040161068c565b5f80516020613554833981519152549260ff8460401c16159316801590816107e9575b60011490816107df575b1590816107d6575b506107c4575f80516020613554833981519152805467ffffffffffffffff1916600117905561075291836107a05761228b565b61075857005b5f80516020613554833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f80516020613554833981519152805460ff60401b1916600160401b17905561228b565b60405163f92ee8a960e01b8152600490fd5b9050155f61071f565b303b159150610717565b84915061070d565b34610229575f366003190112610229576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610229576102c56102b16108493661036b565b91611a2c565b346102295760a0366003190112610229576024356004803561087083610218565b604435926064356108808161022d565b6084356001600160401b0381116102295761089e903690860161068c565b94906108a86123f5565b6108b185612424565b6108b9611abe565b9580610ad1575b50506108cb4261263c565b906108e66108df825465ffffffffffff1690565b8093611b1f565b5f5490969061090b906108ff906001600160a01b031681565b6001600160a01b031690565b968260206040998a51928380926327f843b560e11b82525afa8015610acc5761094a9261093f925f92610a9b575b50611a14565b65ffffffffffff1690565b65ffffffffffff8516908110908115610a85575b50610a76576109709051848688612817565b5096878082109118028088189714610a68576102c5610a41878988887f3cb7f4ff6cecf74cee0eb9ae3ebf8933fa60a53014cce52f96da72a78dba8464896109c08a6109bb4261263c565b611b1f565b92600354978894610a116109d2610563565b8881526001600160a01b0385166020820152808b018a905265ffffffffffff8616606082015265ffffffffffff831660808201525f60a0820152611b61565b885197885265ffffffffffff938416602089015290921660408701526001600160a01b0316949081906060820190565b0390a4610a5a60015f8051602061353483398151915255565b519081529081906020820190565b855163167f871760e31b8152fd5b508551631357ac9160e11b8152fd5b9050610a9361093f4261263c565b11155f61095e565b610abe91925060203d602011610ac5575b610ab68183610542565b810190611b39565b905f610939565b503d610aac565b6118ad565b610adf929650810190611ad1565b935f806108c0565b34610229576080366003190112610229576102c56102b1600435610b0a81610218565b604435610b1681610218565b60643591610b238361022d565b60243590611c97565b34610229575f366003190112610229576020600354604051908152f35b3461022957604036600319011261022957602435610b668161022d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610bc85763ffffffff610bb36040926004355f526006602052835f206124df565b91505083929192519215158352166020820152f35b604051637ca475e560e11b8152600490fd5b346102295760603660031901126102295760048035906bffffffffffffffffffffffff8216820361022957602435610c1181610218565b6044356001600160401b03811161022957610c2f903690840161068c565b90610c386123f5565b610c40611abe565b5081610fa0575b5050604080516302910f8b60e31b8152338185019081526001600160a01b0395929491602091829082908190830103818a7f0000000000000000000000000000000000000000000000000000000000000000165afa908115610acc575f91610f73575b5015610f64575f54610ce5906001600160a01b0316936bffffffffffffffffffffffff166bffffffffffffffffffffffff193360601b161790565b95610d00610cfb885f52600660205260405f2090565b613208565b50949015610efa57610d1461093f4261263c565b65ffffffffffff9586161115610ec457610d3e610d39895f52600660205260405f2090565b6125fd565b505b610d636108ff6108ff6108ff610d5e8c5f52600660205260405f2090565b612ebb565b91808716928303610dcf575b505050505050610db4907f7b0b759b513b299fd2811f51926dca8854222a675557e8d544ce0933bf5b7570925b516001600160a01b0390911681529081906020820190565b0390a2610dcd60015f8051602061353483398151915255565b005b610de68998959796985f52600660205260405f2090565b911692845163186a323160e21b815281818981885afa908115610acc575f91610ea7575b5081600554958751998a80926327f843b560e11b82525afa908115610acc5789610e6f610e81977f7b0b759b513b299fd2811f51926dca8854222a675557e8d544ce0933bf5b75709c610e7695610db49d610e7b985f92610e8a575b50501690611de6565b9116611e07565b61263c565b90613456565b82958495610d6f565b610ea09250803d10610ac557610ab68183610542565b5f80610e66565b610ebe9150823d8411610ac557610ab68183610542565b5f610e0a565b610ee26108ff6108ff6108ff610d5e8c5f52600660205260405f2090565b82871603610d4057865163a741a04560e01b81528490fd5b5093949385169250508115610f56575091610db491610f4f7f7b0b759b513b299fd2811f51926dca8854222a675557e8d544ce0933bf5b757094610f46875f52600660205260405f2090565b610e7b4261263c565b5050610d9c565b825163a741a04560e01b8152fd5b5083516323d53b9760e21b8152fd5b610f939150823d8411610f99575b610f8b8183610542565b810190611dd2565b5f610caa565b503d610f81565b610fac91810190611ad1565b505f80610c47565b634e487b7160e01b5f52603260045260245ffd5b6003548110156110005760035f5260021b7fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b01905f90565b610fb4565b34610229576020366003190112610229576004356003548110156102295761102c90610fc8565b50805460018201546002830154600390930154604080519384526001600160a01b0390921660208401529082019290925265ffffffffffff808316606080840191909152603084901c90911660808301529190911c60ff16151560a082015260c090f35b34610229576040366003190112610229576004356110ad81610218565b6024356001600160401b038111610229575f916110cf8392369060040161068c565b90816040519283928337810184815203915af461111c6110ed611e14565b9161110e60405193849215156020840152604080840152606083019061023d565b03601f198101835282610542565b805190602001fd5b34610229576102c56102b16111383661036b565b91611e75565b906080600319830112610229576004359160243561115b81610218565b916044356111688161022d565b91606435906001600160401b03821161022957610394916004016105b9565b346102295760206103636111c061119d3661113e565b939190925f526002865260405f209060018060a01b03165f5260205260405f2090565b6126a2565b346102295760206111e16111d83661113e565b92919091612817565b50604051908152f35b9060406003198301126102295760043591602435906001600160401b038211610229576112199160040161068c565b9091565b346102295761122b366111ea565b91906112356123f5565b61123d611f9a565b9280611559575b50506003548110156115475761125981610fc8565b509081549061126782612424565b6003830180549365ffffffffffff9384861660018060a01b0361128c895183856119bf565b1615158061151c575b80611503575b6114f1576112b1816112ac4261263c565b611a14565b5f546112c7906108ff906001600160a01b031681565b96600460206040998a51928380926327f843b560e11b82525afa8015610acc5782915f916114d2575b50169116116114c157600183018054909861131b93929188906001600160a01b031691015192612817565b90611330816002850154818082109118021890565b9687156114b05760601c60ff1661149f579261145861144b89946114236114108b9687876102c59f61141e8f9d8f9e61145e9f61137a86600160601b60ff60601b19825416179055565b8a54855461139c91906001600160a01b0316885465ffffffffffff1691612a4d565b8a5485546113b59189916001600160a01b031690612acd565b8a5494546113d3906001600160a01b0316965465ffffffffffff1690565b976113dc610582565b9384526020840152818301525196879160208301919091604080606083019480518452602081015160208501520151910152565b03601f198101875286610542565b612c39565b61143c611436855465ffffffffffff1690565b86612d42565b5494546001600160a01b031690565b915465ffffffffffff1690565b92612dbf565b81518381527f5cc28df3b54da9d06f805d87616ebf969c81310f2aa8369cb14ca50f815d411190602090a2610a5a60015f8051602061353483398151915255565b8551633428e90760e01b8152600490fd5b865163167f871760e31b8152600490fd5b8551639ea153eb60e01b8152600490fd5b6114eb915060203d602011610ac557610ab68183610542565b5f6112f0565b60405163b62b15c760e01b8152600490fd5b5061151061093f4261263c565b868860301c161161129b565b506115406108ff61153461152f4261263c565b6119f8565b60208b015190856119bf565b1515611295565b604051637822972360e11b8152600490fd5b611567929350810190611fb9565b905f80611244565b34610229575f3660031901126102295760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610229575f366003190112610229576020600554604051908152f35b34610229575f366003190112610229576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610229576040366003190112610229576024356001600160401b0381116102295761165961164860209236906004016105b9565b6116514261263c565b6004356119bf565b6040516001600160a01b039091168152f35b34610229575f366003190112610229576020604051620249f08152f35b34610229575f36600319011261022957602065ffffffffffff60045416604051908152f35b34610229576116bb366111ea565b906116c46123f5565b6116cc612041565b9180611807575b5050600354821015611547576116e882610fc8565b506003815491019182549165ffffffffffff9160018060a01b036117108251858716856119bf565b169182159182156117de575b50506117cc5733036117ba5761173461093f4261263c565b908260301c1611156117a95760601c60ff1661179757805460ff60601b1916600160601b17905533907f7d3d269c851b72257a5194a401d151902e9be4347d555996dcff3ff86a077e925f80a3610dcd60015f8051602061353483398151915255565b604051633428e90760e01b8152600490fd5b60405162c457e560e81b8152600490fd5b604051635d154fe160e11b8152600490fd5b60405163dd1ebd9d60e01b8152600490fd5b6117ff9250906108ff9160206117f661152f4261263c565b910151916119bf565b155f8061171c565b611814925081019061205a565b5f806116d3565b34610229575f366003190112610229575f546040516001600160a01b039091168152602090f35b81601f82011215610229578051906118598261059e565b926118676040519485610542565b8284526020838301011161022957815f9260208093018386015e8301015290565b906020828203126102295781516001600160401b038111610229576103949201611842565b6040513d5f823e3d90fd5b604061039492602083525191602080820152019061023d565b604051632751749360e11b81526001600160a01b0391821660048201526024810192909252909116604482015265ffffffffffff9091166064820152606091905f81806084810103817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610acc575f91611986575b50805161195e5750565b61110e9192506103949060405190611975826104be565b8152604051928391602083016118b8565b6119a291503d805f833e61199a8183610542565b810190611888565b5f611954565b92916119b691606094611e75565b805161195e5750565b5f9081526006602052604090206001600160a01b03926119e0929091612152565b1690565b634e487b7160e01b5f52601160045260245ffd5b65ffffffffffff9081165f190191908211611a0f57565b6119e4565b65ffffffffffff9182169082160391908211611a0f57565b611a4d90939293611a406060958483611e75565b9261113861152f4261263c565b815115801590611ab4575b611a60575050565b611aa19293509061110e6103949260405192611a7b846104de565b83526020830190815260405194859360208086015251604080860152608085019061023d565b9051838203603f1901606085015261023d565b5080511515611a58565b60405190611acb826104be565b60608252565b906020828203126102295781356001600160401b03928382116102295701906020828203126102295760405192611b07846104be565b823590811161022957611b1a92016105b9565b815290565b91909165ffffffffffff80809416911601918211611a0f57565b9081602091031261022957516103948161022d565b634e487b7160e01b5f525f60045260245ffd5b600354600160401b8110156104d957806001611b809201600355610fc8565b919091611c43578051825560208101516001830180546001600160a01b0319166001600160a01b039290921691909117905561058f91611c299060a090600390604085015160028201550192611bf665ffffffffffff606083015116859065ffffffffffff1665ffffffffffff19825416179055565b60808101516bffffffffffff00000000000085549160301b16906bffffffffffff00000000000019161784550151151590565b815460ff60601b191690151560601b60ff60601b16179055565b611b4e565b906103949160208152611c67825160606020840152608083019061023d565b9060606040611c87602086015194601f199586868303018487015261023d565b940151928285030191015261023d565b919093925f606095611caa838287611e75565b94611d0d611cc4611cbd61152f4261263c565b8484611e75565b604051632751749360e11b81526001600160a01b039384166004820152602481019490945291909516604483015265ffffffffffff909316606482015292839081906084820190565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa918215610acc575f92611da9575b50825115801590611d9f575b8015611d95575b611d6557505050565b61110e939450906103949291611d79610582565b9283526020830152604082015260405192839160208301611c48565b5081511515611d5c565b5080511515611d55565b611dbe9192503d805f833e61199a8183610542565b905f611d49565b5190811515820361022957565b908160209103126102295761039490611dc5565b81810292918115918404141715611a0f57565b9060018201809211611a0f57565b91908201809211611a0f57565b3d15611e3e573d90611e258261059e565b91611e336040519384610542565b82523d5f602084013e565b606090565b519063ffffffff8216820361022957565b9190826040910312610229576103946020611e6e84611dc5565b9301611e43565b92915f8060609565ffffffffffff60405194602096638f82f93160e01b88880152602487015216604485015260448452611eae84610527565b6040519384611edb87820192639f86fd8560e01b845230602484015260406044840152606483019061023d565b0394611eef601f1996878101835282610542565b51915afa50611f0d611eff611e14565b83808251830101910161266e565b9015611f6057808380611f2593518301019101611e54565b9290611f3057505050565b61039492939450611f54604051948592830191909163ffffffff6020820193169052565b03908101835282610542565b809150519182156102295701fd5b5f9081526002602090815260408083206001600160a01b039094168352929052206103949291906126a2565b60405190611fa7826104f9565b60606040838281528260208201520152565b906020828203126102295781356001600160401b03928382116102295701906060828203126102295760405192611fef846104f9565b823581811161022957826120049185016105b9565b84526020830135818111610229578261201e9185016105b9565b602085015260408301359081116102295761203992016105b9565b604082015290565b6040519061204e826104de565b60606020838281520152565b906020828203126102295781356001600160401b03928382116102295701906040828203126102295760405192612090846104de565b823581811161022957826120a59185016105b9565b84526020830135908111610229576120bd92016105b9565b602082015290565b8054821015611000575f5260205f2001905f90565b6120e381612ebb565b6001600160d01b038116156121085760016120fe92016120c5565b90549060031b1c90565b50505f90565b908160209103126102295761039490611e43565b5f19810191908211611a0f57565b91908203918211611a0f57565b90600163ffffffff80931601918211611a0f57565b91805115612236578060208061216d9351830101910161210e565b916121788382612efb565b92612189845165ffffffffffff1690565b9065ffffffffffff808516921682811461221d57821191826121c8575b50506121b65761039492506132fe565b5050602001516001600160d01b031690565b9091506121d58354612122565b63ffffffff8316149182156121ee575b50505f806121a6565b61221591925061220961220361093f9261213d565b85612efb565b5165ffffffffffff1690565b115f806121e5565b50505050602091909101516001600160d01b0316905090565b50610394916132fe565b91909160408184031261022957803561225881610218565b9260208201356001600160401b0381116102295761039492016105b9565b90816020910312610229575161039481610218565b61229791810190612240565b6040516302910f8b60e31b81526001600160a01b0392831660048201819052929160209182816024817f000000000000000000000000000000000000000000000000000000000000000088165afa908115610acc575f916123d8575b50156123c65781612328600492612308612f4f565b5f80546001600160a01b0319166001600160a01b03891617905586612fdc565b94604051928380926313c085b760e11b82525afa918215610acc575f92612399575b505016158061238f575b61237d575161058f9015155f805460ff60a01b191691151560a01b60ff60a01b16919091179055565b60405163d2420f5960e01b8152600490fd5b5080511515612354565b6123b89250803d106123bf575b6123b08183610542565b810190612276565b5f8061234a565b503d6123a6565b6040516362df054560e01b8152600490fd5b6123ef9150833d8511610f9957610f8b8183610542565b5f6122f3565b5f8051602061353483398151915260028154146124125760029055565b604051633ee5aeb560e01b8152600490fd5b604051635daf681960e11b815260609190911c60048201526001600160a01b036020826024817f000000000000000000000000000000000000000000000000000000000000000085165afa918215610acc575f9261249a575b503391160361248857565b60405163227bf64d60e01b8152600490fd5b6124b491925060203d6020116123bf576123b08183610542565b905f61247d565b906040516124c8816104de565b915465ffffffffffff8116835260301c6020830152565b8054915f9280600581116125b4575b5092905b83821061256e57505081156125625761251c6125219161251184612122565b905f5260205f200190565b6124bb565b9161255b61255261254c602061253d875165ffffffffffff1690565b9601516001600160d01b031690565b93612122565b63ffffffff1690565b6001939291565b50505f905f905f905f90565b909261257a81856133fa565b90835f5265ffffffffffff808360205f20015416908416105f146125a15750925b906124f2565b9350600181018091111561259b576119e4565b906125be826130dd565b8203918211611a0f57835f5265ffffffffffff808360205f20015416908416105f146125ec57505b5f6124ee565b93506125f790611df9565b926125e6565b9061260782612ebb565b9180548015612628575f19019061261e82826120c5565b611c43575f905555565b634e487b7160e01b5f52603160045260245ffd5b65ffffffffffff9081811161264f571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b9190916040818403126102295761268481611dc5565b9260208201516001600160401b038111610229576103949201611842565b9180511561276457806020806126bd9351830101910161210e565b916126c8838261324c565b926126d9845165ffffffffffff1690565b9065ffffffffffff8085169216828114612758578211918261270f575b5050612706576103949250613241565b50506020015190565b90915061271c8354612122565b63ffffffff831614918215612735575b50505f806126f6565b61275091925061220961274a61093f9261213d565b8561324c565b115f8061272c565b50505050506020015190565b5061039491613241565b906020828203126102295781516001600160401b039283821161022957019060408282031261022957604051926127a4846104de565b825181811161022957826127b9918501611842565b84526020830151908111610229576120bd9201611842565b90816020910312610229575190565b9081526001600160a01b03909116602082015265ffffffffffff90911660408201526080606082018190526103949291019061023d565b92612820612041565b90805180612a33575b50506128344261263c565b5f5490949061284d906108ff906001600160a01b031681565b93604051956327f843b560e11b875260209687816004818a5afa8015610acc576128819261093f925f92612a1b5750611a14565b65ffffffffffff8216908110908115612a04575b81156129d3575b506129c7578560049560405196878092630ce9b79360e41b82525afa948515610acc576128ee9587915f916129aa575b50845190604051808099819463e02f693760e01b8352878b8a600486016127e0565b03916001600160a01b03165afa938415610acc57612966955f95612969575b5092612955859361295b9361295596869a61294c61035e83612937875f52600260205260405f2090565b9060018060a01b03165f5260205260405f2090565b95015192611f6e565b90612130565b818082109118021890565b91565b61295b929550612955949193612997612955928a3d8c116129a3575b61298f8183610542565b8101906127d1565b9693509391945061290d565b503d612985565b6129c19150823d84116123bf576123b08183610542565b5f6128cc565b5050505050505f905f90565b90506129fd61093f6129f187612937875f52600160205260405f2090565b5465ffffffffffff1690565b115f61289c565b9050612a1261093f4261263c565b81101590612895565b610abe9192508a3d8c11610ac557610ab68183610542565b612a46925060208091830101910161276e565b5f80612829565b919091805f52600160205265ffffffffffff80612a7d8560405f209060018060a01b03165f5260205260405f2090565b541690831611612a8c57505050565b61058f92612ab4915f52600160205260405f209060018060a01b03165f5260205260405f2090565b9065ffffffffffff1665ffffffffffff19825416179055565b9190825f526002602052612b2561035e612afa8360405f209060018060a01b03165f5260205260405f2090565b92612b044261263c565b955f52600260205260405f209060018060a01b03165f5260205260405f2090565b918201809211611a0f576001810190815415612bc9575b612b4581613208565b509490835495612b54846120da565b5081612bb4575b5015612b935750505f198301928311611a0f5761058f92612b7b916120c5565b90919082549060031b91821b915f19901b1916179055565b61058f94612bad926001600160d01b039091169190613456565b50506132db565b65ffffffffffff83811691161490505f612b5b565b612bd2826132ae565b612b3c565b60606020610394938184526001600160401b0381511682850152015191604080820152019061023d565b919360a093610394969565ffffffffffff938552600180871b031660208501526040840152166060820152816080820152019061023d565b92939060046020612c566108ff6108ff5f5460018060a01b031690565b604051630ce9b79360e41b815292839182905afa908115610acc5761110e91612cd4915f91612d23575b506001600160a01b031693612c93610591565b6001600160401b037f000000000000000000000000000000000000000000000000000000000000000016815290602082015260405192839160208301612bd7565b823b15610229575f94612cff86926040519889978896879563724ab0f760e11b875260048701612c01565b03925af18015610acc57612d105750565b80612d1d61058f92610514565b806102c9565b612d3c915060203d6020116123bf576123b08183610542565b5f612c80565b65ffffffffffff9160446020925f60018060a01b038154166040519687958694631c9e38c760e21b865260048601521660248401525af18015610acc57612d865750565b612d9e9060203d6020116129a35761298f8183610542565b50565b8115612dab570490565b634e487b7160e01b5f52601260045260245ffd5b92905f549060ff8260a01c16612dd7575b5050505050565b6040516313c085b760e11b815291602090839060049082906001600160a01b03165afa918215610acc575f92612e94575b5060405163065c1e0360e01b6020820190815260248201969096526001600160a01b039091166044820152606481019390935265ffffffffffff9091166084830152612e618260a481015b03601f198101845283610542565b6202a15c5a10612e82575f928380935192620249f0f1505f80808080612dd0565b604051632153f33560e21b8152600490fd5b612e619250612eb4612e539160203d6020116123bf576123b08183610542565b9250612e08565b805480612ec85750505f90565b5f19918183810111611a0f575f5260205f2001015460301c90565b60405190612ef0826104de565b5f6020838281520152565b612f2091612f1a91612f0b612ee3565b50612f14612ee3565b506120c5565b506124bb565b65ffffffffffff81511690602060018060d01b039101511660405191612f45836104de565b8252602082015290565b612f576133cc565b612f5f6133cc565b60015f8051602061353483398151915255565b60405190612f7f826104be565b5f8252565b809103906060821261022957602060405192612f9f846104f9565b12610229576040908151612fb2816104be565b612fbb82611dc5565b815283526020810151612fcd8161022d565b60208401520151604082015290565b90600490612fe8612f72565b508051612fff602092838080948301019101612f84565b6040516327f843b560e11b815290949093849182906001600160a01b03165afa918215610acc575f926130be575b50820190613041825165ffffffffffff1690565b65ffffffffffff918216911610156130ac5760408201600381511061309a57613090613076613096935165ffffffffffff1690565b65ffffffffffff1665ffffffffffff196004541617600455565b51600555565b5190565b6040516354f778f360e01b8152600490fd5b6040516367d5e3df60e11b8152600490fd5b816130d69293503d8411610ac557610ab68183610542565b905f61302d565b600181111561039457600181600160801b8110156131f6575b61319e61319461318a61318061317661316c6131aa97600488600160401b6131a59a10156131e9575b6401000000008110156131dc575b620100008110156131cf575b6101008110156131c3575b60108110156131b7575b10156131af575b60030260011c613165818b612da1565b0160011c90565b613165818a612da1565b6131658189612da1565b6131658188612da1565b6131658187612da1565b6131658186612da1565b8093612da1565b821190565b900390565b60011b613155565b811c9160021b9161314e565b60081c91811b91613144565b60101c9160081b91613139565b60201c9160101b9161312d565b60401c9160201b9161311f565b50600160401b9050608082901c6130f6565b8054806132195750505f905f905f90565b5f19918183810111611a0f575f5260205f2001015460019165ffffffffffff82169160301c90565b906120e390826132fe565b9061326f612f1a6132909261325f612ee3565b50613268612ee3565b50846120c5565b91600165ffffffffffff845116936020828060d01b039101511691016120c5565b905490604051926132a0846104de565b835260031b1c602082015290565b8054600160401b8110156104d9576132cb916001820181556120c5565b8154905f199060031b1b19169055565b90815491600160401b8310156104d95782612b7b91600161058f950181556120c5565b908154905f918060058111613383575b5091905b82821061333d575050806133265750505f90565b6103949161251161333692612122565b5460301c90565b909161334981846133fa565b90845f5265ffffffffffff808360205f20015416908416105f146133705750915b90613312565b9250600181018091111561336a576119e4565b9061338d826130dd565b8203918211611a0f57845f5265ffffffffffff808360205f20015416908416105f146133bb57505b5f61330e565b92506133c690611df9565b916133b5565b60ff5f805160206135548339815191525460401c16156133e857565b604051631afcd79f60e31b8152600490fd5b90808216911860011c8101809111611a0f5790565b8054600160401b8110156104d95761342c916001820181556120c5565b611c4357815160209092015160301b65ffffffffffff191665ffffffffffff909216919091179055565b805492939280156135095761346d61347891612122565b825f5260205f200190565b9182549265ffffffffffff918285169281168084116134f7578793036134be57506134b792509065ffffffffffff82549181199060301b169116179055565b60301c9190565b9150506134f2916134de6134d0610591565b65ffffffffffff9093168352565b6001600160d01b038616602083015261340f565b6134b7565b604051632520601d60e01b8152600490fd5b509061352e9161351a6134d0610591565b6001600160d01b038516602083015261340f565b5f919056fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a264697066735822122083c9d2c27050cb61d0026c4a120151139ad36b1ef086f66b4ca1715f04bbc28864736f6c63430008190033","sourceMap":"624:2139:91:-:0;;;;;;;;;;;;;-1:-1:-1;;624:2139:91;;;;-1:-1:-1;;;;;624:2139:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;624:2139:91;;;;;;;;348:4:89;332:21;;8837:64:22;624:2139:91;;;;;;;7896:76:22;;624:2139:91;;;;;;7985:34:22;7981:146;;-1:-1:-1;525:17:76;;;-1:-1:-1;525:17:76;;-1:-1:-1;552:12:76;;-1:-1:-1;2353:28:99;;2391:53;;-1:-1:-1;2391:53:99;;987:41:91;;;;624:2139;;1062:31;;;;;;;;;;;;;;624:2139;1062:31;;;;;;348:4:89;624:2139:91;;1062:31;;;-1:-1:-1;1062:31:91;;;;;;1038:56;;624:2139;;1038:56;;624:2139;;1133:35;;;;;;;;;;;;;;;624:2139;1133:35;;;;;;348:4:89;624:2139:91;;1133:35;;;-1:-1:-1;1133:35:91;;;;;;1104:65;624:2139;;1104:65;;624:2139;;;;;;;;332:21:89;624:2139:91;;;;;525:17:76;624:2139:91;;;;;552:12:76;624:2139:91;;;;;2353:28:99;624:2139:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1133:35;624:2139;;;-1:-1:-1;624:2139:91;;;;;1133:35;624:2139;;;-1:-1:-1;624:2139:91;;;;;-1:-1:-1;624:2139:91;7981:146:22;-1:-1:-1;;;;;;624:2139:91;;;;;;;;;8087:29:22;;624:2139:91;;8087:29:22;7981:146;;;;;7896:76;624:2139:91;;-1:-1:-1;;;7938:23:22;;;;;624:2139:91;-1:-1:-1;624:2139:91;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c8063103f2907146101545780631a2be2c41461014f578063267de1f31461014a5780632964f8dc146101455780632c9d45b3146101405780632dd310001461013b57806334d098ea14610136578063439fab91146101315780634a7196551461012c5780634ea2e926146101275780634eb5a242146101225780636565b7db1461011d578063770280461461011857806379d89614146101135780639f86fd851461010e578063aa8e648914610109578063aab3595f14610104578063bb24fe8a146100ff578063d5c24e1a146100fa5763fbfa77cf146100f5575f80fd5b610945565b610928565b6108e5565b6108c0565b610882565b6106c5565b610681565b6105ca565b610586565b610542565b610525565b6104f0565b61034b565b6102fa565b6102b6565b610272565b610256565b610201565b6101ad565b34610198575f366003190112610198576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5f80fd5b6001600160a01b0381160361019857565b346101985760403660031901126101985760206101f96101f46024356101d28161019c565b6004355f526002845260405f209060018060a01b03165f5260205260405f2090565b610da5565b604051908152f35b3461019857604036600319011261019857602065ffffffffffff61024c60243561022a8161019c565b6004355f526001845260405f209060018060a01b03165f5260205260405f2090565b5416604051908152f35b34610198575f366003190112610198576020604051614e208152f35b34610198575f366003190112610198576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610198575f366003190112610198576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610198575f36600319011261019857602060ff5f5460a01c166040519015158152f35b9181601f84011215610198578235916001600160401b038311610198576020838186019501011161019857565b34610198576020366003190112610198576001600160401b036004358181116101985761037c90369060040161031e565b5f80516020611999833981519152549260ff8460401c161593168015908161047b575b6001149081610471575b159081610468575b50610456575f80516020611999833981519152805467ffffffffffffffff191660011790556103e4918361043257610e47565b6103ea57005b5f80516020611999833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f80516020611999833981519152805460ff60401b1916600160401b179055610e47565b60405163f92ee8a960e01b8152600490fd5b9050155f6103b1565b303b1591506103a9565b84915061039f565b65ffffffffffff81160361019857565b6080906003190112610198576004356104ab8161019c565b90602435906044356104bc8161019c565b906064356104c981610483565b90565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b346101985761052161050d61050436610493565b929190916109ab565b6040519182916020835260208301906104cc565b0390f35b346101985761052161050d61053936610493565b92919091610b76565b34610198575f366003190112610198576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610198575f366003190112610198576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610198576060366003190112610198576024356105e78161019c565b6044356105f381610483565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361066f5761064d610652926004355f52600260205260405f209060018060a01b03165f5260205260405f2090565b611045565b60408051941515855263ffffffff91909116602085015292915050f35b604051637ca475e560e11b8152600490fd5b34610198575f366003190112610198576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610198576040366003190112610198576004356106e28161019c565b6024356001600160401b038111610198575f916107048392369060040161031e565b90816040519283928337810184815203915af4610751610722610d21565b916107436040519384921515602084015260408084015260608301906104cc565b03601f1981018352826107a8565b805190602001fd5b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b0382111761078857604052565b610759565b60a081019081106001600160401b0382111761078857604052565b90601f801991011681019081106001600160401b0382111761078857604052565b604051906107d68261076d565b565b6001600160401b03811161078857601f01601f191660200190565b81601f820112156101985780359061080a826107d8565b9261081860405194856107a8565b8284526020838301011161019857815f926020809301838601378301015290565b90608060031983011261019857600435916024356108568161019c565b9160443561086381610483565b91606435906001600160401b038211610198576104c9916004016107f3565b346101985760206101f96108bb61089836610839565b939190925f526002865260405f209060018060a01b03165f5260205260405f2090565b611173565b346101985760206108dc6108d336610839565b92919091611342565b50604051908152f35b34610198575f3660031901126101985760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610198575f366003190112610198576020604051620249f08152f35b34610198575f366003190112610198575f546040516001600160a01b039091168152602090f35b5190811515820361019857565b519063ffffffff8216820361019857565b9190826040910312610198576104c960206109a48461096c565b9301610979565b5f809195949593929365ffffffffffff60609760405195602097633b81402360e11b89890152602488015260018060a01b03166044870152166064850152606484526109f68461078d565b6040519384610a2387820192639f86fd8560e01b84523060248401526040604484015260648301906104cc565b0394610a37601f19968781018352826107a8565b51915afa50610a55610a47610d21565b838082518301019101610fb0565b9015610aa857808380610a6d9351830101910161098a565b9290610a7857505050565b6104c992939450610a9c604051948592830191909163ffffffff6020820193169052565b039081018352826107a8565b809150519182156101985701fd5b9081602091031261019857516104c98161019c565b6040513d5f823e3d90fd5b81601f8201121561019857805190610aed826107d8565b92610afb60405194856107a8565b8284526020838301011161019857815f9260208093018386015e8301015290565b906020828203126101985781516001600160401b038111610198576104c99201610ad6565b906104c991602081526020610b61835160408385015260608401906104cc565b920151906040601f19828503019101526104cc565b60405163fbfa77cf60e01b815260609594919391926020926001600160a01b03929091908481600481878b165afa908115610cd257849186915f91610d04575b50600460405180948193630ce9b79360e41b8352165afa8015610cd25786948385925f948591610cd7575b506040516304bb92e160e31b81526001600160a01b039182166004820152602481019290925292909216604483015265ffffffffffff97909716606482015295869060849082907f0000000000000000000000000000000000000000000000000000000000000000165afa948515610cd2575f95610caa575b50610c669394956109ab565b825115801590610ca0575b610c7a57505050565b6104c992939450610c896107c9565b938452818401526107436040519384928301610b41565b5080511515610c71565b610c66949550610ccb903d805f833e610cc381836107a8565b810190610b1c565b9493610c5a565b610acb565b610cf79150893d8b11610cfd575b610cef81836107a8565b810190610ab6565b5f610be1565b503d610ce5565b610d1b9150823d8411610cfd57610cef81836107a8565b5f610bb6565b3d15610d4b573d90610d32826107d8565b91610d4060405193846107a8565b82523d5f602084013e565b606090565b5f9081526002602090815260408083206001600160a01b039094168352929052206104c9929190611173565b8054821015610d91575f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b805480610dda57505f5b6001600160d01b03811615610dd4576001610dca9201610d7c565b90549060031b1c90565b50505f90565b5f19908082810111610df857825f5260205f2001015460301c610daf565b610fe4565b919091604081840312610198578035610e158161019c565b9260208201356001600160401b038111610198576104c992016107f3565b90816020910312610198576104c99061096c565b610e5391810190610dfd565b506040516302910f8b60e31b81526001600160a01b0391821660048201819052919060209081816024817f000000000000000000000000000000000000000000000000000000000000000087165afa908115610cd2575f91610f83575b5015610f7157610ebe61159c565b5f80546001600160a01b0319166001600160a01b038516179055600481610ee36115d2565b94604051928380926313c085b760e11b82525afa918215610cd2575f92610f54575b5050161580610f4a575b610f3857516107d69015155f805460ff60a01b191691151560a01b60ff60a01b16919091179055565b60405163d2420f5960e01b8152600490fd5b5080511515610f0f565b610f6a9250803d10610cfd57610cef81836107a8565b5f80610f05565b6040516362df054560e01b8152600490fd5b610fa39150823d8411610fa9575b610f9b81836107a8565b810190610e33565b5f610eb0565b503d610f91565b91909160408184031261019857610fc68161096c565b9260208201516001600160401b038111610198576104c99201610ad6565b634e487b7160e01b5f52601160045260245ffd5b5f19810191908211610df857565b91908203918211610df857565b9060018201809211610df857565b9060405161102e8161076d565b915465ffffffffffff8116835260301c6020830152565b91908254905f8291600584116110e3575b61106193508561173d565b9081156110d7576110d06110c76110c1610dca61109361108e61108388610ff8565b895f5260205f200190565b611021565b9660016110ba60206110ab8b5165ffffffffffff1690565b9a01516001600160d01b031690565b9101610d7c565b93610ff8565b63ffffffff1690565b6001939291565b5f925082915081908190565b91926110ee81611612565b8103908111610df85761106193865f526111226111178360205f200165ffffffffffff90541690565b65ffffffffffff1690565b65ffffffffffff85161015611138575091611056565b92915061114490611013565b90611056565b90816020910312610198576104c990610979565b90600163ffffffff80931601918211610df857565b91805115611241578060208061118e9351830101910161114a565b916111998382611864565b926111aa845165ffffffffffff1690565b9065ffffffffffff808516921682811461123557821191826111e0575b50506111d7576104c99250611794565b50506020015190565b9091506111ed8354610ff8565b63ffffffff831614918215611206575b50505f806111c7565b61122d91925061122161121b6111179261115e565b85611864565b5165ffffffffffff1690565b115f806111fd565b50505050506020015190565b506104c991611794565b604051906112588261076d565b60606020838281520152565b906020828203126101985781516001600160401b0392838211610198570190604082820312610198576040519261129a8461076d565b825181811161019857826112af918501610ad6565b84526020830151908111610198576112c79201610ad6565b602082015290565b9081602091031261019857516104c981610483565b65ffffffffffff9182169082160391908211610df857565b90816020910312610198575190565b9081526001600160a01b03909116602082015265ffffffffffff90911660408201526080606082018190526104c9929101906104cc565b9261134b61124b565b90805180611582575b505061135f4261190f565b5f5490949061138490611378906001600160a01b031681565b6001600160a01b031690565b93604051956327f843b560e11b875260209687816004818a5afa8015610cd2576113b992611117925f92611553575b506112e4565b65ffffffffffff821690811090811561153c575b811561150b575b506114ff578560049560405196878092630ce9b79360e41b82525afa948515610cd2576114269587915f916114e2575b50845190604051808099819463e02f693760e01b8352878b8a6004860161130b565b03916001600160a01b03165afa938415610cd25761149e955f956114a1575b509261148d85936114939361148d96869a6114846101f48361146f875f52600260205260405f2090565b9060018060a01b03165f5260205260405f2090565b95015192610d50565b90611006565b818082109118021890565b91565b61149392955061148d9491936114cf61148d928a3d8c116114db575b6114c781836107a8565b8101906112fc565b96935093919450611445565b503d6114bd565b6114f99150823d8411610cfd57610cef81836107a8565b5f611404565b5050505050505f905f90565b90506115356111176115298761146f875f52600160205260405f2090565b5465ffffffffffff1690565b115f6113d4565b905061154a6111174261190f565b811015906113cd565b6115749192508a3d8c1161157b575b61156c81836107a8565b8101906112cf565b905f6113b3565b503d611562565b6115959250602080918301019101611264565b5f80611354565b6115a46118cc565b6115ac6118cc565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60405190602082018281106001600160401b03821117610788576040525f8252565b81156115fe570490565b634e487b7160e01b5f52601260045260245ffd5b60018111156104c957600181600160801b81101561172b575b6116d36116c96116bf6116b56116ab6116a16116df97600488600160401b6116da9a101561171e575b640100000000811015611711575b62010000811015611704575b6101008110156116f8575b60108110156116ec575b10156116e4575b60030260011c61169a818b6115f4565b0160011c90565b61169a818a6115f4565b61169a81896115f4565b61169a81886115f4565b61169a81876115f4565b61169a81866115f4565b80936115f4565b821190565b900390565b60011b61168a565b811c9160021b91611683565b60081c91811b91611679565b60101c9160081b9161166e565b60201c9160101b91611662565b60401c9160201b91611654565b50600160401b9050608082901c61162b565b905b83831061174c5750505090565b90919261175981856118fa565b90835f5265ffffffffffff808360205f20015416908416105f146117815750925b919061173f565b9350600181018091111561177a57610fe4565b908154905f8291600584116117fe575b6117af935084611941565b806117d757505f905b6001600160d01b03821615610dd4576104c9916001610dca9201610d7c565b6117f16117e66117f892610ff8565b835f5260205f200190565b5460301c90565b906117b8565b919261180981611612565b8103908111610df8576117af93855f5265ffffffffffff808360205f20015416908516105f1461183a5750916117a4565b92915061184690611013565b906117a4565b604051906118598261076d565b5f6020838281520152565b9061188d6118876118ae9261187761184c565b5061188061184c565b5084610d7c565b50611021565b91600165ffffffffffff845116936020828060d01b03910151169101610d7c565b905490604051926118be8461076d565b835260031b1c602082015290565b60ff5f805160206119998339815191525460401c16156118e857565b604051631afcd79f60e31b8152600490fd5b90808216911860011c8101809111610df85790565b65ffffffffffff90818111611922571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b905b8383106119505750505090565b90919261195d81856118fa565b90835f5265ffffffffffff808360205f20015416908416105f146119855750925b9190611943565b9350600181018091111561197e57610fe456fef0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220f277a4f1d79c926d3cf47f1d1c69c51a336ff12303565531614d4d54627d5eb964736f6c63430008190033","sourceMap":"624:2139:91:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;-1:-1:-1;;624:2139:91;;;;;;1435:38:99;-1:-1:-1;;;;;624:2139:91;;;;;;;;;;;-1:-1:-1;;;;;624:2139:91;;;;;:::o;:::-;;;;;;-1:-1:-1;;624:2139:91;;;;;2936:47:99;:38;624:2139:91;;;;;:::i;:::-;;;-1:-1:-1;624:2139:91;2936:16:99;624:2139:91;;;-1:-1:-1;624:2139:91;;;;;;;;;;;;;;;;;2936:38:99;:47;:::i;:::-;624:2139:91;;;;;;;;;;;;-1:-1:-1;;624:2139:91;;;;;;1788:109:99;624:2139:91;;;;;:::i;:::-;;;-1:-1:-1;624:2139:91;1788:109:99;624:2139:91;;;-1:-1:-1;624:2139:91;;;;;;;;;;;;;;;;;1788:109:99;624:2139:91;;;;;;;;;;;;;;-1:-1:-1;;624:2139:91;;;;;;;1374:6:99;624:2139:91;;;;;;;;;-1:-1:-1;;624:2139:91;;;;;;1528:51:99;-1:-1:-1;;;;;624:2139:91;;;;;;;;;;;;-1:-1:-1;;624:2139:91;;;;;;322:32:76;-1:-1:-1;;;;;624:2139:91;;;;;;;;;;;;-1:-1:-1;;624:2139:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;624:2139:91;;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;624:2139:91;;;;-1:-1:-1;;;;;624:2139:91;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;624:2139:91;;;;;;;4301:16:22;624:2139:91;;4726:16:22;;:34;;;;624:2139:91;4805:1:22;4790:16;:50;;;;624:2139:91;4855:13:22;:30;;;;624:2139:91;4851:91:22;;;-1:-1:-1;;;;;;;;;;;624:2139:91;;-1:-1:-1;;624:2139:91;;;;;718:4:76;;4951:18:22;4979:67;;718:4:76;:::i;:::-;5066:101:22;;624:2139:91;5066:101:22;-1:-1:-1;;;;;;;;;;;624:2139:91;;-1:-1:-1;;;;624:2139:91;;;;;-1:-1:-1;624:2139:91;;5142:14:22;;624:2139:91;;5142:14:22;624:2139:91;4979:67:22;-1:-1:-1;;;;;;;;;;;624:2139:91;;-1:-1:-1;;;;624:2139:91;-1:-1:-1;;;624:2139:91;;;718:4:76;:::i;4851:91:22:-;624:2139:91;;-1:-1:-1;;;4908:23:22;;624:2139:91;;4908:23:22;4855:30;4872:13;;;4855:30;;;4790:50;4818:4;4810:25;:30;;-1:-1:-1;4790:50:22;;4726:34;;;-1:-1:-1;4726:34:22;;624:2139:91;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;624:2139:91;;;;;;;;-1:-1:-1;;624:2139:91;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;-1:-1:-1;;624:2139:91;;;;;;778:38;-1:-1:-1;;;;;624:2139:91;;;;;;;;;;;;-1:-1:-1;;624:2139:91;;;;;;822:43;-1:-1:-1;;;;;624:2139:91;;;;;;;;;;;;-1:-1:-1;;624:2139:91;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;449:5:89;-1:-1:-1;;;;;624:2139:91;435:10:89;:19;431:71;;1400:38:91;:77;624:2139;;;-1:-1:-1;624:2139:91;1400:16;624:2139;;;-1:-1:-1;624:2139:91;;;;;;;;;;;;;;;;;1400:38;:77;:::i;:::-;624:2139;;;;;;;;;;;;;;;;;;;-1:-1:-1;;624:2139:91;431:71:89;624:2139:91;;-1:-1:-1;;;477:14:89;;624:2139:91;;477:14:89;624:2139:91;;;;;;-1:-1:-1;;624:2139:91;;;;;;727:45;-1:-1:-1;;;;;624:2139:91;;;;;;;;;;;;-1:-1:-1;;624:2139:91;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;624:2139:91;;;;-1:-1:-1;624:2139:91;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;416:25:82;;;;477:31;416:25;;:::i;:::-;624:2139:91;;;;;;;;;;477:31:82;;624:2139:91;;;;;;;;;;;:::i;:::-;477:31:82;624:2139:91;;477:31:82;;;;;;:::i;:::-;518:79;;;624:2139:91;518:79:82;;624:2139:91;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;624:2139:91;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;-1:-1:-1;;;;;624:2139:91;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;624:2139:91;;;;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;:::-;-1:-1:-1;;;;;624:2139:91;;;;;;-1:-1:-1;;624:2139:91;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;624:2139:91;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;624:2139:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;624:2139:91;;;;;;;;;:::i;:::-;;;;;2692:73:99;:38;624:2139:91;;;:::i;:::-;;;;;-1:-1:-1;624:2139:91;2692:16:99;624:2139:91;;;-1:-1:-1;624:2139:91;;;;;;;;;;;;;;;;;2692:38:99;:73;:::i;624:2139:91:-;;;;;3248:62:99;624:2139:91;;;:::i;:::-;3248:62:99;;;;;:::i;:::-;624:2139:91;;;;;;;;;;;;;-1:-1:-1;;624:2139:91;;;;;;;-1:-1:-1;;;;;404:28:76;624:2139:91;;;;;;;;;;-1:-1:-1;;624:2139:91;;;;;;;1271:7:99;624:2139:91;;;;;;;;;-1:-1:-1;;624:2139:91;;;;;;;;-1:-1:-1;;;;;624:2139:91;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;1490:514::-;-1:-1:-1;1490:514:91;;;;;;;;624:2139;;;;;1779:95;;;;;;;;;;;;;624:2139;;;;;;;;;;;;;;;;;1779:95;;;;;:::i;:::-;624:2139;;716:88:89;;624:2139:91;716:88:89;;;;;;;;;783:4;1779:95:91;716:88:89;;624:2139:91;;;;;;;;;;;:::i;:::-;716:88:89;624:2139:91;716:88:89;624:2139:91;;716:88:89;;;;;;;;:::i;:::-;698:107;;;;;857:45;698:107;;:::i;:::-;624:2139:91;;;;857:45:89;;;;;;:::i;:::-;916:8;;912:175;;624:2139:91;;;1705:221;624:2139;;1705:221;;;;;;:::i;:::-;1937:61;;;;1490:514;;;:::o;1937:61::-;1970:17;624:2139;;;;1970:17;624:2139;;1970:17;;;;;624:2139;;;;;;;;;;;;1970:17;;;;;;;;;:::i;912:175:89:-;624:2139:91;;;;944:22:89;;;940:36;;990:87;;624:2139:91;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;624:2139:91;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;624:2139:91;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;2010:751::-;624:2139;;-1:-1:-1;;;2301:28:91;;624:2139;;2010:751;;;;;2301:28;;-1:-1:-1;;;;;624:2139:91;2010:751;;;2301:28;624:2139;2301:28;624:2139;;;;2301:28;;;;;;;;;;;;;;;2010:751;624:2139;2301:28;624:2139;;;;;;;;;2295:47;;624:2139;2295:47;;;;;;;;;;;2301:28;2295:47;;;;;2010:751;-1:-1:-1;624:2139:91;;-1:-1:-1;;;2230:162:91;;-1:-1:-1;;;;;624:2139:91;;;2301:28;2230:162;;624:2139;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2249:20;624:2139;2230:162;;;;;;;2301:28;2230:162;;;2010:751;2442:68;;;;;;:::i;:::-;624:2139;;2525:21;;;:59;;;2010:751;2521:234;;2010:751;;;:::o;2521:234::-;2607:137;624:2139;;;;;;:::i;:::-;;;;2635:95;;;624:2139;2607:137;624:2139;;2607:137;;;;;;:::i;2525:59::-;624:2139;;;2550:34;;2525:59;;2230:162;2442:68;2230:162;;;;;;;2301:28;2230:162;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;2295:47::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;2301:28;;;;;;;;;;;;;;:::i;:::-;;;;624:2139;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;624:2139:91;;;;:::o;:::-;;;:::o;2505:267:99:-;-1:-1:-1;624:2139:91;;;2692:16:99;624:2139:91;;;;;;;;-1:-1:-1;;;;;624:2139:91;;;;;;;;;2692:73:99;;2505:267;;2692:73;:::i;624:2139:91:-;;;;;;;;-1:-1:-1;624:2139:91;;-1:-1:-1;624:2139:91;;;-1:-1:-1;624:2139:91;:::o;:::-;;;;;;;;;;;;10580:184:93;624:2139:91;;10446:8:66;;;:63;-1:-1:-1;10446:63:66;-1:-1:-1;;;;;624:2139:91;;10726:7:93;624:2139:91;;10736:12:93;:17;:12;;:17;:::i;:::-;624:2139:91;;;;;;10580:184:93;:::o;10726:31::-;;;-1:-1:-1;10580:184:93;:::o;10446:63:66:-;624:2139:91;;;;;;;;;;13267:109:93;-1:-1:-1;13267:109:93;;-1:-1:-1;13267:109:93;;;624:2139:91;;;10446:63:66;;624:2139:91;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;624:2139:91;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;6491:564:99:-;6614:34;6491:564;6614:34;;;;:::i;:::-;-1:-1:-1;624:2139:91;;-1:-1:-1;;;6664:41:99;;-1:-1:-1;;;;;624:2139:91;;;6664:41:99;;;624:2139:91;;;;;6664:41:99;;;624:2139:91;;;6674:13:99;624:2139:91;;6664:41:99;;;;;;;-1:-1:-1;6664:41:99;;;6491:564;6663:42;;6659:90;;2684:111:26;;:::i;:::-;-1:-1:-1;624:2139:91;;-1:-1:-1;;;;;;624:2139:91;-1:-1:-1;;;;;624:2139:91;;;;;6664:41:99;624:2139:91;;;:::i;:::-;;;;;;;;;;;6892:23:99;;;;;;;;;-1:-1:-1;6892:23:99;;;6491:564;624:2139:91;;;6892:37:99;:64;;;6491:564;6888:112;;624:2139:91;7010:38:99;;624:2139:91;;-1:-1:-1;624:2139:91;;-1:-1:-1;;;;624:2139:91;;;;;;-1:-1:-1;;;624:2139:91;;;;;;;;6888:112:99;624:2139:91;;-1:-1:-1;;;6979:10:99;;6664:41;;6979:10;6892:64;-1:-1:-1;624:2139:91;;;;6892:64:99;;:23;;;;;;-1:-1:-1;6892:23:99;;;;;;:::i;:::-;;;;;6659:90;624:2139:91;;-1:-1:-1;;;6728:10:99;;6664:41;;6728:10;6664:41;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;624:2139:91;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;624:2139:91;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;624:2139:91;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;8889:1:93;624:2139:91;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;8406:869:93:-;;;624:2139:91;;8620:15:93;8578:11;8645:18;8678:7;8684:1;8678:7;;8674:241;;8406:869;8939:60;;;;;:::i;:::-;9014:8;;;9010:62;;9252:15;9259:7;624:2139:91;9219:31:93;624:2139:91;9130:48:93;9170:7;;;:::i;:::-;9130:48;13267:109;;;;;;13089:293;;9130:48;624:2139:91;:::i;:::-;;9176:1:93;624:2139:91;9232:17:93;624:2139:91;;;;;;;;9232:17:93;;624:2139:91;-1:-1:-1;;;;;624:2139:91;;;;9219:12:93;;:31;:::i;624:2139:91:-;9259:7:93;;:::i;:::-;624:2139:91;;;;9252:15:93;9176:1;;9188:80;;8406:869::o;9010:62::-;8578:11;;-1:-1:-1;8578:11:93;;-1:-1:-1;8578:11:93;;;;9038:23::o;8674:241::-;8721:14;;;;;:::i;:::-;624:2139:91;;;;;;;8939:60:93;13267:109;;8578:11;13267:109;8753:55;8759:49;13267:109;;8578:11;13267:109;;624:2139:91;;;;;;8759:49:93;624:2139:91;;;;8753:55:93;624:2139:91;;;8753:55:93;13267:109;;;8828:10;8749:156;8674:241;;8749:156;8883:7;;;;;;:::i;:::-;8749:156;8674:241;;624:2139:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::o;7558:604:93:-;;624:2139:91;;7686:17:93;7682:83;;624:2139:91;7789:27:93;624:2139:91;7789:27:93;624:2139:91;;7789:27:93;;;;;;:::i;:::-;7860:14;;;;;:::i;:::-;624:2139:91;;;;;;;;;;;;;;;;7888:22:93;;;7884:77;;7975:21;-1:-1:-1;7975:84:93;;;;7558:604;7971:139;;;;8127:28;;;;:::i;7971:139::-;8082:17;;7789:27;8082:17;624:2139:91;8075:24:93;:::o;7975:84::-;624:2139:91;;;8009:16:93;624:2139:91;;8009:16:93;:::i;:::-;624:2139:91;;;8001:24:93;:57;;;;;7975:84;;;;;;;8001:57;8029:29;8038:8;;;8029:18;8038:8;8029:23;8038:8;;:::i;:::-;8029:18;;:::i;:::-;624:2139:91;;;;;8029:29:93;;8001:57;;;;7884:77;7933:17;;;;;7789:27;7933:17;624:2139:91;7926:24:93;:::o;7682:83::-;7726:28;;;;:::i;624:2139:91:-;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;624:2139:91;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;624:2139:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3323:1122:99:-;;624:2139:91;;:::i;:::-;;;;3608:16:99;3604:109;;3323:1122;837:15:68;;819:34;837:15;819:34;:::i;:::-;-1:-1:-1;624:2139:91;;;;3778:27:99;;:13;;-1:-1:-1;;;;;624:2139:91;3778:13:99;624:2139:91;;-1:-1:-1;;;;;624:2139:91;;;3778:27:99;624:2139:91;;;;;;;3778:29:99;;;;;;;;;;;;;;;3740:67;3778:29;3759:48;3778:29;-1:-1:-1;3778:29:99;;;3323:1122;3759:48;;:::i;3740:67::-;624:2139:91;;;3740:67:99;;;:107;;;;;3323:1122;3740:197;;;;3323:1122;3723:263;;;624:2139:91;3778:29:99;624:2139:91;;;;;;;;;;4025:25:99;;;;;;;;;4010:143;4025:25;;;-1:-1:-1;4025:25:99;;;3323:1122;4113:30;;;624:2139:91;;;;;;;;;;;4010:143:99;;;;;3778:29;4010:143;;;:::i;:::-;;;-1:-1:-1;;;;;624:2139:91;4010:143:99;;;;;;;4181:257;4010:143;-1:-1:-1;4010:143:99;;;3323:1122;3996:157;;4293:102;3996:157;;4233:162;3996:157;4207:231;3996:157;;2936:28;:47;:38;:28;;;624:2139:91;;2936:16:99;624:2139:91;;;;;;;2936:28:99;624:2139:91;;;;;;;;;;;;;;;;2936:47:99;4351:43;;;4293:102;;:::i;:::-;4233:162;;:::i;:::-;3463:5:63;;;;3066;;624:2139:91;3060:42:63;3371:111;;4181:257:99;3323:1122;:::o;4010:143::-;4233:162;4010:143;;;4207:231;4010:143;;;;4293:102;4010:143;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;4025:25;;;;;;;;;;;;;;:::i;:::-;;;;3723:263;3962:13;;;;;;-1:-1:-1;3962:13:99;-1:-1:-1;3962:13:99;:::o;3740:197::-;3886:41;;3867:70;3886:51;;:41;;;624:2139:91;;3886:29:99;624:2139:91;;;;;;;3886:51:99;624:2139:91;;;;;3867:70:99;-1:-1:-1;3740:197:99;;;:107;837:15:68;;3811:36:99;819:34:68;837:15;819:34;:::i;3811:36:99:-;;;;3740:107;;;3778:29;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;3604:109;3662:40;;;;;;;;;;;;:::i;:::-;3604:109;;;;6893:76:22;;;:::i;:::-;;;:::i;:::-;1949:1:26;2499:73;1949:1;6893:76:22:o;624:2139:91:-;;;;;;;;;;-1:-1:-1;;;;;624:2139:91;;;;;;;-1:-1:-1;624:2139:91;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;18080:5181:63;18246:1;18241:6;;;18237:53;;18246:1;19217:14;-1:-1:-1;;;19278:16:63;;;19274:92;;18080:5181;22827:18;22717;22607;22498;22387;22278;23216:28;19383:15;19898:6;19383:15;-1:-1:-1;;;23237:6:63;19383:15;;;19379:90;;18080:5181;19493:7;19486:15;;;19482:90;;18080:5181;19596:7;19589:15;;;19585:89;;18080:5181;19698:6;19691:14;;;19687:87;;18080:5181;19798:6;19791:14;;;19787:87;;18080:5181;19891:14;;19887:61;;18080:5181;20374:1;624:2139:91;18246:1:63;624:2139:91;22284:6:63;;;;:::i;:::-;624:2139:91;;;;;22278:18:63;22393:6;;;;:::i;22387:18::-;22504:6;;;;:::i;22498:18::-;22613:6;;;;:::i;22607:18::-;22723:6;;;;:::i;22717:18::-;22833:6;;;;:::i;22827:18::-;23237:6;;;:::i;:::-;23232:11;;;624:2139:91;23216:28:63;624:2139:91;;18080:5181:63;:::o;19887:61::-;18246:1;624:2139:91;19887:61:63;;19787:87;624:2139:91;;;;;19787:87:63;;;19687;624:2139:91;;;;;19687:87:63;;;19585:89;624:2139:91;;;;;19585:89:63;;;19482:90;624:2139:91;;;;;19482:90:63;;;19379;624:2139:91;;;;;19379:90:63;;;19274:92;-1:-1:-1;;;;624:2139:91;-1:-1:-1;624:2139:91;;;;19274:92:63;;12497:447:93;;12694:10;;;;;;12926:11;;;12497:447;:::o;12687:230::-;12734:23;;;;;;;:::i;:::-;13267:109;;-1:-1:-1;13267:109:93;624:2139:91;13267:109:93;;;-1:-1:-1;13267:109:93;;624:2139:91;;;;;-1:-1:-1;12771:136:93;624:2139:91;;;12830:10:93;12771:136;;12687:230;;;;12771:136;624:2139:91;;12891:1:93;624:2139:91;;;;;;12771:136:93;624:2139:91;;:::i;6999:207:93:-;;624:2139:91;;9737:15:66;-1:-1:-1;9762:18:66;9795:7;9801:1;9795:7;;9791:234;;6999:207:93;10049:53:66;;;;;:::i;:::-;10120:8;;;:63;-1:-1:-1;10120:63:66;;-1:-1:-1;;;;;624:2139:91;;7168:7:93;624:2139:91;;;7178:12:93;;:17;:12;;:17;:::i;10120:63:66:-;10135:41;10168:7;10135:48;10168:7;;:::i;:::-;10135:41;13267:109:93;;;;;;13089:293;;10135:41:66;624:2139:91;;;;;10135:48:66;10120:63;;;9791:234;9838:14;;;;;:::i;:::-;624:2139:91;;;;;;;10049:53:66;13267:109:93;;-1:-1:-1;13267:109:93;624:2139:91;13267:109:93;;;-1:-1:-1;13267:109:93;;624:2139:91;;;;;9870:48:66;9866:149;624:2139:91;;;9938:10:66;9866:149;9791:234;;9866:149;9993:7;;;;;;:::i;:::-;9866:149;9791:234;;624:2139:91;;;;;;;:::i;:::-;-1:-1:-1;624:2139:91;;;;;;;:::o;11486:272:93:-;;624:2139:91;11452:22:66;11718:31:93;11486:272;624:2139:91;;:::i;:::-;;;;:::i;:::-;;11452:22:66;;:::i;:::-;624:2139:91;;:::i;:::-;;11718:12:93;624:2139:91;;;;;11731:17:93;624:2139:91;;;;;11731:17:93;;624:2139:91;;11718:12:93;;:31;:::i;:::-;624:2139:91;;;;;;;;;:::i;:::-;;;;;;11731:17:93;11672:79;;624:2139:91;11486:272:93;:::o;7084:141:22:-;624:2139:91;-1:-1:-1;;;;;;;;;;;624:2139:91;;;;7150:18:22;7146:73;;7084:141::o;7146:73::-;624:2139:91;;-1:-1:-1;;;7191:17:22;;;;;3595:153:63;;3721:5;;;3731;;624:2139:91;;;;;;;;;3595:153:63;:::o;14296:213:64:-;624:2139:91;14374:24:64;;;;14370:103;;624:2139:91;14296:213:64;:::o;14370:103::-;624:2139:91;;;;14421:41:64;;;;;;14452:2;14421:41;;;624:2139:91;;;;;14421:41:64;12929:433:66;;13112:10;;;;;;13344:11;;;12929:433;:::o;13105:230::-;13152:23;;;;;;;:::i;:::-;13267:109:93;;-1:-1:-1;13267:109:93;624:2139:91;13267:109:93;;;-1:-1:-1;13267:109:93;;624:2139:91;;;;;-1:-1:-1;13189:136:66;624:2139:91;;;13248:10:66;13189:136;;13105:230;;;;13189:136;624:2139:91;;13309:1:66;624:2139:91;;;;;;13189:136:66;624:2139:91;;:::i","linkReferences":{},"immutableReferences":{"56598":[{"start":715,"length":32}],"56601":[{"start":2308,"length":32}],"61158":[{"start":1525,"length":32}],"61501":[{"start":1686,"length":32},{"start":3114,"length":32}],"61503":[{"start":1367,"length":32}],"61505":[{"start":1435,"length":32}],"64382":[{"start":361,"length":32},{"start":3711,"length":32}],"64385":[{"start":647,"length":32}]}},"methodIdentifiers":{"BASE_DELEGATOR_HINTS()":"79d89614","BURNER_GAS_LIMIT()":"d5c24e1a","BURNER_RESERVE()":"2964f8dc","FACTORY()":"2dd31000","NETWORK_MIDDLEWARE_SERVICE()":"2c9d45b3","SLASHER_HINTS()":"4eb5a242","TYPE()":"bb24fe8a","VAULT_FACTORY()":"103f2907","VETO_SLASHER_HINTS()":"6565b7db","cumulativeSlash(bytes32,address)":"1a2be2c4","cumulativeSlashAt(bytes32,address,uint48,bytes)":"aa8e6489","cumulativeSlashHint(address,bytes32,address,uint48)":"4a719655","cumulativeSlashHintInternal(bytes32,address,uint48)":"77028046","initialize(bytes)":"439fab91","isBurnerHook()":"34d098ea","latestSlashedCaptureTimestamp(bytes32,address)":"267de1f3","slashableStake(bytes32,address,uint48,bytes)":"aab3595f","slashableStakeHints(address,bytes32,address,uint48)":"4ea2e926","staticDelegateCall(address,bytes)":"9f86fd85","vault()":"fbfa77cf"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"baseDelegatorHints\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ExternalCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBurnerGas\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoBurner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotNetworkMiddleware\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BASE_DELEGATOR_HINTS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BURNER_GAS_LIMIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BURNER_RESERVE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NETWORK_MIDDLEWARE_SERVICE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SLASHER_HINTS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TYPE\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VAULT_FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VETO_SLASHER_HINTS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"cumulativeSlash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"cumulativeSlashAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"slasher\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"cumulativeSlashHint\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"cumulativeSlashHintInternal\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"exists\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"hint\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isBurnerHook\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"latestSlashedCaptureTimestamp\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"value\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hints\",\"type\":\"bytes\"}],\"name\":\"slashableStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"slasher\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"}],\"name\":\"slashableStakeHints\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"staticDelegateCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"cumulativeSlash(bytes32,address)\":{\"params\":{\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"_0\":\"cumulative slash amount\"}},\"cumulativeSlashAt(bytes32,address,uint48,bytes)\":{\"params\":{\"hint\":\"hint for the checkpoint index\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\",\"timestamp\":\"time point to get the cumulative slash amount until (inclusively)\"},\"returns\":{\"_0\":\"cumulative slash amount until the given timestamp (inclusively)\"}},\"initialize(bytes)\":{\"params\":{\"data\":\"some data to use\"}},\"slashableStake(bytes32,address,uint48,bytes)\":{\"params\":{\"captureTimestamp\":\"time point to get the stake amount at\",\"hints\":\"hints for the checkpoints' indexes\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"amount\":\"slashable amount of the stake\"}},\"staticDelegateCall(address,bytes)\":{\"details\":\"It allows to use this contract's storage on-chain.\",\"params\":{\"data\":\"data to make a delegatecall with\",\"target\":\"address of the contract to make a delegatecall to\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"BURNER_GAS_LIMIT()\":{\"notice\":\"Get a gas limit for the burner.\"},\"BURNER_RESERVE()\":{\"notice\":\"Get a reserve gas between the gas limit check and the burner's execution.\"},\"FACTORY()\":{\"notice\":\"Get the factory's address.\"},\"NETWORK_MIDDLEWARE_SERVICE()\":{\"notice\":\"Get the network middleware service's address.\"},\"TYPE()\":{\"notice\":\"Get the entity's type.\"},\"VAULT_FACTORY()\":{\"notice\":\"Get the vault factory's address.\"},\"cumulativeSlash(bytes32,address)\":{\"notice\":\"Get a cumulative slash amount for an operator on a subnetwork.\"},\"cumulativeSlashAt(bytes32,address,uint48,bytes)\":{\"notice\":\"Get a cumulative slash amount for an operator on a subnetwork until a given timestamp (inclusively) using a hint.\"},\"initialize(bytes)\":{\"notice\":\"Initialize this entity contract by using a given data.\"},\"isBurnerHook()\":{\"notice\":\"Get if the burner is needed to be called on a slashing.\"},\"latestSlashedCaptureTimestamp(bytes32,address)\":{\"notice\":\"Get the latest capture timestamp that was slashed on a subnetwork.\"},\"slashableStake(bytes32,address,uint48,bytes)\":{\"notice\":\"Get a slashable amount of a stake got at a given capture timestamp using hints.\"},\"staticDelegateCall(address,bytes)\":{\"notice\":\"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data).\"},\"vault()\":{\"notice\":\"Get the vault's address.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/hints/SlasherHints.sol\":\"BaseSlasherHints\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf\",\"dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89\",\"dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1\",\"dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol\":{\"keccak256\":\"0x4aaaf1c0737dd16e81f0d2b9833c549747a5ede6873bf1444bc72aa572d03e98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eada27d7668eebaea16c3b890aa1b38ffc53965292e26c96f7c44834623f4710\",\"dweb:/ipfs/QmVSWuLtxyCqNbLyY89ptxkvsk4CLLKDQYigEne5Qj8k1L\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x7d94fa0af099a2172eb01f9c8a8a443cbe7e0e43654841563e4e09968efdb549\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65e38fb76b6add407d4557753ae83dd1268e8261195dbe5c19a580d5ba6e4e9a\",\"dweb:/ipfs/QmTkGSJtaQrqjcyWM4AgemeEmKgtDydKPPVRajsUJRQSrK\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0\",\"dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x10eb97d047f8d84fe263a02bb4a656ac6674f6679d74532cc37546289e073a9d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3e41287d40b0c46982f1083d40d32de2761f009c5c51627fe79a7feb0ab1cf5c\",\"dweb:/ipfs/Qme7dbh6HX3ZvUJdbQAcVqXkmyXyfcLiUZRhhon3cU6K8p\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e\",\"dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/SignatureChecker.sol\":{\"keccak256\":\"0xbdc3bb48ccedb818cd75a6d74a16df55a822e9f6d3cc54c59f576f10aab67b5f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2284f25f2478f419d7781573b17a89d0e7c5589a865d55e2d6ed5163aee23aa8\",\"dweb:/ipfs/QmNsr2625APBQiNKpYnX5VcSnYgfUHR9Uzzp9pRXjoDqK7\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44\",\"dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6\",\"dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza\"]},\"src/contracts/common/Entity.sol\":{\"keccak256\":\"0x3d61a932995b8443381f3950542d388223a2c26dd5d29a3274dea3baa7388bd7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7cdf5f03ca72fd263fd32ff59c8d88ddca911ae83896a287d10772c1bbe9b138\",\"dweb:/ipfs/QmbP84r5BWT1Rn9AYTntWSf3xUMTTCohTZJFhbBhDXFoHa\"]},\"src/contracts/common/MigratableEntity.sol\":{\"keccak256\":\"0x303ad40a3de8fa808cc30a6fbd5998633f6a89b982e6db1fa981e0566ab445e7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://fa8fb92995ead02798e013190b87b84b44cc68668262f045c9b0b4783940e2bf\",\"dweb:/ipfs/QmV1uKGVLKwWisc714R8fCt71gXUQJpaKvdc6LQ8WtvMpL\"]},\"src/contracts/common/StaticDelegateCallable.sol\":{\"keccak256\":\"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764\",\"dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD\"]},\"src/contracts/delegator/BaseDelegator.sol\":{\"keccak256\":\"0x7c54d491fdd4415b764a9c8defa068e56d4c0c8c9419be0053a1d377669290e8\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://9238bfbad0f6eeb0dc7727724de14380f1980b395902269703d5e2ef07e52e10\",\"dweb:/ipfs/QmPJn1V4HNXcEghYvogGuSTF24dSQUPosR5qtsXcmNqRm3\"]},\"src/contracts/delegator/FullRestakeDelegator.sol\":{\"keccak256\":\"0x0a81c4f8e72914563a9cb771e93acf889c71ea36b7bec040e4eb562b199d5af1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6fc66b6ba02da77046a0bbbd1dd407a62c08f52e04486c9cbd2cb1cca3da555f\",\"dweb:/ipfs/QmZQivK1ZnMxfRQQ5aLpV9co5u55wQVNev5Rg1hzAqxhkE\"]},\"src/contracts/delegator/NetworkRestakeDelegator.sol\":{\"keccak256\":\"0xd3a8e6522f9c6fdcc2da837c9023afd6bdff2bce45a35590320c475519e3636d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://58b17a87f6554f08376f9ea7fedf486a4aa75801bf0ad8b23ff5a46959b6b7a3\",\"dweb:/ipfs/QmSTmNh67tYt8CmjVZb57r8N3qX5yeYdMApKPJm3qvQgQw\"]},\"src/contracts/delegator/OperatorNetworkSpecificDelegator.sol\":{\"keccak256\":\"0x031a10722b9ec49048f0952710401131290adb87e71caf294e864e7ac3b98a16\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://72428febc875134b2f29205e6f294634a1c22a7d5c78d6a9cb2f8196f107c9b5\",\"dweb:/ipfs/QmTPwXR6h5oytckmkLrHdKeEMdphJxceDhYUR4zvQeWAwY\"]},\"src/contracts/delegator/OperatorSpecificDelegator.sol\":{\"keccak256\":\"0x630ce62fa30b9f3349ab7a8cf8dbf041319febc6dd757be2f94d3d25944ed328\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c2ac59d47ce57d2a6819ae9833e1a618a371eccff93eb5ab367b201b01f42bfa\",\"dweb:/ipfs/QmdBpGMBivpNPv2WbH8vnCUy5xkVeaxQvGgqi33vKCz1kA\"]},\"src/contracts/hints/DelegatorHints.sol\":{\"keccak256\":\"0xd71e9102e99a25ee8b5435779f011a24558f56074aa2b16c18b623b57754ae97\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://29db5552e55dab51bea1ae40ba00ca674cb50fcb10997999a72a94527b6eb591\",\"dweb:/ipfs/QmQrYyTPx73ubNxMhYWJCkprCVFVtuTFcKaabYiKTe71tY\"]},\"src/contracts/hints/Hints.sol\":{\"keccak256\":\"0x8b565df1ae35993c097a9e642002782a8f451f6fd01809cad6bcd345bdf1b99c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://99a19adb01e350a92f534095b3078229df1f2f83077992d75d58d8684be45971\",\"dweb:/ipfs/QmbmwcuswVbzvwHQFTtrJG86oV98GnfxqYTb8cV8u1acox\"]},\"src/contracts/hints/OptInServiceHints.sol\":{\"keccak256\":\"0x95d9407900d27b9f4a1233b772aeed809c07b2dc5b31cfc9fa77ca26514c49e5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://a13a8877e312d7e6b8b85bde3668c5d84ff5ecc83f762cd573f2b7104c64eb42\",\"dweb:/ipfs/QmYV2J55acuGzCNnS3juABuUHY5U1xc8g8o9jwEyFFdeG5\"]},\"src/contracts/hints/SlasherHints.sol\":{\"keccak256\":\"0xd77c5f3bbb0265af8ecd947df88f6f9684e136d80052b5292f5b29aaa3566a3f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://484a26504bf6706202ec82a9a4cfa7d196bbc552b5b78ced25bf7130c2842595\",\"dweb:/ipfs/QmaQqmkoZoUWEam4R94vmajzH3gKqFqpZQwFbrHDsN1peV\"]},\"src/contracts/hints/VaultHints.sol\":{\"keccak256\":\"0xccb505b7159b769cc114d67b87c2de6b106557f667fc8f3780114baad5c3c442\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6d0c80a908fc16e96a8b5605a0bd53f9e89ad0ef0a738fbbae80ba4d3160749b\",\"dweb:/ipfs/QmXo5UtWoR8YmunqcbBU8rQMm1nvmvjNPoXcVrDhh4pEwR\"]},\"src/contracts/libraries/Checkpoints.sol\":{\"keccak256\":\"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609\",\"dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE\"]},\"src/contracts/libraries/ERC4626Math.sol\":{\"keccak256\":\"0x8441160513c1cbeb1c3b9ee077bcc7e7ce20006b52a77c8dd39ff0ef89699939\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://943f8cc3e26ddf649f465f40c909819f5c864717c4baa339e9e403b9374a4653\",\"dweb:/ipfs/QmXPxi1sUDsrGprZdUgCzoPEosaZMv9ZhygWQ1vAi1phAB\"]},\"src/contracts/libraries/Subnetwork.sol\":{\"keccak256\":\"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56\",\"dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32\"]},\"src/contracts/service/OptInService.sol\":{\"keccak256\":\"0x4e0932077f2686b7990e10d59deb2535334c0d09e52ef6e57c6ab09eca21c4b1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7c00d311032ed4a1743aca7475f3c86ce15cdfc2218108efc3731c03d34a5278\",\"dweb:/ipfs/QmUGGfVwVhaHr5kS4177yKKYiLYzi5qZpkEmvYxBZqazxf\"]},\"src/contracts/slasher/BaseSlasher.sol\":{\"keccak256\":\"0x190e5dce196a061bdad42468c52e9f5b0eb7810cd7d0c19f04d6a2e94984f1b6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://07ca08d0cd43c2fe5d54a5577f6bdd522ced410f5d3a52e764deaa7ba26b5f06\",\"dweb:/ipfs/QmZe3PiMKBQKWcwodaLupragdqxPjgS4v1qMC7RXau8hDF\"]},\"src/contracts/slasher/Slasher.sol\":{\"keccak256\":\"0xeee0cb25fad58d496fdcc641d852d11bae06e6ceed5230ae21150964175c494f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://34aa27d21246a1bcee0b6a2afa8d9d613441156362430392f75d176511d58c61\",\"dweb:/ipfs/Qmf53Y3zdGfH4PU2zpSGeHZ8mMLzLXCtmkQrG5mnVJECQ3\"]},\"src/contracts/slasher/VetoSlasher.sol\":{\"keccak256\":\"0xeccc8128de5e1ad499c067feac1c526638fbbac1a18b96726fc7507969fd5897\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://cdfcf281338423625acbccdf8810115b258ef7cfe4aa3c10b8911ead1aa85429\",\"dweb:/ipfs/QmZFsDvZXpkFkx4PHcDXAVPN3ZCAahbSVfYpSVrMBvbt4k\"]},\"src/contracts/vault/Vault.sol\":{\"keccak256\":\"0x7ee6dbf060c45d6eba95315f4ac0b3b467dd9c4999b84c31d6f66d4d8b53a116\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://301948b8ea522db292aa2722ba42def3911dae95f0b376f7023c3fef470f8676\",\"dweb:/ipfs/QmSDbP2HdzhDAzstr8Zz5isEAcSkma8ABc5UwPsoazaumZ\"]},\"src/contracts/vault/VaultStorage.sol\":{\"keccak256\":\"0x57db25b127d77ea3472de53e3a4af3354399655b9268638b99ca5925fa364a56\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://aa763d9a6ec508ae3abfb8228b72b9fd9525279e5135d4962e79ff059feb1173\",\"dweb:/ipfs/QmcbDR6E9wyEpu6V2FkEC4hnWy47zXA9LSKJde6zSGd33Q\"]},\"src/interfaces/common/IEntity.sol\":{\"keccak256\":\"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b\",\"dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv\"]},\"src/interfaces/common/IMigratableEntity.sol\":{\"keccak256\":\"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c\",\"dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds\"]},\"src/interfaces/common/IRegistry.sol\":{\"keccak256\":\"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014\",\"dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK\"]},\"src/interfaces/common/IStaticDelegateCallable.sol\":{\"keccak256\":\"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516\",\"dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi\"]},\"src/interfaces/delegator/IBaseDelegator.sol\":{\"keccak256\":\"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2\",\"dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8\"]},\"src/interfaces/delegator/IDelegatorHook.sol\":{\"keccak256\":\"0xc51aa8d7d1f6c8043ee819b7aeb86da0e993912e1442098df897e299f01f9f46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://adddf5cb2ba282aeb576b26efb28640f865a1721cc9b6eee8b3ee0457a2c9780\",\"dweb:/ipfs/QmNYgAmnLRwWZbhTuQhZs9rx4zcme1df5mEepkrniorSoW\"]},\"src/interfaces/delegator/IFullRestakeDelegator.sol\":{\"keccak256\":\"0xa3c8cb2e45d4d8ce90e95263bea40c01dc400f05ad65bc29597d878606be5e7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://782cf5e201aa4cca037ebafd3807a68ff1cc721d5b8416a35244db0d0607369e\",\"dweb:/ipfs/QmQkJks6x7CKndeTPa9LxgTNygD5uEi7obhADhpq1Lsr9A\"]},\"src/interfaces/delegator/INetworkRestakeDelegator.sol\":{\"keccak256\":\"0xe7030fe30389a147fd710e3436ec346b4842695fd3e65a81b95375c9f1d633fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://739c7e66d301778054f5c90bee45ec9438f68afba8a03eaaac52064c73b115ad\",\"dweb:/ipfs/QmfZ2ytKcTykAc76nxhg8ikUXV8NdBpetqb8W4YWPcox1Z\"]},\"src/interfaces/delegator/IOperatorNetworkSpecificDelegator.sol\":{\"keccak256\":\"0x74b95e64d29769202d45dd277bb830f623ff3d41ce77b80ce3ee4e318a5c71ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e512b903aae5c1b8a028c6e3f4f6223b5cb5d704503cfa6bd37b5346868f5c20\",\"dweb:/ipfs/QmZim9YExsPWtyxyeui993HTKAEmrg8MUcSkZ77Gp2JcuZ\"]},\"src/interfaces/delegator/IOperatorSpecificDelegator.sol\":{\"keccak256\":\"0x72075cab585dc17240cc3e32bc99b92f0d5627ddd988fed680e3e1a52d5a01e4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7448bc90699409ae61d85216b5efc2143a37f0f73354be2aea993bc54afca441\",\"dweb:/ipfs/QmXE4gAxM8pHosZK8mcTcj17puBx484meDCcmrDePskGHZ\"]},\"src/interfaces/service/INetworkMiddlewareService.sol\":{\"keccak256\":\"0x347afc7fcf1fbcdb96d66162070ef6c78aed27b3af2c1d5dfb4e511840631783\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d90b8ceb495159e8e4e95d76447719dd166443f67dfabdd942846162071595c\",\"dweb:/ipfs/QmVVuiAWYx92T6vBvNMKZfTvraCf1fa16BsUKkdNs3hdHA\"]},\"src/interfaces/service/IOptInService.sol\":{\"keccak256\":\"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337\",\"dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24\"]},\"src/interfaces/slasher/IBaseSlasher.sol\":{\"keccak256\":\"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf\",\"dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx\"]},\"src/interfaces/slasher/IBurner.sol\":{\"keccak256\":\"0xaf495dacc19ae0b3c787ba8021c5944927d70261536addd234d7dab146158c2b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b3cc66251008be6ff9fc8b11ecc6831d5a9dca49a3fe9817fcd970253c1d447\",\"dweb:/ipfs/QmVxfb9ALGdF9W3SN2h41gQbUct6tawvu5bw4K89kFQ4HW\"]},\"src/interfaces/slasher/ISlasher.sol\":{\"keccak256\":\"0x34d226d67a3d5e16571f2fac91a8b9773551bcc41c88a96279669dd78d192625\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a6e8c1462ee4a1b0f745414be043c09012ea676613790aba004b06c85c980d1\",\"dweb:/ipfs/QmadjNEbHKRthtA1EeNy3Kg2sXpejH2KBeHm8QZtBPvXbJ\"]},\"src/interfaces/slasher/IVetoSlasher.sol\":{\"keccak256\":\"0xdf7edd04a4f36e9aec3a15241dcb6b6315b2e64927b12710c2c410d571fc55e9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c4be6ac339c2ebf230fed65363f036784224095d0cd0f3f2d01d64d6e0da9508\",\"dweb:/ipfs/QmRSMbpfaHExqrzUA8vYZMYZWh6eQW1KX9JKJSLdgronfg\"]},\"src/interfaces/vault/IVault.sol\":{\"keccak256\":\"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9\",\"dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R\"]},\"src/interfaces/vault/IVaultStorage.sol\":{\"keccak256\":\"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e\",\"dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"baseDelegatorHints","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"ExternalCall"},{"inputs":[],"type":"error","name":"InsufficientBurnerGas"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"NoBurner"},{"inputs":[],"type":"error","name":"NotInitialized"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"NotNetworkMiddleware"},{"inputs":[],"type":"error","name":"NotVault"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintDowncast"},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"BASE_DELEGATOR_HINTS","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"BURNER_GAS_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"BURNER_RESERVE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"NETWORK_MIDDLEWARE_SERVICE","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"SLASHER_HINTS","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"TYPE","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VAULT_FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VETO_SLASHER_HINTS","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"cumulativeSlash","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"cumulativeSlashAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"slasher","type":"address"},{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"cumulativeSlashHint","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"cumulativeSlashHintInternal","outputs":[{"internalType":"bool","name":"exists","type":"bool"},{"internalType":"uint32","name":"hint","type":"uint32"}]},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"isBurnerHook","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"latestSlashedCaptureTimestamp","outputs":[{"internalType":"uint48","name":"value","type":"uint48"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"captureTimestamp","type":"uint48"},{"internalType":"bytes","name":"hints","type":"bytes"}],"stateMutability":"view","type":"function","name":"slashableStake","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"slasher","type":"address"},{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"captureTimestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"slashableStakeHints","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"staticDelegateCall"},{"inputs":[],"stateMutability":"view","type":"function","name":"vault","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"cumulativeSlash(bytes32,address)":{"params":{"operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"_0":"cumulative slash amount"}},"cumulativeSlashAt(bytes32,address,uint48,bytes)":{"params":{"hint":"hint for the checkpoint index","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)","timestamp":"time point to get the cumulative slash amount until (inclusively)"},"returns":{"_0":"cumulative slash amount until the given timestamp (inclusively)"}},"initialize(bytes)":{"params":{"data":"some data to use"}},"slashableStake(bytes32,address,uint48,bytes)":{"params":{"captureTimestamp":"time point to get the stake amount at","hints":"hints for the checkpoints' indexes","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"amount":"slashable amount of the stake"}},"staticDelegateCall(address,bytes)":{"details":"It allows to use this contract's storage on-chain.","params":{"data":"data to make a delegatecall with","target":"address of the contract to make a delegatecall to"}}},"version":1},"userdoc":{"kind":"user","methods":{"BURNER_GAS_LIMIT()":{"notice":"Get a gas limit for the burner."},"BURNER_RESERVE()":{"notice":"Get a reserve gas between the gas limit check and the burner's execution."},"FACTORY()":{"notice":"Get the factory's address."},"NETWORK_MIDDLEWARE_SERVICE()":{"notice":"Get the network middleware service's address."},"TYPE()":{"notice":"Get the entity's type."},"VAULT_FACTORY()":{"notice":"Get the vault factory's address."},"cumulativeSlash(bytes32,address)":{"notice":"Get a cumulative slash amount for an operator on a subnetwork."},"cumulativeSlashAt(bytes32,address,uint48,bytes)":{"notice":"Get a cumulative slash amount for an operator on a subnetwork until a given timestamp (inclusively) using a hint."},"initialize(bytes)":{"notice":"Initialize this entity contract by using a given data."},"isBurnerHook()":{"notice":"Get if the burner is needed to be called on a slashing."},"latestSlashedCaptureTimestamp(bytes32,address)":{"notice":"Get the latest capture timestamp that was slashed on a subnetwork."},"slashableStake(bytes32,address,uint48,bytes)":{"notice":"Get a slashable amount of a stake got at a given capture timestamp using hints."},"staticDelegateCall(address,bytes)":{"notice":"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data)."},"vault()":{"notice":"Get the vault's address."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/hints/SlasherHints.sol":"BaseSlasherHints"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol":{"keccak256":"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866","urls":["bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf","dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab","urls":["bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89","dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606","urls":["bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1","dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol":{"keccak256":"0x4aaaf1c0737dd16e81f0d2b9833c549747a5ede6873bf1444bc72aa572d03e98","urls":["bzz-raw://eada27d7668eebaea16c3b890aa1b38ffc53965292e26c96f7c44834623f4710","dweb:/ipfs/QmVSWuLtxyCqNbLyY89ptxkvsk4CLLKDQYigEne5Qj8k1L"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol":{"keccak256":"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92","urls":["bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a","dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310","urls":["bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862","dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol":{"keccak256":"0x7d94fa0af099a2172eb01f9c8a8a443cbe7e0e43654841563e4e09968efdb549","urls":["bzz-raw://65e38fb76b6add407d4557753ae83dd1268e8261195dbe5c19a580d5ba6e4e9a","dweb:/ipfs/QmTkGSJtaQrqjcyWM4AgemeEmKgtDydKPPVRajsUJRQSrK"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed","urls":["bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0","dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84","urls":["bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9","dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol":{"keccak256":"0x10eb97d047f8d84fe263a02bb4a656ac6674f6679d74532cc37546289e073a9d","urls":["bzz-raw://3e41287d40b0c46982f1083d40d32de2761f009c5c51627fe79a7feb0ab1cf5c","dweb:/ipfs/Qme7dbh6HX3ZvUJdbQAcVqXkmyXyfcLiUZRhhon3cU6K8p"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575","urls":["bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e","dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/SignatureChecker.sol":{"keccak256":"0xbdc3bb48ccedb818cd75a6d74a16df55a822e9f6d3cc54c59f576f10aab67b5f","urls":["bzz-raw://2284f25f2478f419d7781573b17a89d0e7c5589a865d55e2d6ed5163aee23aa8","dweb:/ipfs/QmNsr2625APBQiNKpYnX5VcSnYgfUHR9Uzzp9pRXjoDqK7"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3","urls":["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03","dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol":{"keccak256":"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f","urls":["bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44","dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc","urls":["bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6","dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza"],"license":"MIT"},"src/contracts/common/Entity.sol":{"keccak256":"0x3d61a932995b8443381f3950542d388223a2c26dd5d29a3274dea3baa7388bd7","urls":["bzz-raw://7cdf5f03ca72fd263fd32ff59c8d88ddca911ae83896a287d10772c1bbe9b138","dweb:/ipfs/QmbP84r5BWT1Rn9AYTntWSf3xUMTTCohTZJFhbBhDXFoHa"],"license":"BUSL-1.1"},"src/contracts/common/MigratableEntity.sol":{"keccak256":"0x303ad40a3de8fa808cc30a6fbd5998633f6a89b982e6db1fa981e0566ab445e7","urls":["bzz-raw://fa8fb92995ead02798e013190b87b84b44cc68668262f045c9b0b4783940e2bf","dweb:/ipfs/QmV1uKGVLKwWisc714R8fCt71gXUQJpaKvdc6LQ8WtvMpL"],"license":"BUSL-1.1"},"src/contracts/common/StaticDelegateCallable.sol":{"keccak256":"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90","urls":["bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764","dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD"],"license":"BUSL-1.1"},"src/contracts/delegator/BaseDelegator.sol":{"keccak256":"0x7c54d491fdd4415b764a9c8defa068e56d4c0c8c9419be0053a1d377669290e8","urls":["bzz-raw://9238bfbad0f6eeb0dc7727724de14380f1980b395902269703d5e2ef07e52e10","dweb:/ipfs/QmPJn1V4HNXcEghYvogGuSTF24dSQUPosR5qtsXcmNqRm3"],"license":"BUSL-1.1"},"src/contracts/delegator/FullRestakeDelegator.sol":{"keccak256":"0x0a81c4f8e72914563a9cb771e93acf889c71ea36b7bec040e4eb562b199d5af1","urls":["bzz-raw://6fc66b6ba02da77046a0bbbd1dd407a62c08f52e04486c9cbd2cb1cca3da555f","dweb:/ipfs/QmZQivK1ZnMxfRQQ5aLpV9co5u55wQVNev5Rg1hzAqxhkE"],"license":"BUSL-1.1"},"src/contracts/delegator/NetworkRestakeDelegator.sol":{"keccak256":"0xd3a8e6522f9c6fdcc2da837c9023afd6bdff2bce45a35590320c475519e3636d","urls":["bzz-raw://58b17a87f6554f08376f9ea7fedf486a4aa75801bf0ad8b23ff5a46959b6b7a3","dweb:/ipfs/QmSTmNh67tYt8CmjVZb57r8N3qX5yeYdMApKPJm3qvQgQw"],"license":"BUSL-1.1"},"src/contracts/delegator/OperatorNetworkSpecificDelegator.sol":{"keccak256":"0x031a10722b9ec49048f0952710401131290adb87e71caf294e864e7ac3b98a16","urls":["bzz-raw://72428febc875134b2f29205e6f294634a1c22a7d5c78d6a9cb2f8196f107c9b5","dweb:/ipfs/QmTPwXR6h5oytckmkLrHdKeEMdphJxceDhYUR4zvQeWAwY"],"license":"BUSL-1.1"},"src/contracts/delegator/OperatorSpecificDelegator.sol":{"keccak256":"0x630ce62fa30b9f3349ab7a8cf8dbf041319febc6dd757be2f94d3d25944ed328","urls":["bzz-raw://c2ac59d47ce57d2a6819ae9833e1a618a371eccff93eb5ab367b201b01f42bfa","dweb:/ipfs/QmdBpGMBivpNPv2WbH8vnCUy5xkVeaxQvGgqi33vKCz1kA"],"license":"BUSL-1.1"},"src/contracts/hints/DelegatorHints.sol":{"keccak256":"0xd71e9102e99a25ee8b5435779f011a24558f56074aa2b16c18b623b57754ae97","urls":["bzz-raw://29db5552e55dab51bea1ae40ba00ca674cb50fcb10997999a72a94527b6eb591","dweb:/ipfs/QmQrYyTPx73ubNxMhYWJCkprCVFVtuTFcKaabYiKTe71tY"],"license":"BUSL-1.1"},"src/contracts/hints/Hints.sol":{"keccak256":"0x8b565df1ae35993c097a9e642002782a8f451f6fd01809cad6bcd345bdf1b99c","urls":["bzz-raw://99a19adb01e350a92f534095b3078229df1f2f83077992d75d58d8684be45971","dweb:/ipfs/QmbmwcuswVbzvwHQFTtrJG86oV98GnfxqYTb8cV8u1acox"],"license":"BUSL-1.1"},"src/contracts/hints/OptInServiceHints.sol":{"keccak256":"0x95d9407900d27b9f4a1233b772aeed809c07b2dc5b31cfc9fa77ca26514c49e5","urls":["bzz-raw://a13a8877e312d7e6b8b85bde3668c5d84ff5ecc83f762cd573f2b7104c64eb42","dweb:/ipfs/QmYV2J55acuGzCNnS3juABuUHY5U1xc8g8o9jwEyFFdeG5"],"license":"BUSL-1.1"},"src/contracts/hints/SlasherHints.sol":{"keccak256":"0xd77c5f3bbb0265af8ecd947df88f6f9684e136d80052b5292f5b29aaa3566a3f","urls":["bzz-raw://484a26504bf6706202ec82a9a4cfa7d196bbc552b5b78ced25bf7130c2842595","dweb:/ipfs/QmaQqmkoZoUWEam4R94vmajzH3gKqFqpZQwFbrHDsN1peV"],"license":"BUSL-1.1"},"src/contracts/hints/VaultHints.sol":{"keccak256":"0xccb505b7159b769cc114d67b87c2de6b106557f667fc8f3780114baad5c3c442","urls":["bzz-raw://6d0c80a908fc16e96a8b5605a0bd53f9e89ad0ef0a738fbbae80ba4d3160749b","dweb:/ipfs/QmXo5UtWoR8YmunqcbBU8rQMm1nvmvjNPoXcVrDhh4pEwR"],"license":"BUSL-1.1"},"src/contracts/libraries/Checkpoints.sol":{"keccak256":"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c","urls":["bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609","dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE"],"license":"MIT"},"src/contracts/libraries/ERC4626Math.sol":{"keccak256":"0x8441160513c1cbeb1c3b9ee077bcc7e7ce20006b52a77c8dd39ff0ef89699939","urls":["bzz-raw://943f8cc3e26ddf649f465f40c909819f5c864717c4baa339e9e403b9374a4653","dweb:/ipfs/QmXPxi1sUDsrGprZdUgCzoPEosaZMv9ZhygWQ1vAi1phAB"],"license":"MIT"},"src/contracts/libraries/Subnetwork.sol":{"keccak256":"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe","urls":["bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56","dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32"],"license":"MIT"},"src/contracts/service/OptInService.sol":{"keccak256":"0x4e0932077f2686b7990e10d59deb2535334c0d09e52ef6e57c6ab09eca21c4b1","urls":["bzz-raw://7c00d311032ed4a1743aca7475f3c86ce15cdfc2218108efc3731c03d34a5278","dweb:/ipfs/QmUGGfVwVhaHr5kS4177yKKYiLYzi5qZpkEmvYxBZqazxf"],"license":"BUSL-1.1"},"src/contracts/slasher/BaseSlasher.sol":{"keccak256":"0x190e5dce196a061bdad42468c52e9f5b0eb7810cd7d0c19f04d6a2e94984f1b6","urls":["bzz-raw://07ca08d0cd43c2fe5d54a5577f6bdd522ced410f5d3a52e764deaa7ba26b5f06","dweb:/ipfs/QmZe3PiMKBQKWcwodaLupragdqxPjgS4v1qMC7RXau8hDF"],"license":"BUSL-1.1"},"src/contracts/slasher/Slasher.sol":{"keccak256":"0xeee0cb25fad58d496fdcc641d852d11bae06e6ceed5230ae21150964175c494f","urls":["bzz-raw://34aa27d21246a1bcee0b6a2afa8d9d613441156362430392f75d176511d58c61","dweb:/ipfs/Qmf53Y3zdGfH4PU2zpSGeHZ8mMLzLXCtmkQrG5mnVJECQ3"],"license":"BUSL-1.1"},"src/contracts/slasher/VetoSlasher.sol":{"keccak256":"0xeccc8128de5e1ad499c067feac1c526638fbbac1a18b96726fc7507969fd5897","urls":["bzz-raw://cdfcf281338423625acbccdf8810115b258ef7cfe4aa3c10b8911ead1aa85429","dweb:/ipfs/QmZFsDvZXpkFkx4PHcDXAVPN3ZCAahbSVfYpSVrMBvbt4k"],"license":"BUSL-1.1"},"src/contracts/vault/Vault.sol":{"keccak256":"0x7ee6dbf060c45d6eba95315f4ac0b3b467dd9c4999b84c31d6f66d4d8b53a116","urls":["bzz-raw://301948b8ea522db292aa2722ba42def3911dae95f0b376f7023c3fef470f8676","dweb:/ipfs/QmSDbP2HdzhDAzstr8Zz5isEAcSkma8ABc5UwPsoazaumZ"],"license":"BUSL-1.1"},"src/contracts/vault/VaultStorage.sol":{"keccak256":"0x57db25b127d77ea3472de53e3a4af3354399655b9268638b99ca5925fa364a56","urls":["bzz-raw://aa763d9a6ec508ae3abfb8228b72b9fd9525279e5135d4962e79ff059feb1173","dweb:/ipfs/QmcbDR6E9wyEpu6V2FkEC4hnWy47zXA9LSKJde6zSGd33Q"],"license":"BUSL-1.1"},"src/interfaces/common/IEntity.sol":{"keccak256":"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21","urls":["bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b","dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv"],"license":"MIT"},"src/interfaces/common/IMigratableEntity.sol":{"keccak256":"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4","urls":["bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c","dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds"],"license":"MIT"},"src/interfaces/common/IRegistry.sol":{"keccak256":"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb","urls":["bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014","dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK"],"license":"MIT"},"src/interfaces/common/IStaticDelegateCallable.sol":{"keccak256":"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5","urls":["bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516","dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi"],"license":"MIT"},"src/interfaces/delegator/IBaseDelegator.sol":{"keccak256":"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee","urls":["bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2","dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8"],"license":"MIT"},"src/interfaces/delegator/IDelegatorHook.sol":{"keccak256":"0xc51aa8d7d1f6c8043ee819b7aeb86da0e993912e1442098df897e299f01f9f46","urls":["bzz-raw://adddf5cb2ba282aeb576b26efb28640f865a1721cc9b6eee8b3ee0457a2c9780","dweb:/ipfs/QmNYgAmnLRwWZbhTuQhZs9rx4zcme1df5mEepkrniorSoW"],"license":"MIT"},"src/interfaces/delegator/IFullRestakeDelegator.sol":{"keccak256":"0xa3c8cb2e45d4d8ce90e95263bea40c01dc400f05ad65bc29597d878606be5e7d","urls":["bzz-raw://782cf5e201aa4cca037ebafd3807a68ff1cc721d5b8416a35244db0d0607369e","dweb:/ipfs/QmQkJks6x7CKndeTPa9LxgTNygD5uEi7obhADhpq1Lsr9A"],"license":"MIT"},"src/interfaces/delegator/INetworkRestakeDelegator.sol":{"keccak256":"0xe7030fe30389a147fd710e3436ec346b4842695fd3e65a81b95375c9f1d633fc","urls":["bzz-raw://739c7e66d301778054f5c90bee45ec9438f68afba8a03eaaac52064c73b115ad","dweb:/ipfs/QmfZ2ytKcTykAc76nxhg8ikUXV8NdBpetqb8W4YWPcox1Z"],"license":"MIT"},"src/interfaces/delegator/IOperatorNetworkSpecificDelegator.sol":{"keccak256":"0x74b95e64d29769202d45dd277bb830f623ff3d41ce77b80ce3ee4e318a5c71ec","urls":["bzz-raw://e512b903aae5c1b8a028c6e3f4f6223b5cb5d704503cfa6bd37b5346868f5c20","dweb:/ipfs/QmZim9YExsPWtyxyeui993HTKAEmrg8MUcSkZ77Gp2JcuZ"],"license":"MIT"},"src/interfaces/delegator/IOperatorSpecificDelegator.sol":{"keccak256":"0x72075cab585dc17240cc3e32bc99b92f0d5627ddd988fed680e3e1a52d5a01e4","urls":["bzz-raw://7448bc90699409ae61d85216b5efc2143a37f0f73354be2aea993bc54afca441","dweb:/ipfs/QmXE4gAxM8pHosZK8mcTcj17puBx484meDCcmrDePskGHZ"],"license":"MIT"},"src/interfaces/service/INetworkMiddlewareService.sol":{"keccak256":"0x347afc7fcf1fbcdb96d66162070ef6c78aed27b3af2c1d5dfb4e511840631783","urls":["bzz-raw://2d90b8ceb495159e8e4e95d76447719dd166443f67dfabdd942846162071595c","dweb:/ipfs/QmVVuiAWYx92T6vBvNMKZfTvraCf1fa16BsUKkdNs3hdHA"],"license":"MIT"},"src/interfaces/service/IOptInService.sol":{"keccak256":"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a","urls":["bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337","dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24"],"license":"MIT"},"src/interfaces/slasher/IBaseSlasher.sol":{"keccak256":"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404","urls":["bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf","dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx"],"license":"MIT"},"src/interfaces/slasher/IBurner.sol":{"keccak256":"0xaf495dacc19ae0b3c787ba8021c5944927d70261536addd234d7dab146158c2b","urls":["bzz-raw://9b3cc66251008be6ff9fc8b11ecc6831d5a9dca49a3fe9817fcd970253c1d447","dweb:/ipfs/QmVxfb9ALGdF9W3SN2h41gQbUct6tawvu5bw4K89kFQ4HW"],"license":"MIT"},"src/interfaces/slasher/ISlasher.sol":{"keccak256":"0x34d226d67a3d5e16571f2fac91a8b9773551bcc41c88a96279669dd78d192625","urls":["bzz-raw://7a6e8c1462ee4a1b0f745414be043c09012ea676613790aba004b06c85c980d1","dweb:/ipfs/QmadjNEbHKRthtA1EeNy3Kg2sXpejH2KBeHm8QZtBPvXbJ"],"license":"MIT"},"src/interfaces/slasher/IVetoSlasher.sol":{"keccak256":"0xdf7edd04a4f36e9aec3a15241dcb6b6315b2e64927b12710c2c410d571fc55e9","urls":["bzz-raw://c4be6ac339c2ebf230fed65363f036784224095d0cd0f3f2d01d64d6e0da9508","dweb:/ipfs/QmRSMbpfaHExqrzUA8vYZMYZWh6eQW1KX9JKJSLdgronfg"],"license":"MIT"},"src/interfaces/vault/IVault.sol":{"keccak256":"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235","urls":["bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9","dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R"],"license":"MIT"},"src/interfaces/vault/IVaultStorage.sol":{"keccak256":"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22","urls":["bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e","dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6"],"license":"MIT"}},"version":1},"id":91} \ No newline at end of file diff --git a/out/SlasherHints.sol/SlasherHints.json b/out/SlasherHints.sol/SlasherHints.json index 72d129f9..7f2e6674 100644 --- a/out/SlasherHints.sol/SlasherHints.json +++ b/out/SlasherHints.sol/SlasherHints.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"baseSlasherHints","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"BASE_SLASHER_HINTS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"BURNER_GAS_LIMIT","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"BURNER_RESERVE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"NETWORK_MIDDLEWARE_SERVICE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"TYPE","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"VAULT_FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"cumulativeSlash","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"cumulativeSlashAt","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isBurnerHook","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"latestSlashedCaptureTimestamp","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"value","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"slash","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","internalType":"uint48"},{"name":"hints","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"slashedAmount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"slashHints","inputs":[{"name":"slasher","type":"address","internalType":"address"},{"name":"msgSender","type":"address","internalType":"address"},{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"slashableStake","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"captureTimestamp","type":"uint48","internalType":"uint48"},{"name":"hints","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"staticDelegateCall","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"vault","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"Slash","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"slashedAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","indexed":false,"internalType":"uint48"}],"anonymous":false},{"type":"error","name":"CheckpointUnorderedInsertion","inputs":[]},{"type":"error","name":"ExternalCall","inputs":[]},{"type":"error","name":"InsufficientBurnerGas","inputs":[]},{"type":"error","name":"InsufficientSlash","inputs":[]},{"type":"error","name":"InvalidCaptureTimestamp","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NoBurner","inputs":[]},{"type":"error","name":"NotInitialized","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"NotNetworkMiddleware","inputs":[]},{"type":"error","name":"NotVault","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x6101403461015d576001600160401b0390601f61209f38819003918201601f1916830191848311848410176101615780849260209460405283398101031261015d5751906001600160a01b038216820361015d57306080527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff8260401c1661014b578080831603610106575b835f60a0525f60c0525f60e052610100905f825261012090815260405190611f299283610176843960805183505060a051836104f2015260c0518381816109490152611379015260e05183818161031d01526116a901525182818161021c01526104ae0152518181816106920152610d330152f35b6001600160401b031990911681179091556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f8080610091565b60405163f92ee8a960e01b8152600490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c8063021a815614610124578063103f29071461011f5780631a2be2c41461011a578063238ab85f14610115578063267de1f3146101105780632964f8dc1461010b5780632c9d45b3146101065780632dd310001461010157806334d098ea146100fc578063439fab91146100f7578063457821b7146100f25780639f86fd85146100ed578063aa8e6489146100e8578063aab3595f146100e3578063bb24fe8a146100de578063d5c24e1a146100d95763fbfa77cf146100d4575f80fd5b61098a565b61096d565b61092a565b610905565b6108c7565b6106c1565b61067d565b610545565b610521565b6104dd565b610499565b61047d565b610428565b6103c4565b61034c565b610308565b61017b565b6001600160a01b0381160361013a57565b5f80fd5b65ffffffffffff81160361013a57565b9181601f8401121561013a578235916001600160401b03831161013a576020838186019501011161013a57565b3461013a5760a036600319011261013a5760043560243561019b81610129565b6064356101a78161013e565b6084356001600160401b03811161013a576101c690369060040161014e565b917f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0060028154146102ec5760029055604051635daf681960e11b8152606086901c60048201526001600160a01b036020826024817f000000000000000000000000000000000000000000000000000000000000000085165afa9182156102e7575f926102b6575b50339116036102a4576102a0946102679460443591610a63565b61029060017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6040519081529081906020820190565b0390f35b60405163227bf64d60e01b8152600490fd5b6102d991925060203d6020116102e0575b6102d181836107dd565b810190610ddf565b905f61024d565b503d6102c7565b610a27565b604051633ee5aeb560e01b8152600490fd5b5f91031261013a57565b3461013a575f36600319011261013a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461013a57604036600319011261013a57602061039861039360243561037181610129565b6004355f526002845260405f209060018060a01b03165f5260205260405f2090565b6115c8565b604051908152f35b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b3461013a5760c036600319011261013a576102a06104146004356103e781610129565b6103f2602435610129565b6064356103fe81610129565b60a4359161040b8361013e565b60443590610ce7565b6040519182916020835260208301906103a0565b3461013a57604036600319011261013a57602065ffffffffffff61047360243561045181610129565b6004355f526001845260405f209060018060a01b03165f5260205260405f2090565b5416604051908152f35b3461013a575f36600319011261013a576020604051614e208152f35b3461013a575f36600319011261013a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461013a575f36600319011261013a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461013a575f36600319011261013a57602060ff5f5460a01c166040519015158152f35b3461013a57602036600319011261013a576001600160401b0360043581811161013a5761057690369060040161014e565b5f80516020611ed4833981519152549260ff8460401c1615931680159081610675575b600114908161066b575b159081610662575b50610650575f80516020611ed4833981519152805467ffffffffffffffff191660011790556105de918361062c57611672565b6105e457005b5f80516020611ed4833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f80516020611ed4833981519152805460ff60401b1916600160401b179055611672565b60405163f92ee8a960e01b8152600490fd5b9050155f6105ab565b303b1591506105a3565b849150610599565b3461013a575f36600319011261013a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461013a5760408060031936011261013a576004356106df81610129565b602435906001600160401b03821161013a575f809161070561076994369060040161014e565b908187519283928337810184815203915af43d156107715761075b3d61072a8161081a565b90610737865192836107dd565b81523d5f602083013e5b8451948593151560208501528084015260608301906103a0565b03601f1981018352826107dd565b805190602001fd5b61075b6060610741565b634e487b7160e01b5f52604160045260245ffd5b602081019081106001600160401b038211176107aa57604052565b61077b565b604081019081106001600160401b038211176107aa57604052565b6001600160401b0381116107aa57604052565b90601f801991011681019081106001600160401b038211176107aa57604052565b6040519061080b826107af565b565b6040519061080b8261078f565b6001600160401b0381116107aa57601f01601f191660200190565b81601f8201121561013a5780359061084c8261081a565b9261085a60405194856107dd565b8284526020838301011161013a57815f926020809301838601378301015290565b90608060031983011261013a576004359160243561089881610129565b916044356108a58161013e565b91606435906001600160401b03821161013a576108c491600401610835565b90565b3461013a5760206103986109006108dd3661087b565b939190925f526002865260405f209060018060a01b03165f5260205260405f2090565b61180c565b3461013a5760206109216109183661087b565b92919091610ed9565b50604051908152f35b3461013a575f36600319011261013a5760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461013a575f36600319011261013a576020604051620249f08152f35b3461013a575f36600319011261013a575f546040516001600160a01b039091168152602090f35b604051906109be8261078f565b60608252565b9060208282031261013a5781356001600160401b039283821161013a57019060208282031261013a57604051926109fa8461078f565b823590811161013a57610a0d9201610835565b815290565b9081602091031261013a57516108c48161013e565b6040513d5f823e3d90fd5b634e487b7160e01b5f52601160045260245ffd5b65ffffffffffff9182169082160391908211610a5e57565b610a32565b92939594919095610a726109b1565b9280610c4d575b5050610a84426118e4565b5f54600490602090610aac90610aa0906001600160a01b031681565b6001600160a01b031690565b6040516327f843b560e11b815292839182905afa80156102e757610ae692610adb925f92610c1c575b50610a46565b65ffffffffffff1690565b65ffffffffffff8516908110908115610c06575b50610bf457610b0f610b189251858886610ed9565b92908092611109565b958615610be257610b9d61075b610b94610bdd947fe0cbbe1f1e6fd806ca87036fafcebaf7ab5247474a3b20e1c37bb50122c3a88496610b598a878b61111b565b610b648c878b6111a9565b610b6c6107fe565b9182526020820152604051928391602083019190916020806040830194805184520151910152565b86898488611315565b610ba7858861141e565b610bb3858883876114a3565b6040805188815265ffffffffffff90961660208701526001600160a01b0390911694918291820190565b0390a3565b60405163167f871760e31b8152600490fd5b604051631357ac9160e11b8152600490fd5b9050610c14610adb426118e4565b11155f610afa565b610c3f91925060203d602011610c46575b610c3781836107dd565b810190610a12565b905f610ad5565b503d610c2d565b610c5b9293508101906109c4565b905f80610a79565b81601f8201121561013a57805190610c7a8261081a565b92610c8860405194856107dd565b8284526020838301011161013a57815f9260208093018386015e8301015290565b9060208282031261013a5781516001600160401b03811161013a576108c49201610c63565b60406108c49260208352519160208082015201906103a0565b604051632751749360e11b81526001600160a01b0391821660048201526024810192909252918216604482015265ffffffffffff909216606483015260609291905f90829060849082907f0000000000000000000000000000000000000000000000000000000000000000165afa9081156102e7575f91610d91575b508051610d6d5750565b61075b9192506108c490610d7f61080d565b90815260405192839160208301610cce565b610dad91503d805f833e610da581836107dd565b810190610ca9565b5f610d63565b5f9081526002602090815260408083206001600160a01b039094168352929052206108c492919061180c565b9081602091031261013a57516108c481610129565b60405190610e01826107af565b60606020838281520152565b9060208282031261013a5781516001600160401b039283821161013a57019060408282031261013a5760405192610e43846107af565b825181811161013a5782610e58918501610c63565b8452602083015190811161013a57610e709201610c63565b602082015290565b9081602091031261013a575190565b9081526001600160a01b03909116602082015265ffffffffffff90911660408201526080606082018190526108c4929101906103a0565b5f19810191908211610a5e57565b91908203918211610a5e57565b92610ee2610df4565b908051806110ef575b5050610ef6426118e4565b5f54909490610f0f90610aa0906001600160a01b031681565b93604051956327f843b560e11b875260209687816004818a5afa80156102e757610f4392610adb925f926110d75750610a46565b65ffffffffffff82169081109081156110c0575b811561108f575b50611083578560049560405196878092630ce9b79360e41b82525afa9485156102e757610fb09587915f91611066575b50845190604051808099819463e02f693760e01b8352878b8a60048601610e87565b03916001600160a01b03165afa9384156102e757611022955f95611025575b5092611017859361101d9361101796869a61100e61039383610ff9875f52600260205260405f2090565b9060018060a01b03165f5260205260405f2090565b95015192610db3565b90610ecc565b611109565b91565b61101d929550611017949193611053611017928a3d8c1161105f575b61104b81836107dd565b810190610e78565b96935093919450610fcf565b503d611041565b61107d9150823d84116102e0576102d181836107dd565b5f610f8e565b5050505050505f905f90565b90506110b9610adb6110ad87610ff9875f52600160205260405f2090565b5465ffffffffffff1690565b115f610f5e565b90506110ce610adb426118e4565b81101590610f57565b610c3f9192508a3d8c11610c4657610c3781836107dd565b6111029250602080918301019101610e0d565b5f80610eeb565b9080821015611116575090565b905090565b919091805f52600160205265ffffffffffff8061114b8560405f209060018060a01b03165f5260205260405f2090565b54169083161161115a57505050565b61080b92611182915f52600160205260405f209060018060a01b03165f5260205260405f2090565b9065ffffffffffff1665ffffffffffff19825416179055565b9060018201809211610a5e57565b9190825f5260026020526112016103936111d68360405f209060018060a01b03165f5260205260405f2090565b926111e0426118e4565b955f52600260205260405f209060018060a01b03165f5260205260405f2090565b918201809211610a5e5760018101908154156112a5575b61122181611b40565b509490835495611230846115c8565b5081611290575b501561126f5750505f198301928311610a5e5761080b926112579161159f565b90919082549060031b91821b915f19901b1916179055565b61080b94611289926001600160d01b039091169190611c17565b5050611943565b65ffffffffffff83811691161490505f611237565b6112ae82611916565b611218565b606060206108c4938184526001600160401b038151168285015201519160408082015201906103a0565b919360a0936108c4969565ffffffffffff938552600180871b03166020850152604084015216606082015281608082015201906103a0565b92939060046020611332610aa0610aa05f5460018060a01b031690565b604051630ce9b79360e41b815292839182905afa9081156102e75761075b916113b0915f916113ff575b506001600160a01b03169361136f6107fe565b6001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152906020820152604051928391602083016112b3565b823b1561013a575f946113db86926040519889978896879563724ab0f760e11b8752600487016112dd565b03925af180156102e7576113ec5750565b806113f961080b926107ca565b806102fe565b611418915060203d6020116102e0576102d181836107dd565b5f61135c565b5f8054604051631c9e38c760e21b8152600481019390935265ffffffffffff9390931660248301529091602091839160449183916001600160a01b03165af180156102e75761146a5750565b6114829060203d60201161105f5761104b81836107dd565b50565b811561148f570490565b634e487b7160e01b5f52601260045260245ffd5b92905f549060ff8260a01c166114bb575b5050505050565b6040516313c085b760e11b815291602090839060049082906001600160a01b03165afa9182156102e7575f92611578575b5060405163065c1e0360e01b6020820190815260248201969096526001600160a01b039091166044820152606481019390935265ffffffffffff90911660848301526115458260a481015b03601f1981018452836107dd565b6202a15c5a10611566575f928380935192620249f0f1505f808080806114b4565b604051632153f33560e21b8152600490fd5b61154592506115986115379160203d6020116102e0576102d181836107dd565b92506114ec565b80548210156115b4575f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b8054806115fd57505f5b6001600160d01b038116156115f75760016115ed920161159f565b90549060031b1c90565b50505f90565b5f19908082810111610a5e57825f5260205f2001015460301c6115d2565b91909160408184031261013a57803561163381610129565b9260208201356001600160401b03811161013a576108c49201610835565b5190811515820361013a57565b9081602091031261013a576108c490611651565b61167e9181019061161b565b6040516302910f8b60e31b81526001600160a01b0392831660048201819052929160209182816024817f000000000000000000000000000000000000000000000000000000000000000088165afa9081156102e7575f916117ae575b501561179c578161170e6004926116ef611966565b5f80546001600160a01b0319166001600160a01b03891617905561199c565b94604051928380926313c085b760e11b82525afa9182156102e7575f9261177f575b5050161580611775575b611763575161080b9015155f805460ff60a01b191691151560a01b60ff60a01b16919091179055565b60405163d2420f5960e01b8152600490fd5b508051151561173a565b6117959250803d106102e0576102d181836107dd565b5f80611730565b6040516362df054560e01b8152600490fd5b6117ce9150833d85116117d4575b6117c681836107dd565b81019061165e565b5f6116da565b503d6117bc565b9081602091031261013a575163ffffffff8116810361013a5790565b90600163ffffffff80931601918211610a5e57565b918051156118da5780602080611827935183010191016117db565b916118328382611ab4565b92611843845165ffffffffffff1690565b9065ffffffffffff80851692168281146118ce5782119182611879575b5050611870576108c492506119e4565b50506020015190565b9091506118868354610ebe565b63ffffffff83161491821561189f575b50505f80611860565b6118c69192506118ba6118b4610adb926117f7565b85611ab4565b5165ffffffffffff1690565b115f80611896565b50505050506020015190565b506108c4916119e4565b65ffffffffffff908181116118f7571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b8054600160401b8110156107aa576119339160018201815561159f565b8154905f199060031b1b19169055565b90815491600160401b8310156107aa578261125791600161080b9501815561159f565b61196e611b8f565b611976611b8f565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5f6040516119a98161078f565b5260208180518101031261013a576020906040516119c68161078f565b6119de6040519384936119d88561078f565b01611651565b82525290565b908154905f829160058411611a4e575b6119ff935084611e74565b80611a2757505f905b6001600160d01b038216156115f7576108c49160016115ed920161159f565b611a41611a36611a4892610ebe565b835f5260205f200190565b5460301c90565b90611a08565b9192611a5981611d36565b8103908111610a5e576119ff93855f5265ffffffffffff808360205f20015416908516105f14611a8a5750916119f4565b929150611a969061119b565b906119f4565b60405190611aa9826107af565b5f6020838281520152565b90611add611ad7611afe92611ac7611a9c565b50611ad0611a9c565b508461159f565b50611b1c565b91600165ffffffffffff845116936020828060d01b0391015116910161159f565b90549060405192611b0e846107af565b835260031b1c602082015290565b90604051611b29816107af565b915465ffffffffffff8116835260301c6020830152565b805480611b515750505f905f905f90565b5f19908082810111610a5e57611b6e925f5260205f200101611b1c565b9065ffffffffffff82511691602060018060d01b0391015116906001929190565b60ff5f80516020611ed48339815191525460401c1615611bab57565b604051631afcd79f60e31b8152600490fd5b8054600160401b8110156107aa57611bda9160018201815561159f565b611c0457815160209092015160301b65ffffffffffff191665ffffffffffff909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b805492939291908215611d0d57611c38611c33611a3685610ebe565b611b1c565b90611c49825165ffffffffffff1690565b65ffffffffffff84811691168110611cfb57611cbf946020948892611c77610adb875165ffffffffffff1690565b03611cc35750611cb192611c8d611c9892610ebe565b905f5260205f200190565b9065ffffffffffff82549181199060301b169116179055565b01516001600160d01b031690565b9190565b915050611cf691611ce3611cd56107fe565b65ffffffffffff9093168352565b6001600160d01b03881682860152611bbd565b611cb1565b604051632520601d60e01b8152600490fd5b611d319250611d1d611cd56107fe565b6001600160d01b0385166020830152611bbd565b5f9190565b8015611e6f5780611e08611e01611df7611ded611de3611dd9611dcf611dc560016108c49a5f908b60801c80611e63575b508060401c80611e56575b508060201c80611e49575b508060101c80611e3c575b508060081c80611e2f575b508060041c80611e22575b508060021c80611e15575b50821c611e0e575b811c1b611dbe818b611485565b0160011c90565b611dbe818a611485565b611dbe8189611485565b611dbe8188611485565b611dbe8187611485565b611dbe8186611485565b611dbe8185611485565b8092611485565b90611109565b8101611db1565b600291509101905f611da9565b600491509101905f611d9e565b600891509101905f611d93565b601091509101905f611d88565b602091509101905f611d7d565b604091509101905f611d72565b9150506080905f611d67565b505f90565b91905b838210611e845750505090565b9091928083169080841860011c8201809211610a5e57845f5265ffffffffffff808360205f20015416908416105f14611ec15750925b9190611e77565b939250611ecd9061119b565b91611eba56fef0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220bead91c521e34513050434cea50d07f95784d3ccc2f6242d53243cdc1dd2f24e64736f6c63430008190033","sourceMap":"2765:796:84:-:0;;;;-1:-1:-1;;;;;2765:796:84;;;;;;;;;;-1:-1:-1;;2765:796:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2765:796:84;;;;;;348:4:82;332:21;;8837:64:25;2765:796:84;;;;;;;;;7896:76:25;;2765:796:84;;;;7985:34:25;7981:146;;-1:-1:-1;525:17:69;-1:-1:-1;525:17:69;;-1:-1:-1;552:12:69;;-1:-1:-1;2353:28:92;;2391:53;;-1:-1:-1;2391:53:92;;2970:37:84;;;;2765:796;;;;;;;;;332:21:82;2765:796:84;;;;525:17:69;2765:796:84;;;;;552:12:69;2765:796:84;;;;;;;;;;2353:28:92;2765:796:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7981:146:25;-1:-1:-1;;;;;;2765:796:84;;;;;;;;;;;;;8087:29:25;;2765:796:84;;8087:29:25;7981:146;;;;;7896:76;2765:796:84;;-1:-1:-1;;;7938:23:25;;;;;2765:796:84;-1:-1:-1;2765:796:84;;;;;;-1:-1:-1;2765:796:84;;;;;-1:-1:-1;2765:796:84","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c8063021a815614610124578063103f29071461011f5780631a2be2c41461011a578063238ab85f14610115578063267de1f3146101105780632964f8dc1461010b5780632c9d45b3146101065780632dd310001461010157806334d098ea146100fc578063439fab91146100f7578063457821b7146100f25780639f86fd85146100ed578063aa8e6489146100e8578063aab3595f146100e3578063bb24fe8a146100de578063d5c24e1a146100d95763fbfa77cf146100d4575f80fd5b61098a565b61096d565b61092a565b610905565b6108c7565b6106c1565b61067d565b610545565b610521565b6104dd565b610499565b61047d565b610428565b6103c4565b61034c565b610308565b61017b565b6001600160a01b0381160361013a57565b5f80fd5b65ffffffffffff81160361013a57565b9181601f8401121561013a578235916001600160401b03831161013a576020838186019501011161013a57565b3461013a5760a036600319011261013a5760043560243561019b81610129565b6064356101a78161013e565b6084356001600160401b03811161013a576101c690369060040161014e565b917f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0060028154146102ec5760029055604051635daf681960e11b8152606086901c60048201526001600160a01b036020826024817f000000000000000000000000000000000000000000000000000000000000000085165afa9182156102e7575f926102b6575b50339116036102a4576102a0946102679460443591610a63565b61029060017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6040519081529081906020820190565b0390f35b60405163227bf64d60e01b8152600490fd5b6102d991925060203d6020116102e0575b6102d181836107dd565b810190610ddf565b905f61024d565b503d6102c7565b610a27565b604051633ee5aeb560e01b8152600490fd5b5f91031261013a57565b3461013a575f36600319011261013a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461013a57604036600319011261013a57602061039861039360243561037181610129565b6004355f526002845260405f209060018060a01b03165f5260205260405f2090565b6115c8565b604051908152f35b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b3461013a5760c036600319011261013a576102a06104146004356103e781610129565b6103f2602435610129565b6064356103fe81610129565b60a4359161040b8361013e565b60443590610ce7565b6040519182916020835260208301906103a0565b3461013a57604036600319011261013a57602065ffffffffffff61047360243561045181610129565b6004355f526001845260405f209060018060a01b03165f5260205260405f2090565b5416604051908152f35b3461013a575f36600319011261013a576020604051614e208152f35b3461013a575f36600319011261013a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461013a575f36600319011261013a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461013a575f36600319011261013a57602060ff5f5460a01c166040519015158152f35b3461013a57602036600319011261013a576001600160401b0360043581811161013a5761057690369060040161014e565b5f80516020611ed4833981519152549260ff8460401c1615931680159081610675575b600114908161066b575b159081610662575b50610650575f80516020611ed4833981519152805467ffffffffffffffff191660011790556105de918361062c57611672565b6105e457005b5f80516020611ed4833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f80516020611ed4833981519152805460ff60401b1916600160401b179055611672565b60405163f92ee8a960e01b8152600490fd5b9050155f6105ab565b303b1591506105a3565b849150610599565b3461013a575f36600319011261013a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461013a5760408060031936011261013a576004356106df81610129565b602435906001600160401b03821161013a575f809161070561076994369060040161014e565b908187519283928337810184815203915af43d156107715761075b3d61072a8161081a565b90610737865192836107dd565b81523d5f602083013e5b8451948593151560208501528084015260608301906103a0565b03601f1981018352826107dd565b805190602001fd5b61075b6060610741565b634e487b7160e01b5f52604160045260245ffd5b602081019081106001600160401b038211176107aa57604052565b61077b565b604081019081106001600160401b038211176107aa57604052565b6001600160401b0381116107aa57604052565b90601f801991011681019081106001600160401b038211176107aa57604052565b6040519061080b826107af565b565b6040519061080b8261078f565b6001600160401b0381116107aa57601f01601f191660200190565b81601f8201121561013a5780359061084c8261081a565b9261085a60405194856107dd565b8284526020838301011161013a57815f926020809301838601378301015290565b90608060031983011261013a576004359160243561089881610129565b916044356108a58161013e565b91606435906001600160401b03821161013a576108c491600401610835565b90565b3461013a5760206103986109006108dd3661087b565b939190925f526002865260405f209060018060a01b03165f5260205260405f2090565b61180c565b3461013a5760206109216109183661087b565b92919091610ed9565b50604051908152f35b3461013a575f36600319011261013a5760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461013a575f36600319011261013a576020604051620249f08152f35b3461013a575f36600319011261013a575f546040516001600160a01b039091168152602090f35b604051906109be8261078f565b60608252565b9060208282031261013a5781356001600160401b039283821161013a57019060208282031261013a57604051926109fa8461078f565b823590811161013a57610a0d9201610835565b815290565b9081602091031261013a57516108c48161013e565b6040513d5f823e3d90fd5b634e487b7160e01b5f52601160045260245ffd5b65ffffffffffff9182169082160391908211610a5e57565b610a32565b92939594919095610a726109b1565b9280610c4d575b5050610a84426118e4565b5f54600490602090610aac90610aa0906001600160a01b031681565b6001600160a01b031690565b6040516327f843b560e11b815292839182905afa80156102e757610ae692610adb925f92610c1c575b50610a46565b65ffffffffffff1690565b65ffffffffffff8516908110908115610c06575b50610bf457610b0f610b189251858886610ed9565b92908092611109565b958615610be257610b9d61075b610b94610bdd947fe0cbbe1f1e6fd806ca87036fafcebaf7ab5247474a3b20e1c37bb50122c3a88496610b598a878b61111b565b610b648c878b6111a9565b610b6c6107fe565b9182526020820152604051928391602083019190916020806040830194805184520151910152565b86898488611315565b610ba7858861141e565b610bb3858883876114a3565b6040805188815265ffffffffffff90961660208701526001600160a01b0390911694918291820190565b0390a3565b60405163167f871760e31b8152600490fd5b604051631357ac9160e11b8152600490fd5b9050610c14610adb426118e4565b11155f610afa565b610c3f91925060203d602011610c46575b610c3781836107dd565b810190610a12565b905f610ad5565b503d610c2d565b610c5b9293508101906109c4565b905f80610a79565b81601f8201121561013a57805190610c7a8261081a565b92610c8860405194856107dd565b8284526020838301011161013a57815f9260208093018386015e8301015290565b9060208282031261013a5781516001600160401b03811161013a576108c49201610c63565b60406108c49260208352519160208082015201906103a0565b604051632751749360e11b81526001600160a01b0391821660048201526024810192909252918216604482015265ffffffffffff909216606483015260609291905f90829060849082907f0000000000000000000000000000000000000000000000000000000000000000165afa9081156102e7575f91610d91575b508051610d6d5750565b61075b9192506108c490610d7f61080d565b90815260405192839160208301610cce565b610dad91503d805f833e610da581836107dd565b810190610ca9565b5f610d63565b5f9081526002602090815260408083206001600160a01b039094168352929052206108c492919061180c565b9081602091031261013a57516108c481610129565b60405190610e01826107af565b60606020838281520152565b9060208282031261013a5781516001600160401b039283821161013a57019060408282031261013a5760405192610e43846107af565b825181811161013a5782610e58918501610c63565b8452602083015190811161013a57610e709201610c63565b602082015290565b9081602091031261013a575190565b9081526001600160a01b03909116602082015265ffffffffffff90911660408201526080606082018190526108c4929101906103a0565b5f19810191908211610a5e57565b91908203918211610a5e57565b92610ee2610df4565b908051806110ef575b5050610ef6426118e4565b5f54909490610f0f90610aa0906001600160a01b031681565b93604051956327f843b560e11b875260209687816004818a5afa80156102e757610f4392610adb925f926110d75750610a46565b65ffffffffffff82169081109081156110c0575b811561108f575b50611083578560049560405196878092630ce9b79360e41b82525afa9485156102e757610fb09587915f91611066575b50845190604051808099819463e02f693760e01b8352878b8a60048601610e87565b03916001600160a01b03165afa9384156102e757611022955f95611025575b5092611017859361101d9361101796869a61100e61039383610ff9875f52600260205260405f2090565b9060018060a01b03165f5260205260405f2090565b95015192610db3565b90610ecc565b611109565b91565b61101d929550611017949193611053611017928a3d8c1161105f575b61104b81836107dd565b810190610e78565b96935093919450610fcf565b503d611041565b61107d9150823d84116102e0576102d181836107dd565b5f610f8e565b5050505050505f905f90565b90506110b9610adb6110ad87610ff9875f52600160205260405f2090565b5465ffffffffffff1690565b115f610f5e565b90506110ce610adb426118e4565b81101590610f57565b610c3f9192508a3d8c11610c4657610c3781836107dd565b6111029250602080918301019101610e0d565b5f80610eeb565b9080821015611116575090565b905090565b919091805f52600160205265ffffffffffff8061114b8560405f209060018060a01b03165f5260205260405f2090565b54169083161161115a57505050565b61080b92611182915f52600160205260405f209060018060a01b03165f5260205260405f2090565b9065ffffffffffff1665ffffffffffff19825416179055565b9060018201809211610a5e57565b9190825f5260026020526112016103936111d68360405f209060018060a01b03165f5260205260405f2090565b926111e0426118e4565b955f52600260205260405f209060018060a01b03165f5260205260405f2090565b918201809211610a5e5760018101908154156112a5575b61122181611b40565b509490835495611230846115c8565b5081611290575b501561126f5750505f198301928311610a5e5761080b926112579161159f565b90919082549060031b91821b915f19901b1916179055565b61080b94611289926001600160d01b039091169190611c17565b5050611943565b65ffffffffffff83811691161490505f611237565b6112ae82611916565b611218565b606060206108c4938184526001600160401b038151168285015201519160408082015201906103a0565b919360a0936108c4969565ffffffffffff938552600180871b03166020850152604084015216606082015281608082015201906103a0565b92939060046020611332610aa0610aa05f5460018060a01b031690565b604051630ce9b79360e41b815292839182905afa9081156102e75761075b916113b0915f916113ff575b506001600160a01b03169361136f6107fe565b6001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152906020820152604051928391602083016112b3565b823b1561013a575f946113db86926040519889978896879563724ab0f760e11b8752600487016112dd565b03925af180156102e7576113ec5750565b806113f961080b926107ca565b806102fe565b611418915060203d6020116102e0576102d181836107dd565b5f61135c565b5f8054604051631c9e38c760e21b8152600481019390935265ffffffffffff9390931660248301529091602091839160449183916001600160a01b03165af180156102e75761146a5750565b6114829060203d60201161105f5761104b81836107dd565b50565b811561148f570490565b634e487b7160e01b5f52601260045260245ffd5b92905f549060ff8260a01c166114bb575b5050505050565b6040516313c085b760e11b815291602090839060049082906001600160a01b03165afa9182156102e7575f92611578575b5060405163065c1e0360e01b6020820190815260248201969096526001600160a01b039091166044820152606481019390935265ffffffffffff90911660848301526115458260a481015b03601f1981018452836107dd565b6202a15c5a10611566575f928380935192620249f0f1505f808080806114b4565b604051632153f33560e21b8152600490fd5b61154592506115986115379160203d6020116102e0576102d181836107dd565b92506114ec565b80548210156115b4575f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b8054806115fd57505f5b6001600160d01b038116156115f75760016115ed920161159f565b90549060031b1c90565b50505f90565b5f19908082810111610a5e57825f5260205f2001015460301c6115d2565b91909160408184031261013a57803561163381610129565b9260208201356001600160401b03811161013a576108c49201610835565b5190811515820361013a57565b9081602091031261013a576108c490611651565b61167e9181019061161b565b6040516302910f8b60e31b81526001600160a01b0392831660048201819052929160209182816024817f000000000000000000000000000000000000000000000000000000000000000088165afa9081156102e7575f916117ae575b501561179c578161170e6004926116ef611966565b5f80546001600160a01b0319166001600160a01b03891617905561199c565b94604051928380926313c085b760e11b82525afa9182156102e7575f9261177f575b5050161580611775575b611763575161080b9015155f805460ff60a01b191691151560a01b60ff60a01b16919091179055565b60405163d2420f5960e01b8152600490fd5b508051151561173a565b6117959250803d106102e0576102d181836107dd565b5f80611730565b6040516362df054560e01b8152600490fd5b6117ce9150833d85116117d4575b6117c681836107dd565b81019061165e565b5f6116da565b503d6117bc565b9081602091031261013a575163ffffffff8116810361013a5790565b90600163ffffffff80931601918211610a5e57565b918051156118da5780602080611827935183010191016117db565b916118328382611ab4565b92611843845165ffffffffffff1690565b9065ffffffffffff80851692168281146118ce5782119182611879575b5050611870576108c492506119e4565b50506020015190565b9091506118868354610ebe565b63ffffffff83161491821561189f575b50505f80611860565b6118c69192506118ba6118b4610adb926117f7565b85611ab4565b5165ffffffffffff1690565b115f80611896565b50505050506020015190565b506108c4916119e4565b65ffffffffffff908181116118f7571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b8054600160401b8110156107aa576119339160018201815561159f565b8154905f199060031b1b19169055565b90815491600160401b8310156107aa578261125791600161080b9501815561159f565b61196e611b8f565b611976611b8f565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5f6040516119a98161078f565b5260208180518101031261013a576020906040516119c68161078f565b6119de6040519384936119d88561078f565b01611651565b82525290565b908154905f829160058411611a4e575b6119ff935084611e74565b80611a2757505f905b6001600160d01b038216156115f7576108c49160016115ed920161159f565b611a41611a36611a4892610ebe565b835f5260205f200190565b5460301c90565b90611a08565b9192611a5981611d36565b8103908111610a5e576119ff93855f5265ffffffffffff808360205f20015416908516105f14611a8a5750916119f4565b929150611a969061119b565b906119f4565b60405190611aa9826107af565b5f6020838281520152565b90611add611ad7611afe92611ac7611a9c565b50611ad0611a9c565b508461159f565b50611b1c565b91600165ffffffffffff845116936020828060d01b0391015116910161159f565b90549060405192611b0e846107af565b835260031b1c602082015290565b90604051611b29816107af565b915465ffffffffffff8116835260301c6020830152565b805480611b515750505f905f905f90565b5f19908082810111610a5e57611b6e925f5260205f200101611b1c565b9065ffffffffffff82511691602060018060d01b0391015116906001929190565b60ff5f80516020611ed48339815191525460401c1615611bab57565b604051631afcd79f60e31b8152600490fd5b8054600160401b8110156107aa57611bda9160018201815561159f565b611c0457815160209092015160301b65ffffffffffff191665ffffffffffff909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b805492939291908215611d0d57611c38611c33611a3685610ebe565b611b1c565b90611c49825165ffffffffffff1690565b65ffffffffffff84811691168110611cfb57611cbf946020948892611c77610adb875165ffffffffffff1690565b03611cc35750611cb192611c8d611c9892610ebe565b905f5260205f200190565b9065ffffffffffff82549181199060301b169116179055565b01516001600160d01b031690565b9190565b915050611cf691611ce3611cd56107fe565b65ffffffffffff9093168352565b6001600160d01b03881682860152611bbd565b611cb1565b604051632520601d60e01b8152600490fd5b611d319250611d1d611cd56107fe565b6001600160d01b0385166020830152611bbd565b5f9190565b8015611e6f5780611e08611e01611df7611ded611de3611dd9611dcf611dc560016108c49a5f908b60801c80611e63575b508060401c80611e56575b508060201c80611e49575b508060101c80611e3c575b508060081c80611e2f575b508060041c80611e22575b508060021c80611e15575b50821c611e0e575b811c1b611dbe818b611485565b0160011c90565b611dbe818a611485565b611dbe8189611485565b611dbe8188611485565b611dbe8187611485565b611dbe8186611485565b611dbe8185611485565b8092611485565b90611109565b8101611db1565b600291509101905f611da9565b600491509101905f611d9e565b600891509101905f611d93565b601091509101905f611d88565b602091509101905f611d7d565b604091509101905f611d72565b9150506080905f611d67565b505f90565b91905b838210611e845750505090565b9091928083169080841860011c8201809211610a5e57845f5265ffffffffffff808360205f20015416908416105f14611ec15750925b9190611e77565b939250611ecd9061119b565b91611eba56fef0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220bead91c521e34513050434cea50d07f95784d3ccc2f6242d53243cdc1dd2f24e64736f6c63430008190033","sourceMap":"2765:796:84:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;-1:-1:-1;;;;;2765:796:84;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;2765:796:84;;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;2765:796:84;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;-1:-1:-1;;;;;2765:796:84;;;;;;;;;;;:::i;:::-;2355:73:28;;1847:1;2765:796:84;;3526:20:28;3522:88;;1847:1;;;2765:796:84;;-1:-1:-1;;;4546:86:92;;2765:796:84;;;;;4546:86:92;;2765:796:84;-1:-1:-1;;;;;2765:796:84;;;;4572:26:92;2765:796:84;;4546:86:92;;;;;;;-1:-1:-1;4546:86:92;;;2765:796:84;4636:10:92;;2765:796:84;;4546:100:92;4542:160;;2765:796:84;;774:1493:93;2765:796:84;;;774:1493:93;;:::i;:::-;3282:1:28;1805;2355:73;1847:1;3716:283;3282:1;2765:796:84;;;;;;;;;;;;;;;;;4542:160:92;2765:796:84;;-1:-1:-1;;;4669:22:92;;2765:796:84;;4669:22:92;4546:86;;;;;2765:796:84;4546:86:92;2765:796:84;4546:86:92;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;:::i;3522:88:28:-;2765:796:84;;-1:-1:-1;;;3569:30:28;;2765:796:84;;3569:30:28;2765:796:84;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;2765:796:84;;;;;;1435:38:92;-1:-1:-1;;;;;2765:796:84;;;;;;;;;;;;-1:-1:-1;;2765:796:84;;;;;2936:47:92;:38;2765:796:84;;;;;:::i;:::-;;;-1:-1:-1;2765:796:84;2936:16:92;2765:796:84;;;-1:-1:-1;2765:796:84;;;;;;;;;;;;;;;;;2936:38:92;:47;:::i;:::-;2765:796:84;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2765:796:84;;;;;;;;-1:-1:-1;;2765:796:84;;;;:::o;:::-;;;;;;-1:-1:-1;;2765:796:84;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;2765:796:84;;;;;;1788:109:92;2765:796:84;;;;;:::i;:::-;;;-1:-1:-1;2765:796:84;1788:109:92;2765:796:84;;;-1:-1:-1;2765:796:84;;;;;;;;;;;;;;;;;1788:109:92;2765:796:84;;;;;;;;;;;;;;-1:-1:-1;;2765:796:84;;;;;;;1374:6:92;2765:796:84;;;;;;;;;-1:-1:-1;;2765:796:84;;;;;;1528:51:92;-1:-1:-1;;;;;2765:796:84;;;;;;;;;;;;-1:-1:-1;;2765:796:84;;;;;;322:32:69;-1:-1:-1;;;;;2765:796:84;;;;;;;;;;;;-1:-1:-1;;2765:796:84;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2765:796:84;;;;-1:-1:-1;;;;;2765:796:84;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;2765:796:84;;;;;;;4301:16:25;2765:796:84;;4726:16:25;;:34;;;;2765:796:84;4805:1:25;4790:16;:50;;;;2765:796:84;4855:13:25;:30;;;;2765:796:84;4851:91:25;;;-1:-1:-1;;;;;;;;;;;2765:796:84;;-1:-1:-1;;2765:796:84;;;;;718:4:69;;4951:18:25;4979:67;;718:4:69;:::i;:::-;5066:101:25;;2765:796:84;5066:101:25;-1:-1:-1;;;;;;;;;;;2765:796:84;;-1:-1:-1;;;;2765:796:84;;;;;-1:-1:-1;2765:796:84;;5142:14:25;;2765:796:84;;5142:14:25;2765:796:84;4979:67:25;-1:-1:-1;;;;;;;;;;;2765:796:84;;-1:-1:-1;;;;2765:796:84;-1:-1:-1;;;2765:796:84;;;718:4:69;:::i;4851:91:25:-;2765:796:84;;-1:-1:-1;;;4908:23:25;;2765:796:84;;4908:23:25;4855:30;4872:13;;;4855:30;;;4790:50;4818:4;4810:25;:30;;-1:-1:-1;4790:50:25;;4726:34;;;-1:-1:-1;4726:34:25;;2765:796:84;;;;;;-1:-1:-1;;2765:796:84;;;;;;2811:43;-1:-1:-1;;;;;2765:796:84;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;2765:796:84;;;;-1:-1:-1;2765:796:84;;;477:31:75;2765:796:84;;;;;;:::i;:::-;;;;;;;;;;;;;;;416:25:75;;;;2765:796:84;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;2765:796:84;;;;;;;;;;;;;477:31:75;;2765:796:84;;;;;;;;;;:::i;:::-;477:31:75;2765:796:84;;477:31:75;;;;;;:::i;:::-;518:79;;;2765:796:84;518:79:75;;2765:796:84;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2765:796:84;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;-1:-1:-1;;;;;2765:796:84;;;;;;;:::o;:::-;-1:-1:-1;;;;;2765:796:84;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;2765:796:84;;;;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;:::i;:::-;-1:-1:-1;;;;;2765:796:84;;;;;;-1:-1:-1;;2765:796:84;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;2765:796:84;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;2765:796:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;2765:796:84;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;2692:73:92;:38;2765:796:84;;;:::i;:::-;;;;;-1:-1:-1;2765:796:84;2692:16:92;2765:796:84;;;-1:-1:-1;2765:796:84;;;;;;;;;;;;;;;;;2692:38:92;:73;:::i;2765:796:84:-;;;;;3248:62:92;2765:796:84;;;:::i;:::-;3248:62:92;;;;;:::i;:::-;2765:796:84;;;;;;;;;;;;;-1:-1:-1;;2765:796:84;;;;;;;-1:-1:-1;;;;;404:28:69;2765:796:84;;;;;;;;;;-1:-1:-1;;2765:796:84;;;;;;;1271:7:92;2765:796:84;;;;;;;;;-1:-1:-1;;2765:796:84;;;;;;;;-1:-1:-1;;;;;2765:796:84;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;2765:796:84;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;774:1493:93:-;;;;;;;;2765:796:84;;:::i;:::-;1076:16:93;;1072:91;;774:1493;837:15:62;;819:34;837:15;819:34;:::i;:::-;-1:-1:-1;2765:796:84;1215:29:93;;;;:27;;:13;;-1:-1:-1;;;;;2765:796:84;1215:13:93;2765:796:84;;-1:-1:-1;;;;;2765:796:84;;;1215:27:93;2765:796:84;;-1:-1:-1;;;1215:29:93;;2765:796:84;;;;;1215:29:93;;;;;;1177:67;1215:29;1196:48;1215:29;-1:-1:-1;1215:29:93;;;774:1493;1196:48;;:::i;:::-;2765:796:84;;;;1177:67:93;2765:796:84;;;1177:67:93;;;:107;;;;;774:1493;1173:178;;;1418:87;1531:33;1474:30;;1418:87;;;;:::i;:::-;1531:33;;;;;:::i;:::-;1578:18;;;1574:75;;1950:87;;;2200:60;1718:16;2200:60;1718:16;;;;;;:::i;:::-;1791:13;;;;;:::i;:::-;2765:796:84;;:::i;:::-;;;;1215:29:93;1961:75;;2765:796:84;;;1950:87:93;;;1215:29;1950:87;;2765:796:84;;;;;;;;;;;;;;;;;;;1950:87:93;;;;;;:::i;:::-;2087:16;;;;:::i;:::-;2167;;;;;;:::i;:::-;2765:796:84;;;;;;;;;;;;;;-1:-1:-1;;;;;2765:796:84;;;;;;;;;;;2200:60:93;;;;774:1493::o;1574:75::-;2765:796:84;;-1:-1:-1;;;1619:19:93;;1215:29;;1619:19;1173:178;2765:796:84;;-1:-1:-1;;;1315:25:93;;1215:29;;1315:25;1177:107;837:15:62;;1248:36:93;819:34:62;837:15;819:34;:::i;1248:36:93:-;-1:-1:-1;1248:36:93;1177:107;;;1215:29;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;1072:91;1121:31;;;;;;;;:::i;:::-;1072:91;;;;;2765:796:84;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;2765:796:84;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;2765:796:84;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;3020:539::-;2765:796;;-1:-1:-1;;;3303:105:84;;-1:-1:-1;;;;;2765:796:84;;;3303:105;;;2765:796;;;;;;;;;;;;;;;;;;;;;;;;;3020:539;2765:796;3303:105;;2765:796;;;;;;3320:18;2765:796;3303:105;;;;;;;;;;;3020:539;2765:796;;;3419:134;;3020:539;:::o;3419:134::-;3476:66;2765:796;;;3476:66;2765:796;;;:::i;:::-;;;;;;3476:66;;;2765:796;3476:66;;;:::i;3303:105::-;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;2505:267:92;-1:-1:-1;2765:796:84;;;2692:16:92;2765:796:84;;;;;;;;-1:-1:-1;;;;;2765:796:84;;;;;;;;;2692:73:92;;2505:267;;2692:73;:::i;2765:796:84:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;2765:796:84;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;2765:796:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;2765:796:84;;;;;;;;:::o;:::-;;;;;;;;;;:::o;3323:1122:92:-;;2765:796:84;;:::i;:::-;;;;3608:16:92;3604:109;;3323:1122;837:15:62;;819:34;837:15;819:34;:::i;:::-;-1:-1:-1;2765:796:84;;;;3778:27:92;;:13;;-1:-1:-1;;;;;2765:796:84;3778:13:92;2765:796:84;3778:27:92;2765:796:84;;;;;;;3778:29:92;;;;;;;;;;;;;;;3740:67;3778:29;3759:48;3778:29;-1:-1:-1;3778:29:92;;;3759:48;;:::i;3740:67::-;2765:796:84;;;3740:67:92;;;:107;;;;;3323:1122;3740:197;;;;3323:1122;3723:263;;;2765:796:84;3778:29:92;2765:796:84;;;;;;;;;;4025:25:92;;;;;;;;;4010:143;4025:25;;;-1:-1:-1;4025:25:92;;;3323:1122;4113:30;;;2765:796:84;;;;;;;;;;;4010:143:92;;;;;3778:29;4010:143;;;:::i;:::-;;;-1:-1:-1;;;;;2765:796:84;4010:143:92;;;;;;;4181:257;4010:143;-1:-1:-1;4010:143:92;;;3323:1122;3996:157;;4293:102;3996:157;;4233:162;3996:157;4207:231;3996:157;;2936:28;:47;:38;:28;;;2765:796:84;;2936:16:92;2765:796:84;;;;;;;2936:28:92;2765:796:84;;;;;;;;;;;;;;;;2936:47:92;4351:43;;;4293:102;;:::i;:::-;4233:162;;:::i;:::-;4207:231;:::i;4181:257::-;3323:1122;:::o;4010:143::-;4233:162;4010:143;;;4207:231;4010:143;;;;4293:102;4010:143;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;4025:25;;;;;;;;;;;;;;:::i;:::-;;;;3723:263;3962:13;;;;;;-1:-1:-1;3962:13:92;-1:-1:-1;3962:13:92;:::o;3740:197::-;3886:41;;3867:70;3886:51;;:41;;;2765:796:84;;3886:29:92;2765:796:84;;;;;;;3886:51:92;2765:796:84;;;;;3867:70:92;-1:-1:-1;3740:197:92;;;:107;837:15:62;;3811:36:92;819:34:62;837:15;819:34;:::i;3811:36:92:-;;;;3740:107;;;3778:29;;;;;;;;;;;;;;;:::i;3604:109::-;3662:40;;;;;;;;;;;;:::i;:::-;3604:109;;;;2557:104:57;;2641:5;;;;;;:13;2557:104;:::o;2641:13::-;;;2557:104;:::o;4714:335:92:-;;;;2765:796:84;-1:-1:-1;2765:796:84;4876:29:92;2765:796:84;;;;4876:51:92;2765:796:84;;-1:-1:-1;2765:796:84;;;;;;;;;;;;;;;;;4876:51:92;2765:796:84;;;;;-1:-1:-1;4872:171:92;;4714:335;;;:::o;4872:171::-;4962:70;2765:796:84;4962:51:92;2765:796:84;-1:-1:-1;2765:796:84;4876:29:92;2765:796:84;;;-1:-1:-1;2765:796:84;;;;;;;;;;;;;;;;;4962:51:92;2765:796:84;;;;;;;;;;;;;;9856:1:60;2765:796:84;;;;;;;:::o;5055:221:92:-;;;2765:796:84;-1:-1:-1;2765:796:84;5160:16:92;2765:796:84;;2936:47:92;:38;5160;2765:796:84;;-1:-1:-1;2765:796:84;;;;;;;;;;;;;;;;;5160:38:92;837:15:62;819:34;837:15;819:34;:::i;:::-;2765:796:84;-1:-1:-1;2765:796:84;5160:16:92;2765:796:84;;;-1:-1:-1;2765:796:84;;;;;;;;;;;;;;;;;2936:47:92;2765:796:84;;;;;;;;6360:12:86;;;2765:796:84;;;6360:24:86;6356:75;;5055:221:92;6474:30:86;;;:::i;:::-;2765:796:84;;;;;6578:12:86;;;;:::i;:::-;;6604:24;;;5055:221:92;-1:-1:-1;6600:188:86;;;-1:-1:-1;;;;2765:796:84;;;;;;;6644:29:86;:21;;;;:::i;:::-;:29;2765:796:84;;;;;;;;;;;;;;;;;;;;;6600:188:86;6753:24;;8167:38:60;;-1:-1:-1;;;;;2765:796:84;;;;;8167:38:60;:::i;:::-;6753:24:86;;;:::i;6604:::-;2765:796:84;;;;;;6614:14:86;;-1:-1:-1;6604:24:86;;;6356:75;6400:20;;;:::i;:::-;6356:75;;2765:796:84;;;;;;;;-1:-1:-1;;;;;2765:796:84;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;5282:431:92:-;;;;5487:25;;:23;:13;2765:796:84;5494:5:92;2765:796:84;;;;;;;;;5487:23:92;2765:796:84;;-1:-1:-1;;;5487:25:92;;2765:796:84;;;;;5487:25:92;;;;;;;5631:65;5487:25;5631:65;5487:25;5494:5;5487:25;;;5282:431;-1:-1:-1;;;;;;2765:796:84;;;;:::i;:::-;-1:-1:-1;;;;;5677:4:92;2765:796:84;;;5677:4:92;5487:25;5642:53;;2765:796:84;;;5631:65:92;;;5487:25;5631:65;;;:::i;:::-;5472:234;;;;;5494:5;2765:796:84;5472:234:92;2765:796:84;;;;;;;;;;;;;;5472:234:92;;5487:25;5472:234;;;:::i;:::-;;;;;;;;;;;5282:431;:::o;5472:234::-;;;;;;:::i;:::-;;;:::i;5487:25::-;;;;;;;;;;;;;;:::i;:::-;;;;5719:137;5809:5;2765:796:84;;;;-1:-1:-1;;;5802:47:92;;;;;2765:796:84;;;;;;;;;;;;;;;5802:47:92;;2765:796:84;;;;;;-1:-1:-1;;;;;2765:796:84;5802:47:92;;;;;;;;5719:137;:::o;5802:47::-;;;;;;;;;;;;;:::i;:::-;;5719:137::o;2765:796:84:-;;;;;;;:::o;:::-;;;;;;;;;;;;5862:623:92;;;5988:12;2765:796:84;;;;;;;5984:495:92;;5862:623;;;;;;:::o;5984:495::-;2765:796:84;;-1:-1:-1;;;6033:22:92;;2765:796:84;6033:22:92;;2765:796:84;;6033:22:92;;2765:796:84;;-1:-1:-1;;;;;2765:796:84;6033:22:92;;;;;;;5988:12;6033:22;;;5984:495;-1:-1:-1;2765:796:84;;-1:-1:-1;;;6033:22:92;6094:81;;;;;;;;2765:796:84;;;;-1:-1:-1;;;;;2765:796:84;;;;;;;;;;;;;;;;;;;;;;6094:81:92;2765:796:84;;;;6094:81:92;;2765:796:84;;6094:81:92;;;;;;:::i;:::-;2765:796:84;6194:9:92;:55;6190:124;;5988:12;6328:141;;;;;;1271:7;6328:141;;5984:495;;;;;;;6190:124;2765:796:84;;-1:-1:-1;;;6276:23:92;;6033:22;;6276:23;6033:22;6094:81;6033:22;;;6094:81;6033:22;;;;;;;;;;;:::i;:::-;;;;;2765:796:84;;;;;;;;-1:-1:-1;2765:796:84;;-1:-1:-1;2765:796:84;;;-1:-1:-1;2765:796:84;:::o;:::-;;;;;;;;;;;;10580:184:86;2765:796:84;;10303:8:60;;;:63;-1:-1:-1;10303:63:60;-1:-1:-1;;;;;2765:796:84;;10726:7:86;2765:796:84;;10736:12:86;:17;:12;;:17;:::i;:::-;2765:796:84;;;;;;10580:184:86;:::o;10726:31::-;;;-1:-1:-1;10580:184:86;:::o;10303:63:60:-;2765:796:84;;;;;;;;;;14249:109:60;-1:-1:-1;14249:109:60;;-1:-1:-1;14249:109:60;;;2765:796:84;;;10303:63:60;;2765:796:84;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;2765:796:84;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;:::i;6491:564:92:-;6614:34;6491:564;6614:34;;;;:::i;:::-;2765:796:84;;-1:-1:-1;;;6664:41:92;;-1:-1:-1;;;;;2765:796:84;;;6664:41:92;;;2765:796:84;;;;;6664:41:92;;;2765:796:84;;;6674:13:92;2765:796:84;;6664:41:92;;;;;;;-1:-1:-1;6664:41:92;;;6491:564;6663:42;;6659:90;;2540:111:28;6850:27:92;6664:41;2540:111:28;;;:::i;:::-;-1:-1:-1;2765:796:84;;-1:-1:-1;;;;;;2765:796:84;-1:-1:-1;;;;;2765:796:84;;;;;6850:27:92;:::i;:::-;2765:796:84;;;;;;;;;;6892:23:92;;;;;;;;;-1:-1:-1;6892:23:92;;;6491:564;2765:796:84;;;6892:37:92;:64;;;6491:564;6888:112;;2765:796:84;7010:38:92;;2765:796:84;;-1:-1:-1;2765:796:84;;-1:-1:-1;;;;2765:796:84;;;;;;-1:-1:-1;;;2765:796:84;;;;;;;;6888:112:92;2765:796:84;;-1:-1:-1;;;6979:10:92;;6664:41;;6979:10;6892:64;-1:-1:-1;2765:796:84;;;;6892:64:92;;:23;;;;;;-1:-1:-1;6892:23:92;;;;;;:::i;:::-;;;;;6659:90;2765:796:84;;-1:-1:-1;;;6728:10:92;;6664:41;;6728:10;6664:41;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;2765:796:84;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::o;7558:604:86:-;;2765:796:84;;7686:17:86;7682:83;;2765:796:84;7789:27:86;2765:796:84;7789:27:86;2765:796:84;;7789:27:86;;;;;;:::i;:::-;7860:14;;;;;:::i;:::-;2765:796:84;;;;;;;;;;;;;;;;7888:22:86;;;7884:77;;7975:21;-1:-1:-1;7975:84:86;;;;7558:604;7971:139;;;;8127:28;;;;:::i;7971:139::-;8082:17;;7789:27;8082:17;2765:796:84;8075:24:86;:::o;7975:84::-;2765:796:84;;;8009:16:86;2765:796:84;;8009:16:86;:::i;:::-;2765:796:84;;;8001:24:86;:57;;;;;7975:84;;;;;;;8001:57;8029:29;8038:8;;;8029:18;8038:8;8029:23;8038:8;;:::i;:::-;8029:18;;:::i;:::-;2765:796:84;;;;;8029:29:86;;8001:57;;;;7884:77;7933:17;;;;;7789:27;7933:17;2765:796:84;7926:24:86;:::o;7682:83::-;7726:28;;;;:::i;14291:213:58:-;2765:796:84;14369:24:58;;;;14365:103;;2765:796:84;14291:213:58;:::o;14365:103::-;2765:796:84;;;;14416:41:58;;;;;;14447:2;14416:41;;;2765:796:84;;;;;14416:41:58;2765:796:84;;;-1:-1:-1;;;2765:796:84;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;-1:-1:-1;;;2765:796:84;;;;;;;;;;;;;;;:::i;6893:76:25:-;;;:::i;:::-;;;:::i;:::-;1805:1:28;2355:73;1847:1;6893:76:25:o;2273:218:93:-;-1:-1:-1;2765:796:84;;;;;:::i;:::-;;;;;;2419:30:93;;2765:796:84;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;2419:30:93;2765:796:84;:::i;:::-;;;;2273:218:93;:::o;6999:207:86:-;;2765:796:84;;9594:15:60;-1:-1:-1;9619:18:60;9652:7;9658:1;9652:7;;9648:234;;6999:207:86;9906:53:60;;;;;:::i;:::-;9977:8;;;:63;-1:-1:-1;9977:63:60;;-1:-1:-1;;;;;2765:796:84;;7168:7:86;2765:796:84;;;7178:12:86;;:17;:12;;:17;:::i;9977:63:60:-;9992:41;10025:7;9992:48;10025:7;;:::i;:::-;9992:41;14249:109;;;;;;14099:265;;9992:41;2765:796:84;;;;;9992:48:60;9977:63;;;9648:234;9695:14;;;;;:::i;:::-;2765:796:84;;;;;;;9906:53:60;14249:109;;-1:-1:-1;14249:109:60;2765:796:84;14249:109:60;;;-1:-1:-1;14249:109:60;;2765:796:84;;;;;9727:48:60;9723:149;2765:796:84;;;9795:10:60;9723:149;9648:234;;9723:149;9850:7;;;;;;:::i;:::-;9723:149;9648:234;;2765:796:84;;;;;;;:::i;:::-;-1:-1:-1;2765:796:84;;;;;;;:::o;11486:272:86:-;;2765:796:84;11308:22:60;11718:31:86;11486:272;2765:796:84;;:::i;:::-;;;;:::i;:::-;;11308:22:60;;:::i;:::-;2765:796:84;;:::i;:::-;;11718:12:86;2765:796:84;;;;;11731:17:86;2765:796:84;;;;;11731:17:86;;2765:796:84;;11718:12:86;;:31;:::i;:::-;2765:796:84;;;;;;;;;:::i;:::-;;;;;;11731:17:86;11672:79;;2765:796:84;11486:272:86;:::o;2765:796:84:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;10552:388:60:-;2765:796:84;;10728:8:60;;;10752:20;;10690:17;10752:20;10690:17;10752:20;10690:17;10752:20;:::o;10724:210::-;2765:796:84;;;;;;;;;;;14249:109:60;10690:17;14249:109;;10690:17;14249:109;;;2765:796:84;:::i;:::-;;;;;;;14249:109:60;2765:796:84;;;;;10911:11:60;;2765:796:84;;10886:37:60;10870:1;10886:37;;;:::o;7084:141:25:-;2765:796:84;-1:-1:-1;;;;;;;;;;;2765:796:84;;;;7150:18:25;7146:73;;7084:141::o;7146:73::-;2765:796:84;;-1:-1:-1;;;7191:17:25;;;;;2765:796:84;;;-1:-1:-1;;;2765:796:84;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;2765:796:84;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;11513:870:60;2765:796:84;;11513:870:60;;;2765:796:84;11513:870:60;11672:7;;;;2765:796:84;11775:28:60;11795:7;;;:::i;11775:28::-;2765:796:84;:::i;:::-;;;;;;;;;;;;;;;;11877:15:60;-1:-1:-1;11873:91:60;;2765:796:84;;12233:11:60;2765:796:84;;;12027:16:60;2765:796:84;;;;;;;12027:16:60;;;;12083:7;12063:43;12083:7;;12063:28;12083:7;;:::i;:::-;12063:28;14249:109;;;;;;14099:265;;12063:28;2765:796:84;;;;;;;;;;;;;;;;;12063:43:60;12233:11;2765:796:84;-1:-1:-1;;;;;2765:796:84;;;;12225:27:60;;:::o;12023:189::-;2765:796:84;;;12145:52:60;2765:796:84;12155:41:60;2765:796:84;;:::i;:::-;;;;;;;;12155:41:60;-1:-1:-1;;;;;2765:796:84;;12155:41:60;;;2765:796:84;12145:52:60;:::i;:::-;12023:189;;11873:91;2765:796:84;;-1:-1:-1;;;11919:30:60;;;;;11668:709;12283:52;2765:796:84;;12293:41:60;2765:796:84;;:::i;12293:41:60:-;-1:-1:-1;;;;;2765:796:84;;12293:41:60;;;2765:796:84;12145:52:60;:::i;12283:::-;11678:1;12349:17;;:::o;8587:1642:57:-;8658:6;;8654:45;;9401:7;10201:10;10142:26;10093;10044;9995;9946;9897;9848;2765:796:84;10189:23:57;9401:7;8663:1;2765:796:84;;;;10826:16:57;10822:99;;8587:1642;2765:796:84;;;;10938:15:57;10934:96;;8587:1642;2765:796:84;;;;11047:15:57;11043:96;;8587:1642;2765:796:84;;;;11156:15:57;11152:96;;8587:1642;2765:796:84;;;;11265:14:57;11261:93;;8587:1642;2765:796:84;;;;11371:14:57;11367:93;;8587:1642;2765:796:84;;;;11477:14:57;11473:93;;8587:1642;2765:796:84;;;11579:64:57;;8587:1642;2765:796:84;;;9858:10:57;;;;:::i;:::-;2765:796:84;;;;;9848:26:57;9907:10;;;;:::i;9897:26::-;9956:10;;;;:::i;9946:26::-;10005:10;;;;:::i;9995:26::-;10054:10;;;;:::i;10044:26::-;10103:10;;;;:::i;10093:26::-;10152:10;;;;:::i;10142:26::-;10201:10;;;:::i;:::-;10189:23;;:::i;11579:64::-;2765:796:84;;11579:64:57;;11473:93;2765:796:84;11511:11:57;;2765:796:84;;11473:93:57;;;;11367;2765:796:84;11405:11:57;;2765:796:84;;11367:93:57;;;;11261;2765:796:84;11299:11:57;;2765:796:84;;11261:93:57;;;;11152:96;2765:796:84;11191:12:57;;2765:796:84;;11152:96:57;;;;11043;2765:796:84;11082:12:57;;2765:796:84;;11043:96:57;;;;10934;2765:796:84;10973:12:57;;2765:796:84;;10934:96:57;;;;10822:99;10862:13;;;2765:796:84;10822:99:57;;;;8654:45;8680:8;8663:1;8680:8;:::o;12736:433:60:-;;;12919:10;;;;;;13151:11;;;12736:433;:::o;12912:230::-;2900:5:57;;;;;;2910;;;;2765:796:84;;;;;;;;;14249:109:60;-1:-1:-1;14249:109:60;2765:796:84;14249:109:60;;;-1:-1:-1;14249:109:60;;2765:796:84;;;;;-1:-1:-1;12996:136:60;2765:796:84;;;13055:10:60;12996:136;;12912:230;;;;12996:136;13110:7;;;;;;:::i;:::-;12996:136;;","linkReferences":{},"immutableReferences":{"57808":[{"start":1266,"length":32}],"57811":[{"start":2377,"length":32},{"start":4985,"length":32}],"62913":[{"start":1682,"length":32},{"start":3379,"length":32}],"65592":[{"start":797,"length":32},{"start":5801,"length":32}],"65595":[{"start":540,"length":32},{"start":1198,"length":32}]}},"methodIdentifiers":{"BASE_SLASHER_HINTS()":"457821b7","BURNER_GAS_LIMIT()":"d5c24e1a","BURNER_RESERVE()":"2964f8dc","FACTORY()":"2dd31000","NETWORK_MIDDLEWARE_SERVICE()":"2c9d45b3","TYPE()":"bb24fe8a","VAULT_FACTORY()":"103f2907","cumulativeSlash(bytes32,address)":"1a2be2c4","cumulativeSlashAt(bytes32,address,uint48,bytes)":"aa8e6489","initialize(bytes)":"439fab91","isBurnerHook()":"34d098ea","latestSlashedCaptureTimestamp(bytes32,address)":"267de1f3","slash(bytes32,address,uint256,uint48,bytes)":"021a8156","slashHints(address,address,bytes32,address,uint256,uint48)":"238ab85f","slashableStake(bytes32,address,uint48,bytes)":"aab3595f","staticDelegateCall(address,bytes)":"9f86fd85","vault()":"fbfa77cf"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"baseSlasherHints\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"CheckpointUnorderedInsertion\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExternalCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBurnerGas\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientSlash\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCaptureTimestamp\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoBurner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotNetworkMiddleware\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slashedAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"}],\"name\":\"Slash\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BASE_SLASHER_HINTS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BURNER_GAS_LIMIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BURNER_RESERVE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NETWORK_MIDDLEWARE_SERVICE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TYPE\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VAULT_FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"cumulativeSlash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"cumulativeSlashAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isBurnerHook\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"latestSlashedCaptureTimestamp\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"value\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hints\",\"type\":\"bytes\"}],\"name\":\"slash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"slashedAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"slasher\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"}],\"name\":\"slashHints\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hints\",\"type\":\"bytes\"}],\"name\":\"slashableStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"staticDelegateCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"CheckpointUnorderedInsertion()\":[{\"details\":\"A value was attempted to be inserted on a past checkpoint.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Slash(bytes32,address,uint256,uint48)\":{\"params\":{\"captureTimestamp\":\"time point when the stake was captured\",\"operator\":\"operator that is slashed\",\"slashedAmount\":\"virtual amount of the collateral slashed\",\"subnetwork\":\"subnetwork that requested the slash\"}}},\"kind\":\"dev\",\"methods\":{\"cumulativeSlash(bytes32,address)\":{\"params\":{\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"_0\":\"cumulative slash amount\"}},\"cumulativeSlashAt(bytes32,address,uint48,bytes)\":{\"params\":{\"hint\":\"hint for the checkpoint index\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\",\"timestamp\":\"time point to get the cumulative slash amount until (inclusively)\"},\"returns\":{\"_0\":\"cumulative slash amount until the given timestamp (inclusively)\"}},\"initialize(bytes)\":{\"params\":{\"data\":\"some data to use\"}},\"slash(bytes32,address,uint256,uint48,bytes)\":{\"details\":\"Only a network middleware can call this function.\",\"params\":{\"amount\":\"maximum amount of the collateral to be slashed\",\"captureTimestamp\":\"time point when the stake was captured\",\"hints\":\"hints for checkpoints' indexes\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"slashedAmount\":\"virtual amount of the collateral slashed\"}},\"slashableStake(bytes32,address,uint48,bytes)\":{\"params\":{\"captureTimestamp\":\"time point to get the stake amount at\",\"hints\":\"hints for the checkpoints' indexes\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"amount\":\"slashable amount of the stake\"}},\"staticDelegateCall(address,bytes)\":{\"details\":\"It allows to use this contract's storage on-chain.\",\"params\":{\"data\":\"data to make a delegatecall with\",\"target\":\"address of the contract to make a delegatecall to\"}}},\"version\":1},\"userdoc\":{\"events\":{\"Slash(bytes32,address,uint256,uint48)\":{\"notice\":\"Emitted when a slash is performed.\"}},\"kind\":\"user\",\"methods\":{\"BURNER_GAS_LIMIT()\":{\"notice\":\"Get a gas limit for the burner.\"},\"BURNER_RESERVE()\":{\"notice\":\"Get a reserve gas between the gas limit check and the burner's execution.\"},\"FACTORY()\":{\"notice\":\"Get the factory's address.\"},\"NETWORK_MIDDLEWARE_SERVICE()\":{\"notice\":\"Get the network middleware service's address.\"},\"TYPE()\":{\"notice\":\"Get the entity's type.\"},\"VAULT_FACTORY()\":{\"notice\":\"Get the vault factory's address.\"},\"cumulativeSlash(bytes32,address)\":{\"notice\":\"Get a cumulative slash amount for an operator on a subnetwork.\"},\"cumulativeSlashAt(bytes32,address,uint48,bytes)\":{\"notice\":\"Get a cumulative slash amount for an operator on a subnetwork until a given timestamp (inclusively) using a hint.\"},\"initialize(bytes)\":{\"notice\":\"Initialize this entity contract by using a given data.\"},\"isBurnerHook()\":{\"notice\":\"Get if the burner is needed to be called on a slashing.\"},\"latestSlashedCaptureTimestamp(bytes32,address)\":{\"notice\":\"Get the latest capture timestamp that was slashed on a subnetwork.\"},\"slash(bytes32,address,uint256,uint48,bytes)\":{\"notice\":\"Perform a slash using a subnetwork for a particular operator by a given amount using hints.\"},\"slashableStake(bytes32,address,uint48,bytes)\":{\"notice\":\"Get a slashable amount of a stake got at a given capture timestamp using hints.\"},\"staticDelegateCall(address,bytes)\":{\"notice\":\"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data).\"},\"vault()\":{\"notice\":\"Get the vault's address.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/hints/SlasherHints.sol\":\"SlasherHints\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://942dad22fbdc1669f025540ba63aa3ccfad5f8458fc5d4525b31ebf272e7af45\",\"dweb:/ipfs/Qmdo4X2M82aM3AMoW2kf2jhYkSCyC4T1pHNd6obdsDFnAB\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45\",\"dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26\",\"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol\":{\"keccak256\":\"0x85a45f3f10014a0f8be41157a32b6a5f905753ea64a4b64e29fc12b7deeecf39\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c3c74009ce36136b36c77c23935b8e4a7b4f253be2da2be4fb4a916b1ce43743\",\"dweb:/ipfs/QmcH36v3iN7SJJuF73AunLR2LtNxhVJ1wm63ph4dPZ4pcL\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x18a7171df639a934592915a520ecb97c5bbc9675a1105607aac8a94e72bf62c6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7478e1f13da69a2867ccd883001d836b75620362e743f196376d63ed0c422a1c\",\"dweb:/ipfs/QmWywcQ9TNfwtoqAxbn25d8C5VrV12PrPS9UjtGe6pL2BA\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xeed0a08b0b091f528356cbc7245891a4c748682d4f6a18055e8e6ca77d12a6cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba80ba06c8e6be852847e4c5f4492cef801feb6558ae09ed705ff2e04ea8b13c\",\"dweb:/ipfs/QmXRJDv3xHLVQCVXg1ZvR35QS9sij5y9NDWYzMfUfAdTHF\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x999f705a027ed6dc2d4e0df2cc4a509852c6bfd11de1c8161bf88832d0503fd0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0798def67258d9a3cc20b2b4da7ebf351a5cefe0abfdd665d2d81f8e32f89b21\",\"dweb:/ipfs/QmPEvJosnPfzHNjKvCv2D3891mA2Ww8eUwkqrxBjuYdHCt\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0xba333517a3add42cd35fe877656fc3dfcc9de53baa4f3aabbd6d12a92e4ea435\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ceacff44c0fdc81e48e0e0b1db87a2076d3c1fb497341de077bf1da9f6b406c\",\"dweb:/ipfs/QmRUo1muMRAewxrKQ7TkXUtknyRoR57AyEkoPpiuZQ8FzX\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/SignatureChecker.sol\":{\"keccak256\":\"0x6b11eb41a228cca35d4b662b4df69fcd75192851365102690f57b2ac01e83fe6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab006a2983ed350d2af21ddcdd835dcae3b8340086cc4d088460da5abd041f69\",\"dweb:/ipfs/QmbEacDhkJZiGrgzLjB4pNtE8Z1uudjDw1DvcDUTVQFsLG\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c\",\"dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0xbdc5e074d7dd6678f67e92b1a51a20226801a407b0e1af3da367c5d1ff4519ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a36cca6b22fff3db16fc789ff6c60eea71d4b156065d4d0c83a0bc5e91a77a8b\",\"dweb:/ipfs/QmYN3exd5AemxjBrN8XMB1p5LbbE16uC3sjbYjwi8AjcGR\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0xc7755af115020049e4140f224f9ee88d7e1799ffb0646f37bf0df24bf6213f58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f09bf94d5274334ec021f61a04659db303f31e60460e14b709c9bf187740111\",\"dweb:/ipfs/QmNvgomZYUwFAt4cZbPWAiTeSZQreGehY9BK5xyVJsUttb\"]},\"src/contracts/common/Entity.sol\":{\"keccak256\":\"0x3d61a932995b8443381f3950542d388223a2c26dd5d29a3274dea3baa7388bd7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7cdf5f03ca72fd263fd32ff59c8d88ddca911ae83896a287d10772c1bbe9b138\",\"dweb:/ipfs/QmbP84r5BWT1Rn9AYTntWSf3xUMTTCohTZJFhbBhDXFoHa\"]},\"src/contracts/common/MigratableEntity.sol\":{\"keccak256\":\"0x2d736f4dacd5d7e7697503bc426c78b8250fe1694ca157965ec178da6807de58\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f1237acf96b4b9f9b69156e068eddd726a6e15bd8e87a18dc999cd4ba4da069c\",\"dweb:/ipfs/QmS6M8fiFFSeuJ4ZKKq1z8W7w4ybeHQSy5TLASGoc1LVic\"]},\"src/contracts/common/StaticDelegateCallable.sol\":{\"keccak256\":\"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764\",\"dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD\"]},\"src/contracts/delegator/BaseDelegator.sol\":{\"keccak256\":\"0x7c54d491fdd4415b764a9c8defa068e56d4c0c8c9419be0053a1d377669290e8\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://9238bfbad0f6eeb0dc7727724de14380f1980b395902269703d5e2ef07e52e10\",\"dweb:/ipfs/QmPJn1V4HNXcEghYvogGuSTF24dSQUPosR5qtsXcmNqRm3\"]},\"src/contracts/delegator/FullRestakeDelegator.sol\":{\"keccak256\":\"0x0a81c4f8e72914563a9cb771e93acf889c71ea36b7bec040e4eb562b199d5af1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6fc66b6ba02da77046a0bbbd1dd407a62c08f52e04486c9cbd2cb1cca3da555f\",\"dweb:/ipfs/QmZQivK1ZnMxfRQQ5aLpV9co5u55wQVNev5Rg1hzAqxhkE\"]},\"src/contracts/delegator/NetworkRestakeDelegator.sol\":{\"keccak256\":\"0xd3a8e6522f9c6fdcc2da837c9023afd6bdff2bce45a35590320c475519e3636d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://58b17a87f6554f08376f9ea7fedf486a4aa75801bf0ad8b23ff5a46959b6b7a3\",\"dweb:/ipfs/QmSTmNh67tYt8CmjVZb57r8N3qX5yeYdMApKPJm3qvQgQw\"]},\"src/contracts/delegator/OperatorNetworkSpecificDelegator.sol\":{\"keccak256\":\"0x031a10722b9ec49048f0952710401131290adb87e71caf294e864e7ac3b98a16\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://72428febc875134b2f29205e6f294634a1c22a7d5c78d6a9cb2f8196f107c9b5\",\"dweb:/ipfs/QmTPwXR6h5oytckmkLrHdKeEMdphJxceDhYUR4zvQeWAwY\"]},\"src/contracts/delegator/OperatorSpecificDelegator.sol\":{\"keccak256\":\"0x630ce62fa30b9f3349ab7a8cf8dbf041319febc6dd757be2f94d3d25944ed328\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c2ac59d47ce57d2a6819ae9833e1a618a371eccff93eb5ab367b201b01f42bfa\",\"dweb:/ipfs/QmdBpGMBivpNPv2WbH8vnCUy5xkVeaxQvGgqi33vKCz1kA\"]},\"src/contracts/hints/DelegatorHints.sol\":{\"keccak256\":\"0x44aa0c396311a54afbc7c73e8dadeed41e3165a4fd13f712b27d63d50fc3376d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://2f255214f3531fc707d88be0d56a7a0aed4180439316d099d760d9118aa83093\",\"dweb:/ipfs/QmZD1w5p1ukJSXumUAjvxwGmkPhn7vsr21Y2atLGEZR2oi\"]},\"src/contracts/hints/Hints.sol\":{\"keccak256\":\"0x8b565df1ae35993c097a9e642002782a8f451f6fd01809cad6bcd345bdf1b99c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://99a19adb01e350a92f534095b3078229df1f2f83077992d75d58d8684be45971\",\"dweb:/ipfs/QmbmwcuswVbzvwHQFTtrJG86oV98GnfxqYTb8cV8u1acox\"]},\"src/contracts/hints/OptInServiceHints.sol\":{\"keccak256\":\"0x95d9407900d27b9f4a1233b772aeed809c07b2dc5b31cfc9fa77ca26514c49e5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://a13a8877e312d7e6b8b85bde3668c5d84ff5ecc83f762cd573f2b7104c64eb42\",\"dweb:/ipfs/QmYV2J55acuGzCNnS3juABuUHY5U1xc8g8o9jwEyFFdeG5\"]},\"src/contracts/hints/SlasherHints.sol\":{\"keccak256\":\"0xd77c5f3bbb0265af8ecd947df88f6f9684e136d80052b5292f5b29aaa3566a3f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://484a26504bf6706202ec82a9a4cfa7d196bbc552b5b78ced25bf7130c2842595\",\"dweb:/ipfs/QmaQqmkoZoUWEam4R94vmajzH3gKqFqpZQwFbrHDsN1peV\"]},\"src/contracts/hints/VaultHints.sol\":{\"keccak256\":\"0xccb505b7159b769cc114d67b87c2de6b106557f667fc8f3780114baad5c3c442\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6d0c80a908fc16e96a8b5605a0bd53f9e89ad0ef0a738fbbae80ba4d3160749b\",\"dweb:/ipfs/QmXo5UtWoR8YmunqcbBU8rQMm1nvmvjNPoXcVrDhh4pEwR\"]},\"src/contracts/libraries/Checkpoints.sol\":{\"keccak256\":\"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609\",\"dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE\"]},\"src/contracts/libraries/ERC4626Math.sol\":{\"keccak256\":\"0x8441160513c1cbeb1c3b9ee077bcc7e7ce20006b52a77c8dd39ff0ef89699939\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://943f8cc3e26ddf649f465f40c909819f5c864717c4baa339e9e403b9374a4653\",\"dweb:/ipfs/QmXPxi1sUDsrGprZdUgCzoPEosaZMv9ZhygWQ1vAi1phAB\"]},\"src/contracts/libraries/Subnetwork.sol\":{\"keccak256\":\"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56\",\"dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32\"]},\"src/contracts/service/OptInService.sol\":{\"keccak256\":\"0x4e0932077f2686b7990e10d59deb2535334c0d09e52ef6e57c6ab09eca21c4b1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7c00d311032ed4a1743aca7475f3c86ce15cdfc2218108efc3731c03d34a5278\",\"dweb:/ipfs/QmUGGfVwVhaHr5kS4177yKKYiLYzi5qZpkEmvYxBZqazxf\"]},\"src/contracts/slasher/BaseSlasher.sol\":{\"keccak256\":\"0x190e5dce196a061bdad42468c52e9f5b0eb7810cd7d0c19f04d6a2e94984f1b6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://07ca08d0cd43c2fe5d54a5577f6bdd522ced410f5d3a52e764deaa7ba26b5f06\",\"dweb:/ipfs/QmZe3PiMKBQKWcwodaLupragdqxPjgS4v1qMC7RXau8hDF\"]},\"src/contracts/slasher/Slasher.sol\":{\"keccak256\":\"0xeee0cb25fad58d496fdcc641d852d11bae06e6ceed5230ae21150964175c494f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://34aa27d21246a1bcee0b6a2afa8d9d613441156362430392f75d176511d58c61\",\"dweb:/ipfs/Qmf53Y3zdGfH4PU2zpSGeHZ8mMLzLXCtmkQrG5mnVJECQ3\"]},\"src/contracts/slasher/VetoSlasher.sol\":{\"keccak256\":\"0xeccc8128de5e1ad499c067feac1c526638fbbac1a18b96726fc7507969fd5897\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://cdfcf281338423625acbccdf8810115b258ef7cfe4aa3c10b8911ead1aa85429\",\"dweb:/ipfs/QmZFsDvZXpkFkx4PHcDXAVPN3ZCAahbSVfYpSVrMBvbt4k\"]},\"src/contracts/vault/Vault.sol\":{\"keccak256\":\"0x2ceff6ed3298c4cad144c99fcc79b51cb9397d6ebef00285b915848b476f8c2e\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://11f2fb3581854f3ab6e82e8d4935d9eb510c903a13c3f022346c2956a58f5307\",\"dweb:/ipfs/QmdUnoXoyYoG9SGWyQZCFyLDRUUX3eXyXetkRvw6jxqqBz\"]},\"src/contracts/vault/VaultStorage.sol\":{\"keccak256\":\"0x57db25b127d77ea3472de53e3a4af3354399655b9268638b99ca5925fa364a56\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://aa763d9a6ec508ae3abfb8228b72b9fd9525279e5135d4962e79ff059feb1173\",\"dweb:/ipfs/QmcbDR6E9wyEpu6V2FkEC4hnWy47zXA9LSKJde6zSGd33Q\"]},\"src/interfaces/common/IEntity.sol\":{\"keccak256\":\"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b\",\"dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv\"]},\"src/interfaces/common/IMigratableEntity.sol\":{\"keccak256\":\"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c\",\"dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds\"]},\"src/interfaces/common/IRegistry.sol\":{\"keccak256\":\"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014\",\"dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK\"]},\"src/interfaces/common/IStaticDelegateCallable.sol\":{\"keccak256\":\"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516\",\"dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi\"]},\"src/interfaces/delegator/IBaseDelegator.sol\":{\"keccak256\":\"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2\",\"dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8\"]},\"src/interfaces/delegator/IDelegatorHook.sol\":{\"keccak256\":\"0xc51aa8d7d1f6c8043ee819b7aeb86da0e993912e1442098df897e299f01f9f46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://adddf5cb2ba282aeb576b26efb28640f865a1721cc9b6eee8b3ee0457a2c9780\",\"dweb:/ipfs/QmNYgAmnLRwWZbhTuQhZs9rx4zcme1df5mEepkrniorSoW\"]},\"src/interfaces/delegator/IFullRestakeDelegator.sol\":{\"keccak256\":\"0xa3c8cb2e45d4d8ce90e95263bea40c01dc400f05ad65bc29597d878606be5e7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://782cf5e201aa4cca037ebafd3807a68ff1cc721d5b8416a35244db0d0607369e\",\"dweb:/ipfs/QmQkJks6x7CKndeTPa9LxgTNygD5uEi7obhADhpq1Lsr9A\"]},\"src/interfaces/delegator/INetworkRestakeDelegator.sol\":{\"keccak256\":\"0xe7030fe30389a147fd710e3436ec346b4842695fd3e65a81b95375c9f1d633fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://739c7e66d301778054f5c90bee45ec9438f68afba8a03eaaac52064c73b115ad\",\"dweb:/ipfs/QmfZ2ytKcTykAc76nxhg8ikUXV8NdBpetqb8W4YWPcox1Z\"]},\"src/interfaces/delegator/IOperatorNetworkSpecificDelegator.sol\":{\"keccak256\":\"0x74b95e64d29769202d45dd277bb830f623ff3d41ce77b80ce3ee4e318a5c71ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e512b903aae5c1b8a028c6e3f4f6223b5cb5d704503cfa6bd37b5346868f5c20\",\"dweb:/ipfs/QmZim9YExsPWtyxyeui993HTKAEmrg8MUcSkZ77Gp2JcuZ\"]},\"src/interfaces/delegator/IOperatorSpecificDelegator.sol\":{\"keccak256\":\"0x72075cab585dc17240cc3e32bc99b92f0d5627ddd988fed680e3e1a52d5a01e4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7448bc90699409ae61d85216b5efc2143a37f0f73354be2aea993bc54afca441\",\"dweb:/ipfs/QmXE4gAxM8pHosZK8mcTcj17puBx484meDCcmrDePskGHZ\"]},\"src/interfaces/service/INetworkMiddlewareService.sol\":{\"keccak256\":\"0x347afc7fcf1fbcdb96d66162070ef6c78aed27b3af2c1d5dfb4e511840631783\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d90b8ceb495159e8e4e95d76447719dd166443f67dfabdd942846162071595c\",\"dweb:/ipfs/QmVVuiAWYx92T6vBvNMKZfTvraCf1fa16BsUKkdNs3hdHA\"]},\"src/interfaces/service/IOptInService.sol\":{\"keccak256\":\"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337\",\"dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24\"]},\"src/interfaces/slasher/IBaseSlasher.sol\":{\"keccak256\":\"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf\",\"dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx\"]},\"src/interfaces/slasher/IBurner.sol\":{\"keccak256\":\"0xaf495dacc19ae0b3c787ba8021c5944927d70261536addd234d7dab146158c2b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b3cc66251008be6ff9fc8b11ecc6831d5a9dca49a3fe9817fcd970253c1d447\",\"dweb:/ipfs/QmVxfb9ALGdF9W3SN2h41gQbUct6tawvu5bw4K89kFQ4HW\"]},\"src/interfaces/slasher/ISlasher.sol\":{\"keccak256\":\"0x34d226d67a3d5e16571f2fac91a8b9773551bcc41c88a96279669dd78d192625\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a6e8c1462ee4a1b0f745414be043c09012ea676613790aba004b06c85c980d1\",\"dweb:/ipfs/QmadjNEbHKRthtA1EeNy3Kg2sXpejH2KBeHm8QZtBPvXbJ\"]},\"src/interfaces/slasher/IVetoSlasher.sol\":{\"keccak256\":\"0xdf7edd04a4f36e9aec3a15241dcb6b6315b2e64927b12710c2c410d571fc55e9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c4be6ac339c2ebf230fed65363f036784224095d0cd0f3f2d01d64d6e0da9508\",\"dweb:/ipfs/QmRSMbpfaHExqrzUA8vYZMYZWh6eQW1KX9JKJSLdgronfg\"]},\"src/interfaces/vault/IVault.sol\":{\"keccak256\":\"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9\",\"dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R\"]},\"src/interfaces/vault/IVaultStorage.sol\":{\"keccak256\":\"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e\",\"dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"baseSlasherHints","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"CheckpointUnorderedInsertion"},{"inputs":[],"type":"error","name":"ExternalCall"},{"inputs":[],"type":"error","name":"InsufficientBurnerGas"},{"inputs":[],"type":"error","name":"InsufficientSlash"},{"inputs":[],"type":"error","name":"InvalidCaptureTimestamp"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"NoBurner"},{"inputs":[],"type":"error","name":"NotInitialized"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"NotNetworkMiddleware"},{"inputs":[],"type":"error","name":"NotVault"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintDowncast"},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"slashedAmount","type":"uint256","indexed":false},{"internalType":"uint48","name":"captureTimestamp","type":"uint48","indexed":false}],"type":"event","name":"Slash","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"BASE_SLASHER_HINTS","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"BURNER_GAS_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"BURNER_RESERVE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"NETWORK_MIDDLEWARE_SERVICE","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"TYPE","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VAULT_FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"cumulativeSlash","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"cumulativeSlashAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"isBurnerHook","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"latestSlashedCaptureTimestamp","outputs":[{"internalType":"uint48","name":"value","type":"uint48"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint48","name":"captureTimestamp","type":"uint48"},{"internalType":"bytes","name":"hints","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"slash","outputs":[{"internalType":"uint256","name":"slashedAmount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"slasher","type":"address"},{"internalType":"address","name":"msgSender","type":"address"},{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint48","name":"captureTimestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"slashHints","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"captureTimestamp","type":"uint48"},{"internalType":"bytes","name":"hints","type":"bytes"}],"stateMutability":"view","type":"function","name":"slashableStake","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"staticDelegateCall"},{"inputs":[],"stateMutability":"view","type":"function","name":"vault","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"cumulativeSlash(bytes32,address)":{"params":{"operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"_0":"cumulative slash amount"}},"cumulativeSlashAt(bytes32,address,uint48,bytes)":{"params":{"hint":"hint for the checkpoint index","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)","timestamp":"time point to get the cumulative slash amount until (inclusively)"},"returns":{"_0":"cumulative slash amount until the given timestamp (inclusively)"}},"initialize(bytes)":{"params":{"data":"some data to use"}},"slash(bytes32,address,uint256,uint48,bytes)":{"details":"Only a network middleware can call this function.","params":{"amount":"maximum amount of the collateral to be slashed","captureTimestamp":"time point when the stake was captured","hints":"hints for checkpoints' indexes","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"slashedAmount":"virtual amount of the collateral slashed"}},"slashableStake(bytes32,address,uint48,bytes)":{"params":{"captureTimestamp":"time point to get the stake amount at","hints":"hints for the checkpoints' indexes","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"amount":"slashable amount of the stake"}},"staticDelegateCall(address,bytes)":{"details":"It allows to use this contract's storage on-chain.","params":{"data":"data to make a delegatecall with","target":"address of the contract to make a delegatecall to"}}},"version":1},"userdoc":{"kind":"user","methods":{"BURNER_GAS_LIMIT()":{"notice":"Get a gas limit for the burner."},"BURNER_RESERVE()":{"notice":"Get a reserve gas between the gas limit check and the burner's execution."},"FACTORY()":{"notice":"Get the factory's address."},"NETWORK_MIDDLEWARE_SERVICE()":{"notice":"Get the network middleware service's address."},"TYPE()":{"notice":"Get the entity's type."},"VAULT_FACTORY()":{"notice":"Get the vault factory's address."},"cumulativeSlash(bytes32,address)":{"notice":"Get a cumulative slash amount for an operator on a subnetwork."},"cumulativeSlashAt(bytes32,address,uint48,bytes)":{"notice":"Get a cumulative slash amount for an operator on a subnetwork until a given timestamp (inclusively) using a hint."},"initialize(bytes)":{"notice":"Initialize this entity contract by using a given data."},"isBurnerHook()":{"notice":"Get if the burner is needed to be called on a slashing."},"latestSlashedCaptureTimestamp(bytes32,address)":{"notice":"Get the latest capture timestamp that was slashed on a subnetwork."},"slash(bytes32,address,uint256,uint48,bytes)":{"notice":"Perform a slash using a subnetwork for a particular operator by a given amount using hints."},"slashableStake(bytes32,address,uint48,bytes)":{"notice":"Get a slashable amount of a stake got at a given capture timestamp using hints."},"staticDelegateCall(address,bytes)":{"notice":"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data)."},"vault()":{"notice":"Get the vault's address."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/hints/SlasherHints.sol":"SlasherHints"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol":{"keccak256":"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74","urls":["bzz-raw://942dad22fbdc1669f025540ba63aa3ccfad5f8458fc5d4525b31ebf272e7af45","dweb:/ipfs/Qmdo4X2M82aM3AMoW2kf2jhYkSCyC4T1pHNd6obdsDFnAB"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8","urls":["bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45","dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41","urls":["bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26","dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol":{"keccak256":"0x85a45f3f10014a0f8be41157a32b6a5f905753ea64a4b64e29fc12b7deeecf39","urls":["bzz-raw://c3c74009ce36136b36c77c23935b8e4a7b4f253be2da2be4fb4a916b1ce43743","dweb:/ipfs/QmcH36v3iN7SJJuF73AunLR2LtNxhVJ1wm63ph4dPZ4pcL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol":{"keccak256":"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92","urls":["bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a","dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70","urls":["bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c","dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff","urls":["bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d","dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386","urls":["bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0","dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721","urls":["bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245","dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol":{"keccak256":"0x18a7171df639a934592915a520ecb97c5bbc9675a1105607aac8a94e72bf62c6","urls":["bzz-raw://7478e1f13da69a2867ccd883001d836b75620362e743f196376d63ed0c422a1c","dweb:/ipfs/QmWywcQ9TNfwtoqAxbn25d8C5VrV12PrPS9UjtGe6pL2BA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418","urls":["bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c","dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792","urls":["bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453","dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0xeed0a08b0b091f528356cbc7245891a4c748682d4f6a18055e8e6ca77d12a6cf","urls":["bzz-raw://ba80ba06c8e6be852847e4c5f4492cef801feb6558ae09ed705ff2e04ea8b13c","dweb:/ipfs/QmXRJDv3xHLVQCVXg1ZvR35QS9sij5y9NDWYzMfUfAdTHF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol":{"keccak256":"0x999f705a027ed6dc2d4e0df2cc4a509852c6bfd11de1c8161bf88832d0503fd0","urls":["bzz-raw://0798def67258d9a3cc20b2b4da7ebf351a5cefe0abfdd665d2d81f8e32f89b21","dweb:/ipfs/QmPEvJosnPfzHNjKvCv2D3891mA2Ww8eUwkqrxBjuYdHCt"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0xba333517a3add42cd35fe877656fc3dfcc9de53baa4f3aabbd6d12a92e4ea435","urls":["bzz-raw://2ceacff44c0fdc81e48e0e0b1db87a2076d3c1fb497341de077bf1da9f6b406c","dweb:/ipfs/QmRUo1muMRAewxrKQ7TkXUtknyRoR57AyEkoPpiuZQ8FzX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/SignatureChecker.sol":{"keccak256":"0x6b11eb41a228cca35d4b662b4df69fcd75192851365102690f57b2ac01e83fe6","urls":["bzz-raw://ab006a2983ed350d2af21ddcdd835dcae3b8340086cc4d088460da5abd041f69","dweb:/ipfs/QmbEacDhkJZiGrgzLjB4pNtE8Z1uudjDw1DvcDUTVQFsLG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe","urls":["bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c","dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72","urls":["bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc","dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol":{"keccak256":"0xbdc5e074d7dd6678f67e92b1a51a20226801a407b0e1af3da367c5d1ff4519ad","urls":["bzz-raw://a36cca6b22fff3db16fc789ff6c60eea71d4b156065d4d0c83a0bc5e91a77a8b","dweb:/ipfs/QmYN3exd5AemxjBrN8XMB1p5LbbE16uC3sjbYjwi8AjcGR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0xc7755af115020049e4140f224f9ee88d7e1799ffb0646f37bf0df24bf6213f58","urls":["bzz-raw://7f09bf94d5274334ec021f61a04659db303f31e60460e14b709c9bf187740111","dweb:/ipfs/QmNvgomZYUwFAt4cZbPWAiTeSZQreGehY9BK5xyVJsUttb"],"license":"MIT"},"src/contracts/common/Entity.sol":{"keccak256":"0x3d61a932995b8443381f3950542d388223a2c26dd5d29a3274dea3baa7388bd7","urls":["bzz-raw://7cdf5f03ca72fd263fd32ff59c8d88ddca911ae83896a287d10772c1bbe9b138","dweb:/ipfs/QmbP84r5BWT1Rn9AYTntWSf3xUMTTCohTZJFhbBhDXFoHa"],"license":"BUSL-1.1"},"src/contracts/common/MigratableEntity.sol":{"keccak256":"0x2d736f4dacd5d7e7697503bc426c78b8250fe1694ca157965ec178da6807de58","urls":["bzz-raw://f1237acf96b4b9f9b69156e068eddd726a6e15bd8e87a18dc999cd4ba4da069c","dweb:/ipfs/QmS6M8fiFFSeuJ4ZKKq1z8W7w4ybeHQSy5TLASGoc1LVic"],"license":"BUSL-1.1"},"src/contracts/common/StaticDelegateCallable.sol":{"keccak256":"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90","urls":["bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764","dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD"],"license":"BUSL-1.1"},"src/contracts/delegator/BaseDelegator.sol":{"keccak256":"0x7c54d491fdd4415b764a9c8defa068e56d4c0c8c9419be0053a1d377669290e8","urls":["bzz-raw://9238bfbad0f6eeb0dc7727724de14380f1980b395902269703d5e2ef07e52e10","dweb:/ipfs/QmPJn1V4HNXcEghYvogGuSTF24dSQUPosR5qtsXcmNqRm3"],"license":"BUSL-1.1"},"src/contracts/delegator/FullRestakeDelegator.sol":{"keccak256":"0x0a81c4f8e72914563a9cb771e93acf889c71ea36b7bec040e4eb562b199d5af1","urls":["bzz-raw://6fc66b6ba02da77046a0bbbd1dd407a62c08f52e04486c9cbd2cb1cca3da555f","dweb:/ipfs/QmZQivK1ZnMxfRQQ5aLpV9co5u55wQVNev5Rg1hzAqxhkE"],"license":"BUSL-1.1"},"src/contracts/delegator/NetworkRestakeDelegator.sol":{"keccak256":"0xd3a8e6522f9c6fdcc2da837c9023afd6bdff2bce45a35590320c475519e3636d","urls":["bzz-raw://58b17a87f6554f08376f9ea7fedf486a4aa75801bf0ad8b23ff5a46959b6b7a3","dweb:/ipfs/QmSTmNh67tYt8CmjVZb57r8N3qX5yeYdMApKPJm3qvQgQw"],"license":"BUSL-1.1"},"src/contracts/delegator/OperatorNetworkSpecificDelegator.sol":{"keccak256":"0x031a10722b9ec49048f0952710401131290adb87e71caf294e864e7ac3b98a16","urls":["bzz-raw://72428febc875134b2f29205e6f294634a1c22a7d5c78d6a9cb2f8196f107c9b5","dweb:/ipfs/QmTPwXR6h5oytckmkLrHdKeEMdphJxceDhYUR4zvQeWAwY"],"license":"BUSL-1.1"},"src/contracts/delegator/OperatorSpecificDelegator.sol":{"keccak256":"0x630ce62fa30b9f3349ab7a8cf8dbf041319febc6dd757be2f94d3d25944ed328","urls":["bzz-raw://c2ac59d47ce57d2a6819ae9833e1a618a371eccff93eb5ab367b201b01f42bfa","dweb:/ipfs/QmdBpGMBivpNPv2WbH8vnCUy5xkVeaxQvGgqi33vKCz1kA"],"license":"BUSL-1.1"},"src/contracts/hints/DelegatorHints.sol":{"keccak256":"0x44aa0c396311a54afbc7c73e8dadeed41e3165a4fd13f712b27d63d50fc3376d","urls":["bzz-raw://2f255214f3531fc707d88be0d56a7a0aed4180439316d099d760d9118aa83093","dweb:/ipfs/QmZD1w5p1ukJSXumUAjvxwGmkPhn7vsr21Y2atLGEZR2oi"],"license":"BUSL-1.1"},"src/contracts/hints/Hints.sol":{"keccak256":"0x8b565df1ae35993c097a9e642002782a8f451f6fd01809cad6bcd345bdf1b99c","urls":["bzz-raw://99a19adb01e350a92f534095b3078229df1f2f83077992d75d58d8684be45971","dweb:/ipfs/QmbmwcuswVbzvwHQFTtrJG86oV98GnfxqYTb8cV8u1acox"],"license":"BUSL-1.1"},"src/contracts/hints/OptInServiceHints.sol":{"keccak256":"0x95d9407900d27b9f4a1233b772aeed809c07b2dc5b31cfc9fa77ca26514c49e5","urls":["bzz-raw://a13a8877e312d7e6b8b85bde3668c5d84ff5ecc83f762cd573f2b7104c64eb42","dweb:/ipfs/QmYV2J55acuGzCNnS3juABuUHY5U1xc8g8o9jwEyFFdeG5"],"license":"BUSL-1.1"},"src/contracts/hints/SlasherHints.sol":{"keccak256":"0xd77c5f3bbb0265af8ecd947df88f6f9684e136d80052b5292f5b29aaa3566a3f","urls":["bzz-raw://484a26504bf6706202ec82a9a4cfa7d196bbc552b5b78ced25bf7130c2842595","dweb:/ipfs/QmaQqmkoZoUWEam4R94vmajzH3gKqFqpZQwFbrHDsN1peV"],"license":"BUSL-1.1"},"src/contracts/hints/VaultHints.sol":{"keccak256":"0xccb505b7159b769cc114d67b87c2de6b106557f667fc8f3780114baad5c3c442","urls":["bzz-raw://6d0c80a908fc16e96a8b5605a0bd53f9e89ad0ef0a738fbbae80ba4d3160749b","dweb:/ipfs/QmXo5UtWoR8YmunqcbBU8rQMm1nvmvjNPoXcVrDhh4pEwR"],"license":"BUSL-1.1"},"src/contracts/libraries/Checkpoints.sol":{"keccak256":"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c","urls":["bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609","dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE"],"license":"MIT"},"src/contracts/libraries/ERC4626Math.sol":{"keccak256":"0x8441160513c1cbeb1c3b9ee077bcc7e7ce20006b52a77c8dd39ff0ef89699939","urls":["bzz-raw://943f8cc3e26ddf649f465f40c909819f5c864717c4baa339e9e403b9374a4653","dweb:/ipfs/QmXPxi1sUDsrGprZdUgCzoPEosaZMv9ZhygWQ1vAi1phAB"],"license":"MIT"},"src/contracts/libraries/Subnetwork.sol":{"keccak256":"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe","urls":["bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56","dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32"],"license":"MIT"},"src/contracts/service/OptInService.sol":{"keccak256":"0x4e0932077f2686b7990e10d59deb2535334c0d09e52ef6e57c6ab09eca21c4b1","urls":["bzz-raw://7c00d311032ed4a1743aca7475f3c86ce15cdfc2218108efc3731c03d34a5278","dweb:/ipfs/QmUGGfVwVhaHr5kS4177yKKYiLYzi5qZpkEmvYxBZqazxf"],"license":"BUSL-1.1"},"src/contracts/slasher/BaseSlasher.sol":{"keccak256":"0x190e5dce196a061bdad42468c52e9f5b0eb7810cd7d0c19f04d6a2e94984f1b6","urls":["bzz-raw://07ca08d0cd43c2fe5d54a5577f6bdd522ced410f5d3a52e764deaa7ba26b5f06","dweb:/ipfs/QmZe3PiMKBQKWcwodaLupragdqxPjgS4v1qMC7RXau8hDF"],"license":"BUSL-1.1"},"src/contracts/slasher/Slasher.sol":{"keccak256":"0xeee0cb25fad58d496fdcc641d852d11bae06e6ceed5230ae21150964175c494f","urls":["bzz-raw://34aa27d21246a1bcee0b6a2afa8d9d613441156362430392f75d176511d58c61","dweb:/ipfs/Qmf53Y3zdGfH4PU2zpSGeHZ8mMLzLXCtmkQrG5mnVJECQ3"],"license":"BUSL-1.1"},"src/contracts/slasher/VetoSlasher.sol":{"keccak256":"0xeccc8128de5e1ad499c067feac1c526638fbbac1a18b96726fc7507969fd5897","urls":["bzz-raw://cdfcf281338423625acbccdf8810115b258ef7cfe4aa3c10b8911ead1aa85429","dweb:/ipfs/QmZFsDvZXpkFkx4PHcDXAVPN3ZCAahbSVfYpSVrMBvbt4k"],"license":"BUSL-1.1"},"src/contracts/vault/Vault.sol":{"keccak256":"0x2ceff6ed3298c4cad144c99fcc79b51cb9397d6ebef00285b915848b476f8c2e","urls":["bzz-raw://11f2fb3581854f3ab6e82e8d4935d9eb510c903a13c3f022346c2956a58f5307","dweb:/ipfs/QmdUnoXoyYoG9SGWyQZCFyLDRUUX3eXyXetkRvw6jxqqBz"],"license":"BUSL-1.1"},"src/contracts/vault/VaultStorage.sol":{"keccak256":"0x57db25b127d77ea3472de53e3a4af3354399655b9268638b99ca5925fa364a56","urls":["bzz-raw://aa763d9a6ec508ae3abfb8228b72b9fd9525279e5135d4962e79ff059feb1173","dweb:/ipfs/QmcbDR6E9wyEpu6V2FkEC4hnWy47zXA9LSKJde6zSGd33Q"],"license":"BUSL-1.1"},"src/interfaces/common/IEntity.sol":{"keccak256":"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21","urls":["bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b","dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv"],"license":"MIT"},"src/interfaces/common/IMigratableEntity.sol":{"keccak256":"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4","urls":["bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c","dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds"],"license":"MIT"},"src/interfaces/common/IRegistry.sol":{"keccak256":"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb","urls":["bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014","dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK"],"license":"MIT"},"src/interfaces/common/IStaticDelegateCallable.sol":{"keccak256":"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5","urls":["bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516","dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi"],"license":"MIT"},"src/interfaces/delegator/IBaseDelegator.sol":{"keccak256":"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee","urls":["bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2","dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8"],"license":"MIT"},"src/interfaces/delegator/IDelegatorHook.sol":{"keccak256":"0xc51aa8d7d1f6c8043ee819b7aeb86da0e993912e1442098df897e299f01f9f46","urls":["bzz-raw://adddf5cb2ba282aeb576b26efb28640f865a1721cc9b6eee8b3ee0457a2c9780","dweb:/ipfs/QmNYgAmnLRwWZbhTuQhZs9rx4zcme1df5mEepkrniorSoW"],"license":"MIT"},"src/interfaces/delegator/IFullRestakeDelegator.sol":{"keccak256":"0xa3c8cb2e45d4d8ce90e95263bea40c01dc400f05ad65bc29597d878606be5e7d","urls":["bzz-raw://782cf5e201aa4cca037ebafd3807a68ff1cc721d5b8416a35244db0d0607369e","dweb:/ipfs/QmQkJks6x7CKndeTPa9LxgTNygD5uEi7obhADhpq1Lsr9A"],"license":"MIT"},"src/interfaces/delegator/INetworkRestakeDelegator.sol":{"keccak256":"0xe7030fe30389a147fd710e3436ec346b4842695fd3e65a81b95375c9f1d633fc","urls":["bzz-raw://739c7e66d301778054f5c90bee45ec9438f68afba8a03eaaac52064c73b115ad","dweb:/ipfs/QmfZ2ytKcTykAc76nxhg8ikUXV8NdBpetqb8W4YWPcox1Z"],"license":"MIT"},"src/interfaces/delegator/IOperatorNetworkSpecificDelegator.sol":{"keccak256":"0x74b95e64d29769202d45dd277bb830f623ff3d41ce77b80ce3ee4e318a5c71ec","urls":["bzz-raw://e512b903aae5c1b8a028c6e3f4f6223b5cb5d704503cfa6bd37b5346868f5c20","dweb:/ipfs/QmZim9YExsPWtyxyeui993HTKAEmrg8MUcSkZ77Gp2JcuZ"],"license":"MIT"},"src/interfaces/delegator/IOperatorSpecificDelegator.sol":{"keccak256":"0x72075cab585dc17240cc3e32bc99b92f0d5627ddd988fed680e3e1a52d5a01e4","urls":["bzz-raw://7448bc90699409ae61d85216b5efc2143a37f0f73354be2aea993bc54afca441","dweb:/ipfs/QmXE4gAxM8pHosZK8mcTcj17puBx484meDCcmrDePskGHZ"],"license":"MIT"},"src/interfaces/service/INetworkMiddlewareService.sol":{"keccak256":"0x347afc7fcf1fbcdb96d66162070ef6c78aed27b3af2c1d5dfb4e511840631783","urls":["bzz-raw://2d90b8ceb495159e8e4e95d76447719dd166443f67dfabdd942846162071595c","dweb:/ipfs/QmVVuiAWYx92T6vBvNMKZfTvraCf1fa16BsUKkdNs3hdHA"],"license":"MIT"},"src/interfaces/service/IOptInService.sol":{"keccak256":"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a","urls":["bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337","dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24"],"license":"MIT"},"src/interfaces/slasher/IBaseSlasher.sol":{"keccak256":"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404","urls":["bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf","dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx"],"license":"MIT"},"src/interfaces/slasher/IBurner.sol":{"keccak256":"0xaf495dacc19ae0b3c787ba8021c5944927d70261536addd234d7dab146158c2b","urls":["bzz-raw://9b3cc66251008be6ff9fc8b11ecc6831d5a9dca49a3fe9817fcd970253c1d447","dweb:/ipfs/QmVxfb9ALGdF9W3SN2h41gQbUct6tawvu5bw4K89kFQ4HW"],"license":"MIT"},"src/interfaces/slasher/ISlasher.sol":{"keccak256":"0x34d226d67a3d5e16571f2fac91a8b9773551bcc41c88a96279669dd78d192625","urls":["bzz-raw://7a6e8c1462ee4a1b0f745414be043c09012ea676613790aba004b06c85c980d1","dweb:/ipfs/QmadjNEbHKRthtA1EeNy3Kg2sXpejH2KBeHm8QZtBPvXbJ"],"license":"MIT"},"src/interfaces/slasher/IVetoSlasher.sol":{"keccak256":"0xdf7edd04a4f36e9aec3a15241dcb6b6315b2e64927b12710c2c410d571fc55e9","urls":["bzz-raw://c4be6ac339c2ebf230fed65363f036784224095d0cd0f3f2d01d64d6e0da9508","dweb:/ipfs/QmRSMbpfaHExqrzUA8vYZMYZWh6eQW1KX9JKJSLdgronfg"],"license":"MIT"},"src/interfaces/vault/IVault.sol":{"keccak256":"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235","urls":["bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9","dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R"],"license":"MIT"},"src/interfaces/vault/IVaultStorage.sol":{"keccak256":"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22","urls":["bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e","dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6"],"license":"MIT"}},"version":1},"id":84} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[{"name":"baseSlasherHints","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"BASE_SLASHER_HINTS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"BURNER_GAS_LIMIT","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"BURNER_RESERVE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"NETWORK_MIDDLEWARE_SERVICE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"TYPE","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"VAULT_FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"cumulativeSlash","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"cumulativeSlashAt","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isBurnerHook","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"latestSlashedCaptureTimestamp","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"value","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"slash","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","internalType":"uint48"},{"name":"hints","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"slashedAmount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"slashHints","inputs":[{"name":"slasher","type":"address","internalType":"address"},{"name":"msgSender","type":"address","internalType":"address"},{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"slashableStake","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"captureTimestamp","type":"uint48","internalType":"uint48"},{"name":"hints","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"staticDelegateCall","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"vault","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"Slash","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"slashedAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","indexed":false,"internalType":"uint48"}],"anonymous":false},{"type":"error","name":"CheckpointUnorderedInsertion","inputs":[]},{"type":"error","name":"ExternalCall","inputs":[]},{"type":"error","name":"InsufficientBurnerGas","inputs":[]},{"type":"error","name":"InsufficientSlash","inputs":[]},{"type":"error","name":"InvalidCaptureTimestamp","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NoBurner","inputs":[]},{"type":"error","name":"NotInitialized","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"NotNetworkMiddleware","inputs":[]},{"type":"error","name":"NotVault","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x6101403461015d576001600160401b0390601f61201038819003918201601f1916830191848311848410176101615780849260209460405283398101031261015d5751906001600160a01b038216820361015d57306080527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff8260401c1661014b578080831603610106575b835f60a0525f60c0525f60e052610100905f825261012090815260405190611e9a9283610176843960805183505060a051836104f2015260c0518381816109490152611373015260e05183818161031d01526116a301525182818161021c01526104ae0152518181816106920152610d390152f35b6001600160401b031990911681179091556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f8080610091565b60405163f92ee8a960e01b8152600490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c8063021a815614610124578063103f29071461011f5780631a2be2c41461011a578063238ab85f14610115578063267de1f3146101105780632964f8dc1461010b5780632c9d45b3146101065780632dd310001461010157806334d098ea146100fc578063439fab91146100f7578063457821b7146100f25780639f86fd85146100ed578063aa8e6489146100e8578063aab3595f146100e3578063bb24fe8a146100de578063d5c24e1a146100d95763fbfa77cf146100d4575f80fd5b61098a565b61096d565b61092a565b610905565b6108c7565b6106c1565b61067d565b610545565b610521565b6104dd565b610499565b61047d565b610428565b6103c4565b61034c565b610308565b61017b565b6001600160a01b0381160361013a57565b5f80fd5b65ffffffffffff81160361013a57565b9181601f8401121561013a578235916001600160401b03831161013a576020838186019501011161013a57565b3461013a5760a036600319011261013a5760043560243561019b81610129565b6064356101a78161013e565b6084356001600160401b03811161013a576101c690369060040161014e565b917f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0060028154146102ec5760029055604051635daf681960e11b8152606086901c60048201526001600160a01b036020826024817f000000000000000000000000000000000000000000000000000000000000000085165afa9182156102e7575f926102b6575b50339116036102a4576102a0946102679460443591610a63565b61029060017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6040519081529081906020820190565b0390f35b60405163227bf64d60e01b8152600490fd5b6102d991925060203d6020116102e0575b6102d181836107dd565b810190610de5565b905f61024d565b503d6102c7565b610a27565b604051633ee5aeb560e01b8152600490fd5b5f91031261013a57565b3461013a575f36600319011261013a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461013a57604036600319011261013a57602061039861039360243561037181610129565b6004355f526002845260405f209060018060a01b03165f5260205260405f2090565b6115c2565b604051908152f35b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b3461013a5760c036600319011261013a576102a06104146004356103e781610129565b6103f2602435610129565b6064356103fe81610129565b60a4359161040b8361013e565b60443590610ced565b6040519182916020835260208301906103a0565b3461013a57604036600319011261013a57602065ffffffffffff61047360243561045181610129565b6004355f526001845260405f209060018060a01b03165f5260205260405f2090565b5416604051908152f35b3461013a575f36600319011261013a576020604051614e208152f35b3461013a575f36600319011261013a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461013a575f36600319011261013a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461013a575f36600319011261013a57602060ff5f5460a01c166040519015158152f35b3461013a57602036600319011261013a576001600160401b0360043581811161013a5761057690369060040161014e565b5f80516020611e45833981519152549260ff8460401c1615931680159081610675575b600114908161066b575b159081610662575b50610650575f80516020611e45833981519152805467ffffffffffffffff191660011790556105de918361062c5761166c565b6105e457005b5f80516020611e45833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f80516020611e45833981519152805460ff60401b1916600160401b17905561166c565b60405163f92ee8a960e01b8152600490fd5b9050155f6105ab565b303b1591506105a3565b849150610599565b3461013a575f36600319011261013a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461013a5760408060031936011261013a576004356106df81610129565b602435906001600160401b03821161013a575f809161070561076994369060040161014e565b908187519283928337810184815203915af43d156107715761075b3d61072a8161081a565b90610737865192836107dd565b81523d5f602083013e5b8451948593151560208501528084015260608301906103a0565b03601f1981018352826107dd565b805190602001fd5b61075b6060610741565b634e487b7160e01b5f52604160045260245ffd5b602081019081106001600160401b038211176107aa57604052565b61077b565b604081019081106001600160401b038211176107aa57604052565b6001600160401b0381116107aa57604052565b90601f801991011681019081106001600160401b038211176107aa57604052565b6040519061080b826107af565b565b6040519061080b8261078f565b6001600160401b0381116107aa57601f01601f191660200190565b81601f8201121561013a5780359061084c8261081a565b9261085a60405194856107dd565b8284526020838301011161013a57815f926020809301838601378301015290565b90608060031983011261013a576004359160243561089881610129565b916044356108a58161013e565b91606435906001600160401b03821161013a576108c491600401610835565b90565b3461013a5760206103986109006108dd3661087b565b939190925f526002865260405f209060018060a01b03165f5260205260405f2090565b611806565b3461013a5760206109216109183661087b565b92919091610edf565b50604051908152f35b3461013a575f36600319011261013a5760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461013a575f36600319011261013a576020604051620249f08152f35b3461013a575f36600319011261013a575f546040516001600160a01b039091168152602090f35b604051906109be8261078f565b60608252565b9060208282031261013a5781356001600160401b039283821161013a57019060208282031261013a57604051926109fa8461078f565b823590811161013a57610a0d9201610835565b815290565b9081602091031261013a57516108c48161013e565b6040513d5f823e3d90fd5b634e487b7160e01b5f52601160045260245ffd5b65ffffffffffff9182169082160391908211610a5e57565b610a32565b92939594919095610a726109b1565b9280610c53575b5050610a84426118de565b5f54600490602090610aac90610aa0906001600160a01b031681565b6001600160a01b031690565b6040516327f843b560e11b815292839182905afa80156102e757610ae692610adb925f92610c22575b50610a46565b65ffffffffffff1690565b65ffffffffffff8516908110908115610c0c575b50610bfa57610b0f610b1e9251858886610edf565b92909180831890831102821890565b958615610be857610ba361075b610b9a610be3947fe0cbbe1f1e6fd806ca87036fafcebaf7ab5247474a3b20e1c37bb50122c3a88496610b5f8a878b611115565b610b6a8c878b6111a3565b610b726107fe565b9182526020820152604051928391602083019190916020806040830194805184520151910152565b8689848861130f565b610bad8588611418565b610bb98588838761149d565b6040805188815265ffffffffffff90961660208701526001600160a01b0390911694918291820190565b0390a3565b60405163167f871760e31b8152600490fd5b604051631357ac9160e11b8152600490fd5b9050610c1a610adb426118de565b11155f610afa565b610c4591925060203d602011610c4c575b610c3d81836107dd565b810190610a12565b905f610ad5565b503d610c33565b610c619293508101906109c4565b905f80610a79565b81601f8201121561013a57805190610c808261081a565b92610c8e60405194856107dd565b8284526020838301011161013a57815f9260208093018386015e8301015290565b9060208282031261013a5781516001600160401b03811161013a576108c49201610c69565b60406108c49260208352519160208082015201906103a0565b604051632751749360e11b81526001600160a01b0391821660048201526024810192909252918216604482015265ffffffffffff909216606483015260609291905f90829060849082907f0000000000000000000000000000000000000000000000000000000000000000165afa9081156102e7575f91610d97575b508051610d735750565b61075b9192506108c490610d8561080d565b90815260405192839160208301610cd4565b610db391503d805f833e610dab81836107dd565b810190610caf565b5f610d69565b5f9081526002602090815260408083206001600160a01b039094168352929052206108c4929190611806565b9081602091031261013a57516108c481610129565b60405190610e07826107af565b60606020838281520152565b9060208282031261013a5781516001600160401b039283821161013a57019060408282031261013a5760405192610e49846107af565b825181811161013a5782610e5e918501610c69565b8452602083015190811161013a57610e769201610c69565b602082015290565b9081602091031261013a575190565b9081526001600160a01b03909116602082015265ffffffffffff90911660408201526080606082018190526108c4929101906103a0565b5f19810191908211610a5e57565b91908203918211610a5e57565b92610ee8610dfa565b908051806110fb575b5050610efc426118de565b5f54909490610f1590610aa0906001600160a01b031681565b93604051956327f843b560e11b875260209687816004818a5afa80156102e757610f4992610adb925f926110e35750610a46565b65ffffffffffff82169081109081156110cc575b811561109b575b5061108f578560049560405196878092630ce9b79360e41b82525afa9485156102e757610fb69587915f91611072575b50845190604051808099819463e02f693760e01b8352878b8a60048601610e8d565b03916001600160a01b03165afa9384156102e75761102e955f95611031575b509261101d85936110239361101d96869a61101461039383610fff875f52600260205260405f2090565b9060018060a01b03165f5260205260405f2090565b95015192610db9565b90610ed2565b818082109118021890565b91565b61102392955061101d94919361105f61101d928a3d8c1161106b575b61105781836107dd565b810190610e7e565b96935093919450610fd5565b503d61104d565b6110899150823d84116102e0576102d181836107dd565b5f610f94565b5050505050505f905f90565b90506110c5610adb6110b987610fff875f52600160205260405f2090565b5465ffffffffffff1690565b115f610f64565b90506110da610adb426118de565b81101590610f5d565b610c459192508a3d8c11610c4c57610c3d81836107dd565b61110e9250602080918301019101610e13565b5f80610ef1565b919091805f52600160205265ffffffffffff806111458560405f209060018060a01b03165f5260205260405f2090565b54169083161161115457505050565b61080b9261117c915f52600160205260405f209060018060a01b03165f5260205260405f2090565b9065ffffffffffff1665ffffffffffff19825416179055565b9060018201809211610a5e57565b9190825f5260026020526111fb6103936111d08360405f209060018060a01b03165f5260205260405f2090565b926111da426118de565b955f52600260205260405f209060018060a01b03165f5260205260405f2090565b918201809211610a5e57600181019081541561129f575b61121b81611b1c565b50949083549561122a846115c2565b508161128a575b50156112695750505f198301928311610a5e5761080b9261125191611599565b90919082549060031b91821b915f19901b1916179055565b61080b94611283926001600160d01b039091169190611bdd565b505061193d565b65ffffffffffff83811691161490505f611231565b6112a882611910565b611212565b606060206108c4938184526001600160401b038151168285015201519160408082015201906103a0565b919360a0936108c4969565ffffffffffff938552600180871b03166020850152604084015216606082015281608082015201906103a0565b9293906004602061132c610aa0610aa05f5460018060a01b031690565b604051630ce9b79360e41b815292839182905afa9081156102e75761075b916113aa915f916113f9575b506001600160a01b0316936113696107fe565b6001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152906020820152604051928391602083016112ad565b823b1561013a575f946113d586926040519889978896879563724ab0f760e11b8752600487016112d7565b03925af180156102e7576113e65750565b806113f361080b926107ca565b806102fe565b611412915060203d6020116102e0576102d181836107dd565b5f611356565b5f8054604051631c9e38c760e21b8152600481019390935265ffffffffffff9390931660248301529091602091839160449183916001600160a01b03165af180156102e7576114645750565b61147c9060203d60201161106b5761105781836107dd565b50565b8115611489570490565b634e487b7160e01b5f52601260045260245ffd5b92905f549060ff8260a01c166114b5575b5050505050565b6040516313c085b760e11b815291602090839060049082906001600160a01b03165afa9182156102e7575f92611572575b5060405163065c1e0360e01b6020820190815260248201969096526001600160a01b039091166044820152606481019390935265ffffffffffff909116608483015261153f8260a481015b03601f1981018452836107dd565b6202a15c5a10611560575f928380935192620249f0f1505f808080806114ae565b604051632153f33560e21b8152600490fd5b61153f92506115926115319160203d6020116102e0576102d181836107dd565b92506114e6565b80548210156115ae575f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b8054806115f757505f5b6001600160d01b038116156115f15760016115e79201611599565b90549060031b1c90565b50505f90565b5f19908082810111610a5e57825f5260205f2001015460301c6115cc565b91909160408184031261013a57803561162d81610129565b9260208201356001600160401b03811161013a576108c49201610835565b5190811515820361013a57565b9081602091031261013a576108c49061164b565b61167891810190611615565b6040516302910f8b60e31b81526001600160a01b0392831660048201819052929160209182816024817f000000000000000000000000000000000000000000000000000000000000000088165afa9081156102e7575f916117a8575b501561179657816117086004926116e9611960565b5f80546001600160a01b0319166001600160a01b038916179055611996565b94604051928380926313c085b760e11b82525afa9182156102e7575f92611779575b505016158061176f575b61175d575161080b9015155f805460ff60a01b191691151560a01b60ff60a01b16919091179055565b60405163d2420f5960e01b8152600490fd5b5080511515611734565b61178f9250803d106102e0576102d181836107dd565b5f8061172a565b6040516362df054560e01b8152600490fd5b6117c89150833d85116117ce575b6117c081836107dd565b810190611658565b5f6116d4565b503d6117b6565b9081602091031261013a575163ffffffff8116810361013a5790565b90600163ffffffff80931601918211610a5e57565b918051156118d45780602080611821935183010191016117d5565b9161182c8382611aae565b9261183d845165ffffffffffff1690565b9065ffffffffffff80851692168281146118c85782119182611873575b505061186a576108c492506119de565b50506020015190565b9091506118808354610ec4565b63ffffffff831614918215611899575b50505f8061185a565b6118c09192506118b46118ae610adb926117f1565b85611aae565b5165ffffffffffff1690565b115f80611890565b50505050506020015190565b506108c4916119de565b65ffffffffffff908181116118f1571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b8054600160401b8110156107aa5761192d91600182018155611599565b8154905f199060031b1b19169055565b90815491600160401b8310156107aa578261125191600161080b95018155611599565b611968611b55565b611970611b55565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5f6040516119a38161078f565b5260208180518101031261013a576020906040516119c08161078f565b6119d86040519384936119d28561078f565b0161164b565b82525290565b908154905f829160058411611a48575b6119f9935084611de5565b80611a2157505f905b6001600160d01b038216156115f1576108c49160016115e79201611599565b611a3b611a30611a4292610ec4565b835f5260205f200190565b5460301c90565b90611a02565b9192611a5381611cba565b8103908111610a5e576119f993855f5265ffffffffffff808360205f20015416908516105f14611a845750916119ee565b929150611a9090611195565b906119ee565b60405190611aa3826107af565b5f6020838281520152565b9060206001611ad2611afe93611ac2611a96565b50611acb611a96565b5085611599565b509360405194611ae1866107af565b549465ffffffffffff86169586825260301c938491015201611599565b90549060405192611b0e846107af565b835260031b1c602082015290565b805480611b2d5750505f905f905f90565b5f19918183810111610a5e575f5260205f2001015460019165ffffffffffff82169160301c90565b60ff5f80516020611e458339815191525460401c1615611b7157565b604051631afcd79f60e31b8152600490fd5b8054600160401b8110156107aa57611ba091600182018155611599565b611bca57815160209092015160301b65ffffffffffff191665ffffffffffff909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b80549293928015611c9057611bf4611bff91610ec4565b825f5260205f200190565b9182549265ffffffffffff91828516928116808411611c7e57879303611c455750611c3e92509065ffffffffffff82549181199060301b169116179055565b60301c9190565b915050611c7991611c65611c576107fe565b65ffffffffffff9093168352565b6001600160d01b0386166020830152611b83565b611c3e565b604051632520601d60e01b8152600490fd5b5090611cb591611ca1611c576107fe565b6001600160d01b0385166020830152611b83565b5f9190565b60018111156108c457600181600160801b811015611dd3575b611d7b611d71611d67611d5d611d53611d49611d8797600488600160401b611d829a1015611dc6575b640100000000811015611db9575b62010000811015611dac575b610100811015611da0575b6010811015611d94575b1015611d8c575b60030260011c611d42818b61147f565b0160011c90565b611d42818a61147f565b611d42818961147f565b611d42818861147f565b611d42818761147f565b611d42818661147f565b809361147f565b821190565b900390565b60011b611d32565b811c9160021b91611d2b565b60081c91811b91611d21565b60101c9160081b91611d16565b60201c9160101b91611d0a565b60401c9160201b91611cfc565b50600160401b9050608082901c611cd3565b91905b838210611df55750505090565b9091928083169080841860011c8201809211610a5e57845f5265ffffffffffff808360205f20015416908416105f14611e325750925b9190611de8565b939250611e3e90611195565b91611e2b56fef0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220f6c8c6e53e56abe4ba9bf3f192a97636699c1edad17d1630537b4ec239db2d6c64736f6c63430008190033","sourceMap":"2765:796:91:-:0;;;;-1:-1:-1;;;;;2765:796:91;;;;;;;;;;-1:-1:-1;;2765:796:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2765:796:91;;;;;;348:4:89;332:21;;8837:64:22;2765:796:91;;;;;;;;;7896:76:22;;2765:796:91;;;;7985:34:22;7981:146;;-1:-1:-1;525:17:76;-1:-1:-1;525:17:76;;-1:-1:-1;552:12:76;;-1:-1:-1;2353:28:99;;2391:53;;-1:-1:-1;2391:53:99;;2970:37:91;;;;2765:796;;;;;;;;;332:21:89;2765:796:91;;;;525:17:76;2765:796:91;;;;;552:12:76;2765:796:91;;;;;;;;;;2353:28:99;2765:796:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7981:146:22;-1:-1:-1;;;;;;2765:796:91;;;;;;;;;;;;;8087:29:22;;2765:796:91;;8087:29:22;7981:146;;;;;7896:76;2765:796:91;;-1:-1:-1;;;7938:23:22;;;;;2765:796:91;-1:-1:-1;2765:796:91;;;;;;-1:-1:-1;2765:796:91;;;;;-1:-1:-1;2765:796:91","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c8063021a815614610124578063103f29071461011f5780631a2be2c41461011a578063238ab85f14610115578063267de1f3146101105780632964f8dc1461010b5780632c9d45b3146101065780632dd310001461010157806334d098ea146100fc578063439fab91146100f7578063457821b7146100f25780639f86fd85146100ed578063aa8e6489146100e8578063aab3595f146100e3578063bb24fe8a146100de578063d5c24e1a146100d95763fbfa77cf146100d4575f80fd5b61098a565b61096d565b61092a565b610905565b6108c7565b6106c1565b61067d565b610545565b610521565b6104dd565b610499565b61047d565b610428565b6103c4565b61034c565b610308565b61017b565b6001600160a01b0381160361013a57565b5f80fd5b65ffffffffffff81160361013a57565b9181601f8401121561013a578235916001600160401b03831161013a576020838186019501011161013a57565b3461013a5760a036600319011261013a5760043560243561019b81610129565b6064356101a78161013e565b6084356001600160401b03811161013a576101c690369060040161014e565b917f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0060028154146102ec5760029055604051635daf681960e11b8152606086901c60048201526001600160a01b036020826024817f000000000000000000000000000000000000000000000000000000000000000085165afa9182156102e7575f926102b6575b50339116036102a4576102a0946102679460443591610a63565b61029060017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6040519081529081906020820190565b0390f35b60405163227bf64d60e01b8152600490fd5b6102d991925060203d6020116102e0575b6102d181836107dd565b810190610de5565b905f61024d565b503d6102c7565b610a27565b604051633ee5aeb560e01b8152600490fd5b5f91031261013a57565b3461013a575f36600319011261013a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461013a57604036600319011261013a57602061039861039360243561037181610129565b6004355f526002845260405f209060018060a01b03165f5260205260405f2090565b6115c2565b604051908152f35b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b3461013a5760c036600319011261013a576102a06104146004356103e781610129565b6103f2602435610129565b6064356103fe81610129565b60a4359161040b8361013e565b60443590610ced565b6040519182916020835260208301906103a0565b3461013a57604036600319011261013a57602065ffffffffffff61047360243561045181610129565b6004355f526001845260405f209060018060a01b03165f5260205260405f2090565b5416604051908152f35b3461013a575f36600319011261013a576020604051614e208152f35b3461013a575f36600319011261013a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461013a575f36600319011261013a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461013a575f36600319011261013a57602060ff5f5460a01c166040519015158152f35b3461013a57602036600319011261013a576001600160401b0360043581811161013a5761057690369060040161014e565b5f80516020611e45833981519152549260ff8460401c1615931680159081610675575b600114908161066b575b159081610662575b50610650575f80516020611e45833981519152805467ffffffffffffffff191660011790556105de918361062c5761166c565b6105e457005b5f80516020611e45833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f80516020611e45833981519152805460ff60401b1916600160401b17905561166c565b60405163f92ee8a960e01b8152600490fd5b9050155f6105ab565b303b1591506105a3565b849150610599565b3461013a575f36600319011261013a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461013a5760408060031936011261013a576004356106df81610129565b602435906001600160401b03821161013a575f809161070561076994369060040161014e565b908187519283928337810184815203915af43d156107715761075b3d61072a8161081a565b90610737865192836107dd565b81523d5f602083013e5b8451948593151560208501528084015260608301906103a0565b03601f1981018352826107dd565b805190602001fd5b61075b6060610741565b634e487b7160e01b5f52604160045260245ffd5b602081019081106001600160401b038211176107aa57604052565b61077b565b604081019081106001600160401b038211176107aa57604052565b6001600160401b0381116107aa57604052565b90601f801991011681019081106001600160401b038211176107aa57604052565b6040519061080b826107af565b565b6040519061080b8261078f565b6001600160401b0381116107aa57601f01601f191660200190565b81601f8201121561013a5780359061084c8261081a565b9261085a60405194856107dd565b8284526020838301011161013a57815f926020809301838601378301015290565b90608060031983011261013a576004359160243561089881610129565b916044356108a58161013e565b91606435906001600160401b03821161013a576108c491600401610835565b90565b3461013a5760206103986109006108dd3661087b565b939190925f526002865260405f209060018060a01b03165f5260205260405f2090565b611806565b3461013a5760206109216109183661087b565b92919091610edf565b50604051908152f35b3461013a575f36600319011261013a5760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461013a575f36600319011261013a576020604051620249f08152f35b3461013a575f36600319011261013a575f546040516001600160a01b039091168152602090f35b604051906109be8261078f565b60608252565b9060208282031261013a5781356001600160401b039283821161013a57019060208282031261013a57604051926109fa8461078f565b823590811161013a57610a0d9201610835565b815290565b9081602091031261013a57516108c48161013e565b6040513d5f823e3d90fd5b634e487b7160e01b5f52601160045260245ffd5b65ffffffffffff9182169082160391908211610a5e57565b610a32565b92939594919095610a726109b1565b9280610c53575b5050610a84426118de565b5f54600490602090610aac90610aa0906001600160a01b031681565b6001600160a01b031690565b6040516327f843b560e11b815292839182905afa80156102e757610ae692610adb925f92610c22575b50610a46565b65ffffffffffff1690565b65ffffffffffff8516908110908115610c0c575b50610bfa57610b0f610b1e9251858886610edf565b92909180831890831102821890565b958615610be857610ba361075b610b9a610be3947fe0cbbe1f1e6fd806ca87036fafcebaf7ab5247474a3b20e1c37bb50122c3a88496610b5f8a878b611115565b610b6a8c878b6111a3565b610b726107fe565b9182526020820152604051928391602083019190916020806040830194805184520151910152565b8689848861130f565b610bad8588611418565b610bb98588838761149d565b6040805188815265ffffffffffff90961660208701526001600160a01b0390911694918291820190565b0390a3565b60405163167f871760e31b8152600490fd5b604051631357ac9160e11b8152600490fd5b9050610c1a610adb426118de565b11155f610afa565b610c4591925060203d602011610c4c575b610c3d81836107dd565b810190610a12565b905f610ad5565b503d610c33565b610c619293508101906109c4565b905f80610a79565b81601f8201121561013a57805190610c808261081a565b92610c8e60405194856107dd565b8284526020838301011161013a57815f9260208093018386015e8301015290565b9060208282031261013a5781516001600160401b03811161013a576108c49201610c69565b60406108c49260208352519160208082015201906103a0565b604051632751749360e11b81526001600160a01b0391821660048201526024810192909252918216604482015265ffffffffffff909216606483015260609291905f90829060849082907f0000000000000000000000000000000000000000000000000000000000000000165afa9081156102e7575f91610d97575b508051610d735750565b61075b9192506108c490610d8561080d565b90815260405192839160208301610cd4565b610db391503d805f833e610dab81836107dd565b810190610caf565b5f610d69565b5f9081526002602090815260408083206001600160a01b039094168352929052206108c4929190611806565b9081602091031261013a57516108c481610129565b60405190610e07826107af565b60606020838281520152565b9060208282031261013a5781516001600160401b039283821161013a57019060408282031261013a5760405192610e49846107af565b825181811161013a5782610e5e918501610c69565b8452602083015190811161013a57610e769201610c69565b602082015290565b9081602091031261013a575190565b9081526001600160a01b03909116602082015265ffffffffffff90911660408201526080606082018190526108c4929101906103a0565b5f19810191908211610a5e57565b91908203918211610a5e57565b92610ee8610dfa565b908051806110fb575b5050610efc426118de565b5f54909490610f1590610aa0906001600160a01b031681565b93604051956327f843b560e11b875260209687816004818a5afa80156102e757610f4992610adb925f926110e35750610a46565b65ffffffffffff82169081109081156110cc575b811561109b575b5061108f578560049560405196878092630ce9b79360e41b82525afa9485156102e757610fb69587915f91611072575b50845190604051808099819463e02f693760e01b8352878b8a60048601610e8d565b03916001600160a01b03165afa9384156102e75761102e955f95611031575b509261101d85936110239361101d96869a61101461039383610fff875f52600260205260405f2090565b9060018060a01b03165f5260205260405f2090565b95015192610db9565b90610ed2565b818082109118021890565b91565b61102392955061101d94919361105f61101d928a3d8c1161106b575b61105781836107dd565b810190610e7e565b96935093919450610fd5565b503d61104d565b6110899150823d84116102e0576102d181836107dd565b5f610f94565b5050505050505f905f90565b90506110c5610adb6110b987610fff875f52600160205260405f2090565b5465ffffffffffff1690565b115f610f64565b90506110da610adb426118de565b81101590610f5d565b610c459192508a3d8c11610c4c57610c3d81836107dd565b61110e9250602080918301019101610e13565b5f80610ef1565b919091805f52600160205265ffffffffffff806111458560405f209060018060a01b03165f5260205260405f2090565b54169083161161115457505050565b61080b9261117c915f52600160205260405f209060018060a01b03165f5260205260405f2090565b9065ffffffffffff1665ffffffffffff19825416179055565b9060018201809211610a5e57565b9190825f5260026020526111fb6103936111d08360405f209060018060a01b03165f5260205260405f2090565b926111da426118de565b955f52600260205260405f209060018060a01b03165f5260205260405f2090565b918201809211610a5e57600181019081541561129f575b61121b81611b1c565b50949083549561122a846115c2565b508161128a575b50156112695750505f198301928311610a5e5761080b9261125191611599565b90919082549060031b91821b915f19901b1916179055565b61080b94611283926001600160d01b039091169190611bdd565b505061193d565b65ffffffffffff83811691161490505f611231565b6112a882611910565b611212565b606060206108c4938184526001600160401b038151168285015201519160408082015201906103a0565b919360a0936108c4969565ffffffffffff938552600180871b03166020850152604084015216606082015281608082015201906103a0565b9293906004602061132c610aa0610aa05f5460018060a01b031690565b604051630ce9b79360e41b815292839182905afa9081156102e75761075b916113aa915f916113f9575b506001600160a01b0316936113696107fe565b6001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152906020820152604051928391602083016112ad565b823b1561013a575f946113d586926040519889978896879563724ab0f760e11b8752600487016112d7565b03925af180156102e7576113e65750565b806113f361080b926107ca565b806102fe565b611412915060203d6020116102e0576102d181836107dd565b5f611356565b5f8054604051631c9e38c760e21b8152600481019390935265ffffffffffff9390931660248301529091602091839160449183916001600160a01b03165af180156102e7576114645750565b61147c9060203d60201161106b5761105781836107dd565b50565b8115611489570490565b634e487b7160e01b5f52601260045260245ffd5b92905f549060ff8260a01c166114b5575b5050505050565b6040516313c085b760e11b815291602090839060049082906001600160a01b03165afa9182156102e7575f92611572575b5060405163065c1e0360e01b6020820190815260248201969096526001600160a01b039091166044820152606481019390935265ffffffffffff909116608483015261153f8260a481015b03601f1981018452836107dd565b6202a15c5a10611560575f928380935192620249f0f1505f808080806114ae565b604051632153f33560e21b8152600490fd5b61153f92506115926115319160203d6020116102e0576102d181836107dd565b92506114e6565b80548210156115ae575f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b8054806115f757505f5b6001600160d01b038116156115f15760016115e79201611599565b90549060031b1c90565b50505f90565b5f19908082810111610a5e57825f5260205f2001015460301c6115cc565b91909160408184031261013a57803561162d81610129565b9260208201356001600160401b03811161013a576108c49201610835565b5190811515820361013a57565b9081602091031261013a576108c49061164b565b61167891810190611615565b6040516302910f8b60e31b81526001600160a01b0392831660048201819052929160209182816024817f000000000000000000000000000000000000000000000000000000000000000088165afa9081156102e7575f916117a8575b501561179657816117086004926116e9611960565b5f80546001600160a01b0319166001600160a01b038916179055611996565b94604051928380926313c085b760e11b82525afa9182156102e7575f92611779575b505016158061176f575b61175d575161080b9015155f805460ff60a01b191691151560a01b60ff60a01b16919091179055565b60405163d2420f5960e01b8152600490fd5b5080511515611734565b61178f9250803d106102e0576102d181836107dd565b5f8061172a565b6040516362df054560e01b8152600490fd5b6117c89150833d85116117ce575b6117c081836107dd565b810190611658565b5f6116d4565b503d6117b6565b9081602091031261013a575163ffffffff8116810361013a5790565b90600163ffffffff80931601918211610a5e57565b918051156118d45780602080611821935183010191016117d5565b9161182c8382611aae565b9261183d845165ffffffffffff1690565b9065ffffffffffff80851692168281146118c85782119182611873575b505061186a576108c492506119de565b50506020015190565b9091506118808354610ec4565b63ffffffff831614918215611899575b50505f8061185a565b6118c09192506118b46118ae610adb926117f1565b85611aae565b5165ffffffffffff1690565b115f80611890565b50505050506020015190565b506108c4916119de565b65ffffffffffff908181116118f1571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b8054600160401b8110156107aa5761192d91600182018155611599565b8154905f199060031b1b19169055565b90815491600160401b8310156107aa578261125191600161080b95018155611599565b611968611b55565b611970611b55565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5f6040516119a38161078f565b5260208180518101031261013a576020906040516119c08161078f565b6119d86040519384936119d28561078f565b0161164b565b82525290565b908154905f829160058411611a48575b6119f9935084611de5565b80611a2157505f905b6001600160d01b038216156115f1576108c49160016115e79201611599565b611a3b611a30611a4292610ec4565b835f5260205f200190565b5460301c90565b90611a02565b9192611a5381611cba565b8103908111610a5e576119f993855f5265ffffffffffff808360205f20015416908516105f14611a845750916119ee565b929150611a9090611195565b906119ee565b60405190611aa3826107af565b5f6020838281520152565b9060206001611ad2611afe93611ac2611a96565b50611acb611a96565b5085611599565b509360405194611ae1866107af565b549465ffffffffffff86169586825260301c938491015201611599565b90549060405192611b0e846107af565b835260031b1c602082015290565b805480611b2d5750505f905f905f90565b5f19918183810111610a5e575f5260205f2001015460019165ffffffffffff82169160301c90565b60ff5f80516020611e458339815191525460401c1615611b7157565b604051631afcd79f60e31b8152600490fd5b8054600160401b8110156107aa57611ba091600182018155611599565b611bca57815160209092015160301b65ffffffffffff191665ffffffffffff909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b80549293928015611c9057611bf4611bff91610ec4565b825f5260205f200190565b9182549265ffffffffffff91828516928116808411611c7e57879303611c455750611c3e92509065ffffffffffff82549181199060301b169116179055565b60301c9190565b915050611c7991611c65611c576107fe565b65ffffffffffff9093168352565b6001600160d01b0386166020830152611b83565b611c3e565b604051632520601d60e01b8152600490fd5b5090611cb591611ca1611c576107fe565b6001600160d01b0385166020830152611b83565b5f9190565b60018111156108c457600181600160801b811015611dd3575b611d7b611d71611d67611d5d611d53611d49611d8797600488600160401b611d829a1015611dc6575b640100000000811015611db9575b62010000811015611dac575b610100811015611da0575b6010811015611d94575b1015611d8c575b60030260011c611d42818b61147f565b0160011c90565b611d42818a61147f565b611d42818961147f565b611d42818861147f565b611d42818761147f565b611d42818661147f565b809361147f565b821190565b900390565b60011b611d32565b811c9160021b91611d2b565b60081c91811b91611d21565b60101c9160081b91611d16565b60201c9160101b91611d0a565b60401c9160201b91611cfc565b50600160401b9050608082901c611cd3565b91905b838210611df55750505090565b9091928083169080841860011c8201809211610a5e57845f5265ffffffffffff808360205f20015416908416105f14611e325750925b9190611de8565b939250611e3e90611195565b91611e2b56fef0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220f6c8c6e53e56abe4ba9bf3f192a97636699c1edad17d1630537b4ec239db2d6c64736f6c63430008190033","sourceMap":"2765:796:91:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;-1:-1:-1;;;;;2765:796:91;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;2765:796:91;;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;2765:796:91;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;-1:-1:-1;;;;;2765:796:91;;;;;;;;;;;:::i;:::-;2499:73:26;;1991:1;2765:796:91;;3670:20:26;3666:88;;1991:1;;;2765:796:91;;-1:-1:-1;;;4546:86:99;;2765:796:91;;;;;4546:86:99;;2765:796:91;-1:-1:-1;;;;;2765:796:91;;;;4572:26:99;2765:796:91;;4546:86:99;;;;;;;-1:-1:-1;4546:86:99;;;2765:796:91;4636:10:99;;2765:796:91;;4546:100:99;4542:160;;2765:796:91;;774:1493:100;2765:796:91;;;774:1493:100;;:::i;:::-;3426:1:26;1949;2499:73;1991:1;3860:283;3426:1;2765:796:91;;;;;;;;;;;;;;;;;4542:160:99;2765:796:91;;-1:-1:-1;;;4669:22:99;;2765:796:91;;4669:22:99;4546:86;;;;;2765:796:91;4546:86:99;2765:796:91;4546:86:99;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;:::i;3666:88:26:-;2765:796:91;;-1:-1:-1;;;3713:30:26;;2765:796:91;;3713:30:26;2765:796:91;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;2765:796:91;;;;;;1435:38:99;-1:-1:-1;;;;;2765:796:91;;;;;;;;;;;;-1:-1:-1;;2765:796:91;;;;;2936:47:99;:38;2765:796:91;;;;;:::i;:::-;;;-1:-1:-1;2765:796:91;2936:16:99;2765:796:91;;;-1:-1:-1;2765:796:91;;;;;;;;;;;;;;;;;2936:38:99;:47;:::i;:::-;2765:796:91;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2765:796:91;;;;;;;;-1:-1:-1;;2765:796:91;;;;:::o;:::-;;;;;;-1:-1:-1;;2765:796:91;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;2765:796:91;;;;;;1788:109:99;2765:796:91;;;;;:::i;:::-;;;-1:-1:-1;2765:796:91;1788:109:99;2765:796:91;;;-1:-1:-1;2765:796:91;;;;;;;;;;;;;;;;;1788:109:99;2765:796:91;;;;;;;;;;;;;;-1:-1:-1;;2765:796:91;;;;;;;1374:6:99;2765:796:91;;;;;;;;;-1:-1:-1;;2765:796:91;;;;;;1528:51:99;-1:-1:-1;;;;;2765:796:91;;;;;;;;;;;;-1:-1:-1;;2765:796:91;;;;;;322:32:76;-1:-1:-1;;;;;2765:796:91;;;;;;;;;;;;-1:-1:-1;;2765:796:91;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2765:796:91;;;;-1:-1:-1;;;;;2765:796:91;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;2765:796:91;;;;;;;4301:16:22;2765:796:91;;4726:16:22;;:34;;;;2765:796:91;4805:1:22;4790:16;:50;;;;2765:796:91;4855:13:22;:30;;;;2765:796:91;4851:91:22;;;-1:-1:-1;;;;;;;;;;;2765:796:91;;-1:-1:-1;;2765:796:91;;;;;718:4:76;;4951:18:22;4979:67;;718:4:76;:::i;:::-;5066:101:22;;2765:796:91;5066:101:22;-1:-1:-1;;;;;;;;;;;2765:796:91;;-1:-1:-1;;;;2765:796:91;;;;;-1:-1:-1;2765:796:91;;5142:14:22;;2765:796:91;;5142:14:22;2765:796:91;4979:67:22;-1:-1:-1;;;;;;;;;;;2765:796:91;;-1:-1:-1;;;;2765:796:91;-1:-1:-1;;;2765:796:91;;;718:4:76;:::i;4851:91:22:-;2765:796:91;;-1:-1:-1;;;4908:23:22;;2765:796:91;;4908:23:22;4855:30;4872:13;;;4855:30;;;4790:50;4818:4;4810:25;:30;;-1:-1:-1;4790:50:22;;4726:34;;;-1:-1:-1;4726:34:22;;2765:796:91;;;;;;-1:-1:-1;;2765:796:91;;;;;;2811:43;-1:-1:-1;;;;;2765:796:91;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;2765:796:91;;;;-1:-1:-1;2765:796:91;;;477:31:82;2765:796:91;;;;;;:::i;:::-;;;;;;;;;;;;;;;416:25:82;;;;2765:796:91;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;2765:796:91;;;;;;;;;;;;;477:31:82;;2765:796:91;;;;;;;;;;:::i;:::-;477:31:82;2765:796:91;;477:31:82;;;;;;:::i;:::-;518:79;;;2765:796:91;518:79:82;;2765:796:91;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2765:796:91;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;-1:-1:-1;;;;;2765:796:91;;;;;;;:::o;:::-;-1:-1:-1;;;;;2765:796:91;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;2765:796:91;;;;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;:::i;:::-;-1:-1:-1;;;;;2765:796:91;;;;;;-1:-1:-1;;2765:796:91;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;2765:796:91;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;2765:796:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;2765:796:91;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;2692:73:99;:38;2765:796:91;;;:::i;:::-;;;;;-1:-1:-1;2765:796:91;2692:16:99;2765:796:91;;;-1:-1:-1;2765:796:91;;;;;;;;;;;;;;;;;2692:38:99;:73;:::i;2765:796:91:-;;;;;3248:62:99;2765:796:91;;;:::i;:::-;3248:62:99;;;;;:::i;:::-;2765:796:91;;;;;;;;;;;;;-1:-1:-1;;2765:796:91;;;;;;;-1:-1:-1;;;;;404:28:76;2765:796:91;;;;;;;;;;-1:-1:-1;;2765:796:91;;;;;;;1271:7:99;2765:796:91;;;;;;;;;-1:-1:-1;;2765:796:91;;;;;;;;-1:-1:-1;;;;;2765:796:91;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;2765:796:91;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;774:1493:100:-;;;;;;;;2765:796:91;;:::i;:::-;1076:16:100;;1072:91;;774:1493;837:15:68;;819:34;837:15;819:34;:::i;:::-;-1:-1:-1;2765:796:91;1215:29:100;;;;:27;;:13;;-1:-1:-1;;;;;2765:796:91;1215:13:100;2765:796:91;;-1:-1:-1;;;;;2765:796:91;;;1215:27:100;2765:796:91;;-1:-1:-1;;;1215:29:100;;2765:796:91;;;;;1215:29:100;;;;;;1177:67;1215:29;1196:48;1215:29;-1:-1:-1;1215:29:100;;;774:1493;1196:48;;:::i;:::-;2765:796:91;;;;1177:67:100;2765:796:91;;;1177:67:100;;;:107;;;;;774:1493;1173:178;;;1418:87;3455:20:63;1474:30:100;;1418:87;;;;:::i;:::-;3463:5:63;;;3066;;;3463;;-1:-1:-1;2765:796:91;3060:42:63;;;2825:294;3455:20;1578:18:100;;;1574:75;;1950:87;;;2200:60;1718:16;2200:60;1718:16;;;;;;:::i;:::-;1791:13;;;;;:::i;:::-;2765:796:91;;:::i;:::-;;;;1215:29:100;1961:75;;2765:796:91;;;1950:87:100;;;1215:29;1950:87;;2765:796:91;;;;;;;;;;;;;;;;;;;1950:87:100;;;;;;:::i;:::-;2087:16;;;;:::i;:::-;2167;;;;;;:::i;:::-;2765:796:91;;;;;;;;;;;;;;-1:-1:-1;;;;;2765:796:91;;;;;;;;;;;2200:60:100;;;;774:1493::o;1574:75::-;2765:796:91;;-1:-1:-1;;;1619:19:100;;1215:29;;1619:19;1173:178;2765:796:91;;-1:-1:-1;;;1315:25:100;;1215:29;;1315:25;1177:107;837:15:68;;1248:36:100;819:34:68;837:15;819:34;:::i;1248:36:100:-;-1:-1:-1;1248:36:100;1177:107;;;1215:29;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;1072:91;1121:31;;;;;;;;:::i;:::-;1072:91;;;;;2765:796:91;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;2765:796:91;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;2765:796:91;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;3020:539::-;2765:796;;-1:-1:-1;;;3303:105:91;;-1:-1:-1;;;;;2765:796:91;;;3303:105;;;2765:796;;;;;;;;;;;;;;;;;;;;;;;;;3020:539;2765:796;3303:105;;2765:796;;;;;;3320:18;2765:796;3303:105;;;;;;;;;;;3020:539;2765:796;;;3419:134;;3020:539;:::o;3419:134::-;3476:66;2765:796;;;3476:66;2765:796;;;:::i;:::-;;;;;;3476:66;;;2765:796;3476:66;;;:::i;3303:105::-;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;2505:267:99;-1:-1:-1;2765:796:91;;;2692:16:99;2765:796:91;;;;;;;;-1:-1:-1;;;;;2765:796:91;;;;;;;;;2692:73:99;;2505:267;;2692:73;:::i;2765:796:91:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;2765:796:91;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;2765:796:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;2765:796:91;;;;;;;;:::o;:::-;;;;;;;;;;:::o;3323:1122:99:-;;2765:796:91;;:::i;:::-;;;;3608:16:99;3604:109;;3323:1122;837:15:68;;819:34;837:15;819:34;:::i;:::-;-1:-1:-1;2765:796:91;;;;3778:27:99;;:13;;-1:-1:-1;;;;;2765:796:91;3778:13:99;2765:796:91;3778:27:99;2765:796:91;;;;;;;3778:29:99;;;;;;;;;;;;;;;3740:67;3778:29;3759:48;3778:29;-1:-1:-1;3778:29:99;;;3759:48;;:::i;3740:67::-;2765:796:91;;;3740:67:99;;;:107;;;;;3323:1122;3740:197;;;;3323:1122;3723:263;;;2765:796:91;3778:29:99;2765:796:91;;;;;;;;;;4025:25:99;;;;;;;;;4010:143;4025:25;;;-1:-1:-1;4025:25:99;;;3323:1122;4113:30;;;2765:796:91;;;;;;;;;;;4010:143:99;;;;;3778:29;4010:143;;;:::i;:::-;;;-1:-1:-1;;;;;2765:796:91;4010:143:99;;;;;;;4181:257;4010:143;-1:-1:-1;4010:143:99;;;3323:1122;3996:157;;4293:102;3996:157;;4233:162;3996:157;4207:231;3996:157;;2936:28;:47;:38;:28;;;2765:796:91;;2936:16:99;2765:796:91;;;;;;;2936:28:99;2765:796:91;;;;;;;;;;;;;;;;2936:47:99;4351:43;;;4293:102;;:::i;:::-;4233:162;;:::i;:::-;3463:5:63;;;;3066;;2765:796:91;3060:42:63;3371:111;;4181:257:99;3323:1122;:::o;4010:143::-;4233:162;4010:143;;;4207:231;4010:143;;;;4293:102;4010:143;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;4025:25;;;;;;;;;;;;;;:::i;:::-;;;;3723:263;3962:13;;;;;;-1:-1:-1;3962:13:99;-1:-1:-1;3962:13:99;:::o;3740:197::-;3886:41;;3867:70;3886:51;;:41;;;2765:796:91;;3886:29:99;2765:796:91;;;;;;;3886:51:99;2765:796:91;;;;;3867:70:99;-1:-1:-1;3740:197:99;;;:107;837:15:68;;3811:36:99;819:34:68;837:15;819:34;:::i;3811:36:99:-;;;;3740:107;;;3778:29;;;;;;;;;;;;;;;:::i;3604:109::-;3662:40;;;;;;;;;;;;:::i;:::-;3604:109;;;;4714:335;;;;2765:796:91;-1:-1:-1;2765:796:91;4876:29:99;2765:796:91;;;;4876:51:99;2765:796:91;;-1:-1:-1;2765:796:91;;;;;;;;;;;;;;;;;4876:51:99;2765:796:91;;;;;-1:-1:-1;4872:171:99;;4714:335;;;:::o;4872:171::-;4962:70;2765:796:91;4962:51:99;2765:796:91;-1:-1:-1;2765:796:91;4876:29:99;2765:796:91;;;-1:-1:-1;2765:796:91;;;;;;;;;;;;;;;;;4962:51:99;2765:796:91;;;;;;;;;;;;;;9999:1:66;2765:796:91;;;;;;;:::o;5055:221:99:-;;;2765:796:91;-1:-1:-1;2765:796:91;5160:16:99;2765:796:91;;2936:47:99;:38;5160;2765:796:91;;-1:-1:-1;2765:796:91;;;;;;;;;;;;;;;;;5160:38:99;837:15:68;819:34;837:15;819:34;:::i;:::-;2765:796:91;-1:-1:-1;2765:796:91;5160:16:99;2765:796:91;;;-1:-1:-1;2765:796:91;;;;;;;;;;;;;;;;;2936:47:99;2765:796:91;;;;;;;;6360:12:93;;;2765:796:91;;;6360:24:93;6356:75;;5055:221:99;6474:30:93;;;:::i;:::-;2765:796:91;;;;;6578:12:93;;;;:::i;:::-;;6604:24;;;5055:221:99;-1:-1:-1;6600:188:93;;;-1:-1:-1;;;;2765:796:91;;;;;;;6644:29:93;:21;;;;:::i;:::-;:29;2765:796:91;;;;;;;;;;;;;;;;;;;;;6600:188:93;6753:24;;8310:38:66;;-1:-1:-1;;;;;2765:796:91;;;;;8310:38:66;:::i;:::-;6753:24:93;;;:::i;6604:::-;2765:796:91;;;;;;6614:14:93;;-1:-1:-1;6604:24:93;;;6356:75;6400:20;;;:::i;:::-;6356:75;;2765:796:91;;;;;;;;-1:-1:-1;;;;;2765:796:91;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;5282:431:99:-;;;;5487:25;;:23;:13;2765:796:91;5494:5:99;2765:796:91;;;;;;;;;5487:23:99;2765:796:91;;-1:-1:-1;;;5487:25:99;;2765:796:91;;;;;5487:25:99;;;;;;;5631:65;5487:25;5631:65;5487:25;5494:5;5487:25;;;5282:431;-1:-1:-1;;;;;;2765:796:91;;;;:::i;:::-;-1:-1:-1;;;;;5677:4:99;2765:796:91;;;5677:4:99;5487:25;5642:53;;2765:796:91;;;5631:65:99;;;5487:25;5631:65;;;:::i;:::-;5472:234;;;;;5494:5;2765:796:91;5472:234:99;2765:796:91;;;;;;;;;;;;;;5472:234:99;;5487:25;5472:234;;;:::i;:::-;;;;;;;;;;;5282:431;:::o;5472:234::-;;;;;;:::i;:::-;;;:::i;5487:25::-;;;;;;;;;;;;;;:::i;:::-;;;;5719:137;5809:5;2765:796:91;;;;-1:-1:-1;;;5802:47:99;;;;;2765:796:91;;;;;;;;;;;;;;;5802:47:99;;2765:796:91;;;;;;-1:-1:-1;;;;;2765:796:91;5802:47:99;;;;;;;;5719:137;:::o;5802:47::-;;;;;;;;;;;;;:::i;:::-;;5719:137::o;2765:796:91:-;;;;;;;:::o;:::-;;;;;;;;;;;;5862:623:99;;;5988:12;2765:796:91;;;;;;;5984:495:99;;5862:623;;;;;;:::o;5984:495::-;2765:796:91;;-1:-1:-1;;;6033:22:99;;2765:796:91;6033:22:99;;2765:796:91;;6033:22:99;;2765:796:91;;-1:-1:-1;;;;;2765:796:91;6033:22:99;;;;;;;5988:12;6033:22;;;5984:495;-1:-1:-1;2765:796:91;;-1:-1:-1;;;6033:22:99;6094:81;;;;;;;;2765:796:91;;;;-1:-1:-1;;;;;2765:796:91;;;;;;;;;;;;;;;;;;;;;;6094:81:99;2765:796:91;;;;6094:81:99;;2765:796:91;;6094:81:99;;;;;;:::i;:::-;2765:796:91;6194:9:99;:55;6190:124;;5988:12;6328:141;;;;;;1271:7;6328:141;;5984:495;;;;;;;6190:124;2765:796:91;;-1:-1:-1;;;6276:23:99;;6033:22;;6276:23;6033:22;6094:81;6033:22;;;6094:81;6033:22;;;;;;;;;;;:::i;:::-;;;;;2765:796:91;;;;;;;;-1:-1:-1;2765:796:91;;-1:-1:-1;2765:796:91;;;-1:-1:-1;2765:796:91;:::o;:::-;;;;;;;;;;;;10580:184:93;2765:796:91;;10446:8:66;;;:63;-1:-1:-1;10446:63:66;-1:-1:-1;;;;;2765:796:91;;10726:7:93;2765:796:91;;10736:12:93;:17;:12;;:17;:::i;:::-;2765:796:91;;;;;;10580:184:93;:::o;10726:31::-;;;-1:-1:-1;10580:184:93;:::o;10446:63:66:-;2765:796:91;;;;;;;;;;14439:109:66;-1:-1:-1;14439:109:66;;-1:-1:-1;14439:109:66;;;2765:796:91;;;10446:63:66;;2765:796:91;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;2765:796:91;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;:::i;6491:564:99:-;6614:34;6491:564;6614:34;;;;:::i;:::-;2765:796:91;;-1:-1:-1;;;6664:41:99;;-1:-1:-1;;;;;2765:796:91;;;6664:41:99;;;2765:796:91;;;;;6664:41:99;;;2765:796:91;;;6674:13:99;2765:796:91;;6664:41:99;;;;;;;-1:-1:-1;6664:41:99;;;6491:564;6663:42;;6659:90;;2684:111:26;6850:27:99;6664:41;2684:111:26;;;:::i;:::-;-1:-1:-1;2765:796:91;;-1:-1:-1;;;;;;2765:796:91;-1:-1:-1;;;;;2765:796:91;;;;;6850:27:99;:::i;:::-;2765:796:91;;;;;;;;;;6892:23:99;;;;;;;;;-1:-1:-1;6892:23:99;;;6491:564;2765:796:91;;;6892:37:99;:64;;;6491:564;6888:112;;2765:796:91;7010:38:99;;2765:796:91;;-1:-1:-1;2765:796:91;;-1:-1:-1;;;;2765:796:91;;;;;;-1:-1:-1;;;2765:796:91;;;;;;;;6888:112:99;2765:796:91;;-1:-1:-1;;;6979:10:99;;6664:41;;6979:10;6892:64;-1:-1:-1;2765:796:91;;;;6892:64:99;;:23;;;;;;-1:-1:-1;6892:23:99;;;;;;:::i;:::-;;;;;6659:90;2765:796:91;;-1:-1:-1;;;6728:10:99;;6664:41;;6728:10;6664:41;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;2765:796:91;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::o;7558:604:93:-;;2765:796:91;;7686:17:93;7682:83;;2765:796:91;7789:27:93;2765:796:91;7789:27:93;2765:796:91;;7789:27:93;;;;;;:::i;:::-;7860:14;;;;;:::i;:::-;2765:796:91;;;;;;;;;;;;;;;;7888:22:93;;;7884:77;;7975:21;-1:-1:-1;7975:84:93;;;;7558:604;7971:139;;;;8127:28;;;;:::i;7971:139::-;8082:17;;7789:27;8082:17;2765:796:91;8075:24:93;:::o;7975:84::-;2765:796:91;;;8009:16:93;2765:796:91;;8009:16:93;:::i;:::-;2765:796:91;;;8001:24:93;:57;;;;;7975:84;;;;;;;8001:57;8029:29;8038:8;;;8029:18;8038:8;8029:23;8038:8;;:::i;:::-;8029:18;;:::i;:::-;2765:796:91;;;;;8029:29:93;;8001:57;;;;7884:77;7933:17;;;;;7789:27;7933:17;2765:796:91;7926:24:93;:::o;7682:83::-;7726:28;;;;:::i;14296:213:64:-;2765:796:91;14374:24:64;;;;14370:103;;2765:796:91;14296:213:64;:::o;14370:103::-;2765:796:91;;;;14421:41:64;;;;;;14452:2;14421:41;;;2765:796:91;;;;;14421:41:64;2765:796:91;;;-1:-1:-1;;;2765:796:91;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;-1:-1:-1;;;2765:796:91;;;;;;;;;;;;;;;:::i;6893:76:22:-;;;:::i;:::-;;;:::i;:::-;1949:1:26;2499:73;1991:1;6893:76:22:o;2273:218:100:-;-1:-1:-1;2765:796:91;;;;;:::i;:::-;;;;;;2419:30:100;;2765:796:91;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;2419:30:100;2765:796:91;:::i;:::-;;;;2273:218:100;:::o;6999:207:93:-;;2765:796:91;;9737:15:66;-1:-1:-1;9762:18:66;9795:7;9801:1;9795:7;;9791:234;;6999:207:93;10049:53:66;;;;;:::i;:::-;10120:8;;;:63;-1:-1:-1;10120:63:66;;-1:-1:-1;;;;;2765:796:91;;7168:7:93;2765:796:91;;;7178:12:93;;:17;:12;;:17;:::i;10120:63:66:-;10135:41;10168:7;10135:48;10168:7;;:::i;:::-;10135:41;14439:109;;;;;;14289:265;;10135:41;2765:796:91;;;;;10135:48:66;10120:63;;;9791:234;9838:14;;;;;:::i;:::-;2765:796:91;;;;;;;10049:53:66;14439:109;;-1:-1:-1;14439:109:66;2765:796:91;14439:109:66;;;-1:-1:-1;14439:109:66;;2765:796:91;;;;;9870:48:66;9866:149;2765:796:91;;;9938:10:66;9866:149;9791:234;;9866:149;9993:7;;;;;;:::i;:::-;9866:149;9791:234;;2765:796:91;;;;;;;:::i;:::-;-1:-1:-1;2765:796:91;;;;;;;:::o;11486:272:93:-;;2765:796:91;11718:12:93;11452:22:66;11718:31:93;11486:272;2765:796:91;;:::i;:::-;;;;:::i;:::-;;11452:22:66;;:::i;:::-;2765:796:91;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;11718:12:93;:31;:::i;:::-;2765:796:91;;;;;;;;;:::i;:::-;;;;;;;11672:79:93;;2765:796:91;11486:272:93;:::o;10695:389:66:-;2765:796:91;;10871:8:66;;;10895:20;;10833:17;10895:20;10833:17;10895:20;10833:17;10895:20;:::o;10867:211::-;2765:796:91;;;;;;;;;;10833:17:66;14439:109;;10833:17;14439:109;;;2765:796:91;11014:1:66;2765:796:91;;;;;;;11030:37:66;:::o;7084:141:22:-;2765:796:91;-1:-1:-1;;;;;;;;;;;2765:796:91;;;;7150:18:22;7146:73;;7084:141::o;7146:73::-;2765:796:91;;-1:-1:-1;;;7191:17:22;;;;;2765:796:91;;;-1:-1:-1;;;2765:796:91;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;2765:796:91;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;11657:922:66;2765:796:91;;11657:922:66;;;11864:7;;;;11936;11916:28;11936:7;;:::i;:::-;11916:28;14439:109;;;;;;14289:265;;11916:28;2765:796:91;;;;;;;;;;;;12103:13:66;;;12099:89;;12251:14;;;;;12285:19;;;;2765:796:91;;;;;;;;;;;;;;;;;12285:19:66;2765:796:91;;12423:25:66;;:::o;12247:163::-;2765:796:91;;;12343:52:66;2765:796:91;12353:41:66;2765:796:91;;:::i;:::-;;;;;;;;12353:41:66;-1:-1:-1;;;;;2765:796:91;;12353:41:66;;;2765:796:91;12343:52:66;:::i;:::-;12247:163;;12099:89;2765:796:91;;-1:-1:-1;;;12143:30:66;;;;;11860:713;2765:796:91;;12479:52:66;2765:796:91;12489:41:66;2765:796:91;;:::i;12489:41:66:-;-1:-1:-1;;;;;2765:796:91;;12489:41:66;;;2765:796:91;12343:52:66;:::i;12479:::-;11870:1;12545:17;;:::o;18080:5181:63:-;18246:1;18241:6;;;18237:53;;18246:1;19217:14;-1:-1:-1;;;19278:16:63;;;19274:92;;18080:5181;22827:18;22717;22607;22498;22387;22278;23216:28;19383:15;19898:6;19383:15;-1:-1:-1;;;23237:6:63;19383:15;;;19379:90;;18080:5181;19493:7;19486:15;;;19482:90;;18080:5181;19596:7;19589:15;;;19585:89;;18080:5181;19698:6;19691:14;;;19687:87;;18080:5181;19798:6;19791:14;;;19787:87;;18080:5181;19891:14;;19887:61;;18080:5181;20374:1;2765:796:91;18246:1:63;2765:796:91;22284:6:63;;;;:::i;:::-;2765:796:91;;;;;22278:18:63;22393:6;;;;:::i;22387:18::-;22504:6;;;;:::i;22498:18::-;22613:6;;;;:::i;22607:18::-;22723:6;;;;:::i;22717:18::-;22833:6;;;;:::i;22827:18::-;23237:6;;;:::i;:::-;23232:11;;;2765:796:91;23216:28:63;2765:796:91;;18080:5181:63;:::o;19887:61::-;18246:1;2765:796:91;19887:61:63;;19787:87;2765:796:91;;;;;19787:87:63;;;19687;2765:796:91;;;;;19687:87:63;;;19585:89;2765:796:91;;;;;19585:89:63;;;19482:90;2765:796:91;;;;;19482:90:63;;;19379;2765:796:91;;;;;19379:90:63;;;19274:92;-1:-1:-1;;;;2765:796:91;-1:-1:-1;2765:796:91;;;;19274:92:63;;12929:433:66;;;13112:10;;;;;;13344:11;;;12929:433;:::o;13105:230::-;3721:5:63;;;;;;3731;;;;2765:796:91;;;;;;;;;14439:109:66;-1:-1:-1;14439:109:66;2765:796:91;14439:109:66;;;-1:-1:-1;14439:109:66;;2765:796:91;;;;;-1:-1:-1;13189:136:66;2765:796:91;;;13248:10:66;13189:136;;13105:230;;;;13189:136;13303:7;;;;;;:::i;:::-;13189:136;;","linkReferences":{},"immutableReferences":{"56598":[{"start":1266,"length":32}],"56601":[{"start":2377,"length":32},{"start":4979,"length":32}],"61703":[{"start":1682,"length":32},{"start":3385,"length":32}],"64382":[{"start":797,"length":32},{"start":5795,"length":32}],"64385":[{"start":540,"length":32},{"start":1198,"length":32}]}},"methodIdentifiers":{"BASE_SLASHER_HINTS()":"457821b7","BURNER_GAS_LIMIT()":"d5c24e1a","BURNER_RESERVE()":"2964f8dc","FACTORY()":"2dd31000","NETWORK_MIDDLEWARE_SERVICE()":"2c9d45b3","TYPE()":"bb24fe8a","VAULT_FACTORY()":"103f2907","cumulativeSlash(bytes32,address)":"1a2be2c4","cumulativeSlashAt(bytes32,address,uint48,bytes)":"aa8e6489","initialize(bytes)":"439fab91","isBurnerHook()":"34d098ea","latestSlashedCaptureTimestamp(bytes32,address)":"267de1f3","slash(bytes32,address,uint256,uint48,bytes)":"021a8156","slashHints(address,address,bytes32,address,uint256,uint48)":"238ab85f","slashableStake(bytes32,address,uint48,bytes)":"aab3595f","staticDelegateCall(address,bytes)":"9f86fd85","vault()":"fbfa77cf"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"baseSlasherHints\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"CheckpointUnorderedInsertion\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExternalCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBurnerGas\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientSlash\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCaptureTimestamp\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoBurner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotNetworkMiddleware\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slashedAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"}],\"name\":\"Slash\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BASE_SLASHER_HINTS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BURNER_GAS_LIMIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BURNER_RESERVE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NETWORK_MIDDLEWARE_SERVICE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TYPE\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VAULT_FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"cumulativeSlash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"cumulativeSlashAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isBurnerHook\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"latestSlashedCaptureTimestamp\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"value\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hints\",\"type\":\"bytes\"}],\"name\":\"slash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"slashedAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"slasher\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"}],\"name\":\"slashHints\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hints\",\"type\":\"bytes\"}],\"name\":\"slashableStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"staticDelegateCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"CheckpointUnorderedInsertion()\":[{\"details\":\"A value was attempted to be inserted on a past checkpoint.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Slash(bytes32,address,uint256,uint48)\":{\"params\":{\"captureTimestamp\":\"time point when the stake was captured\",\"operator\":\"operator that is slashed\",\"slashedAmount\":\"virtual amount of the collateral slashed\",\"subnetwork\":\"subnetwork that requested the slash\"}}},\"kind\":\"dev\",\"methods\":{\"cumulativeSlash(bytes32,address)\":{\"params\":{\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"_0\":\"cumulative slash amount\"}},\"cumulativeSlashAt(bytes32,address,uint48,bytes)\":{\"params\":{\"hint\":\"hint for the checkpoint index\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\",\"timestamp\":\"time point to get the cumulative slash amount until (inclusively)\"},\"returns\":{\"_0\":\"cumulative slash amount until the given timestamp (inclusively)\"}},\"initialize(bytes)\":{\"params\":{\"data\":\"some data to use\"}},\"slash(bytes32,address,uint256,uint48,bytes)\":{\"details\":\"Only a network middleware can call this function.\",\"params\":{\"amount\":\"maximum amount of the collateral to be slashed\",\"captureTimestamp\":\"time point when the stake was captured\",\"hints\":\"hints for checkpoints' indexes\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"slashedAmount\":\"virtual amount of the collateral slashed\"}},\"slashableStake(bytes32,address,uint48,bytes)\":{\"params\":{\"captureTimestamp\":\"time point to get the stake amount at\",\"hints\":\"hints for the checkpoints' indexes\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"amount\":\"slashable amount of the stake\"}},\"staticDelegateCall(address,bytes)\":{\"details\":\"It allows to use this contract's storage on-chain.\",\"params\":{\"data\":\"data to make a delegatecall with\",\"target\":\"address of the contract to make a delegatecall to\"}}},\"version\":1},\"userdoc\":{\"events\":{\"Slash(bytes32,address,uint256,uint48)\":{\"notice\":\"Emitted when a slash is performed.\"}},\"kind\":\"user\",\"methods\":{\"BURNER_GAS_LIMIT()\":{\"notice\":\"Get a gas limit for the burner.\"},\"BURNER_RESERVE()\":{\"notice\":\"Get a reserve gas between the gas limit check and the burner's execution.\"},\"FACTORY()\":{\"notice\":\"Get the factory's address.\"},\"NETWORK_MIDDLEWARE_SERVICE()\":{\"notice\":\"Get the network middleware service's address.\"},\"TYPE()\":{\"notice\":\"Get the entity's type.\"},\"VAULT_FACTORY()\":{\"notice\":\"Get the vault factory's address.\"},\"cumulativeSlash(bytes32,address)\":{\"notice\":\"Get a cumulative slash amount for an operator on a subnetwork.\"},\"cumulativeSlashAt(bytes32,address,uint48,bytes)\":{\"notice\":\"Get a cumulative slash amount for an operator on a subnetwork until a given timestamp (inclusively) using a hint.\"},\"initialize(bytes)\":{\"notice\":\"Initialize this entity contract by using a given data.\"},\"isBurnerHook()\":{\"notice\":\"Get if the burner is needed to be called on a slashing.\"},\"latestSlashedCaptureTimestamp(bytes32,address)\":{\"notice\":\"Get the latest capture timestamp that was slashed on a subnetwork.\"},\"slash(bytes32,address,uint256,uint48,bytes)\":{\"notice\":\"Perform a slash using a subnetwork for a particular operator by a given amount using hints.\"},\"slashableStake(bytes32,address,uint48,bytes)\":{\"notice\":\"Get a slashable amount of a stake got at a given capture timestamp using hints.\"},\"staticDelegateCall(address,bytes)\":{\"notice\":\"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data).\"},\"vault()\":{\"notice\":\"Get the vault's address.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/hints/SlasherHints.sol\":\"SlasherHints\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf\",\"dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89\",\"dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1\",\"dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol\":{\"keccak256\":\"0x4aaaf1c0737dd16e81f0d2b9833c549747a5ede6873bf1444bc72aa572d03e98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eada27d7668eebaea16c3b890aa1b38ffc53965292e26c96f7c44834623f4710\",\"dweb:/ipfs/QmVSWuLtxyCqNbLyY89ptxkvsk4CLLKDQYigEne5Qj8k1L\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x7d94fa0af099a2172eb01f9c8a8a443cbe7e0e43654841563e4e09968efdb549\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65e38fb76b6add407d4557753ae83dd1268e8261195dbe5c19a580d5ba6e4e9a\",\"dweb:/ipfs/QmTkGSJtaQrqjcyWM4AgemeEmKgtDydKPPVRajsUJRQSrK\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0\",\"dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x10eb97d047f8d84fe263a02bb4a656ac6674f6679d74532cc37546289e073a9d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3e41287d40b0c46982f1083d40d32de2761f009c5c51627fe79a7feb0ab1cf5c\",\"dweb:/ipfs/Qme7dbh6HX3ZvUJdbQAcVqXkmyXyfcLiUZRhhon3cU6K8p\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e\",\"dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/SignatureChecker.sol\":{\"keccak256\":\"0xbdc3bb48ccedb818cd75a6d74a16df55a822e9f6d3cc54c59f576f10aab67b5f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2284f25f2478f419d7781573b17a89d0e7c5589a865d55e2d6ed5163aee23aa8\",\"dweb:/ipfs/QmNsr2625APBQiNKpYnX5VcSnYgfUHR9Uzzp9pRXjoDqK7\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44\",\"dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6\",\"dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza\"]},\"src/contracts/common/Entity.sol\":{\"keccak256\":\"0x3d61a932995b8443381f3950542d388223a2c26dd5d29a3274dea3baa7388bd7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7cdf5f03ca72fd263fd32ff59c8d88ddca911ae83896a287d10772c1bbe9b138\",\"dweb:/ipfs/QmbP84r5BWT1Rn9AYTntWSf3xUMTTCohTZJFhbBhDXFoHa\"]},\"src/contracts/common/MigratableEntity.sol\":{\"keccak256\":\"0x303ad40a3de8fa808cc30a6fbd5998633f6a89b982e6db1fa981e0566ab445e7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://fa8fb92995ead02798e013190b87b84b44cc68668262f045c9b0b4783940e2bf\",\"dweb:/ipfs/QmV1uKGVLKwWisc714R8fCt71gXUQJpaKvdc6LQ8WtvMpL\"]},\"src/contracts/common/StaticDelegateCallable.sol\":{\"keccak256\":\"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764\",\"dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD\"]},\"src/contracts/delegator/BaseDelegator.sol\":{\"keccak256\":\"0x7c54d491fdd4415b764a9c8defa068e56d4c0c8c9419be0053a1d377669290e8\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://9238bfbad0f6eeb0dc7727724de14380f1980b395902269703d5e2ef07e52e10\",\"dweb:/ipfs/QmPJn1V4HNXcEghYvogGuSTF24dSQUPosR5qtsXcmNqRm3\"]},\"src/contracts/delegator/FullRestakeDelegator.sol\":{\"keccak256\":\"0x0a81c4f8e72914563a9cb771e93acf889c71ea36b7bec040e4eb562b199d5af1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6fc66b6ba02da77046a0bbbd1dd407a62c08f52e04486c9cbd2cb1cca3da555f\",\"dweb:/ipfs/QmZQivK1ZnMxfRQQ5aLpV9co5u55wQVNev5Rg1hzAqxhkE\"]},\"src/contracts/delegator/NetworkRestakeDelegator.sol\":{\"keccak256\":\"0xd3a8e6522f9c6fdcc2da837c9023afd6bdff2bce45a35590320c475519e3636d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://58b17a87f6554f08376f9ea7fedf486a4aa75801bf0ad8b23ff5a46959b6b7a3\",\"dweb:/ipfs/QmSTmNh67tYt8CmjVZb57r8N3qX5yeYdMApKPJm3qvQgQw\"]},\"src/contracts/delegator/OperatorNetworkSpecificDelegator.sol\":{\"keccak256\":\"0x031a10722b9ec49048f0952710401131290adb87e71caf294e864e7ac3b98a16\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://72428febc875134b2f29205e6f294634a1c22a7d5c78d6a9cb2f8196f107c9b5\",\"dweb:/ipfs/QmTPwXR6h5oytckmkLrHdKeEMdphJxceDhYUR4zvQeWAwY\"]},\"src/contracts/delegator/OperatorSpecificDelegator.sol\":{\"keccak256\":\"0x630ce62fa30b9f3349ab7a8cf8dbf041319febc6dd757be2f94d3d25944ed328\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c2ac59d47ce57d2a6819ae9833e1a618a371eccff93eb5ab367b201b01f42bfa\",\"dweb:/ipfs/QmdBpGMBivpNPv2WbH8vnCUy5xkVeaxQvGgqi33vKCz1kA\"]},\"src/contracts/hints/DelegatorHints.sol\":{\"keccak256\":\"0xd71e9102e99a25ee8b5435779f011a24558f56074aa2b16c18b623b57754ae97\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://29db5552e55dab51bea1ae40ba00ca674cb50fcb10997999a72a94527b6eb591\",\"dweb:/ipfs/QmQrYyTPx73ubNxMhYWJCkprCVFVtuTFcKaabYiKTe71tY\"]},\"src/contracts/hints/Hints.sol\":{\"keccak256\":\"0x8b565df1ae35993c097a9e642002782a8f451f6fd01809cad6bcd345bdf1b99c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://99a19adb01e350a92f534095b3078229df1f2f83077992d75d58d8684be45971\",\"dweb:/ipfs/QmbmwcuswVbzvwHQFTtrJG86oV98GnfxqYTb8cV8u1acox\"]},\"src/contracts/hints/OptInServiceHints.sol\":{\"keccak256\":\"0x95d9407900d27b9f4a1233b772aeed809c07b2dc5b31cfc9fa77ca26514c49e5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://a13a8877e312d7e6b8b85bde3668c5d84ff5ecc83f762cd573f2b7104c64eb42\",\"dweb:/ipfs/QmYV2J55acuGzCNnS3juABuUHY5U1xc8g8o9jwEyFFdeG5\"]},\"src/contracts/hints/SlasherHints.sol\":{\"keccak256\":\"0xd77c5f3bbb0265af8ecd947df88f6f9684e136d80052b5292f5b29aaa3566a3f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://484a26504bf6706202ec82a9a4cfa7d196bbc552b5b78ced25bf7130c2842595\",\"dweb:/ipfs/QmaQqmkoZoUWEam4R94vmajzH3gKqFqpZQwFbrHDsN1peV\"]},\"src/contracts/hints/VaultHints.sol\":{\"keccak256\":\"0xccb505b7159b769cc114d67b87c2de6b106557f667fc8f3780114baad5c3c442\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6d0c80a908fc16e96a8b5605a0bd53f9e89ad0ef0a738fbbae80ba4d3160749b\",\"dweb:/ipfs/QmXo5UtWoR8YmunqcbBU8rQMm1nvmvjNPoXcVrDhh4pEwR\"]},\"src/contracts/libraries/Checkpoints.sol\":{\"keccak256\":\"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609\",\"dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE\"]},\"src/contracts/libraries/ERC4626Math.sol\":{\"keccak256\":\"0x8441160513c1cbeb1c3b9ee077bcc7e7ce20006b52a77c8dd39ff0ef89699939\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://943f8cc3e26ddf649f465f40c909819f5c864717c4baa339e9e403b9374a4653\",\"dweb:/ipfs/QmXPxi1sUDsrGprZdUgCzoPEosaZMv9ZhygWQ1vAi1phAB\"]},\"src/contracts/libraries/Subnetwork.sol\":{\"keccak256\":\"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56\",\"dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32\"]},\"src/contracts/service/OptInService.sol\":{\"keccak256\":\"0x4e0932077f2686b7990e10d59deb2535334c0d09e52ef6e57c6ab09eca21c4b1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7c00d311032ed4a1743aca7475f3c86ce15cdfc2218108efc3731c03d34a5278\",\"dweb:/ipfs/QmUGGfVwVhaHr5kS4177yKKYiLYzi5qZpkEmvYxBZqazxf\"]},\"src/contracts/slasher/BaseSlasher.sol\":{\"keccak256\":\"0x190e5dce196a061bdad42468c52e9f5b0eb7810cd7d0c19f04d6a2e94984f1b6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://07ca08d0cd43c2fe5d54a5577f6bdd522ced410f5d3a52e764deaa7ba26b5f06\",\"dweb:/ipfs/QmZe3PiMKBQKWcwodaLupragdqxPjgS4v1qMC7RXau8hDF\"]},\"src/contracts/slasher/Slasher.sol\":{\"keccak256\":\"0xeee0cb25fad58d496fdcc641d852d11bae06e6ceed5230ae21150964175c494f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://34aa27d21246a1bcee0b6a2afa8d9d613441156362430392f75d176511d58c61\",\"dweb:/ipfs/Qmf53Y3zdGfH4PU2zpSGeHZ8mMLzLXCtmkQrG5mnVJECQ3\"]},\"src/contracts/slasher/VetoSlasher.sol\":{\"keccak256\":\"0xeccc8128de5e1ad499c067feac1c526638fbbac1a18b96726fc7507969fd5897\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://cdfcf281338423625acbccdf8810115b258ef7cfe4aa3c10b8911ead1aa85429\",\"dweb:/ipfs/QmZFsDvZXpkFkx4PHcDXAVPN3ZCAahbSVfYpSVrMBvbt4k\"]},\"src/contracts/vault/Vault.sol\":{\"keccak256\":\"0x7ee6dbf060c45d6eba95315f4ac0b3b467dd9c4999b84c31d6f66d4d8b53a116\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://301948b8ea522db292aa2722ba42def3911dae95f0b376f7023c3fef470f8676\",\"dweb:/ipfs/QmSDbP2HdzhDAzstr8Zz5isEAcSkma8ABc5UwPsoazaumZ\"]},\"src/contracts/vault/VaultStorage.sol\":{\"keccak256\":\"0x57db25b127d77ea3472de53e3a4af3354399655b9268638b99ca5925fa364a56\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://aa763d9a6ec508ae3abfb8228b72b9fd9525279e5135d4962e79ff059feb1173\",\"dweb:/ipfs/QmcbDR6E9wyEpu6V2FkEC4hnWy47zXA9LSKJde6zSGd33Q\"]},\"src/interfaces/common/IEntity.sol\":{\"keccak256\":\"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b\",\"dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv\"]},\"src/interfaces/common/IMigratableEntity.sol\":{\"keccak256\":\"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c\",\"dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds\"]},\"src/interfaces/common/IRegistry.sol\":{\"keccak256\":\"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014\",\"dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK\"]},\"src/interfaces/common/IStaticDelegateCallable.sol\":{\"keccak256\":\"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516\",\"dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi\"]},\"src/interfaces/delegator/IBaseDelegator.sol\":{\"keccak256\":\"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2\",\"dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8\"]},\"src/interfaces/delegator/IDelegatorHook.sol\":{\"keccak256\":\"0xc51aa8d7d1f6c8043ee819b7aeb86da0e993912e1442098df897e299f01f9f46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://adddf5cb2ba282aeb576b26efb28640f865a1721cc9b6eee8b3ee0457a2c9780\",\"dweb:/ipfs/QmNYgAmnLRwWZbhTuQhZs9rx4zcme1df5mEepkrniorSoW\"]},\"src/interfaces/delegator/IFullRestakeDelegator.sol\":{\"keccak256\":\"0xa3c8cb2e45d4d8ce90e95263bea40c01dc400f05ad65bc29597d878606be5e7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://782cf5e201aa4cca037ebafd3807a68ff1cc721d5b8416a35244db0d0607369e\",\"dweb:/ipfs/QmQkJks6x7CKndeTPa9LxgTNygD5uEi7obhADhpq1Lsr9A\"]},\"src/interfaces/delegator/INetworkRestakeDelegator.sol\":{\"keccak256\":\"0xe7030fe30389a147fd710e3436ec346b4842695fd3e65a81b95375c9f1d633fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://739c7e66d301778054f5c90bee45ec9438f68afba8a03eaaac52064c73b115ad\",\"dweb:/ipfs/QmfZ2ytKcTykAc76nxhg8ikUXV8NdBpetqb8W4YWPcox1Z\"]},\"src/interfaces/delegator/IOperatorNetworkSpecificDelegator.sol\":{\"keccak256\":\"0x74b95e64d29769202d45dd277bb830f623ff3d41ce77b80ce3ee4e318a5c71ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e512b903aae5c1b8a028c6e3f4f6223b5cb5d704503cfa6bd37b5346868f5c20\",\"dweb:/ipfs/QmZim9YExsPWtyxyeui993HTKAEmrg8MUcSkZ77Gp2JcuZ\"]},\"src/interfaces/delegator/IOperatorSpecificDelegator.sol\":{\"keccak256\":\"0x72075cab585dc17240cc3e32bc99b92f0d5627ddd988fed680e3e1a52d5a01e4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7448bc90699409ae61d85216b5efc2143a37f0f73354be2aea993bc54afca441\",\"dweb:/ipfs/QmXE4gAxM8pHosZK8mcTcj17puBx484meDCcmrDePskGHZ\"]},\"src/interfaces/service/INetworkMiddlewareService.sol\":{\"keccak256\":\"0x347afc7fcf1fbcdb96d66162070ef6c78aed27b3af2c1d5dfb4e511840631783\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d90b8ceb495159e8e4e95d76447719dd166443f67dfabdd942846162071595c\",\"dweb:/ipfs/QmVVuiAWYx92T6vBvNMKZfTvraCf1fa16BsUKkdNs3hdHA\"]},\"src/interfaces/service/IOptInService.sol\":{\"keccak256\":\"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337\",\"dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24\"]},\"src/interfaces/slasher/IBaseSlasher.sol\":{\"keccak256\":\"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf\",\"dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx\"]},\"src/interfaces/slasher/IBurner.sol\":{\"keccak256\":\"0xaf495dacc19ae0b3c787ba8021c5944927d70261536addd234d7dab146158c2b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b3cc66251008be6ff9fc8b11ecc6831d5a9dca49a3fe9817fcd970253c1d447\",\"dweb:/ipfs/QmVxfb9ALGdF9W3SN2h41gQbUct6tawvu5bw4K89kFQ4HW\"]},\"src/interfaces/slasher/ISlasher.sol\":{\"keccak256\":\"0x34d226d67a3d5e16571f2fac91a8b9773551bcc41c88a96279669dd78d192625\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a6e8c1462ee4a1b0f745414be043c09012ea676613790aba004b06c85c980d1\",\"dweb:/ipfs/QmadjNEbHKRthtA1EeNy3Kg2sXpejH2KBeHm8QZtBPvXbJ\"]},\"src/interfaces/slasher/IVetoSlasher.sol\":{\"keccak256\":\"0xdf7edd04a4f36e9aec3a15241dcb6b6315b2e64927b12710c2c410d571fc55e9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c4be6ac339c2ebf230fed65363f036784224095d0cd0f3f2d01d64d6e0da9508\",\"dweb:/ipfs/QmRSMbpfaHExqrzUA8vYZMYZWh6eQW1KX9JKJSLdgronfg\"]},\"src/interfaces/vault/IVault.sol\":{\"keccak256\":\"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9\",\"dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R\"]},\"src/interfaces/vault/IVaultStorage.sol\":{\"keccak256\":\"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e\",\"dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"baseSlasherHints","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"CheckpointUnorderedInsertion"},{"inputs":[],"type":"error","name":"ExternalCall"},{"inputs":[],"type":"error","name":"InsufficientBurnerGas"},{"inputs":[],"type":"error","name":"InsufficientSlash"},{"inputs":[],"type":"error","name":"InvalidCaptureTimestamp"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"NoBurner"},{"inputs":[],"type":"error","name":"NotInitialized"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"NotNetworkMiddleware"},{"inputs":[],"type":"error","name":"NotVault"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintDowncast"},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"slashedAmount","type":"uint256","indexed":false},{"internalType":"uint48","name":"captureTimestamp","type":"uint48","indexed":false}],"type":"event","name":"Slash","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"BASE_SLASHER_HINTS","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"BURNER_GAS_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"BURNER_RESERVE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"NETWORK_MIDDLEWARE_SERVICE","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"TYPE","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VAULT_FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"cumulativeSlash","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"cumulativeSlashAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"isBurnerHook","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"latestSlashedCaptureTimestamp","outputs":[{"internalType":"uint48","name":"value","type":"uint48"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint48","name":"captureTimestamp","type":"uint48"},{"internalType":"bytes","name":"hints","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"slash","outputs":[{"internalType":"uint256","name":"slashedAmount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"slasher","type":"address"},{"internalType":"address","name":"msgSender","type":"address"},{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint48","name":"captureTimestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"slashHints","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"captureTimestamp","type":"uint48"},{"internalType":"bytes","name":"hints","type":"bytes"}],"stateMutability":"view","type":"function","name":"slashableStake","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"staticDelegateCall"},{"inputs":[],"stateMutability":"view","type":"function","name":"vault","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"cumulativeSlash(bytes32,address)":{"params":{"operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"_0":"cumulative slash amount"}},"cumulativeSlashAt(bytes32,address,uint48,bytes)":{"params":{"hint":"hint for the checkpoint index","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)","timestamp":"time point to get the cumulative slash amount until (inclusively)"},"returns":{"_0":"cumulative slash amount until the given timestamp (inclusively)"}},"initialize(bytes)":{"params":{"data":"some data to use"}},"slash(bytes32,address,uint256,uint48,bytes)":{"details":"Only a network middleware can call this function.","params":{"amount":"maximum amount of the collateral to be slashed","captureTimestamp":"time point when the stake was captured","hints":"hints for checkpoints' indexes","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"slashedAmount":"virtual amount of the collateral slashed"}},"slashableStake(bytes32,address,uint48,bytes)":{"params":{"captureTimestamp":"time point to get the stake amount at","hints":"hints for the checkpoints' indexes","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"amount":"slashable amount of the stake"}},"staticDelegateCall(address,bytes)":{"details":"It allows to use this contract's storage on-chain.","params":{"data":"data to make a delegatecall with","target":"address of the contract to make a delegatecall to"}}},"version":1},"userdoc":{"kind":"user","methods":{"BURNER_GAS_LIMIT()":{"notice":"Get a gas limit for the burner."},"BURNER_RESERVE()":{"notice":"Get a reserve gas between the gas limit check and the burner's execution."},"FACTORY()":{"notice":"Get the factory's address."},"NETWORK_MIDDLEWARE_SERVICE()":{"notice":"Get the network middleware service's address."},"TYPE()":{"notice":"Get the entity's type."},"VAULT_FACTORY()":{"notice":"Get the vault factory's address."},"cumulativeSlash(bytes32,address)":{"notice":"Get a cumulative slash amount for an operator on a subnetwork."},"cumulativeSlashAt(bytes32,address,uint48,bytes)":{"notice":"Get a cumulative slash amount for an operator on a subnetwork until a given timestamp (inclusively) using a hint."},"initialize(bytes)":{"notice":"Initialize this entity contract by using a given data."},"isBurnerHook()":{"notice":"Get if the burner is needed to be called on a slashing."},"latestSlashedCaptureTimestamp(bytes32,address)":{"notice":"Get the latest capture timestamp that was slashed on a subnetwork."},"slash(bytes32,address,uint256,uint48,bytes)":{"notice":"Perform a slash using a subnetwork for a particular operator by a given amount using hints."},"slashableStake(bytes32,address,uint48,bytes)":{"notice":"Get a slashable amount of a stake got at a given capture timestamp using hints."},"staticDelegateCall(address,bytes)":{"notice":"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data)."},"vault()":{"notice":"Get the vault's address."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/hints/SlasherHints.sol":"SlasherHints"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol":{"keccak256":"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866","urls":["bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf","dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab","urls":["bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89","dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606","urls":["bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1","dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol":{"keccak256":"0x4aaaf1c0737dd16e81f0d2b9833c549747a5ede6873bf1444bc72aa572d03e98","urls":["bzz-raw://eada27d7668eebaea16c3b890aa1b38ffc53965292e26c96f7c44834623f4710","dweb:/ipfs/QmVSWuLtxyCqNbLyY89ptxkvsk4CLLKDQYigEne5Qj8k1L"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol":{"keccak256":"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92","urls":["bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a","dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310","urls":["bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862","dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol":{"keccak256":"0x7d94fa0af099a2172eb01f9c8a8a443cbe7e0e43654841563e4e09968efdb549","urls":["bzz-raw://65e38fb76b6add407d4557753ae83dd1268e8261195dbe5c19a580d5ba6e4e9a","dweb:/ipfs/QmTkGSJtaQrqjcyWM4AgemeEmKgtDydKPPVRajsUJRQSrK"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed","urls":["bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0","dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84","urls":["bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9","dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol":{"keccak256":"0x10eb97d047f8d84fe263a02bb4a656ac6674f6679d74532cc37546289e073a9d","urls":["bzz-raw://3e41287d40b0c46982f1083d40d32de2761f009c5c51627fe79a7feb0ab1cf5c","dweb:/ipfs/Qme7dbh6HX3ZvUJdbQAcVqXkmyXyfcLiUZRhhon3cU6K8p"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575","urls":["bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e","dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/SignatureChecker.sol":{"keccak256":"0xbdc3bb48ccedb818cd75a6d74a16df55a822e9f6d3cc54c59f576f10aab67b5f","urls":["bzz-raw://2284f25f2478f419d7781573b17a89d0e7c5589a865d55e2d6ed5163aee23aa8","dweb:/ipfs/QmNsr2625APBQiNKpYnX5VcSnYgfUHR9Uzzp9pRXjoDqK7"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3","urls":["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03","dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol":{"keccak256":"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f","urls":["bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44","dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc","urls":["bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6","dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza"],"license":"MIT"},"src/contracts/common/Entity.sol":{"keccak256":"0x3d61a932995b8443381f3950542d388223a2c26dd5d29a3274dea3baa7388bd7","urls":["bzz-raw://7cdf5f03ca72fd263fd32ff59c8d88ddca911ae83896a287d10772c1bbe9b138","dweb:/ipfs/QmbP84r5BWT1Rn9AYTntWSf3xUMTTCohTZJFhbBhDXFoHa"],"license":"BUSL-1.1"},"src/contracts/common/MigratableEntity.sol":{"keccak256":"0x303ad40a3de8fa808cc30a6fbd5998633f6a89b982e6db1fa981e0566ab445e7","urls":["bzz-raw://fa8fb92995ead02798e013190b87b84b44cc68668262f045c9b0b4783940e2bf","dweb:/ipfs/QmV1uKGVLKwWisc714R8fCt71gXUQJpaKvdc6LQ8WtvMpL"],"license":"BUSL-1.1"},"src/contracts/common/StaticDelegateCallable.sol":{"keccak256":"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90","urls":["bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764","dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD"],"license":"BUSL-1.1"},"src/contracts/delegator/BaseDelegator.sol":{"keccak256":"0x7c54d491fdd4415b764a9c8defa068e56d4c0c8c9419be0053a1d377669290e8","urls":["bzz-raw://9238bfbad0f6eeb0dc7727724de14380f1980b395902269703d5e2ef07e52e10","dweb:/ipfs/QmPJn1V4HNXcEghYvogGuSTF24dSQUPosR5qtsXcmNqRm3"],"license":"BUSL-1.1"},"src/contracts/delegator/FullRestakeDelegator.sol":{"keccak256":"0x0a81c4f8e72914563a9cb771e93acf889c71ea36b7bec040e4eb562b199d5af1","urls":["bzz-raw://6fc66b6ba02da77046a0bbbd1dd407a62c08f52e04486c9cbd2cb1cca3da555f","dweb:/ipfs/QmZQivK1ZnMxfRQQ5aLpV9co5u55wQVNev5Rg1hzAqxhkE"],"license":"BUSL-1.1"},"src/contracts/delegator/NetworkRestakeDelegator.sol":{"keccak256":"0xd3a8e6522f9c6fdcc2da837c9023afd6bdff2bce45a35590320c475519e3636d","urls":["bzz-raw://58b17a87f6554f08376f9ea7fedf486a4aa75801bf0ad8b23ff5a46959b6b7a3","dweb:/ipfs/QmSTmNh67tYt8CmjVZb57r8N3qX5yeYdMApKPJm3qvQgQw"],"license":"BUSL-1.1"},"src/contracts/delegator/OperatorNetworkSpecificDelegator.sol":{"keccak256":"0x031a10722b9ec49048f0952710401131290adb87e71caf294e864e7ac3b98a16","urls":["bzz-raw://72428febc875134b2f29205e6f294634a1c22a7d5c78d6a9cb2f8196f107c9b5","dweb:/ipfs/QmTPwXR6h5oytckmkLrHdKeEMdphJxceDhYUR4zvQeWAwY"],"license":"BUSL-1.1"},"src/contracts/delegator/OperatorSpecificDelegator.sol":{"keccak256":"0x630ce62fa30b9f3349ab7a8cf8dbf041319febc6dd757be2f94d3d25944ed328","urls":["bzz-raw://c2ac59d47ce57d2a6819ae9833e1a618a371eccff93eb5ab367b201b01f42bfa","dweb:/ipfs/QmdBpGMBivpNPv2WbH8vnCUy5xkVeaxQvGgqi33vKCz1kA"],"license":"BUSL-1.1"},"src/contracts/hints/DelegatorHints.sol":{"keccak256":"0xd71e9102e99a25ee8b5435779f011a24558f56074aa2b16c18b623b57754ae97","urls":["bzz-raw://29db5552e55dab51bea1ae40ba00ca674cb50fcb10997999a72a94527b6eb591","dweb:/ipfs/QmQrYyTPx73ubNxMhYWJCkprCVFVtuTFcKaabYiKTe71tY"],"license":"BUSL-1.1"},"src/contracts/hints/Hints.sol":{"keccak256":"0x8b565df1ae35993c097a9e642002782a8f451f6fd01809cad6bcd345bdf1b99c","urls":["bzz-raw://99a19adb01e350a92f534095b3078229df1f2f83077992d75d58d8684be45971","dweb:/ipfs/QmbmwcuswVbzvwHQFTtrJG86oV98GnfxqYTb8cV8u1acox"],"license":"BUSL-1.1"},"src/contracts/hints/OptInServiceHints.sol":{"keccak256":"0x95d9407900d27b9f4a1233b772aeed809c07b2dc5b31cfc9fa77ca26514c49e5","urls":["bzz-raw://a13a8877e312d7e6b8b85bde3668c5d84ff5ecc83f762cd573f2b7104c64eb42","dweb:/ipfs/QmYV2J55acuGzCNnS3juABuUHY5U1xc8g8o9jwEyFFdeG5"],"license":"BUSL-1.1"},"src/contracts/hints/SlasherHints.sol":{"keccak256":"0xd77c5f3bbb0265af8ecd947df88f6f9684e136d80052b5292f5b29aaa3566a3f","urls":["bzz-raw://484a26504bf6706202ec82a9a4cfa7d196bbc552b5b78ced25bf7130c2842595","dweb:/ipfs/QmaQqmkoZoUWEam4R94vmajzH3gKqFqpZQwFbrHDsN1peV"],"license":"BUSL-1.1"},"src/contracts/hints/VaultHints.sol":{"keccak256":"0xccb505b7159b769cc114d67b87c2de6b106557f667fc8f3780114baad5c3c442","urls":["bzz-raw://6d0c80a908fc16e96a8b5605a0bd53f9e89ad0ef0a738fbbae80ba4d3160749b","dweb:/ipfs/QmXo5UtWoR8YmunqcbBU8rQMm1nvmvjNPoXcVrDhh4pEwR"],"license":"BUSL-1.1"},"src/contracts/libraries/Checkpoints.sol":{"keccak256":"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c","urls":["bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609","dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE"],"license":"MIT"},"src/contracts/libraries/ERC4626Math.sol":{"keccak256":"0x8441160513c1cbeb1c3b9ee077bcc7e7ce20006b52a77c8dd39ff0ef89699939","urls":["bzz-raw://943f8cc3e26ddf649f465f40c909819f5c864717c4baa339e9e403b9374a4653","dweb:/ipfs/QmXPxi1sUDsrGprZdUgCzoPEosaZMv9ZhygWQ1vAi1phAB"],"license":"MIT"},"src/contracts/libraries/Subnetwork.sol":{"keccak256":"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe","urls":["bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56","dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32"],"license":"MIT"},"src/contracts/service/OptInService.sol":{"keccak256":"0x4e0932077f2686b7990e10d59deb2535334c0d09e52ef6e57c6ab09eca21c4b1","urls":["bzz-raw://7c00d311032ed4a1743aca7475f3c86ce15cdfc2218108efc3731c03d34a5278","dweb:/ipfs/QmUGGfVwVhaHr5kS4177yKKYiLYzi5qZpkEmvYxBZqazxf"],"license":"BUSL-1.1"},"src/contracts/slasher/BaseSlasher.sol":{"keccak256":"0x190e5dce196a061bdad42468c52e9f5b0eb7810cd7d0c19f04d6a2e94984f1b6","urls":["bzz-raw://07ca08d0cd43c2fe5d54a5577f6bdd522ced410f5d3a52e764deaa7ba26b5f06","dweb:/ipfs/QmZe3PiMKBQKWcwodaLupragdqxPjgS4v1qMC7RXau8hDF"],"license":"BUSL-1.1"},"src/contracts/slasher/Slasher.sol":{"keccak256":"0xeee0cb25fad58d496fdcc641d852d11bae06e6ceed5230ae21150964175c494f","urls":["bzz-raw://34aa27d21246a1bcee0b6a2afa8d9d613441156362430392f75d176511d58c61","dweb:/ipfs/Qmf53Y3zdGfH4PU2zpSGeHZ8mMLzLXCtmkQrG5mnVJECQ3"],"license":"BUSL-1.1"},"src/contracts/slasher/VetoSlasher.sol":{"keccak256":"0xeccc8128de5e1ad499c067feac1c526638fbbac1a18b96726fc7507969fd5897","urls":["bzz-raw://cdfcf281338423625acbccdf8810115b258ef7cfe4aa3c10b8911ead1aa85429","dweb:/ipfs/QmZFsDvZXpkFkx4PHcDXAVPN3ZCAahbSVfYpSVrMBvbt4k"],"license":"BUSL-1.1"},"src/contracts/vault/Vault.sol":{"keccak256":"0x7ee6dbf060c45d6eba95315f4ac0b3b467dd9c4999b84c31d6f66d4d8b53a116","urls":["bzz-raw://301948b8ea522db292aa2722ba42def3911dae95f0b376f7023c3fef470f8676","dweb:/ipfs/QmSDbP2HdzhDAzstr8Zz5isEAcSkma8ABc5UwPsoazaumZ"],"license":"BUSL-1.1"},"src/contracts/vault/VaultStorage.sol":{"keccak256":"0x57db25b127d77ea3472de53e3a4af3354399655b9268638b99ca5925fa364a56","urls":["bzz-raw://aa763d9a6ec508ae3abfb8228b72b9fd9525279e5135d4962e79ff059feb1173","dweb:/ipfs/QmcbDR6E9wyEpu6V2FkEC4hnWy47zXA9LSKJde6zSGd33Q"],"license":"BUSL-1.1"},"src/interfaces/common/IEntity.sol":{"keccak256":"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21","urls":["bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b","dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv"],"license":"MIT"},"src/interfaces/common/IMigratableEntity.sol":{"keccak256":"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4","urls":["bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c","dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds"],"license":"MIT"},"src/interfaces/common/IRegistry.sol":{"keccak256":"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb","urls":["bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014","dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK"],"license":"MIT"},"src/interfaces/common/IStaticDelegateCallable.sol":{"keccak256":"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5","urls":["bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516","dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi"],"license":"MIT"},"src/interfaces/delegator/IBaseDelegator.sol":{"keccak256":"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee","urls":["bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2","dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8"],"license":"MIT"},"src/interfaces/delegator/IDelegatorHook.sol":{"keccak256":"0xc51aa8d7d1f6c8043ee819b7aeb86da0e993912e1442098df897e299f01f9f46","urls":["bzz-raw://adddf5cb2ba282aeb576b26efb28640f865a1721cc9b6eee8b3ee0457a2c9780","dweb:/ipfs/QmNYgAmnLRwWZbhTuQhZs9rx4zcme1df5mEepkrniorSoW"],"license":"MIT"},"src/interfaces/delegator/IFullRestakeDelegator.sol":{"keccak256":"0xa3c8cb2e45d4d8ce90e95263bea40c01dc400f05ad65bc29597d878606be5e7d","urls":["bzz-raw://782cf5e201aa4cca037ebafd3807a68ff1cc721d5b8416a35244db0d0607369e","dweb:/ipfs/QmQkJks6x7CKndeTPa9LxgTNygD5uEi7obhADhpq1Lsr9A"],"license":"MIT"},"src/interfaces/delegator/INetworkRestakeDelegator.sol":{"keccak256":"0xe7030fe30389a147fd710e3436ec346b4842695fd3e65a81b95375c9f1d633fc","urls":["bzz-raw://739c7e66d301778054f5c90bee45ec9438f68afba8a03eaaac52064c73b115ad","dweb:/ipfs/QmfZ2ytKcTykAc76nxhg8ikUXV8NdBpetqb8W4YWPcox1Z"],"license":"MIT"},"src/interfaces/delegator/IOperatorNetworkSpecificDelegator.sol":{"keccak256":"0x74b95e64d29769202d45dd277bb830f623ff3d41ce77b80ce3ee4e318a5c71ec","urls":["bzz-raw://e512b903aae5c1b8a028c6e3f4f6223b5cb5d704503cfa6bd37b5346868f5c20","dweb:/ipfs/QmZim9YExsPWtyxyeui993HTKAEmrg8MUcSkZ77Gp2JcuZ"],"license":"MIT"},"src/interfaces/delegator/IOperatorSpecificDelegator.sol":{"keccak256":"0x72075cab585dc17240cc3e32bc99b92f0d5627ddd988fed680e3e1a52d5a01e4","urls":["bzz-raw://7448bc90699409ae61d85216b5efc2143a37f0f73354be2aea993bc54afca441","dweb:/ipfs/QmXE4gAxM8pHosZK8mcTcj17puBx484meDCcmrDePskGHZ"],"license":"MIT"},"src/interfaces/service/INetworkMiddlewareService.sol":{"keccak256":"0x347afc7fcf1fbcdb96d66162070ef6c78aed27b3af2c1d5dfb4e511840631783","urls":["bzz-raw://2d90b8ceb495159e8e4e95d76447719dd166443f67dfabdd942846162071595c","dweb:/ipfs/QmVVuiAWYx92T6vBvNMKZfTvraCf1fa16BsUKkdNs3hdHA"],"license":"MIT"},"src/interfaces/service/IOptInService.sol":{"keccak256":"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a","urls":["bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337","dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24"],"license":"MIT"},"src/interfaces/slasher/IBaseSlasher.sol":{"keccak256":"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404","urls":["bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf","dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx"],"license":"MIT"},"src/interfaces/slasher/IBurner.sol":{"keccak256":"0xaf495dacc19ae0b3c787ba8021c5944927d70261536addd234d7dab146158c2b","urls":["bzz-raw://9b3cc66251008be6ff9fc8b11ecc6831d5a9dca49a3fe9817fcd970253c1d447","dweb:/ipfs/QmVxfb9ALGdF9W3SN2h41gQbUct6tawvu5bw4K89kFQ4HW"],"license":"MIT"},"src/interfaces/slasher/ISlasher.sol":{"keccak256":"0x34d226d67a3d5e16571f2fac91a8b9773551bcc41c88a96279669dd78d192625","urls":["bzz-raw://7a6e8c1462ee4a1b0f745414be043c09012ea676613790aba004b06c85c980d1","dweb:/ipfs/QmadjNEbHKRthtA1EeNy3Kg2sXpejH2KBeHm8QZtBPvXbJ"],"license":"MIT"},"src/interfaces/slasher/IVetoSlasher.sol":{"keccak256":"0xdf7edd04a4f36e9aec3a15241dcb6b6315b2e64927b12710c2c410d571fc55e9","urls":["bzz-raw://c4be6ac339c2ebf230fed65363f036784224095d0cd0f3f2d01d64d6e0da9508","dweb:/ipfs/QmRSMbpfaHExqrzUA8vYZMYZWh6eQW1KX9JKJSLdgronfg"],"license":"MIT"},"src/interfaces/vault/IVault.sol":{"keccak256":"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235","urls":["bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9","dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R"],"license":"MIT"},"src/interfaces/vault/IVaultStorage.sol":{"keccak256":"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22","urls":["bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e","dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6"],"license":"MIT"}},"version":1},"id":91} \ No newline at end of file diff --git a/out/SlasherHints.sol/VetoSlasherHints.json b/out/SlasherHints.sol/VetoSlasherHints.json index bb433b08..ed953f27 100644 --- a/out/SlasherHints.sol/VetoSlasherHints.json +++ b/out/SlasherHints.sol/VetoSlasherHints.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"baseSlasherHints","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"BASE_SLASHER_HINTS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"BURNER_GAS_LIMIT","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"BURNER_RESERVE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"NETWORK_MIDDLEWARE_SERVICE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"NETWORK_REGISTRY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"TYPE","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"VAULT_FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"cumulativeSlash","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"cumulativeSlashAt","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"executeSlash","inputs":[{"name":"slashIndex","type":"uint256","internalType":"uint256"},{"name":"hints","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"slashedAmount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"executeSlashHints","inputs":[{"name":"slasher","type":"address","internalType":"address"},{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"captureTimestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isBurnerHook","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"latestSlashedCaptureTimestamp","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"value","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"requestSlash","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","internalType":"uint48"},{"name":"hints","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"slashIndex","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"requestSlashHints","inputs":[{"name":"slasher","type":"address","internalType":"address"},{"name":"msgSender","type":"address","internalType":"address"},{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"resolver","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"resolverAt","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"resolverHint","inputs":[{"name":"slasher","type":"address","internalType":"address"},{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"resolverHintInternal","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"exists","type":"bool","internalType":"bool"},{"name":"hint","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"resolverSetEpochsDelay","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"setResolver","inputs":[{"name":"identifier","type":"uint96","internalType":"uint96"},{"name":"resolver_","type":"address","internalType":"address"},{"name":"hints","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setResolverHints","inputs":[{"name":"slasher","type":"address","internalType":"address"},{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"slashRequests","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","internalType":"uint48"},{"name":"vetoDeadline","type":"uint48","internalType":"uint48"},{"name":"completed","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"slashRequestsLength","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"slashableStake","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"captureTimestamp","type":"uint48","internalType":"uint48"},{"name":"hints","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"staticDelegateCall","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"vault","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"vetoDuration","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"vetoSlash","inputs":[{"name":"slashIndex","type":"uint256","internalType":"uint256"},{"name":"hints","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"vetoSlashHints","inputs":[{"name":"slasher","type":"address","internalType":"address"},{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"captureTimestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"event","name":"ExecuteSlash","inputs":[{"name":"slashIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"slashedAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"RequestSlash","inputs":[{"name":"slashIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"slashAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","indexed":false,"internalType":"uint48"},{"name":"vetoDeadline","type":"uint48","indexed":false,"internalType":"uint48"}],"anonymous":false},{"type":"event","name":"SetResolver","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"resolver","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"VetoSlash","inputs":[{"name":"slashIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"resolver","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AlreadySet","inputs":[]},{"type":"error","name":"CheckpointUnorderedInsertion","inputs":[]},{"type":"error","name":"ExternalCall","inputs":[]},{"type":"error","name":"InsufficientBurnerGas","inputs":[]},{"type":"error","name":"InsufficientSlash","inputs":[]},{"type":"error","name":"InvalidCaptureTimestamp","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"InvalidResolverSetEpochsDelay","inputs":[]},{"type":"error","name":"InvalidVetoDuration","inputs":[]},{"type":"error","name":"NoBurner","inputs":[]},{"type":"error","name":"NoResolver","inputs":[]},{"type":"error","name":"NotInitialized","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"NotNetwork","inputs":[]},{"type":"error","name":"NotNetworkMiddleware","inputs":[]},{"type":"error","name":"NotResolver","inputs":[]},{"type":"error","name":"NotVault","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SlashPeriodEnded","inputs":[]},{"type":"error","name":"SlashRequestCompleted","inputs":[]},{"type":"error","name":"SlashRequestNotExist","inputs":[]},{"type":"error","name":"VetoPeriodEnded","inputs":[]},{"type":"error","name":"VetoPeriodNotEnded","inputs":[]}],"bytecode":{"object":"0x6101603461017c576001600160401b0390601f61377c38819003918201601f1916830191848311848410176101805780849260209460405283398101031261017c5751906001600160a01b038216820361017c57306080527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff8260401c1661016a578080831603610125575b835f60a0525f60c0525f60e052610100905f8252610120905f8252610140908152604051916135e79384610195853960805184610b66015260a0518461047b015260c0518481816115860152612c5a015260e0518481816102e801526122ba0152518381816104370152612444015251828181610c7801526115dc015251818181610806015281816119140152611d090152f35b6001600160401b031990911681179091556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f8080610091565b60405163f92ee8a960e01b8152600490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c80622a087514610213578063103f29071461020e5780631a2be2c4146102095780631dd5f60014610204578063267de1f3146101ff5780632964f8dc146101fa5780632c9d45b3146101f55780632dd31000146101f057806331ce4dfe146101eb57806334d098ea146101e6578063439fab91146101e1578063457821b7146101dc5780635264679b146101d7578063545ce389146101d257806369f78920146101cd5780638f42f9ab146101c85780638f82f931146101c35780639168f9d2146101be5780639a896551146101b95780639f86fd85146101b4578063a4ef9b4f146101af578063aa8e6489146101aa578063aab3595f146101a5578063b94c386e146101a0578063bb24fe8a1461019b578063bc6eac5b14610196578063c0cd7c3e14610191578063cd05b8a11461018c578063d5c24e1a14610187578063e054e08b14610182578063f9268d181461017d5763fbfa77cf14610178575f80fd5b611813565b6116a5565b611680565b611663565b61160b565b6115c7565b6115aa565b611567565b61121b565b6111c3565b611185565b611122565b61108e565b611003565b610bd8565b610b47565b610b2a565b610ae5565b61084f565b610835565b6107f1565b6106b9565b610668565b6105ff565b610466565b610422565b610406565b6103b1565b610397565b610317565b6102d3565b610261565b6001600160a01b0381160361022957565b5f80fd5b65ffffffffffff81160361022957565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b346102295760c0366003190112610229576102c56102b160043561028481610218565b61028f602435610218565b60643561029b81610218565b60a435916102a88361022d565b604435906118c9565b60405191829160208352602083019061023d565b0390f35b5f91031261022957565b34610229575f366003190112610229576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461022957604036600319011261022957602061036361035e60243561033c81610218565b6004355f526002845260405f209060018060a01b03165f5260205260405f2090565b6120d2565b604051908152f35b60609060031901126102295760043561038381610218565b90602435906044356103948161022d565b90565b34610229576102c56102b16103ab3661036b565b916119a0565b3461022957604036600319011261022957602065ffffffffffff6103fc6024356103da81610218565b6004355f526001845260405f209060018060a01b03165f5260205260405f2090565b5416604051908152f35b34610229575f366003190112610229576020604051614e208152f35b34610229575f366003190112610229576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610229575f366003190112610229576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b634e487b7160e01b5f52604160045260245ffd5b602081019081106001600160401b038211176104d957604052565b6104aa565b604081019081106001600160401b038211176104d957604052565b606081019081106001600160401b038211176104d957604052565b6001600160401b0381116104d957604052565b608081019081106001600160401b038211176104d957604052565b90601f801991011681019081106001600160401b038211176104d957604052565b6040519060c082018281106001600160401b038211176104d957604052565b6040519061058f826104f9565b565b6040519061058f826104de565b6001600160401b0381116104d957601f01601f191660200190565b81601f82011215610229578035906105d08261059e565b926105de6040519485610542565b8284526020838301011161022957815f926020809301838601378301015290565b346102295760603660031901126102295760243561061c8161022d565b604435906001600160401b0382116102295761065f61064160209336906004016105b9565b6004355f90815260068552604090206001600160a01b03939061214a565b16604051908152f35b34610229575f36600319011261022957602060ff5f5460a01c166040519015158152f35b9181601f84011215610229578235916001600160401b038311610229576020838186019501011161022957565b34610229576020366003190112610229576001600160401b03600435818111610229576106ea90369060040161068c565b5f80516020613592833981519152549260ff8460401c16159316801590816107e9575b60011490816107df575b1590816107d6575b506107c4575f80516020613592833981519152805467ffffffffffffffff1916600117905561075291836107a057612283565b61075857005b5f80516020613592833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f80516020613592833981519152805460ff60401b1916600160401b179055612283565b60405163f92ee8a960e01b8152600490fd5b9050155f61071f565b303b159150610717565b84915061070d565b34610229575f366003190112610229576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610229576102c56102b16108493661036b565b91611a24565b346102295760a0366003190112610229576004602435813561087082610218565b6064359161087d8361022d565b6084356001600160401b0381116102295761089b903690860161068c565b93906108a56123ed565b6108ae8461241c565b6108b6611ab6565b9480610acf575b50506108c8426125ff565b6108e26108db875465ffffffffffff1690565b8092611b17565b5f54909590610907906108fb906001600160a01b031681565b6001600160a01b031690565b958760206040988951928380926327f843b560e11b82525afa8015610aca576109469261093b925f92610a99575b50611a0c565b65ffffffffffff1690565b65ffffffffffff8416908110908115610a83575b50610a735761096f61097891518486886127da565b506044356124b3565b958615610a65576102c5610a3e878988887f3cb7f4ff6cecf74cee0eb9ae3ebf8933fa60a53014cce52f96da72a78dba8464896109bd8a6109b8426125ff565b611b17565b92600354978894610a0e6109cf610563565b8881526001600160a01b0385166020820152808b018a905265ffffffffffff8616606082015265ffffffffffff831660808201525f60a0820152611b59565b885197885265ffffffffffff938416602089015290921660408701526001600160a01b0316949081906060820190565b0390a4610a5760015f8051602061357283398151915255565b519081529081906020820190565b855163167f871760e31b8152fd5b8551631357ac9160e11b81528790fd5b9050610a9161093b426125ff565b11155f61095a565b610abc91925060203d602011610ac3575b610ab48183610542565b810190611b31565b905f610935565b503d610aaa565b6118a5565b610add929550810190611ac9565b925f806108bd565b34610229576080366003190112610229576102c56102b1600435610b0881610218565b604435610b1481610218565b60643591610b218361022d565b60243590611c8f565b34610229575f366003190112610229576020600354604051908152f35b3461022957604036600319011261022957602435610b648161022d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610bc65763ffffffff610bb16040926004355f526006602052835f206124e9565b91505083929192519215158352166020820152f35b604051637ca475e560e11b8152600490fd5b346102295760603660031901126102295760048035906bffffffffffffffffffffffff8216820361022957602435610c0f81610218565b6044356001600160401b03811161022957610c2d903690840161068c565b90610c366123ed565b610c3e611ab6565b5081610f9e575b5050604080516302910f8b60e31b8152338185019081526001600160a01b0395929491602091829082908190830103818a7f0000000000000000000000000000000000000000000000000000000000000000165afa908115610aca575f91610f71575b5015610f62575f54610ce3906001600160a01b0316936bffffffffffffffffffffffff166bffffffffffffffffffffffff193360601b161790565b95610cfe610cf9885f52600660205260405f2090565b61323a565b50949015610ef857610d1261093b426125ff565b65ffffffffffff9586161115610ec257610d3c610d37895f52600660205260405f2090565b6125c0565b505b610d616108fb6108fb6108fb610d5c8c5f52600660205260405f2090565b612e78565b91808716928303610dcd575b505050505050610db2907f7b0b759b513b299fd2811f51926dca8854222a675557e8d544ce0933bf5b7570925b516001600160a01b0390911681529081906020820190565b0390a2610dcb60015f8051602061357283398151915255565b005b610de48998959796985f52600660205260405f2090565b911692845163186a323160e21b815281818981885afa908115610aca575f91610ea5575b5081600554958751998a80926327f843b560e11b82525afa908115610aca5789610e6d610e7f977f7b0b759b513b299fd2811f51926dca8854222a675557e8d544ce0933bf5b75709c610e7495610db29d610e79985f92610e88575b50501690611dde565b9116611dff565b6125ff565b90613447565b82958495610d6d565b610e9e9250803d10610ac357610ab48183610542565b5f80610e64565b610ebc9150823d8411610ac357610ab48183610542565b5f610e08565b610ee06108fb6108fb6108fb610d5c8c5f52600660205260405f2090565b82871603610d3e57865163a741a04560e01b81528490fd5b5093949385169250508115610f54575091610db291610f4d7f7b0b759b513b299fd2811f51926dca8854222a675557e8d544ce0933bf5b757094610f44875f52600660205260405f2090565b610e79426125ff565b5050610d9a565b825163a741a04560e01b8152fd5b5083516323d53b9760e21b8152fd5b610f919150823d8411610f97575b610f898183610542565b810190611dca565b5f610ca8565b503d610f7f565b610faa91810190611ac9565b505f80610c45565b634e487b7160e01b5f52603260045260245ffd5b600354811015610ffe5760035f5260021b7fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b01905f90565b610fb2565b34610229576020366003190112610229576004356003548110156102295761102a90610fc6565b50805460018201546002830154600390930154604080519384526001600160a01b0390921660208401529082019290925265ffffffffffff808316606080840191909152603084901c90911660808301529190911c60ff16151560a082015260c090f35b34610229576040366003190112610229576004356110ab81610218565b6024356001600160401b038111610229575f916110cd8392369060040161068c565b90816040519283928337810184815203915af461111a6110eb611e0c565b9161110c60405193849215156020840152604080840152606083019061023d565b03601f198101835282610542565b805190602001fd5b34610229576102c56102b16111363661036b565b91611e6d565b906080600319830112610229576004359160243561115981610218565b916044356111668161022d565b91606435906001600160401b03821161022957610394916004016105b9565b346102295760206103636111be61119b3661113c565b939190925f526002865260405f209060018060a01b03165f5260205260405f2090565b612665565b346102295760206111df6111d63661113c565b929190916127da565b50604051908152f35b9060406003198301126102295760043591602435906001600160401b038211610229576112179160040161068c565b9091565b3461022957611229366111e8565b91906112336123ed565b61123b611f92565b9280611551575b505060035481101561153f5761125781610fc6565b50908154906112658261241c565b6003830180549365ffffffffffff9384861660018060a01b0361128a895183856119b7565b16151580611514575b806114fb575b6114e9576112af816112aa426125ff565b611a0c565b5f546112c5906108fb906001600160a01b031681565b96600460206040998a51928380926327f843b560e11b82525afa8015610aca5782915f916114ca575b50169116116114b957600183018054909861131993929188906001600160a01b0316910151926127da565b906113288160028501546124b3565b9687156114a85760601c60ff166114975792611450611443899461141b6114088b9687876102c59f6114168f9d8f9e6114569f61137286600160601b60ff60601b19825416179055565b8a54855461139491906001600160a01b0316885465ffffffffffff1691612a0a565b8a5485546113ad9189916001600160a01b031690612a8a565b8a5494546113cb906001600160a01b0316965465ffffffffffff1690565b976113d4610582565b9384526020840152818301525196879160208301919091604080606083019480518452602081015160208501520151910152565b03601f198101875286610542565b612bf6565b61143461142e855465ffffffffffff1690565b86612cff565b5494546001600160a01b031690565b915465ffffffffffff1690565b92612d7c565b81518381527f5cc28df3b54da9d06f805d87616ebf969c81310f2aa8369cb14ca50f815d411190602090a2610a5760015f8051602061357283398151915255565b8551633428e90760e01b8152600490fd5b865163167f871760e31b8152600490fd5b8551639ea153eb60e01b8152600490fd5b6114e3915060203d602011610ac357610ab48183610542565b5f6112ee565b60405163b62b15c760e01b8152600490fd5b5061150861093b426125ff565b868860301c1611611299565b506115386108fb61152c611527426125ff565b6119f0565b60208b015190856119b7565b1515611293565b604051637822972360e11b8152600490fd5b61155f929350810190611fb1565b905f80611242565b34610229575f3660031901126102295760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610229575f366003190112610229576020600554604051908152f35b34610229575f366003190112610229576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610229576040366003190112610229576024356001600160401b0381116102295761165161164060209236906004016105b9565b611649426125ff565b6004356119b7565b6040516001600160a01b039091168152f35b34610229575f366003190112610229576020604051620249f08152f35b34610229575f36600319011261022957602065ffffffffffff60045416604051908152f35b34610229576116b3366111e8565b906116bc6123ed565b6116c4612039565b91806117ff575b505060035482101561153f576116e082610fc6565b506003815491019182549165ffffffffffff9160018060a01b036117088251858716856119b7565b169182159182156117d6575b50506117c45733036117b25761172c61093b426125ff565b908260301c1611156117a15760601c60ff1661178f57805460ff60601b1916600160601b17905533907f7d3d269c851b72257a5194a401d151902e9be4347d555996dcff3ff86a077e925f80a3610dcb60015f8051602061357283398151915255565b604051633428e90760e01b8152600490fd5b60405162c457e560e81b8152600490fd5b604051635d154fe160e11b8152600490fd5b60405163dd1ebd9d60e01b8152600490fd5b6117f79250906108fb9160206117ee611527426125ff565b910151916119b7565b155f80611714565b61180c9250810190612052565b5f806116cb565b34610229575f366003190112610229575f546040516001600160a01b039091168152602090f35b81601f82011215610229578051906118518261059e565b9261185f6040519485610542565b8284526020838301011161022957815f9260208093018386015e8301015290565b906020828203126102295781516001600160401b03811161022957610394920161183a565b6040513d5f823e3d90fd5b604061039492602083525191602080820152019061023d565b604051632751749360e11b81526001600160a01b0391821660048201526024810192909252909116604482015265ffffffffffff9091166064820152606091905f81806084810103817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610aca575f9161197e575b5080516119565750565b61110c919250610394906040519061196d826104be565b8152604051928391602083016118b0565b61199a91503d805f833e6119928183610542565b810190611880565b5f61194c565b92916119ae91606094611e6d565b80516119565750565b5f9081526006602052604090206001600160a01b03926119d892909161214a565b1690565b634e487b7160e01b5f52601160045260245ffd5b65ffffffffffff9081165f190191908211611a0757565b6119dc565b65ffffffffffff9182169082160391908211611a0757565b611a4590939293611a386060958483611e6d565b92611136611527426125ff565b815115801590611aac575b611a58575050565b611a999293509061110c6103949260405192611a73846104de565b83526020830190815260405194859360208086015251604080860152608085019061023d565b9051838203603f1901606085015261023d565b5080511515611a50565b60405190611ac3826104be565b60608252565b906020828203126102295781356001600160401b03928382116102295701906020828203126102295760405192611aff846104be565b823590811161022957611b1292016105b9565b815290565b91909165ffffffffffff80809416911601918211611a0757565b9081602091031261022957516103948161022d565b634e487b7160e01b5f525f60045260245ffd5b600354600160401b8110156104d957806001611b789201600355610fc6565b919091611c3b578051825560208101516001830180546001600160a01b0319166001600160a01b039290921691909117905561058f91611c219060a090600390604085015160028201550192611bee65ffffffffffff606083015116859065ffffffffffff1665ffffffffffff19825416179055565b60808101516bffffffffffff00000000000085549160301b16906bffffffffffff00000000000019161784550151151590565b815460ff60601b191690151560601b60ff60601b16179055565b611b46565b906103949160208152611c5f825160606020840152608083019061023d565b9060606040611c7f602086015194601f199586868303018487015261023d565b940151928285030191015261023d565b919093925f606095611ca2838287611e6d565b94611d05611cbc611cb5611527426125ff565b8484611e6d565b604051632751749360e11b81526001600160a01b039384166004820152602481019490945291909516604483015265ffffffffffff909316606482015292839081906084820190565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa918215610aca575f92611da1575b50825115801590611d97575b8015611d8d575b611d5d57505050565b61110c939450906103949291611d71610582565b9283526020830152604082015260405192839160208301611c40565b5081511515611d54565b5080511515611d4d565b611db69192503d805f833e6119928183610542565b905f611d41565b5190811515820361022957565b908160209103126102295761039490611dbd565b81810292918115918404141715611a0757565b9060018201809211611a0757565b91908201809211611a0757565b3d15611e36573d90611e1d8261059e565b91611e2b6040519384610542565b82523d5f602084013e565b606090565b519063ffffffff8216820361022957565b9190826040910312610229576103946020611e6684611dbd565b9301611e3b565b92915f8060609565ffffffffffff60405194602096638f82f93160e01b88880152602487015216604485015260448452611ea684610527565b6040519384611ed387820192639f86fd8560e01b845230602484015260406044840152606483019061023d565b0394611ee7601f1996878101835282610542565b51915afa50611f05611ef7611e0c565b838082518301019101612631565b9015611f5857808380611f1d93518301019101611e4c565b9290611f2857505050565b61039492939450611f4c604051948592830191909163ffffffff6020820193169052565b03908101835282610542565b809150519182156102295701fd5b5f9081526002602090815260408083206001600160a01b03909416835292905220610394929190612665565b60405190611f9f826104f9565b60606040838281528260208201520152565b906020828203126102295781356001600160401b03928382116102295701906060828203126102295760405192611fe7846104f9565b82358181116102295782611ffc9185016105b9565b8452602083013581811161022957826120169185016105b9565b602085015260408301359081116102295761203192016105b9565b604082015290565b60405190612046826104de565b60606020838281520152565b906020828203126102295781356001600160401b03928382116102295701906040828203126102295760405192612088846104de565b8235818111610229578261209d9185016105b9565b84526020830135908111610229576120b592016105b9565b602082015290565b8054821015610ffe575f5260205f2001905f90565b6120db81612e78565b6001600160d01b038116156121005760016120f692016120bd565b90549060031b1c90565b50505f90565b908160209103126102295761039490611e3b565b5f19810191908211611a0757565b91908203918211611a0757565b90600163ffffffff80931601918211611a0757565b9180511561222e578060208061216593518301019101612106565b916121708382612eb8565b92612181845165ffffffffffff1690565b9065ffffffffffff808516921682811461221557821191826121c0575b50506121ae576103949250613346565b5050602001516001600160d01b031690565b9091506121cd835461211a565b63ffffffff8316149182156121e6575b50505f8061219e565b61220d9192506122016121fb61093b92612135565b85612eb8565b5165ffffffffffff1690565b115f806121dd565b50505050602091909101516001600160d01b0316905090565b5061039491613346565b91909160408184031261022957803561225081610218565b9260208201356001600160401b0381116102295761039492016105b9565b90816020910312610229575161039481610218565b61228f91810190612238565b6040516302910f8b60e31b81526001600160a01b0392831660048201819052929160209182816024817f000000000000000000000000000000000000000000000000000000000000000088165afa908115610aca575f916123d0575b50156123be5781612320600492612300612f0c565b5f80546001600160a01b0319166001600160a01b03891617905586612f99565b94604051928380926313c085b760e11b82525afa918215610aca575f92612391575b5050161580612387575b612375575161058f9015155f805460ff60a01b191691151560a01b60ff60a01b16919091179055565b60405163d2420f5960e01b8152600490fd5b508051151561234c565b6123b09250803d106123b7575b6123a88183610542565b81019061226e565b5f80612342565b503d61239e565b6040516362df054560e01b8152600490fd5b6123e79150833d8511610f9757610f898183610542565b5f6122eb565b5f80516020613572833981519152600281541461240a5760029055565b604051633ee5aeb560e01b8152600490fd5b604051635daf681960e11b815260609190911c60048201526001600160a01b036020826024817f000000000000000000000000000000000000000000000000000000000000000085165afa918215610aca575f92612492575b503391160361248057565b60405163227bf64d60e01b8152600490fd5b6124ac91925060203d6020116123b7576123a88183610542565b905f612475565b90808210156124c0575090565b905090565b906040516124d2816104de565b915465ffffffffffff8116835260301c6020830152565b908154905f829160058411612572575b6125049350846131d8565b90811561256657612525906125188361211a565b905f5260205f20016124c5565b9161255f6125566125506020612541875165ffffffffffff1690565b9601516001600160d01b031690565b9361211a565b63ffffffff1690565b6001939291565b50505f905f905f905f90565b919261257d8161309a565b8103908111611a075761250493855f5265ffffffffffff808360205f20015416908516105f146125ae5750916124f9565b9291506125ba90611df1565b906124f9565b906125ca82612e78565b91805480156125eb575f1901906125e182826120bd565b611c3b575f905555565b634e487b7160e01b5f52603160045260245ffd5b65ffffffffffff90818111612612571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b9190916040818403126102295761264781611dbd565b9260208201516001600160401b03811161022957610394920161183a565b91805115612727578060208061268093518301019101612106565b9161268b8382613294565b9261269c845165ffffffffffff1690565b9065ffffffffffff808516921682811461271b57821191826126d2575b50506126c9576103949250613289565b50506020015190565b9091506126df835461211a565b63ffffffff8316149182156126f8575b50505f806126b9565b61271391925061220161270d61093b92612135565b85613294565b115f806126ef565b50505050506020015190565b5061039491613289565b906020828203126102295781516001600160401b03928382116102295701906040828203126102295760405192612767846104de565b8251818111610229578261277c91850161183a565b84526020830151908111610229576120b5920161183a565b90816020910312610229575190565b9081526001600160a01b03909116602082015265ffffffffffff90911660408201526080606082018190526103949291019061023d565b926127e3612039565b908051806129f0575b50506127f7426125ff565b5f54909490612810906108fb906001600160a01b031681565b93604051956327f843b560e11b875260209687816004818a5afa8015610aca576128449261093b925f926129d85750611a0c565b65ffffffffffff82169081109081156129c1575b8115612990575b50612984578560049560405196878092630ce9b79360e41b82525afa948515610aca576128b19587915f91612967575b50845190604051808099819463e02f693760e01b8352878b8a600486016127a3565b03916001600160a01b03165afa938415610aca57612923955f95612926575b5092612918859361291e9361291896869a61290f61035e836128fa875f52600260205260405f2090565b9060018060a01b03165f5260205260405f2090565b95015192611f66565b90612128565b6124b3565b91565b61291e929550612918949193612954612918928a3d8c11612960575b61294c8183610542565b810190612794565b969350939194506128d0565b503d612942565b61297e9150823d84116123b7576123a88183610542565b5f61288f565b5050505050505f905f90565b90506129ba61093b6129ae876128fa875f52600160205260405f2090565b5465ffffffffffff1690565b115f61285f565b90506129cf61093b426125ff565b81101590612858565b610abc9192508a3d8c11610ac357610ab48183610542565b612a039250602080918301019101612731565b5f806127ec565b919091805f52600160205265ffffffffffff80612a3a8560405f209060018060a01b03165f5260205260405f2090565b541690831611612a4957505050565b61058f92612a71915f52600160205260405f209060018060a01b03165f5260205260405f2090565b9065ffffffffffff1665ffffffffffff19825416179055565b9190825f526002602052612ae261035e612ab78360405f209060018060a01b03165f5260205260405f2090565b92612ac1426125ff565b955f52600260205260405f209060018060a01b03165f5260205260405f2090565b918201809211611a07576001810190815415612b86575b612b028161323a565b509490835495612b11846120d2565b5081612b71575b5015612b505750505f198301928311611a075761058f92612b38916120bd565b90919082549060031b91821b915f19901b1916179055565b61058f94612b6a926001600160d01b039091169190613447565b5050613323565b65ffffffffffff83811691161490505f612b18565b612b8f826132f6565b612af9565b60606020610394938184526001600160401b0381511682850152015191604080820152019061023d565b919360a093610394969565ffffffffffff938552600180871b031660208501526040840152166060820152816080820152019061023d565b92939060046020612c136108fb6108fb5f5460018060a01b031690565b604051630ce9b79360e41b815292839182905afa908115610aca5761110c91612c91915f91612ce0575b506001600160a01b031693612c50610591565b6001600160401b037f000000000000000000000000000000000000000000000000000000000000000016815290602082015260405192839160208301612b94565b823b15610229575f94612cbc86926040519889978896879563724ab0f760e11b875260048701612bbe565b03925af18015610aca57612ccd5750565b80612cda61058f92610514565b806102c9565b612cf9915060203d6020116123b7576123a88183610542565b5f612c3d565b65ffffffffffff9160446020925f60018060a01b038154166040519687958694631c9e38c760e21b865260048601521660248401525af18015610aca57612d435750565b612d5b9060203d6020116129605761294c8183610542565b50565b8115612d68570490565b634e487b7160e01b5f52601260045260245ffd5b92905f549060ff8260a01c16612d94575b5050505050565b6040516313c085b760e11b815291602090839060049082906001600160a01b03165afa918215610aca575f92612e51575b5060405163065c1e0360e01b6020820190815260248201969096526001600160a01b039091166044820152606481019390935265ffffffffffff9091166084830152612e1e8260a481015b03601f198101845283610542565b6202a15c5a10612e3f575f928380935192620249f0f1505f80808080612d8d565b604051632153f33560e21b8152600490fd5b612e1e9250612e71612e109160203d6020116123b7576123a88183610542565b9250612dc5565b805480612e855750505f90565b5f19918183810111611a07575f5260205f2001015460301c90565b60405190612ead826104de565b5f6020838281520152565b612edd91612ed791612ec8612ea0565b50612ed1612ea0565b506120bd565b506124c5565b65ffffffffffff81511690602060018060d01b039101511660405191612f02836104de565b8252602082015290565b612f146133d2565b612f1c6133d2565b60015f8051602061357283398151915255565b60405190612f3c826104be565b5f8252565b809103906060821261022957602060405192612f5c846104f9565b12610229576040908151612f6f816104be565b612f7882611dbd565b815283526020810151612f8a8161022d565b60208401520151604082015290565b90600490612fa5612f2f565b508051612fbc602092838080948301019101612f41565b6040516327f843b560e11b815290949093849182906001600160a01b03165afa918215610aca575f9261307b575b50820190612ffe825165ffffffffffff1690565b65ffffffffffff91821691161015613069576040820160038151106130575761304d613033613053935165ffffffffffff1690565b65ffffffffffff1665ffffffffffff196004541617600455565b51600555565b5190565b6040516354f778f360e01b8152600490fd5b6040516367d5e3df60e11b8152600490fd5b816130939293503d8411610ac357610ab48183610542565b905f612fea565b80156131d3578061316c61316561315b61315161314761313d61313361312960016103949a5f908b60801c806131c7575b508060401c806131ba575b508060201c806131ad575b508060101c806131a0575b508060081c80613193575b508060041c80613186575b508060021c80613179575b50821c613172575b811c1b613122818b612d5e565b0160011c90565b613122818a612d5e565b6131228189612d5e565b6131228188612d5e565b6131228187612d5e565b6131228186612d5e565b6131228185612d5e565b8092612d5e565b906124b3565b8101613115565b600291509101905f61310d565b600491509101905f613102565b600891509101905f6130f7565b601091509101905f6130ec565b602091509101905f6130e1565b604091509101905f6130d6565b9150506080905f6130cb565b505f90565b91905b8382106131e85750505090565b909192808316906001818518811c8301809311611a0757855f5265ffffffffffff808460205f20015416908516105f14613227575050925b91906131db565b909493508101809111611a075791613220565b80548061324b5750505f905f905f90565b5f19908082810111611a0757613268925f5260205f2001016124c5565b9065ffffffffffff82511691602060018060d01b0391015116906001929190565b906120db9082613346565b906132b7612ed76132d8926132a7612ea0565b506132b0612ea0565b50846120bd565b91600165ffffffffffff845116936020828060d01b039101511691016120bd565b905490604051926132e8846104de565b835260031b1c602082015290565b8054600160401b8110156104d957613313916001820181556120bd565b8154905f199060031b1b19169055565b90815491600160401b8310156104d95782612b3891600161058f950181556120bd565b908154905f829160058411613384575b6133619350846131d8565b8061336c5750505f90565b6133759061211a565b905f5260205f20015460301c90565b919261338f8161309a565b8103908111611a075761336193855f5265ffffffffffff808360205f20015416908516105f146133c0575091613356565b9291506133cc90611df1565b90613356565b60ff5f805160206135928339815191525460401c16156133ee57565b604051631afcd79f60e31b8152600490fd5b8054600160401b8110156104d95761341d916001820181556120bd565b611c3b57815160209092015160301b65ffffffffffff191665ffffffffffff909216919091179055565b8054929392919082156135485761347361346e6134638561211a565b835f5260205f200190565b6124c5565b90613484825165ffffffffffff1690565b65ffffffffffff84811691168110613536576134fa9460209488926134b261093b875165ffffffffffff1690565b036134fe57506134ec926134c86134d39261211a565b905f5260205f200190565b9065ffffffffffff82549181199060301b169116179055565b01516001600160d01b031690565b9190565b9150506135319161351e613510610591565b65ffffffffffff9093168352565b6001600160d01b03881682860152613400565b6134ec565b604051632520601d60e01b8152600490fd5b61356c9250613558613510610591565b6001600160d01b0385166020830152613400565b5f919056fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a264697066735822122076922ea6e3ad8fc57d79a3decbb6a526695968650fb8ee8d88110f7794fd659264736f6c63430008190033","sourceMap":"3563:3596:84:-:0;;;;-1:-1:-1;;;;;3563:3596:84;;;;;;;;;;-1:-1:-1;;3563:3596:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3563:3596:84;;;;;;348:4:82;332:21;;8837:64:25;3563:3596:84;;;;;;;;;7896:76:25;;3563:3596:84;;;;7985:34:25;7981:146;;-1:-1:-1;525:17:69;-1:-1:-1;525:17:69;;-1:-1:-1;552:12:69;;-1:-1:-1;2353:28:92;;2391:53;;-1:-1:-1;2391:53:92;;1620:34:94;;-1:-1:-1;1620:34:94;;3901:37:84;;;;3563:3596;;;;;;;;;332:21:82;3563:3596:84;;;;;525:17:69;3563:3596:84;;;;;552:12:69;3563:3596:84;;;;;;;;;;2353:28:92;3563:3596:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7981:146:25;-1:-1:-1;;;;;;3563:3596:84;;;;;;;;;;;;;8087:29:25;;3563:3596:84;;8087:29:25;7981:146;;;;;7896:76;3563:3596:84;;-1:-1:-1;;;7938:23:25;;;;;3563:3596:84;-1:-1:-1;3563:3596:84;;;;;;-1:-1:-1;3563:3596:84;;;;;-1:-1:-1;3563:3596:84","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c80622a087514610213578063103f29071461020e5780631a2be2c4146102095780631dd5f60014610204578063267de1f3146101ff5780632964f8dc146101fa5780632c9d45b3146101f55780632dd31000146101f057806331ce4dfe146101eb57806334d098ea146101e6578063439fab91146101e1578063457821b7146101dc5780635264679b146101d7578063545ce389146101d257806369f78920146101cd5780638f42f9ab146101c85780638f82f931146101c35780639168f9d2146101be5780639a896551146101b95780639f86fd85146101b4578063a4ef9b4f146101af578063aa8e6489146101aa578063aab3595f146101a5578063b94c386e146101a0578063bb24fe8a1461019b578063bc6eac5b14610196578063c0cd7c3e14610191578063cd05b8a11461018c578063d5c24e1a14610187578063e054e08b14610182578063f9268d181461017d5763fbfa77cf14610178575f80fd5b611813565b6116a5565b611680565b611663565b61160b565b6115c7565b6115aa565b611567565b61121b565b6111c3565b611185565b611122565b61108e565b611003565b610bd8565b610b47565b610b2a565b610ae5565b61084f565b610835565b6107f1565b6106b9565b610668565b6105ff565b610466565b610422565b610406565b6103b1565b610397565b610317565b6102d3565b610261565b6001600160a01b0381160361022957565b5f80fd5b65ffffffffffff81160361022957565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b346102295760c0366003190112610229576102c56102b160043561028481610218565b61028f602435610218565b60643561029b81610218565b60a435916102a88361022d565b604435906118c9565b60405191829160208352602083019061023d565b0390f35b5f91031261022957565b34610229575f366003190112610229576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461022957604036600319011261022957602061036361035e60243561033c81610218565b6004355f526002845260405f209060018060a01b03165f5260205260405f2090565b6120d2565b604051908152f35b60609060031901126102295760043561038381610218565b90602435906044356103948161022d565b90565b34610229576102c56102b16103ab3661036b565b916119a0565b3461022957604036600319011261022957602065ffffffffffff6103fc6024356103da81610218565b6004355f526001845260405f209060018060a01b03165f5260205260405f2090565b5416604051908152f35b34610229575f366003190112610229576020604051614e208152f35b34610229575f366003190112610229576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610229575f366003190112610229576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b634e487b7160e01b5f52604160045260245ffd5b602081019081106001600160401b038211176104d957604052565b6104aa565b604081019081106001600160401b038211176104d957604052565b606081019081106001600160401b038211176104d957604052565b6001600160401b0381116104d957604052565b608081019081106001600160401b038211176104d957604052565b90601f801991011681019081106001600160401b038211176104d957604052565b6040519060c082018281106001600160401b038211176104d957604052565b6040519061058f826104f9565b565b6040519061058f826104de565b6001600160401b0381116104d957601f01601f191660200190565b81601f82011215610229578035906105d08261059e565b926105de6040519485610542565b8284526020838301011161022957815f926020809301838601378301015290565b346102295760603660031901126102295760243561061c8161022d565b604435906001600160401b0382116102295761065f61064160209336906004016105b9565b6004355f90815260068552604090206001600160a01b03939061214a565b16604051908152f35b34610229575f36600319011261022957602060ff5f5460a01c166040519015158152f35b9181601f84011215610229578235916001600160401b038311610229576020838186019501011161022957565b34610229576020366003190112610229576001600160401b03600435818111610229576106ea90369060040161068c565b5f80516020613592833981519152549260ff8460401c16159316801590816107e9575b60011490816107df575b1590816107d6575b506107c4575f80516020613592833981519152805467ffffffffffffffff1916600117905561075291836107a057612283565b61075857005b5f80516020613592833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f80516020613592833981519152805460ff60401b1916600160401b179055612283565b60405163f92ee8a960e01b8152600490fd5b9050155f61071f565b303b159150610717565b84915061070d565b34610229575f366003190112610229576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610229576102c56102b16108493661036b565b91611a24565b346102295760a0366003190112610229576004602435813561087082610218565b6064359161087d8361022d565b6084356001600160401b0381116102295761089b903690860161068c565b93906108a56123ed565b6108ae8461241c565b6108b6611ab6565b9480610acf575b50506108c8426125ff565b6108e26108db875465ffffffffffff1690565b8092611b17565b5f54909590610907906108fb906001600160a01b031681565b6001600160a01b031690565b958760206040988951928380926327f843b560e11b82525afa8015610aca576109469261093b925f92610a99575b50611a0c565b65ffffffffffff1690565b65ffffffffffff8416908110908115610a83575b50610a735761096f61097891518486886127da565b506044356124b3565b958615610a65576102c5610a3e878988887f3cb7f4ff6cecf74cee0eb9ae3ebf8933fa60a53014cce52f96da72a78dba8464896109bd8a6109b8426125ff565b611b17565b92600354978894610a0e6109cf610563565b8881526001600160a01b0385166020820152808b018a905265ffffffffffff8616606082015265ffffffffffff831660808201525f60a0820152611b59565b885197885265ffffffffffff938416602089015290921660408701526001600160a01b0316949081906060820190565b0390a4610a5760015f8051602061357283398151915255565b519081529081906020820190565b855163167f871760e31b8152fd5b8551631357ac9160e11b81528790fd5b9050610a9161093b426125ff565b11155f61095a565b610abc91925060203d602011610ac3575b610ab48183610542565b810190611b31565b905f610935565b503d610aaa565b6118a5565b610add929550810190611ac9565b925f806108bd565b34610229576080366003190112610229576102c56102b1600435610b0881610218565b604435610b1481610218565b60643591610b218361022d565b60243590611c8f565b34610229575f366003190112610229576020600354604051908152f35b3461022957604036600319011261022957602435610b648161022d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610bc65763ffffffff610bb16040926004355f526006602052835f206124e9565b91505083929192519215158352166020820152f35b604051637ca475e560e11b8152600490fd5b346102295760603660031901126102295760048035906bffffffffffffffffffffffff8216820361022957602435610c0f81610218565b6044356001600160401b03811161022957610c2d903690840161068c565b90610c366123ed565b610c3e611ab6565b5081610f9e575b5050604080516302910f8b60e31b8152338185019081526001600160a01b0395929491602091829082908190830103818a7f0000000000000000000000000000000000000000000000000000000000000000165afa908115610aca575f91610f71575b5015610f62575f54610ce3906001600160a01b0316936bffffffffffffffffffffffff166bffffffffffffffffffffffff193360601b161790565b95610cfe610cf9885f52600660205260405f2090565b61323a565b50949015610ef857610d1261093b426125ff565b65ffffffffffff9586161115610ec257610d3c610d37895f52600660205260405f2090565b6125c0565b505b610d616108fb6108fb6108fb610d5c8c5f52600660205260405f2090565b612e78565b91808716928303610dcd575b505050505050610db2907f7b0b759b513b299fd2811f51926dca8854222a675557e8d544ce0933bf5b7570925b516001600160a01b0390911681529081906020820190565b0390a2610dcb60015f8051602061357283398151915255565b005b610de48998959796985f52600660205260405f2090565b911692845163186a323160e21b815281818981885afa908115610aca575f91610ea5575b5081600554958751998a80926327f843b560e11b82525afa908115610aca5789610e6d610e7f977f7b0b759b513b299fd2811f51926dca8854222a675557e8d544ce0933bf5b75709c610e7495610db29d610e79985f92610e88575b50501690611dde565b9116611dff565b6125ff565b90613447565b82958495610d6d565b610e9e9250803d10610ac357610ab48183610542565b5f80610e64565b610ebc9150823d8411610ac357610ab48183610542565b5f610e08565b610ee06108fb6108fb6108fb610d5c8c5f52600660205260405f2090565b82871603610d3e57865163a741a04560e01b81528490fd5b5093949385169250508115610f54575091610db291610f4d7f7b0b759b513b299fd2811f51926dca8854222a675557e8d544ce0933bf5b757094610f44875f52600660205260405f2090565b610e79426125ff565b5050610d9a565b825163a741a04560e01b8152fd5b5083516323d53b9760e21b8152fd5b610f919150823d8411610f97575b610f898183610542565b810190611dca565b5f610ca8565b503d610f7f565b610faa91810190611ac9565b505f80610c45565b634e487b7160e01b5f52603260045260245ffd5b600354811015610ffe5760035f5260021b7fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b01905f90565b610fb2565b34610229576020366003190112610229576004356003548110156102295761102a90610fc6565b50805460018201546002830154600390930154604080519384526001600160a01b0390921660208401529082019290925265ffffffffffff808316606080840191909152603084901c90911660808301529190911c60ff16151560a082015260c090f35b34610229576040366003190112610229576004356110ab81610218565b6024356001600160401b038111610229575f916110cd8392369060040161068c565b90816040519283928337810184815203915af461111a6110eb611e0c565b9161110c60405193849215156020840152604080840152606083019061023d565b03601f198101835282610542565b805190602001fd5b34610229576102c56102b16111363661036b565b91611e6d565b906080600319830112610229576004359160243561115981610218565b916044356111668161022d565b91606435906001600160401b03821161022957610394916004016105b9565b346102295760206103636111be61119b3661113c565b939190925f526002865260405f209060018060a01b03165f5260205260405f2090565b612665565b346102295760206111df6111d63661113c565b929190916127da565b50604051908152f35b9060406003198301126102295760043591602435906001600160401b038211610229576112179160040161068c565b9091565b3461022957611229366111e8565b91906112336123ed565b61123b611f92565b9280611551575b505060035481101561153f5761125781610fc6565b50908154906112658261241c565b6003830180549365ffffffffffff9384861660018060a01b0361128a895183856119b7565b16151580611514575b806114fb575b6114e9576112af816112aa426125ff565b611a0c565b5f546112c5906108fb906001600160a01b031681565b96600460206040998a51928380926327f843b560e11b82525afa8015610aca5782915f916114ca575b50169116116114b957600183018054909861131993929188906001600160a01b0316910151926127da565b906113288160028501546124b3565b9687156114a85760601c60ff166114975792611450611443899461141b6114088b9687876102c59f6114168f9d8f9e6114569f61137286600160601b60ff60601b19825416179055565b8a54855461139491906001600160a01b0316885465ffffffffffff1691612a0a565b8a5485546113ad9189916001600160a01b031690612a8a565b8a5494546113cb906001600160a01b0316965465ffffffffffff1690565b976113d4610582565b9384526020840152818301525196879160208301919091604080606083019480518452602081015160208501520151910152565b03601f198101875286610542565b612bf6565b61143461142e855465ffffffffffff1690565b86612cff565b5494546001600160a01b031690565b915465ffffffffffff1690565b92612d7c565b81518381527f5cc28df3b54da9d06f805d87616ebf969c81310f2aa8369cb14ca50f815d411190602090a2610a5760015f8051602061357283398151915255565b8551633428e90760e01b8152600490fd5b865163167f871760e31b8152600490fd5b8551639ea153eb60e01b8152600490fd5b6114e3915060203d602011610ac357610ab48183610542565b5f6112ee565b60405163b62b15c760e01b8152600490fd5b5061150861093b426125ff565b868860301c1611611299565b506115386108fb61152c611527426125ff565b6119f0565b60208b015190856119b7565b1515611293565b604051637822972360e11b8152600490fd5b61155f929350810190611fb1565b905f80611242565b34610229575f3660031901126102295760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610229575f366003190112610229576020600554604051908152f35b34610229575f366003190112610229576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610229576040366003190112610229576024356001600160401b0381116102295761165161164060209236906004016105b9565b611649426125ff565b6004356119b7565b6040516001600160a01b039091168152f35b34610229575f366003190112610229576020604051620249f08152f35b34610229575f36600319011261022957602065ffffffffffff60045416604051908152f35b34610229576116b3366111e8565b906116bc6123ed565b6116c4612039565b91806117ff575b505060035482101561153f576116e082610fc6565b506003815491019182549165ffffffffffff9160018060a01b036117088251858716856119b7565b169182159182156117d6575b50506117c45733036117b25761172c61093b426125ff565b908260301c1611156117a15760601c60ff1661178f57805460ff60601b1916600160601b17905533907f7d3d269c851b72257a5194a401d151902e9be4347d555996dcff3ff86a077e925f80a3610dcb60015f8051602061357283398151915255565b604051633428e90760e01b8152600490fd5b60405162c457e560e81b8152600490fd5b604051635d154fe160e11b8152600490fd5b60405163dd1ebd9d60e01b8152600490fd5b6117f79250906108fb9160206117ee611527426125ff565b910151916119b7565b155f80611714565b61180c9250810190612052565b5f806116cb565b34610229575f366003190112610229575f546040516001600160a01b039091168152602090f35b81601f82011215610229578051906118518261059e565b9261185f6040519485610542565b8284526020838301011161022957815f9260208093018386015e8301015290565b906020828203126102295781516001600160401b03811161022957610394920161183a565b6040513d5f823e3d90fd5b604061039492602083525191602080820152019061023d565b604051632751749360e11b81526001600160a01b0391821660048201526024810192909252909116604482015265ffffffffffff9091166064820152606091905f81806084810103817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610aca575f9161197e575b5080516119565750565b61110c919250610394906040519061196d826104be565b8152604051928391602083016118b0565b61199a91503d805f833e6119928183610542565b810190611880565b5f61194c565b92916119ae91606094611e6d565b80516119565750565b5f9081526006602052604090206001600160a01b03926119d892909161214a565b1690565b634e487b7160e01b5f52601160045260245ffd5b65ffffffffffff9081165f190191908211611a0757565b6119dc565b65ffffffffffff9182169082160391908211611a0757565b611a4590939293611a386060958483611e6d565b92611136611527426125ff565b815115801590611aac575b611a58575050565b611a999293509061110c6103949260405192611a73846104de565b83526020830190815260405194859360208086015251604080860152608085019061023d565b9051838203603f1901606085015261023d565b5080511515611a50565b60405190611ac3826104be565b60608252565b906020828203126102295781356001600160401b03928382116102295701906020828203126102295760405192611aff846104be565b823590811161022957611b1292016105b9565b815290565b91909165ffffffffffff80809416911601918211611a0757565b9081602091031261022957516103948161022d565b634e487b7160e01b5f525f60045260245ffd5b600354600160401b8110156104d957806001611b789201600355610fc6565b919091611c3b578051825560208101516001830180546001600160a01b0319166001600160a01b039290921691909117905561058f91611c219060a090600390604085015160028201550192611bee65ffffffffffff606083015116859065ffffffffffff1665ffffffffffff19825416179055565b60808101516bffffffffffff00000000000085549160301b16906bffffffffffff00000000000019161784550151151590565b815460ff60601b191690151560601b60ff60601b16179055565b611b46565b906103949160208152611c5f825160606020840152608083019061023d565b9060606040611c7f602086015194601f199586868303018487015261023d565b940151928285030191015261023d565b919093925f606095611ca2838287611e6d565b94611d05611cbc611cb5611527426125ff565b8484611e6d565b604051632751749360e11b81526001600160a01b039384166004820152602481019490945291909516604483015265ffffffffffff909316606482015292839081906084820190565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa918215610aca575f92611da1575b50825115801590611d97575b8015611d8d575b611d5d57505050565b61110c939450906103949291611d71610582565b9283526020830152604082015260405192839160208301611c40565b5081511515611d54565b5080511515611d4d565b611db69192503d805f833e6119928183610542565b905f611d41565b5190811515820361022957565b908160209103126102295761039490611dbd565b81810292918115918404141715611a0757565b9060018201809211611a0757565b91908201809211611a0757565b3d15611e36573d90611e1d8261059e565b91611e2b6040519384610542565b82523d5f602084013e565b606090565b519063ffffffff8216820361022957565b9190826040910312610229576103946020611e6684611dbd565b9301611e3b565b92915f8060609565ffffffffffff60405194602096638f82f93160e01b88880152602487015216604485015260448452611ea684610527565b6040519384611ed387820192639f86fd8560e01b845230602484015260406044840152606483019061023d565b0394611ee7601f1996878101835282610542565b51915afa50611f05611ef7611e0c565b838082518301019101612631565b9015611f5857808380611f1d93518301019101611e4c565b9290611f2857505050565b61039492939450611f4c604051948592830191909163ffffffff6020820193169052565b03908101835282610542565b809150519182156102295701fd5b5f9081526002602090815260408083206001600160a01b03909416835292905220610394929190612665565b60405190611f9f826104f9565b60606040838281528260208201520152565b906020828203126102295781356001600160401b03928382116102295701906060828203126102295760405192611fe7846104f9565b82358181116102295782611ffc9185016105b9565b8452602083013581811161022957826120169185016105b9565b602085015260408301359081116102295761203192016105b9565b604082015290565b60405190612046826104de565b60606020838281520152565b906020828203126102295781356001600160401b03928382116102295701906040828203126102295760405192612088846104de565b8235818111610229578261209d9185016105b9565b84526020830135908111610229576120b592016105b9565b602082015290565b8054821015610ffe575f5260205f2001905f90565b6120db81612e78565b6001600160d01b038116156121005760016120f692016120bd565b90549060031b1c90565b50505f90565b908160209103126102295761039490611e3b565b5f19810191908211611a0757565b91908203918211611a0757565b90600163ffffffff80931601918211611a0757565b9180511561222e578060208061216593518301019101612106565b916121708382612eb8565b92612181845165ffffffffffff1690565b9065ffffffffffff808516921682811461221557821191826121c0575b50506121ae576103949250613346565b5050602001516001600160d01b031690565b9091506121cd835461211a565b63ffffffff8316149182156121e6575b50505f8061219e565b61220d9192506122016121fb61093b92612135565b85612eb8565b5165ffffffffffff1690565b115f806121dd565b50505050602091909101516001600160d01b0316905090565b5061039491613346565b91909160408184031261022957803561225081610218565b9260208201356001600160401b0381116102295761039492016105b9565b90816020910312610229575161039481610218565b61228f91810190612238565b6040516302910f8b60e31b81526001600160a01b0392831660048201819052929160209182816024817f000000000000000000000000000000000000000000000000000000000000000088165afa908115610aca575f916123d0575b50156123be5781612320600492612300612f0c565b5f80546001600160a01b0319166001600160a01b03891617905586612f99565b94604051928380926313c085b760e11b82525afa918215610aca575f92612391575b5050161580612387575b612375575161058f9015155f805460ff60a01b191691151560a01b60ff60a01b16919091179055565b60405163d2420f5960e01b8152600490fd5b508051151561234c565b6123b09250803d106123b7575b6123a88183610542565b81019061226e565b5f80612342565b503d61239e565b6040516362df054560e01b8152600490fd5b6123e79150833d8511610f9757610f898183610542565b5f6122eb565b5f80516020613572833981519152600281541461240a5760029055565b604051633ee5aeb560e01b8152600490fd5b604051635daf681960e11b815260609190911c60048201526001600160a01b036020826024817f000000000000000000000000000000000000000000000000000000000000000085165afa918215610aca575f92612492575b503391160361248057565b60405163227bf64d60e01b8152600490fd5b6124ac91925060203d6020116123b7576123a88183610542565b905f612475565b90808210156124c0575090565b905090565b906040516124d2816104de565b915465ffffffffffff8116835260301c6020830152565b908154905f829160058411612572575b6125049350846131d8565b90811561256657612525906125188361211a565b905f5260205f20016124c5565b9161255f6125566125506020612541875165ffffffffffff1690565b9601516001600160d01b031690565b9361211a565b63ffffffff1690565b6001939291565b50505f905f905f905f90565b919261257d8161309a565b8103908111611a075761250493855f5265ffffffffffff808360205f20015416908516105f146125ae5750916124f9565b9291506125ba90611df1565b906124f9565b906125ca82612e78565b91805480156125eb575f1901906125e182826120bd565b611c3b575f905555565b634e487b7160e01b5f52603160045260245ffd5b65ffffffffffff90818111612612571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b9190916040818403126102295761264781611dbd565b9260208201516001600160401b03811161022957610394920161183a565b91805115612727578060208061268093518301019101612106565b9161268b8382613294565b9261269c845165ffffffffffff1690565b9065ffffffffffff808516921682811461271b57821191826126d2575b50506126c9576103949250613289565b50506020015190565b9091506126df835461211a565b63ffffffff8316149182156126f8575b50505f806126b9565b61271391925061220161270d61093b92612135565b85613294565b115f806126ef565b50505050506020015190565b5061039491613289565b906020828203126102295781516001600160401b03928382116102295701906040828203126102295760405192612767846104de565b8251818111610229578261277c91850161183a565b84526020830151908111610229576120b5920161183a565b90816020910312610229575190565b9081526001600160a01b03909116602082015265ffffffffffff90911660408201526080606082018190526103949291019061023d565b926127e3612039565b908051806129f0575b50506127f7426125ff565b5f54909490612810906108fb906001600160a01b031681565b93604051956327f843b560e11b875260209687816004818a5afa8015610aca576128449261093b925f926129d85750611a0c565b65ffffffffffff82169081109081156129c1575b8115612990575b50612984578560049560405196878092630ce9b79360e41b82525afa948515610aca576128b19587915f91612967575b50845190604051808099819463e02f693760e01b8352878b8a600486016127a3565b03916001600160a01b03165afa938415610aca57612923955f95612926575b5092612918859361291e9361291896869a61290f61035e836128fa875f52600260205260405f2090565b9060018060a01b03165f5260205260405f2090565b95015192611f66565b90612128565b6124b3565b91565b61291e929550612918949193612954612918928a3d8c11612960575b61294c8183610542565b810190612794565b969350939194506128d0565b503d612942565b61297e9150823d84116123b7576123a88183610542565b5f61288f565b5050505050505f905f90565b90506129ba61093b6129ae876128fa875f52600160205260405f2090565b5465ffffffffffff1690565b115f61285f565b90506129cf61093b426125ff565b81101590612858565b610abc9192508a3d8c11610ac357610ab48183610542565b612a039250602080918301019101612731565b5f806127ec565b919091805f52600160205265ffffffffffff80612a3a8560405f209060018060a01b03165f5260205260405f2090565b541690831611612a4957505050565b61058f92612a71915f52600160205260405f209060018060a01b03165f5260205260405f2090565b9065ffffffffffff1665ffffffffffff19825416179055565b9190825f526002602052612ae261035e612ab78360405f209060018060a01b03165f5260205260405f2090565b92612ac1426125ff565b955f52600260205260405f209060018060a01b03165f5260205260405f2090565b918201809211611a07576001810190815415612b86575b612b028161323a565b509490835495612b11846120d2565b5081612b71575b5015612b505750505f198301928311611a075761058f92612b38916120bd565b90919082549060031b91821b915f19901b1916179055565b61058f94612b6a926001600160d01b039091169190613447565b5050613323565b65ffffffffffff83811691161490505f612b18565b612b8f826132f6565b612af9565b60606020610394938184526001600160401b0381511682850152015191604080820152019061023d565b919360a093610394969565ffffffffffff938552600180871b031660208501526040840152166060820152816080820152019061023d565b92939060046020612c136108fb6108fb5f5460018060a01b031690565b604051630ce9b79360e41b815292839182905afa908115610aca5761110c91612c91915f91612ce0575b506001600160a01b031693612c50610591565b6001600160401b037f000000000000000000000000000000000000000000000000000000000000000016815290602082015260405192839160208301612b94565b823b15610229575f94612cbc86926040519889978896879563724ab0f760e11b875260048701612bbe565b03925af18015610aca57612ccd5750565b80612cda61058f92610514565b806102c9565b612cf9915060203d6020116123b7576123a88183610542565b5f612c3d565b65ffffffffffff9160446020925f60018060a01b038154166040519687958694631c9e38c760e21b865260048601521660248401525af18015610aca57612d435750565b612d5b9060203d6020116129605761294c8183610542565b50565b8115612d68570490565b634e487b7160e01b5f52601260045260245ffd5b92905f549060ff8260a01c16612d94575b5050505050565b6040516313c085b760e11b815291602090839060049082906001600160a01b03165afa918215610aca575f92612e51575b5060405163065c1e0360e01b6020820190815260248201969096526001600160a01b039091166044820152606481019390935265ffffffffffff9091166084830152612e1e8260a481015b03601f198101845283610542565b6202a15c5a10612e3f575f928380935192620249f0f1505f80808080612d8d565b604051632153f33560e21b8152600490fd5b612e1e9250612e71612e109160203d6020116123b7576123a88183610542565b9250612dc5565b805480612e855750505f90565b5f19918183810111611a07575f5260205f2001015460301c90565b60405190612ead826104de565b5f6020838281520152565b612edd91612ed791612ec8612ea0565b50612ed1612ea0565b506120bd565b506124c5565b65ffffffffffff81511690602060018060d01b039101511660405191612f02836104de565b8252602082015290565b612f146133d2565b612f1c6133d2565b60015f8051602061357283398151915255565b60405190612f3c826104be565b5f8252565b809103906060821261022957602060405192612f5c846104f9565b12610229576040908151612f6f816104be565b612f7882611dbd565b815283526020810151612f8a8161022d565b60208401520151604082015290565b90600490612fa5612f2f565b508051612fbc602092838080948301019101612f41565b6040516327f843b560e11b815290949093849182906001600160a01b03165afa918215610aca575f9261307b575b50820190612ffe825165ffffffffffff1690565b65ffffffffffff91821691161015613069576040820160038151106130575761304d613033613053935165ffffffffffff1690565b65ffffffffffff1665ffffffffffff196004541617600455565b51600555565b5190565b6040516354f778f360e01b8152600490fd5b6040516367d5e3df60e11b8152600490fd5b816130939293503d8411610ac357610ab48183610542565b905f612fea565b80156131d3578061316c61316561315b61315161314761313d61313361312960016103949a5f908b60801c806131c7575b508060401c806131ba575b508060201c806131ad575b508060101c806131a0575b508060081c80613193575b508060041c80613186575b508060021c80613179575b50821c613172575b811c1b613122818b612d5e565b0160011c90565b613122818a612d5e565b6131228189612d5e565b6131228188612d5e565b6131228187612d5e565b6131228186612d5e565b6131228185612d5e565b8092612d5e565b906124b3565b8101613115565b600291509101905f61310d565b600491509101905f613102565b600891509101905f6130f7565b601091509101905f6130ec565b602091509101905f6130e1565b604091509101905f6130d6565b9150506080905f6130cb565b505f90565b91905b8382106131e85750505090565b909192808316906001818518811c8301809311611a0757855f5265ffffffffffff808460205f20015416908516105f14613227575050925b91906131db565b909493508101809111611a075791613220565b80548061324b5750505f905f905f90565b5f19908082810111611a0757613268925f5260205f2001016124c5565b9065ffffffffffff82511691602060018060d01b0391015116906001929190565b906120db9082613346565b906132b7612ed76132d8926132a7612ea0565b506132b0612ea0565b50846120bd565b91600165ffffffffffff845116936020828060d01b039101511691016120bd565b905490604051926132e8846104de565b835260031b1c602082015290565b8054600160401b8110156104d957613313916001820181556120bd565b8154905f199060031b1b19169055565b90815491600160401b8310156104d95782612b3891600161058f950181556120bd565b908154905f829160058411613384575b6133619350846131d8565b8061336c5750505f90565b6133759061211a565b905f5260205f20015460301c90565b919261338f8161309a565b8103908111611a075761336193855f5265ffffffffffff808360205f20015416908516105f146133c0575091613356565b9291506133cc90611df1565b90613356565b60ff5f805160206135928339815191525460401c16156133ee57565b604051631afcd79f60e31b8152600490fd5b8054600160401b8110156104d95761341d916001820181556120bd565b611c3b57815160209092015160301b65ffffffffffff191665ffffffffffff909216919091179055565b8054929392919082156135485761347361346e6134638561211a565b835f5260205f200190565b6124c5565b90613484825165ffffffffffff1690565b65ffffffffffff84811691168110613536576134fa9460209488926134b261093b875165ffffffffffff1690565b036134fe57506134ec926134c86134d39261211a565b905f5260205f200190565b9065ffffffffffff82549181199060301b169116179055565b01516001600160d01b031690565b9190565b9150506135319161351e613510610591565b65ffffffffffff9093168352565b6001600160d01b03881682860152613400565b6134ec565b604051632520601d60e01b8152600490fd5b61356c9250613558613510610591565b6001600160d01b0385166020830152613400565b5f919056fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a264697066735822122076922ea6e3ad8fc57d79a3decbb6a526695968650fb8ee8d88110f7794fd659264736f6c63430008190033","sourceMap":"3563:3596:84:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;-1:-1:-1;;;;;3563:3596:84;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;3563:3596:84;;;;;;;;-1:-1:-1;;3563:3596:84;;;;:::o;:::-;;;;;;-1:-1:-1;;3563:3596:84;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;3563:3596:84;;;;;;1435:38:92;-1:-1:-1;;;;;3563:3596:84;;;;;;;;;;;;-1:-1:-1;;3563:3596:84;;;;;2936:47:92;:38;3563:3596:84;;;;;:::i;:::-;;;-1:-1:-1;3563:3596:84;2936:16:92;3563:3596:84;;;-1:-1:-1;3563:3596:84;;;;;;;;;;;;;;;;;2936:38:92;:47;:::i;:::-;3563:3596:84;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;-1:-1:-1;;3563:3596:84;;;;;;1788:109:92;3563:3596:84;;;;;:::i;:::-;;;-1:-1:-1;3563:3596:84;1788:109:92;3563:3596:84;;;-1:-1:-1;3563:3596:84;;;;;;;;;;;;;;;;;1788:109:92;3563:3596:84;;;;;;;;;;;;;;-1:-1:-1;;3563:3596:84;;;;;;;1374:6:92;3563:3596:84;;;;;;;;;-1:-1:-1;;3563:3596:84;;;;;;1528:51:92;-1:-1:-1;;;;;3563:3596:84;;;;;;;;;;;;-1:-1:-1;;3563:3596:84;;;;;;322:32:69;-1:-1:-1;;;;;3563:3596:84;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3563:3596:84;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;-1:-1:-1;;;;;3563:3596:84;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;3563:3596:84;;;;;;;:::o;:::-;-1:-1:-1;;;;;3563:3596:84;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;3563:3596:84;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;3563:3596:84;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;3563:3596:84;;;;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;:::i;:::-;-1:-1:-1;;;;;3563:3596:84;;;;;;-1:-1:-1;;3563:3596:84;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;3563:3596:84;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;3563:3596:84;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;3563:3596:84;;;;2016:56:94;3563:3596:84;;;;;;;;:::i;:::-;;;-1:-1:-1;3563:3596:84;;;2016:9:94;3563:3596:84;;;;;-1:-1:-1;;;;;3563:3596:84;;2016:56:94;:::i;:::-;3563:3596:84;;;;;;;;;;;;;-1:-1:-1;;3563:3596:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3563:3596:84;;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;3563:3596:84;;;;-1:-1:-1;;;;;3563:3596:84;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;3563:3596:84;;;;;;;4301:16:25;3563:3596:84;;4726:16:25;;:34;;;;3563:3596:84;4805:1:25;4790:16;:50;;;;3563:3596:84;4855:13:25;:30;;;;3563:3596:84;4851:91:25;;;-1:-1:-1;;;;;;;;;;;3563:3596:84;;-1:-1:-1;;3563:3596:84;;;;;718:4:69;;4951:18:25;4979:67;;718:4:69;:::i;:::-;5066:101:25;;3563:3596:84;5066:101:25;-1:-1:-1;;;;;;;;;;;3563:3596:84;;-1:-1:-1;;;;3563:3596:84;;;;;-1:-1:-1;3563:3596:84;;5142:14:25;;3563:3596:84;;5142:14:25;3563:3596:84;4979:67:25;-1:-1:-1;;;;;;;;;;;3563:3596:84;;-1:-1:-1;;;;3563:3596:84;-1:-1:-1;;;3563:3596:84;;;718:4:69;:::i;4851:91:25:-;3563:3596:84;;-1:-1:-1;;;4908:23:25;;3563:3596:84;;4908:23:25;4855:30;4872:13;;;4855:30;;;4790:50;4818:4;4810:25;:30;;-1:-1:-1;4790:50:25;;4726:34;;;-1:-1:-1;4726:34:25;;3563:3596:84;;;;;;-1:-1:-1;;3563:3596:84;;;;;;3726:43;-1:-1:-1;;;;;3563:3596:84;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;-1:-1:-1;;3563:3596:84;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;3563:3596:84;;;;;;;;;;;:::i;:::-;3217:103:28;;;;:::i;:::-;2123:10:92;;;:::i;:::-;3563:3596:84;;:::i;:::-;2666:16:94;;2662:105;;3563:3596:84;837:15:62;;819:34;837:15;819:34;:::i;:::-;2813:31:94;3563:3596:84;;;;;;;;2813:31:94;;;:::i;:::-;-1:-1:-1;3563:3596:84;;;;2847:27:94;;:13;;-1:-1:-1;;;;;3563:3596:84;2847:13:94;3563:3596:84;;-1:-1:-1;;;;;3563:3596:84;;;2847:27:94;3563:3596:84;;;;;;;;;;;;;;2847:29:94;;;;;;;;2794:82;2847:29;2813:63;2847:29;-1:-1:-1;2847:29:94;;;3563:3596:84;2813:63:94;;:::i;:::-;3563:3596:84;;;;2794:82:94;3563:3596:84;;;2794:82:94;;;:138;;;;;3563:3596:84;2777:223:94;;;3248:62:92;3019:133:94;3104:37;;3248:62:92;;;;:::i;:::-;3563:3596:84;;;3019:133:94;:::i;:::-;3166:11;;;3162:68;;3563:3596:84;3671:86:94;837:15:62;;;;3671:86:94;837:15:62;3262:31:94;837:15:62;819:34;837:15;819:34;:::i;:::-;3262:31:94;:::i;:::-;3563:3596:84;3317:13:94;3563:3596:84;;;;3347:308:94;3563:3596:84;;:::i;:::-;;;;-1:-1:-1;;;;;3563:3596:84;;;3379:266:94;;3563:3596:84;3379:266:94;;;3563:3596:84;;;;;;;3379:266:94;;3563:3596:84;;;;;3379:266:94;;3563:3596:84;-1:-1:-1;3563:3596:84;3379:266:94;;3563:3596:84;3347:308:94;:::i;:::-;3563:3596:84;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3563:3596:84;;;;;;;;;;3671:86:94;;;;3282:1:28;1805;-1:-1:-1;;;;;;;;;;;3563:3596:84;3716:283:28;3282:1;3563:3596:84;;;;;;;;;;;;3162:68:94;3563:3596:84;;-1:-1:-1;;;3200:19:94;;;2777:223;3563:3596:84;;-1:-1:-1;;;2964:25:94;;3563:3596:84;;2964:25:94;2794:138;837:15:62;;2896:36:94;819:34:62;837:15;819:34;:::i;2896:36:94:-;-1:-1:-1;2896:36:94;2794:138;;;2847:29;;;;;3563:3596:84;2847:29:94;3563:3596:84;2847:29:94;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;:::i;2662:105::-;2718:38;;;;;;;;:::i;:::-;2662:105;;;;;3563:3596:84;;;;;;-1:-1:-1;;3563:3596:84;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;-1:-1:-1;;3563:3596:84;;;;;1795:13:94;3563:3596:84;;;;;;;;;;;;;-1:-1:-1;;3563:3596:84;;;;;;;;;:::i;:::-;449:5:82;-1:-1:-1;;;;;3563:3596:84;435:10:82;:19;431:71;;3563:3596:84;4136:60;3563:3596;;;;-1:-1:-1;3563:3596:84;4136:9;3563:3596;;;-1:-1:-1;3563:3596:84;4136:60;:::i;:::-;3563:3596;;;;;;;;;;;;;;;;;;;431:71:82;3563:3596:84;;-1:-1:-1;;;477:14:82;;3563:3596:84;;477:14:82;3563:3596:84;;;;;;-1:-1:-1;;3563:3596:84;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;3563:3596:84;;;;;;;;;;;:::i;:::-;3217:103:28;;;:::i;:::-;3563:3596:84;;:::i;:::-;;7493:16:94;7489:103;;3563:3596:84;-1:-1:-1;;3563:3596:84;;;-1:-1:-1;;;7607:48:94;;7644:10;7607:48;;;3563:3596:84;;;-1:-1:-1;;;;;3563:3596:84;;;;;;;;;;;;;;7607:48:94;7617:16;;;3563:3596:84;7607:48:94;;;;;;;-1:-1:-1;7607:48:94;;;3563:3596:84;7606:49:94;;7602:99;;-1:-1:-1;3563:3596:84;7764:35:94;;-1:-1:-1;;;;;3563:3596:84;7644:10:94;3563:3596:84;;-1:-1:-1;;7644:10:94;297:2:88;3563:3596:84;;267:46:88;;152:169;7764:35:94;7850:21;5260:30:86;7850:21:94;;3563:3596:84;;7850:9:94;3563:3596:84;;;;;;;7850:21:94;5260:30:86;:::i;:::-;-1:-1:-1;7900:801:94;;;;;7930:34;819::62;837:15;819:34;:::i;7930::94:-;3563:3596:84;;;;7930:34:94;;;;7984:27;:21;;3563:3596:84;;7850:9:94;3563:3596:84;;;;;;;7984:21:94;:27;:::i;:::-;;7926:225;8169:61;8182:48;8190:39;4928:20:86;8198:21:94;;3563:3596:84;;7850:9:94;3563:3596:84;;;;;;;8198:21:94;4928:20:86;:::i;8169:61:94:-;3563:3596:84;;;;8169:61:94;;;8165:336;;7926:225;7900:801;;;;;;8716:34;7900:801;8716:34;7900:801;;3563:3596:84;-1:-1:-1;;;;;3563:3596:84;;;;;;;;;;;;;8716:34:94;;;;3282:1:28;1805;-1:-1:-1;;;;;;;;;;;3563:3596:84;3716:283:28;3282:1;3563:3596:84;8165:336:94;8250:21;;;;;;;3563:3596:84;;7850:9:94;3563:3596:84;;;;;;;8250:21:94;3563:3596:84;;;;;;;;8299:34:94;;;;;;;;;;;;;;-1:-1:-1;8299:34:94;;;8165:336;3563:3596:84;;8336:22:94;3563:3596:84;;;;;;;;;;;8361:30:94;;;;;;;;;;8336:55;8167:38:60;8361:30:94;8716:34;8361:30;8299:92;8361:30;8716:34;8361:30;8298:130;8361:30;-1:-1:-1;8361:30:94;;;8165:336;3563:3596:84;;;8336:55:94;;:::i;:::-;3563:3596:84;;8299:92:94;:::i;:::-;8298:130;:::i;:::-;8167:38:60;;:::i;:::-;8165:336:94;;;;;;8361:30;;;;;;-1:-1:-1;8361:30:94;;;;;;:::i;:::-;;;;;8299:34;;;;;;;;;;;;;;:::i;:::-;;;;7926:225;8036:61;8049:48;8057:39;4928:20:86;8065:21:94;;3563:3596:84;;7850:9:94;3563:3596:84;;;;;;;8036:61:94;3563:3596:84;;;8036:61:94;7926:225;8032:119;3563:3596:84;;-1:-1:-1;;;8124:12:94;;3563:3596:84;;8124:12:94;7900:801;-1:-1:-1;3563:3596:84;;;;;;-1:-1:-1;;8535:23:94;;8531:81;;8626:21;;8716:34;8626:21;8167:38:60;8716:34:94;8626:21;;;3563:3596:84;;7850:9:94;3563:3596:84;;;;;;;8626:21:94;819:34:62;837:15;819:34;:::i;8167:38:60:-;7900:801:94;;;;8531:81;3563:3596:84;;-1:-1:-1;;;8585:12:94;;;7602:99;-1:-1:-1;3563:3596:84;;-1:-1:-1;;;7678:12:94;;;7607:48;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;7489:103;7544:37;;;;;;:::i;:::-;;7489:103;;;;3563:3596:84;;;;;;;;;;;;;1050:35:94;3563:3596:84;;;;;;1050:35:94;-1:-1:-1;3563:3596:84;;;;;;-1:-1:-1;3563:3596:84;:::o;:::-;;:::i;:::-;;;;;;-1:-1:-1;;3563:3596:84;;;;;;1050:35:94;3563:3596:84;1050:35:94;;;;;;;;:::i;:::-;-1:-1:-1;3563:3596:84;;;1050:35:94;;3563:3596:84;1050:35:94;;;3563:3596:84;1050:35:94;;;;3563:3596:84;;;;;;;-1:-1:-1;;;;;3563:3596:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3563:3596:84;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;3563:3596:84;;;;-1:-1:-1;3563:3596:84;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;416:25:75;;;;477:31;416:25;;:::i;:::-;3563:3596:84;;;;;;;;;;477:31:75;;3563:3596:84;;;;;;;;;;;:::i;:::-;477:31:75;3563:3596:84;;477:31:75;;;;;;:::i;:::-;518:79;;;3563:3596:84;518:79:75;;3563:3596:84;;;;;;;;;:::i;:::-;;;:::i;:::-;;;-1:-1:-1;;3563:3596:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;3563:3596:84;;;;;;;;;:::i;:::-;;;;;2692:73:92;:38;3563:3596:84;;;:::i;:::-;;;;;-1:-1:-1;3563:3596:84;2692:16:92;3563:3596:84;;;-1:-1:-1;3563:3596:84;;;;;;;;;;;;;;;;;2692:38:92;:73;:::i;3563:3596:84:-;;;;;3248:62:92;3563:3596:84;;;:::i;:::-;3248:62:92;;;;;:::i;:::-;3563:3596:84;;;;;;;;;;-1:-1:-1;;3563:3596:84;;;;;;;;;;;-1:-1:-1;;;;;3563:3596:84;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;3217:103:28;;;;:::i;:::-;3563:3596:84;;:::i;:::-;4024:16:94;;4020:105;;3563:3596:84;;;4153:13:94;3563:3596:84;4139:34:94;;;4135:94;;4270:25;;;:::i;:::-;3563:3596:84;;;;4330:18:94;;;;:::i;:::-;4153:13;4408:24;;3563:3596:84;;;;;;;;;;;;;4377:95:94;4434:37;;4377:95;;;:::i;:::-;3563:3596:84;4377:125:94;;:250;;;3563:3596:84;4377:309:94;;;3563:3596:84;4360:389:94;;4763:43;837:15:62;819:34;837:15;819:34;:::i;:::-;4763:43:94;:::i;:::-;-1:-1:-1;3563:3596:84;4809:27:94;;:13;;-1:-1:-1;;;;;3563:3596:84;4809:13:94;3563:3596:84;4809:27:94;3563:3596:84;;4809:29:94;3563:3596:84;;;;;;;;;;;4809:29:94;;;;;;;;;;-1:-1:-1;4809:29:94;;;3563:3596:84;;;;;4763:75:94;4759:131;;4994:16;;;3563:3596:84;;4994:16:94;;4945:140;;4994:16;;3563:3596:84;;-1:-1:-1;;;;;3563:3596:84;5038:37:94;;;4945:140;;:::i;:::-;5120:14;5111:41;5120:14;;;;3563:3596:84;5111:41:94;:::i;:::-;5166:18;;;5162:75;;3563:3596:84;;;;5247:78:94;;5335:24;3563:3596:84;;5335:24:94;;5725:145;;5335:24;;;;3563:3596:84;5335:24:94;5725:145;5335:24;;;;6024;5335;;;3563:3596:84;;;;;;;;;;;;;;5335:24:94;3563:3596:84;;;;5445:24:94;;3563:3596:84;-1:-1:-1;;;;;3563:3596:84;;;;;5445:24:94;;:::i;:::-;3563:3596:84;;;;5542:13:94;;3563:3596:84;;-1:-1:-1;;;;;3563:3596:84;5542:13:94;;:::i;:::-;3563:3596:84;;;;;;-1:-1:-1;;;;;3563:3596:84;;;;;;;;;;;:::i;:::-;;;;4809:29:94;5753:103;;3563:3596:84;5753:103:94;;;3563:3596:84;;5725:145:94;;;4809:29;5725:145;;3563:3596:84;;;;;;;;;;;;;;;;;;;;;;;;;;;5725:145:94;;3563:3596:84;;5725:145:94;;;;;;:::i;:::-;;:::i;:::-;5920:24;3563:3596:84;;;;;;;;5920:24:94;;:::i;:::-;3563:3596:84;;;-1:-1:-1;;;;;3563:3596:84;;;;;;;;;;;6024:24:94;;:::i;:::-;3563:3596:84;;;;;6065:39:94;;3563:3596:84;;6065:39:94;3282:1:28;1805;-1:-1:-1;;;;;;;;;;;3563:3596:84;3716:283:28;5247:78:94;3563:3596:84;;-1:-1:-1;;;5291:23:94;;3563:3596:84;;5291:23:94;5162:75;3563:3596:84;;-1:-1:-1;;;5207:19:94;;3563:3596:84;;5207:19:94;4759:131;3563:3596:84;;-1:-1:-1;;;4861:18:94;;3563:3596:84;;4861:18:94;4809:29;;;;;;;;;;;;;;:::i;:::-;;;;4360:389;3563:3596:84;;-1:-1:-1;;;4718:20:94;;3563:3596:84;;4718:20:94;4377:309;837:15:62;4647:39:94;819:34:62;837:15;819:34;:::i;4647:39:94:-;3563:3596:84;;;;;4647:39:94;4377:309;;:250;837:15:62;4522:105:94;:91;4553:20;819:34:62;837:15;819:34;:::i;:::-;4553:20:94;:::i;:::-;4575:37;;;;4522:91;;;:::i;:105::-;;;4377:250;;4135:94;3563:3596:84;;-1:-1:-1;;;4196:22:94;;3563:3596:84;;4196:22:94;4020:105;4076:38;;;;;;;;:::i;:::-;4020:105;;;;;3563:3596:84;;;;;;-1:-1:-1;;3563:3596:84;;;;;;;-1:-1:-1;;;;;404:28:69;3563:3596:84;;;;;;;;;;-1:-1:-1;;3563:3596:84;;;;;1221:37:94;3563:3596:84;;;;;;;;;;;;;-1:-1:-1;;3563:3596:84;;;;;;954:41:94;-1:-1:-1;;;;;3563:3596:84;;;;;;;;;;;;-1:-1:-1;;3563:3596:84;;;;;;-1:-1:-1;;;;;3563:3596:84;;;;2239:46:94;3563:3596:84;;;;;;;;:::i;:::-;819:34:62;837:15;819:34;:::i;:::-;3563:3596:84;;2239:46:94;:::i;:::-;3563:3596:84;;-1:-1:-1;;;;;3563:3596:84;;;;;;;;;;;;-1:-1:-1;;3563:3596:84;;;;;;;1271:7:92;3563:3596:84;;;;;;;;;-1:-1:-1;;3563:3596:84;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3217:103:28;;;:::i;:::-;3563:3596:84;;:::i;:::-;6308:16:94;;6304:99;;3563:3596:84;;;6431:13:94;3563:3596:84;6417:34:94;;;6413:94;;6548:25;;;:::i;:::-;3563:3596:84;6431:13:94;3563:3596:84;;6653:24:94;;3563:3596:84;;;;;;;;;;;6622:92:94;6679:34;;3563:3596:84;;;6622:92:94;;:::i;:::-;3563:3596:84;6741:29:94;;;:151;;;;;3563:3596:84;6724:223:94;;;;6961:10;:29;6957:80;;7051:40;819:34:62;837:15;819:34;:::i;7051:40:94:-;3563:3596:84;;;;;7051:40:94;;7047:95;;3563:3596:84;;;;7152:78:94;;3563:3596:84;;-1:-1:-1;;;;3563:3596:84;-1:-1:-1;;;3563:3596:84;;;6961:10:94;7280:33;;-1:-1:-1;7280:33:94;;3282:1:28;1805;-1:-1:-1;;;;;;;;;;;3563:3596:84;3716:283:28;7152:78:94;3563:3596:84;;-1:-1:-1;;;7196:23:94;;3563:3596:84;;7196:23:94;7047:95;3563:3596:84;;-1:-1:-1;;;7114:17:94;;3563:3596:84;;7114:17:94;6957:80;3563:3596:84;;-1:-1:-1;;;7013:13:94;;3563:3596:84;;7013:13:94;6724:223;3563:3596:84;;-1:-1:-1;;;6924:12:94;;3563:3596:84;;6924:12:94;6741:151;6790:102;837:15:62;;;6790:88:94;837:15:62;6843:34:94;6821:20;819:34:62;837:15;819:34;:::i;6821:20:94:-;6843:34;;;6790:88;;:::i;:102::-;;6741:151;;;;6304:99;6357:35;;;;;;;:::i;:::-;6304:99;;;;3563:3596:84;;;;;;-1:-1:-1;;3563:3596:84;;;;;;;;-1:-1:-1;;;;;3563:3596:84;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;3563:3596:84;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;3563:3596:84;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4649:553::-;3563:3596;;-1:-1:-1;;;4939:105:84;;-1:-1:-1;;;;;3563:3596:84;;;4939:105;;;3563:3596;;;;;;;;;;;;;;;;;;;;;;;;;4649:553;4939:105;3563:3596;;;;;4939:105;3563:3596;4956:18;-1:-1:-1;;;;;3563:3596:84;4939:105;;;;;;;;;;;4649:553;3563:3596;;;5055:141;;4649:553;:::o;5055:141::-;5112:73;3563:3596;;;5112:73;3563:3596;;;;;;;:::i;:::-;;;;;5112:73;;;3563:3596;5112:73;;;:::i;4939:105::-;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;6788:369;;;6975:44;6788:369;3563:3596;6975:44;;:::i;:::-;3563:3596;;7030:121;;6788:369;:::o;1876:205:94:-;-1:-1:-1;3563:3596:84;;;2016:9:94;3563:3596:84;;;;;-1:-1:-1;;;;;3563:3596:84;2016:56:94;;1876:205;;2016:56;:::i;:::-;3563:3596:84;1876:205:94;:::o;3563:3596:84:-;;;;;;;;;;;;;;;;;-1:-1:-1;;3563:3596:84;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::o;6172:610::-;6466:55;6172:610;;;;6370:51;3563:3596;6370:51;;;;:::i;:::-;837:15:62;6500:20:84;819:34:62;837:15;819:34;:::i;6466:55:84:-;3563:3596;;6536:30;;;:64;;;6172:610;6532:244;;6172:610;;:::o;6532:244::-;3563:3596;;;;;;6623:142;3563:3596;;;;;;;:::i;:::-;;;6651:100;;;3563:3596;;;;;6623:142;;;6651:100;6623:142;;;3563:3596;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;3563:3596:84;;;;;;:::i;6536:64::-;3563:3596;;;6570:30;;6536:64;;3563:3596;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;3563:3596:84;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3317:13:94;3563:3596:84;-1:-1:-1;;;3563:3596:84;;;;;;;;;;3317:13:94;3563:3596:84;;:::i;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3563:3596:84;-1:-1:-1;;;;;3563:3596:84;;;;;;;;;;;;;;;;3317:13:94;;3563:3596:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;3563:3596:84;;;;;;-1:-1:-1;;;3563:3596:84;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;5208:958::-;;;;;5643:105;3563:3596;5435:51;;;;;;:::i;:::-;837:15:62;5643:105:84;5531:55;5565:20;819:34:62;837:15;819:34;:::i;5565:20:84:-;5531:55;;;:::i;:::-;3563:3596;;-1:-1:-1;;;5643:105:84;;-1:-1:-1;;;;;3563:3596:84;;;5643:105;;;3563:3596;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5643:105;;3563:3596;5660:18;-1:-1:-1;;;;;3563:3596:84;5643:105;;;;;;;;;;;5208:958;3563:3596;;;5763:30;;;:64;;;5208:958;5763:98;;;;5208:958;5759:401;;5208:958;;;:::o;5759:401::-;5884:265;3563:3596;;;;5884:265;3563:3596;;;;:::i;:::-;;;;5912:223;;;3563:3596;;5912:223;;3563:3596;;;5884:265;;;5912:223;5884:265;;;:::i;5763:98::-;3563:3596;;;5831:30;;5763:98;;:64;3563:3596;;;5797:30;;5763:64;;5643:105;;;;;;;;;;;;;;:::i;:::-;;;;;3563:3596;;;;;;;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;3149:1:86;3563:3596:84;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;3563:3596:84;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;4209:434::-;;;-1:-1:-1;4307:12:84;3563:3596;;;;;4435:78;;;;;;;;;;;;;3563:3596;;;;;;;4435:78;;;;;:::i;:::-;3563:3596;;716:88:82;;3563:3596:84;716:88:82;;;;;;;;;783:4;4435:78:84;716:88:82;;3563:3596:84;;;;;;;;;;;:::i;:::-;716:88:82;3563:3596:84;716:88:82;3563:3596:84;;716:88:82;;;;;;;;:::i;:::-;698:107;;;;;857:45;698:107;;:::i;:::-;3563:3596:84;;;;857:45:82;;;;;;:::i;:::-;916:8;;912:175;;3563:3596:84;;;4361:204;3563:3596;;4361:204;;;;;;:::i;:::-;4576:61;;;;4209:434;;;:::o;4576:61::-;4609:17;3563:3596;;;;4609:17;3563:3596;;4609:17;;;;;3563:3596;;;;;;;;;;;;4609:17;;;;;;;;;:::i;912:175:82:-;3563:3596:84;;;;944:22:82;;;940:36;;990:87;;2505:267:92;-1:-1:-1;3563:3596:84;;;2692:16:92;3563:3596:84;;;;;;;;-1:-1:-1;;;;;3563:3596:84;;;;;;;;;2692:73:92;;2505:267;;2692:73;:::i;3563:3596:84:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;3563:3596:84;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;3563:3596:84;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;3563:3596:84;;-1:-1:-1;3563:3596:84;;;-1:-1:-1;3563:3596:84;:::o;10580:184:86:-;10689:20;;;:::i;:::-;-1:-1:-1;;;;;3563:3596:84;;10726:7:86;3563:3596:84;;10736:12:86;:17;:12;;:17;:::i;:::-;3563:3596:84;;;;;;10580:184:86;:::o;10726:31::-;;;10689:11;10580:184;:::o;3563:3596:84:-;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;3563:3596:84;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::o;1818:604:86:-;;3563:3596:84;;1946:17:86;1942:83;;3563:3596:84;2049:27:86;3563:3596:84;2049:27:86;3563:3596:84;;2049:27:86;;;;;;:::i;:::-;2120:14;;;;;:::i;:::-;3563:3596:84;;;;;;;;;;;;;;;;2148:22:86;;;2144:77;;2235:21;-1:-1:-1;2235:84:86;;;;1818:604;2231:139;;;;1425:34;;;;:::i;2231:139::-;-1:-1:-1;;2049:27:86;2342:17;3563:3596:84;-1:-1:-1;;;;;3563:3596:84;;:::o;2235:84:86:-;3563:3596:84;;;2269:16:86;3563:3596:84;;2269:16:86;:::i;:::-;3563:3596:84;;;2261:24:86;:57;;;;;2235:84;;;;;;;2261:57;2289:29;2298:8;;;2289:18;2298:8;2289:23;2298:8;;:::i;:::-;2289:18;;:::i;:::-;3563:3596:84;;;;;2289:29:86;;2261:57;;;;2144:77;-1:-1:-1;;;;2049:27:86;2193:17;;;;3563:3596:84;-1:-1:-1;;;;;3563:3596:84;;-1:-1:-1;3563:3596:84;:::o;1942:83:86:-;1425:34;;;;:::i;3563:3596:84:-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;3563:3596:84;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;6491:564:92:-;6614:34;6491:564;6614:34;;;;:::i;:::-;3563:3596:84;;-1:-1:-1;;;6664:41:92;;-1:-1:-1;;;;;3563:3596:84;;;6664:41:92;;;3563:3596:84;;;;;6664:41:92;;;3563:3596:84;;;6674:13:92;3563:3596:84;;6664:41:92;;;;;;;-1:-1:-1;6664:41:92;;;6491:564;6663:42;;6659:90;;2540:111:28;6850:27:92;6664:41;2540:111:28;;;:::i;:::-;-1:-1:-1;3563:3596:84;;-1:-1:-1;;;;;;3563:3596:84;-1:-1:-1;;;;;3563:3596:84;;;;;6850:27:92;;:::i;:::-;3563:3596:84;;;;;;;;;;6892:23:92;;;;;;;;;-1:-1:-1;6892:23:92;;;6491:564;3563:3596:84;;;6892:37:92;:64;;;6491:564;6888:112;;3563:3596:84;7010:38:92;;3563:3596:84;;-1:-1:-1;3563:3596:84;;-1:-1:-1;;;;3563:3596:84;;;;;;-1:-1:-1;;;3563:3596:84;;;;;;;;6888:112:92;3563:3596:84;;-1:-1:-1;;;6979:10:92;;6664:41;;6979:10;6892:64;-1:-1:-1;3563:3596:84;;;;6892:64:92;;:23;;;;;;-1:-1:-1;6892:23:92;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;6659:90;3563:3596:84;;-1:-1:-1;;;6728:10:92;;6664:41;;6728:10;6664:41;;;;;;;;;;;;;;:::i;:::-;;;;3326:384:28;-1:-1:-1;;;;;;;;;;;1847:1:28;3563:3596:84;;3526:20:28;3522:88;;1847:1;3563:3596:84;;3326:384:28:o;3522:88::-;3563:3596:84;;-1:-1:-1;;;3569:30:28;;;;;4451:257:92;3563:3596:84;;-1:-1:-1;;;4546:86:92;;467:2:88;3563:3596:84;;;;4546:86:92;;;3563:3596:84;-1:-1:-1;;;;;4546:86:92;3563:3596:84;;;4572:26:92;3563:3596:84;;4546:86:92;;;;;;;-1:-1:-1;4546:86:92;;;4451:257;4636:10;;3563:3596:84;;4546:100:92;4542:160;;4451:257::o;4542:160::-;3563:3596:84;;-1:-1:-1;;;4669:22:92;;4546:86;;4669:22;4546:86;;;;;;;;;;;;;;;:::i;:::-;;;;;2557:104:57;;2641:5;;;;;;:13;2557:104;:::o;2641:13::-;;;2557:104;:::o;3563:3596:84:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;2666:855:86:-;;3563:3596:84;;2880:15:86;2838:11;2905:18;2938:7;2944:1;2938:7;;2934:241;;2666:855;3199:60;;;;;:::i;:::-;3274:8;;;3270:62;;3563:3596:84;3430:7:86;;;;:::i;:::-;13267:109;2838:11;13267:109;;2838:11;13267:109;;3563:3596:84;:::i;:::-;;3498:15:86;3505:7;3563:3596:84;13267:109:86;3563:3596:84;;;;;;;;3479:17:86;;3563:3596:84;-1:-1:-1;;;;;3563:3596:84;;;;3505:7:86;;:::i;:::-;3563:3596:84;;;;3498:15:86;3436:1;;3448:66;;2666:855::o;3270:62::-;3298:23;;2838:11;3298:23;2838:11;3298:23;2838:11;3298:23;2838:11;3298:23;:::o;2934:241::-;2981:14;;;;;:::i;:::-;3563:3596:84;;;;;;;3199:60:86;13267:109;;2838:11;13267:109;3563:3596:84;13267:109:86;;;2838:11;13267:109;;3563:3596:84;;;;;3013:55:86;3009:156;3563:3596:84;;;3088:10:86;3009:156;2934:241;;3009:156;3143:7;;;;;;:::i;:::-;3009:156;2934:241;;5905:168;;6006:20;;;:::i;:::-;3563:3596:84;;;;;;;-1:-1:-1;;3563:3596:84;;;;;;:::i;:::-;;;;;;;5905:168:86:o;3563:3596:84:-;;;;;;;;;;;;14291:213:58;3563:3596:84;14369:24:58;;;;14365:103;;3563:3596:84;14291:213:58;:::o;14365:103::-;3563:3596:84;;;;14416:41:58;;;;;;14447:2;14416:41;;;3563:3596:84;;;;;14416:41:58;3563:3596:84;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;3563:3596:84;;;;;;;;:::i;7558:604:86:-;;3563:3596:84;;7686:17:86;7682:83;;3563:3596:84;7789:27:86;3563:3596:84;7789:27:86;3563:3596:84;;7789:27:86;;;;;;:::i;:::-;7860:14;;;;;:::i;:::-;3563:3596:84;;;;;;;;;;;;;;;;7888:22:86;;;7884:77;;7975:21;-1:-1:-1;7975:84:86;;;;7558:604;7971:139;;;;8127:28;;;;:::i;7971:139::-;8082:17;;7789:27;8082:17;3563:3596:84;8075:24:86;:::o;7975:84::-;3563:3596:84;;;8009:16:86;3563:3596:84;;8009:16:86;:::i;:::-;3563:3596:84;;;8001:24:86;:57;;;;;7975:84;;;;;;;8001:57;8029:29;8038:8;;;8029:18;8038:8;8029:23;8038:8;;:::i;:::-;8029:18;;:::i;:29::-;;8001:57;;;;7884:77;7933:17;;;;;7789:27;7933:17;3563:3596:84;7926:24:86;:::o;7682:83::-;7726:28;;;;:::i;3563:3596:84:-;;;;;;;;;;;-1:-1:-1;;;;;3563:3596:84;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;3563:3596:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3323:1122:92:-;;3563:3596:84;;:::i;:::-;;;;3608:16:92;3604:109;;3323:1122;837:15:62;;819:34;837:15;819:34;:::i;:::-;-1:-1:-1;3563:3596:84;;;;3778:27:92;;:13;;-1:-1:-1;;;;;3563:3596:84;3778:13:92;3563:3596:84;3778:27:92;3563:3596:84;;;;;;;3778:29:92;;;;;;;;;;;;;;;3740:67;3778:29;3759:48;3778:29;-1:-1:-1;3778:29:92;;;3759:48;;:::i;3740:67::-;3563:3596:84;;;3740:67:92;;;:107;;;;;3323:1122;3740:197;;;;3323:1122;3723:263;;;3563:3596:84;3778:29:92;3563:3596:84;;;;;;;;;;4025:25:92;;;;;;;;;4010:143;4025:25;;;-1:-1:-1;4025:25:92;;;3323:1122;4113:30;;;3563:3596:84;;;;;;;;;;;4010:143:92;;;;;3778:29;4010:143;;;:::i;:::-;;;-1:-1:-1;;;;;3563:3596:84;4010:143:92;;;;;;;4181:257;4010:143;-1:-1:-1;4010:143:92;;;3323:1122;3996:157;;4293:102;3996:157;;4233:162;3996:157;4207:231;3996:157;;2936:28;:47;:38;:28;;;3563:3596:84;;2936:16:92;3563:3596:84;;;;;;;2936:28:92;3563:3596:84;;;;;;;;;;;;;;;;2936:47:92;4351:43;;;4293:102;;:::i;:::-;4233:162;;:::i;:::-;4207:231;:::i;4181:257::-;3323:1122;:::o;4010:143::-;4233:162;4010:143;;;4207:231;4010:143;;;;4293:102;4010:143;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;4025:25;;;;;;;;;;;;;;:::i;:::-;;;;3723:263;3962:13;;;;;;-1:-1:-1;3962:13:92;-1:-1:-1;3962:13:92;:::o;3740:197::-;3886:41;;3867:70;3886:51;;:41;;;3563:3596:84;;3886:29:92;3563:3596:84;;;;;;;3886:51:92;3563:3596:84;;;;;3867:70:92;-1:-1:-1;3740:197:92;;;:107;837:15:62;;3811:36:92;819:34:62;837:15;819:34;:::i;3811:36:92:-;;;;3740:107;;;3778:29;;;;;;;;;;;;;;;:::i;3604:109::-;3662:40;;;;;;;;;;;;:::i;:::-;3604:109;;;;4714:335;;;;3563:3596:84;-1:-1:-1;3563:3596:84;4876:29:92;3563:3596:84;;;;4876:51:92;3563:3596:84;;-1:-1:-1;3563:3596:84;;;;;;;;;;;;;;;;;4876:51:92;3563:3596:84;;;;;-1:-1:-1;4872:171:92;;4714:335;;;:::o;4872:171::-;4962:70;3563:3596:84;4962:51:92;3563:3596:84;-1:-1:-1;3563:3596:84;4876:29:92;3563:3596:84;;;-1:-1:-1;3563:3596:84;;;;;;;;;;;;;;;;;4962:51:92;3563:3596:84;;;;;;;;;;;;5055:221:92;;;3563:3596:84;-1:-1:-1;3563:3596:84;5160:16:92;3563:3596:84;;2936:47:92;:38;5160;3563:3596:84;;-1:-1:-1;3563:3596:84;;;;;;;;;;;;;;;;;5160:38:92;837:15:62;819:34;837:15;819:34;:::i;:::-;3563:3596:84;-1:-1:-1;3563:3596:84;5160:16:92;3563:3596:84;;;-1:-1:-1;3563:3596:84;;;;;;;;;;;;;;;;;2936:47:92;3563:3596:84;;;;;;;;6360:12:86;;;3563:3596:84;;;6360:24:86;6356:75;;5055:221:92;6474:30:86;;;:::i;:::-;3563:3596:84;;;;;6578:12:86;;;;:::i;:::-;;6604:24;;;5055:221:92;-1:-1:-1;6600:188:86;;;-1:-1:-1;;;;3563:3596:84;;;;;;;6644:29:86;:21;;;;:::i;:::-;:29;3563:3596:84;;;;;;;;;;;;;;;;;;;;;6600:188:86;6753:24;;8167:38:60;;-1:-1:-1;;;;;3563:3596:84;;;;;8167:38:60;:::i;:::-;6753:24:86;;;:::i;6604:::-;3563:3596:84;;;;;;6614:14:86;;-1:-1:-1;6604:24:86;;;6356:75;6400:20;;;:::i;:::-;6356:75;;3563:3596:84;;;;;;;;-1:-1:-1;;;;;3563:3596:84;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;5282:431:92:-;;;;5487:25;;:23;:13;3563:3596:84;5494:5:92;3563:3596:84;;;;;;;;;5487:23:92;3563:3596:84;;-1:-1:-1;;;5487:25:92;;3563:3596:84;;;;;5487:25:92;;;;;;;5631:65;5487:25;5631:65;5487:25;5494:5;5487:25;;;5282:431;-1:-1:-1;;;;;;3563:3596:84;;;;:::i;:::-;-1:-1:-1;;;;;5677:4:92;3563:3596:84;;;5677:4:92;5487:25;5642:53;;3563:3596:84;;;5631:65:92;;;5487:25;5631:65;;;:::i;:::-;5472:234;;;;;5494:5;3563:3596:84;5472:234:92;3563:3596:84;;;;;;;;;;;;;;5472:234:92;;5487:25;5472:234;;;:::i;:::-;;;;;;;;;;;5282:431;:::o;5472:234::-;;;;;;:::i;:::-;;;:::i;5487:25::-;;;;;;;;;;;;;;:::i;:::-;;;;5719:137;3563:3596:84;5719:137:92;3563:3596:84;5802:47:92;5719:137;5809:5;3563:3596:84;;;;;;;;;;;;;;;;;;5802:47:92;;;;;3563:3596:84;;;;;;5802:47:92;;;;;;;;5719:137;:::o;5802:47::-;;;;;;;;;;;;;:::i;:::-;;5719:137::o;3563:3596:84:-;;;;;;;:::o;:::-;;;;;;;;;;;;5862:623:92;;;5988:12;3563:3596:84;;;;;;;5984:495:92;;5862:623;;;;;;:::o;5984:495::-;3563:3596:84;;-1:-1:-1;;;6033:22:92;;3563:3596:84;6033:22:92;;3563:3596:84;;6033:22:92;;3563:3596:84;;-1:-1:-1;;;;;3563:3596:84;6033:22:92;;;;;;;5988:12;6033:22;;;5984:495;-1:-1:-1;3563:3596:84;;-1:-1:-1;;;6033:22:92;6094:81;;;;;;;;3563:3596:84;;;;-1:-1:-1;;;;;3563:3596:84;;;;;;;;;;;;;;;;;;;;;;6094:81:92;3563:3596:84;;;;6094:81:92;;3563:3596:84;;6094:81:92;;;;;;:::i;:::-;3563:3596:84;6194:9:92;:55;6190:124;;5988:12;6328:141;;;;;;1271:7;6328:141;;5984:495;;;;;;;6190:124;3563:3596:84;;-1:-1:-1;;;6276:23:92;;6033:22;;6276:23;6033:22;6094:81;6033:22;;;6094:81;6033:22;;;;;;;;;;;:::i;:::-;;;;;10167:206:60;3563:3596:84;;10303:8:60;;;:63;;10262:17;10167:206;:::o;10303:63::-;3563:3596:84;;;;;;;;;;10262:17:60;13267:109:86;;10262:17:60;13267:109:86;;;3563:3596:84;;;10167:206:60;:::o;3563:3596:84:-;;;;;;;:::i;:::-;-1:-1:-1;3563:3596:84;;;;;;;:::o;5573:258:86:-;3563:3596:84;5573:258:86;11308:22:60;5573:258:86;3563:3596:84;;:::i;:::-;;;;:::i;:::-;;11308:22:60;:::i;:::-;3563:3596:84;;:::i;:::-;;;;;;5805:17:86;3563:3596:84;;;;;5805:17:86;;3563:3596:84;;;;;;;;:::i;:::-;;;5805:17:86;5759:65;;3563:3596:84;5573:258:86;:::o;6893:76:25:-;;;:::i;:::-;;;:::i;:::-;1805:1:28;-1:-1:-1;;;;;;;;;;;3563:3596:84;6893:76:25:o;3563:3596:84:-;;;;;;;:::i;:::-;-1:-1:-1;3563:3596:84;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::o;8763:604:94:-;;8969:30;8763:604;3563:3596:84;;:::i;:::-;;;;8905:30:94;;;;;;;;;;;;;:::i;:::-;3563:3596:84;;-1:-1:-1;;;8969:30:94;;3563:3596:84;;;;;;;;-1:-1:-1;;;;;3563:3596:84;8969:30:94;;;;;;;;;;;8763:604;9013:19;;;3563:3596:84;;;;;;;;;;;;;;;9013:36:94;;9009:95;;3563:3596:84;9118:29:94;;9150:1;3563:3596:84;;9118:33:94;9114:102;;9226:34;3563:3596:84;9271:54:94;3563:3596:84;;;;;;;;;;;8969:30:94;3563:3596:84;;;8969:30:94;3563:3596:84;;9226:34:94;3563:3596:84;9271:54:94;3563:3596:84;;9271:54:94;9343:17;8763:604;:::o;9114:102::-;3563:3596:84;;-1:-1:-1;;;9174:31:94;;8969:30;;9174:31;9009:95;3563:3596:84;;-1:-1:-1;;;9072:21:94;;8969:30;;9072:21;8969:30;;;;;;;;;;;;;;;:::i;:::-;;;;;8587:1642:57;8658:6;;8654:45;;9401:7;10201:10;10142:26;10093;10044;9995;9946;9897;9848;3563:3596:84;10189:23:57;9401:7;8663:1;3563:3596:84;;;;10826:16:57;10822:99;;8587:1642;3563:3596:84;;;;10938:15:57;10934:96;;8587:1642;3563:3596:84;;;;11047:15:57;11043:96;;8587:1642;3563:3596:84;;;;11156:15:57;11152:96;;8587:1642;3563:3596:84;;;;11265:14:57;11261:93;;8587:1642;3563:3596:84;;;;11371:14:57;11367:93;;8587:1642;3563:3596:84;;;;11477:14:57;11473:93;;8587:1642;3563:3596:84;;;11579:64:57;;8587:1642;3563:3596:84;;;9858:10:57;;;;:::i;:::-;3563:3596:84;;;;;9848:26:57;9907:10;;;;:::i;9897:26::-;9956:10;;;;:::i;9946:26::-;10005:10;;;;:::i;9995:26::-;10054:10;;;;:::i;10044:26::-;10103:10;;;;:::i;10093:26::-;10152:10;;;;:::i;10142:26::-;10201:10;;;:::i;:::-;10189:23;;:::i;11579:64::-;3563:3596:84;;11579:64:57;;11473:93;3563:3596:84;11511:11:57;;3563:3596:84;;11473:93:57;;;;11367;3563:3596:84;11405:11:57;;3563:3596:84;;11367:93:57;;;;11261;3563:3596:84;11299:11:57;;3563:3596:84;;11261:93:57;;;;11152:96;3563:3596:84;11191:12:57;;3563:3596:84;;11152:96:57;;;;11043;3563:3596:84;11082:12:57;;3563:3596:84;;11043:96:57;;;;10934;3563:3596:84;10973:12:57;;3563:3596:84;;10934:96:57;;;;10822:99;10862:13;;;3563:3596:84;10822:99:57;;;;8654:45;8680:8;8663:1;8680:8;:::o;12497:447:86:-;;;12694:10;;;;;;12926:11;;;12497:447;:::o;12687:230::-;2900:5:57;;;;;;3563:3596:84;;2910:5:57;;;3563:3596:84;;;;;;;;;13267:109:86;-1:-1:-1;13267:109:86;3563:3596:84;13267:109:86;;;-1:-1:-1;13267:109:86;;3563:3596:84;;;;;-1:-1:-1;12771:136:86;3563:3596:84;;;12830:10:86;;12771:136;;12687:230;;;;12771:136;3563:3596:84;;;;;;;;;;;12771:136:86;;;10552:388:60;3563:3596:84;;10728:8:60;;;10752:20;;10690:17;10752:20;10690:17;10752:20;10690:17;10752:20;:::o;10724:210::-;3563:3596:84;;;;;;;;;;;13267:109:86;10690:17:60;13267:109:86;;10690:17:60;13267:109:86;;;3563:3596:84;:::i;:::-;;;;;;;13267:109:86;3563:3596:84;;;;;10911:11:60;;3563:3596:84;;10886:37:60;10870:1;10886:37;;;:::o;6999:207:86:-;;7117:34;6999:207;7117:34;;:::i;11486:272::-;;3563:3596:84;11308:22:60;11718:31:86;11486:272;3563:3596:84;;:::i;:::-;;;;:::i;:::-;;11308:22:60;;:::i;3563:3596:84:-;;11718:12:86;3563:3596:84;;;;;11731:17:86;3563:3596:84;;;;;11731:17:86;;3563:3596:84;;11718:12:86;;:31;:::i;:::-;3563:3596:84;;;;;;;;;:::i;:::-;;;;;;11731:17:86;11672:79;;3563:3596:84;11486:272:86;:::o;3563:3596:84:-;;;-1:-1:-1;;;3563:3596:84;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;-1:-1:-1;;;3563:3596:84;;;;;;;;;;;;;;;:::i;9441:606:60:-;;3563:3596:84;;9594:15:60;9559:17;9619:18;9652:7;9658:1;9652:7;;9648:234;;9441:606;9906:53;;;;;:::i;:::-;9977:8;;;:63;;9559:17;9441:606;:::o;9977:63::-;10025:7;;;:::i;:::-;13267:109:86;9559:17:60;13267:109:86;;9559:17:60;13267:109:86;;3563:3596:84;;;9441:606:60;:::o;9648:234::-;9695:14;;;;;:::i;:::-;3563:3596:84;;;;;;;9906:53:60;13267:109:86;;9559:17:60;13267:109:86;3563:3596:84;13267:109:86;;;9559:17:60;13267:109:86;;3563:3596:84;;;;;9727:48:60;9723:149;3563:3596:84;;;9795:10:60;9723:149;9648:234;;9723:149;9850:7;;;;;;:::i;:::-;9723:149;9648:234;;7084:141:25;3563:3596:84;-1:-1:-1;;;;;;;;;;;3563:3596:84;;;;7150:18:25;7146:73;;7084:141::o;7146:73::-;3563:3596:84;;-1:-1:-1;;;7191:17:25;;;;;3563:3596:84;;;-1:-1:-1;;;3563:3596:84;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;3563:3596:84;;;;;;;;;;;:::o;11513:870:60:-;3563:3596:84;;11513:870:60;;;3563:3596:84;11513:870:60;11672:7;;;;3563:3596:84;11775:28:60;11795:7;;;:::i;:::-;11775:28;13267:109:86;;;;;;13089:293;;11775:28:60;3563:3596:84;:::i;:::-;;;;;;;;;;;;;;;;11877:15:60;-1:-1:-1;11873:91:60;;3563:3596:84;;12233:11:60;3563:3596:84;;;12027:16:60;3563:3596:84;;;;;;;12027:16:60;;;;12083:7;12063:43;12083:7;;12063:28;12083:7;;:::i;:::-;12063:28;13267:109:86;;;;;;13089:293;;12063:28:60;3563:3596:84;;;;;;;;;;;;;;;;;12063:43:60;12233:11;3563:3596:84;-1:-1:-1;;;;;3563:3596:84;;;;12225:27:60;;:::o;12023:189::-;3563:3596:84;;;12145:52:60;3563:3596:84;12155:41:60;3563:3596:84;;:::i;:::-;;;;;;;;12155:41:60;-1:-1:-1;;;;;3563:3596:84;;12155:41:60;;;3563:3596:84;12145:52:60;:::i;:::-;12023:189;;11873:91;3563:3596:84;;-1:-1:-1;;;11919:30:60;;;;;11668:709;12283:52;3563:3596:84;;12293:41:60;3563:3596:84;;:::i;12293:41:60:-;-1:-1:-1;;;;;3563:3596:84;;12293:41:60;;;3563:3596:84;12145:52:60;:::i;12283:::-;11678:1;12349:17;;:::o","linkReferences":{},"immutableReferences":{"57808":[{"start":1147,"length":32}],"57811":[{"start":5510,"length":32},{"start":11354,"length":32}],"62368":[{"start":2918,"length":32}],"62998":[{"start":2054,"length":32},{"start":6420,"length":32},{"start":7433,"length":32}],"65592":[{"start":744,"length":32},{"start":8890,"length":32}],"65595":[{"start":1079,"length":32},{"start":9284,"length":32}],"66325":[{"start":3192,"length":32},{"start":5596,"length":32}]}},"methodIdentifiers":{"BASE_SLASHER_HINTS()":"457821b7","BURNER_GAS_LIMIT()":"d5c24e1a","BURNER_RESERVE()":"2964f8dc","FACTORY()":"2dd31000","NETWORK_MIDDLEWARE_SERVICE()":"2c9d45b3","NETWORK_REGISTRY()":"c0cd7c3e","TYPE()":"bb24fe8a","VAULT_FACTORY()":"103f2907","cumulativeSlash(bytes32,address)":"1a2be2c4","cumulativeSlashAt(bytes32,address,uint48,bytes)":"aa8e6489","executeSlash(uint256,bytes)":"b94c386e","executeSlashHints(address,bytes32,address,uint48)":"69f78920","initialize(bytes)":"439fab91","isBurnerHook()":"34d098ea","latestSlashedCaptureTimestamp(bytes32,address)":"267de1f3","requestSlash(bytes32,address,uint256,uint48,bytes)":"545ce389","requestSlashHints(address,address,bytes32,address,uint256,uint48)":"002a0875","resolver(bytes32,bytes)":"cd05b8a1","resolverAt(bytes32,uint48,bytes)":"31ce4dfe","resolverHint(address,bytes32,uint48)":"a4ef9b4f","resolverHintInternal(bytes32,uint48)":"8f82f931","resolverSetEpochsDelay()":"bc6eac5b","setResolver(uint96,address,bytes)":"9168f9d2","setResolverHints(address,bytes32,uint48)":"1dd5f600","slashRequests(uint256)":"9a896551","slashRequestsLength()":"8f42f9ab","slashableStake(bytes32,address,uint48,bytes)":"aab3595f","staticDelegateCall(address,bytes)":"9f86fd85","vault()":"fbfa77cf","vetoDuration()":"e054e08b","vetoSlash(uint256,bytes)":"f9268d18","vetoSlashHints(address,bytes32,uint48)":"5264679b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"baseSlasherHints\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AlreadySet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CheckpointUnorderedInsertion\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExternalCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBurnerGas\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientSlash\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCaptureTimestamp\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidResolverSetEpochsDelay\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidVetoDuration\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoBurner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoResolver\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotNetwork\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotNetworkMiddleware\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotResolver\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SlashPeriodEnded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SlashRequestCompleted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SlashRequestNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VetoPeriodEnded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VetoPeriodNotEnded\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"slashIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slashedAmount\",\"type\":\"uint256\"}],\"name\":\"ExecuteSlash\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"slashIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slashAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"vetoDeadline\",\"type\":\"uint48\"}],\"name\":\"RequestSlash\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"}],\"name\":\"SetResolver\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"slashIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"}],\"name\":\"VetoSlash\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BASE_SLASHER_HINTS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BURNER_GAS_LIMIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BURNER_RESERVE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NETWORK_MIDDLEWARE_SERVICE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NETWORK_REGISTRY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TYPE\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VAULT_FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"cumulativeSlash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"cumulativeSlashAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"slashIndex\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"hints\",\"type\":\"bytes\"}],\"name\":\"executeSlash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"slashedAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"slasher\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"}],\"name\":\"executeSlashHints\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isBurnerHook\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"latestSlashedCaptureTimestamp\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"value\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hints\",\"type\":\"bytes\"}],\"name\":\"requestSlash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"slashIndex\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"slasher\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"}],\"name\":\"requestSlashHints\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"resolver\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"resolverAt\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"slasher\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"resolverHint\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"resolverHintInternal\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"exists\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"hint\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resolverSetEpochsDelay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint96\",\"name\":\"identifier\",\"type\":\"uint96\"},{\"internalType\":\"address\",\"name\":\"resolver_\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"hints\",\"type\":\"bytes\"}],\"name\":\"setResolver\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"slasher\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"setResolverHints\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"slashRequests\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"vetoDeadline\",\"type\":\"uint48\"},{\"internalType\":\"bool\",\"name\":\"completed\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slashRequestsLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hints\",\"type\":\"bytes\"}],\"name\":\"slashableStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"staticDelegateCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vetoDuration\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"slashIndex\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"hints\",\"type\":\"bytes\"}],\"name\":\"vetoSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"slasher\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"}],\"name\":\"vetoSlashHints\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"CheckpointUnorderedInsertion()\":[{\"details\":\"A value was attempted to be inserted on a past checkpoint.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}]},\"events\":{\"ExecuteSlash(uint256,uint256)\":{\"params\":{\"slashIndex\":\"index of the slash request\",\"slashedAmount\":\"virtual amount of the collateral slashed\"}},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"RequestSlash(uint256,bytes32,address,uint256,uint48,uint48)\":{\"params\":{\"captureTimestamp\":\"time point when the stake was captured\",\"operator\":\"operator that could be slashed (if the request is not vetoed)\",\"slashAmount\":\"maximum amount of the collateral to be slashed\",\"slashIndex\":\"index of the slash request\",\"subnetwork\":\"subnetwork that requested the slash\",\"vetoDeadline\":\"deadline for the resolver to veto the slash (exclusively)\"}},\"SetResolver(bytes32,address)\":{\"params\":{\"resolver\":\"address of the resolver\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"VetoSlash(uint256,address)\":{\"params\":{\"resolver\":\"address of the resolver that vetoed the slash\",\"slashIndex\":\"index of the slash request\"}}},\"kind\":\"dev\",\"methods\":{\"cumulativeSlash(bytes32,address)\":{\"params\":{\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"_0\":\"cumulative slash amount\"}},\"cumulativeSlashAt(bytes32,address,uint48,bytes)\":{\"params\":{\"hint\":\"hint for the checkpoint index\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\",\"timestamp\":\"time point to get the cumulative slash amount until (inclusively)\"},\"returns\":{\"_0\":\"cumulative slash amount until the given timestamp (inclusively)\"}},\"executeSlash(uint256,bytes)\":{\"details\":\"Only a network middleware can call this function.\",\"params\":{\"hints\":\"hints for checkpoints' indexes\",\"slashIndex\":\"index of the slash request\"},\"returns\":{\"slashedAmount\":\"virtual amount of the collateral slashed\"}},\"initialize(bytes)\":{\"params\":{\"data\":\"some data to use\"}},\"requestSlash(bytes32,address,uint256,uint48,bytes)\":{\"details\":\"Only a network middleware can call this function.\",\"params\":{\"amount\":\"maximum amount of the collateral to be slashed\",\"captureTimestamp\":\"time point when the stake was captured\",\"hints\":\"hints for checkpoints' indexes\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"slashIndex\":\"index of the slash request\"}},\"resolver(bytes32,bytes)\":{\"params\":{\"hint\":\"hint for the checkpoint index\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"_0\":\"address of the resolver\"}},\"resolverAt(bytes32,uint48,bytes)\":{\"params\":{\"hint\":\"hint for the checkpoint index\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\",\"timestamp\":\"timestamp to get the resolver at\"},\"returns\":{\"_0\":\"address of the resolver\"}},\"slashRequestsLength()\":{\"returns\":{\"_0\":\"total number of slash requests\"}},\"slashableStake(bytes32,address,uint48,bytes)\":{\"params\":{\"captureTimestamp\":\"time point to get the stake amount at\",\"hints\":\"hints for the checkpoints' indexes\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"amount\":\"slashable amount of the stake\"}},\"staticDelegateCall(address,bytes)\":{\"details\":\"It allows to use this contract's storage on-chain.\",\"params\":{\"data\":\"data to make a delegatecall with\",\"target\":\"address of the contract to make a delegatecall to\"}},\"vetoSlash(uint256,bytes)\":{\"details\":\"Only a resolver can call this function.\",\"params\":{\"hints\":\"hints for checkpoints' indexes\",\"slashIndex\":\"index of the slash request\"}}},\"version\":1},\"userdoc\":{\"events\":{\"ExecuteSlash(uint256,uint256)\":{\"notice\":\"Emitted when a slash request is executed.\"},\"RequestSlash(uint256,bytes32,address,uint256,uint48,uint48)\":{\"notice\":\"Emitted when a slash request is created.\"},\"SetResolver(bytes32,address)\":{\"notice\":\"Emitted when a resolver is set.\"},\"VetoSlash(uint256,address)\":{\"notice\":\"Emitted when a slash request is vetoed.\"}},\"kind\":\"user\",\"methods\":{\"BURNER_GAS_LIMIT()\":{\"notice\":\"Get a gas limit for the burner.\"},\"BURNER_RESERVE()\":{\"notice\":\"Get a reserve gas between the gas limit check and the burner's execution.\"},\"FACTORY()\":{\"notice\":\"Get the factory's address.\"},\"NETWORK_MIDDLEWARE_SERVICE()\":{\"notice\":\"Get the network middleware service's address.\"},\"NETWORK_REGISTRY()\":{\"notice\":\"Get the network registry's address.\"},\"TYPE()\":{\"notice\":\"Get the entity's type.\"},\"VAULT_FACTORY()\":{\"notice\":\"Get the vault factory's address.\"},\"cumulativeSlash(bytes32,address)\":{\"notice\":\"Get a cumulative slash amount for an operator on a subnetwork.\"},\"cumulativeSlashAt(bytes32,address,uint48,bytes)\":{\"notice\":\"Get a cumulative slash amount for an operator on a subnetwork until a given timestamp (inclusively) using a hint.\"},\"executeSlash(uint256,bytes)\":{\"notice\":\"Execute a slash with a given slash index using hints.\"},\"initialize(bytes)\":{\"notice\":\"Initialize this entity contract by using a given data.\"},\"isBurnerHook()\":{\"notice\":\"Get if the burner is needed to be called on a slashing.\"},\"latestSlashedCaptureTimestamp(bytes32,address)\":{\"notice\":\"Get the latest capture timestamp that was slashed on a subnetwork.\"},\"requestSlash(bytes32,address,uint256,uint48,bytes)\":{\"notice\":\"Request a slash using a subnetwork for a particular operator by a given amount using hints.\"},\"resolver(bytes32,bytes)\":{\"notice\":\"Get a resolver for a given subnetwork using a hint.\"},\"resolverAt(bytes32,uint48,bytes)\":{\"notice\":\"Get a resolver for a given subnetwork at a particular timestamp using a hint.\"},\"resolverSetEpochsDelay()\":{\"notice\":\"Get a delay for networks in epochs to update a resolver.\"},\"slashRequests(uint256)\":{\"notice\":\"Get a particular slash request.\"},\"slashRequestsLength()\":{\"notice\":\"Get a total number of slash requests.\"},\"slashableStake(bytes32,address,uint48,bytes)\":{\"notice\":\"Get a slashable amount of a stake got at a given capture timestamp using hints.\"},\"staticDelegateCall(address,bytes)\":{\"notice\":\"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data).\"},\"vault()\":{\"notice\":\"Get the vault's address.\"},\"vetoDuration()\":{\"notice\":\"Get a duration during which resolvers can veto slash requests.\"},\"vetoSlash(uint256,bytes)\":{\"notice\":\"Veto a slash with a given slash index using hints.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/hints/SlasherHints.sol\":\"VetoSlasherHints\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://942dad22fbdc1669f025540ba63aa3ccfad5f8458fc5d4525b31ebf272e7af45\",\"dweb:/ipfs/Qmdo4X2M82aM3AMoW2kf2jhYkSCyC4T1pHNd6obdsDFnAB\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45\",\"dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26\",\"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol\":{\"keccak256\":\"0x85a45f3f10014a0f8be41157a32b6a5f905753ea64a4b64e29fc12b7deeecf39\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c3c74009ce36136b36c77c23935b8e4a7b4f253be2da2be4fb4a916b1ce43743\",\"dweb:/ipfs/QmcH36v3iN7SJJuF73AunLR2LtNxhVJ1wm63ph4dPZ4pcL\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x18a7171df639a934592915a520ecb97c5bbc9675a1105607aac8a94e72bf62c6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7478e1f13da69a2867ccd883001d836b75620362e743f196376d63ed0c422a1c\",\"dweb:/ipfs/QmWywcQ9TNfwtoqAxbn25d8C5VrV12PrPS9UjtGe6pL2BA\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xeed0a08b0b091f528356cbc7245891a4c748682d4f6a18055e8e6ca77d12a6cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba80ba06c8e6be852847e4c5f4492cef801feb6558ae09ed705ff2e04ea8b13c\",\"dweb:/ipfs/QmXRJDv3xHLVQCVXg1ZvR35QS9sij5y9NDWYzMfUfAdTHF\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x999f705a027ed6dc2d4e0df2cc4a509852c6bfd11de1c8161bf88832d0503fd0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0798def67258d9a3cc20b2b4da7ebf351a5cefe0abfdd665d2d81f8e32f89b21\",\"dweb:/ipfs/QmPEvJosnPfzHNjKvCv2D3891mA2Ww8eUwkqrxBjuYdHCt\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0xba333517a3add42cd35fe877656fc3dfcc9de53baa4f3aabbd6d12a92e4ea435\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ceacff44c0fdc81e48e0e0b1db87a2076d3c1fb497341de077bf1da9f6b406c\",\"dweb:/ipfs/QmRUo1muMRAewxrKQ7TkXUtknyRoR57AyEkoPpiuZQ8FzX\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/SignatureChecker.sol\":{\"keccak256\":\"0x6b11eb41a228cca35d4b662b4df69fcd75192851365102690f57b2ac01e83fe6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab006a2983ed350d2af21ddcdd835dcae3b8340086cc4d088460da5abd041f69\",\"dweb:/ipfs/QmbEacDhkJZiGrgzLjB4pNtE8Z1uudjDw1DvcDUTVQFsLG\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c\",\"dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0xbdc5e074d7dd6678f67e92b1a51a20226801a407b0e1af3da367c5d1ff4519ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a36cca6b22fff3db16fc789ff6c60eea71d4b156065d4d0c83a0bc5e91a77a8b\",\"dweb:/ipfs/QmYN3exd5AemxjBrN8XMB1p5LbbE16uC3sjbYjwi8AjcGR\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0xc7755af115020049e4140f224f9ee88d7e1799ffb0646f37bf0df24bf6213f58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f09bf94d5274334ec021f61a04659db303f31e60460e14b709c9bf187740111\",\"dweb:/ipfs/QmNvgomZYUwFAt4cZbPWAiTeSZQreGehY9BK5xyVJsUttb\"]},\"src/contracts/common/Entity.sol\":{\"keccak256\":\"0x3d61a932995b8443381f3950542d388223a2c26dd5d29a3274dea3baa7388bd7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7cdf5f03ca72fd263fd32ff59c8d88ddca911ae83896a287d10772c1bbe9b138\",\"dweb:/ipfs/QmbP84r5BWT1Rn9AYTntWSf3xUMTTCohTZJFhbBhDXFoHa\"]},\"src/contracts/common/MigratableEntity.sol\":{\"keccak256\":\"0x2d736f4dacd5d7e7697503bc426c78b8250fe1694ca157965ec178da6807de58\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f1237acf96b4b9f9b69156e068eddd726a6e15bd8e87a18dc999cd4ba4da069c\",\"dweb:/ipfs/QmS6M8fiFFSeuJ4ZKKq1z8W7w4ybeHQSy5TLASGoc1LVic\"]},\"src/contracts/common/StaticDelegateCallable.sol\":{\"keccak256\":\"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764\",\"dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD\"]},\"src/contracts/delegator/BaseDelegator.sol\":{\"keccak256\":\"0x7c54d491fdd4415b764a9c8defa068e56d4c0c8c9419be0053a1d377669290e8\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://9238bfbad0f6eeb0dc7727724de14380f1980b395902269703d5e2ef07e52e10\",\"dweb:/ipfs/QmPJn1V4HNXcEghYvogGuSTF24dSQUPosR5qtsXcmNqRm3\"]},\"src/contracts/delegator/FullRestakeDelegator.sol\":{\"keccak256\":\"0x0a81c4f8e72914563a9cb771e93acf889c71ea36b7bec040e4eb562b199d5af1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6fc66b6ba02da77046a0bbbd1dd407a62c08f52e04486c9cbd2cb1cca3da555f\",\"dweb:/ipfs/QmZQivK1ZnMxfRQQ5aLpV9co5u55wQVNev5Rg1hzAqxhkE\"]},\"src/contracts/delegator/NetworkRestakeDelegator.sol\":{\"keccak256\":\"0xd3a8e6522f9c6fdcc2da837c9023afd6bdff2bce45a35590320c475519e3636d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://58b17a87f6554f08376f9ea7fedf486a4aa75801bf0ad8b23ff5a46959b6b7a3\",\"dweb:/ipfs/QmSTmNh67tYt8CmjVZb57r8N3qX5yeYdMApKPJm3qvQgQw\"]},\"src/contracts/delegator/OperatorNetworkSpecificDelegator.sol\":{\"keccak256\":\"0x031a10722b9ec49048f0952710401131290adb87e71caf294e864e7ac3b98a16\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://72428febc875134b2f29205e6f294634a1c22a7d5c78d6a9cb2f8196f107c9b5\",\"dweb:/ipfs/QmTPwXR6h5oytckmkLrHdKeEMdphJxceDhYUR4zvQeWAwY\"]},\"src/contracts/delegator/OperatorSpecificDelegator.sol\":{\"keccak256\":\"0x630ce62fa30b9f3349ab7a8cf8dbf041319febc6dd757be2f94d3d25944ed328\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c2ac59d47ce57d2a6819ae9833e1a618a371eccff93eb5ab367b201b01f42bfa\",\"dweb:/ipfs/QmdBpGMBivpNPv2WbH8vnCUy5xkVeaxQvGgqi33vKCz1kA\"]},\"src/contracts/hints/DelegatorHints.sol\":{\"keccak256\":\"0x44aa0c396311a54afbc7c73e8dadeed41e3165a4fd13f712b27d63d50fc3376d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://2f255214f3531fc707d88be0d56a7a0aed4180439316d099d760d9118aa83093\",\"dweb:/ipfs/QmZD1w5p1ukJSXumUAjvxwGmkPhn7vsr21Y2atLGEZR2oi\"]},\"src/contracts/hints/Hints.sol\":{\"keccak256\":\"0x8b565df1ae35993c097a9e642002782a8f451f6fd01809cad6bcd345bdf1b99c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://99a19adb01e350a92f534095b3078229df1f2f83077992d75d58d8684be45971\",\"dweb:/ipfs/QmbmwcuswVbzvwHQFTtrJG86oV98GnfxqYTb8cV8u1acox\"]},\"src/contracts/hints/OptInServiceHints.sol\":{\"keccak256\":\"0x95d9407900d27b9f4a1233b772aeed809c07b2dc5b31cfc9fa77ca26514c49e5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://a13a8877e312d7e6b8b85bde3668c5d84ff5ecc83f762cd573f2b7104c64eb42\",\"dweb:/ipfs/QmYV2J55acuGzCNnS3juABuUHY5U1xc8g8o9jwEyFFdeG5\"]},\"src/contracts/hints/SlasherHints.sol\":{\"keccak256\":\"0xd77c5f3bbb0265af8ecd947df88f6f9684e136d80052b5292f5b29aaa3566a3f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://484a26504bf6706202ec82a9a4cfa7d196bbc552b5b78ced25bf7130c2842595\",\"dweb:/ipfs/QmaQqmkoZoUWEam4R94vmajzH3gKqFqpZQwFbrHDsN1peV\"]},\"src/contracts/hints/VaultHints.sol\":{\"keccak256\":\"0xccb505b7159b769cc114d67b87c2de6b106557f667fc8f3780114baad5c3c442\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6d0c80a908fc16e96a8b5605a0bd53f9e89ad0ef0a738fbbae80ba4d3160749b\",\"dweb:/ipfs/QmXo5UtWoR8YmunqcbBU8rQMm1nvmvjNPoXcVrDhh4pEwR\"]},\"src/contracts/libraries/Checkpoints.sol\":{\"keccak256\":\"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609\",\"dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE\"]},\"src/contracts/libraries/ERC4626Math.sol\":{\"keccak256\":\"0x8441160513c1cbeb1c3b9ee077bcc7e7ce20006b52a77c8dd39ff0ef89699939\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://943f8cc3e26ddf649f465f40c909819f5c864717c4baa339e9e403b9374a4653\",\"dweb:/ipfs/QmXPxi1sUDsrGprZdUgCzoPEosaZMv9ZhygWQ1vAi1phAB\"]},\"src/contracts/libraries/Subnetwork.sol\":{\"keccak256\":\"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56\",\"dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32\"]},\"src/contracts/service/OptInService.sol\":{\"keccak256\":\"0x4e0932077f2686b7990e10d59deb2535334c0d09e52ef6e57c6ab09eca21c4b1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7c00d311032ed4a1743aca7475f3c86ce15cdfc2218108efc3731c03d34a5278\",\"dweb:/ipfs/QmUGGfVwVhaHr5kS4177yKKYiLYzi5qZpkEmvYxBZqazxf\"]},\"src/contracts/slasher/BaseSlasher.sol\":{\"keccak256\":\"0x190e5dce196a061bdad42468c52e9f5b0eb7810cd7d0c19f04d6a2e94984f1b6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://07ca08d0cd43c2fe5d54a5577f6bdd522ced410f5d3a52e764deaa7ba26b5f06\",\"dweb:/ipfs/QmZe3PiMKBQKWcwodaLupragdqxPjgS4v1qMC7RXau8hDF\"]},\"src/contracts/slasher/Slasher.sol\":{\"keccak256\":\"0xeee0cb25fad58d496fdcc641d852d11bae06e6ceed5230ae21150964175c494f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://34aa27d21246a1bcee0b6a2afa8d9d613441156362430392f75d176511d58c61\",\"dweb:/ipfs/Qmf53Y3zdGfH4PU2zpSGeHZ8mMLzLXCtmkQrG5mnVJECQ3\"]},\"src/contracts/slasher/VetoSlasher.sol\":{\"keccak256\":\"0xeccc8128de5e1ad499c067feac1c526638fbbac1a18b96726fc7507969fd5897\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://cdfcf281338423625acbccdf8810115b258ef7cfe4aa3c10b8911ead1aa85429\",\"dweb:/ipfs/QmZFsDvZXpkFkx4PHcDXAVPN3ZCAahbSVfYpSVrMBvbt4k\"]},\"src/contracts/vault/Vault.sol\":{\"keccak256\":\"0x2ceff6ed3298c4cad144c99fcc79b51cb9397d6ebef00285b915848b476f8c2e\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://11f2fb3581854f3ab6e82e8d4935d9eb510c903a13c3f022346c2956a58f5307\",\"dweb:/ipfs/QmdUnoXoyYoG9SGWyQZCFyLDRUUX3eXyXetkRvw6jxqqBz\"]},\"src/contracts/vault/VaultStorage.sol\":{\"keccak256\":\"0x57db25b127d77ea3472de53e3a4af3354399655b9268638b99ca5925fa364a56\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://aa763d9a6ec508ae3abfb8228b72b9fd9525279e5135d4962e79ff059feb1173\",\"dweb:/ipfs/QmcbDR6E9wyEpu6V2FkEC4hnWy47zXA9LSKJde6zSGd33Q\"]},\"src/interfaces/common/IEntity.sol\":{\"keccak256\":\"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b\",\"dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv\"]},\"src/interfaces/common/IMigratableEntity.sol\":{\"keccak256\":\"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c\",\"dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds\"]},\"src/interfaces/common/IRegistry.sol\":{\"keccak256\":\"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014\",\"dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK\"]},\"src/interfaces/common/IStaticDelegateCallable.sol\":{\"keccak256\":\"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516\",\"dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi\"]},\"src/interfaces/delegator/IBaseDelegator.sol\":{\"keccak256\":\"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2\",\"dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8\"]},\"src/interfaces/delegator/IDelegatorHook.sol\":{\"keccak256\":\"0xc51aa8d7d1f6c8043ee819b7aeb86da0e993912e1442098df897e299f01f9f46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://adddf5cb2ba282aeb576b26efb28640f865a1721cc9b6eee8b3ee0457a2c9780\",\"dweb:/ipfs/QmNYgAmnLRwWZbhTuQhZs9rx4zcme1df5mEepkrniorSoW\"]},\"src/interfaces/delegator/IFullRestakeDelegator.sol\":{\"keccak256\":\"0xa3c8cb2e45d4d8ce90e95263bea40c01dc400f05ad65bc29597d878606be5e7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://782cf5e201aa4cca037ebafd3807a68ff1cc721d5b8416a35244db0d0607369e\",\"dweb:/ipfs/QmQkJks6x7CKndeTPa9LxgTNygD5uEi7obhADhpq1Lsr9A\"]},\"src/interfaces/delegator/INetworkRestakeDelegator.sol\":{\"keccak256\":\"0xe7030fe30389a147fd710e3436ec346b4842695fd3e65a81b95375c9f1d633fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://739c7e66d301778054f5c90bee45ec9438f68afba8a03eaaac52064c73b115ad\",\"dweb:/ipfs/QmfZ2ytKcTykAc76nxhg8ikUXV8NdBpetqb8W4YWPcox1Z\"]},\"src/interfaces/delegator/IOperatorNetworkSpecificDelegator.sol\":{\"keccak256\":\"0x74b95e64d29769202d45dd277bb830f623ff3d41ce77b80ce3ee4e318a5c71ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e512b903aae5c1b8a028c6e3f4f6223b5cb5d704503cfa6bd37b5346868f5c20\",\"dweb:/ipfs/QmZim9YExsPWtyxyeui993HTKAEmrg8MUcSkZ77Gp2JcuZ\"]},\"src/interfaces/delegator/IOperatorSpecificDelegator.sol\":{\"keccak256\":\"0x72075cab585dc17240cc3e32bc99b92f0d5627ddd988fed680e3e1a52d5a01e4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7448bc90699409ae61d85216b5efc2143a37f0f73354be2aea993bc54afca441\",\"dweb:/ipfs/QmXE4gAxM8pHosZK8mcTcj17puBx484meDCcmrDePskGHZ\"]},\"src/interfaces/service/INetworkMiddlewareService.sol\":{\"keccak256\":\"0x347afc7fcf1fbcdb96d66162070ef6c78aed27b3af2c1d5dfb4e511840631783\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d90b8ceb495159e8e4e95d76447719dd166443f67dfabdd942846162071595c\",\"dweb:/ipfs/QmVVuiAWYx92T6vBvNMKZfTvraCf1fa16BsUKkdNs3hdHA\"]},\"src/interfaces/service/IOptInService.sol\":{\"keccak256\":\"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337\",\"dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24\"]},\"src/interfaces/slasher/IBaseSlasher.sol\":{\"keccak256\":\"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf\",\"dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx\"]},\"src/interfaces/slasher/IBurner.sol\":{\"keccak256\":\"0xaf495dacc19ae0b3c787ba8021c5944927d70261536addd234d7dab146158c2b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b3cc66251008be6ff9fc8b11ecc6831d5a9dca49a3fe9817fcd970253c1d447\",\"dweb:/ipfs/QmVxfb9ALGdF9W3SN2h41gQbUct6tawvu5bw4K89kFQ4HW\"]},\"src/interfaces/slasher/ISlasher.sol\":{\"keccak256\":\"0x34d226d67a3d5e16571f2fac91a8b9773551bcc41c88a96279669dd78d192625\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a6e8c1462ee4a1b0f745414be043c09012ea676613790aba004b06c85c980d1\",\"dweb:/ipfs/QmadjNEbHKRthtA1EeNy3Kg2sXpejH2KBeHm8QZtBPvXbJ\"]},\"src/interfaces/slasher/IVetoSlasher.sol\":{\"keccak256\":\"0xdf7edd04a4f36e9aec3a15241dcb6b6315b2e64927b12710c2c410d571fc55e9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c4be6ac339c2ebf230fed65363f036784224095d0cd0f3f2d01d64d6e0da9508\",\"dweb:/ipfs/QmRSMbpfaHExqrzUA8vYZMYZWh6eQW1KX9JKJSLdgronfg\"]},\"src/interfaces/vault/IVault.sol\":{\"keccak256\":\"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9\",\"dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R\"]},\"src/interfaces/vault/IVaultStorage.sol\":{\"keccak256\":\"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e\",\"dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"baseSlasherHints","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AlreadySet"},{"inputs":[],"type":"error","name":"CheckpointUnorderedInsertion"},{"inputs":[],"type":"error","name":"ExternalCall"},{"inputs":[],"type":"error","name":"InsufficientBurnerGas"},{"inputs":[],"type":"error","name":"InsufficientSlash"},{"inputs":[],"type":"error","name":"InvalidCaptureTimestamp"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"InvalidResolverSetEpochsDelay"},{"inputs":[],"type":"error","name":"InvalidVetoDuration"},{"inputs":[],"type":"error","name":"NoBurner"},{"inputs":[],"type":"error","name":"NoResolver"},{"inputs":[],"type":"error","name":"NotInitialized"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"NotNetwork"},{"inputs":[],"type":"error","name":"NotNetworkMiddleware"},{"inputs":[],"type":"error","name":"NotResolver"},{"inputs":[],"type":"error","name":"NotVault"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintDowncast"},{"inputs":[],"type":"error","name":"SlashPeriodEnded"},{"inputs":[],"type":"error","name":"SlashRequestCompleted"},{"inputs":[],"type":"error","name":"SlashRequestNotExist"},{"inputs":[],"type":"error","name":"VetoPeriodEnded"},{"inputs":[],"type":"error","name":"VetoPeriodNotEnded"},{"inputs":[{"internalType":"uint256","name":"slashIndex","type":"uint256","indexed":true},{"internalType":"uint256","name":"slashedAmount","type":"uint256","indexed":false}],"type":"event","name":"ExecuteSlash","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"uint256","name":"slashIndex","type":"uint256","indexed":true},{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"slashAmount","type":"uint256","indexed":false},{"internalType":"uint48","name":"captureTimestamp","type":"uint48","indexed":false},{"internalType":"uint48","name":"vetoDeadline","type":"uint48","indexed":false}],"type":"event","name":"RequestSlash","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"address","name":"resolver","type":"address","indexed":false}],"type":"event","name":"SetResolver","anonymous":false},{"inputs":[{"internalType":"uint256","name":"slashIndex","type":"uint256","indexed":true},{"internalType":"address","name":"resolver","type":"address","indexed":true}],"type":"event","name":"VetoSlash","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"BASE_SLASHER_HINTS","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"BURNER_GAS_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"BURNER_RESERVE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"NETWORK_MIDDLEWARE_SERVICE","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"NETWORK_REGISTRY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"TYPE","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VAULT_FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"cumulativeSlash","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"cumulativeSlashAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"slashIndex","type":"uint256"},{"internalType":"bytes","name":"hints","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"executeSlash","outputs":[{"internalType":"uint256","name":"slashedAmount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"slasher","type":"address"},{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"captureTimestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"executeSlashHints","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"isBurnerHook","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"latestSlashedCaptureTimestamp","outputs":[{"internalType":"uint48","name":"value","type":"uint48"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint48","name":"captureTimestamp","type":"uint48"},{"internalType":"bytes","name":"hints","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"requestSlash","outputs":[{"internalType":"uint256","name":"slashIndex","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"slasher","type":"address"},{"internalType":"address","name":"msgSender","type":"address"},{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint48","name":"captureTimestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"requestSlashHints","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"resolver","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"resolverAt","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"slasher","type":"address"},{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"resolverHint","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"resolverHintInternal","outputs":[{"internalType":"bool","name":"exists","type":"bool"},{"internalType":"uint32","name":"hint","type":"uint32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"resolverSetEpochsDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint96","name":"identifier","type":"uint96"},{"internalType":"address","name":"resolver_","type":"address"},{"internalType":"bytes","name":"hints","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"setResolver"},{"inputs":[{"internalType":"address","name":"slasher","type":"address"},{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"setResolverHints","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"slashRequests","outputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint48","name":"captureTimestamp","type":"uint48"},{"internalType":"uint48","name":"vetoDeadline","type":"uint48"},{"internalType":"bool","name":"completed","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"slashRequestsLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"captureTimestamp","type":"uint48"},{"internalType":"bytes","name":"hints","type":"bytes"}],"stateMutability":"view","type":"function","name":"slashableStake","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"staticDelegateCall"},{"inputs":[],"stateMutability":"view","type":"function","name":"vault","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"vetoDuration","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[{"internalType":"uint256","name":"slashIndex","type":"uint256"},{"internalType":"bytes","name":"hints","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"vetoSlash"},{"inputs":[{"internalType":"address","name":"slasher","type":"address"},{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint48","name":"captureTimestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"vetoSlashHints","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]}],"devdoc":{"kind":"dev","methods":{"cumulativeSlash(bytes32,address)":{"params":{"operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"_0":"cumulative slash amount"}},"cumulativeSlashAt(bytes32,address,uint48,bytes)":{"params":{"hint":"hint for the checkpoint index","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)","timestamp":"time point to get the cumulative slash amount until (inclusively)"},"returns":{"_0":"cumulative slash amount until the given timestamp (inclusively)"}},"executeSlash(uint256,bytes)":{"details":"Only a network middleware can call this function.","params":{"hints":"hints for checkpoints' indexes","slashIndex":"index of the slash request"},"returns":{"slashedAmount":"virtual amount of the collateral slashed"}},"initialize(bytes)":{"params":{"data":"some data to use"}},"requestSlash(bytes32,address,uint256,uint48,bytes)":{"details":"Only a network middleware can call this function.","params":{"amount":"maximum amount of the collateral to be slashed","captureTimestamp":"time point when the stake was captured","hints":"hints for checkpoints' indexes","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"slashIndex":"index of the slash request"}},"resolver(bytes32,bytes)":{"params":{"hint":"hint for the checkpoint index","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"_0":"address of the resolver"}},"resolverAt(bytes32,uint48,bytes)":{"params":{"hint":"hint for the checkpoint index","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)","timestamp":"timestamp to get the resolver at"},"returns":{"_0":"address of the resolver"}},"slashRequestsLength()":{"returns":{"_0":"total number of slash requests"}},"slashableStake(bytes32,address,uint48,bytes)":{"params":{"captureTimestamp":"time point to get the stake amount at","hints":"hints for the checkpoints' indexes","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"amount":"slashable amount of the stake"}},"staticDelegateCall(address,bytes)":{"details":"It allows to use this contract's storage on-chain.","params":{"data":"data to make a delegatecall with","target":"address of the contract to make a delegatecall to"}},"vetoSlash(uint256,bytes)":{"details":"Only a resolver can call this function.","params":{"hints":"hints for checkpoints' indexes","slashIndex":"index of the slash request"}}},"version":1},"userdoc":{"kind":"user","methods":{"BURNER_GAS_LIMIT()":{"notice":"Get a gas limit for the burner."},"BURNER_RESERVE()":{"notice":"Get a reserve gas between the gas limit check and the burner's execution."},"FACTORY()":{"notice":"Get the factory's address."},"NETWORK_MIDDLEWARE_SERVICE()":{"notice":"Get the network middleware service's address."},"NETWORK_REGISTRY()":{"notice":"Get the network registry's address."},"TYPE()":{"notice":"Get the entity's type."},"VAULT_FACTORY()":{"notice":"Get the vault factory's address."},"cumulativeSlash(bytes32,address)":{"notice":"Get a cumulative slash amount for an operator on a subnetwork."},"cumulativeSlashAt(bytes32,address,uint48,bytes)":{"notice":"Get a cumulative slash amount for an operator on a subnetwork until a given timestamp (inclusively) using a hint."},"executeSlash(uint256,bytes)":{"notice":"Execute a slash with a given slash index using hints."},"initialize(bytes)":{"notice":"Initialize this entity contract by using a given data."},"isBurnerHook()":{"notice":"Get if the burner is needed to be called on a slashing."},"latestSlashedCaptureTimestamp(bytes32,address)":{"notice":"Get the latest capture timestamp that was slashed on a subnetwork."},"requestSlash(bytes32,address,uint256,uint48,bytes)":{"notice":"Request a slash using a subnetwork for a particular operator by a given amount using hints."},"resolver(bytes32,bytes)":{"notice":"Get a resolver for a given subnetwork using a hint."},"resolverAt(bytes32,uint48,bytes)":{"notice":"Get a resolver for a given subnetwork at a particular timestamp using a hint."},"resolverSetEpochsDelay()":{"notice":"Get a delay for networks in epochs to update a resolver."},"slashRequests(uint256)":{"notice":"Get a particular slash request."},"slashRequestsLength()":{"notice":"Get a total number of slash requests."},"slashableStake(bytes32,address,uint48,bytes)":{"notice":"Get a slashable amount of a stake got at a given capture timestamp using hints."},"staticDelegateCall(address,bytes)":{"notice":"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data)."},"vault()":{"notice":"Get the vault's address."},"vetoDuration()":{"notice":"Get a duration during which resolvers can veto slash requests."},"vetoSlash(uint256,bytes)":{"notice":"Veto a slash with a given slash index using hints."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/hints/SlasherHints.sol":"VetoSlasherHints"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol":{"keccak256":"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74","urls":["bzz-raw://942dad22fbdc1669f025540ba63aa3ccfad5f8458fc5d4525b31ebf272e7af45","dweb:/ipfs/Qmdo4X2M82aM3AMoW2kf2jhYkSCyC4T1pHNd6obdsDFnAB"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8","urls":["bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45","dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41","urls":["bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26","dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol":{"keccak256":"0x85a45f3f10014a0f8be41157a32b6a5f905753ea64a4b64e29fc12b7deeecf39","urls":["bzz-raw://c3c74009ce36136b36c77c23935b8e4a7b4f253be2da2be4fb4a916b1ce43743","dweb:/ipfs/QmcH36v3iN7SJJuF73AunLR2LtNxhVJ1wm63ph4dPZ4pcL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol":{"keccak256":"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92","urls":["bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a","dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70","urls":["bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c","dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff","urls":["bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d","dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386","urls":["bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0","dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721","urls":["bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245","dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol":{"keccak256":"0x18a7171df639a934592915a520ecb97c5bbc9675a1105607aac8a94e72bf62c6","urls":["bzz-raw://7478e1f13da69a2867ccd883001d836b75620362e743f196376d63ed0c422a1c","dweb:/ipfs/QmWywcQ9TNfwtoqAxbn25d8C5VrV12PrPS9UjtGe6pL2BA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418","urls":["bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c","dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792","urls":["bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453","dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0xeed0a08b0b091f528356cbc7245891a4c748682d4f6a18055e8e6ca77d12a6cf","urls":["bzz-raw://ba80ba06c8e6be852847e4c5f4492cef801feb6558ae09ed705ff2e04ea8b13c","dweb:/ipfs/QmXRJDv3xHLVQCVXg1ZvR35QS9sij5y9NDWYzMfUfAdTHF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol":{"keccak256":"0x999f705a027ed6dc2d4e0df2cc4a509852c6bfd11de1c8161bf88832d0503fd0","urls":["bzz-raw://0798def67258d9a3cc20b2b4da7ebf351a5cefe0abfdd665d2d81f8e32f89b21","dweb:/ipfs/QmPEvJosnPfzHNjKvCv2D3891mA2Ww8eUwkqrxBjuYdHCt"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0xba333517a3add42cd35fe877656fc3dfcc9de53baa4f3aabbd6d12a92e4ea435","urls":["bzz-raw://2ceacff44c0fdc81e48e0e0b1db87a2076d3c1fb497341de077bf1da9f6b406c","dweb:/ipfs/QmRUo1muMRAewxrKQ7TkXUtknyRoR57AyEkoPpiuZQ8FzX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/SignatureChecker.sol":{"keccak256":"0x6b11eb41a228cca35d4b662b4df69fcd75192851365102690f57b2ac01e83fe6","urls":["bzz-raw://ab006a2983ed350d2af21ddcdd835dcae3b8340086cc4d088460da5abd041f69","dweb:/ipfs/QmbEacDhkJZiGrgzLjB4pNtE8Z1uudjDw1DvcDUTVQFsLG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe","urls":["bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c","dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72","urls":["bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc","dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol":{"keccak256":"0xbdc5e074d7dd6678f67e92b1a51a20226801a407b0e1af3da367c5d1ff4519ad","urls":["bzz-raw://a36cca6b22fff3db16fc789ff6c60eea71d4b156065d4d0c83a0bc5e91a77a8b","dweb:/ipfs/QmYN3exd5AemxjBrN8XMB1p5LbbE16uC3sjbYjwi8AjcGR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0xc7755af115020049e4140f224f9ee88d7e1799ffb0646f37bf0df24bf6213f58","urls":["bzz-raw://7f09bf94d5274334ec021f61a04659db303f31e60460e14b709c9bf187740111","dweb:/ipfs/QmNvgomZYUwFAt4cZbPWAiTeSZQreGehY9BK5xyVJsUttb"],"license":"MIT"},"src/contracts/common/Entity.sol":{"keccak256":"0x3d61a932995b8443381f3950542d388223a2c26dd5d29a3274dea3baa7388bd7","urls":["bzz-raw://7cdf5f03ca72fd263fd32ff59c8d88ddca911ae83896a287d10772c1bbe9b138","dweb:/ipfs/QmbP84r5BWT1Rn9AYTntWSf3xUMTTCohTZJFhbBhDXFoHa"],"license":"BUSL-1.1"},"src/contracts/common/MigratableEntity.sol":{"keccak256":"0x2d736f4dacd5d7e7697503bc426c78b8250fe1694ca157965ec178da6807de58","urls":["bzz-raw://f1237acf96b4b9f9b69156e068eddd726a6e15bd8e87a18dc999cd4ba4da069c","dweb:/ipfs/QmS6M8fiFFSeuJ4ZKKq1z8W7w4ybeHQSy5TLASGoc1LVic"],"license":"BUSL-1.1"},"src/contracts/common/StaticDelegateCallable.sol":{"keccak256":"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90","urls":["bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764","dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD"],"license":"BUSL-1.1"},"src/contracts/delegator/BaseDelegator.sol":{"keccak256":"0x7c54d491fdd4415b764a9c8defa068e56d4c0c8c9419be0053a1d377669290e8","urls":["bzz-raw://9238bfbad0f6eeb0dc7727724de14380f1980b395902269703d5e2ef07e52e10","dweb:/ipfs/QmPJn1V4HNXcEghYvogGuSTF24dSQUPosR5qtsXcmNqRm3"],"license":"BUSL-1.1"},"src/contracts/delegator/FullRestakeDelegator.sol":{"keccak256":"0x0a81c4f8e72914563a9cb771e93acf889c71ea36b7bec040e4eb562b199d5af1","urls":["bzz-raw://6fc66b6ba02da77046a0bbbd1dd407a62c08f52e04486c9cbd2cb1cca3da555f","dweb:/ipfs/QmZQivK1ZnMxfRQQ5aLpV9co5u55wQVNev5Rg1hzAqxhkE"],"license":"BUSL-1.1"},"src/contracts/delegator/NetworkRestakeDelegator.sol":{"keccak256":"0xd3a8e6522f9c6fdcc2da837c9023afd6bdff2bce45a35590320c475519e3636d","urls":["bzz-raw://58b17a87f6554f08376f9ea7fedf486a4aa75801bf0ad8b23ff5a46959b6b7a3","dweb:/ipfs/QmSTmNh67tYt8CmjVZb57r8N3qX5yeYdMApKPJm3qvQgQw"],"license":"BUSL-1.1"},"src/contracts/delegator/OperatorNetworkSpecificDelegator.sol":{"keccak256":"0x031a10722b9ec49048f0952710401131290adb87e71caf294e864e7ac3b98a16","urls":["bzz-raw://72428febc875134b2f29205e6f294634a1c22a7d5c78d6a9cb2f8196f107c9b5","dweb:/ipfs/QmTPwXR6h5oytckmkLrHdKeEMdphJxceDhYUR4zvQeWAwY"],"license":"BUSL-1.1"},"src/contracts/delegator/OperatorSpecificDelegator.sol":{"keccak256":"0x630ce62fa30b9f3349ab7a8cf8dbf041319febc6dd757be2f94d3d25944ed328","urls":["bzz-raw://c2ac59d47ce57d2a6819ae9833e1a618a371eccff93eb5ab367b201b01f42bfa","dweb:/ipfs/QmdBpGMBivpNPv2WbH8vnCUy5xkVeaxQvGgqi33vKCz1kA"],"license":"BUSL-1.1"},"src/contracts/hints/DelegatorHints.sol":{"keccak256":"0x44aa0c396311a54afbc7c73e8dadeed41e3165a4fd13f712b27d63d50fc3376d","urls":["bzz-raw://2f255214f3531fc707d88be0d56a7a0aed4180439316d099d760d9118aa83093","dweb:/ipfs/QmZD1w5p1ukJSXumUAjvxwGmkPhn7vsr21Y2atLGEZR2oi"],"license":"BUSL-1.1"},"src/contracts/hints/Hints.sol":{"keccak256":"0x8b565df1ae35993c097a9e642002782a8f451f6fd01809cad6bcd345bdf1b99c","urls":["bzz-raw://99a19adb01e350a92f534095b3078229df1f2f83077992d75d58d8684be45971","dweb:/ipfs/QmbmwcuswVbzvwHQFTtrJG86oV98GnfxqYTb8cV8u1acox"],"license":"BUSL-1.1"},"src/contracts/hints/OptInServiceHints.sol":{"keccak256":"0x95d9407900d27b9f4a1233b772aeed809c07b2dc5b31cfc9fa77ca26514c49e5","urls":["bzz-raw://a13a8877e312d7e6b8b85bde3668c5d84ff5ecc83f762cd573f2b7104c64eb42","dweb:/ipfs/QmYV2J55acuGzCNnS3juABuUHY5U1xc8g8o9jwEyFFdeG5"],"license":"BUSL-1.1"},"src/contracts/hints/SlasherHints.sol":{"keccak256":"0xd77c5f3bbb0265af8ecd947df88f6f9684e136d80052b5292f5b29aaa3566a3f","urls":["bzz-raw://484a26504bf6706202ec82a9a4cfa7d196bbc552b5b78ced25bf7130c2842595","dweb:/ipfs/QmaQqmkoZoUWEam4R94vmajzH3gKqFqpZQwFbrHDsN1peV"],"license":"BUSL-1.1"},"src/contracts/hints/VaultHints.sol":{"keccak256":"0xccb505b7159b769cc114d67b87c2de6b106557f667fc8f3780114baad5c3c442","urls":["bzz-raw://6d0c80a908fc16e96a8b5605a0bd53f9e89ad0ef0a738fbbae80ba4d3160749b","dweb:/ipfs/QmXo5UtWoR8YmunqcbBU8rQMm1nvmvjNPoXcVrDhh4pEwR"],"license":"BUSL-1.1"},"src/contracts/libraries/Checkpoints.sol":{"keccak256":"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c","urls":["bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609","dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE"],"license":"MIT"},"src/contracts/libraries/ERC4626Math.sol":{"keccak256":"0x8441160513c1cbeb1c3b9ee077bcc7e7ce20006b52a77c8dd39ff0ef89699939","urls":["bzz-raw://943f8cc3e26ddf649f465f40c909819f5c864717c4baa339e9e403b9374a4653","dweb:/ipfs/QmXPxi1sUDsrGprZdUgCzoPEosaZMv9ZhygWQ1vAi1phAB"],"license":"MIT"},"src/contracts/libraries/Subnetwork.sol":{"keccak256":"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe","urls":["bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56","dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32"],"license":"MIT"},"src/contracts/service/OptInService.sol":{"keccak256":"0x4e0932077f2686b7990e10d59deb2535334c0d09e52ef6e57c6ab09eca21c4b1","urls":["bzz-raw://7c00d311032ed4a1743aca7475f3c86ce15cdfc2218108efc3731c03d34a5278","dweb:/ipfs/QmUGGfVwVhaHr5kS4177yKKYiLYzi5qZpkEmvYxBZqazxf"],"license":"BUSL-1.1"},"src/contracts/slasher/BaseSlasher.sol":{"keccak256":"0x190e5dce196a061bdad42468c52e9f5b0eb7810cd7d0c19f04d6a2e94984f1b6","urls":["bzz-raw://07ca08d0cd43c2fe5d54a5577f6bdd522ced410f5d3a52e764deaa7ba26b5f06","dweb:/ipfs/QmZe3PiMKBQKWcwodaLupragdqxPjgS4v1qMC7RXau8hDF"],"license":"BUSL-1.1"},"src/contracts/slasher/Slasher.sol":{"keccak256":"0xeee0cb25fad58d496fdcc641d852d11bae06e6ceed5230ae21150964175c494f","urls":["bzz-raw://34aa27d21246a1bcee0b6a2afa8d9d613441156362430392f75d176511d58c61","dweb:/ipfs/Qmf53Y3zdGfH4PU2zpSGeHZ8mMLzLXCtmkQrG5mnVJECQ3"],"license":"BUSL-1.1"},"src/contracts/slasher/VetoSlasher.sol":{"keccak256":"0xeccc8128de5e1ad499c067feac1c526638fbbac1a18b96726fc7507969fd5897","urls":["bzz-raw://cdfcf281338423625acbccdf8810115b258ef7cfe4aa3c10b8911ead1aa85429","dweb:/ipfs/QmZFsDvZXpkFkx4PHcDXAVPN3ZCAahbSVfYpSVrMBvbt4k"],"license":"BUSL-1.1"},"src/contracts/vault/Vault.sol":{"keccak256":"0x2ceff6ed3298c4cad144c99fcc79b51cb9397d6ebef00285b915848b476f8c2e","urls":["bzz-raw://11f2fb3581854f3ab6e82e8d4935d9eb510c903a13c3f022346c2956a58f5307","dweb:/ipfs/QmdUnoXoyYoG9SGWyQZCFyLDRUUX3eXyXetkRvw6jxqqBz"],"license":"BUSL-1.1"},"src/contracts/vault/VaultStorage.sol":{"keccak256":"0x57db25b127d77ea3472de53e3a4af3354399655b9268638b99ca5925fa364a56","urls":["bzz-raw://aa763d9a6ec508ae3abfb8228b72b9fd9525279e5135d4962e79ff059feb1173","dweb:/ipfs/QmcbDR6E9wyEpu6V2FkEC4hnWy47zXA9LSKJde6zSGd33Q"],"license":"BUSL-1.1"},"src/interfaces/common/IEntity.sol":{"keccak256":"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21","urls":["bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b","dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv"],"license":"MIT"},"src/interfaces/common/IMigratableEntity.sol":{"keccak256":"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4","urls":["bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c","dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds"],"license":"MIT"},"src/interfaces/common/IRegistry.sol":{"keccak256":"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb","urls":["bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014","dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK"],"license":"MIT"},"src/interfaces/common/IStaticDelegateCallable.sol":{"keccak256":"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5","urls":["bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516","dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi"],"license":"MIT"},"src/interfaces/delegator/IBaseDelegator.sol":{"keccak256":"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee","urls":["bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2","dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8"],"license":"MIT"},"src/interfaces/delegator/IDelegatorHook.sol":{"keccak256":"0xc51aa8d7d1f6c8043ee819b7aeb86da0e993912e1442098df897e299f01f9f46","urls":["bzz-raw://adddf5cb2ba282aeb576b26efb28640f865a1721cc9b6eee8b3ee0457a2c9780","dweb:/ipfs/QmNYgAmnLRwWZbhTuQhZs9rx4zcme1df5mEepkrniorSoW"],"license":"MIT"},"src/interfaces/delegator/IFullRestakeDelegator.sol":{"keccak256":"0xa3c8cb2e45d4d8ce90e95263bea40c01dc400f05ad65bc29597d878606be5e7d","urls":["bzz-raw://782cf5e201aa4cca037ebafd3807a68ff1cc721d5b8416a35244db0d0607369e","dweb:/ipfs/QmQkJks6x7CKndeTPa9LxgTNygD5uEi7obhADhpq1Lsr9A"],"license":"MIT"},"src/interfaces/delegator/INetworkRestakeDelegator.sol":{"keccak256":"0xe7030fe30389a147fd710e3436ec346b4842695fd3e65a81b95375c9f1d633fc","urls":["bzz-raw://739c7e66d301778054f5c90bee45ec9438f68afba8a03eaaac52064c73b115ad","dweb:/ipfs/QmfZ2ytKcTykAc76nxhg8ikUXV8NdBpetqb8W4YWPcox1Z"],"license":"MIT"},"src/interfaces/delegator/IOperatorNetworkSpecificDelegator.sol":{"keccak256":"0x74b95e64d29769202d45dd277bb830f623ff3d41ce77b80ce3ee4e318a5c71ec","urls":["bzz-raw://e512b903aae5c1b8a028c6e3f4f6223b5cb5d704503cfa6bd37b5346868f5c20","dweb:/ipfs/QmZim9YExsPWtyxyeui993HTKAEmrg8MUcSkZ77Gp2JcuZ"],"license":"MIT"},"src/interfaces/delegator/IOperatorSpecificDelegator.sol":{"keccak256":"0x72075cab585dc17240cc3e32bc99b92f0d5627ddd988fed680e3e1a52d5a01e4","urls":["bzz-raw://7448bc90699409ae61d85216b5efc2143a37f0f73354be2aea993bc54afca441","dweb:/ipfs/QmXE4gAxM8pHosZK8mcTcj17puBx484meDCcmrDePskGHZ"],"license":"MIT"},"src/interfaces/service/INetworkMiddlewareService.sol":{"keccak256":"0x347afc7fcf1fbcdb96d66162070ef6c78aed27b3af2c1d5dfb4e511840631783","urls":["bzz-raw://2d90b8ceb495159e8e4e95d76447719dd166443f67dfabdd942846162071595c","dweb:/ipfs/QmVVuiAWYx92T6vBvNMKZfTvraCf1fa16BsUKkdNs3hdHA"],"license":"MIT"},"src/interfaces/service/IOptInService.sol":{"keccak256":"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a","urls":["bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337","dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24"],"license":"MIT"},"src/interfaces/slasher/IBaseSlasher.sol":{"keccak256":"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404","urls":["bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf","dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx"],"license":"MIT"},"src/interfaces/slasher/IBurner.sol":{"keccak256":"0xaf495dacc19ae0b3c787ba8021c5944927d70261536addd234d7dab146158c2b","urls":["bzz-raw://9b3cc66251008be6ff9fc8b11ecc6831d5a9dca49a3fe9817fcd970253c1d447","dweb:/ipfs/QmVxfb9ALGdF9W3SN2h41gQbUct6tawvu5bw4K89kFQ4HW"],"license":"MIT"},"src/interfaces/slasher/ISlasher.sol":{"keccak256":"0x34d226d67a3d5e16571f2fac91a8b9773551bcc41c88a96279669dd78d192625","urls":["bzz-raw://7a6e8c1462ee4a1b0f745414be043c09012ea676613790aba004b06c85c980d1","dweb:/ipfs/QmadjNEbHKRthtA1EeNy3Kg2sXpejH2KBeHm8QZtBPvXbJ"],"license":"MIT"},"src/interfaces/slasher/IVetoSlasher.sol":{"keccak256":"0xdf7edd04a4f36e9aec3a15241dcb6b6315b2e64927b12710c2c410d571fc55e9","urls":["bzz-raw://c4be6ac339c2ebf230fed65363f036784224095d0cd0f3f2d01d64d6e0da9508","dweb:/ipfs/QmRSMbpfaHExqrzUA8vYZMYZWh6eQW1KX9JKJSLdgronfg"],"license":"MIT"},"src/interfaces/vault/IVault.sol":{"keccak256":"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235","urls":["bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9","dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R"],"license":"MIT"},"src/interfaces/vault/IVaultStorage.sol":{"keccak256":"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22","urls":["bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e","dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6"],"license":"MIT"}},"version":1},"id":84} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[{"name":"baseSlasherHints","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"BASE_SLASHER_HINTS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"BURNER_GAS_LIMIT","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"BURNER_RESERVE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"NETWORK_MIDDLEWARE_SERVICE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"NETWORK_REGISTRY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"TYPE","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"VAULT_FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"cumulativeSlash","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"cumulativeSlashAt","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"executeSlash","inputs":[{"name":"slashIndex","type":"uint256","internalType":"uint256"},{"name":"hints","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"slashedAmount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"executeSlashHints","inputs":[{"name":"slasher","type":"address","internalType":"address"},{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"captureTimestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isBurnerHook","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"latestSlashedCaptureTimestamp","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"value","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"requestSlash","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","internalType":"uint48"},{"name":"hints","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"slashIndex","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"requestSlashHints","inputs":[{"name":"slasher","type":"address","internalType":"address"},{"name":"msgSender","type":"address","internalType":"address"},{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"resolver","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"resolverAt","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"resolverHint","inputs":[{"name":"slasher","type":"address","internalType":"address"},{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"resolverHintInternal","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"exists","type":"bool","internalType":"bool"},{"name":"hint","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"resolverSetEpochsDelay","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"setResolver","inputs":[{"name":"identifier","type":"uint96","internalType":"uint96"},{"name":"resolver_","type":"address","internalType":"address"},{"name":"hints","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setResolverHints","inputs":[{"name":"slasher","type":"address","internalType":"address"},{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"slashRequests","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","internalType":"uint48"},{"name":"vetoDeadline","type":"uint48","internalType":"uint48"},{"name":"completed","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"slashRequestsLength","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"slashableStake","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"captureTimestamp","type":"uint48","internalType":"uint48"},{"name":"hints","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"staticDelegateCall","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"vault","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"vetoDuration","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"vetoSlash","inputs":[{"name":"slashIndex","type":"uint256","internalType":"uint256"},{"name":"hints","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"vetoSlashHints","inputs":[{"name":"slasher","type":"address","internalType":"address"},{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"captureTimestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"event","name":"ExecuteSlash","inputs":[{"name":"slashIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"slashedAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"RequestSlash","inputs":[{"name":"slashIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"slashAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","indexed":false,"internalType":"uint48"},{"name":"vetoDeadline","type":"uint48","indexed":false,"internalType":"uint48"}],"anonymous":false},{"type":"event","name":"SetResolver","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"resolver","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"VetoSlash","inputs":[{"name":"slashIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"resolver","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AlreadySet","inputs":[]},{"type":"error","name":"CheckpointUnorderedInsertion","inputs":[]},{"type":"error","name":"ExternalCall","inputs":[]},{"type":"error","name":"InsufficientBurnerGas","inputs":[]},{"type":"error","name":"InsufficientSlash","inputs":[]},{"type":"error","name":"InvalidCaptureTimestamp","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"InvalidResolverSetEpochsDelay","inputs":[]},{"type":"error","name":"InvalidVetoDuration","inputs":[]},{"type":"error","name":"NoBurner","inputs":[]},{"type":"error","name":"NoResolver","inputs":[]},{"type":"error","name":"NotInitialized","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"NotNetwork","inputs":[]},{"type":"error","name":"NotNetworkMiddleware","inputs":[]},{"type":"error","name":"NotResolver","inputs":[]},{"type":"error","name":"NotVault","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SlashPeriodEnded","inputs":[]},{"type":"error","name":"SlashRequestCompleted","inputs":[]},{"type":"error","name":"SlashRequestNotExist","inputs":[]},{"type":"error","name":"VetoPeriodEnded","inputs":[]},{"type":"error","name":"VetoPeriodNotEnded","inputs":[]}],"bytecode":{"object":"0x6101603461017c576001600160401b0390601f61373e38819003918201601f1916830191848311848410176101805780849260209460405283398101031261017c5751906001600160a01b038216820361017c57306080527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff8260401c1661016a578080831603610125575b835f60a0525f60c0525f60e052610100905f8252610120905f8252610140908152604051916135a99384610195853960805184610b68015260a0518461047b015260c05184818161158e0152612c9d015260e0518481816102e801526122c2015251838181610437015261244c015251828181610c7a01526115e40152518181816108060152818161191c0152611d110152f35b6001600160401b031990911681179091556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f8080610091565b60405163f92ee8a960e01b8152600490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c80622a087514610213578063103f29071461020e5780631a2be2c4146102095780631dd5f60014610204578063267de1f3146101ff5780632964f8dc146101fa5780632c9d45b3146101f55780632dd31000146101f057806331ce4dfe146101eb57806334d098ea146101e6578063439fab91146101e1578063457821b7146101dc5780635264679b146101d7578063545ce389146101d257806369f78920146101cd5780638f42f9ab146101c85780638f82f931146101c35780639168f9d2146101be5780639a896551146101b95780639f86fd85146101b4578063a4ef9b4f146101af578063aa8e6489146101aa578063aab3595f146101a5578063b94c386e146101a0578063bb24fe8a1461019b578063bc6eac5b14610196578063c0cd7c3e14610191578063cd05b8a11461018c578063d5c24e1a14610187578063e054e08b14610182578063f9268d181461017d5763fbfa77cf14610178575f80fd5b61181b565b6116ad565b611688565b61166b565b611613565b6115cf565b6115b2565b61156f565b61121d565b6111c5565b611187565b611124565b611090565b611005565b610bda565b610b49565b610b2c565b610ae7565b61084f565b610835565b6107f1565b6106b9565b610668565b6105ff565b610466565b610422565b610406565b6103b1565b610397565b610317565b6102d3565b610261565b6001600160a01b0381160361022957565b5f80fd5b65ffffffffffff81160361022957565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b346102295760c0366003190112610229576102c56102b160043561028481610218565b61028f602435610218565b60643561029b81610218565b60a435916102a88361022d565b604435906118d1565b60405191829160208352602083019061023d565b0390f35b5f91031261022957565b34610229575f366003190112610229576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461022957604036600319011261022957602061036361035e60243561033c81610218565b6004355f526002845260405f209060018060a01b03165f5260205260405f2090565b6120da565b604051908152f35b60609060031901126102295760043561038381610218565b90602435906044356103948161022d565b90565b34610229576102c56102b16103ab3661036b565b916119a8565b3461022957604036600319011261022957602065ffffffffffff6103fc6024356103da81610218565b6004355f526001845260405f209060018060a01b03165f5260205260405f2090565b5416604051908152f35b34610229575f366003190112610229576020604051614e208152f35b34610229575f366003190112610229576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610229575f366003190112610229576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b634e487b7160e01b5f52604160045260245ffd5b602081019081106001600160401b038211176104d957604052565b6104aa565b604081019081106001600160401b038211176104d957604052565b606081019081106001600160401b038211176104d957604052565b6001600160401b0381116104d957604052565b608081019081106001600160401b038211176104d957604052565b90601f801991011681019081106001600160401b038211176104d957604052565b6040519060c082018281106001600160401b038211176104d957604052565b6040519061058f826104f9565b565b6040519061058f826104de565b6001600160401b0381116104d957601f01601f191660200190565b81601f82011215610229578035906105d08261059e565b926105de6040519485610542565b8284526020838301011161022957815f926020809301838601378301015290565b346102295760603660031901126102295760243561061c8161022d565b604435906001600160401b0382116102295761065f61064160209336906004016105b9565b6004355f90815260068552604090206001600160a01b039390612152565b16604051908152f35b34610229575f36600319011261022957602060ff5f5460a01c166040519015158152f35b9181601f84011215610229578235916001600160401b038311610229576020838186019501011161022957565b34610229576020366003190112610229576001600160401b03600435818111610229576106ea90369060040161068c565b5f80516020613554833981519152549260ff8460401c16159316801590816107e9575b60011490816107df575b1590816107d6575b506107c4575f80516020613554833981519152805467ffffffffffffffff1916600117905561075291836107a05761228b565b61075857005b5f80516020613554833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f80516020613554833981519152805460ff60401b1916600160401b17905561228b565b60405163f92ee8a960e01b8152600490fd5b9050155f61071f565b303b159150610717565b84915061070d565b34610229575f366003190112610229576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610229576102c56102b16108493661036b565b91611a2c565b346102295760a0366003190112610229576024356004803561087083610218565b604435926064356108808161022d565b6084356001600160401b0381116102295761089e903690860161068c565b94906108a86123f5565b6108b185612424565b6108b9611abe565b9580610ad1575b50506108cb4261263c565b906108e66108df825465ffffffffffff1690565b8093611b1f565b5f5490969061090b906108ff906001600160a01b031681565b6001600160a01b031690565b968260206040998a51928380926327f843b560e11b82525afa8015610acc5761094a9261093f925f92610a9b575b50611a14565b65ffffffffffff1690565b65ffffffffffff8516908110908115610a85575b50610a76576109709051848688612817565b5096878082109118028088189714610a68576102c5610a41878988887f3cb7f4ff6cecf74cee0eb9ae3ebf8933fa60a53014cce52f96da72a78dba8464896109c08a6109bb4261263c565b611b1f565b92600354978894610a116109d2610563565b8881526001600160a01b0385166020820152808b018a905265ffffffffffff8616606082015265ffffffffffff831660808201525f60a0820152611b61565b885197885265ffffffffffff938416602089015290921660408701526001600160a01b0316949081906060820190565b0390a4610a5a60015f8051602061353483398151915255565b519081529081906020820190565b855163167f871760e31b8152fd5b508551631357ac9160e11b8152fd5b9050610a9361093f4261263c565b11155f61095e565b610abe91925060203d602011610ac5575b610ab68183610542565b810190611b39565b905f610939565b503d610aac565b6118ad565b610adf929650810190611ad1565b935f806108c0565b34610229576080366003190112610229576102c56102b1600435610b0a81610218565b604435610b1681610218565b60643591610b238361022d565b60243590611c97565b34610229575f366003190112610229576020600354604051908152f35b3461022957604036600319011261022957602435610b668161022d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610bc85763ffffffff610bb36040926004355f526006602052835f206124df565b91505083929192519215158352166020820152f35b604051637ca475e560e11b8152600490fd5b346102295760603660031901126102295760048035906bffffffffffffffffffffffff8216820361022957602435610c1181610218565b6044356001600160401b03811161022957610c2f903690840161068c565b90610c386123f5565b610c40611abe565b5081610fa0575b5050604080516302910f8b60e31b8152338185019081526001600160a01b0395929491602091829082908190830103818a7f0000000000000000000000000000000000000000000000000000000000000000165afa908115610acc575f91610f73575b5015610f64575f54610ce5906001600160a01b0316936bffffffffffffffffffffffff166bffffffffffffffffffffffff193360601b161790565b95610d00610cfb885f52600660205260405f2090565b613208565b50949015610efa57610d1461093f4261263c565b65ffffffffffff9586161115610ec457610d3e610d39895f52600660205260405f2090565b6125fd565b505b610d636108ff6108ff6108ff610d5e8c5f52600660205260405f2090565b612ebb565b91808716928303610dcf575b505050505050610db4907f7b0b759b513b299fd2811f51926dca8854222a675557e8d544ce0933bf5b7570925b516001600160a01b0390911681529081906020820190565b0390a2610dcd60015f8051602061353483398151915255565b005b610de68998959796985f52600660205260405f2090565b911692845163186a323160e21b815281818981885afa908115610acc575f91610ea7575b5081600554958751998a80926327f843b560e11b82525afa908115610acc5789610e6f610e81977f7b0b759b513b299fd2811f51926dca8854222a675557e8d544ce0933bf5b75709c610e7695610db49d610e7b985f92610e8a575b50501690611de6565b9116611e07565b61263c565b90613456565b82958495610d6f565b610ea09250803d10610ac557610ab68183610542565b5f80610e66565b610ebe9150823d8411610ac557610ab68183610542565b5f610e0a565b610ee26108ff6108ff6108ff610d5e8c5f52600660205260405f2090565b82871603610d4057865163a741a04560e01b81528490fd5b5093949385169250508115610f56575091610db491610f4f7f7b0b759b513b299fd2811f51926dca8854222a675557e8d544ce0933bf5b757094610f46875f52600660205260405f2090565b610e7b4261263c565b5050610d9c565b825163a741a04560e01b8152fd5b5083516323d53b9760e21b8152fd5b610f939150823d8411610f99575b610f8b8183610542565b810190611dd2565b5f610caa565b503d610f81565b610fac91810190611ad1565b505f80610c47565b634e487b7160e01b5f52603260045260245ffd5b6003548110156110005760035f5260021b7fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b01905f90565b610fb4565b34610229576020366003190112610229576004356003548110156102295761102c90610fc8565b50805460018201546002830154600390930154604080519384526001600160a01b0390921660208401529082019290925265ffffffffffff808316606080840191909152603084901c90911660808301529190911c60ff16151560a082015260c090f35b34610229576040366003190112610229576004356110ad81610218565b6024356001600160401b038111610229575f916110cf8392369060040161068c565b90816040519283928337810184815203915af461111c6110ed611e14565b9161110e60405193849215156020840152604080840152606083019061023d565b03601f198101835282610542565b805190602001fd5b34610229576102c56102b16111383661036b565b91611e75565b906080600319830112610229576004359160243561115b81610218565b916044356111688161022d565b91606435906001600160401b03821161022957610394916004016105b9565b346102295760206103636111c061119d3661113e565b939190925f526002865260405f209060018060a01b03165f5260205260405f2090565b6126a2565b346102295760206111e16111d83661113e565b92919091612817565b50604051908152f35b9060406003198301126102295760043591602435906001600160401b038211610229576112199160040161068c565b9091565b346102295761122b366111ea565b91906112356123f5565b61123d611f9a565b9280611559575b50506003548110156115475761125981610fc8565b509081549061126782612424565b6003830180549365ffffffffffff9384861660018060a01b0361128c895183856119bf565b1615158061151c575b80611503575b6114f1576112b1816112ac4261263c565b611a14565b5f546112c7906108ff906001600160a01b031681565b96600460206040998a51928380926327f843b560e11b82525afa8015610acc5782915f916114d2575b50169116116114c157600183018054909861131b93929188906001600160a01b031691015192612817565b90611330816002850154818082109118021890565b9687156114b05760601c60ff1661149f579261145861144b89946114236114108b9687876102c59f61141e8f9d8f9e61145e9f61137a86600160601b60ff60601b19825416179055565b8a54855461139c91906001600160a01b0316885465ffffffffffff1691612a4d565b8a5485546113b59189916001600160a01b031690612acd565b8a5494546113d3906001600160a01b0316965465ffffffffffff1690565b976113dc610582565b9384526020840152818301525196879160208301919091604080606083019480518452602081015160208501520151910152565b03601f198101875286610542565b612c39565b61143c611436855465ffffffffffff1690565b86612d42565b5494546001600160a01b031690565b915465ffffffffffff1690565b92612dbf565b81518381527f5cc28df3b54da9d06f805d87616ebf969c81310f2aa8369cb14ca50f815d411190602090a2610a5a60015f8051602061353483398151915255565b8551633428e90760e01b8152600490fd5b865163167f871760e31b8152600490fd5b8551639ea153eb60e01b8152600490fd5b6114eb915060203d602011610ac557610ab68183610542565b5f6112f0565b60405163b62b15c760e01b8152600490fd5b5061151061093f4261263c565b868860301c161161129b565b506115406108ff61153461152f4261263c565b6119f8565b60208b015190856119bf565b1515611295565b604051637822972360e11b8152600490fd5b611567929350810190611fb9565b905f80611244565b34610229575f3660031901126102295760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610229575f366003190112610229576020600554604051908152f35b34610229575f366003190112610229576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610229576040366003190112610229576024356001600160401b0381116102295761165961164860209236906004016105b9565b6116514261263c565b6004356119bf565b6040516001600160a01b039091168152f35b34610229575f366003190112610229576020604051620249f08152f35b34610229575f36600319011261022957602065ffffffffffff60045416604051908152f35b34610229576116bb366111ea565b906116c46123f5565b6116cc612041565b9180611807575b5050600354821015611547576116e882610fc8565b506003815491019182549165ffffffffffff9160018060a01b036117108251858716856119bf565b169182159182156117de575b50506117cc5733036117ba5761173461093f4261263c565b908260301c1611156117a95760601c60ff1661179757805460ff60601b1916600160601b17905533907f7d3d269c851b72257a5194a401d151902e9be4347d555996dcff3ff86a077e925f80a3610dcd60015f8051602061353483398151915255565b604051633428e90760e01b8152600490fd5b60405162c457e560e81b8152600490fd5b604051635d154fe160e11b8152600490fd5b60405163dd1ebd9d60e01b8152600490fd5b6117ff9250906108ff9160206117f661152f4261263c565b910151916119bf565b155f8061171c565b611814925081019061205a565b5f806116d3565b34610229575f366003190112610229575f546040516001600160a01b039091168152602090f35b81601f82011215610229578051906118598261059e565b926118676040519485610542565b8284526020838301011161022957815f9260208093018386015e8301015290565b906020828203126102295781516001600160401b038111610229576103949201611842565b6040513d5f823e3d90fd5b604061039492602083525191602080820152019061023d565b604051632751749360e11b81526001600160a01b0391821660048201526024810192909252909116604482015265ffffffffffff9091166064820152606091905f81806084810103817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610acc575f91611986575b50805161195e5750565b61110e9192506103949060405190611975826104be565b8152604051928391602083016118b8565b6119a291503d805f833e61199a8183610542565b810190611888565b5f611954565b92916119b691606094611e75565b805161195e5750565b5f9081526006602052604090206001600160a01b03926119e0929091612152565b1690565b634e487b7160e01b5f52601160045260245ffd5b65ffffffffffff9081165f190191908211611a0f57565b6119e4565b65ffffffffffff9182169082160391908211611a0f57565b611a4d90939293611a406060958483611e75565b9261113861152f4261263c565b815115801590611ab4575b611a60575050565b611aa19293509061110e6103949260405192611a7b846104de565b83526020830190815260405194859360208086015251604080860152608085019061023d565b9051838203603f1901606085015261023d565b5080511515611a58565b60405190611acb826104be565b60608252565b906020828203126102295781356001600160401b03928382116102295701906020828203126102295760405192611b07846104be565b823590811161022957611b1a92016105b9565b815290565b91909165ffffffffffff80809416911601918211611a0f57565b9081602091031261022957516103948161022d565b634e487b7160e01b5f525f60045260245ffd5b600354600160401b8110156104d957806001611b809201600355610fc8565b919091611c43578051825560208101516001830180546001600160a01b0319166001600160a01b039290921691909117905561058f91611c299060a090600390604085015160028201550192611bf665ffffffffffff606083015116859065ffffffffffff1665ffffffffffff19825416179055565b60808101516bffffffffffff00000000000085549160301b16906bffffffffffff00000000000019161784550151151590565b815460ff60601b191690151560601b60ff60601b16179055565b611b4e565b906103949160208152611c67825160606020840152608083019061023d565b9060606040611c87602086015194601f199586868303018487015261023d565b940151928285030191015261023d565b919093925f606095611caa838287611e75565b94611d0d611cc4611cbd61152f4261263c565b8484611e75565b604051632751749360e11b81526001600160a01b039384166004820152602481019490945291909516604483015265ffffffffffff909316606482015292839081906084820190565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa918215610acc575f92611da9575b50825115801590611d9f575b8015611d95575b611d6557505050565b61110e939450906103949291611d79610582565b9283526020830152604082015260405192839160208301611c48565b5081511515611d5c565b5080511515611d55565b611dbe9192503d805f833e61199a8183610542565b905f611d49565b5190811515820361022957565b908160209103126102295761039490611dc5565b81810292918115918404141715611a0f57565b9060018201809211611a0f57565b91908201809211611a0f57565b3d15611e3e573d90611e258261059e565b91611e336040519384610542565b82523d5f602084013e565b606090565b519063ffffffff8216820361022957565b9190826040910312610229576103946020611e6e84611dc5565b9301611e43565b92915f8060609565ffffffffffff60405194602096638f82f93160e01b88880152602487015216604485015260448452611eae84610527565b6040519384611edb87820192639f86fd8560e01b845230602484015260406044840152606483019061023d565b0394611eef601f1996878101835282610542565b51915afa50611f0d611eff611e14565b83808251830101910161266e565b9015611f6057808380611f2593518301019101611e54565b9290611f3057505050565b61039492939450611f54604051948592830191909163ffffffff6020820193169052565b03908101835282610542565b809150519182156102295701fd5b5f9081526002602090815260408083206001600160a01b039094168352929052206103949291906126a2565b60405190611fa7826104f9565b60606040838281528260208201520152565b906020828203126102295781356001600160401b03928382116102295701906060828203126102295760405192611fef846104f9565b823581811161022957826120049185016105b9565b84526020830135818111610229578261201e9185016105b9565b602085015260408301359081116102295761203992016105b9565b604082015290565b6040519061204e826104de565b60606020838281520152565b906020828203126102295781356001600160401b03928382116102295701906040828203126102295760405192612090846104de565b823581811161022957826120a59185016105b9565b84526020830135908111610229576120bd92016105b9565b602082015290565b8054821015611000575f5260205f2001905f90565b6120e381612ebb565b6001600160d01b038116156121085760016120fe92016120c5565b90549060031b1c90565b50505f90565b908160209103126102295761039490611e43565b5f19810191908211611a0f57565b91908203918211611a0f57565b90600163ffffffff80931601918211611a0f57565b91805115612236578060208061216d9351830101910161210e565b916121788382612efb565b92612189845165ffffffffffff1690565b9065ffffffffffff808516921682811461221d57821191826121c8575b50506121b65761039492506132fe565b5050602001516001600160d01b031690565b9091506121d58354612122565b63ffffffff8316149182156121ee575b50505f806121a6565b61221591925061220961220361093f9261213d565b85612efb565b5165ffffffffffff1690565b115f806121e5565b50505050602091909101516001600160d01b0316905090565b50610394916132fe565b91909160408184031261022957803561225881610218565b9260208201356001600160401b0381116102295761039492016105b9565b90816020910312610229575161039481610218565b61229791810190612240565b6040516302910f8b60e31b81526001600160a01b0392831660048201819052929160209182816024817f000000000000000000000000000000000000000000000000000000000000000088165afa908115610acc575f916123d8575b50156123c65781612328600492612308612f4f565b5f80546001600160a01b0319166001600160a01b03891617905586612fdc565b94604051928380926313c085b760e11b82525afa918215610acc575f92612399575b505016158061238f575b61237d575161058f9015155f805460ff60a01b191691151560a01b60ff60a01b16919091179055565b60405163d2420f5960e01b8152600490fd5b5080511515612354565b6123b89250803d106123bf575b6123b08183610542565b810190612276565b5f8061234a565b503d6123a6565b6040516362df054560e01b8152600490fd5b6123ef9150833d8511610f9957610f8b8183610542565b5f6122f3565b5f8051602061353483398151915260028154146124125760029055565b604051633ee5aeb560e01b8152600490fd5b604051635daf681960e11b815260609190911c60048201526001600160a01b036020826024817f000000000000000000000000000000000000000000000000000000000000000085165afa918215610acc575f9261249a575b503391160361248857565b60405163227bf64d60e01b8152600490fd5b6124b491925060203d6020116123bf576123b08183610542565b905f61247d565b906040516124c8816104de565b915465ffffffffffff8116835260301c6020830152565b8054915f9280600581116125b4575b5092905b83821061256e57505081156125625761251c6125219161251184612122565b905f5260205f200190565b6124bb565b9161255b61255261254c602061253d875165ffffffffffff1690565b9601516001600160d01b031690565b93612122565b63ffffffff1690565b6001939291565b50505f905f905f905f90565b909261257a81856133fa565b90835f5265ffffffffffff808360205f20015416908416105f146125a15750925b906124f2565b9350600181018091111561259b576119e4565b906125be826130dd565b8203918211611a0f57835f5265ffffffffffff808360205f20015416908416105f146125ec57505b5f6124ee565b93506125f790611df9565b926125e6565b9061260782612ebb565b9180548015612628575f19019061261e82826120c5565b611c43575f905555565b634e487b7160e01b5f52603160045260245ffd5b65ffffffffffff9081811161264f571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b9190916040818403126102295761268481611dc5565b9260208201516001600160401b038111610229576103949201611842565b9180511561276457806020806126bd9351830101910161210e565b916126c8838261324c565b926126d9845165ffffffffffff1690565b9065ffffffffffff8085169216828114612758578211918261270f575b5050612706576103949250613241565b50506020015190565b90915061271c8354612122565b63ffffffff831614918215612735575b50505f806126f6565b61275091925061220961274a61093f9261213d565b8561324c565b115f8061272c565b50505050506020015190565b5061039491613241565b906020828203126102295781516001600160401b039283821161022957019060408282031261022957604051926127a4846104de565b825181811161022957826127b9918501611842565b84526020830151908111610229576120bd9201611842565b90816020910312610229575190565b9081526001600160a01b03909116602082015265ffffffffffff90911660408201526080606082018190526103949291019061023d565b92612820612041565b90805180612a33575b50506128344261263c565b5f5490949061284d906108ff906001600160a01b031681565b93604051956327f843b560e11b875260209687816004818a5afa8015610acc576128819261093f925f92612a1b5750611a14565b65ffffffffffff8216908110908115612a04575b81156129d3575b506129c7578560049560405196878092630ce9b79360e41b82525afa948515610acc576128ee9587915f916129aa575b50845190604051808099819463e02f693760e01b8352878b8a600486016127e0565b03916001600160a01b03165afa938415610acc57612966955f95612969575b5092612955859361295b9361295596869a61294c61035e83612937875f52600260205260405f2090565b9060018060a01b03165f5260205260405f2090565b95015192611f6e565b90612130565b818082109118021890565b91565b61295b929550612955949193612997612955928a3d8c116129a3575b61298f8183610542565b8101906127d1565b9693509391945061290d565b503d612985565b6129c19150823d84116123bf576123b08183610542565b5f6128cc565b5050505050505f905f90565b90506129fd61093f6129f187612937875f52600160205260405f2090565b5465ffffffffffff1690565b115f61289c565b9050612a1261093f4261263c565b81101590612895565b610abe9192508a3d8c11610ac557610ab68183610542565b612a46925060208091830101910161276e565b5f80612829565b919091805f52600160205265ffffffffffff80612a7d8560405f209060018060a01b03165f5260205260405f2090565b541690831611612a8c57505050565b61058f92612ab4915f52600160205260405f209060018060a01b03165f5260205260405f2090565b9065ffffffffffff1665ffffffffffff19825416179055565b9190825f526002602052612b2561035e612afa8360405f209060018060a01b03165f5260205260405f2090565b92612b044261263c565b955f52600260205260405f209060018060a01b03165f5260205260405f2090565b918201809211611a0f576001810190815415612bc9575b612b4581613208565b509490835495612b54846120da565b5081612bb4575b5015612b935750505f198301928311611a0f5761058f92612b7b916120c5565b90919082549060031b91821b915f19901b1916179055565b61058f94612bad926001600160d01b039091169190613456565b50506132db565b65ffffffffffff83811691161490505f612b5b565b612bd2826132ae565b612b3c565b60606020610394938184526001600160401b0381511682850152015191604080820152019061023d565b919360a093610394969565ffffffffffff938552600180871b031660208501526040840152166060820152816080820152019061023d565b92939060046020612c566108ff6108ff5f5460018060a01b031690565b604051630ce9b79360e41b815292839182905afa908115610acc5761110e91612cd4915f91612d23575b506001600160a01b031693612c93610591565b6001600160401b037f000000000000000000000000000000000000000000000000000000000000000016815290602082015260405192839160208301612bd7565b823b15610229575f94612cff86926040519889978896879563724ab0f760e11b875260048701612c01565b03925af18015610acc57612d105750565b80612d1d61058f92610514565b806102c9565b612d3c915060203d6020116123bf576123b08183610542565b5f612c80565b65ffffffffffff9160446020925f60018060a01b038154166040519687958694631c9e38c760e21b865260048601521660248401525af18015610acc57612d865750565b612d9e9060203d6020116129a35761298f8183610542565b50565b8115612dab570490565b634e487b7160e01b5f52601260045260245ffd5b92905f549060ff8260a01c16612dd7575b5050505050565b6040516313c085b760e11b815291602090839060049082906001600160a01b03165afa918215610acc575f92612e94575b5060405163065c1e0360e01b6020820190815260248201969096526001600160a01b039091166044820152606481019390935265ffffffffffff9091166084830152612e618260a481015b03601f198101845283610542565b6202a15c5a10612e82575f928380935192620249f0f1505f80808080612dd0565b604051632153f33560e21b8152600490fd5b612e619250612eb4612e539160203d6020116123bf576123b08183610542565b9250612e08565b805480612ec85750505f90565b5f19918183810111611a0f575f5260205f2001015460301c90565b60405190612ef0826104de565b5f6020838281520152565b612f2091612f1a91612f0b612ee3565b50612f14612ee3565b506120c5565b506124bb565b65ffffffffffff81511690602060018060d01b039101511660405191612f45836104de565b8252602082015290565b612f576133cc565b612f5f6133cc565b60015f8051602061353483398151915255565b60405190612f7f826104be565b5f8252565b809103906060821261022957602060405192612f9f846104f9565b12610229576040908151612fb2816104be565b612fbb82611dc5565b815283526020810151612fcd8161022d565b60208401520151604082015290565b90600490612fe8612f72565b508051612fff602092838080948301019101612f84565b6040516327f843b560e11b815290949093849182906001600160a01b03165afa918215610acc575f926130be575b50820190613041825165ffffffffffff1690565b65ffffffffffff918216911610156130ac5760408201600381511061309a57613090613076613096935165ffffffffffff1690565b65ffffffffffff1665ffffffffffff196004541617600455565b51600555565b5190565b6040516354f778f360e01b8152600490fd5b6040516367d5e3df60e11b8152600490fd5b816130d69293503d8411610ac557610ab68183610542565b905f61302d565b600181111561039457600181600160801b8110156131f6575b61319e61319461318a61318061317661316c6131aa97600488600160401b6131a59a10156131e9575b6401000000008110156131dc575b620100008110156131cf575b6101008110156131c3575b60108110156131b7575b10156131af575b60030260011c613165818b612da1565b0160011c90565b613165818a612da1565b6131658189612da1565b6131658188612da1565b6131658187612da1565b6131658186612da1565b8093612da1565b821190565b900390565b60011b613155565b811c9160021b9161314e565b60081c91811b91613144565b60101c9160081b91613139565b60201c9160101b9161312d565b60401c9160201b9161311f565b50600160401b9050608082901c6130f6565b8054806132195750505f905f905f90565b5f19918183810111611a0f575f5260205f2001015460019165ffffffffffff82169160301c90565b906120e390826132fe565b9061326f612f1a6132909261325f612ee3565b50613268612ee3565b50846120c5565b91600165ffffffffffff845116936020828060d01b039101511691016120c5565b905490604051926132a0846104de565b835260031b1c602082015290565b8054600160401b8110156104d9576132cb916001820181556120c5565b8154905f199060031b1b19169055565b90815491600160401b8310156104d95782612b7b91600161058f950181556120c5565b908154905f918060058111613383575b5091905b82821061333d575050806133265750505f90565b6103949161251161333692612122565b5460301c90565b909161334981846133fa565b90845f5265ffffffffffff808360205f20015416908416105f146133705750915b90613312565b9250600181018091111561336a576119e4565b9061338d826130dd565b8203918211611a0f57845f5265ffffffffffff808360205f20015416908416105f146133bb57505b5f61330e565b92506133c690611df9565b916133b5565b60ff5f805160206135548339815191525460401c16156133e857565b604051631afcd79f60e31b8152600490fd5b90808216911860011c8101809111611a0f5790565b8054600160401b8110156104d95761342c916001820181556120c5565b611c4357815160209092015160301b65ffffffffffff191665ffffffffffff909216919091179055565b805492939280156135095761346d61347891612122565b825f5260205f200190565b9182549265ffffffffffff918285169281168084116134f7578793036134be57506134b792509065ffffffffffff82549181199060301b169116179055565b60301c9190565b9150506134f2916134de6134d0610591565b65ffffffffffff9093168352565b6001600160d01b038616602083015261340f565b6134b7565b604051632520601d60e01b8152600490fd5b509061352e9161351a6134d0610591565b6001600160d01b038516602083015261340f565b5f919056fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a264697066735822122083c9d2c27050cb61d0026c4a120151139ad36b1ef086f66b4ca1715f04bbc28864736f6c63430008190033","sourceMap":"3563:3596:91:-:0;;;;-1:-1:-1;;;;;3563:3596:91;;;;;;;;;;-1:-1:-1;;3563:3596:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3563:3596:91;;;;;;348:4:89;332:21;;8837:64:22;3563:3596:91;;;;;;;;;7896:76:22;;3563:3596:91;;;;7985:34:22;7981:146;;-1:-1:-1;525:17:76;-1:-1:-1;525:17:76;;-1:-1:-1;552:12:76;;-1:-1:-1;2353:28:99;;2391:53;;-1:-1:-1;2391:53:99;;1620:34:101;;-1:-1:-1;1620:34:101;;3901:37:91;;;;3563:3596;;;;;;;;;332:21:89;3563:3596:91;;;;;525:17:76;3563:3596:91;;;;;552:12:76;3563:3596:91;;;;;;;;;;2353:28:99;3563:3596:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7981:146:22;-1:-1:-1;;;;;;3563:3596:91;;;;;;;;;;;;;8087:29:22;;3563:3596:91;;8087:29:22;7981:146;;;;;7896:76;3563:3596:91;;-1:-1:-1;;;7938:23:22;;;;;3563:3596:91;-1:-1:-1;3563:3596:91;;;;;;-1:-1:-1;3563:3596:91;;;;;-1:-1:-1;3563:3596:91","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c80622a087514610213578063103f29071461020e5780631a2be2c4146102095780631dd5f60014610204578063267de1f3146101ff5780632964f8dc146101fa5780632c9d45b3146101f55780632dd31000146101f057806331ce4dfe146101eb57806334d098ea146101e6578063439fab91146101e1578063457821b7146101dc5780635264679b146101d7578063545ce389146101d257806369f78920146101cd5780638f42f9ab146101c85780638f82f931146101c35780639168f9d2146101be5780639a896551146101b95780639f86fd85146101b4578063a4ef9b4f146101af578063aa8e6489146101aa578063aab3595f146101a5578063b94c386e146101a0578063bb24fe8a1461019b578063bc6eac5b14610196578063c0cd7c3e14610191578063cd05b8a11461018c578063d5c24e1a14610187578063e054e08b14610182578063f9268d181461017d5763fbfa77cf14610178575f80fd5b61181b565b6116ad565b611688565b61166b565b611613565b6115cf565b6115b2565b61156f565b61121d565b6111c5565b611187565b611124565b611090565b611005565b610bda565b610b49565b610b2c565b610ae7565b61084f565b610835565b6107f1565b6106b9565b610668565b6105ff565b610466565b610422565b610406565b6103b1565b610397565b610317565b6102d3565b610261565b6001600160a01b0381160361022957565b5f80fd5b65ffffffffffff81160361022957565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b346102295760c0366003190112610229576102c56102b160043561028481610218565b61028f602435610218565b60643561029b81610218565b60a435916102a88361022d565b604435906118d1565b60405191829160208352602083019061023d565b0390f35b5f91031261022957565b34610229575f366003190112610229576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461022957604036600319011261022957602061036361035e60243561033c81610218565b6004355f526002845260405f209060018060a01b03165f5260205260405f2090565b6120da565b604051908152f35b60609060031901126102295760043561038381610218565b90602435906044356103948161022d565b90565b34610229576102c56102b16103ab3661036b565b916119a8565b3461022957604036600319011261022957602065ffffffffffff6103fc6024356103da81610218565b6004355f526001845260405f209060018060a01b03165f5260205260405f2090565b5416604051908152f35b34610229575f366003190112610229576020604051614e208152f35b34610229575f366003190112610229576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610229575f366003190112610229576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b634e487b7160e01b5f52604160045260245ffd5b602081019081106001600160401b038211176104d957604052565b6104aa565b604081019081106001600160401b038211176104d957604052565b606081019081106001600160401b038211176104d957604052565b6001600160401b0381116104d957604052565b608081019081106001600160401b038211176104d957604052565b90601f801991011681019081106001600160401b038211176104d957604052565b6040519060c082018281106001600160401b038211176104d957604052565b6040519061058f826104f9565b565b6040519061058f826104de565b6001600160401b0381116104d957601f01601f191660200190565b81601f82011215610229578035906105d08261059e565b926105de6040519485610542565b8284526020838301011161022957815f926020809301838601378301015290565b346102295760603660031901126102295760243561061c8161022d565b604435906001600160401b0382116102295761065f61064160209336906004016105b9565b6004355f90815260068552604090206001600160a01b039390612152565b16604051908152f35b34610229575f36600319011261022957602060ff5f5460a01c166040519015158152f35b9181601f84011215610229578235916001600160401b038311610229576020838186019501011161022957565b34610229576020366003190112610229576001600160401b03600435818111610229576106ea90369060040161068c565b5f80516020613554833981519152549260ff8460401c16159316801590816107e9575b60011490816107df575b1590816107d6575b506107c4575f80516020613554833981519152805467ffffffffffffffff1916600117905561075291836107a05761228b565b61075857005b5f80516020613554833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f80516020613554833981519152805460ff60401b1916600160401b17905561228b565b60405163f92ee8a960e01b8152600490fd5b9050155f61071f565b303b159150610717565b84915061070d565b34610229575f366003190112610229576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610229576102c56102b16108493661036b565b91611a2c565b346102295760a0366003190112610229576024356004803561087083610218565b604435926064356108808161022d565b6084356001600160401b0381116102295761089e903690860161068c565b94906108a86123f5565b6108b185612424565b6108b9611abe565b9580610ad1575b50506108cb4261263c565b906108e66108df825465ffffffffffff1690565b8093611b1f565b5f5490969061090b906108ff906001600160a01b031681565b6001600160a01b031690565b968260206040998a51928380926327f843b560e11b82525afa8015610acc5761094a9261093f925f92610a9b575b50611a14565b65ffffffffffff1690565b65ffffffffffff8516908110908115610a85575b50610a76576109709051848688612817565b5096878082109118028088189714610a68576102c5610a41878988887f3cb7f4ff6cecf74cee0eb9ae3ebf8933fa60a53014cce52f96da72a78dba8464896109c08a6109bb4261263c565b611b1f565b92600354978894610a116109d2610563565b8881526001600160a01b0385166020820152808b018a905265ffffffffffff8616606082015265ffffffffffff831660808201525f60a0820152611b61565b885197885265ffffffffffff938416602089015290921660408701526001600160a01b0316949081906060820190565b0390a4610a5a60015f8051602061353483398151915255565b519081529081906020820190565b855163167f871760e31b8152fd5b508551631357ac9160e11b8152fd5b9050610a9361093f4261263c565b11155f61095e565b610abe91925060203d602011610ac5575b610ab68183610542565b810190611b39565b905f610939565b503d610aac565b6118ad565b610adf929650810190611ad1565b935f806108c0565b34610229576080366003190112610229576102c56102b1600435610b0a81610218565b604435610b1681610218565b60643591610b238361022d565b60243590611c97565b34610229575f366003190112610229576020600354604051908152f35b3461022957604036600319011261022957602435610b668161022d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610bc85763ffffffff610bb36040926004355f526006602052835f206124df565b91505083929192519215158352166020820152f35b604051637ca475e560e11b8152600490fd5b346102295760603660031901126102295760048035906bffffffffffffffffffffffff8216820361022957602435610c1181610218565b6044356001600160401b03811161022957610c2f903690840161068c565b90610c386123f5565b610c40611abe565b5081610fa0575b5050604080516302910f8b60e31b8152338185019081526001600160a01b0395929491602091829082908190830103818a7f0000000000000000000000000000000000000000000000000000000000000000165afa908115610acc575f91610f73575b5015610f64575f54610ce5906001600160a01b0316936bffffffffffffffffffffffff166bffffffffffffffffffffffff193360601b161790565b95610d00610cfb885f52600660205260405f2090565b613208565b50949015610efa57610d1461093f4261263c565b65ffffffffffff9586161115610ec457610d3e610d39895f52600660205260405f2090565b6125fd565b505b610d636108ff6108ff6108ff610d5e8c5f52600660205260405f2090565b612ebb565b91808716928303610dcf575b505050505050610db4907f7b0b759b513b299fd2811f51926dca8854222a675557e8d544ce0933bf5b7570925b516001600160a01b0390911681529081906020820190565b0390a2610dcd60015f8051602061353483398151915255565b005b610de68998959796985f52600660205260405f2090565b911692845163186a323160e21b815281818981885afa908115610acc575f91610ea7575b5081600554958751998a80926327f843b560e11b82525afa908115610acc5789610e6f610e81977f7b0b759b513b299fd2811f51926dca8854222a675557e8d544ce0933bf5b75709c610e7695610db49d610e7b985f92610e8a575b50501690611de6565b9116611e07565b61263c565b90613456565b82958495610d6f565b610ea09250803d10610ac557610ab68183610542565b5f80610e66565b610ebe9150823d8411610ac557610ab68183610542565b5f610e0a565b610ee26108ff6108ff6108ff610d5e8c5f52600660205260405f2090565b82871603610d4057865163a741a04560e01b81528490fd5b5093949385169250508115610f56575091610db491610f4f7f7b0b759b513b299fd2811f51926dca8854222a675557e8d544ce0933bf5b757094610f46875f52600660205260405f2090565b610e7b4261263c565b5050610d9c565b825163a741a04560e01b8152fd5b5083516323d53b9760e21b8152fd5b610f939150823d8411610f99575b610f8b8183610542565b810190611dd2565b5f610caa565b503d610f81565b610fac91810190611ad1565b505f80610c47565b634e487b7160e01b5f52603260045260245ffd5b6003548110156110005760035f5260021b7fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b01905f90565b610fb4565b34610229576020366003190112610229576004356003548110156102295761102c90610fc8565b50805460018201546002830154600390930154604080519384526001600160a01b0390921660208401529082019290925265ffffffffffff808316606080840191909152603084901c90911660808301529190911c60ff16151560a082015260c090f35b34610229576040366003190112610229576004356110ad81610218565b6024356001600160401b038111610229575f916110cf8392369060040161068c565b90816040519283928337810184815203915af461111c6110ed611e14565b9161110e60405193849215156020840152604080840152606083019061023d565b03601f198101835282610542565b805190602001fd5b34610229576102c56102b16111383661036b565b91611e75565b906080600319830112610229576004359160243561115b81610218565b916044356111688161022d565b91606435906001600160401b03821161022957610394916004016105b9565b346102295760206103636111c061119d3661113e565b939190925f526002865260405f209060018060a01b03165f5260205260405f2090565b6126a2565b346102295760206111e16111d83661113e565b92919091612817565b50604051908152f35b9060406003198301126102295760043591602435906001600160401b038211610229576112199160040161068c565b9091565b346102295761122b366111ea565b91906112356123f5565b61123d611f9a565b9280611559575b50506003548110156115475761125981610fc8565b509081549061126782612424565b6003830180549365ffffffffffff9384861660018060a01b0361128c895183856119bf565b1615158061151c575b80611503575b6114f1576112b1816112ac4261263c565b611a14565b5f546112c7906108ff906001600160a01b031681565b96600460206040998a51928380926327f843b560e11b82525afa8015610acc5782915f916114d2575b50169116116114c157600183018054909861131b93929188906001600160a01b031691015192612817565b90611330816002850154818082109118021890565b9687156114b05760601c60ff1661149f579261145861144b89946114236114108b9687876102c59f61141e8f9d8f9e61145e9f61137a86600160601b60ff60601b19825416179055565b8a54855461139c91906001600160a01b0316885465ffffffffffff1691612a4d565b8a5485546113b59189916001600160a01b031690612acd565b8a5494546113d3906001600160a01b0316965465ffffffffffff1690565b976113dc610582565b9384526020840152818301525196879160208301919091604080606083019480518452602081015160208501520151910152565b03601f198101875286610542565b612c39565b61143c611436855465ffffffffffff1690565b86612d42565b5494546001600160a01b031690565b915465ffffffffffff1690565b92612dbf565b81518381527f5cc28df3b54da9d06f805d87616ebf969c81310f2aa8369cb14ca50f815d411190602090a2610a5a60015f8051602061353483398151915255565b8551633428e90760e01b8152600490fd5b865163167f871760e31b8152600490fd5b8551639ea153eb60e01b8152600490fd5b6114eb915060203d602011610ac557610ab68183610542565b5f6112f0565b60405163b62b15c760e01b8152600490fd5b5061151061093f4261263c565b868860301c161161129b565b506115406108ff61153461152f4261263c565b6119f8565b60208b015190856119bf565b1515611295565b604051637822972360e11b8152600490fd5b611567929350810190611fb9565b905f80611244565b34610229575f3660031901126102295760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610229575f366003190112610229576020600554604051908152f35b34610229575f366003190112610229576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610229576040366003190112610229576024356001600160401b0381116102295761165961164860209236906004016105b9565b6116514261263c565b6004356119bf565b6040516001600160a01b039091168152f35b34610229575f366003190112610229576020604051620249f08152f35b34610229575f36600319011261022957602065ffffffffffff60045416604051908152f35b34610229576116bb366111ea565b906116c46123f5565b6116cc612041565b9180611807575b5050600354821015611547576116e882610fc8565b506003815491019182549165ffffffffffff9160018060a01b036117108251858716856119bf565b169182159182156117de575b50506117cc5733036117ba5761173461093f4261263c565b908260301c1611156117a95760601c60ff1661179757805460ff60601b1916600160601b17905533907f7d3d269c851b72257a5194a401d151902e9be4347d555996dcff3ff86a077e925f80a3610dcd60015f8051602061353483398151915255565b604051633428e90760e01b8152600490fd5b60405162c457e560e81b8152600490fd5b604051635d154fe160e11b8152600490fd5b60405163dd1ebd9d60e01b8152600490fd5b6117ff9250906108ff9160206117f661152f4261263c565b910151916119bf565b155f8061171c565b611814925081019061205a565b5f806116d3565b34610229575f366003190112610229575f546040516001600160a01b039091168152602090f35b81601f82011215610229578051906118598261059e565b926118676040519485610542565b8284526020838301011161022957815f9260208093018386015e8301015290565b906020828203126102295781516001600160401b038111610229576103949201611842565b6040513d5f823e3d90fd5b604061039492602083525191602080820152019061023d565b604051632751749360e11b81526001600160a01b0391821660048201526024810192909252909116604482015265ffffffffffff9091166064820152606091905f81806084810103817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610acc575f91611986575b50805161195e5750565b61110e9192506103949060405190611975826104be565b8152604051928391602083016118b8565b6119a291503d805f833e61199a8183610542565b810190611888565b5f611954565b92916119b691606094611e75565b805161195e5750565b5f9081526006602052604090206001600160a01b03926119e0929091612152565b1690565b634e487b7160e01b5f52601160045260245ffd5b65ffffffffffff9081165f190191908211611a0f57565b6119e4565b65ffffffffffff9182169082160391908211611a0f57565b611a4d90939293611a406060958483611e75565b9261113861152f4261263c565b815115801590611ab4575b611a60575050565b611aa19293509061110e6103949260405192611a7b846104de565b83526020830190815260405194859360208086015251604080860152608085019061023d565b9051838203603f1901606085015261023d565b5080511515611a58565b60405190611acb826104be565b60608252565b906020828203126102295781356001600160401b03928382116102295701906020828203126102295760405192611b07846104be565b823590811161022957611b1a92016105b9565b815290565b91909165ffffffffffff80809416911601918211611a0f57565b9081602091031261022957516103948161022d565b634e487b7160e01b5f525f60045260245ffd5b600354600160401b8110156104d957806001611b809201600355610fc8565b919091611c43578051825560208101516001830180546001600160a01b0319166001600160a01b039290921691909117905561058f91611c299060a090600390604085015160028201550192611bf665ffffffffffff606083015116859065ffffffffffff1665ffffffffffff19825416179055565b60808101516bffffffffffff00000000000085549160301b16906bffffffffffff00000000000019161784550151151590565b815460ff60601b191690151560601b60ff60601b16179055565b611b4e565b906103949160208152611c67825160606020840152608083019061023d565b9060606040611c87602086015194601f199586868303018487015261023d565b940151928285030191015261023d565b919093925f606095611caa838287611e75565b94611d0d611cc4611cbd61152f4261263c565b8484611e75565b604051632751749360e11b81526001600160a01b039384166004820152602481019490945291909516604483015265ffffffffffff909316606482015292839081906084820190565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa918215610acc575f92611da9575b50825115801590611d9f575b8015611d95575b611d6557505050565b61110e939450906103949291611d79610582565b9283526020830152604082015260405192839160208301611c48565b5081511515611d5c565b5080511515611d55565b611dbe9192503d805f833e61199a8183610542565b905f611d49565b5190811515820361022957565b908160209103126102295761039490611dc5565b81810292918115918404141715611a0f57565b9060018201809211611a0f57565b91908201809211611a0f57565b3d15611e3e573d90611e258261059e565b91611e336040519384610542565b82523d5f602084013e565b606090565b519063ffffffff8216820361022957565b9190826040910312610229576103946020611e6e84611dc5565b9301611e43565b92915f8060609565ffffffffffff60405194602096638f82f93160e01b88880152602487015216604485015260448452611eae84610527565b6040519384611edb87820192639f86fd8560e01b845230602484015260406044840152606483019061023d565b0394611eef601f1996878101835282610542565b51915afa50611f0d611eff611e14565b83808251830101910161266e565b9015611f6057808380611f2593518301019101611e54565b9290611f3057505050565b61039492939450611f54604051948592830191909163ffffffff6020820193169052565b03908101835282610542565b809150519182156102295701fd5b5f9081526002602090815260408083206001600160a01b039094168352929052206103949291906126a2565b60405190611fa7826104f9565b60606040838281528260208201520152565b906020828203126102295781356001600160401b03928382116102295701906060828203126102295760405192611fef846104f9565b823581811161022957826120049185016105b9565b84526020830135818111610229578261201e9185016105b9565b602085015260408301359081116102295761203992016105b9565b604082015290565b6040519061204e826104de565b60606020838281520152565b906020828203126102295781356001600160401b03928382116102295701906040828203126102295760405192612090846104de565b823581811161022957826120a59185016105b9565b84526020830135908111610229576120bd92016105b9565b602082015290565b8054821015611000575f5260205f2001905f90565b6120e381612ebb565b6001600160d01b038116156121085760016120fe92016120c5565b90549060031b1c90565b50505f90565b908160209103126102295761039490611e43565b5f19810191908211611a0f57565b91908203918211611a0f57565b90600163ffffffff80931601918211611a0f57565b91805115612236578060208061216d9351830101910161210e565b916121788382612efb565b92612189845165ffffffffffff1690565b9065ffffffffffff808516921682811461221d57821191826121c8575b50506121b65761039492506132fe565b5050602001516001600160d01b031690565b9091506121d58354612122565b63ffffffff8316149182156121ee575b50505f806121a6565b61221591925061220961220361093f9261213d565b85612efb565b5165ffffffffffff1690565b115f806121e5565b50505050602091909101516001600160d01b0316905090565b50610394916132fe565b91909160408184031261022957803561225881610218565b9260208201356001600160401b0381116102295761039492016105b9565b90816020910312610229575161039481610218565b61229791810190612240565b6040516302910f8b60e31b81526001600160a01b0392831660048201819052929160209182816024817f000000000000000000000000000000000000000000000000000000000000000088165afa908115610acc575f916123d8575b50156123c65781612328600492612308612f4f565b5f80546001600160a01b0319166001600160a01b03891617905586612fdc565b94604051928380926313c085b760e11b82525afa918215610acc575f92612399575b505016158061238f575b61237d575161058f9015155f805460ff60a01b191691151560a01b60ff60a01b16919091179055565b60405163d2420f5960e01b8152600490fd5b5080511515612354565b6123b89250803d106123bf575b6123b08183610542565b810190612276565b5f8061234a565b503d6123a6565b6040516362df054560e01b8152600490fd5b6123ef9150833d8511610f9957610f8b8183610542565b5f6122f3565b5f8051602061353483398151915260028154146124125760029055565b604051633ee5aeb560e01b8152600490fd5b604051635daf681960e11b815260609190911c60048201526001600160a01b036020826024817f000000000000000000000000000000000000000000000000000000000000000085165afa918215610acc575f9261249a575b503391160361248857565b60405163227bf64d60e01b8152600490fd5b6124b491925060203d6020116123bf576123b08183610542565b905f61247d565b906040516124c8816104de565b915465ffffffffffff8116835260301c6020830152565b8054915f9280600581116125b4575b5092905b83821061256e57505081156125625761251c6125219161251184612122565b905f5260205f200190565b6124bb565b9161255b61255261254c602061253d875165ffffffffffff1690565b9601516001600160d01b031690565b93612122565b63ffffffff1690565b6001939291565b50505f905f905f905f90565b909261257a81856133fa565b90835f5265ffffffffffff808360205f20015416908416105f146125a15750925b906124f2565b9350600181018091111561259b576119e4565b906125be826130dd565b8203918211611a0f57835f5265ffffffffffff808360205f20015416908416105f146125ec57505b5f6124ee565b93506125f790611df9565b926125e6565b9061260782612ebb565b9180548015612628575f19019061261e82826120c5565b611c43575f905555565b634e487b7160e01b5f52603160045260245ffd5b65ffffffffffff9081811161264f571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b9190916040818403126102295761268481611dc5565b9260208201516001600160401b038111610229576103949201611842565b9180511561276457806020806126bd9351830101910161210e565b916126c8838261324c565b926126d9845165ffffffffffff1690565b9065ffffffffffff8085169216828114612758578211918261270f575b5050612706576103949250613241565b50506020015190565b90915061271c8354612122565b63ffffffff831614918215612735575b50505f806126f6565b61275091925061220961274a61093f9261213d565b8561324c565b115f8061272c565b50505050506020015190565b5061039491613241565b906020828203126102295781516001600160401b039283821161022957019060408282031261022957604051926127a4846104de565b825181811161022957826127b9918501611842565b84526020830151908111610229576120bd9201611842565b90816020910312610229575190565b9081526001600160a01b03909116602082015265ffffffffffff90911660408201526080606082018190526103949291019061023d565b92612820612041565b90805180612a33575b50506128344261263c565b5f5490949061284d906108ff906001600160a01b031681565b93604051956327f843b560e11b875260209687816004818a5afa8015610acc576128819261093f925f92612a1b5750611a14565b65ffffffffffff8216908110908115612a04575b81156129d3575b506129c7578560049560405196878092630ce9b79360e41b82525afa948515610acc576128ee9587915f916129aa575b50845190604051808099819463e02f693760e01b8352878b8a600486016127e0565b03916001600160a01b03165afa938415610acc57612966955f95612969575b5092612955859361295b9361295596869a61294c61035e83612937875f52600260205260405f2090565b9060018060a01b03165f5260205260405f2090565b95015192611f6e565b90612130565b818082109118021890565b91565b61295b929550612955949193612997612955928a3d8c116129a3575b61298f8183610542565b8101906127d1565b9693509391945061290d565b503d612985565b6129c19150823d84116123bf576123b08183610542565b5f6128cc565b5050505050505f905f90565b90506129fd61093f6129f187612937875f52600160205260405f2090565b5465ffffffffffff1690565b115f61289c565b9050612a1261093f4261263c565b81101590612895565b610abe9192508a3d8c11610ac557610ab68183610542565b612a46925060208091830101910161276e565b5f80612829565b919091805f52600160205265ffffffffffff80612a7d8560405f209060018060a01b03165f5260205260405f2090565b541690831611612a8c57505050565b61058f92612ab4915f52600160205260405f209060018060a01b03165f5260205260405f2090565b9065ffffffffffff1665ffffffffffff19825416179055565b9190825f526002602052612b2561035e612afa8360405f209060018060a01b03165f5260205260405f2090565b92612b044261263c565b955f52600260205260405f209060018060a01b03165f5260205260405f2090565b918201809211611a0f576001810190815415612bc9575b612b4581613208565b509490835495612b54846120da565b5081612bb4575b5015612b935750505f198301928311611a0f5761058f92612b7b916120c5565b90919082549060031b91821b915f19901b1916179055565b61058f94612bad926001600160d01b039091169190613456565b50506132db565b65ffffffffffff83811691161490505f612b5b565b612bd2826132ae565b612b3c565b60606020610394938184526001600160401b0381511682850152015191604080820152019061023d565b919360a093610394969565ffffffffffff938552600180871b031660208501526040840152166060820152816080820152019061023d565b92939060046020612c566108ff6108ff5f5460018060a01b031690565b604051630ce9b79360e41b815292839182905afa908115610acc5761110e91612cd4915f91612d23575b506001600160a01b031693612c93610591565b6001600160401b037f000000000000000000000000000000000000000000000000000000000000000016815290602082015260405192839160208301612bd7565b823b15610229575f94612cff86926040519889978896879563724ab0f760e11b875260048701612c01565b03925af18015610acc57612d105750565b80612d1d61058f92610514565b806102c9565b612d3c915060203d6020116123bf576123b08183610542565b5f612c80565b65ffffffffffff9160446020925f60018060a01b038154166040519687958694631c9e38c760e21b865260048601521660248401525af18015610acc57612d865750565b612d9e9060203d6020116129a35761298f8183610542565b50565b8115612dab570490565b634e487b7160e01b5f52601260045260245ffd5b92905f549060ff8260a01c16612dd7575b5050505050565b6040516313c085b760e11b815291602090839060049082906001600160a01b03165afa918215610acc575f92612e94575b5060405163065c1e0360e01b6020820190815260248201969096526001600160a01b039091166044820152606481019390935265ffffffffffff9091166084830152612e618260a481015b03601f198101845283610542565b6202a15c5a10612e82575f928380935192620249f0f1505f80808080612dd0565b604051632153f33560e21b8152600490fd5b612e619250612eb4612e539160203d6020116123bf576123b08183610542565b9250612e08565b805480612ec85750505f90565b5f19918183810111611a0f575f5260205f2001015460301c90565b60405190612ef0826104de565b5f6020838281520152565b612f2091612f1a91612f0b612ee3565b50612f14612ee3565b506120c5565b506124bb565b65ffffffffffff81511690602060018060d01b039101511660405191612f45836104de565b8252602082015290565b612f576133cc565b612f5f6133cc565b60015f8051602061353483398151915255565b60405190612f7f826104be565b5f8252565b809103906060821261022957602060405192612f9f846104f9565b12610229576040908151612fb2816104be565b612fbb82611dc5565b815283526020810151612fcd8161022d565b60208401520151604082015290565b90600490612fe8612f72565b508051612fff602092838080948301019101612f84565b6040516327f843b560e11b815290949093849182906001600160a01b03165afa918215610acc575f926130be575b50820190613041825165ffffffffffff1690565b65ffffffffffff918216911610156130ac5760408201600381511061309a57613090613076613096935165ffffffffffff1690565b65ffffffffffff1665ffffffffffff196004541617600455565b51600555565b5190565b6040516354f778f360e01b8152600490fd5b6040516367d5e3df60e11b8152600490fd5b816130d69293503d8411610ac557610ab68183610542565b905f61302d565b600181111561039457600181600160801b8110156131f6575b61319e61319461318a61318061317661316c6131aa97600488600160401b6131a59a10156131e9575b6401000000008110156131dc575b620100008110156131cf575b6101008110156131c3575b60108110156131b7575b10156131af575b60030260011c613165818b612da1565b0160011c90565b613165818a612da1565b6131658189612da1565b6131658188612da1565b6131658187612da1565b6131658186612da1565b8093612da1565b821190565b900390565b60011b613155565b811c9160021b9161314e565b60081c91811b91613144565b60101c9160081b91613139565b60201c9160101b9161312d565b60401c9160201b9161311f565b50600160401b9050608082901c6130f6565b8054806132195750505f905f905f90565b5f19918183810111611a0f575f5260205f2001015460019165ffffffffffff82169160301c90565b906120e390826132fe565b9061326f612f1a6132909261325f612ee3565b50613268612ee3565b50846120c5565b91600165ffffffffffff845116936020828060d01b039101511691016120c5565b905490604051926132a0846104de565b835260031b1c602082015290565b8054600160401b8110156104d9576132cb916001820181556120c5565b8154905f199060031b1b19169055565b90815491600160401b8310156104d95782612b7b91600161058f950181556120c5565b908154905f918060058111613383575b5091905b82821061333d575050806133265750505f90565b6103949161251161333692612122565b5460301c90565b909161334981846133fa565b90845f5265ffffffffffff808360205f20015416908416105f146133705750915b90613312565b9250600181018091111561336a576119e4565b9061338d826130dd565b8203918211611a0f57845f5265ffffffffffff808360205f20015416908416105f146133bb57505b5f61330e565b92506133c690611df9565b916133b5565b60ff5f805160206135548339815191525460401c16156133e857565b604051631afcd79f60e31b8152600490fd5b90808216911860011c8101809111611a0f5790565b8054600160401b8110156104d95761342c916001820181556120c5565b611c4357815160209092015160301b65ffffffffffff191665ffffffffffff909216919091179055565b805492939280156135095761346d61347891612122565b825f5260205f200190565b9182549265ffffffffffff918285169281168084116134f7578793036134be57506134b792509065ffffffffffff82549181199060301b169116179055565b60301c9190565b9150506134f2916134de6134d0610591565b65ffffffffffff9093168352565b6001600160d01b038616602083015261340f565b6134b7565b604051632520601d60e01b8152600490fd5b509061352e9161351a6134d0610591565b6001600160d01b038516602083015261340f565b5f919056fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a264697066735822122083c9d2c27050cb61d0026c4a120151139ad36b1ef086f66b4ca1715f04bbc28864736f6c63430008190033","sourceMap":"3563:3596:91:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;-1:-1:-1;;;;;3563:3596:91;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;3563:3596:91;;;;;;;;-1:-1:-1;;3563:3596:91;;;;:::o;:::-;;;;;;-1:-1:-1;;3563:3596:91;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;3563:3596:91;;;;;;1435:38:99;-1:-1:-1;;;;;3563:3596:91;;;;;;;;;;;;-1:-1:-1;;3563:3596:91;;;;;2936:47:99;:38;3563:3596:91;;;;;:::i;:::-;;;-1:-1:-1;3563:3596:91;2936:16:99;3563:3596:91;;;-1:-1:-1;3563:3596:91;;;;;;;;;;;;;;;;;2936:38:99;:47;:::i;:::-;3563:3596:91;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;-1:-1:-1;;3563:3596:91;;;;;;1788:109:99;3563:3596:91;;;;;:::i;:::-;;;-1:-1:-1;3563:3596:91;1788:109:99;3563:3596:91;;;-1:-1:-1;3563:3596:91;;;;;;;;;;;;;;;;;1788:109:99;3563:3596:91;;;;;;;;;;;;;;-1:-1:-1;;3563:3596:91;;;;;;;1374:6:99;3563:3596:91;;;;;;;;;-1:-1:-1;;3563:3596:91;;;;;;1528:51:99;-1:-1:-1;;;;;3563:3596:91;;;;;;;;;;;;-1:-1:-1;;3563:3596:91;;;;;;322:32:76;-1:-1:-1;;;;;3563:3596:91;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3563:3596:91;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;-1:-1:-1;;;;;3563:3596:91;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;3563:3596:91;;;;;;;:::o;:::-;-1:-1:-1;;;;;3563:3596:91;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;3563:3596:91;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;3563:3596:91;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;3563:3596:91;;;;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;:::i;:::-;-1:-1:-1;;;;;3563:3596:91;;;;;;-1:-1:-1;;3563:3596:91;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;3563:3596:91;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;3563:3596:91;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;3563:3596:91;;;;2016:56:101;3563:3596:91;;;;;;;;:::i;:::-;;;-1:-1:-1;3563:3596:91;;;2016:9:101;3563:3596:91;;;;;-1:-1:-1;;;;;3563:3596:91;;2016:56:101;:::i;:::-;3563:3596:91;;;;;;;;;;;;;-1:-1:-1;;3563:3596:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3563:3596:91;;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;3563:3596:91;;;;-1:-1:-1;;;;;3563:3596:91;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;3563:3596:91;;;;;;;4301:16:22;3563:3596:91;;4726:16:22;;:34;;;;3563:3596:91;4805:1:22;4790:16;:50;;;;3563:3596:91;4855:13:22;:30;;;;3563:3596:91;4851:91:22;;;-1:-1:-1;;;;;;;;;;;3563:3596:91;;-1:-1:-1;;3563:3596:91;;;;;718:4:76;;4951:18:22;4979:67;;718:4:76;:::i;:::-;5066:101:22;;3563:3596:91;5066:101:22;-1:-1:-1;;;;;;;;;;;3563:3596:91;;-1:-1:-1;;;;3563:3596:91;;;;;-1:-1:-1;3563:3596:91;;5142:14:22;;3563:3596:91;;5142:14:22;3563:3596:91;4979:67:22;-1:-1:-1;;;;;;;;;;;3563:3596:91;;-1:-1:-1;;;;3563:3596:91;-1:-1:-1;;;3563:3596:91;;;718:4:76;:::i;4851:91:22:-;3563:3596:91;;-1:-1:-1;;;4908:23:22;;3563:3596:91;;4908:23:22;4855:30;4872:13;;;4855:30;;;4790:50;4818:4;4810:25;:30;;-1:-1:-1;4790:50:22;;4726:34;;;-1:-1:-1;4726:34:22;;3563:3596:91;;;;;;-1:-1:-1;;3563:3596:91;;;;;;3726:43;-1:-1:-1;;;;;3563:3596:91;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;-1:-1:-1;;3563:3596:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;3563:3596:91;;;;;;;;;;;:::i;:::-;3361:103:26;;;;:::i;:::-;2123:10:99;;;:::i;:::-;3563:3596:91;;:::i;:::-;2666:16:101;;2662:105;;3563:3596:91;837:15:68;;819:34;837:15;819:34;:::i;:::-;3563:3596:91;2813:31:101;3563:3596:91;;;;;;;;2813:31:101;;;:::i;:::-;-1:-1:-1;3563:3596:91;;;;2847:27:101;;:13;;-1:-1:-1;;;;;3563:3596:91;2847:13:101;3563:3596:91;;-1:-1:-1;;;;;3563:3596:91;;;2847:27:101;3563:3596:91;;;;;;;;;;;;;;2847:29:101;;;;;;;;2794:82;2847:29;2813:63;2847:29;-1:-1:-1;2847:29:101;;;3563:3596:91;2813:63:101;;:::i;:::-;3563:3596:91;;;;2794:82:101;3563:3596:91;;;2794:82:101;;;:138;;;;;3563:3596:91;2777:223:101;;;3248:62:99;3104:37:101;;3248:62:99;;;;:::i;:::-;3463:5:63;;;;;;3066;;3563:3596:91;3060:42:63;;;3166:11:101;;3162:68;;3563:3596:91;3671:86:101;837:15:68;;;;3671:86:101;837:15:68;3262:31:101;837:15:68;819:34;837:15;819:34;:::i;:::-;3262:31:101;:::i;:::-;3563:3596:91;3317:13:101;3563:3596:91;;;;3347:308:101;3563:3596:91;;:::i;:::-;;;;-1:-1:-1;;;;;3563:3596:91;;;3379:266:101;;3563:3596:91;3379:266:101;;;3563:3596:91;;;;;;;3379:266:101;;3563:3596:91;;;;;3379:266:101;;3563:3596:91;-1:-1:-1;3563:3596:91;3379:266:101;;3563:3596:91;3347:308:101;:::i;:::-;3563:3596:91;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3563:3596:91;;;;;;;;;;3671:86:101;;;;3426:1:26;1949;-1:-1:-1;;;;;;;;;;;3563:3596:91;3860:283:26;3426:1;3563:3596:91;;;;;;;;;;;;3162:68:101;3563:3596:91;;-1:-1:-1;;;3200:19:101;;;2777:223;-1:-1:-1;3563:3596:91;;-1:-1:-1;;;2964:25:101;;;2794:138;837:15:68;;2896:36:101;819:34:68;837:15;819:34;:::i;2896:36:101:-;-1:-1:-1;2896:36:101;2794:138;;;2847:29;;;;;3563:3596:91;2847:29:101;3563:3596:91;2847:29:101;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;:::i;2662:105::-;2718:38;;;;;;;;:::i;:::-;2662:105;;;;;3563:3596:91;;;;;;-1:-1:-1;;3563:3596:91;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;-1:-1:-1;;3563:3596:91;;;;;1795:13:101;3563:3596:91;;;;;;;;;;;;;-1:-1:-1;;3563:3596:91;;;;;;;;;:::i;:::-;449:5:89;-1:-1:-1;;;;;3563:3596:91;435:10:89;:19;431:71;;3563:3596:91;4136:60;3563:3596;;;;-1:-1:-1;3563:3596:91;4136:9;3563:3596;;;-1:-1:-1;3563:3596:91;4136:60;:::i;:::-;3563:3596;;;;;;;;;;;;;;;;;;;431:71:89;3563:3596:91;;-1:-1:-1;;;477:14:89;;3563:3596:91;;477:14:89;3563:3596:91;;;;;;-1:-1:-1;;3563:3596:91;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;3563:3596:91;;;;;;;;;;;:::i;:::-;3361:103:26;;;:::i;:::-;3563:3596:91;;:::i;:::-;;7493:16:101;7489:103;;3563:3596:91;-1:-1:-1;;3563:3596:91;;;-1:-1:-1;;;7607:48:101;;7644:10;7607:48;;;3563:3596:91;;;-1:-1:-1;;;;;3563:3596:91;;;;;;;;;;;;;;7607:48:101;7617:16;;;3563:3596:91;7607:48:101;;;;;;;-1:-1:-1;7607:48:101;;;3563:3596:91;7606:49:101;;7602:99;;-1:-1:-1;3563:3596:91;7764:35:101;;-1:-1:-1;;;;;3563:3596:91;7644:10:101;3563:3596:91;;-1:-1:-1;;7644:10:101;297:2:95;3563:3596:91;;267:46:95;;152:169;7764:35:101;7850:21;5260:30:93;7850:21:101;;3563:3596:91;;7850:9:101;3563:3596:91;;;;;;;7850:21:101;5260:30:93;:::i;:::-;-1:-1:-1;7900:801:101;;;;;7930:34;819::68;837:15;819:34;:::i;7930::101:-;3563:3596:91;;;;7930:34:101;;;;7984:27;:21;;3563:3596:91;;7850:9:101;3563:3596:91;;;;;;;7984:21:101;:27;:::i;:::-;;7926:225;8169:61;8182:48;8190:39;4928:20:93;8198:21:101;;3563:3596:91;;7850:9:101;3563:3596:91;;;;;;;8198:21:101;4928:20:93;:::i;8169:61:101:-;3563:3596:91;;;;8169:61:101;;;8165:336;;7926:225;7900:801;;;;;;8716:34;7900:801;8716:34;7900:801;;3563:3596:91;-1:-1:-1;;;;;3563:3596:91;;;;;;;;;;;;;8716:34:101;;;;3426:1:26;1949;-1:-1:-1;;;;;;;;;;;3563:3596:91;3860:283:26;3426:1;3563:3596:91;8165:336:101;8250:21;;;;;;;3563:3596:91;;7850:9:101;3563:3596:91;;;;;;;8250:21:101;3563:3596:91;;;;;;;;8299:34:101;;;;;;;;;;;;;;-1:-1:-1;8299:34:101;;;8165:336;3563:3596:91;;8336:22:101;3563:3596:91;;;;;;;;;;;8361:30:101;;;;;;;;;;8336:55;8310:38:66;8361:30:101;8716:34;8361:30;8299:92;8361:30;8716:34;8361:30;8298:130;8361:30;-1:-1:-1;8361:30:101;;;8165:336;3563:3596:91;;;8336:55:101;;:::i;:::-;3563:3596:91;;8299:92:101;:::i;:::-;8298:130;:::i;:::-;8310:38:66;;:::i;:::-;8165:336:101;;;;;;8361:30;;;;;;-1:-1:-1;8361:30:101;;;;;;:::i;:::-;;;;;8299:34;;;;;;;;;;;;;;:::i;:::-;;;;7926:225;8036:61;8049:48;8057:39;4928:20:93;8065:21:101;;3563:3596:91;;7850:9:101;3563:3596:91;;;;;;;8036:61:101;3563:3596:91;;;8036:61:101;7926:225;8032:119;3563:3596:91;;-1:-1:-1;;;8124:12:101;;3563:3596:91;;8124:12:101;7900:801;-1:-1:-1;3563:3596:91;;;;;;-1:-1:-1;;8535:23:101;;8531:81;;8626:21;;8716:34;8626:21;8310:38:66;8716:34:101;8626:21;;;3563:3596:91;;7850:9:101;3563:3596:91;;;;;;;8626:21:101;819:34:68;837:15;819:34;:::i;8310:38:66:-;7900:801:101;;;;8531:81;3563:3596:91;;-1:-1:-1;;;8585:12:101;;;7602:99;-1:-1:-1;3563:3596:91;;-1:-1:-1;;;7678:12:101;;;7607:48;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;7489:103;7544:37;;;;;;:::i;:::-;;7489:103;;;;3563:3596:91;;;;;;;;;;;;;1050:35:101;3563:3596:91;;;;;;1050:35:101;-1:-1:-1;3563:3596:91;;;;;;-1:-1:-1;3563:3596:91;:::o;:::-;;:::i;:::-;;;;;;-1:-1:-1;;3563:3596:91;;;;;;1050:35:101;3563:3596:91;1050:35:101;;;;;;;;:::i;:::-;-1:-1:-1;3563:3596:91;;;1050:35:101;;3563:3596:91;1050:35:101;;;3563:3596:91;1050:35:101;;;;3563:3596:91;;;;;;;-1:-1:-1;;;;;3563:3596:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3563:3596:91;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;3563:3596:91;;;;-1:-1:-1;3563:3596:91;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;416:25:82;;;;477:31;416:25;;:::i;:::-;3563:3596:91;;;;;;;;;;477:31:82;;3563:3596:91;;;;;;;;;;;:::i;:::-;477:31:82;3563:3596:91;;477:31:82;;;;;;:::i;:::-;518:79;;;3563:3596:91;518:79:82;;3563:3596:91;;;;;;;;;:::i;:::-;;;:::i;:::-;;;-1:-1:-1;;3563:3596:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;3563:3596:91;;;;;;;;;:::i;:::-;;;;;2692:73:99;:38;3563:3596:91;;;:::i;:::-;;;;;-1:-1:-1;3563:3596:91;2692:16:99;3563:3596:91;;;-1:-1:-1;3563:3596:91;;;;;;;;;;;;;;;;;2692:38:99;:73;:::i;3563:3596:91:-;;;;;3248:62:99;3563:3596:91;;;:::i;:::-;3248:62:99;;;;;:::i;:::-;3563:3596:91;;;;;;;;;;-1:-1:-1;;3563:3596:91;;;;;;;;;;;-1:-1:-1;;;;;3563:3596:91;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;3361:103:26;;;;:::i;:::-;3563:3596:91;;:::i;:::-;4024:16:101;;4020:105;;3563:3596:91;;;4153:13:101;3563:3596:91;4139:34:101;;;4135:94;;4270:25;;;:::i;:::-;3563:3596:91;;;;4330:18:101;;;;:::i;:::-;4153:13;4408:24;;3563:3596:91;;;;;;;;;;;;;4377:95:101;4434:37;;4377:95;;;:::i;:::-;3563:3596:91;4377:125:101;;:250;;;3563:3596:91;4377:309:101;;;3563:3596:91;4360:389:101;;4763:43;837:15:68;819:34;837:15;819:34;:::i;:::-;4763:43:101;:::i;:::-;-1:-1:-1;3563:3596:91;4809:27:101;;:13;;-1:-1:-1;;;;;3563:3596:91;4809:13:101;3563:3596:91;4809:27:101;3563:3596:91;;4809:29:101;3563:3596:91;;;;;;;;;;;4809:29:101;;;;;;;;;;-1:-1:-1;4809:29:101;;;3563:3596:91;;;;;4763:75:101;4759:131;;4994:16;;;3563:3596:91;;4994:16:101;;4945:140;;4994:16;;3563:3596:91;;-1:-1:-1;;;;;3563:3596:91;5038:37:101;;;4945:140;;:::i;:::-;5120:14;5111:41;5120:14;;;;3563:3596:91;3463:5:63;;;;3066;;3563:3596:91;3060:42:63;3371:111;;5111:41:101;5166:18;;;5162:75;;3563:3596:91;;;;5247:78:101;;5335:24;3563:3596:91;;5335:24:101;;5725:145;;5335:24;;;;3563:3596:91;5335:24:101;5725:145;5335:24;;;;6024;5335;;;3563:3596:91;;;;;;;;;;;;;;5335:24:101;3563:3596:91;;;;5445:24:101;;3563:3596:91;-1:-1:-1;;;;;3563:3596:91;;;;;5445:24:101;;:::i;:::-;3563:3596:91;;;;5542:13:101;;3563:3596:91;;-1:-1:-1;;;;;3563:3596:91;5542:13:101;;:::i;:::-;3563:3596:91;;;;;;-1:-1:-1;;;;;3563:3596:91;;;;;;;;;;;:::i;:::-;;;;4809:29:101;5753:103;;3563:3596:91;5753:103:101;;;3563:3596:91;;5725:145:101;;;4809:29;5725:145;;3563:3596:91;;;;;;;;;;;;;;;;;;;;;;;;;;;5725:145:101;;3563:3596:91;;5725:145:101;;;;;;:::i;:::-;;:::i;:::-;5920:24;3563:3596:91;;;;;;;;5920:24:101;;:::i;:::-;3563:3596:91;;;-1:-1:-1;;;;;3563:3596:91;;;;;;;;;;;6024:24:101;;:::i;:::-;3563:3596:91;;;;;6065:39:101;;3563:3596:91;;6065:39:101;3426:1:26;1949;-1:-1:-1;;;;;;;;;;;3563:3596:91;3860:283:26;5247:78:101;3563:3596:91;;-1:-1:-1;;;5291:23:101;;3563:3596:91;;5291:23:101;5162:75;3563:3596:91;;-1:-1:-1;;;5207:19:101;;3563:3596:91;;5207:19:101;4759:131;3563:3596:91;;-1:-1:-1;;;4861:18:101;;3563:3596:91;;4861:18:101;4809:29;;;;;;;;;;;;;;:::i;:::-;;;;4360:389;3563:3596:91;;-1:-1:-1;;;4718:20:101;;3563:3596:91;;4718:20:101;4377:309;837:15:68;4647:39:101;819:34:68;837:15;819:34;:::i;4647:39:101:-;3563:3596:91;;;;;4647:39:101;4377:309;;:250;837:15:68;4522:105:101;:91;4553:20;819:34:68;837:15;819:34;:::i;:::-;4553:20:101;:::i;:::-;4575:37;;;;4522:91;;;:::i;:105::-;;;4377:250;;4135:94;3563:3596:91;;-1:-1:-1;;;4196:22:101;;3563:3596:91;;4196:22:101;4020:105;4076:38;;;;;;;;:::i;:::-;4020:105;;;;;3563:3596:91;;;;;;-1:-1:-1;;3563:3596:91;;;;;;;-1:-1:-1;;;;;404:28:76;3563:3596:91;;;;;;;;;;-1:-1:-1;;3563:3596:91;;;;;1221:37:101;3563:3596:91;;;;;;;;;;;;;-1:-1:-1;;3563:3596:91;;;;;;954:41:101;-1:-1:-1;;;;;3563:3596:91;;;;;;;;;;;;-1:-1:-1;;3563:3596:91;;;;;;-1:-1:-1;;;;;3563:3596:91;;;;2239:46:101;3563:3596:91;;;;;;;;:::i;:::-;819:34:68;837:15;819:34;:::i;:::-;3563:3596:91;;2239:46:101;:::i;:::-;3563:3596:91;;-1:-1:-1;;;;;3563:3596:91;;;;;;;;;;;;-1:-1:-1;;3563:3596:91;;;;;;;1271:7:99;3563:3596:91;;;;;;;;;-1:-1:-1;;3563:3596:91;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3361:103:26;;;:::i;:::-;3563:3596:91;;:::i;:::-;6308:16:101;;6304:99;;3563:3596:91;;;6431:13:101;3563:3596:91;6417:34:101;;;6413:94;;6548:25;;;:::i;:::-;3563:3596:91;6431:13:101;3563:3596:91;;6653:24:101;;3563:3596:91;;;;;;;;;;;6622:92:101;6679:34;;3563:3596:91;;;6622:92:101;;:::i;:::-;3563:3596:91;6741:29:101;;;:151;;;;;3563:3596:91;6724:223:101;;;;6961:10;:29;6957:80;;7051:40;819:34:68;837:15;819:34;:::i;7051:40:101:-;3563:3596:91;;;;;7051:40:101;;7047:95;;3563:3596:91;;;;7152:78:101;;3563:3596:91;;-1:-1:-1;;;;3563:3596:91;-1:-1:-1;;;3563:3596:91;;;6961:10:101;7280:33;;-1:-1:-1;7280:33:101;;3426:1:26;1949;-1:-1:-1;;;;;;;;;;;3563:3596:91;3860:283:26;7152:78:101;3563:3596:91;;-1:-1:-1;;;7196:23:101;;3563:3596:91;;7196:23:101;7047:95;3563:3596:91;;-1:-1:-1;;;7114:17:101;;3563:3596:91;;7114:17:101;6957:80;3563:3596:91;;-1:-1:-1;;;7013:13:101;;3563:3596:91;;7013:13:101;6724:223;3563:3596:91;;-1:-1:-1;;;6924:12:101;;3563:3596:91;;6924:12:101;6741:151;6790:102;837:15:68;;;6790:88:101;837:15:68;6843:34:101;6821:20;819:34:68;837:15;819:34;:::i;6821:20:101:-;6843:34;;;6790:88;;:::i;:102::-;;6741:151;;;;6304:99;6357:35;;;;;;;:::i;:::-;6304:99;;;;3563:3596:91;;;;;;-1:-1:-1;;3563:3596:91;;;;;;;;-1:-1:-1;;;;;3563:3596:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;3563:3596:91;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;3563:3596:91;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4649:553::-;3563:3596;;-1:-1:-1;;;4939:105:91;;-1:-1:-1;;;;;3563:3596:91;;;4939:105;;;3563:3596;;;;;;;;;;;;;;;;;;;;;;;;;4649:553;4939:105;3563:3596;;;;;4939:105;3563:3596;4956:18;-1:-1:-1;;;;;3563:3596:91;4939:105;;;;;;;;;;;4649:553;3563:3596;;;5055:141;;4649:553;:::o;5055:141::-;5112:73;3563:3596;;;5112:73;3563:3596;;;;;;;:::i;:::-;;;;;5112:73;;;3563:3596;5112:73;;;:::i;4939:105::-;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;6788:369;;;6975:44;6788:369;3563:3596;6975:44;;:::i;:::-;3563:3596;;7030:121;;6788:369;:::o;1876:205:101:-;-1:-1:-1;3563:3596:91;;;2016:9:101;3563:3596:91;;;;;-1:-1:-1;;;;;3563:3596:91;2016:56:101;;1876:205;;2016:56;:::i;:::-;3563:3596:91;1876:205:101;:::o;3563:3596:91:-;;;;;;;;;;;;;;;;;-1:-1:-1;;3563:3596:91;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::o;6172:610::-;6466:55;6172:610;;;;6370:51;3563:3596;6370:51;;;;:::i;:::-;837:15:68;6500:20:91;819:34:68;837:15;819:34;:::i;6466:55:91:-;3563:3596;;6536:30;;;:64;;;6172:610;6532:244;;6172:610;;:::o;6532:244::-;3563:3596;;;;;;6623:142;3563:3596;;;;;;;:::i;:::-;;;6651:100;;;3563:3596;;;;;6623:142;;;6651:100;6623:142;;;3563:3596;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;3563:3596:91;;;;;;:::i;6536:64::-;3563:3596;;;6570:30;;6536:64;;3563:3596;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;3563:3596:91;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3317:13:101;3563:3596:91;-1:-1:-1;;;3563:3596:91;;;;;;;;;;3317:13:101;3563:3596:91;;:::i;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3563:3596:91;-1:-1:-1;;;;;3563:3596:91;;;;;;;;;;;;;;;;3317:13:101;;3563:3596:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;3563:3596:91;;;;;;-1:-1:-1;;;3563:3596:91;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;5208:958::-;;;;;5643:105;3563:3596;5435:51;;;;;;:::i;:::-;837:15:68;5643:105:91;5531:55;5565:20;819:34:68;837:15;819:34;:::i;5565:20:91:-;5531:55;;;:::i;:::-;3563:3596;;-1:-1:-1;;;5643:105:91;;-1:-1:-1;;;;;3563:3596:91;;;5643:105;;;3563:3596;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5643:105;;3563:3596;5660:18;-1:-1:-1;;;;;3563:3596:91;5643:105;;;;;;;;;;;5208:958;3563:3596;;;5763:30;;;:64;;;5208:958;5763:98;;;;5208:958;5759:401;;5208:958;;;:::o;5759:401::-;5884:265;3563:3596;;;;5884:265;3563:3596;;;;:::i;:::-;;;;5912:223;;;3563:3596;;5912:223;;3563:3596;;;5884:265;;;5912:223;5884:265;;;:::i;5763:98::-;3563:3596;;;5831:30;;5763:98;;:64;3563:3596;;;5797:30;;5763:64;;5643:105;;;;;;;;;;;;;;:::i;:::-;;;;;3563:3596;;;;;;;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;3149:1:93;3563:3596:91;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;3563:3596:91;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;4209:434::-;;;-1:-1:-1;4307:12:91;3563:3596;;;;;4435:78;;;;;;;;;;;;;3563:3596;;;;;;;4435:78;;;;;:::i;:::-;3563:3596;;716:88:89;;3563:3596:91;716:88:89;;;;;;;;;783:4;4435:78:91;716:88:89;;3563:3596:91;;;;;;;;;;;:::i;:::-;716:88:89;3563:3596:91;716:88:89;3563:3596:91;;716:88:89;;;;;;;;:::i;:::-;698:107;;;;;857:45;698:107;;:::i;:::-;3563:3596:91;;;;857:45:89;;;;;;:::i;:::-;916:8;;912:175;;3563:3596:91;;;4361:204;3563:3596;;4361:204;;;;;;:::i;:::-;4576:61;;;;4209:434;;;:::o;4576:61::-;4609:17;3563:3596;;;;4609:17;3563:3596;;4609:17;;;;;3563:3596;;;;;;;;;;;;4609:17;;;;;;;;;:::i;912:175:89:-;3563:3596:91;;;;944:22:89;;;940:36;;990:87;;2505:267:99;-1:-1:-1;3563:3596:91;;;2692:16:99;3563:3596:91;;;;;;;;-1:-1:-1;;;;;3563:3596:91;;;;;;;;;2692:73:99;;2505:267;;2692:73;:::i;3563:3596:91:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;3563:3596:91;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;3563:3596:91;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;3563:3596:91;;-1:-1:-1;3563:3596:91;;;-1:-1:-1;3563:3596:91;:::o;10580:184:93:-;10689:20;;;:::i;:::-;-1:-1:-1;;;;;3563:3596:91;;10726:7:93;3563:3596:91;;10736:12:93;:17;:12;;:17;:::i;:::-;3563:3596:91;;;;;;10580:184:93;:::o;10726:31::-;;;10689:11;10580:184;:::o;3563:3596:91:-;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;3563:3596:91;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::o;1818:604:93:-;;3563:3596:91;;1946:17:93;1942:83;;3563:3596:91;2049:27:93;3563:3596:91;2049:27:93;3563:3596:91;;2049:27:93;;;;;;:::i;:::-;2120:14;;;;;:::i;:::-;3563:3596:91;;;;;;;;;;;;;;;;2148:22:93;;;2144:77;;2235:21;-1:-1:-1;2235:84:93;;;;1818:604;2231:139;;;;1425:34;;;;:::i;2231:139::-;-1:-1:-1;;2049:27:93;2342:17;3563:3596:91;-1:-1:-1;;;;;3563:3596:91;;:::o;2235:84:93:-;3563:3596:91;;;2269:16:93;3563:3596:91;;2269:16:93;:::i;:::-;3563:3596:91;;;2261:24:93;:57;;;;;2235:84;;;;;;;2261:57;2289:29;2298:8;;;2289:18;2298:8;2289:23;2298:8;;:::i;:::-;2289:18;;:::i;:::-;3563:3596:91;;;;;2289:29:93;;2261:57;;;;2144:77;-1:-1:-1;;;;2049:27:93;2193:17;;;;3563:3596:91;-1:-1:-1;;;;;3563:3596:91;;-1:-1:-1;3563:3596:91;:::o;1942:83:93:-;1425:34;;;;:::i;3563:3596:91:-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;3563:3596:91;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;6491:564:99:-;6614:34;6491:564;6614:34;;;;:::i;:::-;3563:3596:91;;-1:-1:-1;;;6664:41:99;;-1:-1:-1;;;;;3563:3596:91;;;6664:41:99;;;3563:3596:91;;;;;6664:41:99;;;3563:3596:91;;;6674:13:99;3563:3596:91;;6664:41:99;;;;;;;-1:-1:-1;6664:41:99;;;6491:564;6663:42;;6659:90;;2684:111:26;6850:27:99;6664:41;2684:111:26;;;:::i;:::-;-1:-1:-1;3563:3596:91;;-1:-1:-1;;;;;;3563:3596:91;-1:-1:-1;;;;;3563:3596:91;;;;;6850:27:99;;:::i;:::-;3563:3596:91;;;;;;;;;;6892:23:99;;;;;;;;;-1:-1:-1;6892:23:99;;;6491:564;3563:3596:91;;;6892:37:99;:64;;;6491:564;6888:112;;3563:3596:91;7010:38:99;;3563:3596:91;;-1:-1:-1;3563:3596:91;;-1:-1:-1;;;;3563:3596:91;;;;;;-1:-1:-1;;;3563:3596:91;;;;;;;;6888:112:99;3563:3596:91;;-1:-1:-1;;;6979:10:99;;6664:41;;6979:10;6892:64;-1:-1:-1;3563:3596:91;;;;6892:64:99;;:23;;;;;;-1:-1:-1;6892:23:99;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;6659:90;3563:3596:91;;-1:-1:-1;;;6728:10:99;;6664:41;;6728:10;6664:41;;;;;;;;;;;;;;:::i;:::-;;;;3470:384:26;-1:-1:-1;;;;;;;;;;;1991:1:26;3563:3596:91;;3670:20:26;3666:88;;1991:1;3563:3596:91;;3470:384:26:o;3666:88::-;3563:3596:91;;-1:-1:-1;;;3713:30:26;;;;;4451:257:99;3563:3596:91;;-1:-1:-1;;;4546:86:99;;467:2:95;3563:3596:91;;;;4546:86:99;;;3563:3596:91;-1:-1:-1;;;;;4546:86:99;3563:3596:91;;;4572:26:99;3563:3596:91;;4546:86:99;;;;;;;-1:-1:-1;4546:86:99;;;4451:257;4636:10;;3563:3596:91;;4546:100:99;4542:160;;4451:257::o;4542:160::-;3563:3596:91;;-1:-1:-1;;;4669:22:99;;4546:86;;4669:22;4546:86;;;;;;;;;;;;;;;:::i;:::-;;;;;3563:3596:91;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;2666:855:93:-;3563:3596:91;;2880:15:93;2838:11;2905:18;;2944:1;2938:7;;2934:241;;2666:855;3199:60;;12687:230;12694:10;;;;;;3274:8;;;;3270:62;;3390:48;3563:3596:91;3430:7:93;;;;:::i;:::-;3390:48;13267:109;;;;;;13089:293;;3390:48;3563:3596:91;:::i;:::-;;3498:15:93;3505:7;3563:3596:91;13267:109:93;3563:3596:91;;;;;;;;3479:17:93;;3563:3596:91;-1:-1:-1;;;;;3563:3596:91;;;;3505:7:93;;:::i;:::-;3563:3596:91;;;;3498:15:93;3436:1;;3448:66;;2666:855::o;3270:62::-;3298:23;;2838:11;3298:23;2838:11;3298:23;2838:11;3298:23;2838:11;3298:23;:::o;12687:230::-;12734:23;;;;;;:::i;:::-;13267:109;;2838:11;13267:109;3563:3596:91;13267:109:93;;;2838:11;13267:109;;3563:3596:91;;;;;-1:-1:-1;12771:136:93;3563:3596:91;;;12830:10:93;12771:136;;12687:230;;;12771:136;3563:3596:91;;12891:1:93;3563:3596:91;;;;;;12771:136:93;3563:3596:91;;:::i;2934:241:93:-;2981:14;;;;:::i;:::-;3563:3596:91;;;;;;;13267:109:93;2838:11;13267:109;3563:3596:91;13267:109:93;;;2838:11;13267:109;;3563:3596:91;;;;;3013:55:93;3009:156;3563:3596:91;;;3088:10:93;3009:156;2934:241;;;3009:156;3143:7;;;;;:::i;:::-;3009:156;;;5905:168;;6006:20;;;:::i;:::-;3563:3596:91;;;;;;;-1:-1:-1;;3563:3596:91;;;;;;:::i;:::-;;;;;;;5905:168:93:o;3563:3596:91:-;;;;;;;;;;;;14296:213:64;3563:3596:91;14374:24:64;;;;14370:103;;3563:3596:91;14296:213:64;:::o;14370:103::-;3563:3596:91;;;;14421:41:64;;;;;;14452:2;14421:41;;;3563:3596:91;;;;;14421:41:64;3563:3596:91;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;3563:3596:91;;;;;;;;:::i;7558:604:93:-;;3563:3596:91;;7686:17:93;7682:83;;3563:3596:91;7789:27:93;3563:3596:91;7789:27:93;3563:3596:91;;7789:27:93;;;;;;:::i;:::-;7860:14;;;;;:::i;:::-;3563:3596:91;;;;;;;;;;;;;;;;7888:22:93;;;7884:77;;7975:21;-1:-1:-1;7975:84:93;;;;7558:604;7971:139;;;;8127:28;;;;:::i;7971:139::-;8082:17;;7789:27;8082:17;3563:3596:91;8075:24:93;:::o;7975:84::-;3563:3596:91;;;8009:16:93;3563:3596:91;;8009:16:93;:::i;:::-;3563:3596:91;;;8001:24:93;:57;;;;;7975:84;;;;;;;8001:57;8029:29;8038:8;;;8029:18;8038:8;8029:23;8038:8;;:::i;:::-;8029:18;;:::i;:29::-;;8001:57;;;;7884:77;7933:17;;;;;7789:27;7933:17;3563:3596:91;7926:24:93;:::o;7682:83::-;7726:28;;;;:::i;3563:3596:91:-;;;;;;;;;;;-1:-1:-1;;;;;3563:3596:91;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;3563:3596:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3323:1122:99:-;;3563:3596:91;;:::i;:::-;;;;3608:16:99;3604:109;;3323:1122;837:15:68;;819:34;837:15;819:34;:::i;:::-;-1:-1:-1;3563:3596:91;;;;3778:27:99;;:13;;-1:-1:-1;;;;;3563:3596:91;3778:13:99;3563:3596:91;3778:27:99;3563:3596:91;;;;;;;3778:29:99;;;;;;;;;;;;;;;3740:67;3778:29;3759:48;3778:29;-1:-1:-1;3778:29:99;;;3759:48;;:::i;3740:67::-;3563:3596:91;;;3740:67:99;;;:107;;;;;3323:1122;3740:197;;;;3323:1122;3723:263;;;3563:3596:91;3778:29:99;3563:3596:91;;;;;;;;;;4025:25:99;;;;;;;;;4010:143;4025:25;;;-1:-1:-1;4025:25:99;;;3323:1122;4113:30;;;3563:3596:91;;;;;;;;;;;4010:143:99;;;;;3778:29;4010:143;;;:::i;:::-;;;-1:-1:-1;;;;;3563:3596:91;4010:143:99;;;;;;;4181:257;4010:143;-1:-1:-1;4010:143:99;;;3323:1122;3996:157;;4293:102;3996:157;;4233:162;3996:157;4207:231;3996:157;;2936:28;:47;:38;:28;;;3563:3596:91;;2936:16:99;3563:3596:91;;;;;;;2936:28:99;3563:3596:91;;;;;;;;;;;;;;;;2936:47:99;4351:43;;;4293:102;;:::i;:::-;4233:162;;:::i;:::-;3463:5:63;;;;3066;;3563:3596:91;3060:42:63;3371:111;;4181:257:99;3323:1122;:::o;4010:143::-;4233:162;4010:143;;;4207:231;4010:143;;;;4293:102;4010:143;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;4025:25;;;;;;;;;;;;;;:::i;:::-;;;;3723:263;3962:13;;;;;;-1:-1:-1;3962:13:99;-1:-1:-1;3962:13:99;:::o;3740:197::-;3886:41;;3867:70;3886:51;;:41;;;3563:3596:91;;3886:29:99;3563:3596:91;;;;;;;3886:51:99;3563:3596:91;;;;;3867:70:99;-1:-1:-1;3740:197:99;;;:107;837:15:68;;3811:36:99;819:34:68;837:15;819:34;:::i;3811:36:99:-;;;;3740:107;;;3778:29;;;;;;;;;;;;;;;:::i;3604:109::-;3662:40;;;;;;;;;;;;:::i;:::-;3604:109;;;;4714:335;;;;3563:3596:91;-1:-1:-1;3563:3596:91;4876:29:99;3563:3596:91;;;;4876:51:99;3563:3596:91;;-1:-1:-1;3563:3596:91;;;;;;;;;;;;;;;;;4876:51:99;3563:3596:91;;;;;-1:-1:-1;4872:171:99;;4714:335;;;:::o;4872:171::-;4962:70;3563:3596:91;4962:51:99;3563:3596:91;-1:-1:-1;3563:3596:91;4876:29:99;3563:3596:91;;;-1:-1:-1;3563:3596:91;;;;;;;;;;;;;;;;;4962:51:99;3563:3596:91;;;;;;;;;;;;5055:221:99;;;3563:3596:91;-1:-1:-1;3563:3596:91;5160:16:99;3563:3596:91;;2936:47:99;:38;5160;3563:3596:91;;-1:-1:-1;3563:3596:91;;;;;;;;;;;;;;;;;5160:38:99;837:15:68;819:34;837:15;819:34;:::i;:::-;3563:3596:91;-1:-1:-1;3563:3596:91;5160:16:99;3563:3596:91;;;-1:-1:-1;3563:3596:91;;;;;;;;;;;;;;;;;2936:47:99;3563:3596:91;;;;;;;;6360:12:93;;;3563:3596:91;;;6360:24:93;6356:75;;5055:221:99;6474:30:93;;;:::i;:::-;3563:3596:91;;;;;6578:12:93;;;;:::i;:::-;;6604:24;;;5055:221:99;-1:-1:-1;6600:188:93;;;-1:-1:-1;;;;3563:3596:91;;;;;;;6644:29:93;:21;;;;:::i;:::-;:29;3563:3596:91;;;;;;;;;;;;;;;;;;;;;6600:188:93;6753:24;;8310:38:66;;-1:-1:-1;;;;;3563:3596:91;;;;;8310:38:66;:::i;:::-;6753:24:93;;;:::i;6604:::-;3563:3596:91;;;;;;6614:14:93;;-1:-1:-1;6604:24:93;;;6356:75;6400:20;;;:::i;:::-;6356:75;;3563:3596:91;;;;;;;;-1:-1:-1;;;;;3563:3596:91;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;5282:431:99:-;;;;5487:25;;:23;:13;3563:3596:91;5494:5:99;3563:3596:91;;;;;;;;;5487:23:99;3563:3596:91;;-1:-1:-1;;;5487:25:99;;3563:3596:91;;;;;5487:25:99;;;;;;;5631:65;5487:25;5631:65;5487:25;5494:5;5487:25;;;5282:431;-1:-1:-1;;;;;;3563:3596:91;;;;:::i;:::-;-1:-1:-1;;;;;5677:4:99;3563:3596:91;;;5677:4:99;5487:25;5642:53;;3563:3596:91;;;5631:65:99;;;5487:25;5631:65;;;:::i;:::-;5472:234;;;;;5494:5;3563:3596:91;5472:234:99;3563:3596:91;;;;;;;;;;;;;;5472:234:99;;5487:25;5472:234;;;:::i;:::-;;;;;;;;;;;5282:431;:::o;5472:234::-;;;;;;:::i;:::-;;;:::i;5487:25::-;;;;;;;;;;;;;;:::i;:::-;;;;5719:137;3563:3596:91;5719:137:99;3563:3596:91;5802:47:99;5719:137;5809:5;3563:3596:91;;;;;;;;;;;;;;;;;;5802:47:99;;;;;3563:3596:91;;;;;;5802:47:99;;;;;;;;5719:137;:::o;5802:47::-;;;;;;;;;;;;;:::i;:::-;;5719:137::o;3563:3596:91:-;;;;;;;:::o;:::-;;;;;;;;;;;;5862:623:99;;;5988:12;3563:3596:91;;;;;;;5984:495:99;;5862:623;;;;;;:::o;5984:495::-;3563:3596:91;;-1:-1:-1;;;6033:22:99;;3563:3596:91;6033:22:99;;3563:3596:91;;6033:22:99;;3563:3596:91;;-1:-1:-1;;;;;3563:3596:91;6033:22:99;;;;;;;5988:12;6033:22;;;5984:495;-1:-1:-1;3563:3596:91;;-1:-1:-1;;;6033:22:99;6094:81;;;;;;;;3563:3596:91;;;;-1:-1:-1;;;;;3563:3596:91;;;;;;;;;;;;;;;;;;;;;;6094:81:99;3563:3596:91;;;;6094:81:99;;3563:3596:91;;6094:81:99;;;;;;:::i;:::-;3563:3596:91;6194:9:99;:55;6190:124;;5988:12;6328:141;;;;;;1271:7;6328:141;;5984:495;;;;;;;6190:124;3563:3596:91;;-1:-1:-1;;;6276:23:99;;6033:22;;6276:23;6033:22;6094:81;6033:22;;;6094:81;6033:22;;;;;;;;;;;:::i;:::-;;;;;10310:206:66;3563:3596:91;;10446:8:66;;;:63;;10405:17;10310:206;:::o;10446:63::-;3563:3596:91;;;;;;;;;;10405:17:66;13267:109:93;;10405:17:66;13267:109:93;;;3563:3596:91;;;10310:206:66;:::o;3563:3596:91:-;;;;;;;:::i;:::-;-1:-1:-1;3563:3596:91;;;;;;;:::o;5573:258:93:-;3563:3596:91;5573:258:93;11452:22:66;5573:258:93;3563:3596:91;;:::i;:::-;;;;:::i;:::-;;11452:22:66;:::i;:::-;3563:3596:91;;:::i;:::-;;;;;;5805:17:93;3563:3596:91;;;;;5805:17:93;;3563:3596:91;;;;;;;;:::i;:::-;;;5805:17:93;5759:65;;3563:3596:91;5573:258:93;:::o;6893:76:22:-;;;:::i;:::-;;;:::i;:::-;1949:1:26;-1:-1:-1;;;;;;;;;;;3563:3596:91;6893:76:22:o;3563:3596:91:-;;;;;;;:::i;:::-;-1:-1:-1;3563:3596:91;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::o;8763:604:101:-;;8969:30;8763:604;3563:3596:91;;:::i;:::-;;;;8905:30:101;;;;;;;;;;;;;:::i;:::-;3563:3596:91;;-1:-1:-1;;;8969:30:101;;3563:3596:91;;;;;;;;-1:-1:-1;;;;;3563:3596:91;8969:30:101;;;;;;;;;;;8763:604;9013:19;;;3563:3596:91;;;;;;;;;;;;;;;9013:36:101;;9009:95;;3563:3596:91;9118:29:101;;9150:1;3563:3596:91;;9118:33:101;9114:102;;9226:34;3563:3596:91;9271:54:101;3563:3596:91;;;;;;;;;;;8969:30:101;3563:3596:91;;;8969:30:101;3563:3596:91;;9226:34:101;3563:3596:91;9271:54:101;3563:3596:91;;9271:54:101;9343:17;8763:604;:::o;9114:102::-;3563:3596:91;;-1:-1:-1;;;9174:31:101;;8969:30;;9174:31;9009:95;3563:3596:91;;-1:-1:-1;;;9072:21:101;;8969:30;;9072:21;8969:30;;;;;;;;;;;;;;;:::i;:::-;;;;;18080:5181:63;18246:1;18241:6;;;18237:53;;18246:1;19217:14;-1:-1:-1;;;19278:16:63;;;19274:92;;18080:5181;22827:18;22717;22607;22498;22387;22278;23216:28;19383:15;19898:6;19383:15;-1:-1:-1;;;23237:6:63;19383:15;;;19379:90;;18080:5181;19493:7;19486:15;;;19482:90;;18080:5181;19596:7;19589:15;;;19585:89;;18080:5181;19698:6;19691:14;;;19687:87;;18080:5181;19798:6;19791:14;;;19787:87;;18080:5181;19891:14;;19887:61;;18080:5181;20374:1;3563:3596:91;18246:1:63;3563:3596:91;22284:6:63;;;;:::i;:::-;3563:3596:91;;;;;22278:18:63;22393:6;;;;:::i;22387:18::-;22504:6;;;;:::i;22498:18::-;22613:6;;;;:::i;22607:18::-;22723:6;;;;:::i;22717:18::-;22833:6;;;;:::i;22827:18::-;23237:6;;;:::i;:::-;23232:11;;;3563:3596:91;23216:28:63;3563:3596:91;;18080:5181:63;:::o;19887:61::-;18246:1;3563:3596:91;19887:61:63;;19787:87;3563:3596:91;;;;;19787:87:63;;;19687;3563:3596:91;;;;;19687:87:63;;;19585:89;3563:3596:91;;;;;19585:89:63;;;19482:90;3563:3596:91;;;;;19482:90:63;;;19379;3563:3596:91;;;;;19379:90:63;;;19274:92;-1:-1:-1;;;;3563:3596:91;-1:-1:-1;3563:3596:91;;;;19274:92:63;;10695:389:66;3563:3596:91;;10871:8:66;;;10895:20;;10833:17;10895:20;10833:17;10895:20;10833:17;10895:20;:::o;10867:211::-;3563:3596:91;;;;;;;;;;10833:17:66;13267:109:93;;10833:17:66;13267:109:93;;;3563:3596:91;11014:1:66;3563:3596:91;;;;;;;11030:37:66;:::o;6999:207:93:-;;7117:34;6999:207;7117:34;;:::i;11486:272::-;;3563:3596:91;11452:22:66;11718:31:93;11486:272;3563:3596:91;;:::i;:::-;;;;:::i;:::-;;11452:22:66;;:::i;3563:3596:91:-;;11718:12:93;3563:3596:91;;;;;11731:17:93;3563:3596:91;;;;;11731:17:93;;3563:3596:91;;11718:12:93;;:31;:::i;:::-;3563:3596:91;;;;;;;;;:::i;:::-;;;;;;11731:17:93;11672:79;;3563:3596:91;11486:272:93;:::o;3563:3596:91:-;;;-1:-1:-1;;;3563:3596:91;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;-1:-1:-1;;;3563:3596:91;;;;;;;;;;;;;;;:::i;9584:606:66:-;;3563:3596:91;;9737:15:66;9702:17;9762:18;;9801:1;9795:7;;9791:234;;9584:606;10049:53;;13105:230;13112:10;;;;;;-1:-1:-1;;10120:8:66;;;:63;;9702:17;9584:606;:::o;10120:63::-;10135:48;10168:7;;10135:41;10168:7;;:::i;10135:41::-;3563:3596:91;;;;;13105:230:66;13152:23;;;;;;:::i;:::-;13267:109:93;;9702:17:66;13267:109:93;3563:3596:91;13267:109:93;;;9702:17:66;13267:109:93;;3563:3596:91;;;;;-1:-1:-1;13189:136:66;3563:3596:91;;;13248:10:66;13189:136;;13105:230;;;13189:136;3563:3596:91;;13309:1:66;3563:3596:91;;;;;;13189:136:66;3563:3596:91;;:::i;9791:234:66:-;9838:14;;;;:::i;:::-;3563:3596:91;;;;;;;13267:109:93;9702:17:66;13267:109:93;3563:3596:91;13267:109:93;;;9702:17:66;13267:109:93;;3563:3596:91;;;;;9870:48:66;9866:149;3563:3596:91;;;9938:10:66;9866:149;9791:234;;;9866:149;9993:7;;;;;:::i;:::-;9866:149;;;7084:141:22;3563:3596:91;-1:-1:-1;;;;;;;;;;;3563:3596:91;;;;7150:18:22;7146:73;;7084:141::o;7146:73::-;3563:3596:91;;-1:-1:-1;;;7191:17:22;;;;;3595:153:63;;3721:5;;;3731;;3563:3596:91;;;;;;;;;3595:153:63;:::o;3563:3596:91:-;;;-1:-1:-1;;;3563:3596:91;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;3563:3596:91;;;;;;;;;;;:::o;11657:922:66:-;3563:3596:91;;11657:922:66;;;11864:7;;;;11936;11916:28;11936:7;;:::i;:::-;11916:28;13267:109:93;;;;;;13089:293;;11916:28:66;3563:3596:91;;;;;;;;;;;;12103:13:66;;;12099:89;;12251:14;;;;;12285:19;;;;3563:3596:91;;;;;;;;;;;;;;;;;12285:19:66;3563:3596:91;;12423:25:66;;:::o;12247:163::-;3563:3596:91;;;12343:52:66;3563:3596:91;12353:41:66;3563:3596:91;;:::i;:::-;;;;;;;;12353:41:66;-1:-1:-1;;;;;3563:3596:91;;12353:41:66;;;3563:3596:91;12343:52:66;:::i;:::-;12247:163;;12099:89;3563:3596:91;;-1:-1:-1;;;12143:30:66;;;;;11860:713;3563:3596:91;;12479:52:66;3563:3596:91;12489:41:66;3563:3596:91;;:::i;12489:41:66:-;-1:-1:-1;;;;;3563:3596:91;;12489:41:66;;;3563:3596:91;12343:52:66;:::i;12479:::-;11870:1;12545:17;;:::o","linkReferences":{},"immutableReferences":{"56598":[{"start":1147,"length":32}],"56601":[{"start":5518,"length":32},{"start":11421,"length":32}],"61158":[{"start":2920,"length":32}],"61788":[{"start":2054,"length":32},{"start":6428,"length":32},{"start":7441,"length":32}],"64382":[{"start":744,"length":32},{"start":8898,"length":32}],"64385":[{"start":1079,"length":32},{"start":9292,"length":32}],"65115":[{"start":3194,"length":32},{"start":5604,"length":32}]}},"methodIdentifiers":{"BASE_SLASHER_HINTS()":"457821b7","BURNER_GAS_LIMIT()":"d5c24e1a","BURNER_RESERVE()":"2964f8dc","FACTORY()":"2dd31000","NETWORK_MIDDLEWARE_SERVICE()":"2c9d45b3","NETWORK_REGISTRY()":"c0cd7c3e","TYPE()":"bb24fe8a","VAULT_FACTORY()":"103f2907","cumulativeSlash(bytes32,address)":"1a2be2c4","cumulativeSlashAt(bytes32,address,uint48,bytes)":"aa8e6489","executeSlash(uint256,bytes)":"b94c386e","executeSlashHints(address,bytes32,address,uint48)":"69f78920","initialize(bytes)":"439fab91","isBurnerHook()":"34d098ea","latestSlashedCaptureTimestamp(bytes32,address)":"267de1f3","requestSlash(bytes32,address,uint256,uint48,bytes)":"545ce389","requestSlashHints(address,address,bytes32,address,uint256,uint48)":"002a0875","resolver(bytes32,bytes)":"cd05b8a1","resolverAt(bytes32,uint48,bytes)":"31ce4dfe","resolverHint(address,bytes32,uint48)":"a4ef9b4f","resolverHintInternal(bytes32,uint48)":"8f82f931","resolverSetEpochsDelay()":"bc6eac5b","setResolver(uint96,address,bytes)":"9168f9d2","setResolverHints(address,bytes32,uint48)":"1dd5f600","slashRequests(uint256)":"9a896551","slashRequestsLength()":"8f42f9ab","slashableStake(bytes32,address,uint48,bytes)":"aab3595f","staticDelegateCall(address,bytes)":"9f86fd85","vault()":"fbfa77cf","vetoDuration()":"e054e08b","vetoSlash(uint256,bytes)":"f9268d18","vetoSlashHints(address,bytes32,uint48)":"5264679b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"baseSlasherHints\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AlreadySet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CheckpointUnorderedInsertion\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExternalCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBurnerGas\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientSlash\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCaptureTimestamp\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidResolverSetEpochsDelay\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidVetoDuration\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoBurner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoResolver\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotNetwork\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotNetworkMiddleware\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotResolver\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SlashPeriodEnded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SlashRequestCompleted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SlashRequestNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VetoPeriodEnded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VetoPeriodNotEnded\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"slashIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slashedAmount\",\"type\":\"uint256\"}],\"name\":\"ExecuteSlash\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"slashIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slashAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"vetoDeadline\",\"type\":\"uint48\"}],\"name\":\"RequestSlash\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"}],\"name\":\"SetResolver\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"slashIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"}],\"name\":\"VetoSlash\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BASE_SLASHER_HINTS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BURNER_GAS_LIMIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BURNER_RESERVE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NETWORK_MIDDLEWARE_SERVICE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NETWORK_REGISTRY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TYPE\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VAULT_FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"cumulativeSlash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"cumulativeSlashAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"slashIndex\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"hints\",\"type\":\"bytes\"}],\"name\":\"executeSlash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"slashedAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"slasher\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"}],\"name\":\"executeSlashHints\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isBurnerHook\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"latestSlashedCaptureTimestamp\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"value\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hints\",\"type\":\"bytes\"}],\"name\":\"requestSlash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"slashIndex\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"slasher\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"}],\"name\":\"requestSlashHints\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"resolver\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"resolverAt\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"slasher\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"resolverHint\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"resolverHintInternal\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"exists\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"hint\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resolverSetEpochsDelay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint96\",\"name\":\"identifier\",\"type\":\"uint96\"},{\"internalType\":\"address\",\"name\":\"resolver_\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"hints\",\"type\":\"bytes\"}],\"name\":\"setResolver\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"slasher\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"setResolverHints\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"slashRequests\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"vetoDeadline\",\"type\":\"uint48\"},{\"internalType\":\"bool\",\"name\":\"completed\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slashRequestsLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hints\",\"type\":\"bytes\"}],\"name\":\"slashableStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"staticDelegateCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vetoDuration\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"slashIndex\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"hints\",\"type\":\"bytes\"}],\"name\":\"vetoSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"slasher\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"}],\"name\":\"vetoSlashHints\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"CheckpointUnorderedInsertion()\":[{\"details\":\"A value was attempted to be inserted on a past checkpoint.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}]},\"events\":{\"ExecuteSlash(uint256,uint256)\":{\"params\":{\"slashIndex\":\"index of the slash request\",\"slashedAmount\":\"virtual amount of the collateral slashed\"}},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"RequestSlash(uint256,bytes32,address,uint256,uint48,uint48)\":{\"params\":{\"captureTimestamp\":\"time point when the stake was captured\",\"operator\":\"operator that could be slashed (if the request is not vetoed)\",\"slashAmount\":\"maximum amount of the collateral to be slashed\",\"slashIndex\":\"index of the slash request\",\"subnetwork\":\"subnetwork that requested the slash\",\"vetoDeadline\":\"deadline for the resolver to veto the slash (exclusively)\"}},\"SetResolver(bytes32,address)\":{\"params\":{\"resolver\":\"address of the resolver\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"VetoSlash(uint256,address)\":{\"params\":{\"resolver\":\"address of the resolver that vetoed the slash\",\"slashIndex\":\"index of the slash request\"}}},\"kind\":\"dev\",\"methods\":{\"cumulativeSlash(bytes32,address)\":{\"params\":{\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"_0\":\"cumulative slash amount\"}},\"cumulativeSlashAt(bytes32,address,uint48,bytes)\":{\"params\":{\"hint\":\"hint for the checkpoint index\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\",\"timestamp\":\"time point to get the cumulative slash amount until (inclusively)\"},\"returns\":{\"_0\":\"cumulative slash amount until the given timestamp (inclusively)\"}},\"executeSlash(uint256,bytes)\":{\"details\":\"Only a network middleware can call this function.\",\"params\":{\"hints\":\"hints for checkpoints' indexes\",\"slashIndex\":\"index of the slash request\"},\"returns\":{\"slashedAmount\":\"virtual amount of the collateral slashed\"}},\"initialize(bytes)\":{\"params\":{\"data\":\"some data to use\"}},\"requestSlash(bytes32,address,uint256,uint48,bytes)\":{\"details\":\"Only a network middleware can call this function.\",\"params\":{\"amount\":\"maximum amount of the collateral to be slashed\",\"captureTimestamp\":\"time point when the stake was captured\",\"hints\":\"hints for checkpoints' indexes\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"slashIndex\":\"index of the slash request\"}},\"resolver(bytes32,bytes)\":{\"params\":{\"hint\":\"hint for the checkpoint index\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"_0\":\"address of the resolver\"}},\"resolverAt(bytes32,uint48,bytes)\":{\"params\":{\"hint\":\"hint for the checkpoint index\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\",\"timestamp\":\"timestamp to get the resolver at\"},\"returns\":{\"_0\":\"address of the resolver\"}},\"slashRequestsLength()\":{\"returns\":{\"_0\":\"total number of slash requests\"}},\"slashableStake(bytes32,address,uint48,bytes)\":{\"params\":{\"captureTimestamp\":\"time point to get the stake amount at\",\"hints\":\"hints for the checkpoints' indexes\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"amount\":\"slashable amount of the stake\"}},\"staticDelegateCall(address,bytes)\":{\"details\":\"It allows to use this contract's storage on-chain.\",\"params\":{\"data\":\"data to make a delegatecall with\",\"target\":\"address of the contract to make a delegatecall to\"}},\"vetoSlash(uint256,bytes)\":{\"details\":\"Only a resolver can call this function.\",\"params\":{\"hints\":\"hints for checkpoints' indexes\",\"slashIndex\":\"index of the slash request\"}}},\"version\":1},\"userdoc\":{\"events\":{\"ExecuteSlash(uint256,uint256)\":{\"notice\":\"Emitted when a slash request is executed.\"},\"RequestSlash(uint256,bytes32,address,uint256,uint48,uint48)\":{\"notice\":\"Emitted when a slash request is created.\"},\"SetResolver(bytes32,address)\":{\"notice\":\"Emitted when a resolver is set.\"},\"VetoSlash(uint256,address)\":{\"notice\":\"Emitted when a slash request is vetoed.\"}},\"kind\":\"user\",\"methods\":{\"BURNER_GAS_LIMIT()\":{\"notice\":\"Get a gas limit for the burner.\"},\"BURNER_RESERVE()\":{\"notice\":\"Get a reserve gas between the gas limit check and the burner's execution.\"},\"FACTORY()\":{\"notice\":\"Get the factory's address.\"},\"NETWORK_MIDDLEWARE_SERVICE()\":{\"notice\":\"Get the network middleware service's address.\"},\"NETWORK_REGISTRY()\":{\"notice\":\"Get the network registry's address.\"},\"TYPE()\":{\"notice\":\"Get the entity's type.\"},\"VAULT_FACTORY()\":{\"notice\":\"Get the vault factory's address.\"},\"cumulativeSlash(bytes32,address)\":{\"notice\":\"Get a cumulative slash amount for an operator on a subnetwork.\"},\"cumulativeSlashAt(bytes32,address,uint48,bytes)\":{\"notice\":\"Get a cumulative slash amount for an operator on a subnetwork until a given timestamp (inclusively) using a hint.\"},\"executeSlash(uint256,bytes)\":{\"notice\":\"Execute a slash with a given slash index using hints.\"},\"initialize(bytes)\":{\"notice\":\"Initialize this entity contract by using a given data.\"},\"isBurnerHook()\":{\"notice\":\"Get if the burner is needed to be called on a slashing.\"},\"latestSlashedCaptureTimestamp(bytes32,address)\":{\"notice\":\"Get the latest capture timestamp that was slashed on a subnetwork.\"},\"requestSlash(bytes32,address,uint256,uint48,bytes)\":{\"notice\":\"Request a slash using a subnetwork for a particular operator by a given amount using hints.\"},\"resolver(bytes32,bytes)\":{\"notice\":\"Get a resolver for a given subnetwork using a hint.\"},\"resolverAt(bytes32,uint48,bytes)\":{\"notice\":\"Get a resolver for a given subnetwork at a particular timestamp using a hint.\"},\"resolverSetEpochsDelay()\":{\"notice\":\"Get a delay for networks in epochs to update a resolver.\"},\"slashRequests(uint256)\":{\"notice\":\"Get a particular slash request.\"},\"slashRequestsLength()\":{\"notice\":\"Get a total number of slash requests.\"},\"slashableStake(bytes32,address,uint48,bytes)\":{\"notice\":\"Get a slashable amount of a stake got at a given capture timestamp using hints.\"},\"staticDelegateCall(address,bytes)\":{\"notice\":\"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data).\"},\"vault()\":{\"notice\":\"Get the vault's address.\"},\"vetoDuration()\":{\"notice\":\"Get a duration during which resolvers can veto slash requests.\"},\"vetoSlash(uint256,bytes)\":{\"notice\":\"Veto a slash with a given slash index using hints.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/hints/SlasherHints.sol\":\"VetoSlasherHints\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf\",\"dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89\",\"dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1\",\"dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol\":{\"keccak256\":\"0x4aaaf1c0737dd16e81f0d2b9833c549747a5ede6873bf1444bc72aa572d03e98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eada27d7668eebaea16c3b890aa1b38ffc53965292e26c96f7c44834623f4710\",\"dweb:/ipfs/QmVSWuLtxyCqNbLyY89ptxkvsk4CLLKDQYigEne5Qj8k1L\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x7d94fa0af099a2172eb01f9c8a8a443cbe7e0e43654841563e4e09968efdb549\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65e38fb76b6add407d4557753ae83dd1268e8261195dbe5c19a580d5ba6e4e9a\",\"dweb:/ipfs/QmTkGSJtaQrqjcyWM4AgemeEmKgtDydKPPVRajsUJRQSrK\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0\",\"dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x10eb97d047f8d84fe263a02bb4a656ac6674f6679d74532cc37546289e073a9d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3e41287d40b0c46982f1083d40d32de2761f009c5c51627fe79a7feb0ab1cf5c\",\"dweb:/ipfs/Qme7dbh6HX3ZvUJdbQAcVqXkmyXyfcLiUZRhhon3cU6K8p\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e\",\"dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/SignatureChecker.sol\":{\"keccak256\":\"0xbdc3bb48ccedb818cd75a6d74a16df55a822e9f6d3cc54c59f576f10aab67b5f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2284f25f2478f419d7781573b17a89d0e7c5589a865d55e2d6ed5163aee23aa8\",\"dweb:/ipfs/QmNsr2625APBQiNKpYnX5VcSnYgfUHR9Uzzp9pRXjoDqK7\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44\",\"dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6\",\"dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza\"]},\"src/contracts/common/Entity.sol\":{\"keccak256\":\"0x3d61a932995b8443381f3950542d388223a2c26dd5d29a3274dea3baa7388bd7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7cdf5f03ca72fd263fd32ff59c8d88ddca911ae83896a287d10772c1bbe9b138\",\"dweb:/ipfs/QmbP84r5BWT1Rn9AYTntWSf3xUMTTCohTZJFhbBhDXFoHa\"]},\"src/contracts/common/MigratableEntity.sol\":{\"keccak256\":\"0x303ad40a3de8fa808cc30a6fbd5998633f6a89b982e6db1fa981e0566ab445e7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://fa8fb92995ead02798e013190b87b84b44cc68668262f045c9b0b4783940e2bf\",\"dweb:/ipfs/QmV1uKGVLKwWisc714R8fCt71gXUQJpaKvdc6LQ8WtvMpL\"]},\"src/contracts/common/StaticDelegateCallable.sol\":{\"keccak256\":\"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764\",\"dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD\"]},\"src/contracts/delegator/BaseDelegator.sol\":{\"keccak256\":\"0x7c54d491fdd4415b764a9c8defa068e56d4c0c8c9419be0053a1d377669290e8\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://9238bfbad0f6eeb0dc7727724de14380f1980b395902269703d5e2ef07e52e10\",\"dweb:/ipfs/QmPJn1V4HNXcEghYvogGuSTF24dSQUPosR5qtsXcmNqRm3\"]},\"src/contracts/delegator/FullRestakeDelegator.sol\":{\"keccak256\":\"0x0a81c4f8e72914563a9cb771e93acf889c71ea36b7bec040e4eb562b199d5af1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6fc66b6ba02da77046a0bbbd1dd407a62c08f52e04486c9cbd2cb1cca3da555f\",\"dweb:/ipfs/QmZQivK1ZnMxfRQQ5aLpV9co5u55wQVNev5Rg1hzAqxhkE\"]},\"src/contracts/delegator/NetworkRestakeDelegator.sol\":{\"keccak256\":\"0xd3a8e6522f9c6fdcc2da837c9023afd6bdff2bce45a35590320c475519e3636d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://58b17a87f6554f08376f9ea7fedf486a4aa75801bf0ad8b23ff5a46959b6b7a3\",\"dweb:/ipfs/QmSTmNh67tYt8CmjVZb57r8N3qX5yeYdMApKPJm3qvQgQw\"]},\"src/contracts/delegator/OperatorNetworkSpecificDelegator.sol\":{\"keccak256\":\"0x031a10722b9ec49048f0952710401131290adb87e71caf294e864e7ac3b98a16\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://72428febc875134b2f29205e6f294634a1c22a7d5c78d6a9cb2f8196f107c9b5\",\"dweb:/ipfs/QmTPwXR6h5oytckmkLrHdKeEMdphJxceDhYUR4zvQeWAwY\"]},\"src/contracts/delegator/OperatorSpecificDelegator.sol\":{\"keccak256\":\"0x630ce62fa30b9f3349ab7a8cf8dbf041319febc6dd757be2f94d3d25944ed328\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c2ac59d47ce57d2a6819ae9833e1a618a371eccff93eb5ab367b201b01f42bfa\",\"dweb:/ipfs/QmdBpGMBivpNPv2WbH8vnCUy5xkVeaxQvGgqi33vKCz1kA\"]},\"src/contracts/hints/DelegatorHints.sol\":{\"keccak256\":\"0xd71e9102e99a25ee8b5435779f011a24558f56074aa2b16c18b623b57754ae97\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://29db5552e55dab51bea1ae40ba00ca674cb50fcb10997999a72a94527b6eb591\",\"dweb:/ipfs/QmQrYyTPx73ubNxMhYWJCkprCVFVtuTFcKaabYiKTe71tY\"]},\"src/contracts/hints/Hints.sol\":{\"keccak256\":\"0x8b565df1ae35993c097a9e642002782a8f451f6fd01809cad6bcd345bdf1b99c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://99a19adb01e350a92f534095b3078229df1f2f83077992d75d58d8684be45971\",\"dweb:/ipfs/QmbmwcuswVbzvwHQFTtrJG86oV98GnfxqYTb8cV8u1acox\"]},\"src/contracts/hints/OptInServiceHints.sol\":{\"keccak256\":\"0x95d9407900d27b9f4a1233b772aeed809c07b2dc5b31cfc9fa77ca26514c49e5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://a13a8877e312d7e6b8b85bde3668c5d84ff5ecc83f762cd573f2b7104c64eb42\",\"dweb:/ipfs/QmYV2J55acuGzCNnS3juABuUHY5U1xc8g8o9jwEyFFdeG5\"]},\"src/contracts/hints/SlasherHints.sol\":{\"keccak256\":\"0xd77c5f3bbb0265af8ecd947df88f6f9684e136d80052b5292f5b29aaa3566a3f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://484a26504bf6706202ec82a9a4cfa7d196bbc552b5b78ced25bf7130c2842595\",\"dweb:/ipfs/QmaQqmkoZoUWEam4R94vmajzH3gKqFqpZQwFbrHDsN1peV\"]},\"src/contracts/hints/VaultHints.sol\":{\"keccak256\":\"0xccb505b7159b769cc114d67b87c2de6b106557f667fc8f3780114baad5c3c442\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6d0c80a908fc16e96a8b5605a0bd53f9e89ad0ef0a738fbbae80ba4d3160749b\",\"dweb:/ipfs/QmXo5UtWoR8YmunqcbBU8rQMm1nvmvjNPoXcVrDhh4pEwR\"]},\"src/contracts/libraries/Checkpoints.sol\":{\"keccak256\":\"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609\",\"dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE\"]},\"src/contracts/libraries/ERC4626Math.sol\":{\"keccak256\":\"0x8441160513c1cbeb1c3b9ee077bcc7e7ce20006b52a77c8dd39ff0ef89699939\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://943f8cc3e26ddf649f465f40c909819f5c864717c4baa339e9e403b9374a4653\",\"dweb:/ipfs/QmXPxi1sUDsrGprZdUgCzoPEosaZMv9ZhygWQ1vAi1phAB\"]},\"src/contracts/libraries/Subnetwork.sol\":{\"keccak256\":\"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56\",\"dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32\"]},\"src/contracts/service/OptInService.sol\":{\"keccak256\":\"0x4e0932077f2686b7990e10d59deb2535334c0d09e52ef6e57c6ab09eca21c4b1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7c00d311032ed4a1743aca7475f3c86ce15cdfc2218108efc3731c03d34a5278\",\"dweb:/ipfs/QmUGGfVwVhaHr5kS4177yKKYiLYzi5qZpkEmvYxBZqazxf\"]},\"src/contracts/slasher/BaseSlasher.sol\":{\"keccak256\":\"0x190e5dce196a061bdad42468c52e9f5b0eb7810cd7d0c19f04d6a2e94984f1b6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://07ca08d0cd43c2fe5d54a5577f6bdd522ced410f5d3a52e764deaa7ba26b5f06\",\"dweb:/ipfs/QmZe3PiMKBQKWcwodaLupragdqxPjgS4v1qMC7RXau8hDF\"]},\"src/contracts/slasher/Slasher.sol\":{\"keccak256\":\"0xeee0cb25fad58d496fdcc641d852d11bae06e6ceed5230ae21150964175c494f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://34aa27d21246a1bcee0b6a2afa8d9d613441156362430392f75d176511d58c61\",\"dweb:/ipfs/Qmf53Y3zdGfH4PU2zpSGeHZ8mMLzLXCtmkQrG5mnVJECQ3\"]},\"src/contracts/slasher/VetoSlasher.sol\":{\"keccak256\":\"0xeccc8128de5e1ad499c067feac1c526638fbbac1a18b96726fc7507969fd5897\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://cdfcf281338423625acbccdf8810115b258ef7cfe4aa3c10b8911ead1aa85429\",\"dweb:/ipfs/QmZFsDvZXpkFkx4PHcDXAVPN3ZCAahbSVfYpSVrMBvbt4k\"]},\"src/contracts/vault/Vault.sol\":{\"keccak256\":\"0x7ee6dbf060c45d6eba95315f4ac0b3b467dd9c4999b84c31d6f66d4d8b53a116\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://301948b8ea522db292aa2722ba42def3911dae95f0b376f7023c3fef470f8676\",\"dweb:/ipfs/QmSDbP2HdzhDAzstr8Zz5isEAcSkma8ABc5UwPsoazaumZ\"]},\"src/contracts/vault/VaultStorage.sol\":{\"keccak256\":\"0x57db25b127d77ea3472de53e3a4af3354399655b9268638b99ca5925fa364a56\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://aa763d9a6ec508ae3abfb8228b72b9fd9525279e5135d4962e79ff059feb1173\",\"dweb:/ipfs/QmcbDR6E9wyEpu6V2FkEC4hnWy47zXA9LSKJde6zSGd33Q\"]},\"src/interfaces/common/IEntity.sol\":{\"keccak256\":\"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b\",\"dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv\"]},\"src/interfaces/common/IMigratableEntity.sol\":{\"keccak256\":\"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c\",\"dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds\"]},\"src/interfaces/common/IRegistry.sol\":{\"keccak256\":\"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014\",\"dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK\"]},\"src/interfaces/common/IStaticDelegateCallable.sol\":{\"keccak256\":\"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516\",\"dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi\"]},\"src/interfaces/delegator/IBaseDelegator.sol\":{\"keccak256\":\"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2\",\"dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8\"]},\"src/interfaces/delegator/IDelegatorHook.sol\":{\"keccak256\":\"0xc51aa8d7d1f6c8043ee819b7aeb86da0e993912e1442098df897e299f01f9f46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://adddf5cb2ba282aeb576b26efb28640f865a1721cc9b6eee8b3ee0457a2c9780\",\"dweb:/ipfs/QmNYgAmnLRwWZbhTuQhZs9rx4zcme1df5mEepkrniorSoW\"]},\"src/interfaces/delegator/IFullRestakeDelegator.sol\":{\"keccak256\":\"0xa3c8cb2e45d4d8ce90e95263bea40c01dc400f05ad65bc29597d878606be5e7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://782cf5e201aa4cca037ebafd3807a68ff1cc721d5b8416a35244db0d0607369e\",\"dweb:/ipfs/QmQkJks6x7CKndeTPa9LxgTNygD5uEi7obhADhpq1Lsr9A\"]},\"src/interfaces/delegator/INetworkRestakeDelegator.sol\":{\"keccak256\":\"0xe7030fe30389a147fd710e3436ec346b4842695fd3e65a81b95375c9f1d633fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://739c7e66d301778054f5c90bee45ec9438f68afba8a03eaaac52064c73b115ad\",\"dweb:/ipfs/QmfZ2ytKcTykAc76nxhg8ikUXV8NdBpetqb8W4YWPcox1Z\"]},\"src/interfaces/delegator/IOperatorNetworkSpecificDelegator.sol\":{\"keccak256\":\"0x74b95e64d29769202d45dd277bb830f623ff3d41ce77b80ce3ee4e318a5c71ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e512b903aae5c1b8a028c6e3f4f6223b5cb5d704503cfa6bd37b5346868f5c20\",\"dweb:/ipfs/QmZim9YExsPWtyxyeui993HTKAEmrg8MUcSkZ77Gp2JcuZ\"]},\"src/interfaces/delegator/IOperatorSpecificDelegator.sol\":{\"keccak256\":\"0x72075cab585dc17240cc3e32bc99b92f0d5627ddd988fed680e3e1a52d5a01e4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7448bc90699409ae61d85216b5efc2143a37f0f73354be2aea993bc54afca441\",\"dweb:/ipfs/QmXE4gAxM8pHosZK8mcTcj17puBx484meDCcmrDePskGHZ\"]},\"src/interfaces/service/INetworkMiddlewareService.sol\":{\"keccak256\":\"0x347afc7fcf1fbcdb96d66162070ef6c78aed27b3af2c1d5dfb4e511840631783\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d90b8ceb495159e8e4e95d76447719dd166443f67dfabdd942846162071595c\",\"dweb:/ipfs/QmVVuiAWYx92T6vBvNMKZfTvraCf1fa16BsUKkdNs3hdHA\"]},\"src/interfaces/service/IOptInService.sol\":{\"keccak256\":\"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337\",\"dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24\"]},\"src/interfaces/slasher/IBaseSlasher.sol\":{\"keccak256\":\"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf\",\"dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx\"]},\"src/interfaces/slasher/IBurner.sol\":{\"keccak256\":\"0xaf495dacc19ae0b3c787ba8021c5944927d70261536addd234d7dab146158c2b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b3cc66251008be6ff9fc8b11ecc6831d5a9dca49a3fe9817fcd970253c1d447\",\"dweb:/ipfs/QmVxfb9ALGdF9W3SN2h41gQbUct6tawvu5bw4K89kFQ4HW\"]},\"src/interfaces/slasher/ISlasher.sol\":{\"keccak256\":\"0x34d226d67a3d5e16571f2fac91a8b9773551bcc41c88a96279669dd78d192625\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a6e8c1462ee4a1b0f745414be043c09012ea676613790aba004b06c85c980d1\",\"dweb:/ipfs/QmadjNEbHKRthtA1EeNy3Kg2sXpejH2KBeHm8QZtBPvXbJ\"]},\"src/interfaces/slasher/IVetoSlasher.sol\":{\"keccak256\":\"0xdf7edd04a4f36e9aec3a15241dcb6b6315b2e64927b12710c2c410d571fc55e9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c4be6ac339c2ebf230fed65363f036784224095d0cd0f3f2d01d64d6e0da9508\",\"dweb:/ipfs/QmRSMbpfaHExqrzUA8vYZMYZWh6eQW1KX9JKJSLdgronfg\"]},\"src/interfaces/vault/IVault.sol\":{\"keccak256\":\"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9\",\"dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R\"]},\"src/interfaces/vault/IVaultStorage.sol\":{\"keccak256\":\"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e\",\"dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"baseSlasherHints","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AlreadySet"},{"inputs":[],"type":"error","name":"CheckpointUnorderedInsertion"},{"inputs":[],"type":"error","name":"ExternalCall"},{"inputs":[],"type":"error","name":"InsufficientBurnerGas"},{"inputs":[],"type":"error","name":"InsufficientSlash"},{"inputs":[],"type":"error","name":"InvalidCaptureTimestamp"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"InvalidResolverSetEpochsDelay"},{"inputs":[],"type":"error","name":"InvalidVetoDuration"},{"inputs":[],"type":"error","name":"NoBurner"},{"inputs":[],"type":"error","name":"NoResolver"},{"inputs":[],"type":"error","name":"NotInitialized"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"NotNetwork"},{"inputs":[],"type":"error","name":"NotNetworkMiddleware"},{"inputs":[],"type":"error","name":"NotResolver"},{"inputs":[],"type":"error","name":"NotVault"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintDowncast"},{"inputs":[],"type":"error","name":"SlashPeriodEnded"},{"inputs":[],"type":"error","name":"SlashRequestCompleted"},{"inputs":[],"type":"error","name":"SlashRequestNotExist"},{"inputs":[],"type":"error","name":"VetoPeriodEnded"},{"inputs":[],"type":"error","name":"VetoPeriodNotEnded"},{"inputs":[{"internalType":"uint256","name":"slashIndex","type":"uint256","indexed":true},{"internalType":"uint256","name":"slashedAmount","type":"uint256","indexed":false}],"type":"event","name":"ExecuteSlash","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"uint256","name":"slashIndex","type":"uint256","indexed":true},{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"slashAmount","type":"uint256","indexed":false},{"internalType":"uint48","name":"captureTimestamp","type":"uint48","indexed":false},{"internalType":"uint48","name":"vetoDeadline","type":"uint48","indexed":false}],"type":"event","name":"RequestSlash","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"address","name":"resolver","type":"address","indexed":false}],"type":"event","name":"SetResolver","anonymous":false},{"inputs":[{"internalType":"uint256","name":"slashIndex","type":"uint256","indexed":true},{"internalType":"address","name":"resolver","type":"address","indexed":true}],"type":"event","name":"VetoSlash","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"BASE_SLASHER_HINTS","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"BURNER_GAS_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"BURNER_RESERVE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"NETWORK_MIDDLEWARE_SERVICE","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"NETWORK_REGISTRY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"TYPE","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VAULT_FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"cumulativeSlash","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"cumulativeSlashAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"slashIndex","type":"uint256"},{"internalType":"bytes","name":"hints","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"executeSlash","outputs":[{"internalType":"uint256","name":"slashedAmount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"slasher","type":"address"},{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"captureTimestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"executeSlashHints","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"isBurnerHook","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"latestSlashedCaptureTimestamp","outputs":[{"internalType":"uint48","name":"value","type":"uint48"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint48","name":"captureTimestamp","type":"uint48"},{"internalType":"bytes","name":"hints","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"requestSlash","outputs":[{"internalType":"uint256","name":"slashIndex","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"slasher","type":"address"},{"internalType":"address","name":"msgSender","type":"address"},{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint48","name":"captureTimestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"requestSlashHints","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"resolver","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"resolverAt","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"slasher","type":"address"},{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"resolverHint","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"resolverHintInternal","outputs":[{"internalType":"bool","name":"exists","type":"bool"},{"internalType":"uint32","name":"hint","type":"uint32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"resolverSetEpochsDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint96","name":"identifier","type":"uint96"},{"internalType":"address","name":"resolver_","type":"address"},{"internalType":"bytes","name":"hints","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"setResolver"},{"inputs":[{"internalType":"address","name":"slasher","type":"address"},{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"setResolverHints","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"slashRequests","outputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint48","name":"captureTimestamp","type":"uint48"},{"internalType":"uint48","name":"vetoDeadline","type":"uint48"},{"internalType":"bool","name":"completed","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"slashRequestsLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"captureTimestamp","type":"uint48"},{"internalType":"bytes","name":"hints","type":"bytes"}],"stateMutability":"view","type":"function","name":"slashableStake","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"staticDelegateCall"},{"inputs":[],"stateMutability":"view","type":"function","name":"vault","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"vetoDuration","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[{"internalType":"uint256","name":"slashIndex","type":"uint256"},{"internalType":"bytes","name":"hints","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"vetoSlash"},{"inputs":[{"internalType":"address","name":"slasher","type":"address"},{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint48","name":"captureTimestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"vetoSlashHints","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]}],"devdoc":{"kind":"dev","methods":{"cumulativeSlash(bytes32,address)":{"params":{"operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"_0":"cumulative slash amount"}},"cumulativeSlashAt(bytes32,address,uint48,bytes)":{"params":{"hint":"hint for the checkpoint index","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)","timestamp":"time point to get the cumulative slash amount until (inclusively)"},"returns":{"_0":"cumulative slash amount until the given timestamp (inclusively)"}},"executeSlash(uint256,bytes)":{"details":"Only a network middleware can call this function.","params":{"hints":"hints for checkpoints' indexes","slashIndex":"index of the slash request"},"returns":{"slashedAmount":"virtual amount of the collateral slashed"}},"initialize(bytes)":{"params":{"data":"some data to use"}},"requestSlash(bytes32,address,uint256,uint48,bytes)":{"details":"Only a network middleware can call this function.","params":{"amount":"maximum amount of the collateral to be slashed","captureTimestamp":"time point when the stake was captured","hints":"hints for checkpoints' indexes","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"slashIndex":"index of the slash request"}},"resolver(bytes32,bytes)":{"params":{"hint":"hint for the checkpoint index","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"_0":"address of the resolver"}},"resolverAt(bytes32,uint48,bytes)":{"params":{"hint":"hint for the checkpoint index","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)","timestamp":"timestamp to get the resolver at"},"returns":{"_0":"address of the resolver"}},"slashRequestsLength()":{"returns":{"_0":"total number of slash requests"}},"slashableStake(bytes32,address,uint48,bytes)":{"params":{"captureTimestamp":"time point to get the stake amount at","hints":"hints for the checkpoints' indexes","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"amount":"slashable amount of the stake"}},"staticDelegateCall(address,bytes)":{"details":"It allows to use this contract's storage on-chain.","params":{"data":"data to make a delegatecall with","target":"address of the contract to make a delegatecall to"}},"vetoSlash(uint256,bytes)":{"details":"Only a resolver can call this function.","params":{"hints":"hints for checkpoints' indexes","slashIndex":"index of the slash request"}}},"version":1},"userdoc":{"kind":"user","methods":{"BURNER_GAS_LIMIT()":{"notice":"Get a gas limit for the burner."},"BURNER_RESERVE()":{"notice":"Get a reserve gas between the gas limit check and the burner's execution."},"FACTORY()":{"notice":"Get the factory's address."},"NETWORK_MIDDLEWARE_SERVICE()":{"notice":"Get the network middleware service's address."},"NETWORK_REGISTRY()":{"notice":"Get the network registry's address."},"TYPE()":{"notice":"Get the entity's type."},"VAULT_FACTORY()":{"notice":"Get the vault factory's address."},"cumulativeSlash(bytes32,address)":{"notice":"Get a cumulative slash amount for an operator on a subnetwork."},"cumulativeSlashAt(bytes32,address,uint48,bytes)":{"notice":"Get a cumulative slash amount for an operator on a subnetwork until a given timestamp (inclusively) using a hint."},"executeSlash(uint256,bytes)":{"notice":"Execute a slash with a given slash index using hints."},"initialize(bytes)":{"notice":"Initialize this entity contract by using a given data."},"isBurnerHook()":{"notice":"Get if the burner is needed to be called on a slashing."},"latestSlashedCaptureTimestamp(bytes32,address)":{"notice":"Get the latest capture timestamp that was slashed on a subnetwork."},"requestSlash(bytes32,address,uint256,uint48,bytes)":{"notice":"Request a slash using a subnetwork for a particular operator by a given amount using hints."},"resolver(bytes32,bytes)":{"notice":"Get a resolver for a given subnetwork using a hint."},"resolverAt(bytes32,uint48,bytes)":{"notice":"Get a resolver for a given subnetwork at a particular timestamp using a hint."},"resolverSetEpochsDelay()":{"notice":"Get a delay for networks in epochs to update a resolver."},"slashRequests(uint256)":{"notice":"Get a particular slash request."},"slashRequestsLength()":{"notice":"Get a total number of slash requests."},"slashableStake(bytes32,address,uint48,bytes)":{"notice":"Get a slashable amount of a stake got at a given capture timestamp using hints."},"staticDelegateCall(address,bytes)":{"notice":"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data)."},"vault()":{"notice":"Get the vault's address."},"vetoDuration()":{"notice":"Get a duration during which resolvers can veto slash requests."},"vetoSlash(uint256,bytes)":{"notice":"Veto a slash with a given slash index using hints."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/hints/SlasherHints.sol":"VetoSlasherHints"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol":{"keccak256":"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866","urls":["bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf","dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab","urls":["bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89","dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606","urls":["bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1","dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol":{"keccak256":"0x4aaaf1c0737dd16e81f0d2b9833c549747a5ede6873bf1444bc72aa572d03e98","urls":["bzz-raw://eada27d7668eebaea16c3b890aa1b38ffc53965292e26c96f7c44834623f4710","dweb:/ipfs/QmVSWuLtxyCqNbLyY89ptxkvsk4CLLKDQYigEne5Qj8k1L"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol":{"keccak256":"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92","urls":["bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a","dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310","urls":["bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862","dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol":{"keccak256":"0x7d94fa0af099a2172eb01f9c8a8a443cbe7e0e43654841563e4e09968efdb549","urls":["bzz-raw://65e38fb76b6add407d4557753ae83dd1268e8261195dbe5c19a580d5ba6e4e9a","dweb:/ipfs/QmTkGSJtaQrqjcyWM4AgemeEmKgtDydKPPVRajsUJRQSrK"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed","urls":["bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0","dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84","urls":["bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9","dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol":{"keccak256":"0x10eb97d047f8d84fe263a02bb4a656ac6674f6679d74532cc37546289e073a9d","urls":["bzz-raw://3e41287d40b0c46982f1083d40d32de2761f009c5c51627fe79a7feb0ab1cf5c","dweb:/ipfs/Qme7dbh6HX3ZvUJdbQAcVqXkmyXyfcLiUZRhhon3cU6K8p"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575","urls":["bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e","dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/SignatureChecker.sol":{"keccak256":"0xbdc3bb48ccedb818cd75a6d74a16df55a822e9f6d3cc54c59f576f10aab67b5f","urls":["bzz-raw://2284f25f2478f419d7781573b17a89d0e7c5589a865d55e2d6ed5163aee23aa8","dweb:/ipfs/QmNsr2625APBQiNKpYnX5VcSnYgfUHR9Uzzp9pRXjoDqK7"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3","urls":["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03","dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol":{"keccak256":"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f","urls":["bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44","dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc","urls":["bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6","dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza"],"license":"MIT"},"src/contracts/common/Entity.sol":{"keccak256":"0x3d61a932995b8443381f3950542d388223a2c26dd5d29a3274dea3baa7388bd7","urls":["bzz-raw://7cdf5f03ca72fd263fd32ff59c8d88ddca911ae83896a287d10772c1bbe9b138","dweb:/ipfs/QmbP84r5BWT1Rn9AYTntWSf3xUMTTCohTZJFhbBhDXFoHa"],"license":"BUSL-1.1"},"src/contracts/common/MigratableEntity.sol":{"keccak256":"0x303ad40a3de8fa808cc30a6fbd5998633f6a89b982e6db1fa981e0566ab445e7","urls":["bzz-raw://fa8fb92995ead02798e013190b87b84b44cc68668262f045c9b0b4783940e2bf","dweb:/ipfs/QmV1uKGVLKwWisc714R8fCt71gXUQJpaKvdc6LQ8WtvMpL"],"license":"BUSL-1.1"},"src/contracts/common/StaticDelegateCallable.sol":{"keccak256":"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90","urls":["bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764","dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD"],"license":"BUSL-1.1"},"src/contracts/delegator/BaseDelegator.sol":{"keccak256":"0x7c54d491fdd4415b764a9c8defa068e56d4c0c8c9419be0053a1d377669290e8","urls":["bzz-raw://9238bfbad0f6eeb0dc7727724de14380f1980b395902269703d5e2ef07e52e10","dweb:/ipfs/QmPJn1V4HNXcEghYvogGuSTF24dSQUPosR5qtsXcmNqRm3"],"license":"BUSL-1.1"},"src/contracts/delegator/FullRestakeDelegator.sol":{"keccak256":"0x0a81c4f8e72914563a9cb771e93acf889c71ea36b7bec040e4eb562b199d5af1","urls":["bzz-raw://6fc66b6ba02da77046a0bbbd1dd407a62c08f52e04486c9cbd2cb1cca3da555f","dweb:/ipfs/QmZQivK1ZnMxfRQQ5aLpV9co5u55wQVNev5Rg1hzAqxhkE"],"license":"BUSL-1.1"},"src/contracts/delegator/NetworkRestakeDelegator.sol":{"keccak256":"0xd3a8e6522f9c6fdcc2da837c9023afd6bdff2bce45a35590320c475519e3636d","urls":["bzz-raw://58b17a87f6554f08376f9ea7fedf486a4aa75801bf0ad8b23ff5a46959b6b7a3","dweb:/ipfs/QmSTmNh67tYt8CmjVZb57r8N3qX5yeYdMApKPJm3qvQgQw"],"license":"BUSL-1.1"},"src/contracts/delegator/OperatorNetworkSpecificDelegator.sol":{"keccak256":"0x031a10722b9ec49048f0952710401131290adb87e71caf294e864e7ac3b98a16","urls":["bzz-raw://72428febc875134b2f29205e6f294634a1c22a7d5c78d6a9cb2f8196f107c9b5","dweb:/ipfs/QmTPwXR6h5oytckmkLrHdKeEMdphJxceDhYUR4zvQeWAwY"],"license":"BUSL-1.1"},"src/contracts/delegator/OperatorSpecificDelegator.sol":{"keccak256":"0x630ce62fa30b9f3349ab7a8cf8dbf041319febc6dd757be2f94d3d25944ed328","urls":["bzz-raw://c2ac59d47ce57d2a6819ae9833e1a618a371eccff93eb5ab367b201b01f42bfa","dweb:/ipfs/QmdBpGMBivpNPv2WbH8vnCUy5xkVeaxQvGgqi33vKCz1kA"],"license":"BUSL-1.1"},"src/contracts/hints/DelegatorHints.sol":{"keccak256":"0xd71e9102e99a25ee8b5435779f011a24558f56074aa2b16c18b623b57754ae97","urls":["bzz-raw://29db5552e55dab51bea1ae40ba00ca674cb50fcb10997999a72a94527b6eb591","dweb:/ipfs/QmQrYyTPx73ubNxMhYWJCkprCVFVtuTFcKaabYiKTe71tY"],"license":"BUSL-1.1"},"src/contracts/hints/Hints.sol":{"keccak256":"0x8b565df1ae35993c097a9e642002782a8f451f6fd01809cad6bcd345bdf1b99c","urls":["bzz-raw://99a19adb01e350a92f534095b3078229df1f2f83077992d75d58d8684be45971","dweb:/ipfs/QmbmwcuswVbzvwHQFTtrJG86oV98GnfxqYTb8cV8u1acox"],"license":"BUSL-1.1"},"src/contracts/hints/OptInServiceHints.sol":{"keccak256":"0x95d9407900d27b9f4a1233b772aeed809c07b2dc5b31cfc9fa77ca26514c49e5","urls":["bzz-raw://a13a8877e312d7e6b8b85bde3668c5d84ff5ecc83f762cd573f2b7104c64eb42","dweb:/ipfs/QmYV2J55acuGzCNnS3juABuUHY5U1xc8g8o9jwEyFFdeG5"],"license":"BUSL-1.1"},"src/contracts/hints/SlasherHints.sol":{"keccak256":"0xd77c5f3bbb0265af8ecd947df88f6f9684e136d80052b5292f5b29aaa3566a3f","urls":["bzz-raw://484a26504bf6706202ec82a9a4cfa7d196bbc552b5b78ced25bf7130c2842595","dweb:/ipfs/QmaQqmkoZoUWEam4R94vmajzH3gKqFqpZQwFbrHDsN1peV"],"license":"BUSL-1.1"},"src/contracts/hints/VaultHints.sol":{"keccak256":"0xccb505b7159b769cc114d67b87c2de6b106557f667fc8f3780114baad5c3c442","urls":["bzz-raw://6d0c80a908fc16e96a8b5605a0bd53f9e89ad0ef0a738fbbae80ba4d3160749b","dweb:/ipfs/QmXo5UtWoR8YmunqcbBU8rQMm1nvmvjNPoXcVrDhh4pEwR"],"license":"BUSL-1.1"},"src/contracts/libraries/Checkpoints.sol":{"keccak256":"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c","urls":["bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609","dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE"],"license":"MIT"},"src/contracts/libraries/ERC4626Math.sol":{"keccak256":"0x8441160513c1cbeb1c3b9ee077bcc7e7ce20006b52a77c8dd39ff0ef89699939","urls":["bzz-raw://943f8cc3e26ddf649f465f40c909819f5c864717c4baa339e9e403b9374a4653","dweb:/ipfs/QmXPxi1sUDsrGprZdUgCzoPEosaZMv9ZhygWQ1vAi1phAB"],"license":"MIT"},"src/contracts/libraries/Subnetwork.sol":{"keccak256":"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe","urls":["bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56","dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32"],"license":"MIT"},"src/contracts/service/OptInService.sol":{"keccak256":"0x4e0932077f2686b7990e10d59deb2535334c0d09e52ef6e57c6ab09eca21c4b1","urls":["bzz-raw://7c00d311032ed4a1743aca7475f3c86ce15cdfc2218108efc3731c03d34a5278","dweb:/ipfs/QmUGGfVwVhaHr5kS4177yKKYiLYzi5qZpkEmvYxBZqazxf"],"license":"BUSL-1.1"},"src/contracts/slasher/BaseSlasher.sol":{"keccak256":"0x190e5dce196a061bdad42468c52e9f5b0eb7810cd7d0c19f04d6a2e94984f1b6","urls":["bzz-raw://07ca08d0cd43c2fe5d54a5577f6bdd522ced410f5d3a52e764deaa7ba26b5f06","dweb:/ipfs/QmZe3PiMKBQKWcwodaLupragdqxPjgS4v1qMC7RXau8hDF"],"license":"BUSL-1.1"},"src/contracts/slasher/Slasher.sol":{"keccak256":"0xeee0cb25fad58d496fdcc641d852d11bae06e6ceed5230ae21150964175c494f","urls":["bzz-raw://34aa27d21246a1bcee0b6a2afa8d9d613441156362430392f75d176511d58c61","dweb:/ipfs/Qmf53Y3zdGfH4PU2zpSGeHZ8mMLzLXCtmkQrG5mnVJECQ3"],"license":"BUSL-1.1"},"src/contracts/slasher/VetoSlasher.sol":{"keccak256":"0xeccc8128de5e1ad499c067feac1c526638fbbac1a18b96726fc7507969fd5897","urls":["bzz-raw://cdfcf281338423625acbccdf8810115b258ef7cfe4aa3c10b8911ead1aa85429","dweb:/ipfs/QmZFsDvZXpkFkx4PHcDXAVPN3ZCAahbSVfYpSVrMBvbt4k"],"license":"BUSL-1.1"},"src/contracts/vault/Vault.sol":{"keccak256":"0x7ee6dbf060c45d6eba95315f4ac0b3b467dd9c4999b84c31d6f66d4d8b53a116","urls":["bzz-raw://301948b8ea522db292aa2722ba42def3911dae95f0b376f7023c3fef470f8676","dweb:/ipfs/QmSDbP2HdzhDAzstr8Zz5isEAcSkma8ABc5UwPsoazaumZ"],"license":"BUSL-1.1"},"src/contracts/vault/VaultStorage.sol":{"keccak256":"0x57db25b127d77ea3472de53e3a4af3354399655b9268638b99ca5925fa364a56","urls":["bzz-raw://aa763d9a6ec508ae3abfb8228b72b9fd9525279e5135d4962e79ff059feb1173","dweb:/ipfs/QmcbDR6E9wyEpu6V2FkEC4hnWy47zXA9LSKJde6zSGd33Q"],"license":"BUSL-1.1"},"src/interfaces/common/IEntity.sol":{"keccak256":"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21","urls":["bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b","dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv"],"license":"MIT"},"src/interfaces/common/IMigratableEntity.sol":{"keccak256":"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4","urls":["bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c","dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds"],"license":"MIT"},"src/interfaces/common/IRegistry.sol":{"keccak256":"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb","urls":["bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014","dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK"],"license":"MIT"},"src/interfaces/common/IStaticDelegateCallable.sol":{"keccak256":"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5","urls":["bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516","dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi"],"license":"MIT"},"src/interfaces/delegator/IBaseDelegator.sol":{"keccak256":"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee","urls":["bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2","dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8"],"license":"MIT"},"src/interfaces/delegator/IDelegatorHook.sol":{"keccak256":"0xc51aa8d7d1f6c8043ee819b7aeb86da0e993912e1442098df897e299f01f9f46","urls":["bzz-raw://adddf5cb2ba282aeb576b26efb28640f865a1721cc9b6eee8b3ee0457a2c9780","dweb:/ipfs/QmNYgAmnLRwWZbhTuQhZs9rx4zcme1df5mEepkrniorSoW"],"license":"MIT"},"src/interfaces/delegator/IFullRestakeDelegator.sol":{"keccak256":"0xa3c8cb2e45d4d8ce90e95263bea40c01dc400f05ad65bc29597d878606be5e7d","urls":["bzz-raw://782cf5e201aa4cca037ebafd3807a68ff1cc721d5b8416a35244db0d0607369e","dweb:/ipfs/QmQkJks6x7CKndeTPa9LxgTNygD5uEi7obhADhpq1Lsr9A"],"license":"MIT"},"src/interfaces/delegator/INetworkRestakeDelegator.sol":{"keccak256":"0xe7030fe30389a147fd710e3436ec346b4842695fd3e65a81b95375c9f1d633fc","urls":["bzz-raw://739c7e66d301778054f5c90bee45ec9438f68afba8a03eaaac52064c73b115ad","dweb:/ipfs/QmfZ2ytKcTykAc76nxhg8ikUXV8NdBpetqb8W4YWPcox1Z"],"license":"MIT"},"src/interfaces/delegator/IOperatorNetworkSpecificDelegator.sol":{"keccak256":"0x74b95e64d29769202d45dd277bb830f623ff3d41ce77b80ce3ee4e318a5c71ec","urls":["bzz-raw://e512b903aae5c1b8a028c6e3f4f6223b5cb5d704503cfa6bd37b5346868f5c20","dweb:/ipfs/QmZim9YExsPWtyxyeui993HTKAEmrg8MUcSkZ77Gp2JcuZ"],"license":"MIT"},"src/interfaces/delegator/IOperatorSpecificDelegator.sol":{"keccak256":"0x72075cab585dc17240cc3e32bc99b92f0d5627ddd988fed680e3e1a52d5a01e4","urls":["bzz-raw://7448bc90699409ae61d85216b5efc2143a37f0f73354be2aea993bc54afca441","dweb:/ipfs/QmXE4gAxM8pHosZK8mcTcj17puBx484meDCcmrDePskGHZ"],"license":"MIT"},"src/interfaces/service/INetworkMiddlewareService.sol":{"keccak256":"0x347afc7fcf1fbcdb96d66162070ef6c78aed27b3af2c1d5dfb4e511840631783","urls":["bzz-raw://2d90b8ceb495159e8e4e95d76447719dd166443f67dfabdd942846162071595c","dweb:/ipfs/QmVVuiAWYx92T6vBvNMKZfTvraCf1fa16BsUKkdNs3hdHA"],"license":"MIT"},"src/interfaces/service/IOptInService.sol":{"keccak256":"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a","urls":["bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337","dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24"],"license":"MIT"},"src/interfaces/slasher/IBaseSlasher.sol":{"keccak256":"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404","urls":["bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf","dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx"],"license":"MIT"},"src/interfaces/slasher/IBurner.sol":{"keccak256":"0xaf495dacc19ae0b3c787ba8021c5944927d70261536addd234d7dab146158c2b","urls":["bzz-raw://9b3cc66251008be6ff9fc8b11ecc6831d5a9dca49a3fe9817fcd970253c1d447","dweb:/ipfs/QmVxfb9ALGdF9W3SN2h41gQbUct6tawvu5bw4K89kFQ4HW"],"license":"MIT"},"src/interfaces/slasher/ISlasher.sol":{"keccak256":"0x34d226d67a3d5e16571f2fac91a8b9773551bcc41c88a96279669dd78d192625","urls":["bzz-raw://7a6e8c1462ee4a1b0f745414be043c09012ea676613790aba004b06c85c980d1","dweb:/ipfs/QmadjNEbHKRthtA1EeNy3Kg2sXpejH2KBeHm8QZtBPvXbJ"],"license":"MIT"},"src/interfaces/slasher/IVetoSlasher.sol":{"keccak256":"0xdf7edd04a4f36e9aec3a15241dcb6b6315b2e64927b12710c2c410d571fc55e9","urls":["bzz-raw://c4be6ac339c2ebf230fed65363f036784224095d0cd0f3f2d01d64d6e0da9508","dweb:/ipfs/QmRSMbpfaHExqrzUA8vYZMYZWh6eQW1KX9JKJSLdgronfg"],"license":"MIT"},"src/interfaces/vault/IVault.sol":{"keccak256":"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235","urls":["bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9","dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R"],"license":"MIT"},"src/interfaces/vault/IVaultStorage.sol":{"keccak256":"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22","urls":["bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e","dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6"],"license":"MIT"}},"version":1},"id":91} \ No newline at end of file diff --git a/out/Vault.sol/Vault.json b/out/Vault.sol/Vault.json index d30f6587..0422d5b5 100644 --- a/out/Vault.sol/Vault.json +++ b/out/Vault.sol/Vault.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"delegatorFactory","type":"address","internalType":"address"},{"name":"slasherFactory","type":"address","internalType":"address"},{"name":"vaultFactory","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"DELEGATOR_FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"DEPOSITOR_WHITELIST_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"DEPOSIT_LIMIT_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"DEPOSIT_WHITELIST_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"IS_DEPOSIT_LIMIT_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"SLASHER_FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"activeBalanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"activeBalanceOfAt","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hints","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"activeShares","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"activeSharesAt","inputs":[{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"activeSharesOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"activeSharesOfAt","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"activeStake","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"activeStakeAt","inputs":[{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"burner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"claim","inputs":[{"name":"recipient","type":"address","internalType":"address"},{"name":"epoch","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"claimBatch","inputs":[{"name":"recipient","type":"address","internalType":"address"},{"name":"epochs","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"collateral","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"currentEpoch","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"currentEpochStart","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"delegator","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"deposit","inputs":[{"name":"onBehalfOf","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"depositedAmount","type":"uint256","internalType":"uint256"},{"name":"mintedShares","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"depositLimit","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"depositWhitelist","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"epochAt","inputs":[{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"epochDuration","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"epochDurationInit","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"initialVersion","type":"uint64","internalType":"uint64"},{"name":"owner_","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isDelegatorInitialized","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isDepositLimit","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isDepositorWhitelisted","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isInitialized","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isSlasherInitialized","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isWithdrawalsClaimed","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"migrate","inputs":[{"name":"newVersion","type":"uint64","internalType":"uint64"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"nextEpochStart","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"onSlash","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"slashedAmount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"previousEpochStart","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"redeem","inputs":[{"name":"claimer","type":"address","internalType":"address"},{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"withdrawnAssets","type":"uint256","internalType":"uint256"},{"name":"mintedShares","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDelegator","inputs":[{"name":"delegator_","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDepositLimit","inputs":[{"name":"limit","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDepositWhitelist","inputs":[{"name":"status","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDepositorWhitelistStatus","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"status","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setIsDepositLimit","inputs":[{"name":"status","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSlasher","inputs":[{"name":"slasher_","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"slashableBalanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"slasher","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"staticDelegateCall","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"totalStake","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"version","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"withdraw","inputs":[{"name":"claimer","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"burnedShares","type":"uint256","internalType":"uint256"},{"name":"mintedShares","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawalShares","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"withdrawalSharesOf","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"withdrawals","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"withdrawalsOf","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"Claim","inputs":[{"name":"claimer","type":"address","indexed":true,"internalType":"address"},{"name":"recipient","type":"address","indexed":true,"internalType":"address"},{"name":"epoch","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ClaimBatch","inputs":[{"name":"claimer","type":"address","indexed":true,"internalType":"address"},{"name":"recipient","type":"address","indexed":true,"internalType":"address"},{"name":"epochs","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Deposit","inputs":[{"name":"depositor","type":"address","indexed":true,"internalType":"address"},{"name":"onBehalfOf","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OnSlash","inputs":[{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","indexed":false,"internalType":"uint48"},{"name":"slashedAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SetDelegator","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SetDepositLimit","inputs":[{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SetDepositWhitelist","inputs":[{"name":"status","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"SetDepositorWhitelistStatus","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"status","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"SetIsDepositLimit","inputs":[{"name":"status","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"SetSlasher","inputs":[{"name":"slasher","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Withdraw","inputs":[{"name":"withdrawer","type":"address","indexed":true,"internalType":"address"},{"name":"claimer","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"burnedShares","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"mintedShares","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"AddressInsufficientBalance","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"AlreadyClaimed","inputs":[]},{"type":"error","name":"AlreadyInitialized","inputs":[]},{"type":"error","name":"AlreadySet","inputs":[]},{"type":"error","name":"CheckpointUnorderedInsertion","inputs":[]},{"type":"error","name":"DelegatorAlreadyInitialized","inputs":[]},{"type":"error","name":"DepositLimitReached","inputs":[]},{"type":"error","name":"FailedInnerCall","inputs":[]},{"type":"error","name":"InsufficientClaim","inputs":[]},{"type":"error","name":"InsufficientDeposit","inputs":[]},{"type":"error","name":"InsufficientRedemption","inputs":[]},{"type":"error","name":"InsufficientWithdrawal","inputs":[]},{"type":"error","name":"InvalidAccount","inputs":[]},{"type":"error","name":"InvalidCaptureEpoch","inputs":[]},{"type":"error","name":"InvalidClaimer","inputs":[]},{"type":"error","name":"InvalidCollateral","inputs":[]},{"type":"error","name":"InvalidDelegator","inputs":[]},{"type":"error","name":"InvalidEpoch","inputs":[]},{"type":"error","name":"InvalidEpochDuration","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"InvalidLengthEpochs","inputs":[]},{"type":"error","name":"InvalidOnBehalfOf","inputs":[]},{"type":"error","name":"InvalidRecipient","inputs":[]},{"type":"error","name":"InvalidSlasher","inputs":[]},{"type":"error","name":"InvalidTimestamp","inputs":[]},{"type":"error","name":"MathOverflowedMulDiv","inputs":[]},{"type":"error","name":"MissingRoles","inputs":[]},{"type":"error","name":"NoPreviousEpoch","inputs":[]},{"type":"error","name":"NotDelegator","inputs":[]},{"type":"error","name":"NotFactory","inputs":[]},{"type":"error","name":"NotInitialized","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"NotSlasher","inputs":[]},{"type":"error","name":"NotWhitelistedDepositor","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]},{"type":"error","name":"SlasherAlreadyInitialized","inputs":[]},{"type":"error","name":"TooMuchRedeem","inputs":[]},{"type":"error","name":"TooMuchWithdraw","inputs":[]}],"bytecode":{"object":"0x60e03461013c57601f614b8b38819003918201601f1916830192916001600160401b03918285118486101761014057816060928592604097885283398101031261013c5761004c82610154565b916100648461005d60208401610154565b9201610154565b9260805260a0527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff82861c1661012b5780808316036100e7575b50505060c05251614a22908161016982396080518181816111a001526116d5015260a05181818161183e0152611d04015260c05181818161077001526109a30152f35b6001600160401b0319909116811790915582519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80806100a4565b845163f92ee8a960e01b8152600490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b038216820361013c5756fe60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a7146104345780631415519b1461042f5780631b66c9e11461042a5780631e9a695014610425578063248a9ca31461042057806327810b6e1461041b578063281f5752146104165780632abe3048146104115780632d73c69c1461040c5780632dd31000146104075780632f2ff15d1461040257806336568abe146103fd578063392e53cd146103f85780634105a7dd146103f357806346361671146103ee57806347e7ef24146103e957806348d3b775146103e45780634ff0876a146103df57806350861adc146103da57806350f22068146103d55780635346e34f146103d057806354fd4d50146103cb57806357ec83cc146103c657806359f769a9146103c15780635cc07076146103bc57806361a8c8c4146103b75780636da3e06d146103b25780636ec1e3f8146103ad578063715018a6146103a85780637278e31c146103a357806373790ab31461039e5780637667180814610399578063794b15b7146103945780637953b33b1461038f5780637c04c80a1461038a578063810da75d1461038557806383cd9cc31461038057806387df07881461037b5780638b0e9f3f146103765780638da5cb5b1461037157806391d148541461036c5780639d66201b146103675780639f86fd8514610362578063a1b122021461035d578063a217fddf14610358578063a21a1df914610353578063a28614661461034e578063a3b5417214610349578063a5d0322314610344578063aabc24961461033f578063aad3ec961461033a578063afba70ad14610335578063b134427114610330578063bd49c35f1461032b578063bdc8144b14610326578063bfefcd7b14610321578063c31e8dd71461031c578063ce9b793014610317578063d547741f14610312578063d8dfeb451461030d578063db38871514610308578063ecf7085814610303578063efb559d6146102fe578063f2fde38b146102f9578063f3fef3a3146102f45763f5e7ee0f146102ef575f80fd5b6123a1565b6122fb565b6122ce565b61217f565b612162565b612128565b6120fd565b6120b1565b612089565b61201f565b612005565b611f27565b611f0d565b611ee5565b611ebb565b611dfa565b611c43565b611bfd565b611bb0565b611abd565b611a83565b611a69565b611a45565b61199b565b611961565b611903565b6118cf565b61186d565b611829565b611670565b611657565b6115f1565b6115ca565b61158a565b611570565b61152f565b61125b565b6111f4565b6111cf565b61118b565b611138565b61110e565b6110e7565b610faf565b610f7d565b610ee8565b610ecf565b610e72565b610e52565b610e31565b610b73565b610b4b565b610ab0565b610a6b565b610a20565b6109d2565b61098e565b61091a565b61072b565b61065d565b610635565b6105fc565b610513565b6104c8565b61048e565b3461048a57602036600319011261048a5760043563ffffffff60e01b811680910361048a57602090637965db0b60e01b8114908115610479575b506040519015158152f35b6301ffc9a760e01b1490505f61046e565b5f80fd5b3461048a575f36600319011261048a5760206040517fc6aaadd7371d5e8f9ed6849dd66a66573a3ba37167d03f4352c9ba5693678fac8152f35b3461048a575f36600319011261048a5760206040517f9c56d972d63cbb4195b3c1484691dfc220fa96a4c47e7b6613bd82a022029e068152f35b6001600160a01b0381160361048a57565b3461048a57604036600319011261048a5760043561053081610502565b6024359061053c612bf5565b6001600160a01b038116156105eb57335f908152600e6020526040902061056790613c8a565b613c8a565b82116105d957610587610578613b9d565b610580613c16565b9084613cd7565b9182156105c4578261059892612c24565b906105af60015f805160206149ad83398151915255565b604080519182526020820192909252f35b0390f35b60405160016245ddc760e11b03198152600490fd5b604051632418411f60e11b8152600490fd5b6040516208978560e71b8152600490fd5b3461048a57602036600319011261048a576004355f525f8051602061498d8339815191526020526020600160405f200154604051908152f35b3461048a575f36600319011261048a576001546040516001600160a01b039091168152602090f35b3461048a575f36600319011261048a5761067561291a565b80156106d65760015465ffffffffffff8160a01c16915f1981019081116106d1576106a39160d01c906123fa565b81018091116106d1576106b86105c091612d9e565b60405165ffffffffffff90911681529081906020820190565b6123cb565b604051639fa56a5b60e01b8152600490fd5b600435906001600160401b038216820361048a57565b9181601f8401121561048a578235916001600160401b03831161048a576020838186019501011161048a57565b3461048a57604036600319011261048a576107446106e8565b6001600160401b0360243581811161048a576107649036906004016106fe565b505061076e612bf5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036107ea575f805160206149cd833981519152549060ff8260401c169283156107da575b5050506107c8575f80fd5b60405163f92ee8a960e01b8152600490fd5b81169116101590505f80806107bd565b604051631966391b60e11b8152600490fd5b65ffffffffffff81160361048a57565b634e487b7160e01b5f52604160045260245ffd5b606081019081106001600160401b0382111761083b57604052565b61080c565b604081019081106001600160401b0382111761083b57604052565b90601f801991011681019081106001600160401b0382111761083b57604052565b6040519061016082018281106001600160401b0382111761083b57604052565b604051906108a982610840565b565b6001600160401b03811161083b57601f01601f191660200190565b9291926108d2826108ab565b916108e0604051938461085b565b82948184528183011161048a578281602093845f960137010152565b9080601f8301121561048a57816020610917933591016108c6565b90565b3461048a57606036600319011261048a5760043561093781610502565b60243590610944826107fc565b604435906001600160401b03821161048a5760209261096a6109869336906004016108fc565b6001600160a01b039092165f908152600e855260409020612f8b565b604051908152f35b3461048a575f36600319011261048a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461048a57604036600319011261048a57610a1e6024356004356109f582610502565b805f525f8051602061498d833981519152602052610a19600160405f200154613162565b613462565b005b3461048a57604036600319011261048a57602435610a3d81610502565b336001600160a01b03821603610a5957610a1e90600435613498565b60405163334bd91960e11b8152600490fd5b3461048a575f36600319011261048a5760ff60025460a01c1680610a97575b6020906040519015158152f35b5060035460a01c60ff16610a8a565b8015150361048a57565b3461048a57602036600319011261048a57600435610acd81610aa6565b610ad5612bf5565b610add613057565b5f54901515908160ff8216151514610b395760ff191660ff8216175f556040519081527f3e12b7b36c75ac9609a3f58609b331210428e1a85909132638955ba0301eec3390602090a160015f805160206149ad83398151915255005b60405163a741a04560e01b8152600490fd5b3461048a575f36600319011261048a57602065ffffffffffff60015460a01c16604051908152f35b3461048a5760408060031936011261048a576004803591610b9383610502565b610b9b612bf5565b6001600160a01b0391838316908115610e23575f5460ff811680610e0a575b610dfb5783516370a0823160e01b808252308483019081529096602093909160109190911c82169084908490819083010381845afa928315610dd3575f93610dd8575b50610c0f90602435903090339061352a565b5f5486519788523085890190815290979184918391908290819060200103918b60101c165afa908115610dd357610c4e935f92610da6575b50506123ed565b938415610d975760081c60ff1680610d82575b610d745750906105c091610d12610c76613b9d565b95610cbf610c82613c16565b610caa610c908a838b613cd7565b99610ca48a610c9e42612d9e565b9261241b565b9061367e565b5050610cb989610c9e42612d9e565b9061375e565b50506001600160a01b0381165f908152600e6020526040902090610d0c88610d07610562610cec42612d9e565b6001600160a01b039095165f908152600e6020526040902090565b61241b565b9161383a565b505081518481526020810186905233907fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d790604090a3610d5e60015f805160206149ad83398151915255565b5191825260208201929092529081906040820190565b8251632484557960e01b8152fd5b50610d8f84610d07613b9d565b815410610c61565b50825163070f6eed60e11b8152fd5b610dc59250803d10610dcc575b610dbd818361085b565b810190612449565b5f80610c47565b503d610db3565b612458565b610c0f919350610df490853d8711610dcc57610dbd818361085b565b9290610bfd565b5082516304f63b8560e01b8152fd5b50335f9081526005602052604090205460ff1615610bba565b8251630d534ce360e11b8152fd5b3461048a575f36600319011261048a57602060ff5f54166040519015158152f35b3461048a575f36600319011261048a57602060015460d01c604051908152f35b3461048a575f36600319011261048a57602060ff60025460a01c166040519015158152f35b90604060031983011261048a57600435610eb0816107fc565b91602435906001600160401b03821161048a57610917916004016108fc565b3461048a576020610986610ee236610e97565b90612e01565b3461048a57602036600319011261048a57600435610f0581610aa6565b610f0d612bf5565b610f156130b4565b5f54901515908160ff8260081c16151514610b395761ff001916600882901b61ff0016175f556040519081527ffa7a25a0b611d4ba3c0ea990e90dc23d484a5dd7a1be4733fef2946ba74530c690602090a1610a1e60015f805160206149ad83398151915255565b3461048a575f36600319011261048a5760206001600160401b035f805160206149cd8339815191525416604051908152f35b3461048a57606036600319011261048a57610fc86106e8565b602435610fd481610502565b6001600160401b039160443583811161048a57610ff59036906004016106fe565b5f805160206149cd8339815191529491855494838616806110d65760ff8760401c169081156110c9575b506107c8577fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2966110c49661108c958716906001600160401b0319161790556110875f805160206149cd833981519152600160401b68ff000000000000000019825416179055565b612463565b5f805160206149cd833981519152805468ff0000000000000000191690556040516001600160401b0390911681529081906020820190565b0390a1005b905084861611155f61101f565b60405162dc149f60e41b8152600490fd5b3461048a57602036600319011261048a57602061098660043561110981610502565b612883565b3461048a57602036600319011261048a576004355f526006602052602060405f2054604051908152f35b3461048a575f36600319011261048a5760015465ffffffffffff61116e818360a01c169261116461291a565b9060d01c906123fa565b82018092116106d157611182602092612d9e565b60405191168152f35b3461048a575f36600319011261048a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461048a575f36600319011261048a57602060ff60035460a01c166040519015158152f35b3461048a575f36600319011261048a5761120c6139cc565b5f8051602061492d83398151915280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461048a57604036600319011261048a5760043560243561127b816107fc565b611283612bf5565b6003546112a0906001600160a01b03165b6001600160a01b031690565b330361151d576112ae61291a565b906112b88161294e565b908215158061150c575b8015611503575b6114f1576105c0937ff9d090c096f71cd1659861a9ce5b6f384bceb4e2fa4e4a19edf6489a9b8d56c7926112fb613b9d565b946113166113088261240d565b5f52600660205260405f2090565b549082810361140a575061132a818761241b565b6113348185613a04565b9687806113c3575b50505050505b8361138f575b6040805191825265ffffffffffff929092166020820152908101839052606090a161137f60015f805160206149ad83398151915255565b6040519081529081906020820190565b5f546113be9085906113ac9060101c6001600160a01b0316611294565b6001546001600160a01b031690613ab2565b611348565b6113ff93610c4783610ca46113e96113e2611308986113f99888613a20565b80966123ed565b946113f342612d9e565b926123ed565b9261240d565b555f8080808761133c565b915061141e825f52600660205260405f2090565b549061142e81610d07848a61241b565b906114398286613a04565b978861144a575b5050505050611342565b6114bf93836114729361147f8c61147a6114686114b0998884613a20565b9788958584613a20565b9485926123ed565b6123ed565b938484106114ca575b610c4790610ca461149e9596976113f342612d9e565b6114aa6113088761240d565b556123ed565b915f52600660205260405f2090565b555f80808080611440565b916114e6610c47916114e08661149e97986123ed565b9061241b565b859450929050611488565b604051635e18d2a560e01b8152600490fd5b508282116112c9565b50611516836123df565b82106112c2565b60405163dabc4ad960e01b8152600490fd5b3461048a575f36600319011261048a5760015465ffffffffffff808260a01c169161155861291a565b600181018091116106d15761116e9160d01c906123fa565b3461048a575f36600319011261048a57602061098661291a565b3461048a57602036600319011261048a576004356115a781610502565b60018060a01b03165f526005602052602060ff60405f2054166040519015158152f35b3461048a57602036600319011261048a5760206109866004356115ec816107fc565b61294e565b3461048a57604036600319011261048a5760043561160e81610502565b6024356001600160401b0380821161048a573660238301121561048a57816004013590811161048a573660248260051b8401011161048a576105c092602461137f930190612989565b3461048a57602061098661166a36610e97565b90612ed6565b3461048a5760208060031936011261048a57600480359061169082610502565b611698612bf5565b60025460a01c60ff1661181a576040516302910f8b60e31b81526001600160a01b03838116838301908152909491908290829081906020010381887f0000000000000000000000000000000000000000000000000000000000000000165afa908115610dd3575f916117ed575b50156117dd5760405163fbfa77cf60e01b8152838516949082818581895afa928315610dd3575f936117ae575b50503091160361179f5750600280546001600160a01b03929092166001600160a81b031990921691909117600160a01b1790557fdb2160616f776a37b24808115554e79439bf26cccbbd4438190cc6d28e80ecd15f80a2610a1e60015f805160206149ad83398151915255565b60405163b9f0f17160e01b8152fd5b6117ce929350803d106117d6575b6117c6818361085b565b810190612ae2565b905f80611732565b503d6117bc565b506040516324e5af8d60e21b8152fd5b61180d9150823d8411611813575b611805818361085b565b810190612ac2565b5f611705565b503d6117fb565b604051631380833b60e01b8152fd5b3461048a575f36600319011261048a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461048a575f36600319011261048a5761188561291a565b61188d613b9d565b90805f52600660205260405f205482018092116106d157600181018091116106d1575f52600660205260405f205481018091116106d157602090604051908152f35b3461048a575f36600319011261048a575f8051602061492d833981519152546040516001600160a01b039091168152602090f35b3461048a57604036600319011261048a57602060ff61195560243561192781610502565b6004355f525f8051602061498d833981519152845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b3461048a57602036600319011261048a5760043561197e81610502565b60018060a01b03165f52600e602052602061098660405f20613c8a565b3461048a57604036600319011261048a576004356119b881610502565b6024356001600160401b03811161048a575f916119da839236906004016106fe565b90816040519283928337810184815203915af4611a3d60806119fa612af7565b9260206040519485921515828401526040808401528051918291826060860152018484015e5f838284010152601f8019910116810103606081018452018261085b565b805190602001fd5b3461048a575f36600319011261048a57602060ff5f5460081c166040519015158152f35b3461048a575f36600319011261048a5760206040515f8152f35b3461048a575f36600319011261048a5760206040517f4a634bc14d77baf979756509ef4298c6f6318af357828612545267ee2eb792338152f35b3461048a57604036600319011261048a57600435611ada81610502565b602435611ae681610aa6565b611aee612bf5565b611af661310b565b6001600160a01b038216918215611b9e575f8381526005602052604090205460ff16151582151514610b39576001600160a01b03165f9081526005602052604090207ff991b1ecfb5115cbb36a2b2e2240c058406d2acc2fcc6e9e2dc99d845ff70a6291611b8591611b73908260ff801983541691151516179055565b60405190151581529081906020820190565b0390a2610a1e60015f805160206149ad83398151915255565b604051630da30f6560e31b8152600490fd5b3461048a57604036600319011261048a576020611bf4602435611bd281610502565b6004355f526008835260405f209060018060a01b03165f5260205260405f2090565b54604051908152f35b3461048a57604036600319011261048a57602060ff611955602435611c2181610502565b6004355f526009845260405f209060018060a01b03165f5260205260405f2090565b3461048a5760208060031936011261048a576004803590611c6382610502565b611c6b612bf5565b60035460a01c60ff16611deb576001600160a01b03828116939084611cd9575b6003805460ff60a01b1916600160a01b179055847fe7e4c932e03abddfe20f83af42c33627e816115c7ec2b168441f65dc14bfc3ba5f80a2610a1e60015f805160206149ad83398151915255565b6040516302910f8b60e31b81526001600160a01b0385168482019081528390829081906020010381857f0000000000000000000000000000000000000000000000000000000000000000165afa908115610dd3575f91611dce575b5015611dbd5760405163fbfa77cf60e01b815282818581895afa928315610dd3575f93611d9e575b505030911603611d8f5750600380546001600160a01b0319166001600160a01b039092169190911790555f808080611c8b565b604051633f3e089160e21b8152fd5b611db5929350803d106117d6576117c6818361085b565b905f80611d5c565b60405163dabc4ad960e01b81528390fd5b611de59150833d851161181357611805818361085b565b5f611d34565b60405163703fe2e560e01b8152fd5b3461048a57604036600319011261048a57600435611e1781610502565b60243590611e23612bf5565b6001600160a01b0391818316908115611ea957611e546105c094611e4683613b01565b9485915f5460101c16613ab2565b604080519182526020820184905233917f865ca08d59f5cb456e85cd2f7ef63664ea4f73327414e9d8152c4158b0e946459190a360015f805160206149ad833981519152556040519081529081906020820190565b604051634e46966960e11b8152600490fd5b3461048a57602036600319011261048a576004355f526007602052602060405f2054604051908152f35b3461048a575f36600319011261048a576003546040516001600160a01b039091168152602090f35b3461048a575f36600319011261048a576020610986613b9d565b3461048a57602036600319011261048a57600435611f43612bf5565b335f9081527f2d4ccbfe9f7672a6f2537c1e5bce6adacb73706879154bbab6ce096012d6721660205260409020547f4a634bc14d77baf979756509ef4298c6f6318af357828612545267ee2eb792339060ff1615611fe757508060045414610b39576020817f854df3eb95564502c8bc871ebdd15310ee26270f955f6c6bd8cea68e75045bc092600455604051908152a160015f805160206149ad83398151915255005b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b3461048a575f36600319011261048a576020610986613c16565b3461048a57602036600319011261048a5760043561203c81610502565b61204461291a565b61204d82612883565b916120588183612b97565b83018093116106d157600182018092116106d15761207591612b97565b81018091116106d157602090604051908152f35b3461048a575f36600319011261048a576002546040516001600160a01b039091168152602090f35b3461048a57604036600319011261048a57610a1e6024356004356120d482610502565b805f525f8051602061498d8339815191526020526120f8600160405f200154613162565b613498565b3461048a575f36600319011261048a575f5460405160109190911c6001600160a01b03168152602090f35b3461048a575f36600319011261048a5760206040517fbae4ee3de6c709ff9a002e774c5b78cb381560b219213c88ae0f1e207c03c0238152f35b3461048a575f36600319011261048a576020600454604051908152f35b3461048a57606036600319011261048a5760043561219c81610502565b602435906121a9826107fc565b6001600160401b039160443583811161048a576121ca9036906004016106fe565b909260409384516121da81610820565b60608152606060208201526060868201529280612239575b6105c08661222a878761222461220b8984845191612428565b928561221b602085015183612ed6565b93015190612e01565b91613cd7565b90519081529081906020820190565b810193925060208185031261048a5780359086821161048a57019260608482031261048a5784519561226a87610820565b843581811161048a578261227f9187016108fc565b8752602085013581811161048a57826122999187016108fc565b60208801528585013590811161048a576105c0966122c26122249361220b9361222a98016108fc565b878201529394506121f2565b3461048a57602036600319011261048a57610a1e6004356122ee81610502565b6122f66139cc565b612b26565b3461048a57604036600319011261048a5760043561231881610502565b602435612323612bf5565b6001600160a01b038216156105eb57801561238f57612352612343613c16565b61234b613b9d565b9083614121565b335f908152600e6020526040902090929061236c90613c8a565b831161237d57610598918391612c24565b6040516321727a3760e11b8152600490fd5b604051636c6c627d60e11b8152600490fd5b3461048a57604036600319011261048a5760206109866024356123c381610502565b600435612b97565b634e487b7160e01b5f52601160045260245ffd5b5f198101919082116106d157565b919082039182116106d157565b818102929181159184041417156106d157565b90600182018092116106d157565b919082018092116106d157565b6001600160a01b03165f908152600e60205260409020610917929190612f8b565b9081602091031261048a575190565b6040513d5f823e3d90fd5b916124b5916124a691612474614268565b61247c614268565b60015f805160206149ad833981519152556001600160a01b0394808616612869575b5036916108c6565b60208082518301019101613903565b805182166001600160a01b03161561285757604080820165ffffffffffff6124e3825165ffffffffffff1690565b16156128465760c083018051909290612504906001600160a01b0316611294565b156126f7575b5091612643610140926125e26125bd6126a196612558612530875160018060a01b031690565b5f805462010000600160b01b03191660109290921b62010000600160b01b0316919091179055565b6020860151600180546001600160a01b0319166001600160a01b039092169190911790556125b161258842612d9e565b6001805465ffffffffffff60a01b191660a09290921b65ffffffffffff60a01b16919091179055565b5165ffffffffffff1690565b600180546001600160d01b031660d09290921b6001600160d01b031916919091179055565b6126026125f26060850151151590565b60ff80195f541691151516175f55565b6126296126126080850151151590565b61ff005f5491151560081b169061ff001916175f55565b61263660a0840151600455565b516001600160a01b031690565b8481166126e7575b5060e08101516001600160a01b03168481166126d7575b506101008101516001600160a01b03168481166126c7575b506101208101516001600160a01b03168481166126b7575b5001516001600160a01b031690565b9081166126ab5750565b6126b4906133f3565b50565b6126c090613384565b505f612692565b6126d090613315565b505f61267a565b6126e09061323f565b505f612662565b6126f09061318e565b505f61264b565b60e084015161270e906001600160a01b0316611294565b156127e3575b61012084015161272c906001600160a01b0316611294565b61250a576080840151156127995760a0840151158061277a575b61276a575091612643610140926125e26125bd6126a1965b9496505050925061250a565b5163183c854560e21b8152600490fd5b50610140840151612793906001600160a01b0316611294565b15612746565b60a0840151158015906127c3575b61276a575091612643610140926125e26125bd6126a19661275e565b506101408401516127dc906001600160a01b0316611294565b15156127a7565b60608401511561281957610100840151612805906001600160a01b0316611294565b612714575163183c854560e21b8152600490fd5b610100840151612831906001600160a01b0316611294565b15612714575163183c854560e21b8152600490fd5b81516368f5f8f160e11b8152600490fd5b6040516368f7a67560e11b8152600490fd5b61287d90612875614268565b6122f6614268565b5f61249e565b6001600160a01b03165f908152600e602052604090206128a290613c8a565b6128aa613b9d565b6128b2613c16565b90600181018091116106d157600182018092116106d15761091792613a20565b65ffffffffffff91821690821603919082116106d157565b634e487b7160e01b5f52601260045260245ffd5b9065ffffffffffff80911691821561291557160490565b6128ea565b61292342612d9e565b61294a60015461294065ffffffffffff93848360a01c16906128d2565b9060d01c906128fe565b1690565b6001549065ffffffffffff91828160a01c169182848216106129775761294a92612940916128d2565b60405163b7d0949760e01b8152600490fd5b90612992612bf5565b5f926001600160a01b038316928315611ea9578115612a4a575f5b828110612a2857505f547f326b6aff1cd2fb1c8234de4f9dcfb9047c5c36eb9ef2eb34af5121e969a75d2792869290916129fd9184916129f89060101c6001600160a01b0316611294565b613ab2565b612a0e604051928392339684612a85565b0390a3906108a960015f805160206149ad83398151915255565b94612a436001916114e0612a3d898789612a70565b35613b01565b95016129ad565b60405163edf3b93360e01b8152600490fd5b634e487b7160e01b5f52603260045260245ffd5b9190811015612a805760051b0190565b612a5c565b604080825281018390529392916001600160fb1b03811161048a5760209160609160051b809183880137850101930152565b51906108a982610aa6565b9081602091031261048a575161091781610aa6565b51906108a982610502565b9081602091031261048a575161091781610502565b3d15612b21573d90612b08826108ab565b91612b16604051938461085b565b82523d5f602084013e565b606090565b6001600160a01b03908116908115612b7f575f8051602061492d83398151915280546001600160a01b031981168417909155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b604051631e4fbdf760e01b81525f6004820152602490fd5b90612bbd90825f52600860205260405f209060018060a01b03165f5260205260405f2090565b54905f52600660205260405f2054600760205260405f205490600181018091116106d157600182018092116106d15761091792613a20565b5f805160206149ad8339815191526002815414612c125760029055565b604051633ee5aeb560e01b8152600490fd5b335f908152600e6020526040902093929190612c3f42612d9e565b335f908152600e60205260409020612c5690613c8a565b918483039283116106d157612c917febff2602b3f468259e1e99f613fed6691f3a6526effe6ef3e768ba7ae7a36c4f938593612d1c9961383a565b5050612cab612c9f42612d9e565b610cb98761147a613c16565b5050612cc5612cb942612d9e565b610ca48461147a613b9d565b5050612d6a81612d55612cde612cd961291a565b61240d565b612d34612cf3825f52600660205260405f2090565b54612d06835f52600760205260405f2090565b54612d1282828b613cd7565b9d8e998a9361241b565b612d2e855f52600660205260405f2090565b5561241b565b612d46825f52600760205260405f2090565b555f52600860205260405f2090565b9060018060a01b03165f5260205260405f2090565b612d7583825461241b565b9055604080519485526020850195909552938301526001600160a01b03909216913391606090a3565b65ffffffffffff90818111612db1571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b9081602091031261048a575163ffffffff8116810361048a5790565b90600163ffffffff809316019182116106d157565b90805115612ecc5780602080612e1c93518301019101612dd0565b612e2581613f48565b90612e36825165ffffffffffff1690565b9065ffffffffffff8085169216828114612ec05782119182612e6c575b5050612e63575061091790613cf8565b60209150015190565b909150612e7a600a546123df565b63ffffffff831614918215612e93575b50505f80612e53565b612eb89192506125b1612ea8612ead92612dec565b613f48565b65ffffffffffff1690565b115f80612e8a565b50505060209150015190565b5061091790613cf8565b90805115612f815780602080612ef193518301019101612dd0565b612efa81613fcd565b90612f0b825165ffffffffffff1690565b9065ffffffffffff8085169216828114612ec05782119182612f38575b5050612e63575061091790613dbf565b909150612f46600c546123df565b63ffffffff831614918215612f5f575b50505f80612f28565b612f799192506125b1612f74612ead92612dec565b613fcd565b115f80612f56565b5061091790613dbf565b9180511561304d5780602080612fa693518301019101612dd0565b91612fb18382614048565b92612fc2845165ffffffffffff1690565b9065ffffffffffff80851692168281146130415782119182612ff8575b5050612fef576109179250613e7f565b50506020015190565b90915061300583546123df565b63ffffffff83161491821561301e575b50505f80612fdf565b6130399192506125b1613033612ead92612dec565b85614048565b115f80613015565b50505050506020015190565b5061091791613e7f565b335f9081527f03b26b53c87faa1058f30bb5d2fee64f717719a0d9b7e4f4df027aa5e9b6ed69602052604090207fbae4ee3de6c709ff9a002e774c5b78cb381560b219213c88ae0f1e207c03c0239060ff905b541615611fe75750565b335f9081527fe41986b390c4ce6791b87f7423b5fab7a81a0e6d89660b6264f697d008b2243a602052604090207fc6aaadd7371d5e8f9ed6849dd66a66573a3ba37167d03f4352c9ba5693678fac9060ff906130aa565b335f9081527f0287ab4cb376ea253d7b2ce0c2cbf458f7deae9458470d74afdfbbee484e9540602052604090207f9c56d972d63cbb4195b3c1484691dfc220fa96a4c47e7b6613bd82a022029e069060ff906130aa565b5f8181525f8051602061498d83398151915260209081526040808320338452909152902060ff906130aa565b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260409020545f8051602061498d8339815191529060ff16613239575f808052602091825260408082206001600160a01b038516835290925220805460ff1916600117905533906001600160a01b03165f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b50505f90565b6001600160a01b0381165f9081527f03b26b53c87faa1058f30bb5d2fee64f717719a0d9b7e4f4df027aa5e9b6ed69602052604090207fbae4ee3de6c709ff9a002e774c5b78cb381560b219213c88ae0f1e207c03c023905f8051602061498d8339815191529060ff905b541661330e575f828152602091825260408082206001600160a01b038616835290925220805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b5050505f90565b6001600160a01b0381165f9081527f0287ab4cb376ea253d7b2ce0c2cbf458f7deae9458470d74afdfbbee484e9540602052604090207f9c56d972d63cbb4195b3c1484691dfc220fa96a4c47e7b6613bd82a022029e06905f8051602061498d8339815191529060ff906132aa565b6001600160a01b0381165f9081527fe41986b390c4ce6791b87f7423b5fab7a81a0e6d89660b6264f697d008b2243a602052604090207fc6aaadd7371d5e8f9ed6849dd66a66573a3ba37167d03f4352c9ba5693678fac905f8051602061498d8339815191529060ff906132aa565b6001600160a01b0381165f9081527f2d4ccbfe9f7672a6f2537c1e5bce6adacb73706879154bbab6ce096012d67216602052604090207f4a634bc14d77baf979756509ef4298c6f6318af357828612545267ee2eb79233905f8051602061498d8339815191529060ff906132aa565b5f8181525f8051602061498d833981519152602081815260408084206001600160a01b038716855290915290912060ff906132aa565b5f8181525f8051602061498d833981519152602081815260408084206001600160a01b03871685529091529091205460ff161561330e575f828152602091825260408082206001600160a01b038616835290925220805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b6040516323b872dd60e01b60208201526001600160a01b03928316602482015292909116604483015260648083019390935291815260a08101918183106001600160401b0384111761083b576108a9926040526140b0565b600b54811015612a8057600b5f525f8051602061496d83398151915201905f90565b600d54811015612a8057600d5f525f8051602061494d83398151915201905f90565b8054821015612a80575f5260205f2001905f90565b600d54600160401b81101561083b576001810180600d55811015612a8057600d5f525f8051602061494d8339815191520155565b600b54600160401b81101561083b576001810180600b55811015612a8057600b5f525f8051602061496d8339815191520155565b90815491600160401b83101561083b57826136669160016108a9950181556135c6565b90919082549060031b91821b915f19901b1916179055565b919091600d9081548015613729575b50613696614185565b509290918154926136a5613b9d565b9481613714575b50156136f157505f1982018281116106d15781541115612a80575f527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb4018390559190565b613705926001600160d01b0316915061439f565b5050613710836135db565b9190565b65ffffffffffff83811691161490505f6136ac565b600160401b81101561083b5760018101808455811015612a80575f908382525f8051602061494d83398151915201555f61368d565b919091600b9081548015613805575b506137766141f0565b50929091815492613785613c16565b94816137f0575b50156137d157505f1982018281116106d15781541115612a80575f527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db8018390559190565b6137e5926001600160d01b0316915061449f565b50506137108361360f565b65ffffffffffff83811691161490505f61378c565b600160401b81101561083b5760018101808455811015612a80575f908382525f8051602061496d83398151915201555f61376d565b909291926001820190815480156138c8575b50846138578461423a565b5094909284549361386783613c8a565b96816138b3575b5015613890575050505f1981019081116106d1576136668591613710936135c6565b6137109492936138ac926001600160d01b039091169190614549565b5050613643565b65ffffffffffff83811691161490505f61386e565b600160401b81101561083b578060016138e492018455836135c6565b8154905f199060031b1b191690555f61384c565b51906108a9826107fc565b908161016091031261048a5761391761087c565b9061392181612ad7565b825261392f60208201612ad7565b6020830152613940604082016138f8565b604083015261395160608201612ab7565b606083015261396260808201612ab7565b608083015260a081015160a083015261397d60c08201612ad7565b60c083015261398e60e08201612ad7565b60e08301526101006139a1818301612ad7565b908301526101206139b3818301612ad7565b908301526139c5610140809201612ad7565b9082015290565b5f8051602061492d833981519152546001600160a01b031633036139ec57565b60405163118cdaa760e01b8152336004820152602490fd5b9080821015613a11575090565b905090565b8115612915570490565b9091828202915f1984820993838086109503948086039514613aa55784831115613a9357829109815f038216809204600280826003021880830282030280830282030280830282030280830282030280830282030280920290030293600183805f03040190848311900302920304170290565b60405163227bc15360e01b8152600490fd5b5050906109179250613a16565b60405163a9059cbb60e01b60208201526001600160a01b03909216602483015260448083019390935291815260808101916001600160401b0383118284101761083b576108a9926040526140b0565b90613b0a61291a565b821015613b8b575f82815260096020908152604080832033845290915290205460ff16613b7957613b3b3383612b97565b918215613b67575f9081526009602090815260408083203384529091529020805460ff19166001179055565b6040516366c0bcbf60e11b8152600490fd5b604051630c8d9eab60e31b8152600490fd5b60405163d5b25b6360e01b8152600490fd5b600c5480613bdd57505f5b6001600160d01b03811615613bd857600d54811015612a8057600d5f525f8051602061494d833981519152015490565b505f90565b805f198101116106d157600c5f527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c6015460301c613ba8565b600a5480613c5157505f5b6001600160d01b03811615613bd857600b54811015612a8057600b5f525f8051602061496d833981519152015490565b805f198101116106d157600a5f527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a7015460301c613c21565b805480613cb957505f5b6001600160d01b03811615613239576001613caf92016135c6565b90549060031b1c90565b5f199080828101116106d157825f5260205f2001015460301c613c94565b9190600181018091116106d157600182018092116106d15761091792613a20565b600a54905f829160058411613d66575b613d129350614755565b80613d3557505f5b6001600160d01b03811615613bd857613caf61091791613582565b613d5a613d44613d61926123df565b600a5f525f8051602061490d8339815191520190565b5460301c90565b613d1a565b9192613d718161461c565b81039081116106d157613d1293600a5f5265ffffffffffff80835f8051602061490d833981519152015416908516105f14613dad575091613d08565b929150613db99061240d565b90613d08565b600c54905f829160058411613e26575b613dd993506147be565b80613dfc57505f5b6001600160d01b03811615613bd857613caf610917916135a4565b613d5a613e0b613e21926123df565b600c5f525f805160206148ed8339815191520190565b613de1565b9192613e318161461c565b81039081116106d157613dd993600c5f5265ffffffffffff80835f805160206148ed833981519152015416908516105f14613e6d575091613dcf565b929150613e799061240d565b90613dcf565b908154905f829160058411613ee2575b613e9a935084614827565b80613ec257505f905b6001600160d01b0382161561323957610917916001613caf92016135c6565b613d5a613ed1613edc926123df565b835f5260205f200190565b90613ea3565b9192613eed8161461c565b81039081116106d157613e9a93855f5265ffffffffffff808360205f20015416908516105f14613f1e575091613e8f565b929150613f2a9061240d565b90613e8f565b60405190613f3d82610840565b5f6020838281520152565b613f50613f30565b50613f59613f30565b50600a54811015612a8057613f8090600a5f525f8051602061490d83398151915201614161565b65ffffffffffff81511690602060018060d01b0391015116600b54811015612a8057600b5f525f8051602061496d833981519152015460405191613fc383610840565b8252602082015290565b613fd5613f30565b50613fde613f30565b50600c54811015612a805761400590600c5f525f805160206148ed83398151915201614161565b65ffffffffffff81511690602060018060d01b0391015116600d54811015612a8057600d5f525f8051602061494d833981519152015460405191613fc383610840565b9061407161406b6140929261405b613f30565b50614064613f30565b50846135c6565b50614161565b91600165ffffffffffff845116936020828060d01b039101511691016135c6565b905490604051926140a284610840565b835260031b1c602082015290565b5f806140d89260018060a01b03169360208151910182865af16140d1612af7565b9083614889565b8051908115159182614106575b50506140ee5750565b60249060405190635274afe760e01b82526004820152fd5b6141199250602080918301019101612ac2565b155f806140e5565b9190600181018091116106d157600182018092116106d157614144828285613a20565b92821561291557096141535790565b600181018091116106d15790565b9060405161416e81610840565b915465ffffffffffff8116835260301c6020830152565b600c548061419657505f905f905f90565b805f198101116106d1577fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c66141cf91600c5f5201614161565b9065ffffffffffff82511691602060018060d01b0391015116906001929190565b600a548061420157505f905f905f90565b805f198101116106d1577fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a76141cf91600a5f5201614161565b80548061424b5750505f905f905f90565b5f199080828101116106d1576141cf925f5260205f200101614161565b60ff5f805160206149cd8339815191525460401c161561428457565b604051631afcd79f60e31b8152600490fd5b600c5490600160401b82101561083b576001820180600c55821015612a8057600c5f52805160209091015160301b65ffffffffffff191665ffffffffffff91909116175f805160206148ed83398151915290910155565b600a5490600160401b82101561083b576001820180600a55821015612a8057600a5f52805160209091015160301b65ffffffffffff191665ffffffffffff91909116175f8051602061490d83398151915290910155565b8054600160401b81101561083b57614361916001820181556135c6565b61438c57815160209092015160301b65ffffffffffff191665ffffffffffff92909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b600c54919291908115614476576143c06143bb613e0b846123df565b614161565b805165ffffffffffff83811694911684106144645785602093613710956143f0612ead865165ffffffffffff1690565b0361442c5750614405613e0b61441e936123df565b9065ffffffffffff82549181199060301b169116179055565b01516001600160d01b031690565b905061445f915061444c61443e61089c565b65ffffffffffff9092168252565b6001600160d01b03871681850152614296565b61441e565b604051632520601d60e01b8152600490fd5b61449a915061448661443e61089c565b6001600160d01b0384166020820152614296565b5f9190565b600a54919291908115614525576144bb6143bb613d44846123df565b805165ffffffffffff83811694911684106144645785602093613710956144eb612ead865165ffffffffffff1690565b036145005750614405613d4461441e936123df565b905061445f915061451261443e61089c565b6001600160d01b038716818501526142ed565b61449a915061453561443e61089c565b6001600160d01b03841660208201526142ed565b8054929392919082156145f8576145656143bb613ed1856123df565b90614576825165ffffffffffff1690565b65ffffffffffff84811691168110614464576137109460209488926145a4612ead875165ffffffffffff1690565b036145c5575061441e926145ba614405926123df565b905f5260205f200190565b91505061445f916145e56145d761089c565b65ffffffffffff9093168352565b6001600160d01b03881682860152614344565b61449a92506146086145d761089c565b6001600160d01b0385166020830152614344565b8015613bd857806146ee6146e76146dd6146d36146c96146bf6146b56146ab60016109179a5f908b60801c80614749575b508060401c8061473c575b508060201c8061472f575b508060101c80614722575b508060081c80614715575b508060041c80614708575b508060021c806146fb575b50821c6146f4575b811c1b6146a4818b613a16565b0160011c90565b6146a4818a613a16565b6146a48189613a16565b6146a48188613a16565b6146a48187613a16565b6146a48186613a16565b6146a48185613a16565b8092613a16565b90613a04565b8101614697565b600291509101905f61468f565b600491509101905f614684565b600891509101905f614679565b601091509101905f61466e565b602091509101905f614663565b604091509101905f614658565b9150506080905f61464d565b905b82811061476357505090565b9091808216906001818418811c83018093116106d157600a5f5265ffffffffffff80845f8051602061490d833981519152015416908616105f146147ab575050915b90614757565b9093925081018091116106d157906147a5565b905b8281106147cc57505090565b9091808216906001818418811c83018093116106d157600c5f5265ffffffffffff80845f805160206148ed833981519152015416908616105f14614814575050915b906147c0565b9093925081018091116106d1579061480e565b91905b8382106148375750505090565b909192808316906001818518811c83018093116106d157855f5265ffffffffffff808460205f20015416908516105f14614876575050925b919061482a565b9094935081018091116106d1579161486f565b906148b0575080511561489e57805190602001fd5b604051630a12f52160e11b8152600490fd5b815115806148e3575b6148c1575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b156148b956fedf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7c65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a89016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300d7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db902dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212201a50e827895a2cd73f911caab81ce70f82197386d81e8f679668f87cbe90c41164736f6c63430008190033","sourceMap":"981:14960:95:-:0;;;;;;;;;;;;;-1:-1:-1;;981:14960:95;;;;;-1:-1:-1;;;;;981:14960:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;3173:36:96;;;3219:32;;8837:64:25;981:14960:95;;;;;;;;;7896:76:25;;981:14960:95;;;;7985:34:25;7981:146;;-1:-1:-1;927:17:71;;;;;981:14960:95;;;;;;;3173:36:96;981:14960:95;;;;;;;;;;3219:32:96;981:14960:95;;;;;;;;;;927:17:71;981:14960:95;;;;;;;;;;;7981:146:25;-1:-1:-1;;;;;;981:14960:95;;;;;;;;;;;;;8087:29:25;;981:14960:95;;8087:29:25;7981:146;;;;;7896:76;981:14960:95;;-1:-1:-1;;;7938:23:25;;;;;981:14960:95;-1:-1:-1;981:14960:95;;;;;;-1:-1:-1;981:14960:95;;;;;-1:-1:-1;981:14960:95;;;;-1:-1:-1;;;;;981:14960:95;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a7146104345780631415519b1461042f5780631b66c9e11461042a5780631e9a695014610425578063248a9ca31461042057806327810b6e1461041b578063281f5752146104165780632abe3048146104115780632d73c69c1461040c5780632dd31000146104075780632f2ff15d1461040257806336568abe146103fd578063392e53cd146103f85780634105a7dd146103f357806346361671146103ee57806347e7ef24146103e957806348d3b775146103e45780634ff0876a146103df57806350861adc146103da57806350f22068146103d55780635346e34f146103d057806354fd4d50146103cb57806357ec83cc146103c657806359f769a9146103c15780635cc07076146103bc57806361a8c8c4146103b75780636da3e06d146103b25780636ec1e3f8146103ad578063715018a6146103a85780637278e31c146103a357806373790ab31461039e5780637667180814610399578063794b15b7146103945780637953b33b1461038f5780637c04c80a1461038a578063810da75d1461038557806383cd9cc31461038057806387df07881461037b5780638b0e9f3f146103765780638da5cb5b1461037157806391d148541461036c5780639d66201b146103675780639f86fd8514610362578063a1b122021461035d578063a217fddf14610358578063a21a1df914610353578063a28614661461034e578063a3b5417214610349578063a5d0322314610344578063aabc24961461033f578063aad3ec961461033a578063afba70ad14610335578063b134427114610330578063bd49c35f1461032b578063bdc8144b14610326578063bfefcd7b14610321578063c31e8dd71461031c578063ce9b793014610317578063d547741f14610312578063d8dfeb451461030d578063db38871514610308578063ecf7085814610303578063efb559d6146102fe578063f2fde38b146102f9578063f3fef3a3146102f45763f5e7ee0f146102ef575f80fd5b6123a1565b6122fb565b6122ce565b61217f565b612162565b612128565b6120fd565b6120b1565b612089565b61201f565b612005565b611f27565b611f0d565b611ee5565b611ebb565b611dfa565b611c43565b611bfd565b611bb0565b611abd565b611a83565b611a69565b611a45565b61199b565b611961565b611903565b6118cf565b61186d565b611829565b611670565b611657565b6115f1565b6115ca565b61158a565b611570565b61152f565b61125b565b6111f4565b6111cf565b61118b565b611138565b61110e565b6110e7565b610faf565b610f7d565b610ee8565b610ecf565b610e72565b610e52565b610e31565b610b73565b610b4b565b610ab0565b610a6b565b610a20565b6109d2565b61098e565b61091a565b61072b565b61065d565b610635565b6105fc565b610513565b6104c8565b61048e565b3461048a57602036600319011261048a5760043563ffffffff60e01b811680910361048a57602090637965db0b60e01b8114908115610479575b506040519015158152f35b6301ffc9a760e01b1490505f61046e565b5f80fd5b3461048a575f36600319011261048a5760206040517fc6aaadd7371d5e8f9ed6849dd66a66573a3ba37167d03f4352c9ba5693678fac8152f35b3461048a575f36600319011261048a5760206040517f9c56d972d63cbb4195b3c1484691dfc220fa96a4c47e7b6613bd82a022029e068152f35b6001600160a01b0381160361048a57565b3461048a57604036600319011261048a5760043561053081610502565b6024359061053c612bf5565b6001600160a01b038116156105eb57335f908152600e6020526040902061056790613c8a565b613c8a565b82116105d957610587610578613b9d565b610580613c16565b9084613cd7565b9182156105c4578261059892612c24565b906105af60015f805160206149ad83398151915255565b604080519182526020820192909252f35b0390f35b60405160016245ddc760e11b03198152600490fd5b604051632418411f60e11b8152600490fd5b6040516208978560e71b8152600490fd5b3461048a57602036600319011261048a576004355f525f8051602061498d8339815191526020526020600160405f200154604051908152f35b3461048a575f36600319011261048a576001546040516001600160a01b039091168152602090f35b3461048a575f36600319011261048a5761067561291a565b80156106d65760015465ffffffffffff8160a01c16915f1981019081116106d1576106a39160d01c906123fa565b81018091116106d1576106b86105c091612d9e565b60405165ffffffffffff90911681529081906020820190565b6123cb565b604051639fa56a5b60e01b8152600490fd5b600435906001600160401b038216820361048a57565b9181601f8401121561048a578235916001600160401b03831161048a576020838186019501011161048a57565b3461048a57604036600319011261048a576107446106e8565b6001600160401b0360243581811161048a576107649036906004016106fe565b505061076e612bf5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036107ea575f805160206149cd833981519152549060ff8260401c169283156107da575b5050506107c8575f80fd5b60405163f92ee8a960e01b8152600490fd5b81169116101590505f80806107bd565b604051631966391b60e11b8152600490fd5b65ffffffffffff81160361048a57565b634e487b7160e01b5f52604160045260245ffd5b606081019081106001600160401b0382111761083b57604052565b61080c565b604081019081106001600160401b0382111761083b57604052565b90601f801991011681019081106001600160401b0382111761083b57604052565b6040519061016082018281106001600160401b0382111761083b57604052565b604051906108a982610840565b565b6001600160401b03811161083b57601f01601f191660200190565b9291926108d2826108ab565b916108e0604051938461085b565b82948184528183011161048a578281602093845f960137010152565b9080601f8301121561048a57816020610917933591016108c6565b90565b3461048a57606036600319011261048a5760043561093781610502565b60243590610944826107fc565b604435906001600160401b03821161048a5760209261096a6109869336906004016108fc565b6001600160a01b039092165f908152600e855260409020612f8b565b604051908152f35b3461048a575f36600319011261048a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461048a57604036600319011261048a57610a1e6024356004356109f582610502565b805f525f8051602061498d833981519152602052610a19600160405f200154613162565b613462565b005b3461048a57604036600319011261048a57602435610a3d81610502565b336001600160a01b03821603610a5957610a1e90600435613498565b60405163334bd91960e11b8152600490fd5b3461048a575f36600319011261048a5760ff60025460a01c1680610a97575b6020906040519015158152f35b5060035460a01c60ff16610a8a565b8015150361048a57565b3461048a57602036600319011261048a57600435610acd81610aa6565b610ad5612bf5565b610add613057565b5f54901515908160ff8216151514610b395760ff191660ff8216175f556040519081527f3e12b7b36c75ac9609a3f58609b331210428e1a85909132638955ba0301eec3390602090a160015f805160206149ad83398151915255005b60405163a741a04560e01b8152600490fd5b3461048a575f36600319011261048a57602065ffffffffffff60015460a01c16604051908152f35b3461048a5760408060031936011261048a576004803591610b9383610502565b610b9b612bf5565b6001600160a01b0391838316908115610e23575f5460ff811680610e0a575b610dfb5783516370a0823160e01b808252308483019081529096602093909160109190911c82169084908490819083010381845afa928315610dd3575f93610dd8575b50610c0f90602435903090339061352a565b5f5486519788523085890190815290979184918391908290819060200103918b60101c165afa908115610dd357610c4e935f92610da6575b50506123ed565b938415610d975760081c60ff1680610d82575b610d745750906105c091610d12610c76613b9d565b95610cbf610c82613c16565b610caa610c908a838b613cd7565b99610ca48a610c9e42612d9e565b9261241b565b9061367e565b5050610cb989610c9e42612d9e565b9061375e565b50506001600160a01b0381165f908152600e6020526040902090610d0c88610d07610562610cec42612d9e565b6001600160a01b039095165f908152600e6020526040902090565b61241b565b9161383a565b505081518481526020810186905233907fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d790604090a3610d5e60015f805160206149ad83398151915255565b5191825260208201929092529081906040820190565b8251632484557960e01b8152fd5b50610d8f84610d07613b9d565b815410610c61565b50825163070f6eed60e11b8152fd5b610dc59250803d10610dcc575b610dbd818361085b565b810190612449565b5f80610c47565b503d610db3565b612458565b610c0f919350610df490853d8711610dcc57610dbd818361085b565b9290610bfd565b5082516304f63b8560e01b8152fd5b50335f9081526005602052604090205460ff1615610bba565b8251630d534ce360e11b8152fd5b3461048a575f36600319011261048a57602060ff5f54166040519015158152f35b3461048a575f36600319011261048a57602060015460d01c604051908152f35b3461048a575f36600319011261048a57602060ff60025460a01c166040519015158152f35b90604060031983011261048a57600435610eb0816107fc565b91602435906001600160401b03821161048a57610917916004016108fc565b3461048a576020610986610ee236610e97565b90612e01565b3461048a57602036600319011261048a57600435610f0581610aa6565b610f0d612bf5565b610f156130b4565b5f54901515908160ff8260081c16151514610b395761ff001916600882901b61ff0016175f556040519081527ffa7a25a0b611d4ba3c0ea990e90dc23d484a5dd7a1be4733fef2946ba74530c690602090a1610a1e60015f805160206149ad83398151915255565b3461048a575f36600319011261048a5760206001600160401b035f805160206149cd8339815191525416604051908152f35b3461048a57606036600319011261048a57610fc86106e8565b602435610fd481610502565b6001600160401b039160443583811161048a57610ff59036906004016106fe565b5f805160206149cd8339815191529491855494838616806110d65760ff8760401c169081156110c9575b506107c8577fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2966110c49661108c958716906001600160401b0319161790556110875f805160206149cd833981519152600160401b68ff000000000000000019825416179055565b612463565b5f805160206149cd833981519152805468ff0000000000000000191690556040516001600160401b0390911681529081906020820190565b0390a1005b905084861611155f61101f565b60405162dc149f60e41b8152600490fd5b3461048a57602036600319011261048a57602061098660043561110981610502565b612883565b3461048a57602036600319011261048a576004355f526006602052602060405f2054604051908152f35b3461048a575f36600319011261048a5760015465ffffffffffff61116e818360a01c169261116461291a565b9060d01c906123fa565b82018092116106d157611182602092612d9e565b60405191168152f35b3461048a575f36600319011261048a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461048a575f36600319011261048a57602060ff60035460a01c166040519015158152f35b3461048a575f36600319011261048a5761120c6139cc565b5f8051602061492d83398151915280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461048a57604036600319011261048a5760043560243561127b816107fc565b611283612bf5565b6003546112a0906001600160a01b03165b6001600160a01b031690565b330361151d576112ae61291a565b906112b88161294e565b908215158061150c575b8015611503575b6114f1576105c0937ff9d090c096f71cd1659861a9ce5b6f384bceb4e2fa4e4a19edf6489a9b8d56c7926112fb613b9d565b946113166113088261240d565b5f52600660205260405f2090565b549082810361140a575061132a818761241b565b6113348185613a04565b9687806113c3575b50505050505b8361138f575b6040805191825265ffffffffffff929092166020820152908101839052606090a161137f60015f805160206149ad83398151915255565b6040519081529081906020820190565b5f546113be9085906113ac9060101c6001600160a01b0316611294565b6001546001600160a01b031690613ab2565b611348565b6113ff93610c4783610ca46113e96113e2611308986113f99888613a20565b80966123ed565b946113f342612d9e565b926123ed565b9261240d565b555f8080808761133c565b915061141e825f52600660205260405f2090565b549061142e81610d07848a61241b565b906114398286613a04565b978861144a575b5050505050611342565b6114bf93836114729361147f8c61147a6114686114b0998884613a20565b9788958584613a20565b9485926123ed565b6123ed565b938484106114ca575b610c4790610ca461149e9596976113f342612d9e565b6114aa6113088761240d565b556123ed565b915f52600660205260405f2090565b555f80808080611440565b916114e6610c47916114e08661149e97986123ed565b9061241b565b859450929050611488565b604051635e18d2a560e01b8152600490fd5b508282116112c9565b50611516836123df565b82106112c2565b60405163dabc4ad960e01b8152600490fd5b3461048a575f36600319011261048a5760015465ffffffffffff808260a01c169161155861291a565b600181018091116106d15761116e9160d01c906123fa565b3461048a575f36600319011261048a57602061098661291a565b3461048a57602036600319011261048a576004356115a781610502565b60018060a01b03165f526005602052602060ff60405f2054166040519015158152f35b3461048a57602036600319011261048a5760206109866004356115ec816107fc565b61294e565b3461048a57604036600319011261048a5760043561160e81610502565b6024356001600160401b0380821161048a573660238301121561048a57816004013590811161048a573660248260051b8401011161048a576105c092602461137f930190612989565b3461048a57602061098661166a36610e97565b90612ed6565b3461048a5760208060031936011261048a57600480359061169082610502565b611698612bf5565b60025460a01c60ff1661181a576040516302910f8b60e31b81526001600160a01b03838116838301908152909491908290829081906020010381887f0000000000000000000000000000000000000000000000000000000000000000165afa908115610dd3575f916117ed575b50156117dd5760405163fbfa77cf60e01b8152838516949082818581895afa928315610dd3575f936117ae575b50503091160361179f5750600280546001600160a01b03929092166001600160a81b031990921691909117600160a01b1790557fdb2160616f776a37b24808115554e79439bf26cccbbd4438190cc6d28e80ecd15f80a2610a1e60015f805160206149ad83398151915255565b60405163b9f0f17160e01b8152fd5b6117ce929350803d106117d6575b6117c6818361085b565b810190612ae2565b905f80611732565b503d6117bc565b506040516324e5af8d60e21b8152fd5b61180d9150823d8411611813575b611805818361085b565b810190612ac2565b5f611705565b503d6117fb565b604051631380833b60e01b8152fd5b3461048a575f36600319011261048a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461048a575f36600319011261048a5761188561291a565b61188d613b9d565b90805f52600660205260405f205482018092116106d157600181018091116106d1575f52600660205260405f205481018091116106d157602090604051908152f35b3461048a575f36600319011261048a575f8051602061492d833981519152546040516001600160a01b039091168152602090f35b3461048a57604036600319011261048a57602060ff61195560243561192781610502565b6004355f525f8051602061498d833981519152845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b3461048a57602036600319011261048a5760043561197e81610502565b60018060a01b03165f52600e602052602061098660405f20613c8a565b3461048a57604036600319011261048a576004356119b881610502565b6024356001600160401b03811161048a575f916119da839236906004016106fe565b90816040519283928337810184815203915af4611a3d60806119fa612af7565b9260206040519485921515828401526040808401528051918291826060860152018484015e5f838284010152601f8019910116810103606081018452018261085b565b805190602001fd5b3461048a575f36600319011261048a57602060ff5f5460081c166040519015158152f35b3461048a575f36600319011261048a5760206040515f8152f35b3461048a575f36600319011261048a5760206040517f4a634bc14d77baf979756509ef4298c6f6318af357828612545267ee2eb792338152f35b3461048a57604036600319011261048a57600435611ada81610502565b602435611ae681610aa6565b611aee612bf5565b611af661310b565b6001600160a01b038216918215611b9e575f8381526005602052604090205460ff16151582151514610b39576001600160a01b03165f9081526005602052604090207ff991b1ecfb5115cbb36a2b2e2240c058406d2acc2fcc6e9e2dc99d845ff70a6291611b8591611b73908260ff801983541691151516179055565b60405190151581529081906020820190565b0390a2610a1e60015f805160206149ad83398151915255565b604051630da30f6560e31b8152600490fd5b3461048a57604036600319011261048a576020611bf4602435611bd281610502565b6004355f526008835260405f209060018060a01b03165f5260205260405f2090565b54604051908152f35b3461048a57604036600319011261048a57602060ff611955602435611c2181610502565b6004355f526009845260405f209060018060a01b03165f5260205260405f2090565b3461048a5760208060031936011261048a576004803590611c6382610502565b611c6b612bf5565b60035460a01c60ff16611deb576001600160a01b03828116939084611cd9575b6003805460ff60a01b1916600160a01b179055847fe7e4c932e03abddfe20f83af42c33627e816115c7ec2b168441f65dc14bfc3ba5f80a2610a1e60015f805160206149ad83398151915255565b6040516302910f8b60e31b81526001600160a01b0385168482019081528390829081906020010381857f0000000000000000000000000000000000000000000000000000000000000000165afa908115610dd3575f91611dce575b5015611dbd5760405163fbfa77cf60e01b815282818581895afa928315610dd3575f93611d9e575b505030911603611d8f5750600380546001600160a01b0319166001600160a01b039092169190911790555f808080611c8b565b604051633f3e089160e21b8152fd5b611db5929350803d106117d6576117c6818361085b565b905f80611d5c565b60405163dabc4ad960e01b81528390fd5b611de59150833d851161181357611805818361085b565b5f611d34565b60405163703fe2e560e01b8152fd5b3461048a57604036600319011261048a57600435611e1781610502565b60243590611e23612bf5565b6001600160a01b0391818316908115611ea957611e546105c094611e4683613b01565b9485915f5460101c16613ab2565b604080519182526020820184905233917f865ca08d59f5cb456e85cd2f7ef63664ea4f73327414e9d8152c4158b0e946459190a360015f805160206149ad833981519152556040519081529081906020820190565b604051634e46966960e11b8152600490fd5b3461048a57602036600319011261048a576004355f526007602052602060405f2054604051908152f35b3461048a575f36600319011261048a576003546040516001600160a01b039091168152602090f35b3461048a575f36600319011261048a576020610986613b9d565b3461048a57602036600319011261048a57600435611f43612bf5565b335f9081527f2d4ccbfe9f7672a6f2537c1e5bce6adacb73706879154bbab6ce096012d6721660205260409020547f4a634bc14d77baf979756509ef4298c6f6318af357828612545267ee2eb792339060ff1615611fe757508060045414610b39576020817f854df3eb95564502c8bc871ebdd15310ee26270f955f6c6bd8cea68e75045bc092600455604051908152a160015f805160206149ad83398151915255005b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b3461048a575f36600319011261048a576020610986613c16565b3461048a57602036600319011261048a5760043561203c81610502565b61204461291a565b61204d82612883565b916120588183612b97565b83018093116106d157600182018092116106d15761207591612b97565b81018091116106d157602090604051908152f35b3461048a575f36600319011261048a576002546040516001600160a01b039091168152602090f35b3461048a57604036600319011261048a57610a1e6024356004356120d482610502565b805f525f8051602061498d8339815191526020526120f8600160405f200154613162565b613498565b3461048a575f36600319011261048a575f5460405160109190911c6001600160a01b03168152602090f35b3461048a575f36600319011261048a5760206040517fbae4ee3de6c709ff9a002e774c5b78cb381560b219213c88ae0f1e207c03c0238152f35b3461048a575f36600319011261048a576020600454604051908152f35b3461048a57606036600319011261048a5760043561219c81610502565b602435906121a9826107fc565b6001600160401b039160443583811161048a576121ca9036906004016106fe565b909260409384516121da81610820565b60608152606060208201526060868201529280612239575b6105c08661222a878761222461220b8984845191612428565b928561221b602085015183612ed6565b93015190612e01565b91613cd7565b90519081529081906020820190565b810193925060208185031261048a5780359086821161048a57019260608482031261048a5784519561226a87610820565b843581811161048a578261227f9187016108fc565b8752602085013581811161048a57826122999187016108fc565b60208801528585013590811161048a576105c0966122c26122249361220b9361222a98016108fc565b878201529394506121f2565b3461048a57602036600319011261048a57610a1e6004356122ee81610502565b6122f66139cc565b612b26565b3461048a57604036600319011261048a5760043561231881610502565b602435612323612bf5565b6001600160a01b038216156105eb57801561238f57612352612343613c16565b61234b613b9d565b9083614121565b335f908152600e6020526040902090929061236c90613c8a565b831161237d57610598918391612c24565b6040516321727a3760e11b8152600490fd5b604051636c6c627d60e11b8152600490fd5b3461048a57604036600319011261048a5760206109866024356123c381610502565b600435612b97565b634e487b7160e01b5f52601160045260245ffd5b5f198101919082116106d157565b919082039182116106d157565b818102929181159184041417156106d157565b90600182018092116106d157565b919082018092116106d157565b6001600160a01b03165f908152600e60205260409020610917929190612f8b565b9081602091031261048a575190565b6040513d5f823e3d90fd5b916124b5916124a691612474614268565b61247c614268565b60015f805160206149ad833981519152556001600160a01b0394808616612869575b5036916108c6565b60208082518301019101613903565b805182166001600160a01b03161561285757604080820165ffffffffffff6124e3825165ffffffffffff1690565b16156128465760c083018051909290612504906001600160a01b0316611294565b156126f7575b5091612643610140926125e26125bd6126a196612558612530875160018060a01b031690565b5f805462010000600160b01b03191660109290921b62010000600160b01b0316919091179055565b6020860151600180546001600160a01b0319166001600160a01b039092169190911790556125b161258842612d9e565b6001805465ffffffffffff60a01b191660a09290921b65ffffffffffff60a01b16919091179055565b5165ffffffffffff1690565b600180546001600160d01b031660d09290921b6001600160d01b031916919091179055565b6126026125f26060850151151590565b60ff80195f541691151516175f55565b6126296126126080850151151590565b61ff005f5491151560081b169061ff001916175f55565b61263660a0840151600455565b516001600160a01b031690565b8481166126e7575b5060e08101516001600160a01b03168481166126d7575b506101008101516001600160a01b03168481166126c7575b506101208101516001600160a01b03168481166126b7575b5001516001600160a01b031690565b9081166126ab5750565b6126b4906133f3565b50565b6126c090613384565b505f612692565b6126d090613315565b505f61267a565b6126e09061323f565b505f612662565b6126f09061318e565b505f61264b565b60e084015161270e906001600160a01b0316611294565b156127e3575b61012084015161272c906001600160a01b0316611294565b61250a576080840151156127995760a0840151158061277a575b61276a575091612643610140926125e26125bd6126a1965b9496505050925061250a565b5163183c854560e21b8152600490fd5b50610140840151612793906001600160a01b0316611294565b15612746565b60a0840151158015906127c3575b61276a575091612643610140926125e26125bd6126a19661275e565b506101408401516127dc906001600160a01b0316611294565b15156127a7565b60608401511561281957610100840151612805906001600160a01b0316611294565b612714575163183c854560e21b8152600490fd5b610100840151612831906001600160a01b0316611294565b15612714575163183c854560e21b8152600490fd5b81516368f5f8f160e11b8152600490fd5b6040516368f7a67560e11b8152600490fd5b61287d90612875614268565b6122f6614268565b5f61249e565b6001600160a01b03165f908152600e602052604090206128a290613c8a565b6128aa613b9d565b6128b2613c16565b90600181018091116106d157600182018092116106d15761091792613a20565b65ffffffffffff91821690821603919082116106d157565b634e487b7160e01b5f52601260045260245ffd5b9065ffffffffffff80911691821561291557160490565b6128ea565b61292342612d9e565b61294a60015461294065ffffffffffff93848360a01c16906128d2565b9060d01c906128fe565b1690565b6001549065ffffffffffff91828160a01c169182848216106129775761294a92612940916128d2565b60405163b7d0949760e01b8152600490fd5b90612992612bf5565b5f926001600160a01b038316928315611ea9578115612a4a575f5b828110612a2857505f547f326b6aff1cd2fb1c8234de4f9dcfb9047c5c36eb9ef2eb34af5121e969a75d2792869290916129fd9184916129f89060101c6001600160a01b0316611294565b613ab2565b612a0e604051928392339684612a85565b0390a3906108a960015f805160206149ad83398151915255565b94612a436001916114e0612a3d898789612a70565b35613b01565b95016129ad565b60405163edf3b93360e01b8152600490fd5b634e487b7160e01b5f52603260045260245ffd5b9190811015612a805760051b0190565b612a5c565b604080825281018390529392916001600160fb1b03811161048a5760209160609160051b809183880137850101930152565b51906108a982610aa6565b9081602091031261048a575161091781610aa6565b51906108a982610502565b9081602091031261048a575161091781610502565b3d15612b21573d90612b08826108ab565b91612b16604051938461085b565b82523d5f602084013e565b606090565b6001600160a01b03908116908115612b7f575f8051602061492d83398151915280546001600160a01b031981168417909155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b604051631e4fbdf760e01b81525f6004820152602490fd5b90612bbd90825f52600860205260405f209060018060a01b03165f5260205260405f2090565b54905f52600660205260405f2054600760205260405f205490600181018091116106d157600182018092116106d15761091792613a20565b5f805160206149ad8339815191526002815414612c125760029055565b604051633ee5aeb560e01b8152600490fd5b335f908152600e6020526040902093929190612c3f42612d9e565b335f908152600e60205260409020612c5690613c8a565b918483039283116106d157612c917febff2602b3f468259e1e99f613fed6691f3a6526effe6ef3e768ba7ae7a36c4f938593612d1c9961383a565b5050612cab612c9f42612d9e565b610cb98761147a613c16565b5050612cc5612cb942612d9e565b610ca48461147a613b9d565b5050612d6a81612d55612cde612cd961291a565b61240d565b612d34612cf3825f52600660205260405f2090565b54612d06835f52600760205260405f2090565b54612d1282828b613cd7565b9d8e998a9361241b565b612d2e855f52600660205260405f2090565b5561241b565b612d46825f52600760205260405f2090565b555f52600860205260405f2090565b9060018060a01b03165f5260205260405f2090565b612d7583825461241b565b9055604080519485526020850195909552938301526001600160a01b03909216913391606090a3565b65ffffffffffff90818111612db1571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b9081602091031261048a575163ffffffff8116810361048a5790565b90600163ffffffff809316019182116106d157565b90805115612ecc5780602080612e1c93518301019101612dd0565b612e2581613f48565b90612e36825165ffffffffffff1690565b9065ffffffffffff8085169216828114612ec05782119182612e6c575b5050612e63575061091790613cf8565b60209150015190565b909150612e7a600a546123df565b63ffffffff831614918215612e93575b50505f80612e53565b612eb89192506125b1612ea8612ead92612dec565b613f48565b65ffffffffffff1690565b115f80612e8a565b50505060209150015190565b5061091790613cf8565b90805115612f815780602080612ef193518301019101612dd0565b612efa81613fcd565b90612f0b825165ffffffffffff1690565b9065ffffffffffff8085169216828114612ec05782119182612f38575b5050612e63575061091790613dbf565b909150612f46600c546123df565b63ffffffff831614918215612f5f575b50505f80612f28565b612f799192506125b1612f74612ead92612dec565b613fcd565b115f80612f56565b5061091790613dbf565b9180511561304d5780602080612fa693518301019101612dd0565b91612fb18382614048565b92612fc2845165ffffffffffff1690565b9065ffffffffffff80851692168281146130415782119182612ff8575b5050612fef576109179250613e7f565b50506020015190565b90915061300583546123df565b63ffffffff83161491821561301e575b50505f80612fdf565b6130399192506125b1613033612ead92612dec565b85614048565b115f80613015565b50505050506020015190565b5061091791613e7f565b335f9081527f03b26b53c87faa1058f30bb5d2fee64f717719a0d9b7e4f4df027aa5e9b6ed69602052604090207fbae4ee3de6c709ff9a002e774c5b78cb381560b219213c88ae0f1e207c03c0239060ff905b541615611fe75750565b335f9081527fe41986b390c4ce6791b87f7423b5fab7a81a0e6d89660b6264f697d008b2243a602052604090207fc6aaadd7371d5e8f9ed6849dd66a66573a3ba37167d03f4352c9ba5693678fac9060ff906130aa565b335f9081527f0287ab4cb376ea253d7b2ce0c2cbf458f7deae9458470d74afdfbbee484e9540602052604090207f9c56d972d63cbb4195b3c1484691dfc220fa96a4c47e7b6613bd82a022029e069060ff906130aa565b5f8181525f8051602061498d83398151915260209081526040808320338452909152902060ff906130aa565b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260409020545f8051602061498d8339815191529060ff16613239575f808052602091825260408082206001600160a01b038516835290925220805460ff1916600117905533906001600160a01b03165f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b50505f90565b6001600160a01b0381165f9081527f03b26b53c87faa1058f30bb5d2fee64f717719a0d9b7e4f4df027aa5e9b6ed69602052604090207fbae4ee3de6c709ff9a002e774c5b78cb381560b219213c88ae0f1e207c03c023905f8051602061498d8339815191529060ff905b541661330e575f828152602091825260408082206001600160a01b038616835290925220805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b5050505f90565b6001600160a01b0381165f9081527f0287ab4cb376ea253d7b2ce0c2cbf458f7deae9458470d74afdfbbee484e9540602052604090207f9c56d972d63cbb4195b3c1484691dfc220fa96a4c47e7b6613bd82a022029e06905f8051602061498d8339815191529060ff906132aa565b6001600160a01b0381165f9081527fe41986b390c4ce6791b87f7423b5fab7a81a0e6d89660b6264f697d008b2243a602052604090207fc6aaadd7371d5e8f9ed6849dd66a66573a3ba37167d03f4352c9ba5693678fac905f8051602061498d8339815191529060ff906132aa565b6001600160a01b0381165f9081527f2d4ccbfe9f7672a6f2537c1e5bce6adacb73706879154bbab6ce096012d67216602052604090207f4a634bc14d77baf979756509ef4298c6f6318af357828612545267ee2eb79233905f8051602061498d8339815191529060ff906132aa565b5f8181525f8051602061498d833981519152602081815260408084206001600160a01b038716855290915290912060ff906132aa565b5f8181525f8051602061498d833981519152602081815260408084206001600160a01b03871685529091529091205460ff161561330e575f828152602091825260408082206001600160a01b038616835290925220805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b6040516323b872dd60e01b60208201526001600160a01b03928316602482015292909116604483015260648083019390935291815260a08101918183106001600160401b0384111761083b576108a9926040526140b0565b600b54811015612a8057600b5f525f8051602061496d83398151915201905f90565b600d54811015612a8057600d5f525f8051602061494d83398151915201905f90565b8054821015612a80575f5260205f2001905f90565b600d54600160401b81101561083b576001810180600d55811015612a8057600d5f525f8051602061494d8339815191520155565b600b54600160401b81101561083b576001810180600b55811015612a8057600b5f525f8051602061496d8339815191520155565b90815491600160401b83101561083b57826136669160016108a9950181556135c6565b90919082549060031b91821b915f19901b1916179055565b919091600d9081548015613729575b50613696614185565b509290918154926136a5613b9d565b9481613714575b50156136f157505f1982018281116106d15781541115612a80575f527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb4018390559190565b613705926001600160d01b0316915061439f565b5050613710836135db565b9190565b65ffffffffffff83811691161490505f6136ac565b600160401b81101561083b5760018101808455811015612a80575f908382525f8051602061494d83398151915201555f61368d565b919091600b9081548015613805575b506137766141f0565b50929091815492613785613c16565b94816137f0575b50156137d157505f1982018281116106d15781541115612a80575f527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db8018390559190565b6137e5926001600160d01b0316915061449f565b50506137108361360f565b65ffffffffffff83811691161490505f61378c565b600160401b81101561083b5760018101808455811015612a80575f908382525f8051602061496d83398151915201555f61376d565b909291926001820190815480156138c8575b50846138578461423a565b5094909284549361386783613c8a565b96816138b3575b5015613890575050505f1981019081116106d1576136668591613710936135c6565b6137109492936138ac926001600160d01b039091169190614549565b5050613643565b65ffffffffffff83811691161490505f61386e565b600160401b81101561083b578060016138e492018455836135c6565b8154905f199060031b1b191690555f61384c565b51906108a9826107fc565b908161016091031261048a5761391761087c565b9061392181612ad7565b825261392f60208201612ad7565b6020830152613940604082016138f8565b604083015261395160608201612ab7565b606083015261396260808201612ab7565b608083015260a081015160a083015261397d60c08201612ad7565b60c083015261398e60e08201612ad7565b60e08301526101006139a1818301612ad7565b908301526101206139b3818301612ad7565b908301526139c5610140809201612ad7565b9082015290565b5f8051602061492d833981519152546001600160a01b031633036139ec57565b60405163118cdaa760e01b8152336004820152602490fd5b9080821015613a11575090565b905090565b8115612915570490565b9091828202915f1984820993838086109503948086039514613aa55784831115613a9357829109815f038216809204600280826003021880830282030280830282030280830282030280830282030280830282030280920290030293600183805f03040190848311900302920304170290565b60405163227bc15360e01b8152600490fd5b5050906109179250613a16565b60405163a9059cbb60e01b60208201526001600160a01b03909216602483015260448083019390935291815260808101916001600160401b0383118284101761083b576108a9926040526140b0565b90613b0a61291a565b821015613b8b575f82815260096020908152604080832033845290915290205460ff16613b7957613b3b3383612b97565b918215613b67575f9081526009602090815260408083203384529091529020805460ff19166001179055565b6040516366c0bcbf60e11b8152600490fd5b604051630c8d9eab60e31b8152600490fd5b60405163d5b25b6360e01b8152600490fd5b600c5480613bdd57505f5b6001600160d01b03811615613bd857600d54811015612a8057600d5f525f8051602061494d833981519152015490565b505f90565b805f198101116106d157600c5f527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c6015460301c613ba8565b600a5480613c5157505f5b6001600160d01b03811615613bd857600b54811015612a8057600b5f525f8051602061496d833981519152015490565b805f198101116106d157600a5f527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a7015460301c613c21565b805480613cb957505f5b6001600160d01b03811615613239576001613caf92016135c6565b90549060031b1c90565b5f199080828101116106d157825f5260205f2001015460301c613c94565b9190600181018091116106d157600182018092116106d15761091792613a20565b600a54905f829160058411613d66575b613d129350614755565b80613d3557505f5b6001600160d01b03811615613bd857613caf61091791613582565b613d5a613d44613d61926123df565b600a5f525f8051602061490d8339815191520190565b5460301c90565b613d1a565b9192613d718161461c565b81039081116106d157613d1293600a5f5265ffffffffffff80835f8051602061490d833981519152015416908516105f14613dad575091613d08565b929150613db99061240d565b90613d08565b600c54905f829160058411613e26575b613dd993506147be565b80613dfc57505f5b6001600160d01b03811615613bd857613caf610917916135a4565b613d5a613e0b613e21926123df565b600c5f525f805160206148ed8339815191520190565b613de1565b9192613e318161461c565b81039081116106d157613dd993600c5f5265ffffffffffff80835f805160206148ed833981519152015416908516105f14613e6d575091613dcf565b929150613e799061240d565b90613dcf565b908154905f829160058411613ee2575b613e9a935084614827565b80613ec257505f905b6001600160d01b0382161561323957610917916001613caf92016135c6565b613d5a613ed1613edc926123df565b835f5260205f200190565b90613ea3565b9192613eed8161461c565b81039081116106d157613e9a93855f5265ffffffffffff808360205f20015416908516105f14613f1e575091613e8f565b929150613f2a9061240d565b90613e8f565b60405190613f3d82610840565b5f6020838281520152565b613f50613f30565b50613f59613f30565b50600a54811015612a8057613f8090600a5f525f8051602061490d83398151915201614161565b65ffffffffffff81511690602060018060d01b0391015116600b54811015612a8057600b5f525f8051602061496d833981519152015460405191613fc383610840565b8252602082015290565b613fd5613f30565b50613fde613f30565b50600c54811015612a805761400590600c5f525f805160206148ed83398151915201614161565b65ffffffffffff81511690602060018060d01b0391015116600d54811015612a8057600d5f525f8051602061494d833981519152015460405191613fc383610840565b9061407161406b6140929261405b613f30565b50614064613f30565b50846135c6565b50614161565b91600165ffffffffffff845116936020828060d01b039101511691016135c6565b905490604051926140a284610840565b835260031b1c602082015290565b5f806140d89260018060a01b03169360208151910182865af16140d1612af7565b9083614889565b8051908115159182614106575b50506140ee5750565b60249060405190635274afe760e01b82526004820152fd5b6141199250602080918301019101612ac2565b155f806140e5565b9190600181018091116106d157600182018092116106d157614144828285613a20565b92821561291557096141535790565b600181018091116106d15790565b9060405161416e81610840565b915465ffffffffffff8116835260301c6020830152565b600c548061419657505f905f905f90565b805f198101116106d1577fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c66141cf91600c5f5201614161565b9065ffffffffffff82511691602060018060d01b0391015116906001929190565b600a548061420157505f905f905f90565b805f198101116106d1577fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a76141cf91600a5f5201614161565b80548061424b5750505f905f905f90565b5f199080828101116106d1576141cf925f5260205f200101614161565b60ff5f805160206149cd8339815191525460401c161561428457565b604051631afcd79f60e31b8152600490fd5b600c5490600160401b82101561083b576001820180600c55821015612a8057600c5f52805160209091015160301b65ffffffffffff191665ffffffffffff91909116175f805160206148ed83398151915290910155565b600a5490600160401b82101561083b576001820180600a55821015612a8057600a5f52805160209091015160301b65ffffffffffff191665ffffffffffff91909116175f8051602061490d83398151915290910155565b8054600160401b81101561083b57614361916001820181556135c6565b61438c57815160209092015160301b65ffffffffffff191665ffffffffffff92909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b600c54919291908115614476576143c06143bb613e0b846123df565b614161565b805165ffffffffffff83811694911684106144645785602093613710956143f0612ead865165ffffffffffff1690565b0361442c5750614405613e0b61441e936123df565b9065ffffffffffff82549181199060301b169116179055565b01516001600160d01b031690565b905061445f915061444c61443e61089c565b65ffffffffffff9092168252565b6001600160d01b03871681850152614296565b61441e565b604051632520601d60e01b8152600490fd5b61449a915061448661443e61089c565b6001600160d01b0384166020820152614296565b5f9190565b600a54919291908115614525576144bb6143bb613d44846123df565b805165ffffffffffff83811694911684106144645785602093613710956144eb612ead865165ffffffffffff1690565b036145005750614405613d4461441e936123df565b905061445f915061451261443e61089c565b6001600160d01b038716818501526142ed565b61449a915061453561443e61089c565b6001600160d01b03841660208201526142ed565b8054929392919082156145f8576145656143bb613ed1856123df565b90614576825165ffffffffffff1690565b65ffffffffffff84811691168110614464576137109460209488926145a4612ead875165ffffffffffff1690565b036145c5575061441e926145ba614405926123df565b905f5260205f200190565b91505061445f916145e56145d761089c565b65ffffffffffff9093168352565b6001600160d01b03881682860152614344565b61449a92506146086145d761089c565b6001600160d01b0385166020830152614344565b8015613bd857806146ee6146e76146dd6146d36146c96146bf6146b56146ab60016109179a5f908b60801c80614749575b508060401c8061473c575b508060201c8061472f575b508060101c80614722575b508060081c80614715575b508060041c80614708575b508060021c806146fb575b50821c6146f4575b811c1b6146a4818b613a16565b0160011c90565b6146a4818a613a16565b6146a48189613a16565b6146a48188613a16565b6146a48187613a16565b6146a48186613a16565b6146a48185613a16565b8092613a16565b90613a04565b8101614697565b600291509101905f61468f565b600491509101905f614684565b600891509101905f614679565b601091509101905f61466e565b602091509101905f614663565b604091509101905f614658565b9150506080905f61464d565b905b82811061476357505090565b9091808216906001818418811c83018093116106d157600a5f5265ffffffffffff80845f8051602061490d833981519152015416908616105f146147ab575050915b90614757565b9093925081018091116106d157906147a5565b905b8281106147cc57505090565b9091808216906001818418811c83018093116106d157600c5f5265ffffffffffff80845f805160206148ed833981519152015416908616105f14614814575050915b906147c0565b9093925081018091116106d1579061480e565b91905b8382106148375750505090565b909192808316906001818518811c83018093116106d157855f5265ffffffffffff808460205f20015416908516105f14614876575050925b919061482a565b9094935081018091116106d1579161486f565b906148b0575080511561489e57805190602001fd5b604051630a12f52160e11b8152600490fd5b815115806148e3575b6148c1575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b156148b956fedf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7c65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a89016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300d7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db902dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212201a50e827895a2cd73f911caab81ce70f82197386d81e8f679668f87cbe90c41164736f6c63430008190033","sourceMap":"981:14960:95:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;-1:-1:-1;;981:14960:95;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3551:47:23;;;:87;;;;981:14960:95;;;;;;;;;;3551:87:23;-1:-1:-1;;;1133:40:29;;-1:-1:-1;3551:87:23;;;981:14960:95;-1:-1:-1;981:14960:95;;;;;;;;-1:-1:-1;;981:14960:95;;;;;;;966:38:96;981:14960:95;;;;;;;;;-1:-1:-1;;981:14960:95;;;;;;;821:37:96;981:14960:95;;;;-1:-1:-1;;;;;981:14960:95;;;;;:::o;:::-;;;;;;-1:-1:-1;;981:14960:95;;;;;;;;;:::i;:::-;;;3217:103:28;;;:::i;:::-;-1:-1:-1;;;;;981:14960:95;;5525:21;5521:75;;5634:10;981:14960;;;;5606:15:96;981:14960:95;;;;;5606:33:96;;;:::i;:24::-;:33;:::i;:::-;5610:35:95;;5606:88;;1057:70:87;5173:21:96;;:::i;:::-;4803:22;;:::i;:::-;1057:70:87;;;:::i;:::-;5801:20:95;;;5797:82;;5904:43;;;;:::i;:::-;3282:1:28;;1805;-1:-1:-1;;;;;;;;;;;981:14960:95;3716:283:28;3282:1;981:14960:95;;;;;;;;;;;;;;;;;;5797:82;981:14960;;-1:-1:-1;;;;;;5844:24:95;;981:14960;;5844:24;5606:88;981:14960;;-1:-1:-1;;;5668:15:95;;981:14960;;5668:15;5521:75;981:14960;;-1:-1:-1;;;5569:16:95;;981:14960;;5569:16;981:14960;;;;;;-1:-1:-1;;981:14960:95;;;;;;-1:-1:-1;981:14960:95;-1:-1:-1;;;;;;;;;;;981:14960:95;;;4919:24:23;981:14960:95;-1:-1:-1;981:14960:95;4919:24:23;981:14960:95;;;;;;;;;;;;;-1:-1:-1;;981:14960:95;;;;;;;;-1:-1:-1;;;;;981:14960:95;;;;;;;;;;;;;;-1:-1:-1;;981:14960:95;;;;4084:14:96;;:::i;:::-;4112:10;;4108:65;;4190:17;981:14960:95;;;;;;;;;;;;;;;;4210:27:96;981:14960:95;;;4210:27:96;;:::i;:::-;981:14960:95;;;;;;;4189:60:96;981:14960:95;4189:60:96;;:::i;:::-;981:14960:95;;;;;;;;;;;;;;;;;;:::i;4108:65:96:-;981:14960:95;;-1:-1:-1;;;4145:17:96;;981:14960:95;;4145:17:96;981:14960:95;;;;-1:-1:-1;;;;;981:14960:95;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;981:14960:95;;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;981:14960:95;;;;;;:::i;:::-;-1:-1:-1;;;;;981:14960:95;;;;;;;;;;;;;;:::i;:::-;3217:103:28;;;;:::i;:::-;1673:7:71;-1:-1:-1;;;;;981:14960:95;1659:10:71;:21;1655:71;;-1:-1:-1;;;;;;;;;;;981:14960:95;;;;;;;6431:44:25;;;;;981:14960:95;6427:105:25;;;;;-1:-1:-1;15924:8:95;;6427:105:25;981:14960:95;;-1:-1:-1;;;6498:23:25;;981:14960:95;;6498:23:25;6431:44;981:14960:95;;;;6450:25:25;;;-1:-1:-1;6431:44:25;;;;;1655:71:71;981:14960:95;;-1:-1:-1;;;1703:12:71;;981:14960:95;;1703:12:71;981:14960:95;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;981:14960:95;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;-1:-1:-1;;;;;981:14960:95;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;981:14960:95;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;981:14960:95;;;;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;:::-;-1:-1:-1;;;;;981:14960:95;;;;;;-1:-1:-1;;981:14960:95;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;981:14960:95;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;-1:-1:-1;;981:14960:95;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;981:14960:95;;;;;;;5383:59:96;981:14960:95;;;;;;:::i;:::-;-1:-1:-1;;;;;981:14960:95;;;-1:-1:-1;981:14960:95;;;5383:15:96;981:14960:95;;;;;5383:59:96;:::i;:::-;981:14960:95;;;;;;;;;;;;-1:-1:-1;;981:14960:95;;;;;;655:32:71;-1:-1:-1;;;;;981:14960:95;;;;;;;;;;;;-1:-1:-1;;981:14960:95;;;;5350:25:23;981:14960:95;;;;;;;:::i;:::-;;-1:-1:-1;981:14960:95;-1:-1:-1;;;;;;;;;;;981:14960:95;;3202:4:23;4919:24;981:14960:95;-1:-1:-1;981:14960:95;4919:24:23;981:14960:95;3202:4:23;:::i;:::-;5350:25;:::i;:::-;981:14960:95;;;;;;;-1:-1:-1;;981:14960:95;;;;;;;;;:::i;:::-;966:10:27;-1:-1:-1;;;;;981:14960:95;;6441:34:23;6437:102;;6549:37;981:14960:95;;;6549:37:23;:::i;6437:102::-;981:14960:95;;-1:-1:-1;;;6498:30:23;;981:14960:95;;6498:30:23;981:14960:95;;;;;;-1:-1:-1;;981:14960:95;;;;;1524:22;981:14960;;;;1524:46;;;981:14960;;;;;;;;;;;1524:46;-1:-1:-1;1550:20:95;981:14960;;;;;1524:46;;981:14960;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;981:14960:95;;;;;;;;;:::i;:::-;3217:103:28;;:::i;:::-;3202:4:23;;:::i;:::-;-1:-1:-1;981:14960:95;;;;;;;;;;;9542:26;9538:76;;-1:-1:-1;;981:14960:95;;;;;-1:-1:-1;981:14960:95;;;;;;9665:27;;981:14960;;9665:27;1805:1:28;-1:-1:-1;;;;;;;;;;;981:14960:95;;9538:76;981:14960;;-1:-1:-1;;;9591:12:95;;981:14960;;9591:12;981:14960;;;;;;-1:-1:-1;;981:14960:95;;;;;;1718:31:96;981:14960:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3217:103:28;;:::i;:::-;-1:-1:-1;;;;;981:14960:95;;;;;3474:24;;3470:81;;-1:-1:-1;981:14960:95;;;;3565:55;;;981:14960;3561:118;;981:14960;;-1:-1:-1;;;3713:43:95;;;3750:4;3713:43;;;981:14960;;;;;;;;;;;;;;;;;;;;;;;;;3713:43;;;;;;;;;;-1:-1:-1;3713:43:95;;;981:14960;;3829:6;981:14960;;;3750:4;;3802:10;;3829:6;;:::i;:::-;-1:-1:-1;981:14960:95;;;3864:43;;;3750:4;3864:43;;;981:14960;;;;;;;;;;3864:43;981:14960;;;;;;3864:43;981:14960;;;;;3864:43;;;;;;;:59;:43;-1:-1:-1;3864:43:95;;;981:14960;3864:59;;;:::i;:::-;3938:20;;;3934:79;;981:14960;;;;;4027:64;;981:14960;4023:123;;5173:21:96;;981:14960:95;5173:21:96;4502:93:95;5173:21:96;;:::i;:::-;4803:22;4426:66:95;4803:22:96;;:::i;:::-;4349:67:95;390:70:87;;;;;:::i;:::-;837:15:62;4385:30:95;837:15:62;819:34;837:15;819:34;:::i;:::-;4385:30:95;;:::i;:::-;4349:67;;:::i;:::-;837:15:62;;4463:28:95;837:15:62;819:34;837:15;819:34;:::i;4463:28:95:-;4426:66;;:::i;:::-;-1:-1:-1;;;;;;;981:14960:95;;;;;;5606:15:96;981:14960:95;;;;;837:15:62;4553:41:95;837:15:62;5606:33:96;:24;819:34:62;837:15;819:34;:::i;:::-;-1:-1:-1;;;;;981:14960:95;;;;;;;5606:15:96;981:14960:95;;;;;;;5606:33:96;4553:41:95;:::i;:::-;4502:93;;:::i;:::-;-1:-1:-1;;981:14960:95;;;;;;;;;;;3802:10;;4611:62;;981:14960;;4611:62;3282:1:28;1805;-1:-1:-1;;;;;;;;;;;981:14960:95;3716:283:28;3282:1;981:14960:95;;;;;;;;;;;;;;;;;;;4023:123;981:14960;;-1:-1:-1;;;4114:21:95;;;4027:64;5173:21:96;4045:31:95;5173:21:96;;;:::i;4045:31:95:-;981:14960;;-1:-1:-1;4027:64:95;;3934:79;-1:-1:-1;981:14960:95;;-1:-1:-1;;;3981:21:95;;;3864:43;;;;;;-1:-1:-1;3864:43:95;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;:::i;3713:::-;3829:6;3713:43;;;;;;;;;;;;;;;:::i;:::-;;;;;3561:118;-1:-1:-1;981:14960:95;;-1:-1:-1;;;3643:25:95;;;3565:55;-1:-1:-1;3609:10:95;981:14960;;;;3586:22;981:14960;;;;;;;;3585:35;3565:55;;3470:81;981:14960;;-1:-1:-1;;;3521:19:95;;;981:14960;;;;;;-1:-1:-1;;981:14960:95;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;981:14960:95;;;;;1805:27:96;981:14960:95;;;;;;;;;;;;;;;-1:-1:-1;;981:14960:95;;;;;;1968:34:96;981:14960:95;;;;;;;;;;;;;;;-1:-1:-1;;981:14960:95;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;981:14960:95;;;;;;;;;:::i;:::-;;;;;4622:48:96;981:14960:95;;;:::i;:::-;4622:48:96;;:::i;981:14960:95:-;;;;;;-1:-1:-1;;981:14960:95;;;;;;;;;:::i;:::-;3217:103:28;;:::i;:::-;3202:4:23;;:::i;:::-;-1:-1:-1;981:14960:95;;;;;;;;;;;;;10370:24;10366:74;;-1:-1:-1;;981:14960:95;;;;;;;;-1:-1:-1;981:14960:95;;;;;;10489:25;;981:14960;;10489:25;3282:1:28;1805;-1:-1:-1;;;;;;;;;;;981:14960:95;3716:283:28;981:14960:95;;;;;;-1:-1:-1;;981:14960:95;;;;;-1:-1:-1;;;;;;;;;;;;;;;;981:14960:95;;;;;;;;;;;;;;-1:-1:-1;;981:14960:95;;;;;;:::i;:::-;;;;;;:::i;:::-;-1:-1:-1;;;;;981:14960:95;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;8837:64:25;;981:14960:95;;;;;;734:29:71;730:87;;981:14960:95;;;;;6431:44:25;;;;;981:14960:95;6427:105:25;;;6656:20;981:14960:95;6656:20:25;981:14960:95;1167:340:71;981:14960:95;;;;-1:-1:-1;;;;;981:14960:95;;;;;6575:22:25;-1:-1:-1;;;;;;;;;;;;;;981:14960:95;;;;;;;;;6575:22:25;1167:340:71;:::i;:::-;-1:-1:-1;;;;;;;;;;;981:14960:95;;-1:-1:-1;;981:14960:95;;;;;-1:-1:-1;;;;;981:14960:95;;;;;;;;;;;;;6656:20:25;;;;981:14960:95;6431:44:25;981:14960:95;;;;;-1:-1:-1;6450:25:25;6431:44;;;730:87:71;981:14960:95;;-1:-1:-1;;;786:20:71;;981:14960:95;;786:20:71;981:14960:95;;;;;;-1:-1:-1;;981:14960:95;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;-1:-1:-1;;981:14960:95;;;;;;-1:-1:-1;981:14960:95;2431:59:96;981:14960:95;;;;-1:-1:-1;981:14960:95;;;;;;;;;;;;;;-1:-1:-1;;981:14960:95;;;;3875:17:96;981:14960:95;;3895:30:96;981:14960:95;;;;;3895:14:96;;;:::i;:::-;981:14960:95;;;3895:30:96;;:::i;:::-;981:14960:95;;;;;;;3874:63:96;981:14960:95;3874:63:96;;:::i;:::-;981:14960:95;;;;;;;;;;;;;-1:-1:-1;;981:14960:95;;;;;;1200:42:96;-1:-1:-1;;;;;981:14960:95;;;;;;;;;;;;-1:-1:-1;;981:14960:95;;;;;;2136:32:96;981:14960:95;;;;;;;;;;;;;;;;;;-1:-1:-1;;981:14960:95;;;;2303:62:24;;:::i;:::-;-1:-1:-1;;;;;;;;;;;981:14960:95;;-1:-1:-1;;;;;;981:14960:95;;;;;;;-1:-1:-1;;;;;981:14960:95;3975:40:24;981:14960:95;;3975:40:24;981:14960:95;;;;;;;-1:-1:-1;;981:14960:95;;;;;;;;;;;:::i;:::-;3217:103:28;;:::i;:::-;7131:7:95;981:14960;7117:21;;-1:-1:-1;;;;;981:14960:95;;-1:-1:-1;;;;;981:14960:95;;;7117:21;:10;:21;7113:71;;7218:14;;:::i;:::-;7265:25;;;;:::i;:::-;7305:17;;;;:53;;;981:14960;7304:87;;;;981:14960;7300:146;;981:14960;5173:21:96;9310:48:95;5173:21:96;;;:::i;:::-;7540:17:95;7528:30;7540:17;;;:::i;:::-;981:14960;;7528:11;981:14960;;;;;;;7528:30;981:14960;;7572:29;;;;;7642:30;;;;;:::i;:::-;7702:32;;;;:::i;:::-;7752:17;;;7748:384;;7568:1615;;;;;;;9197:17;9193:102;;7568:1615;981:14960;;;;;;;;;;;;;;;;;;;;;;;9310:48;3282:1:28;1805;-1:-1:-1;;;;;;;;;;;981:14960:95;3716:283:28;3282:1;981:14960:95;;;;;;;;;;;;;9193:102;-1:-1:-1;981:14960:95;9270:13;;981:14960;;9230:18;;981:14960;;-1:-1:-1;;;;;981:14960:95;;;9230:18;7556:1;981:14960;-1:-1:-1;;;;;981:14960:95;9270:13;;:::i;:::-;9193:102;;7748:384;8045:29;7813:50;7962:65;7813:50;7998:28;7914:29;7813:50;8057:16;7813:50;8077:40;7813:50;;;:::i;:::-;7914:29;;;:::i;:::-;837:15:62;819:34;837:15;819:34;:::i;:::-;7998:28:95;;:::i;8077:40::-;8057:16;;:::i;8045:29::-;981:14960;7748:384;;;;;;;7568:1615;8185:26;;;;981:14960;;7528:11;981:14960;;;;;;;8185:26;981:14960;8250:27;:45;:27;;;;;:::i;:45::-;8325:32;;;;;:::i;:::-;8375:17;;8371:802;;7568:1615;;;;;;;;8371:802;9096:26;8436:50;;8537:53;8436:50;8637:54;8436:50;8637:29;8436:50;9125:33;8436:50;;;;:::i;:::-;8537:53;;;;;;:::i;:::-;8637:29;;;;:::i;:::-;:54;:::i;:::-;8714:33;;;;8710:194;;8371:802;8922:65;837:15:62;8958:28:95;9038:40;837:15:62;;;819:34;837:15;819:34;:::i;9038:40:95:-;9005:30;9017:17;;;:::i;9005:30::-;981:14960;9125:33;:::i;:::-;9096:26;981:14960;;7528:11;981:14960;;;;;;;9096:26;981:14960;8371:802;;;;;;;8710:194;8797:33;8771:59;8922:65;8797:33;;;9038:40;8797:33;;;:::i;:::-;8771:59;;:::i;:::-;8852:33;;-1:-1:-1;8852:33:95;;-1:-1:-1;8710:194:95;;7300:146;981:14960;;-1:-1:-1;;;7414:21:95;;981:14960;;7414:21;7304:87;7363:28;;;;7304:87;;7305:53;7341:17;;;;:::i;:::-;7326:32;;7305:53;;7113:71;981:14960;;-1:-1:-1;;;7161:12:95;;981:14960;;7161:12;981:14960;;;;;;-1:-1:-1;;981:14960:95;;;;4384:17:96;981:14960:95;;;;;;;4405:14:96;;;:::i;:::-;4384:17;981:14960:95;;;;;;;4404:36:96;981:14960:95;;;4404:36:96;;:::i;981:14960:95:-;;;;;;-1:-1:-1;;981:14960:95;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;981:14960:95;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;981:14960:95;2307:68:96;981:14960:95;;;;;-1:-1:-1;981:14960:95;;;;;;;;;;;;;;;;;-1:-1:-1;;981:14960:95;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;-1:-1:-1;;981:14960:95;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;981:14960:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6491:14;981:14960;;6491:14;;:::i;981:14960::-;;;;;4994:47:96;981:14960:95;;;:::i;:::-;4994:47:96;;:::i;981:14960:95:-;;;;;;;;;;;;;;;;;;;;:::i;:::-;3217:103:28;;:::i;:::-;10932:22:95;981:14960;;;;;10928:89;;981:14960;;-1:-1:-1;;;11032:49:95;;-1:-1:-1;;;;;981:14960:95;;;11032:49;;;981:14960;;;;;;;;;;;;;;;11032:49;11042:17;;;981:14960;11032:49;;;;;;;-1:-1:-1;11032:49:95;;;981:14960;11031:50;;11027:102;;981:14960;;-1:-1:-1;;;11143:34:95;;981:14960;;;;;11143:34;981:14960;11143:34;981:14960;;11143:34;;;;;;;-1:-1:-1;11143:34:95;;;981:14960;11189:4;;;981:14960;;11143:51;11139:107;;-1:-1:-1;10932:22:95;981:14960;;-1:-1:-1;;;;;981:14960:95;;;;-1:-1:-1;;;;;;981:14960:95;;;;;;;-1:-1:-1;;;981:14960:95;;;11334:24;-1:-1:-1;;11334:24:95;3282:1:28;1805;-1:-1:-1;;;;;;;;;;;981:14960:95;3716:283:28;11139:107:95;981:14960;;-1:-1:-1;;;11217:18:95;;;11143:34;;;;;;;-1:-1:-1;11143:34:95;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;11027:102;-1:-1:-1;981:14960:95;;-1:-1:-1;;;11104:14:95;;;11032:49;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;10928:89;981:14960;;-1:-1:-1;;;10977:29:95;;;981:14960;;;;;;-1:-1:-1;;981:14960:95;;;;;;1298:40:96;-1:-1:-1;;;;;981:14960:95;;;;;;;;;;;;-1:-1:-1;;981:14960:95;;;;1703:14;;:::i;:::-;5173:21:96;;:::i;:::-;981:14960:95;;;;1750:11;981:14960;;;;;;;;;;;;;1791:1;981:14960;;;;;;;;;1750:11;981:14960;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;981:14960:95;;;;-1:-1:-1;;;;;;;;;;;981:14960:95;;;-1:-1:-1;;;;;981:14960:95;;;;;;;;;;;;;;-1:-1:-1;;981:14960:95;;;;;;3901:31:23;981:14960:95;;;;;:::i;:::-;;;-1:-1:-1;981:14960:95;-1:-1:-1;;;;;;;;;;;981:14960:95;;;-1:-1:-1;981:14960:95;;;;;;;;;;;;;;;;;3901:31:23;981:14960:95;;;;;;;;;;;;;;;;-1:-1:-1;;981:14960:95;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;981:14960:95;5606:15:96;981:14960:95;;;5606:33:96;981:14960:95;-1:-1:-1;981:14960:95;5606:33:96;:::i;981:14960:95:-;;;;;;-1:-1:-1;;981:14960:95;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;981:14960:95;;;;-1:-1:-1;981:14960:95;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;416:25:75;;;;477:31;981:14960:95;416:25:75;;:::i;:::-;981:14960:95;;;;;;;;;477:31:75;;;981:14960:95;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;981:14960:95;;;;;;;;;;;;;;477:31:75;981:14960:95;477:31:75;;;;;;;:::i;:::-;518:79;;;981:14960:95;518:79:75;;981:14960:95;;;;;;-1:-1:-1;;981:14960:95;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;981:14960:95;;;;;;;;;;;;;;;;;-1:-1:-1;;981:14960:95;;;;;;;1109:35:96;981:14960:95;;;;;;;;;-1:-1:-1;;981:14960:95;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;3217:103:28;;:::i;:::-;3202:4:23;;:::i;:::-;-1:-1:-1;;;;;981:14960:95;;;9907:21;;9903:75;;-1:-1:-1;981:14960:95;;;9992:22;981:14960;;;;;;;;;;;;;9992:41;9988:91;;-1:-1:-1;;;;;981:14960:95;;;;;3586:22;981:14960;;;;;10145:44;;;;10089:40;;:31;981:14960;;;;;;;;;;;;;;10089:40;981:14960;;;;;;;;;;;;;;;10145:44;;;;3282:1:28;1805;-1:-1:-1;;;;;;;;;;;981:14960:95;3716:283:28;9903:75:95;981:14960;;-1:-1:-1;;;9951:16:95;;981:14960;;9951:16;981:14960;;;;;;-1:-1:-1;;981:14960:95;;;;;2666:94:96;981:14960:95;;;;;:::i;:::-;;;-1:-1:-1;981:14960:95;2666:94:96;981:14960:95;;;-1:-1:-1;981:14960:95;;;;;;;;;;;;;;;;;2666:94:96;981:14960:95;;;;;;;;;;;;;-1:-1:-1;;981:14960:95;;;;;;2816:92:96;981:14960:95;;;;;:::i;:::-;;;-1:-1:-1;981:14960:95;2816:92:96;981:14960:95;;;-1:-1:-1;981:14960:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3217:103:28;;:::i;:::-;11459:20:95;981:14960;;;;;11455:85;;-1:-1:-1;;;;;981:14960:95;;;;;;11550:312;;981:14960;11459:20;981:14960;;-1:-1:-1;;;;981:14960:95;-1:-1:-1;;;981:14960:95;;;11872:27;11915:20;-1:-1:-1;11915:20:95;;3282:1:28;1805;-1:-1:-1;;;;;;;;;;;981:14960:95;3716:283:28;11550:312:95;981:14960;;-1:-1:-1;;;11597:45:95;;-1:-1:-1;;;;;981:14960:95;;11597:45;;;981:14960;;;11597:45;;981:14960;;;;;;11597:45;11607:15;;;981:14960;11597:45;;;;;;;-1:-1:-1;11597:45:95;;;11550:312;11596:46;;11592:104;;981:14960;;-1:-1:-1;;;11714:30:95;;;981:14960;11714:30;981:14960;11714:30;;;;;;;;-1:-1:-1;11714:30:95;;;11550:312;11756:4;;;981:14960;;11714:47;11710:109;;-1:-1:-1;11459:20:95;981:14960;;-1:-1:-1;;;;;;981:14960:95;-1:-1:-1;;;;;981:14960:95;;;;;;;;;11550:312;;;;;;11710:109;981:14960;;-1:-1:-1;;;11788:16:95;;;11714:30;;;;;;;-1:-1:-1;11714:30:95;;;;;;:::i;:::-;;;;;;11592:104;981:14960;;-1:-1:-1;;;11669:12:95;;981:14960;;11669:12;11597:45;;;;;;;;;;;;;;:::i;:::-;;;;11455:85;981:14960;;-1:-1:-1;;;11502:27:95;;;981:14960;;;;;;-1:-1:-1;;981:14960:95;;;;;;;;;:::i;:::-;;;3217:103:28;;;:::i;:::-;-1:-1:-1;;;;;981:14960:95;;;;;6112:23;;6108:79;;6273:6;981:14960;6206:13;;;;:::i;:::-;981:14960;;;-1:-1:-1;981:14960:95;;;;6273:6;:::i;:::-;981:14960;;;;;;;;;;;;6302:10;;6296:43;;981:14960;6296:43;1805:1:28;-1:-1:-1;;;;;;;;;;;981:14960:95;;;;;;;;;;;;;;6108:79;981:14960;;-1:-1:-1;;;6158:18:95;;981:14960;;6158:18;981:14960;;;;;;-1:-1:-1;;981:14960:95;;;;;;-1:-1:-1;981:14960:95;2546:64:96;981:14960:95;;;;-1:-1:-1;981:14960:95;;;;;;;;;;;;;;-1:-1:-1;;981:14960:95;;;;2058:22:96;981:14960:95;;;-1:-1:-1;;;;;981:14960:95;;;;;;;;;;;;;;-1:-1:-1;;981:14960:95;;;;;5173:21:96;;:::i;981:14960:95:-;;;;;;-1:-1:-1;;981:14960:95;;;;;;3217:103:28;;:::i;:::-;966:10:27;-1:-1:-1;981:14960:95;;;;;;;;;;1109:35:96;;981:14960:95;;4468:23:23;4464:108;;981:14960:95;;;;10692:21;10688:71;;981:14960;;10805:22;981:14960;;;;;;;;10805:22;1805:1:28;-1:-1:-1;;;;;;;;;;;981:14960:95;;4464:108:23;981:14960:95;;;;4514:47:23;;;;;;966:10:27;981:14960:95;4514:47:23;;981:14960:95;;;;;4514:47:23;981:14960:95;;;;;;-1:-1:-1;;981:14960:95;;;;;4803:22:96;;:::i;981:14960:95:-;;;;;;-1:-1:-1;;981:14960:95;;;;;;;;;:::i;:::-;3123:14;;:::i;:::-;3154:24;;;:::i;:::-;3181:29;;;;;:::i;:::-;981:14960;;;;;;;3235:1;981:14960;;;;;;;3213:33;;;:::i;:::-;981:14960;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;981:14960:95;;;;1888:24:96;981:14960:95;;;-1:-1:-1;;;;;981:14960:95;;;;;;;;;;;;;;-1:-1:-1;;981:14960:95;;;;5767:26:23;981:14960:95;;;;;;;:::i;:::-;;-1:-1:-1;981:14960:95;-1:-1:-1;;;;;;;;;;;981:14960:95;;3202:4:23;4919:24;981:14960:95;-1:-1:-1;981:14960:95;4919:24:23;981:14960:95;3202:4:23;:::i;:::-;5767:26;:::i;981:14960:95:-;;;;;;-1:-1:-1;;981:14960:95;;;;;;;;;;;;;-1:-1:-1;;;;;981:14960:95;;;;;;;;;;;;-1:-1:-1;;981:14960:95;;;;;;;675:39:96;981:14960:95;;;;;;;;;-1:-1:-1;;981:14960:95;;;;;;;;;;;;;;;;;;;-1:-1:-1;;981:14960:95;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;-1:-1:-1;;;;;981:14960:95;;;;;;;;;;;;;;;:::i;:::-;1972:48;;981:14960;;;;;;;:::i;:::-;;;;;;;;;;;;;;2034:16;;2030:111;;981:14960;;2233:39;1057:70:87;2233:39:95;;4622:48:96;2196:77:95;2233:39;;;;2196:77;;:::i;:::-;2312:36;;4994:47:96;981:14960:95;2312:36;;;4994:47:96;;:::i;:::-;2389:37:95;;;4622:48:96;;:::i;:::-;1057:70:87;;:::i;:::-;981:14960:95;;;;;;;;;;;;;2030:111;2089:41;;;;-1:-1:-1;981:14960:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;4622:48:96;981:14960:95;2196:77;981:14960;1057:70:87;981:14960:95;;;:::i;:::-;;;;;2030:111;;;;;981:14960;;;;;;-1:-1:-1;;981:14960:95;;;;2357:1:24;981:14960:95;;;;;:::i;:::-;2303:62:24;;:::i;:::-;2357:1;:::i;981:14960:95:-;;;;;;-1:-1:-1;;981:14960:95;;;;;;;;;:::i;:::-;;;3217:103:28;;:::i;:::-;-1:-1:-1;;;;;981:14960:95;;4890:21;4886:75;;4975:11;;4971:73;;845:69:87;4803:22:96;;:::i;:::-;5173:21;;:::i;:::-;845:69:87;;;:::i;:::-;5180:10:95;981:14960;;;;5606:15:96;981:14960:95;;;;;5180:10;;;5606:33:96;;;:::i;:::-;5150:41:95;;5146:96;;5267:40;;;;;:::i;5146:96::-;981:14960;;-1:-1:-1;;;5214:17:95;;981:14960;;5214:17;4971:73;981:14960;;-1:-1:-1;;;5009:24:95;;981:14960;;5009:24;981:14960;;;;;;-1:-1:-1;;981:14960:95;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;981:14960:95;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;7556:1;981:14960;;;;;;;:::o;:::-;;;;;;;;;;:::o;5256:193:96:-;-1:-1:-1;;;;;981:14960:95;-1:-1:-1;981:14960:95;;;5383:15:96;981:14960:95;;;;;5383:59:96;;5256:193;;5383:59;:::i;981:14960:95:-;;;;;;;;;;;:::o;:::-;;;;;;;;;;1167:340:71;;13510:30:95;1167:340:71;981:14960:95;1167:340:71;6893:76:25;;:::i;:::-;;;:::i;:::-;1805:1:28;-1:-1:-1;;;;;;;;;;;981:14960:95;-1:-1:-1;;;;;981:14960:95;;;;1376:73:71;;1167:340;981:14960:95;;;;:::i;:::-;13510:30;981:14960;;;13510:30;;;;;;:::i;:::-;981:14960;;;;-1:-1:-1;;;;;981:14960:95;13555:31;13551:88;;13653:20;;;;981:14960;;;;;;;;;;13653:25;13649:85;;13748:29;;;981:14960;;13748:29;;981:14960;13748:43;;-1:-1:-1;;;;;981:14960:95;;;13748:43;;13744:943;;1167:340:71;981:14960:95;;;15647:32;981:14960;14817:36;981:14960;;;14697:30;981:14960;;;;;;;;;;;;1398:1:71;981:14960:95;;-1:-1:-1;;;;;;981:14960:95;;;;;;-1:-1:-1;;;;;981:14960:95;;;;;;;;14697:30;13510;14747:13;;981:14960;;;;-1:-1:-1;;;;;;981:14960:95;-1:-1:-1;;;;;981:14960:95;;;;;;;;;14771:36;819:34:62;837:15;819:34;:::i;:::-;1805:1:28;981:14960:95;;-1:-1:-1;;;;981:14960:95;;;;;;-1:-1:-1;;;981:14960:95;;;;;;;;14771:36;981:14960;;;;;;1805:1:28;981:14960:95;;-1:-1:-1;;;;;981:14960:95;;;;;;-1:-1:-1;;;;;;981:14960:95;;;;;;;;14817:36;14864:42;981:14960;14883:23;;;981:14960;;;;;;;;;1398:1:71;981:14960:95;;;;;;;1398:1:71;981:14960:95;;14864:42;14917:38;981:14960;14934:21;;;981:14960;;;;;;;1398:1:71;981:14960:95;;;;;;;;;;;;1398:1:71;981:14960:95;;14917:38;14965:34;14980:19;;;981:14960;14965:34;981:14960;;14965:34;981:14960;-1:-1:-1;;;;;981:14960:95;;;;;;;15010:135;;1167:340:71;-1:-1:-1;15158:36:95;;;981:14960;-1:-1:-1;;;;;981:14960:95;;;;15154:157;;1167:340:71;-1:-1:-1;15324:35:95;;;981:14960;-1:-1:-1;;;;;981:14960:95;;;;15320:153;;1167:340:71;-1:-1:-1;15486:34:95;;;981:14960;-1:-1:-1;;;;;981:14960:95;;;;15482:152;;1167:340:71;-1:-1:-1;15647:32:95;981:14960;-1:-1:-1;;;;;981:14960:95;;;;;;;15643:145;;1167:340:71;:::o;15643:145:95:-;15709:68;;;:::i;:::-;;1167:340:71:o;15482:152:95:-;15550:73;;;:::i;:::-;;15482:152;;;15320:153;15389:73;;;:::i;:::-;;15320:153;;;15154:157;15224:76;;;:::i;:::-;;15154:157;;;15010:135;15073:61;;;:::i;:::-;;15010:135;;;13744:943;13811:36;;;981:14960;13811:50;;-1:-1:-1;;;;;981:14960:95;;;13811:50;;13807:405;;13744:943;14230:34;;;981:14960;14230:48;;-1:-1:-1;;;;;981:14960:95;;;14230:48;13744:943;14226:451;14302:21;;;981:14960;;14302:21;;14351:19;;;981:14960;14351:24;:74;;;14298:365;14347:150;;14298:365;;981:14960;15647:32;14298:365;14817:36;981:14960;;14298:365;;14226:451;;;;;;;13744:943;;14347:150;981:14960;-1:-1:-1;;;14460:14:95;;;;;14351:74;-1:-1:-1;14379:32:95;;;981:14960;14379:46;;-1:-1:-1;;;;;981:14960:95;;;14379:46;;14351:74;;14298:365;14525:19;;;981:14960;14525:24;;;:74;;;14298:365;14521:142;;14298:365;;981:14960;15647:32;14298:365;14817:36;981:14960;;14298:365;;;14525:74;-1:-1:-1;14553:32:95;;;981:14960;14553:46;;-1:-1:-1;;;;;981:14960:95;;;14553:46;;;14525:74;;13807:405;13885:23;;;981:14960;;13885:23;;13936:35;;;981:14960;13936:49;;-1:-1:-1;;;;;981:14960:95;;;13936:49;13807:405;13932:125;981:14960;-1:-1:-1;;;14020:14:95;;;;;13881:317;14085:35;;;981:14960;14085:49;;-1:-1:-1;;;;;981:14960:95;;;14085:49;14081:117;13807:405;14081:117;981:14960;-1:-1:-1;;;14165:14:95;;;;;13649:85;981:14960;;-1:-1:-1;;;13701:22:95;;;;;13551:88;981:14960;;-1:-1:-1;;;13609:19:95;;;;;1376:73:71;6961:1:25;6893:76;;;:::i;:::-;;;:::i;6961:1::-;1376:73:71;;;2492:191:95;-1:-1:-1;;;;;981:14960:95;-1:-1:-1;981:14960:95;;;5606:15:96;981:14960:95;;;;;5606:33:96;;;:::i;:::-;5173:21;;:::i;:::-;4803:22;;:::i;:::-;981:14960:95;1884:1:87;981:14960:95;;;;;;;1884:1:87;981:14960:95;;;;;;;8188:25:57;;;:::i;981:14960:95:-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;3612:132:96:-;819:34:62;837:15;819:34;:::i;:::-;3683:54:96;3703:17;981:14960:95;3684:36:96;981:14960:95;;;;;;;3684:36:96;;:::i;:::-;981:14960:95;;;3683:54:96;;:::i;:::-;981:14960:95;3612:132:96;:::o;3313:244::-;3418:17;981:14960:95;;;;;;;;;;;;;;3406:29:96;3402:85;;3503:47;3504:29;;;;:::i;3402:85::-;981:14960:95;;-1:-1:-1;;;3458:18:96;;;;;3217:103:28;;;;:::i;:::-;981:14960:95;;-1:-1:-1;;;;;981:14960:95;;;6521:23;;6517:79;;6650:11;;6646:70;;981:14960;6742:10;;;;;;-1:-1:-1;981:14960:95;;6887:49;;981:14960;;;;6864:6;;981:14960;;6821:18;;981:14960;;-1:-1:-1;;;;;981:14960:95;;;6821:18;6864:6;:::i;:::-;6887:49;981:14960;;6898:10;;;;6887:49;;;:::i;:::-;;;;3282:1:28;;1805;-1:-1:-1;;;;;;;;;;;981:14960:95;3716:283:28;6754:3:95;6790:9;6773:27;981:14960;6790:9;6783:17;6790:9;;;;;:::i;:::-;981:14960;6783:17;:::i;6773:27::-;6754:3;981:14960;6731:9;;6646:70;981:14960;;-1:-1:-1;;;6684:21:95;;;;;981:14960;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;981:14960:95;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;981:14960:95;;;;:::o;:::-;;;:::o;3405:215:24:-;-1:-1:-1;;;;;981:14960:95;;;;3489:22:24;;3485:91;;-1:-1:-1;;;;;;;;;;;981:14960:95;;-1:-1:-1;;;;;;981:14960:95;;;;;;;;3975:40:24;-1:-1:-1;;3975:40:24;3405:215::o;3485:91::-;981:14960:95;;-1:-1:-1;;;3534:31:24;;3509:1;3534:31;;;981:14960:95;;;3534:31:24;2731:227:95;;2871:34;2731:227;981:14960;-1:-1:-1;981:14960:95;2871:18;981:14960;;;-1:-1:-1;981:14960:95;;;;;;;;;;;;;;;;;2871:34;981:14960;;-1:-1:-1;981:14960:95;2907:11;981:14960;;;-1:-1:-1;981:14960:95;;2927:16;981:14960;;;-1:-1:-1;981:14960:95;;;1884:1:87;981:14960:95;;;;;;;1884:1:87;981:14960:95;;;;;;;8188:25:57;;;:::i;3326:384:28:-;-1:-1:-1;;;;;;;;;;;1847:1:28;981:14960:95;;3526:20:28;3522:88;;1847:1;981:14960:95;;3326:384:28:o;3522:88::-;981:14960:95;;-1:-1:-1;;;3569:30:28;;;;;11948:968:95;12135:10;981:14960;;;;5606:15:96;981:14960:95;;;;;;11948:968;;;819:34:62;837:15;819:34;:::i;:::-;12135:10:95;981:14960;;;;5606:15:96;981:14960:95;;;;;5606:33:96;;;:::i;:::-;981:14960:95;;;;;;;;;12119:93;12835:74;12119:93;;;12660:30;12119:93;;:::i;:::-;837:15:62;;12222:67:95;819:34:62;837:15;819:34;:::i;:::-;12259:29:95;4803:22:96;;;:::i;12222:67:95:-;837:15:62;;12299:68:95;819:34:62;837:15;819:34;:::i;:::-;12335:31:95;5173:21:96;;;:::i;12299:68:95:-;12394:14;;12769:34;12394:14;12769:25;12394:18;:14;;:::i;:::-;:18;:::i;:::-;12726:33;12445:18;;981:14960;;7528:11;981:14960;;;;;;;12445:18;981:14960;12502:23;;981:14960;;12502:16;981:14960;;;;;;;12502:23;981:14960;390:70:87;;;;;:::i;:::-;12660:30:95;;;;;;:::i;:::-;12639:18;;981:14960;;7528:11;981:14960;;;;;;;12639:18;981:14960;12726:33;:::i;:::-;12700:23;;981:14960;;12502:16;981:14960;;;;;;;12700:23;981:14960;;;12769:18;981:14960;;;;;;;12769:25;981:14960;;;;;;;;;;;;;;;;12769:34;:50;981:14960;;;12769:50;:::i;:::-;981:14960;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;981:14960:95;;;;12135:10;;981:14960;;12835:74;11948:968::o;14291:213:58:-;981:14960:95;14369:24:58;;;;14365:103;;981:14960:95;14291:213:58;:::o;14365:103::-;981:14960:95;;;;14416:41:58;;;;;;14447:2;14416:41;;;981:14960:95;;;;;14416:41:58;981:14960:95;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::o;7558:604:86:-;;981:14960:95;;7686:17:86;7682:83;;981:14960:95;7789:27:86;981:14960:95;7789:27:86;981:14960:95;;7789:27:86;;;;;;:::i;:::-;7860:14;;;:::i;:::-;981:14960:95;;;;;;;;;;;;;;;;7888:22:86;;;7884:77;;7975:21;-1:-1:-1;7975:84:86;;;;7558:604;7971:139;;;;8127:28;;;;:::i;7971:139::-;7789:27;8082:17;;;981:14960:95;8075:24:86;:::o;7975:84::-;981:14960:95;;;8009:16:86;4622:13:96;981:14960:95;8009:16:86;:::i;:::-;981:14960:95;;;8001:24:86;:57;;;;;7975:84;;;;;;;8001:57;8029:29;8038:8;;;8029:18;8038:8;8029:23;8038:8;;:::i;:::-;8029:18;:::i;:23::-;981:14960:95;;;;8029:29:86;;8001:57;;;;7884:77;7933:17;;;7789:27;7933:17;;;981:14960:95;7926:24:86;:::o;7682:83::-;7726:28;;;;:::i;7558:604::-;;981:14960:95;;7686:17:86;7682:83;;981:14960:95;7789:27:86;981:14960:95;7789:27:86;981:14960:95;;7789:27:86;;;;;;:::i;:::-;7860:14;;;:::i;:::-;981:14960:95;;;;;;;;;;;;;;;;7888:22:86;;;7884:77;;7975:21;-1:-1:-1;7975:84:86;;;;7558:604;7971:139;;;;8127:28;;;;:::i;7975:84::-;981:14960:95;;;8009:16:86;4994:12:96;981:14960:95;8009:16:86;:::i;:::-;981:14960:95;;;8001:24:86;:57;;;;;7975:84;;;;;;;8001:57;8029:29;8038:8;;;8029:18;8038:8;8029:23;8038:8;;:::i;:::-;8029:18;:::i;:29::-;;8001:57;;;;7682:83;7726:28;;;;:::i;7558:604::-;;981:14960:95;;7686:17:86;7682:83;;981:14960:95;7789:27:86;981:14960:95;7789:27:86;981:14960:95;;7789:27:86;;;;;;:::i;:::-;7860:14;;;;;:::i;:::-;981:14960:95;;;;;;;;;;;;;;;;7888:22:86;;;7884:77;;7975:21;-1:-1:-1;7975:84:86;;;;7558:604;7971:139;;;;8127:28;;;;:::i;7971:139::-;8082:17;;7789:27;8082:17;981:14960:95;8075:24:86;:::o;7975:84::-;981:14960:95;;;8009:16:86;981:14960:95;;8009:16:86;:::i;:::-;981:14960:95;;;8001:24:86;:57;;;;;7975:84;;;;;;;8001:57;8029:29;8038:8;;;8029:18;8038:8;8029:23;8038:8;;:::i;:::-;8029:18;;:::i;:29::-;;8001:57;;;;7884:77;7933:17;;;;;7789:27;7933:17;981:14960:95;7926:24:86;:::o;7682:83::-;7726:28;;;;:::i;4148:103:23:-;966:10:27;-1:-1:-1;981:14960:95;;;;;;;;;675:39:96;;981:14960:95;;3901:31:23;981:14960:95;;4468:23:23;4464:108;;4148:103;:::o;:::-;966:10:27;-1:-1:-1;981:14960:95;;;;;;;;;966:38:96;;981:14960:95;;3901:31:23;981:14960:95;4148:103:23;966:10:27;-1:-1:-1;981:14960:95;;;;;;;;;821:37:96;;981:14960:95;;3901:31:23;981:14960:95;4148:103:23;-1:-1:-1;981:14960:95;;;-1:-1:-1;;;;;;;;;;;981:14960:95;;;;;;;;966:10:27;981:14960:95;;;;;;;;;3901:31:23;981:14960:95;7270:387:23;-1:-1:-1;;;;;981:14960:95;;1398:1:71;981:14960:95;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2887:71:23;981:14960:95;;;;1398:1:71;981:14960:95;;;;;;;;;;;-1:-1:-1;;;;;981:14960:95;;;;;;;;;;-1:-1:-1;;981:14960:95;7509:4:23;981:14960:95;;;966:10:27;;-1:-1:-1;;;;;981:14960:95;-1:-1:-1;7532:40:23;-1:-1:-1;;7532:40:23;7509:4;7586:11;:::o;7432:219::-;7628:12;;1398:1:71;7628:12:23;:::o;7270:387::-;-1:-1:-1;;;;;981:14960:95;;-1:-1:-1;981:14960:95;;;;;;;;;675:39:96;;-1:-1:-1;;;;;;;;;;;2887:71:23;981:14960:95;;3901:31:23;981:14960:95;;;;-1:-1:-1;981:14960:95;;;;;;;;;;;-1:-1:-1;;;;;981:14960:95;;;;;;;;;;-1:-1:-1;;981:14960:95;7509:4:23;981:14960:95;;;966:10:27;;-1:-1:-1;;;;;981:14960:95;;7532:40:23;-1:-1:-1;;7532:40:23;7509:4;7586:11;:::o;7432:219::-;7628:12;;;-1:-1:-1;7628:12:23;:::o;7270:387::-;-1:-1:-1;;;;;981:14960:95;;-1:-1:-1;981:14960:95;;;;;;;;;821:37:96;;-1:-1:-1;;;;;;;;;;;2887:71:23;981:14960:95;;3901:31:23;981:14960:95;7270:387:23;-1:-1:-1;;;;;981:14960:95;;-1:-1:-1;981:14960:95;;;;;;;;;966:38:96;;-1:-1:-1;;;;;;;;;;;2887:71:23;981:14960:95;;3901:31:23;981:14960:95;7270:387:23;-1:-1:-1;;;;;981:14960:95;;-1:-1:-1;981:14960:95;;;;;;;;;1109:35:96;;-1:-1:-1;;;;;;;;;;;2887:71:23;981:14960:95;;3901:31:23;981:14960:95;7270:387:23;-1:-1:-1;981:14960:95;;;-1:-1:-1;;;;;;;;;;;981:14960:95;;;;;;;;-1:-1:-1;;;;;981:14960:95;;;;;;;;;;;;3901:31:23;981:14960:95;7892:388:23;-1:-1:-1;981:14960:95;;;-1:-1:-1;;;;;;;;;;;981:14960:95;;;;;;;;-1:-1:-1;;;;;981:14960:95;;;;;;;;;;;;;;;;-1:-1:-1;981:14960:95;;;;;;;;;;;-1:-1:-1;;;;;981:14960:95;;;;;;;;;;-1:-1:-1;;981:14960:95;;;966:10:27;;-1:-1:-1;;;;;981:14960:95;;8155:40:23;-1:-1:-1;;8155:40:23;981:14960:95;8209:11:23;:::o;1702:188:45:-;981:14960:95;;-1:-1:-1;;;1829:53:45;;;;-1:-1:-1;;;;;981:14960:95;;;1829:53:45;;;981:14960:95;;;;;;;;;;;;;;;;;1829:53:45;;;981:14960:95;;;;;;;-1:-1:-1;;;;;981:14960:95;;;;;1829:53:45;981:14960:95;;;1829:53:45;:::i;981:14960:95:-;7178:12:86;981:14960:95;;;;;;7178:12:86;-1:-1:-1;981:14960:95;-1:-1:-1;;;;;;;;;;;981:14960:95;;-1:-1:-1;981:14960:95;:::o;:::-;7178:12:86;981:14960:95;;;;;;7178:12:86;-1:-1:-1;981:14960:95;-1:-1:-1;;;;;;;;;;;981:14960:95;;-1:-1:-1;981:14960:95;:::o;:::-;;;;;;;;-1:-1:-1;981:14960:95;;-1:-1:-1;981:14960:95;;;-1:-1:-1;981:14960:95;:::o;:::-;6360:12:86;981:14960:95;-1:-1:-1;;;981:14960:95;;;;;;;;;6360:12:86;981:14960:95;;;;;;6360:12:86;-1:-1:-1;981:14960:95;-1:-1:-1;;;;;;;;;;;981:14960:95;;:::o;:::-;6360:12:86;981:14960:95;-1:-1:-1;;;981:14960:95;;;;;;;;;6360:12:86;981:14960:95;;;;;;6360:12:86;-1:-1:-1;981:14960:95;-1:-1:-1;;;;;;;;;;;981:14960:95;;:::o;:::-;;;;;-1:-1:-1;;;981:14960:95;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6246:584:86;;;;6360:12;981:14960:95;;;6360:24:86;;6356:75;;6246:584;6474:30;;;:::i;:::-;981:14960:95;;;;;;6578:12:86;;;:::i;:::-;6604:24;;;;6246:584;-1:-1:-1;6600:188:86;;;-1:-1:-1;;;981:14960:95;;;;;;;;;-1:-1:-1;981:14960:95;;;-1:-1:-1;981:14960:95;;;;;;6798:25:86;981:14960:95;6246:584:86:o;6600:188::-;8167:38:60;;-1:-1:-1;;;;;981:14960:95;;-1:-1:-1;8167:38:60;:::i;:::-;6753:24:86;;;;;:::i;:::-;6798:25;6246:584;:::o;6604:24::-;981:14960:95;;;;;;6614:14:86;;-1:-1:-1;6604:24:86;;;6356:75;-1:-1:-1;;;981:14960:95;;;;;;;;;;;;;;;;-1:-1:-1;981:14960:95;;;;-1:-1:-1;;;;;;;;;;;981:14960:95;;6356:75:86;;;6246:584;;;;6360:12;981:14960:95;;;6360:24:86;;6356:75;;6246:584;6474:30;;;:::i;:::-;981:14960:95;;;;;;6578:12:86;;;:::i;:::-;6604:24;;;;6246:584;-1:-1:-1;6600:188:86;;;-1:-1:-1;;;981:14960:95;;;;;;;;;-1:-1:-1;981:14960:95;;;-1:-1:-1;981:14960:95;;;;;;6798:25:86;981:14960:95;6246:584:86:o;6600:188::-;8167:38:60;;-1:-1:-1;;;;;981:14960:95;;-1:-1:-1;8167:38:60;:::i;:::-;6753:24:86;;;;;:::i;6604:::-;981:14960:95;;;;;;6614:14:86;;-1:-1:-1;6604:24:86;;;6356:75;-1:-1:-1;;;981:14960:95;;;;;;;;;;;;;;;;-1:-1:-1;981:14960:95;;;;-1:-1:-1;;;;;;;;;;;981:14960:95;;6356:75:86;;;6246:584;;;;;6360:12;;;981:14960:95;;;6360:24:86;;6356:75;;6246:584;6474:30;;;;;:::i;:::-;981:14960:95;;;;;;6578:12:86;;;;:::i;:::-;6604:24;;;;6246:584;-1:-1:-1;6600:188:86;;;-1:-1:-1;;;;;981:14960:95;;;;;;;6644:21:86;;;:29;:21;;:::i;6600:188::-;6753:24;;981:14960:95;;8167:38:60;;-1:-1:-1;;;;;981:14960:95;;;;;8167:38:60;:::i;:::-;6753:24:86;;;:::i;6604:::-;981:14960:95;;;;;;6614:14:86;;-1:-1:-1;6604:24:86;;;6356:75;-1:-1:-1;;;981:14960:95;;;;;;6360:12:86;981:14960:95;;;;;;;:::i;:::-;;;;;;;;;;;;;;6356:75:86;;;981:14960:95;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;:::o;2658:162:24:-;-1:-1:-1;;;;;;;;;;;981:14960:95;-1:-1:-1;;;;;981:14960:95;966:10:27;2717:23:24;2713:101;;2658:162::o;2713:101::-;981:14960:95;;-1:-1:-1;;;2763:40:24;;966:10:27;2763:40:24;;;981:14960:95;;;2763:40:24;2557:104:57;;2641:5;;;;;;:13;2557:104;:::o;2641:13::-;;;2557:104;:::o;981:14960:95:-;;;;;;;:::o;3803:4116:57:-;;;981:14960:95;;;;-1:-1:-1;;3803:4116:57;;4383:131;;;;;;;;;;;;4595:10;;4591:368;;5065:20;;;;5061:88;;5435:300;;;981:14960:95;-1:-1:-1;981:14960:95;5954:31:57;;5999:371;;;6813:1;981:14960:95;;6794:1:57;981:14960:95;6793:21:57;981:14960:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5999:371:57;;;;-1:-1:-1;5999:371:57;;;5435:300;;;;;;981:14960:95;5435:300:57;;5999:371;6436:21;981:14960:95;3803:4116:57;:::o;5061:88::-;981:14960:95;;-1:-1:-1;;;5112:22:57;;;;;4591:368;4925:19;;;;;;;:::i;1303:160:45:-;981:14960:95;;-1:-1:-1;;;1412:43:45;;;;-1:-1:-1;;;;;981:14960:95;;;1412:43:45;;;981:14960:95;;;;;;;;;1412:43:45;;;981:14960:95;;;;-1:-1:-1;;;;;981:14960:95;;;;;;;;1412:43:45;981:14960:95;;;1412:43:45;:::i;12922:460:95:-;;13024:14;;:::i;:::-;13015:23;;;13011:75;;-1:-1:-1;981:14960:95;;;13100:20;981:14960;;;;;;;;13128:10;981:14960;;;;;;;;;;13096:93;;13208:32;13128:10;13208:32;;:::i;:::-;13255:11;;;13251:68;;-1:-1:-1;981:14960:95;;;13100:20;981:14960;;;;;;;;13128:10;981:14960;;;;;;;;;-1:-1:-1;;981:14960:95;13371:4;981:14960;;;12922:460::o;13251:68::-;981:14960;;-1:-1:-1;;;13289:19:95;;;;;13096:93;981:14960;;-1:-1:-1;;;13162:16:95;;;;;13011:75;981:14960;;-1:-1:-1;;;13061:14:95;;;;;10580:184:86;5173:12:96;981:14960:95;10303:8:60;;;:63;-1:-1:-1;10303:63:60;-1:-1:-1;;;;;981:14960:95;;10726:7:86;981:14960:95;;10736:12:86;981:14960:95;;;;;;10736:12:86;-1:-1:-1;981:14960:95;-1:-1:-1;;;;;;;;;;;981:14960:95;;10580:184:86;:::o;10726:31::-;;-1:-1:-1;10580:184:86;:::o;10303:63:60:-;981:14960:95;;;;;;;;5173:12:96;-1:-1:-1;14249:109:60;;;981:14960:95;;;10303:63:60;;10580:184:86;4803:13:96;981:14960:95;10303:8:60;;;:63;-1:-1:-1;10303:63:60;-1:-1:-1;;;;;981:14960:95;;10726:7:86;981:14960:95;;10736:12:86;981:14960:95;;;;;;10736:12:86;-1:-1:-1;981:14960:95;-1:-1:-1;;;;;;;;;;;981:14960:95;;10580:184:86;:::o;10303:63:60:-;981:14960:95;;;;;;;;4803:13:96;-1:-1:-1;14249:109:60;;;981:14960:95;;;10303:63:60;;10580:184:86;981:14960:95;;10303:8:60;;;:63;-1:-1:-1;10303:63:60;-1:-1:-1;;;;;981:14960:95;;10726:7:86;981:14960:95;;10736:12:86;:17;:12;;:17;:::i;:::-;981:14960:95;;;;;;10580:184:86;:::o;10303:63:60:-;981:14960:95;;;;;;;;;;14249:109:60;-1:-1:-1;14249:109:60;;-1:-1:-1;14249:109:60;;;981:14960:95;;;10303:63:60;;1662:280:87;;;1884:1;981:14960:95;;;;;;;1884:1:87;981:14960:95;;;;;;;8188:25:57;;;:::i;6999:207:86:-;4622:13:96;981:14960:95;9594:15:60;-1:-1:-1;9619:18:60;9652:7;9658:1;9652:7;;9648:234;;6999:207:86;9906:53:60;;;;:::i;:::-;9977:8;;;:63;-1:-1:-1;9977:63:60;-1:-1:-1;;;;;981:14960:95;;7168:7:86;981:14960:95;;7178:17:86;981:14960:95;7178:17:86;;:::i;9977:63:60:-;9992:41;10025:7;9992:48;10025:7;;:::i;:::-;4622:13:96;14249:109:60;;-1:-1:-1;;;;;;;;;;;14249:109:60;14099:265;;9992:41;981:14960:95;;;;;9992:48:60;9977:63;;9648:234;9695:14;;;;;:::i;:::-;981:14960:95;;;;;;;9906:53:60;14249:109;4622:13:96;-1:-1:-1;14249:109:60;981:14960:95;14249:109:60;;-1:-1:-1;;;;;;;;;;;14249:109:60;981:14960:95;;;;;9727:48:60;9723:149;981:14960:95;;;9795:10:60;9723:149;9648:234;;9723:149;9850:7;;;;;;:::i;:::-;9723:149;9648:234;;6999:207:86;4994:12:96;981:14960:95;9594:15:60;-1:-1:-1;9619:18:60;9652:7;9658:1;9652:7;;9648:234;;6999:207:86;9906:53:60;;;;:::i;:::-;9977:8;;;:63;-1:-1:-1;9977:63:60;-1:-1:-1;;;;;981:14960:95;;7168:7:86;981:14960:95;;7178:17:86;981:14960:95;7178:17:86;;:::i;9977:63:60:-;9992:41;10025:7;9992:48;10025:7;;:::i;:::-;4994:12:96;14249:109:60;;-1:-1:-1;;;;;;;;;;;14249:109:60;14099:265;;9992:48;9977:63;;9648:234;9695:14;;;;;:::i;:::-;981:14960:95;;;;;;;9906:53:60;14249:109;4994:12:96;-1:-1:-1;14249:109:60;981:14960:95;14249:109:60;;-1:-1:-1;;;;;;;;;;;14249:109:60;981:14960:95;;;;;9727:48:60;9723:149;981:14960:95;;;9795:10:60;9723:149;9648:234;;9723:149;9850:7;;;;;;:::i;:::-;9723:149;9648:234;;6999:207:86;;981:14960:95;;9594:15:60;-1:-1:-1;9619:18:60;9652:7;9658:1;9652:7;;9648:234;;6999:207:86;9906:53:60;;;;;:::i;:::-;9977:8;;;:63;-1:-1:-1;9977:63:60;;-1:-1:-1;;;;;981:14960:95;;7168:7:86;981:14960:95;;;7178:12:86;;:17;:12;;:17;:::i;9977:63:60:-;9992:41;10025:7;9992:48;10025:7;;:::i;:::-;9992:41;14249:109;;;;;;14099:265;;9992:48;9977:63;;;9648:234;9695:14;;;;;:::i;:::-;981:14960:95;;;;;;;9906:53:60;14249:109;;-1:-1:-1;14249:109:60;981:14960:95;14249:109:60;;;-1:-1:-1;14249:109:60;;981:14960:95;;;;;9727:48:60;9723:149;981:14960:95;;;9795:10:60;9723:149;9648:234;;9723:149;9850:7;;;;;;:::i;:::-;9723:149;9648:234;;981:14960:95;;;;;;;:::i;:::-;-1:-1:-1;981:14960:95;;;;;;;:::o;11486:272:86:-;981:14960:95;;:::i;:::-;;;;:::i;:::-;;4622:13:96;981:14960:95;;;;;;;;4622:13:96;-1:-1:-1;981:14960:95;-1:-1:-1;;;;;;;;;;;981:14960:95;;:::i;:::-;;;;;;;;;;;;11731:17:86;;981:14960:95;;11718:12:86;981:14960:95;;;;;;11718:12:86;-1:-1:-1;981:14960:95;-1:-1:-1;;;;;;;;;;;981:14960:95;;;;;;;;:::i;:::-;;;;11672:79:86;;981:14960:95;11486:272:86;:::o;:::-;981:14960:95;;:::i;:::-;;;;:::i;:::-;;4994:12:96;981:14960:95;;;;;;;;4994:12:96;-1:-1:-1;981:14960:95;-1:-1:-1;;;;;;;;;;;981:14960:95;;:::i;:::-;;;;;;;;;;;;11731:17:86;;981:14960:95;;11718:12:86;981:14960:95;;;;;;11718:12:86;-1:-1:-1;981:14960:95;-1:-1:-1;;;;;;;;;;;981:14960:95;;;;;;;;:::i;11486:272:86:-;;981:14960:95;11308:22:60;11718:31:86;11486:272;981:14960:95;;:::i;:::-;;;;:::i;:::-;;11308:22:60;;:::i;:::-;981:14960:95;;:::i;:::-;;11718:12:86;981:14960:95;;;;;11731:17:86;981:14960:95;;;;;11731:17:86;;981:14960:95;;11718:12:86;;:31;:::i;:::-;981:14960:95;;;;;;;;;:::i;:::-;;;;;;11731:17:86;11672:79;;981:14960:95;11486:272:86;:::o;4059:629:45:-;2847:1:46;4059:629:45;3510:55:46;4059:629:45;981:14960:95;;;;;;3462:31:46;;;;;;;;;;;;:::i;:::-;3510:55;;;:::i;:::-;981:14960:95;;4551:22:45;;;;:57;;;;4059:629;4547:135;;;;4059:629;:::o;4547:135::-;981:14960:95;;;;4631:40:45;;;;;;;;;981:14960:95;4631:40:45;4551:57;4578:30;;;3462:31:46;4578:30:45;;;;;;;;:::i;:::-;4577:31;4551:57;;;;1258:280:87;;;981:14960:95;;;;;;;;;;;;;;;;8188:25:57;;;;;:::i;:::-;8257;;;;;;8223:101;;1258:280:87;:::o;8223:101:57:-;981:14960:95;;;;;;;;1258:280:87;:::o;981:14960:95:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;10552:388:60:-;5173:12:96;981:14960:95;10728:8:60;;;10752:20;10690:17;10752:20;10690:17;10752:20;10690:17;10752:20;:::o;10724:210::-;981:14960:95;;;;;;;;14249:109:60;981:14960:95;14249:109:60;5173:12:96;10690:17:60;14249:109;;981:14960:95;:::i;:::-;;;;;;;14249:109:60;981:14960:95;;;;;10911:11:60;;981:14960:95;;10886:37:60;10870:1;10886:37;;;:::o;10552:388::-;4803:13:96;981:14960:95;10728:8:60;;;10752:20;10690:17;10752:20;10690:17;10752:20;10690:17;10752:20;:::o;10724:210::-;981:14960:95;;;;;;;;14249:109:60;981:14960:95;14249:109:60;4803:13:96;10690:17:60;14249:109;;981:14960:95;:::i;10552:388:60:-;981:14960:95;;10728:8:60;;;10752:20;;10690:17;10752:20;10690:17;10752:20;10690:17;10752:20;:::o;10724:210::-;981:14960:95;;;;;;;;;;;14249:109:60;10690:17;14249:109;;10690:17;14249:109;;;981:14960:95;:::i;7084:141:25:-;981:14960:95;-1:-1:-1;;;;;;;;;;;981:14960:95;;;;7150:18:25;7146:73;;7084:141::o;7146:73::-;981:14960:95;;-1:-1:-1;;;7191:17:25;;;;;981:14960:95;5173:12:96;981:14960:95;;-1:-1:-1;;;981:14960:95;;;;;;;;;5173:12:96;981:14960:95;;;;;;5173:12:96;-1:-1:-1;981:14960:95;;;;;;;;;;-1:-1:-1;;981:14960:95;;;;;;;-1:-1:-1;;;;;;;;;;;981:14960:95;;;;:::o;:::-;4803:13:96;981:14960:95;;-1:-1:-1;;;981:14960:95;;;;;;;;;4803:13:96;981:14960:95;;;;;;4803:13:96;-1:-1:-1;981:14960:95;;;;;;;;;;-1:-1:-1;;981:14960:95;;;;;;;-1:-1:-1;;;;;;;;;;;981:14960:95;;;;:::o;:::-;;;-1:-1:-1;;;981:14960:95;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;981:14960:95;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;11513:870:60;5173:12:96;981:14960:95;11513:870:60;;;981:14960:95;11672:7:60;;;;981:14960:95;11775:28:60;11795:7;;;:::i;11775:28::-;981:14960:95;:::i;:::-;;;;;;;;;;-1:-1:-1;;11873:91:60;;981:14960:95;12233:11:60;981:14960:95;;;12027:16:60;981:14960:95;;;;;;;12027:16:60;;;;12083:7;12063:28;12083:7;12063:43;12083:7;;:::i;12063:28::-;981:14960:95;;;;;;;;;;;;;;;;;12063:43:60;12233:11;981:14960:95;-1:-1:-1;;;;;981:14960:95;;;12023:189:60;981:14960:95;;12145:52:60;981:14960:95;;12155:41:60;981:14960:95;;:::i;:::-;;;;;;;;12155:41:60;-1:-1:-1;;;;;981:14960:95;;12155:41:60;;;981:14960:95;12145:52:60;:::i;:::-;12023:189;;11873:91;981:14960:95;;-1:-1:-1;;;11919:30:60;;;;;11668:709;12283:52;981:14960:95;;12293:41:60;981:14960:95;;:::i;12293:41:60:-;-1:-1:-1;;;;;981:14960:95;;12293:41:60;;;981:14960:95;12145:52:60;:::i;12283:::-;11678:1;12349:17;;:::o;11513:870::-;4803:13:96;981:14960:95;11513:870:60;;;981:14960:95;11672:7:60;;;;981:14960:95;11775:28:60;11795:7;;;:::i;981:14960:95:-;;;;;;;;;;-1:-1:-1;;11873:91:60;;981:14960:95;12233:11:60;981:14960:95;;;12027:16:60;981:14960:95;;;;;;;12027:16:60;;;;12083:7;12063:28;12083:7;12063:43;12083:7;;:::i;12023:189::-;981:14960:95;;12145:52:60;981:14960:95;;12155:41:60;981:14960:95;;:::i;12155:41:60:-;-1:-1:-1;;;;;981:14960:95;;12155:41:60;;;981:14960:95;12145:52:60;:::i;11668:709::-;12283:52;981:14960:95;;12293:41:60;981:14960:95;;:::i;12293:41:60:-;-1:-1:-1;;;;;981:14960:95;;12293:41:60;;;981:14960:95;12145:52:60;:::i;11513:870::-;981:14960:95;;11513:870:60;;;981:14960:95;11513:870:60;11672:7;;;;981:14960:95;11775:28:60;11795:7;;;:::i;981:14960:95:-;;;;;;;;;;;;;;;;11877:15:60;-1:-1:-1;11873:91:60;;981:14960:95;;12233:11:60;981:14960:95;;;12027:16:60;981:14960:95;;;;;;;12027:16:60;;;;12083:7;12063:43;12083:7;;12063:28;12083:7;;:::i;:::-;12063:28;14249:109;;;;;;14099:265;;12023:189;981:14960:95;;;12145:52:60;981:14960:95;12155:41:60;981:14960:95;;:::i;:::-;;;;;;;;12155:41:60;-1:-1:-1;;;;;981:14960:95;;12155:41:60;;;981:14960:95;12145:52:60;:::i;11668:709::-;12283:52;981:14960:95;;12293:41:60;981:14960:95;;:::i;12293:41:60:-;-1:-1:-1;;;;;981:14960:95;;12293:41:60;;;981:14960:95;12145:52:60;:::i;8587:1642:57:-;8658:6;;8654:45;;9401:7;10201:10;10142:26;10093;10044;9995;9946;9897;9848;981:14960:95;10189:23:57;9401:7;8663:1;981:14960:95;;;;10826:16:57;10822:99;;8587:1642;981:14960:95;;;;10938:15:57;10934:96;;8587:1642;981:14960:95;;;;11047:15:57;11043:96;;8587:1642;981:14960:95;;;;11156:15:57;11152:96;;8587:1642;981:14960:95;;;;11265:14:57;11261:93;;8587:1642;981:14960:95;;;;11371:14:57;11367:93;;8587:1642;981:14960:95;;;;11477:14:57;11473:93;;8587:1642;981:14960:95;;;11579:64:57;;8587:1642;981:14960:95;;;9858:10:57;;;;:::i;:::-;981:14960:95;;;;;9848:26:57;9907:10;;;;:::i;9897:26::-;9956:10;;;;:::i;9946:26::-;10005:10;;;;:::i;9995:26::-;10054:10;;;;:::i;10044:26::-;10103:10;;;;:::i;10093:26::-;10152:10;;;;:::i;10142:26::-;10201:10;;;:::i;:::-;10189:23;;:::i;11579:64::-;981:14960:95;;11579:64:57;;11473:93;981:14960:95;11511:11:57;;981:14960:95;;11473:93:57;;;;11367;981:14960:95;11405:11:57;;981:14960:95;;11367:93:57;;;;11261;981:14960:95;11299:11:57;;981:14960:95;;11261:93:57;;;;11152:96;981:14960:95;11191:12:57;;981:14960:95;;11152:96:57;;;;11043;981:14960:95;11082:12:57;;981:14960:95;;11043:96:57;;;;10934;981:14960:95;10973:12:57;;981:14960:95;;10934:96:57;;;;10822:99;10862:13;;;981:14960:95;10822:99:57;;;;12736:433:60;;12919:10;;;;;;13151:11;;12736:433;:::o;12912:230::-;2900:5:57;;;;;981:14960:95;;2910:5:57;;;981:14960:95;;;;;;;;;4622:13:96;-1:-1:-1;14249:109:60;981:14960:95;14249:109:60;;-1:-1:-1;;;;;;;;;;;14249:109:60;981:14960:95;;;;;-1:-1:-1;12996:136:60;981:14960:95;;;13055:10:60;;12996:136;;12912:230;;;12996:136;981:14960:95;;;;;;;;;;;12996:136:60;;;12736:433;;12919:10;;;;;;13151:11;;12736:433;:::o;12912:230::-;2900:5:57;;;;;981:14960:95;;2910:5:57;;;981:14960:95;;;;;;;;;4994:12:96;-1:-1:-1;14249:109:60;981:14960:95;14249:109:60;;-1:-1:-1;;;;;;;;;;;14249:109:60;981:14960:95;;;;;-1:-1:-1;12996:136:60;981:14960:95;;;13055:10:60;;12996:136;;12912:230;;;12996:136;981:14960:95;;;;;;;;;;;12996:136:60;;;12736:433;;;12919:10;;;;;;13151:11;;;12736:433;:::o;12912:230::-;2900:5:57;;;;;;981:14960:95;;2910:5:57;;;981:14960:95;;;;;;;;;14249:109:60;-1:-1:-1;14249:109:60;981:14960:95;14249:109:60;;;-1:-1:-1;14249:109:60;;981:14960:95;;;;;-1:-1:-1;12996:136:60;981:14960:95;;;13055:10:60;;12996:136;;12912:230;;;;12996:136;981:14960:95;;;;;;;;;;;12996:136:60;;;4625:582:46;;4797:8;;-1:-1:-1;981:14960:95;;5874:21:46;:17;;6046:142;;;;;;5870:383;981:14960:95;;-1:-1:-1;;;6225:17:46;;;;;4793:408;981:14960:95;;5045:22:46;:49;;;4793:408;5041:119;;5173:17;;:::o;5041:119::-;981:14960:95;;-1:-1:-1;;;5121:24:46;;-1:-1:-1;;;;;981:14960:95;;;5121:24:46;;;981:14960:95;;;5121:24:46;5045:49;5071:18;;;:23;5045:49;","linkReferences":{},"immutableReferences":{"58075":[{"start":1904,"length":32},{"start":2467,"length":32}],"68715":[{"start":4512,"length":32},{"start":5845,"length":32}],"68718":[{"start":6206,"length":32},{"start":7428,"length":32}]}},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","DELEGATOR_FACTORY()":"6da3e06d","DEPOSITOR_WHITELIST_ROLE()":"1b66c9e1","DEPOSIT_LIMIT_SET_ROLE()":"a21a1df9","DEPOSIT_WHITELIST_SET_ROLE()":"db388715","FACTORY()":"2dd31000","IS_DEPOSIT_LIMIT_SET_ROLE()":"1415519b","SLASHER_FACTORY()":"87df0788","activeBalanceOf(address)":"59f769a9","activeBalanceOfAt(address,uint48,bytes)":"efb559d6","activeShares()":"bfefcd7b","activeSharesAt(uint48,bytes)":"50f22068","activeSharesOf(address)":"9d66201b","activeSharesOfAt(address,uint48,bytes)":"2d73c69c","activeStake()":"bd49c35f","activeStakeAt(uint48,bytes)":"810da75d","burner()":"27810b6e","claim(address,uint256)":"aad3ec96","claimBatch(address,uint256[])":"7c04c80a","collateral()":"d8dfeb45","currentEpoch()":"76671808","currentEpochStart()":"61a8c8c4","delegator()":"ce9b7930","deposit(address,uint256)":"47e7ef24","depositLimit()":"ecf70858","depositWhitelist()":"48d3b775","epochAt(uint48)":"7953b33b","epochDuration()":"4ff0876a","epochDurationInit()":"46361671","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","initialize(uint64,address,bytes)":"57ec83cc","isDelegatorInitialized()":"50861adc","isDepositLimit()":"a1b12202","isDepositorWhitelisted(address)":"794b15b7","isInitialized()":"392e53cd","isSlasherInitialized()":"6ec1e3f8","isWithdrawalsClaimed(uint256,address)":"a5d03223","migrate(uint64,bytes)":"2abe3048","nextEpochStart()":"73790ab3","onSlash(uint256,uint48)":"7278e31c","owner()":"8da5cb5b","previousEpochStart()":"281f5752","redeem(address,uint256)":"1e9a6950","renounceOwnership()":"715018a6","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","setDelegator(address)":"83cd9cc3","setDepositLimit(uint256)":"bdc8144b","setDepositWhitelist(bool)":"4105a7dd","setDepositorWhitelistStatus(address,bool)":"a2861466","setIsDepositLimit(bool)":"5346e34f","setSlasher(address)":"aabc2496","slashableBalanceOf(address)":"c31e8dd7","slasher()":"b1344271","staticDelegateCall(address,bytes)":"9f86fd85","supportsInterface(bytes4)":"01ffc9a7","totalStake()":"8b0e9f3f","transferOwnership(address)":"f2fde38b","version()":"54fd4d50","withdraw(address,uint256)":"f3fef3a3","withdrawalShares(uint256)":"afba70ad","withdrawalSharesOf(uint256,address)":"a3b54172","withdrawals(uint256)":"5cc07076","withdrawalsOf(uint256,address)":"f5e7ee0f"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatorFactory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"slasherFactory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"vaultFactory\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadyClaimed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadySet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CheckpointUnorderedInsertion\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DelegatorAlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DepositLimitReached\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientClaim\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientDeposit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientRedemption\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientWithdrawal\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCaptureEpoch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidClaimer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCollateral\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDelegator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEpoch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEpochDuration\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidLengthEpochs\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOnBehalfOf\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRecipient\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSlasher\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTimestamp\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MathOverflowedMulDiv\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingRoles\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoPreviousEpoch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotDelegator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotFactory\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotSlasher\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotWhitelistedDepositor\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SlasherAlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TooMuchRedeem\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TooMuchWithdraw\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"claimer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Claim\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"claimer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"epochs\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"ClaimBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"depositor\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slashedAmount\",\"type\":\"uint256\"}],\"name\":\"OnSlash\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"SetDelegator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"SetDepositLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"SetDepositWhitelist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"SetDepositorWhitelistStatus\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"SetIsDepositLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"slasher\",\"type\":\"address\"}],\"name\":\"SetSlasher\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"claimer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"burnedShares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"mintedShares\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DELEGATOR_FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEPOSITOR_WHITELIST_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEPOSIT_LIMIT_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEPOSIT_WHITELIST_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"IS_DEPOSIT_LIMIT_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SLASHER_FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"activeBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hints\",\"type\":\"bytes\"}],\"name\":\"activeBalanceOfAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"activeShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"activeSharesAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"activeSharesOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"activeSharesOfAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"activeStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"activeStakeAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"burner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"}],\"name\":\"claim\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"epochs\",\"type\":\"uint256[]\"}],\"name\":\"claimBatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"collateral\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentEpochStart\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"delegator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"depositedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mintedShares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"depositLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"depositWhitelist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"epochAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"epochDuration\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"epochDurationInit\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"initialVersion\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner_\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isDelegatorInitialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isDepositLimit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isDepositorWhitelisted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isInitialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isSlasherInitialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isWithdrawalsClaimed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newVersion\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"migrate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nextEpochStart\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"}],\"name\":\"onSlash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"slashedAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"previousEpochStart\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"claimer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"withdrawnAssets\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mintedShares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator_\",\"type\":\"address\"}],\"name\":\"setDelegator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"setDepositLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"setDepositWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"setDepositorWhitelistStatus\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"setIsDepositLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"slasher_\",\"type\":\"address\"}],\"name\":\"setSlasher\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"slashableBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slasher\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"staticDelegateCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"claimer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"burnedShares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mintedShares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"}],\"name\":\"withdrawalShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"withdrawalSharesOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"}],\"name\":\"withdrawals\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"withdrawalsOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"AddressInsufficientBalance(address)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"CheckpointUnorderedInsertion()\":[{\"details\":\"A value was attempted to be inserted on a past checkpoint.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"MathOverflowedMulDiv()\":[{\"details\":\"Muldiv operation overflow.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC20 token failed.\"}]},\"events\":{\"Claim(address,address,uint256,uint256)\":{\"params\":{\"amount\":\"amount of the collateral claimed\",\"claimer\":\"account that claimed\",\"epoch\":\"epoch the collateral was claimed for\",\"recipient\":\"account that received the collateral\"}},\"ClaimBatch(address,address,uint256[],uint256)\":{\"params\":{\"amount\":\"amount of the collateral claimed\",\"claimer\":\"account that claimed\",\"epochs\":\"epochs the collateral was claimed for\",\"recipient\":\"account that received the collateral\"}},\"Deposit(address,address,uint256,uint256)\":{\"params\":{\"amount\":\"amount of the collateral deposited\",\"depositor\":\"account that made the deposit\",\"onBehalfOf\":\"account the deposit was made on behalf of\",\"shares\":\"amount of the active shares minted\"}},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"OnSlash(uint256,uint48,uint256)\":{\"params\":{\"amount\":\"amount of the collateral to slash\",\"captureTimestamp\":\"time point when the stake was captured\",\"slashedAmount\":\"real amount of the collateral slashed\"}},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"SetDelegator(address)\":{\"details\":\"Can be set only once.\",\"params\":{\"delegator\":\"vault's delegator to delegate the stake to networks and operators\"}},\"SetDepositLimit(uint256)\":{\"params\":{\"limit\":\"deposit limit (maximum amount of the collateral that can be in the vault simultaneously)\"}},\"SetDepositWhitelist(bool)\":{\"params\":{\"status\":\"if enabled deposit whitelist\"}},\"SetDepositorWhitelistStatus(address,bool)\":{\"params\":{\"account\":\"account for which the whitelist status is set\",\"status\":\"if whitelisted the account\"}},\"SetIsDepositLimit(bool)\":{\"params\":{\"status\":\"if enabled deposit limit\"}},\"SetSlasher(address)\":{\"details\":\"Can be set only once.\",\"params\":{\"slasher\":\"vault's slasher to provide a slashing mechanism to networks\"}},\"Withdraw(address,address,uint256,uint256,uint256)\":{\"params\":{\"amount\":\"amount of the collateral withdrawn\",\"burnedShares\":\"amount of the active shares burned\",\"claimer\":\"account that needs to claim the withdrawal\",\"mintedShares\":\"amount of the epoch withdrawal shares minted\",\"withdrawer\":\"account that made the withdrawal\"}}},\"kind\":\"dev\",\"methods\":{\"activeBalanceOf(address)\":{\"params\":{\"account\":\"account to get the active balance for\"},\"returns\":{\"_0\":\"active balance for the account\"}},\"activeBalanceOfAt(address,uint48,bytes)\":{\"params\":{\"account\":\"account to get the active balance for\",\"hints\":\"hints for checkpoints' indexes\",\"timestamp\":\"time point to get the active balance for the account at\"},\"returns\":{\"_0\":\"active balance for the account at the timestamp\"}},\"activeShares()\":{\"returns\":{\"_0\":\"total number of active shares\"}},\"activeSharesAt(uint48,bytes)\":{\"params\":{\"hint\":\"hint for the checkpoint index\",\"timestamp\":\"time point to get the total number of active shares at\"},\"returns\":{\"_0\":\"total number of active shares at the timestamp\"}},\"activeSharesOf(address)\":{\"params\":{\"account\":\"account to get the number of active shares for\"},\"returns\":{\"_0\":\"number of active shares for the account\"}},\"activeSharesOfAt(address,uint48,bytes)\":{\"params\":{\"account\":\"account to get the number of active shares for\",\"hint\":\"hint for the checkpoint index\",\"timestamp\":\"time point to get the number of active shares for the account at\"},\"returns\":{\"_0\":\"number of active shares for the account at the timestamp\"}},\"activeStake()\":{\"returns\":{\"_0\":\"total amount of active stake\"}},\"activeStakeAt(uint48,bytes)\":{\"params\":{\"hint\":\"hint for the checkpoint index\",\"timestamp\":\"time point to get the total active stake at\"},\"returns\":{\"_0\":\"total amount of active stake at the timestamp\"}},\"claim(address,uint256)\":{\"params\":{\"epoch\":\"epoch to claim the collateral for\",\"recipient\":\"account that receives the collateral\"},\"returns\":{\"amount\":\"amount of the collateral claimed\"}},\"claimBatch(address,uint256[])\":{\"params\":{\"epochs\":\"epochs to claim the collateral for\",\"recipient\":\"account that receives the collateral\"},\"returns\":{\"amount\":\"amount of the collateral claimed\"}},\"currentEpoch()\":{\"returns\":{\"_0\":\"current epoch\"}},\"currentEpochStart()\":{\"returns\":{\"_0\":\"start of the current epoch\"}},\"deposit(address,uint256)\":{\"params\":{\"amount\":\"amount of the collateral to deposit\",\"onBehalfOf\":\"account the deposit is made on behalf of\"},\"returns\":{\"depositedAmount\":\"real amount of the collateral deposited\",\"mintedShares\":\"amount of the active shares minted\"}},\"epochAt(uint48)\":{\"details\":\"Reverts if the timestamp is less than the start of the epoch 0.\",\"params\":{\"timestamp\":\"time point to get the epoch at\"},\"returns\":{\"_0\":\"epoch at the timestamp\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize(uint64,address,bytes)\":{\"params\":{\"data\":\"some data to use\",\"initialVersion\":\"initial version of the entity\",\"owner\":\"initial owner of the entity\"}},\"isInitialized()\":{\"returns\":{\"_0\":\"if the vault is fully initialized\"}},\"migrate(uint64,bytes)\":{\"params\":{\"data\":\"some data to use\",\"newVersion\":\"new version of the entity\"}},\"nextEpochStart()\":{\"returns\":{\"_0\":\"start of the next epoch\"}},\"onSlash(uint256,uint48)\":{\"details\":\"Only the slasher can call this function.\",\"params\":{\"amount\":\"amount to slash\",\"captureTimestamp\":\"time point when the stake was captured\"},\"returns\":{\"slashedAmount\":\"real amount of the collateral slashed\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"previousEpochStart()\":{\"details\":\"Reverts if the current epoch is 0.\",\"returns\":{\"_0\":\"start of the previous epoch\"}},\"redeem(address,uint256)\":{\"params\":{\"claimer\":\"account that needs to claim the withdrawal\",\"shares\":\"amount of the active shares to redeem\"},\"returns\":{\"mintedShares\":\"amount of the epoch withdrawal shares minted\",\"withdrawnAssets\":\"amount of the collateral withdrawn\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"setDepositLimit(uint256)\":{\"details\":\"Only a DEPOSIT_LIMIT_SET_ROLE holder can call this function.\",\"params\":{\"limit\":\"deposit limit (maximum amount of the collateral that can be in the vault simultaneously)\"}},\"setDepositWhitelist(bool)\":{\"details\":\"Only a DEPOSIT_WHITELIST_SET_ROLE holder can call this function.\",\"params\":{\"status\":\"if enabling deposit whitelist\"}},\"setDepositorWhitelistStatus(address,bool)\":{\"details\":\"Only a DEPOSITOR_WHITELIST_ROLE holder can call this function.\",\"params\":{\"account\":\"account for which the whitelist status is set\",\"status\":\"if whitelisting the account\"}},\"setIsDepositLimit(bool)\":{\"details\":\"Only a IS_DEPOSIT_LIMIT_SET_ROLE holder can call this function.\",\"params\":{\"status\":\"if enabling deposit limit\"}},\"slashableBalanceOf(address)\":{\"params\":{\"account\":\"account to get the slashable collateral for\"},\"returns\":{\"_0\":\"total amount of the account's slashable collateral\"}},\"staticDelegateCall(address,bytes)\":{\"details\":\"It allows to use this contract's storage on-chain.\",\"params\":{\"data\":\"data to make a delegatecall with\",\"target\":\"address of the contract to make a delegatecall to\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"totalStake()\":{\"returns\":{\"_0\":\"total amount of the slashable collateral\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"version()\":{\"details\":\"Starts from 1.\",\"returns\":{\"_0\":\"version of the entity\"}},\"withdraw(address,uint256)\":{\"params\":{\"amount\":\"amount of the collateral to withdraw\",\"claimer\":\"account that needs to claim the withdrawal\"},\"returns\":{\"burnedShares\":\"amount of the active shares burned\",\"mintedShares\":\"amount of the epoch withdrawal shares minted\"}},\"withdrawalsOf(uint256,address)\":{\"params\":{\"account\":\"account to get the withdrawals for\",\"epoch\":\"epoch to get the withdrawals for the account at\"},\"returns\":{\"_0\":\"withdrawals for the account at the epoch\"}}},\"version\":1},\"userdoc\":{\"events\":{\"Claim(address,address,uint256,uint256)\":{\"notice\":\"Emitted when a claim is made.\"},\"ClaimBatch(address,address,uint256[],uint256)\":{\"notice\":\"Emitted when a batch claim is made.\"},\"Deposit(address,address,uint256,uint256)\":{\"notice\":\"Emitted when a deposit is made.\"},\"OnSlash(uint256,uint48,uint256)\":{\"notice\":\"Emitted when a slash happens.\"},\"SetDelegator(address)\":{\"notice\":\"Emitted when a delegator is set.\"},\"SetDepositLimit(uint256)\":{\"notice\":\"Emitted when a deposit limit is set.\"},\"SetDepositWhitelist(bool)\":{\"notice\":\"Emitted when a deposit whitelist status is enabled/disabled.\"},\"SetDepositorWhitelistStatus(address,bool)\":{\"notice\":\"Emitted when a depositor whitelist status is set.\"},\"SetIsDepositLimit(bool)\":{\"notice\":\"Emitted when a deposit limit status is enabled/disabled.\"},\"SetSlasher(address)\":{\"notice\":\"Emitted when a slasher is set.\"},\"Withdraw(address,address,uint256,uint256,uint256)\":{\"notice\":\"Emitted when a withdrawal is made.\"}},\"kind\":\"user\",\"methods\":{\"DELEGATOR_FACTORY()\":{\"notice\":\"Get the delegator factory's address.\"},\"DEPOSITOR_WHITELIST_ROLE()\":{\"notice\":\"Get a depositor whitelist status setter's role.\"},\"DEPOSIT_LIMIT_SET_ROLE()\":{\"notice\":\"Get a deposit limit setter's role.\"},\"DEPOSIT_WHITELIST_SET_ROLE()\":{\"notice\":\"Get a deposit whitelist enabler/disabler's role.\"},\"FACTORY()\":{\"notice\":\"Get the factory's address.\"},\"IS_DEPOSIT_LIMIT_SET_ROLE()\":{\"notice\":\"Get a deposit limit enabler/disabler's role.\"},\"SLASHER_FACTORY()\":{\"notice\":\"Get the slasher factory's address.\"},\"activeBalanceOf(address)\":{\"notice\":\"Get an active balance for a particular account.\"},\"activeBalanceOfAt(address,uint48,bytes)\":{\"notice\":\"Get an active balance for a particular account at a given timestamp using hints.\"},\"activeShares()\":{\"notice\":\"Get a total number of active shares in the vault.\"},\"activeSharesAt(uint48,bytes)\":{\"notice\":\"Get a total number of active shares in the vault at a given timestamp using a hint.\"},\"activeSharesOf(address)\":{\"notice\":\"Get a number of active shares for a particular account.\"},\"activeSharesOfAt(address,uint48,bytes)\":{\"notice\":\"Get a total number of active shares for a particular account at a given timestamp using a hint.\"},\"activeStake()\":{\"notice\":\"Get a total amount of active stake in the vault.\"},\"activeStakeAt(uint48,bytes)\":{\"notice\":\"Get a total amount of active stake in the vault at a given timestamp using a hint.\"},\"burner()\":{\"notice\":\"Get a burner to issue debt to (e.g., 0xdEaD or some unwrapper contract).\"},\"claim(address,uint256)\":{\"notice\":\"Claim collateral from the vault.\"},\"claimBatch(address,uint256[])\":{\"notice\":\"Claim collateral from the vault for multiple epochs.\"},\"collateral()\":{\"notice\":\"Get a vault collateral.\"},\"currentEpoch()\":{\"notice\":\"Get a current vault epoch.\"},\"currentEpochStart()\":{\"notice\":\"Get a start of the current vault epoch.\"},\"delegator()\":{\"notice\":\"Get a delegator (it delegates the vault's stake to networks and operators).\"},\"deposit(address,uint256)\":{\"notice\":\"Deposit collateral into the vault.\"},\"depositLimit()\":{\"notice\":\"Get a deposit limit (maximum amount of the active stake that can be in the vault simultaneously).\"},\"depositWhitelist()\":{\"notice\":\"Get if the deposit whitelist is enabled.\"},\"epochAt(uint48)\":{\"notice\":\"Get an epoch at a given timestamp.\"},\"epochDuration()\":{\"notice\":\"Get a duration of the vault epoch.\"},\"epochDurationInit()\":{\"notice\":\"Get a time point of the epoch duration set.\"},\"initialize(uint64,address,bytes)\":{\"notice\":\"Initialize this entity contract by using a given data and setting a particular version and owner.\"},\"isDelegatorInitialized()\":{\"notice\":\"Get if the delegator is initialized.\"},\"isDepositLimit()\":{\"notice\":\"Get if the deposit limit is set.\"},\"isDepositorWhitelisted(address)\":{\"notice\":\"Get if a given account is whitelisted as a depositor.\"},\"isInitialized()\":{\"notice\":\"Check if the vault is fully initialized (a delegator and a slasher are set).\"},\"isSlasherInitialized()\":{\"notice\":\"Get if the slasher is initialized.\"},\"isWithdrawalsClaimed(uint256,address)\":{\"notice\":\"Get if the withdrawals are claimed for a particular account at a given epoch.\"},\"migrate(uint64,bytes)\":{\"notice\":\"Migrate this entity to a particular newer version using a given data.\"},\"nextEpochStart()\":{\"notice\":\"Get a start of the next vault epoch.\"},\"onSlash(uint256,uint48)\":{\"notice\":\"Slash callback for burning collateral.\"},\"previousEpochStart()\":{\"notice\":\"Get a start of the previous vault epoch.\"},\"redeem(address,uint256)\":{\"notice\":\"Redeem collateral from the vault (it will be claimable after the next epoch).\"},\"setDepositLimit(uint256)\":{\"notice\":\"Set a deposit limit.\"},\"setDepositWhitelist(bool)\":{\"notice\":\"Enable/disable deposit whitelist.\"},\"setDepositorWhitelistStatus(address,bool)\":{\"notice\":\"Set a depositor whitelist status.\"},\"setIsDepositLimit(bool)\":{\"notice\":\"Enable/disable deposit limit.\"},\"slashableBalanceOf(address)\":{\"notice\":\"Get a total amount of the collateral that can be slashed for a given account.\"},\"slasher()\":{\"notice\":\"Get a slasher (it provides networks a slashing mechanism).\"},\"staticDelegateCall(address,bytes)\":{\"notice\":\"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data).\"},\"totalStake()\":{\"notice\":\"Get a total amount of the collateral that can be slashed.\"},\"version()\":{\"notice\":\"Get the entity's version.\"},\"withdraw(address,uint256)\":{\"notice\":\"Withdraw collateral from the vault (it will be claimable after the next epoch).\"},\"withdrawalShares(uint256)\":{\"notice\":\"Get a total number of withdrawal shares at a given epoch.\"},\"withdrawalSharesOf(uint256,address)\":{\"notice\":\"Get a number of withdrawal shares for a particular account at a given epoch (zero if claimed).\"},\"withdrawals(uint256)\":{\"notice\":\"Get a total amount of the withdrawals at a given epoch.\"},\"withdrawalsOf(uint256,address)\":{\"notice\":\"Get withdrawals for a particular account at a given epoch (zero if claimed).\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/vault/Vault.sol\":\"Vault\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://942dad22fbdc1669f025540ba63aa3ccfad5f8458fc5d4525b31ebf272e7af45\",\"dweb:/ipfs/Qmdo4X2M82aM3AMoW2kf2jhYkSCyC4T1pHNd6obdsDFnAB\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45\",\"dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26\",\"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c\",\"dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0xbdc5e074d7dd6678f67e92b1a51a20226801a407b0e1af3da367c5d1ff4519ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a36cca6b22fff3db16fc789ff6c60eea71d4b156065d4d0c83a0bc5e91a77a8b\",\"dweb:/ipfs/QmYN3exd5AemxjBrN8XMB1p5LbbE16uC3sjbYjwi8AjcGR\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0xc7755af115020049e4140f224f9ee88d7e1799ffb0646f37bf0df24bf6213f58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f09bf94d5274334ec021f61a04659db303f31e60460e14b709c9bf187740111\",\"dweb:/ipfs/QmNvgomZYUwFAt4cZbPWAiTeSZQreGehY9BK5xyVJsUttb\"]},\"src/contracts/common/MigratableEntity.sol\":{\"keccak256\":\"0x2d736f4dacd5d7e7697503bc426c78b8250fe1694ca157965ec178da6807de58\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f1237acf96b4b9f9b69156e068eddd726a6e15bd8e87a18dc999cd4ba4da069c\",\"dweb:/ipfs/QmS6M8fiFFSeuJ4ZKKq1z8W7w4ybeHQSy5TLASGoc1LVic\"]},\"src/contracts/common/StaticDelegateCallable.sol\":{\"keccak256\":\"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764\",\"dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD\"]},\"src/contracts/libraries/Checkpoints.sol\":{\"keccak256\":\"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609\",\"dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE\"]},\"src/contracts/libraries/ERC4626Math.sol\":{\"keccak256\":\"0x8441160513c1cbeb1c3b9ee077bcc7e7ce20006b52a77c8dd39ff0ef89699939\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://943f8cc3e26ddf649f465f40c909819f5c864717c4baa339e9e403b9374a4653\",\"dweb:/ipfs/QmXPxi1sUDsrGprZdUgCzoPEosaZMv9ZhygWQ1vAi1phAB\"]},\"src/contracts/vault/Vault.sol\":{\"keccak256\":\"0x2ceff6ed3298c4cad144c99fcc79b51cb9397d6ebef00285b915848b476f8c2e\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://11f2fb3581854f3ab6e82e8d4935d9eb510c903a13c3f022346c2956a58f5307\",\"dweb:/ipfs/QmdUnoXoyYoG9SGWyQZCFyLDRUUX3eXyXetkRvw6jxqqBz\"]},\"src/contracts/vault/VaultStorage.sol\":{\"keccak256\":\"0x57db25b127d77ea3472de53e3a4af3354399655b9268638b99ca5925fa364a56\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://aa763d9a6ec508ae3abfb8228b72b9fd9525279e5135d4962e79ff059feb1173\",\"dweb:/ipfs/QmcbDR6E9wyEpu6V2FkEC4hnWy47zXA9LSKJde6zSGd33Q\"]},\"src/interfaces/common/IEntity.sol\":{\"keccak256\":\"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b\",\"dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv\"]},\"src/interfaces/common/IMigratableEntity.sol\":{\"keccak256\":\"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c\",\"dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds\"]},\"src/interfaces/common/IRegistry.sol\":{\"keccak256\":\"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014\",\"dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK\"]},\"src/interfaces/common/IStaticDelegateCallable.sol\":{\"keccak256\":\"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516\",\"dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi\"]},\"src/interfaces/delegator/IBaseDelegator.sol\":{\"keccak256\":\"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2\",\"dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8\"]},\"src/interfaces/slasher/IBaseSlasher.sol\":{\"keccak256\":\"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf\",\"dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx\"]},\"src/interfaces/vault/IVault.sol\":{\"keccak256\":\"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9\",\"dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R\"]},\"src/interfaces/vault/IVaultStorage.sol\":{\"keccak256\":\"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e\",\"dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"delegatorFactory","type":"address"},{"internalType":"address","name":"slasherFactory","type":"address"},{"internalType":"address","name":"vaultFactory","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"AddressInsufficientBalance"},{"inputs":[],"type":"error","name":"AlreadyClaimed"},{"inputs":[],"type":"error","name":"AlreadyInitialized"},{"inputs":[],"type":"error","name":"AlreadySet"},{"inputs":[],"type":"error","name":"CheckpointUnorderedInsertion"},{"inputs":[],"type":"error","name":"DelegatorAlreadyInitialized"},{"inputs":[],"type":"error","name":"DepositLimitReached"},{"inputs":[],"type":"error","name":"FailedInnerCall"},{"inputs":[],"type":"error","name":"InsufficientClaim"},{"inputs":[],"type":"error","name":"InsufficientDeposit"},{"inputs":[],"type":"error","name":"InsufficientRedemption"},{"inputs":[],"type":"error","name":"InsufficientWithdrawal"},{"inputs":[],"type":"error","name":"InvalidAccount"},{"inputs":[],"type":"error","name":"InvalidCaptureEpoch"},{"inputs":[],"type":"error","name":"InvalidClaimer"},{"inputs":[],"type":"error","name":"InvalidCollateral"},{"inputs":[],"type":"error","name":"InvalidDelegator"},{"inputs":[],"type":"error","name":"InvalidEpoch"},{"inputs":[],"type":"error","name":"InvalidEpochDuration"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"InvalidLengthEpochs"},{"inputs":[],"type":"error","name":"InvalidOnBehalfOf"},{"inputs":[],"type":"error","name":"InvalidRecipient"},{"inputs":[],"type":"error","name":"InvalidSlasher"},{"inputs":[],"type":"error","name":"InvalidTimestamp"},{"inputs":[],"type":"error","name":"MathOverflowedMulDiv"},{"inputs":[],"type":"error","name":"MissingRoles"},{"inputs":[],"type":"error","name":"NoPreviousEpoch"},{"inputs":[],"type":"error","name":"NotDelegator"},{"inputs":[],"type":"error","name":"NotFactory"},{"inputs":[],"type":"error","name":"NotInitialized"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"NotSlasher"},{"inputs":[],"type":"error","name":"NotWhitelistedDepositor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintDowncast"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"type":"error","name":"SafeERC20FailedOperation"},{"inputs":[],"type":"error","name":"SlasherAlreadyInitialized"},{"inputs":[],"type":"error","name":"TooMuchRedeem"},{"inputs":[],"type":"error","name":"TooMuchWithdraw"},{"inputs":[{"internalType":"address","name":"claimer","type":"address","indexed":true},{"internalType":"address","name":"recipient","type":"address","indexed":true},{"internalType":"uint256","name":"epoch","type":"uint256","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Claim","anonymous":false},{"inputs":[{"internalType":"address","name":"claimer","type":"address","indexed":true},{"internalType":"address","name":"recipient","type":"address","indexed":true},{"internalType":"uint256[]","name":"epochs","type":"uint256[]","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"ClaimBatch","anonymous":false},{"inputs":[{"internalType":"address","name":"depositor","type":"address","indexed":true},{"internalType":"address","name":"onBehalfOf","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false}],"type":"event","name":"Deposit","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint48","name":"captureTimestamp","type":"uint48","indexed":false},{"internalType":"uint256","name":"slashedAmount","type":"uint256","indexed":false}],"type":"event","name":"OnSlash","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true}],"type":"event","name":"SetDelegator","anonymous":false},{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"SetDepositLimit","anonymous":false},{"inputs":[{"internalType":"bool","name":"status","type":"bool","indexed":false}],"type":"event","name":"SetDepositWhitelist","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"bool","name":"status","type":"bool","indexed":false}],"type":"event","name":"SetDepositorWhitelistStatus","anonymous":false},{"inputs":[{"internalType":"bool","name":"status","type":"bool","indexed":false}],"type":"event","name":"SetIsDepositLimit","anonymous":false},{"inputs":[{"internalType":"address","name":"slasher","type":"address","indexed":true}],"type":"event","name":"SetSlasher","anonymous":false},{"inputs":[{"internalType":"address","name":"withdrawer","type":"address","indexed":true},{"internalType":"address","name":"claimer","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"burnedShares","type":"uint256","indexed":false},{"internalType":"uint256","name":"mintedShares","type":"uint256","indexed":false}],"type":"event","name":"Withdraw","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DELEGATOR_FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEPOSITOR_WHITELIST_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEPOSIT_LIMIT_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEPOSIT_WHITELIST_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_DEPOSIT_LIMIT_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"SLASHER_FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"activeBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hints","type":"bytes"}],"stateMutability":"view","type":"function","name":"activeBalanceOfAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"activeShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"activeSharesAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"activeSharesOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"activeSharesOfAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"activeStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"activeStakeAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"burner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"epoch","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"claim","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256[]","name":"epochs","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"claimBatch","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"collateral","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"currentEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"currentEpochStart","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"delegator","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"onBehalfOf","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"deposit","outputs":[{"internalType":"uint256","name":"depositedAmount","type":"uint256"},{"internalType":"uint256","name":"mintedShares","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"depositLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"depositWhitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"epochAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"epochDuration","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"epochDurationInit","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"initialVersion","type":"uint64"},{"internalType":"address","name":"owner_","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"isDelegatorInitialized","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"isDepositLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"isDepositorWhitelisted","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"isInitialized","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"isSlasherInitialized","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"isWithdrawalsClaimed","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"newVersion","type":"uint64"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"migrate"},{"inputs":[],"stateMutability":"view","type":"function","name":"nextEpochStart","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint48","name":"captureTimestamp","type":"uint48"}],"stateMutability":"nonpayable","type":"function","name":"onSlash","outputs":[{"internalType":"uint256","name":"slashedAmount","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"previousEpochStart","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[{"internalType":"address","name":"claimer","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"redeem","outputs":[{"internalType":"uint256","name":"withdrawnAssets","type":"uint256"},{"internalType":"uint256","name":"mintedShares","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"address","name":"delegator_","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setDelegator"},{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setDepositLimit"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setDepositWhitelist"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setDepositorWhitelistStatus"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setIsDepositLimit"},{"inputs":[{"internalType":"address","name":"slasher_","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setSlasher"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"slashableBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"slasher","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"staticDelegateCall"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"version","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"claimer","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"withdraw","outputs":[{"internalType":"uint256","name":"burnedShares","type":"uint256"},{"internalType":"uint256","name":"mintedShares","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"}],"stateMutability":"view","type":"function","name":"withdrawalShares","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"withdrawalSharesOf","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"}],"stateMutability":"view","type":"function","name":"withdrawals","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"withdrawalsOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{"activeBalanceOf(address)":{"params":{"account":"account to get the active balance for"},"returns":{"_0":"active balance for the account"}},"activeBalanceOfAt(address,uint48,bytes)":{"params":{"account":"account to get the active balance for","hints":"hints for checkpoints' indexes","timestamp":"time point to get the active balance for the account at"},"returns":{"_0":"active balance for the account at the timestamp"}},"activeShares()":{"returns":{"_0":"total number of active shares"}},"activeSharesAt(uint48,bytes)":{"params":{"hint":"hint for the checkpoint index","timestamp":"time point to get the total number of active shares at"},"returns":{"_0":"total number of active shares at the timestamp"}},"activeSharesOf(address)":{"params":{"account":"account to get the number of active shares for"},"returns":{"_0":"number of active shares for the account"}},"activeSharesOfAt(address,uint48,bytes)":{"params":{"account":"account to get the number of active shares for","hint":"hint for the checkpoint index","timestamp":"time point to get the number of active shares for the account at"},"returns":{"_0":"number of active shares for the account at the timestamp"}},"activeStake()":{"returns":{"_0":"total amount of active stake"}},"activeStakeAt(uint48,bytes)":{"params":{"hint":"hint for the checkpoint index","timestamp":"time point to get the total active stake at"},"returns":{"_0":"total amount of active stake at the timestamp"}},"claim(address,uint256)":{"params":{"epoch":"epoch to claim the collateral for","recipient":"account that receives the collateral"},"returns":{"amount":"amount of the collateral claimed"}},"claimBatch(address,uint256[])":{"params":{"epochs":"epochs to claim the collateral for","recipient":"account that receives the collateral"},"returns":{"amount":"amount of the collateral claimed"}},"currentEpoch()":{"returns":{"_0":"current epoch"}},"currentEpochStart()":{"returns":{"_0":"start of the current epoch"}},"deposit(address,uint256)":{"params":{"amount":"amount of the collateral to deposit","onBehalfOf":"account the deposit is made on behalf of"},"returns":{"depositedAmount":"real amount of the collateral deposited","mintedShares":"amount of the active shares minted"}},"epochAt(uint48)":{"details":"Reverts if the timestamp is less than the start of the epoch 0.","params":{"timestamp":"time point to get the epoch at"},"returns":{"_0":"epoch at the timestamp"}},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"initialize(uint64,address,bytes)":{"params":{"data":"some data to use","initialVersion":"initial version of the entity","owner":"initial owner of the entity"}},"isInitialized()":{"returns":{"_0":"if the vault is fully initialized"}},"migrate(uint64,bytes)":{"params":{"data":"some data to use","newVersion":"new version of the entity"}},"nextEpochStart()":{"returns":{"_0":"start of the next epoch"}},"onSlash(uint256,uint48)":{"details":"Only the slasher can call this function.","params":{"amount":"amount to slash","captureTimestamp":"time point when the stake was captured"},"returns":{"slashedAmount":"real amount of the collateral slashed"}},"owner()":{"details":"Returns the address of the current owner."},"previousEpochStart()":{"details":"Reverts if the current epoch is 0.","returns":{"_0":"start of the previous epoch"}},"redeem(address,uint256)":{"params":{"claimer":"account that needs to claim the withdrawal","shares":"amount of the active shares to redeem"},"returns":{"mintedShares":"amount of the epoch withdrawal shares minted","withdrawnAssets":"amount of the collateral withdrawn"}},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"setDepositLimit(uint256)":{"details":"Only a DEPOSIT_LIMIT_SET_ROLE holder can call this function.","params":{"limit":"deposit limit (maximum amount of the collateral that can be in the vault simultaneously)"}},"setDepositWhitelist(bool)":{"details":"Only a DEPOSIT_WHITELIST_SET_ROLE holder can call this function.","params":{"status":"if enabling deposit whitelist"}},"setDepositorWhitelistStatus(address,bool)":{"details":"Only a DEPOSITOR_WHITELIST_ROLE holder can call this function.","params":{"account":"account for which the whitelist status is set","status":"if whitelisting the account"}},"setIsDepositLimit(bool)":{"details":"Only a IS_DEPOSIT_LIMIT_SET_ROLE holder can call this function.","params":{"status":"if enabling deposit limit"}},"slashableBalanceOf(address)":{"params":{"account":"account to get the slashable collateral for"},"returns":{"_0":"total amount of the account's slashable collateral"}},"staticDelegateCall(address,bytes)":{"details":"It allows to use this contract's storage on-chain.","params":{"data":"data to make a delegatecall with","target":"address of the contract to make a delegatecall to"}},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"totalStake()":{"returns":{"_0":"total amount of the slashable collateral"}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"version()":{"details":"Starts from 1.","returns":{"_0":"version of the entity"}},"withdraw(address,uint256)":{"params":{"amount":"amount of the collateral to withdraw","claimer":"account that needs to claim the withdrawal"},"returns":{"burnedShares":"amount of the active shares burned","mintedShares":"amount of the epoch withdrawal shares minted"}},"withdrawalsOf(uint256,address)":{"params":{"account":"account to get the withdrawals for","epoch":"epoch to get the withdrawals for the account at"},"returns":{"_0":"withdrawals for the account at the epoch"}}},"version":1},"userdoc":{"kind":"user","methods":{"DELEGATOR_FACTORY()":{"notice":"Get the delegator factory's address."},"DEPOSITOR_WHITELIST_ROLE()":{"notice":"Get a depositor whitelist status setter's role."},"DEPOSIT_LIMIT_SET_ROLE()":{"notice":"Get a deposit limit setter's role."},"DEPOSIT_WHITELIST_SET_ROLE()":{"notice":"Get a deposit whitelist enabler/disabler's role."},"FACTORY()":{"notice":"Get the factory's address."},"IS_DEPOSIT_LIMIT_SET_ROLE()":{"notice":"Get a deposit limit enabler/disabler's role."},"SLASHER_FACTORY()":{"notice":"Get the slasher factory's address."},"activeBalanceOf(address)":{"notice":"Get an active balance for a particular account."},"activeBalanceOfAt(address,uint48,bytes)":{"notice":"Get an active balance for a particular account at a given timestamp using hints."},"activeShares()":{"notice":"Get a total number of active shares in the vault."},"activeSharesAt(uint48,bytes)":{"notice":"Get a total number of active shares in the vault at a given timestamp using a hint."},"activeSharesOf(address)":{"notice":"Get a number of active shares for a particular account."},"activeSharesOfAt(address,uint48,bytes)":{"notice":"Get a total number of active shares for a particular account at a given timestamp using a hint."},"activeStake()":{"notice":"Get a total amount of active stake in the vault."},"activeStakeAt(uint48,bytes)":{"notice":"Get a total amount of active stake in the vault at a given timestamp using a hint."},"burner()":{"notice":"Get a burner to issue debt to (e.g., 0xdEaD or some unwrapper contract)."},"claim(address,uint256)":{"notice":"Claim collateral from the vault."},"claimBatch(address,uint256[])":{"notice":"Claim collateral from the vault for multiple epochs."},"collateral()":{"notice":"Get a vault collateral."},"currentEpoch()":{"notice":"Get a current vault epoch."},"currentEpochStart()":{"notice":"Get a start of the current vault epoch."},"delegator()":{"notice":"Get a delegator (it delegates the vault's stake to networks and operators)."},"deposit(address,uint256)":{"notice":"Deposit collateral into the vault."},"depositLimit()":{"notice":"Get a deposit limit (maximum amount of the active stake that can be in the vault simultaneously)."},"depositWhitelist()":{"notice":"Get if the deposit whitelist is enabled."},"epochAt(uint48)":{"notice":"Get an epoch at a given timestamp."},"epochDuration()":{"notice":"Get a duration of the vault epoch."},"epochDurationInit()":{"notice":"Get a time point of the epoch duration set."},"initialize(uint64,address,bytes)":{"notice":"Initialize this entity contract by using a given data and setting a particular version and owner."},"isDelegatorInitialized()":{"notice":"Get if the delegator is initialized."},"isDepositLimit()":{"notice":"Get if the deposit limit is set."},"isDepositorWhitelisted(address)":{"notice":"Get if a given account is whitelisted as a depositor."},"isInitialized()":{"notice":"Check if the vault is fully initialized (a delegator and a slasher are set)."},"isSlasherInitialized()":{"notice":"Get if the slasher is initialized."},"isWithdrawalsClaimed(uint256,address)":{"notice":"Get if the withdrawals are claimed for a particular account at a given epoch."},"migrate(uint64,bytes)":{"notice":"Migrate this entity to a particular newer version using a given data."},"nextEpochStart()":{"notice":"Get a start of the next vault epoch."},"onSlash(uint256,uint48)":{"notice":"Slash callback for burning collateral."},"previousEpochStart()":{"notice":"Get a start of the previous vault epoch."},"redeem(address,uint256)":{"notice":"Redeem collateral from the vault (it will be claimable after the next epoch)."},"setDepositLimit(uint256)":{"notice":"Set a deposit limit."},"setDepositWhitelist(bool)":{"notice":"Enable/disable deposit whitelist."},"setDepositorWhitelistStatus(address,bool)":{"notice":"Set a depositor whitelist status."},"setIsDepositLimit(bool)":{"notice":"Enable/disable deposit limit."},"slashableBalanceOf(address)":{"notice":"Get a total amount of the collateral that can be slashed for a given account."},"slasher()":{"notice":"Get a slasher (it provides networks a slashing mechanism)."},"staticDelegateCall(address,bytes)":{"notice":"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data)."},"totalStake()":{"notice":"Get a total amount of the collateral that can be slashed."},"version()":{"notice":"Get the entity's version."},"withdraw(address,uint256)":{"notice":"Withdraw collateral from the vault (it will be claimable after the next epoch)."},"withdrawalShares(uint256)":{"notice":"Get a total number of withdrawal shares at a given epoch."},"withdrawalSharesOf(uint256,address)":{"notice":"Get a number of withdrawal shares for a particular account at a given epoch (zero if claimed)."},"withdrawals(uint256)":{"notice":"Get a total amount of the withdrawals at a given epoch."},"withdrawalsOf(uint256,address)":{"notice":"Get withdrawals for a particular account at a given epoch (zero if claimed)."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/vault/Vault.sol":"Vault"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol":{"keccak256":"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74","urls":["bzz-raw://942dad22fbdc1669f025540ba63aa3ccfad5f8458fc5d4525b31ebf272e7af45","dweb:/ipfs/Qmdo4X2M82aM3AMoW2kf2jhYkSCyC4T1pHNd6obdsDFnAB"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8","urls":["bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45","dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41","urls":["bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26","dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70","urls":["bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c","dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff","urls":["bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d","dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386","urls":["bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0","dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721","urls":["bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245","dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe","urls":["bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c","dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol":{"keccak256":"0xbdc5e074d7dd6678f67e92b1a51a20226801a407b0e1af3da367c5d1ff4519ad","urls":["bzz-raw://a36cca6b22fff3db16fc789ff6c60eea71d4b156065d4d0c83a0bc5e91a77a8b","dweb:/ipfs/QmYN3exd5AemxjBrN8XMB1p5LbbE16uC3sjbYjwi8AjcGR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0xc7755af115020049e4140f224f9ee88d7e1799ffb0646f37bf0df24bf6213f58","urls":["bzz-raw://7f09bf94d5274334ec021f61a04659db303f31e60460e14b709c9bf187740111","dweb:/ipfs/QmNvgomZYUwFAt4cZbPWAiTeSZQreGehY9BK5xyVJsUttb"],"license":"MIT"},"src/contracts/common/MigratableEntity.sol":{"keccak256":"0x2d736f4dacd5d7e7697503bc426c78b8250fe1694ca157965ec178da6807de58","urls":["bzz-raw://f1237acf96b4b9f9b69156e068eddd726a6e15bd8e87a18dc999cd4ba4da069c","dweb:/ipfs/QmS6M8fiFFSeuJ4ZKKq1z8W7w4ybeHQSy5TLASGoc1LVic"],"license":"BUSL-1.1"},"src/contracts/common/StaticDelegateCallable.sol":{"keccak256":"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90","urls":["bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764","dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD"],"license":"BUSL-1.1"},"src/contracts/libraries/Checkpoints.sol":{"keccak256":"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c","urls":["bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609","dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE"],"license":"MIT"},"src/contracts/libraries/ERC4626Math.sol":{"keccak256":"0x8441160513c1cbeb1c3b9ee077bcc7e7ce20006b52a77c8dd39ff0ef89699939","urls":["bzz-raw://943f8cc3e26ddf649f465f40c909819f5c864717c4baa339e9e403b9374a4653","dweb:/ipfs/QmXPxi1sUDsrGprZdUgCzoPEosaZMv9ZhygWQ1vAi1phAB"],"license":"MIT"},"src/contracts/vault/Vault.sol":{"keccak256":"0x2ceff6ed3298c4cad144c99fcc79b51cb9397d6ebef00285b915848b476f8c2e","urls":["bzz-raw://11f2fb3581854f3ab6e82e8d4935d9eb510c903a13c3f022346c2956a58f5307","dweb:/ipfs/QmdUnoXoyYoG9SGWyQZCFyLDRUUX3eXyXetkRvw6jxqqBz"],"license":"BUSL-1.1"},"src/contracts/vault/VaultStorage.sol":{"keccak256":"0x57db25b127d77ea3472de53e3a4af3354399655b9268638b99ca5925fa364a56","urls":["bzz-raw://aa763d9a6ec508ae3abfb8228b72b9fd9525279e5135d4962e79ff059feb1173","dweb:/ipfs/QmcbDR6E9wyEpu6V2FkEC4hnWy47zXA9LSKJde6zSGd33Q"],"license":"BUSL-1.1"},"src/interfaces/common/IEntity.sol":{"keccak256":"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21","urls":["bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b","dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv"],"license":"MIT"},"src/interfaces/common/IMigratableEntity.sol":{"keccak256":"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4","urls":["bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c","dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds"],"license":"MIT"},"src/interfaces/common/IRegistry.sol":{"keccak256":"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb","urls":["bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014","dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK"],"license":"MIT"},"src/interfaces/common/IStaticDelegateCallable.sol":{"keccak256":"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5","urls":["bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516","dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi"],"license":"MIT"},"src/interfaces/delegator/IBaseDelegator.sol":{"keccak256":"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee","urls":["bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2","dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8"],"license":"MIT"},"src/interfaces/slasher/IBaseSlasher.sol":{"keccak256":"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404","urls":["bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf","dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx"],"license":"MIT"},"src/interfaces/vault/IVault.sol":{"keccak256":"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235","urls":["bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9","dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R"],"license":"MIT"},"src/interfaces/vault/IVaultStorage.sol":{"keccak256":"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22","urls":["bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e","dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6"],"license":"MIT"}},"version":1},"id":95} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[{"name":"delegatorFactory","type":"address","internalType":"address"},{"name":"slasherFactory","type":"address","internalType":"address"},{"name":"vaultFactory","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"DELEGATOR_FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"DEPOSITOR_WHITELIST_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"DEPOSIT_LIMIT_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"DEPOSIT_WHITELIST_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"IS_DEPOSIT_LIMIT_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"SLASHER_FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"activeBalanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"activeBalanceOfAt","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hints","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"activeShares","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"activeSharesAt","inputs":[{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"activeSharesOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"activeSharesOfAt","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"activeStake","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"activeStakeAt","inputs":[{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"burner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"claim","inputs":[{"name":"recipient","type":"address","internalType":"address"},{"name":"epoch","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"claimBatch","inputs":[{"name":"recipient","type":"address","internalType":"address"},{"name":"epochs","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"collateral","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"currentEpoch","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"currentEpochStart","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"delegator","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"deposit","inputs":[{"name":"onBehalfOf","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"depositedAmount","type":"uint256","internalType":"uint256"},{"name":"mintedShares","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"depositLimit","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"depositWhitelist","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"epochAt","inputs":[{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"epochDuration","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"epochDurationInit","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"initialVersion","type":"uint64","internalType":"uint64"},{"name":"owner_","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isDelegatorInitialized","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isDepositLimit","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isDepositorWhitelisted","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isInitialized","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isSlasherInitialized","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isWithdrawalsClaimed","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"migrate","inputs":[{"name":"newVersion","type":"uint64","internalType":"uint64"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"nextEpochStart","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"onSlash","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"slashedAmount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"previousEpochStart","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"redeem","inputs":[{"name":"claimer","type":"address","internalType":"address"},{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"withdrawnAssets","type":"uint256","internalType":"uint256"},{"name":"mintedShares","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDelegator","inputs":[{"name":"delegator_","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDepositLimit","inputs":[{"name":"limit","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDepositWhitelist","inputs":[{"name":"status","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDepositorWhitelistStatus","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"status","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setIsDepositLimit","inputs":[{"name":"status","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSlasher","inputs":[{"name":"slasher_","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"slashableBalanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"slasher","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"staticDelegateCall","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"totalStake","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"version","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"withdraw","inputs":[{"name":"claimer","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"burnedShares","type":"uint256","internalType":"uint256"},{"name":"mintedShares","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawalShares","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"withdrawalSharesOf","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"withdrawals","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"withdrawalsOf","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"Claim","inputs":[{"name":"claimer","type":"address","indexed":true,"internalType":"address"},{"name":"recipient","type":"address","indexed":true,"internalType":"address"},{"name":"epoch","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ClaimBatch","inputs":[{"name":"claimer","type":"address","indexed":true,"internalType":"address"},{"name":"recipient","type":"address","indexed":true,"internalType":"address"},{"name":"epochs","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Deposit","inputs":[{"name":"depositor","type":"address","indexed":true,"internalType":"address"},{"name":"onBehalfOf","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OnSlash","inputs":[{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","indexed":false,"internalType":"uint48"},{"name":"slashedAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SetDelegator","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SetDepositLimit","inputs":[{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SetDepositWhitelist","inputs":[{"name":"status","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"SetDepositorWhitelistStatus","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"status","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"SetIsDepositLimit","inputs":[{"name":"status","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"SetSlasher","inputs":[{"name":"slasher","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Withdraw","inputs":[{"name":"withdrawer","type":"address","indexed":true,"internalType":"address"},{"name":"claimer","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"burnedShares","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"mintedShares","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"AlreadyClaimed","inputs":[]},{"type":"error","name":"AlreadyInitialized","inputs":[]},{"type":"error","name":"AlreadySet","inputs":[]},{"type":"error","name":"CheckpointUnorderedInsertion","inputs":[]},{"type":"error","name":"DelegatorAlreadyInitialized","inputs":[]},{"type":"error","name":"DepositLimitReached","inputs":[]},{"type":"error","name":"InsufficientClaim","inputs":[]},{"type":"error","name":"InsufficientDeposit","inputs":[]},{"type":"error","name":"InsufficientRedemption","inputs":[]},{"type":"error","name":"InsufficientWithdrawal","inputs":[]},{"type":"error","name":"InvalidAccount","inputs":[]},{"type":"error","name":"InvalidCaptureEpoch","inputs":[]},{"type":"error","name":"InvalidClaimer","inputs":[]},{"type":"error","name":"InvalidCollateral","inputs":[]},{"type":"error","name":"InvalidDelegator","inputs":[]},{"type":"error","name":"InvalidEpoch","inputs":[]},{"type":"error","name":"InvalidEpochDuration","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"InvalidLengthEpochs","inputs":[]},{"type":"error","name":"InvalidOnBehalfOf","inputs":[]},{"type":"error","name":"InvalidRecipient","inputs":[]},{"type":"error","name":"InvalidSlasher","inputs":[]},{"type":"error","name":"InvalidTimestamp","inputs":[]},{"type":"error","name":"MissingRoles","inputs":[]},{"type":"error","name":"NoPreviousEpoch","inputs":[]},{"type":"error","name":"NotDelegator","inputs":[]},{"type":"error","name":"NotFactory","inputs":[]},{"type":"error","name":"NotInitialized","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"NotSlasher","inputs":[]},{"type":"error","name":"NotWhitelistedDepositor","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]},{"type":"error","name":"SlasherAlreadyInitialized","inputs":[]},{"type":"error","name":"TooMuchRedeem","inputs":[]},{"type":"error","name":"TooMuchWithdraw","inputs":[]}],"bytecode":{"object":"0x60e03461013c57601f614a8938819003918201601f1916830192916001600160401b03918285118486101761014057816060928592604097885283398101031261013c5761004c82610154565b916100648461005d60208401610154565b9201610154565b9260805260a0527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff82861c1661012b5780808316036100e7575b50505060c052516149209081610169823960805181818161119f01526116d2015260a05181818161183b0152611d24015260c05181818161077101526109a20152f35b6001600160401b0319909116811790915582519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80806100a4565b845163f92ee8a960e01b8152600490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b038216820361013c5756fe60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a7146104345780631415519b1461042f5780631b66c9e11461042a5780631e9a695014610425578063248a9ca31461042057806327810b6e1461041b578063281f5752146104165780632abe3048146104115780632d73c69c1461040c5780632dd31000146104075780632f2ff15d1461040257806336568abe146103fd578063392e53cd146103f85780634105a7dd146103f357806346361671146103ee57806347e7ef24146103e957806348d3b775146103e45780634ff0876a146103df57806350861adc146103da57806350f22068146103d55780635346e34f146103d057806354fd4d50146103cb57806357ec83cc146103c657806359f769a9146103c15780635cc07076146103bc57806361a8c8c4146103b75780636da3e06d146103b25780636ec1e3f8146103ad578063715018a6146103a85780637278e31c146103a357806373790ab31461039e5780637667180814610399578063794b15b7146103945780637953b33b1461038f5780637c04c80a1461038a578063810da75d1461038557806383cd9cc31461038057806387df07881461037b5780638b0e9f3f146103765780638da5cb5b1461037157806391d148541461036c5780639d66201b146103675780639f86fd8514610362578063a1b122021461035d578063a217fddf14610358578063a21a1df914610353578063a28614661461034e578063a3b5417214610349578063a5d0322314610344578063aabc24961461033f578063aad3ec961461033a578063afba70ad14610335578063b134427114610330578063bd49c35f1461032b578063bdc8144b14610326578063bfefcd7b14610321578063c31e8dd71461031c578063ce9b793014610317578063d547741f14610312578063d8dfeb451461030d578063db38871514610308578063ecf7085814610303578063efb559d6146102fe578063f2fde38b146102f9578063f3fef3a3146102f45763f5e7ee0f146102ef575f80fd5b6123c1565b61231b565b6122ee565b61219f565b612182565b612148565b61211d565b6120d1565b6120a9565b61203f565b612025565b611f47565b611f2d565b611f05565b611edb565b611e1a565b611c63565b611c1d565b611bd0565b611add565b611aa3565b611a89565b611a65565b611998565b61195e565b611900565b6118cc565b61186a565b611826565b61166d565b611654565b6115ee565b6115c7565b611587565b61156d565b61152c565b61125a565b6111f3565b6111ce565b61118a565b611137565b61110d565b6110e6565b610fae565b610f7c565b610ee7565b610ece565b610e71565b610e51565b610e30565b610b72565b610b4a565b610aaf565b610a6a565b610a1f565b6109d1565b61098d565b610919565b61072b565b61065d565b610635565b6105fc565b610513565b6104c8565b61048e565b3461048a57602036600319011261048a5760043563ffffffff60e01b811680910361048a57602090637965db0b60e01b8114908115610479575b506040519015158152f35b6301ffc9a760e01b1490505f61046e565b5f80fd5b3461048a575f36600319011261048a5760206040517fc6aaadd7371d5e8f9ed6849dd66a66573a3ba37167d03f4352c9ba5693678fac8152f35b3461048a575f36600319011261048a5760206040517f9c56d972d63cbb4195b3c1484691dfc220fa96a4c47e7b6613bd82a022029e068152f35b6001600160a01b0381160361048a57565b3461048a57604036600319011261048a5760043561053081610502565b6024359061053c612be6565b6001600160a01b038116156105eb57335f908152600e6020526040902061056790613c6f565b613c6f565b82116105d957610587610578613b82565b610580613bfb565b9084613cbc565b9182156105c4578261059892612c15565b906105af60015f805160206148ab83398151915255565b604080519182526020820192909252f35b0390f35b60405160016245ddc760e11b03198152600490fd5b604051632418411f60e11b8152600490fd5b6040516208978560e71b8152600490fd5b3461048a57602036600319011261048a576004355f525f8051602061488b8339815191526020526020600160405f200154604051908152f35b3461048a575f36600319011261048a576001546040516001600160a01b039091168152602090f35b3461048a575f36600319011261048a5761067561293a565b80156106d65760015465ffffffffffff8160a01c16915f1981019081116106d1576106a39160d01c9061241a565b81018091116106d1576106b86105c091612d8f565b60405165ffffffffffff90911681529081906020820190565b6123eb565b604051639fa56a5b60e01b8152600490fd5b600435906001600160401b038216820361048a57565b9181601f8401121561048a578235916001600160401b03831161048a576020838186019501011161048a57565b3461048a57604036600319011261048a576107446106e8565b6001600160401b0360243581811161048a576107649036906004016106fe565b92909161076f612be6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036107e9575f805160206148cb833981519152549060ff8260401c169283156107d9575b50505015612dc1575b60405163f92ee8a960e01b8152600490fd5b81169116101590505f80806107be565b604051631966391b60e11b8152600490fd5b65ffffffffffff81160361048a57565b634e487b7160e01b5f52604160045260245ffd5b606081019081106001600160401b0382111761083a57604052565b61080b565b604081019081106001600160401b0382111761083a57604052565b90601f801991011681019081106001600160401b0382111761083a57604052565b6040519061016082018281106001600160401b0382111761083a57604052565b604051906108a88261083f565b565b6001600160401b03811161083a57601f01601f191660200190565b9291926108d1826108aa565b916108df604051938461085a565b82948184528183011161048a578281602093845f960137010152565b9080601f8301121561048a57816020610916933591016108c5565b90565b3461048a57606036600319011261048a5760043561093681610502565b60243590610943826107fb565b604435906001600160401b03821161048a576020926109696109859336906004016108fb565b6001600160a01b039092165f908152600e855260409020612f87565b604051908152f35b3461048a575f36600319011261048a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461048a57604036600319011261048a57610a1d6024356004356109f482610502565b805f525f8051602061488b833981519152602052610a18600160405f20015461315e565b61345e565b005b3461048a57604036600319011261048a57602435610a3c81610502565b336001600160a01b03821603610a5857610a1d90600435613494565b60405163334bd91960e11b8152600490fd5b3461048a575f36600319011261048a5760ff60025460a01c1680610a96575b6020906040519015158152f35b5060035460a01c60ff16610a89565b8015150361048a57565b3461048a57602036600319011261048a57600435610acc81610aa5565b610ad4612be6565b610adc613053565b5f54901515908160ff8216151514610b385760ff191660ff8216175f556040519081527f3e12b7b36c75ac9609a3f58609b331210428e1a85909132638955ba0301eec3390602090a160015f805160206148ab83398151915255005b60405163a741a04560e01b8152600490fd5b3461048a575f36600319011261048a57602065ffffffffffff60015460a01c16604051908152f35b3461048a5760408060031936011261048a576004803591610b9283610502565b610b9a612be6565b6001600160a01b0391838316908115610e22575f5460ff811680610e09575b610dfa5783516370a0823160e01b808252308483019081529096602093909160109190911c82169084908490819083010381845afa928315610dd2575f93610dd7575b50610c0e906024359030903390613526565b5f5486519788523085890190815290979184918391908290819060200103918b60101c165afa908115610dd257610c4d935f92610da5575b505061240d565b938415610d965760081c60ff1680610d81575b610d735750906105c091610d11610c75613b82565b95610cbe610c81613bfb565b610ca9610c8f8a838b613cbc565b99610ca38a610c9d42612d8f565b9261243b565b9061367a565b5050610cb889610c9d42612d8f565b9061375a565b50506001600160a01b0381165f908152600e6020526040902090610d0b88610d06610562610ceb42612d8f565b6001600160a01b039095165f908152600e6020526040902090565b61243b565b91613836565b505081518481526020810186905233907fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d790604090a3610d5d60015f805160206148ab83398151915255565b5191825260208201929092529081906040820190565b8251632484557960e01b8152fd5b50610d8e84610d06613b82565b815410610c60565b50825163070f6eed60e11b8152fd5b610dc49250803d10610dcb575b610dbc818361085a565b810190612469565b5f80610c46565b503d610db2565b612478565b610c0e919350610df390853d8711610dcb57610dbc818361085a565b9290610bfc565b5082516304f63b8560e01b8152fd5b50335f9081526005602052604090205460ff1615610bb9565b8251630d534ce360e11b8152fd5b3461048a575f36600319011261048a57602060ff5f54166040519015158152f35b3461048a575f36600319011261048a57602060015460d01c604051908152f35b3461048a575f36600319011261048a57602060ff60025460a01c166040519015158152f35b90604060031983011261048a57600435610eaf816107fb565b91602435906001600160401b03821161048a57610916916004016108fb565b3461048a576020610985610ee136610e96565b90612dfd565b3461048a57602036600319011261048a57600435610f0481610aa5565b610f0c612be6565b610f146130b0565b5f54901515908160ff8260081c16151514610b385761ff001916600882901b61ff0016175f556040519081527ffa7a25a0b611d4ba3c0ea990e90dc23d484a5dd7a1be4733fef2946ba74530c690602090a1610a1d60015f805160206148ab83398151915255565b3461048a575f36600319011261048a5760206001600160401b035f805160206148cb8339815191525416604051908152f35b3461048a57606036600319011261048a57610fc76106e8565b602435610fd381610502565b6001600160401b039160443583811161048a57610ff49036906004016106fe565b5f805160206148cb8339815191529491855494838616806110d55760ff8760401c169081156110c8575b506107c7577fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2966110c39661108b958716906001600160401b0319161790556110865f805160206148cb833981519152600160401b68ff000000000000000019825416179055565b612483565b5f805160206148cb833981519152805468ff0000000000000000191690556040516001600160401b0390911681529081906020820190565b0390a1005b905084861611155f61101e565b60405162dc149f60e41b8152600490fd5b3461048a57602036600319011261048a57602061098560043561110881610502565b6128a3565b3461048a57602036600319011261048a576004355f526006602052602060405f2054604051908152f35b3461048a575f36600319011261048a5760015465ffffffffffff61116d818360a01c169261116361293a565b9060d01c9061241a565b82018092116106d157611181602092612d8f565b60405191168152f35b3461048a575f36600319011261048a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461048a575f36600319011261048a57602060ff60035460a01c166040519015158152f35b3461048a575f36600319011261048a5761120b6139c8565b5f8051602061482b83398151915280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461048a57604036600319011261048a5760043560243561127a816107fb565b611282612be6565b60035461129f906001600160a01b03165b6001600160a01b031690565b330361151a576112ad61293a565b906112b78161296e565b9082151580611509575b8015611500575b6114ee576105c0937ff9d090c096f71cd1659861a9ce5b6f384bceb4e2fa4e4a19edf6489a9b8d56c7926112fa613b82565b946113156113078261242d565b5f52600660205260405f2090565b54908281036114085750611329818761243b565b8381188185100281189687806113c1575b50505050505b8361138d575b6040805191825265ffffffffffff929092166020820152908101839052606090a161137d60015f805160206148ab83398151915255565b6040519081529081906020820190565b5f546113bc9085906113aa9060101c6001600160a01b0316611293565b6001546001600160a01b031690613a97565b611346565b6113fd93610c4683610ca36113e76113e0611307986113f79888613a0a565b809661240d565b946113f142612d8f565b9261240d565b9261242d565b555f8080808761133a565b915061141c825f52600660205260405f2090565b549061142c81610d06848a61243b565b908482188286100282189788611447575b5050505050611340565b6114bc938361146f9361147c8c6114776114656114ad998884613a0a565b9788958584613a0a565b94859261240d565b61240d565b938484106114c7575b610c4690610ca361149b9596976113f142612d8f565b6114a76113078761242d565b5561240d565b915f52600660205260405f2090565b555f8080808061143d565b916114e3610c46916114dd8661149b979861240d565b9061243b565b859450929050611485565b604051635e18d2a560e01b8152600490fd5b508282116112c8565b50611513836123ff565b82106112c1565b60405163dabc4ad960e01b8152600490fd5b3461048a575f36600319011261048a5760015465ffffffffffff808260a01c169161155561293a565b600181018091116106d15761116d9160d01c9061241a565b3461048a575f36600319011261048a57602061098561293a565b3461048a57602036600319011261048a576004356115a481610502565b60018060a01b03165f526005602052602060ff60405f2054166040519015158152f35b3461048a57602036600319011261048a5760206109856004356115e9816107fb565b61296e565b3461048a57604036600319011261048a5760043561160b81610502565b6024356001600160401b0380821161048a573660238301121561048a57816004013590811161048a573660248260051b8401011161048a576105c092602461137d9301906129a9565b3461048a57602061098561166736610e96565b90612ed2565b3461048a5760208060031936011261048a57600480359061168d82610502565b611695612be6565b60025460a01c60ff16611817576040516302910f8b60e31b81526001600160a01b03838116838301908152909491908290829081906020010381887f0000000000000000000000000000000000000000000000000000000000000000165afa908115610dd2575f916117ea575b50156117da5760405163fbfa77cf60e01b8152838516949082818581895afa928315610dd2575f936117ab575b50503091160361179c5750600280546001600160a01b03929092166001600160a81b031990921691909117600160a01b1790557fdb2160616f776a37b24808115554e79439bf26cccbbd4438190cc6d28e80ecd15f80a2610a1d60015f805160206148ab83398151915255565b60405163b9f0f17160e01b8152fd5b6117cb929350803d106117d3575b6117c3818361085a565b810190612b02565b905f8061172f565b503d6117b9565b506040516324e5af8d60e21b8152fd5b61180a9150823d8411611810575b611802818361085a565b810190612ae2565b5f611702565b503d6117f8565b604051631380833b60e01b8152fd5b3461048a575f36600319011261048a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461048a575f36600319011261048a5761188261293a565b61188a613b82565b90805f52600660205260405f205482018092116106d157600181018091116106d1575f52600660205260405f205481018091116106d157602090604051908152f35b3461048a575f36600319011261048a575f8051602061482b833981519152546040516001600160a01b039091168152602090f35b3461048a57604036600319011261048a57602060ff61195260243561192481610502565b6004355f525f8051602061488b833981519152845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b3461048a57602036600319011261048a5760043561197b81610502565b60018060a01b03165f52600e602052602061098560405f20613c6f565b3461048a5760408060031936011261048a576004356119b681610502565b6024356001600160401b03811161048a575f80611a54936119dd60809436906004016106fe565b908188519283928337810184815203915af43d15611a5c5760203d611a01816108aa565b90611a0e8751928361085a565b81523d5f8383013e5b8551958693151583850152808401528051918291826060860152018484015e5f838284010152601f8019910116810103606081018452018261085a565b805190602001fd5b60206060611a17565b3461048a575f36600319011261048a57602060ff5f5460081c166040519015158152f35b3461048a575f36600319011261048a5760206040515f8152f35b3461048a575f36600319011261048a5760206040517f4a634bc14d77baf979756509ef4298c6f6318af357828612545267ee2eb792338152f35b3461048a57604036600319011261048a57600435611afa81610502565b602435611b0681610aa5565b611b0e612be6565b611b16613107565b6001600160a01b038216918215611bbe575f8381526005602052604090205460ff16151582151514610b38576001600160a01b03165f9081526005602052604090207ff991b1ecfb5115cbb36a2b2e2240c058406d2acc2fcc6e9e2dc99d845ff70a6291611ba591611b93908260ff801983541691151516179055565b60405190151581529081906020820190565b0390a2610a1d60015f805160206148ab83398151915255565b604051630da30f6560e31b8152600490fd5b3461048a57604036600319011261048a576020611c14602435611bf281610502565b6004355f526008835260405f209060018060a01b03165f5260205260405f2090565b54604051908152f35b3461048a57604036600319011261048a57602060ff611952602435611c4181610502565b6004355f526009845260405f209060018060a01b03165f5260205260405f2090565b3461048a5760208060031936011261048a576004803590611c8382610502565b611c8b612be6565b60035460a01c60ff16611e0b576001600160a01b03828116939084611cf9575b6003805460ff60a01b1916600160a01b179055847fe7e4c932e03abddfe20f83af42c33627e816115c7ec2b168441f65dc14bfc3ba5f80a2610a1d60015f805160206148ab83398151915255565b6040516302910f8b60e31b81526001600160a01b0385168482019081528390829081906020010381857f0000000000000000000000000000000000000000000000000000000000000000165afa908115610dd2575f91611dee575b5015611ddd5760405163fbfa77cf60e01b815282818581895afa928315610dd2575f93611dbe575b505030911603611daf5750600380546001600160a01b0319166001600160a01b039092169190911790555f808080611cab565b604051633f3e089160e21b8152fd5b611dd5929350803d106117d3576117c3818361085a565b905f80611d7c565b60405163dabc4ad960e01b81528390fd5b611e059150833d851161181057611802818361085a565b5f611d54565b60405163703fe2e560e01b8152fd5b3461048a57604036600319011261048a57600435611e3781610502565b60243590611e43612be6565b6001600160a01b0391818316908115611ec957611e746105c094611e6683613ae6565b9485915f5460101c16613a97565b604080519182526020820184905233917f865ca08d59f5cb456e85cd2f7ef63664ea4f73327414e9d8152c4158b0e946459190a360015f805160206148ab833981519152556040519081529081906020820190565b604051634e46966960e11b8152600490fd5b3461048a57602036600319011261048a576004355f526007602052602060405f2054604051908152f35b3461048a575f36600319011261048a576003546040516001600160a01b039091168152602090f35b3461048a575f36600319011261048a576020610985613b82565b3461048a57602036600319011261048a57600435611f63612be6565b335f9081527f2d4ccbfe9f7672a6f2537c1e5bce6adacb73706879154bbab6ce096012d6721660205260409020547f4a634bc14d77baf979756509ef4298c6f6318af357828612545267ee2eb792339060ff161561200757508060045414610b38576020817f854df3eb95564502c8bc871ebdd15310ee26270f955f6c6bd8cea68e75045bc092600455604051908152a160015f805160206148ab83398151915255005b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b3461048a575f36600319011261048a576020610985613bfb565b3461048a57602036600319011261048a5760043561205c81610502565b61206461293a565b61206d826128a3565b916120788183612b88565b83018093116106d157600182018092116106d15761209591612b88565b81018091116106d157602090604051908152f35b3461048a575f36600319011261048a576002546040516001600160a01b039091168152602090f35b3461048a57604036600319011261048a57610a1d6024356004356120f482610502565b805f525f8051602061488b833981519152602052612118600160405f20015461315e565b613494565b3461048a575f36600319011261048a575f5460405160109190911c6001600160a01b03168152602090f35b3461048a575f36600319011261048a5760206040517fbae4ee3de6c709ff9a002e774c5b78cb381560b219213c88ae0f1e207c03c0238152f35b3461048a575f36600319011261048a576020600454604051908152f35b3461048a57606036600319011261048a576004356121bc81610502565b602435906121c9826107fb565b6001600160401b039160443583811161048a576121ea9036906004016106fe565b909260409384516121fa8161081f565b60608152606060208201526060868201529280612259575b6105c08661224a878761224461222b8984845191612448565b928561223b602085015183612ed2565b93015190612dfd565b91613cbc565b90519081529081906020820190565b810193925060208185031261048a5780359086821161048a57019260608482031261048a5784519561228a8761081f565b843581811161048a578261229f9187016108fb565b8752602085013581811161048a57826122b99187016108fb565b60208801528585013590811161048a576105c0966122e26122449361222b9361224a98016108fb565b87820152939450612212565b3461048a57602036600319011261048a57610a1d60043561230e81610502565b6123166139c8565b612b17565b3461048a57604036600319011261048a5760043561233881610502565b602435612343612be6565b6001600160a01b038216156105eb5780156123af57612372612363613bfb565b61236b613b82565b90836140ff565b335f908152600e6020526040902090929061238c90613c6f565b831161239d57610598918391612c15565b6040516321727a3760e11b8152600490fd5b604051636c6c627d60e11b8152600490fd5b3461048a57604036600319011261048a5760206109856024356123e381610502565b600435612b88565b634e487b7160e01b5f52601160045260245ffd5b5f198101919082116106d157565b919082039182116106d157565b818102929181159184041417156106d157565b90600182018092116106d157565b919082018092116106d157565b6001600160a01b03165f908152600e60205260409020610916929190612f87565b9081602091031261048a575190565b6040513d5f823e3d90fd5b916124d5916124c69161249461421b565b61249c61421b565b60015f805160206148ab833981519152556001600160a01b0394808616612889575b5036916108c5565b602080825183010191016138ff565b805182166001600160a01b03161561287757604080820165ffffffffffff612503825165ffffffffffff1690565b16156128665760c083018051909290612524906001600160a01b0316611293565b15612717575b5091612663610140926126026125dd6126c196612578612550875160018060a01b031690565b5f805462010000600160b01b03191660109290921b62010000600160b01b0316919091179055565b6020860151600180546001600160a01b0319166001600160a01b039092169190911790556125d16125a842612d8f565b6001805465ffffffffffff60a01b191660a09290921b65ffffffffffff60a01b16919091179055565b5165ffffffffffff1690565b600180546001600160d01b031660d09290921b6001600160d01b031916919091179055565b6126226126126060850151151590565b60ff80195f541691151516175f55565b6126496126326080850151151590565b61ff005f5491151560081b169061ff001916175f55565b61265660a0840151600455565b516001600160a01b031690565b848116612707575b5060e08101516001600160a01b03168481166126f7575b506101008101516001600160a01b03168481166126e7575b506101208101516001600160a01b03168481166126d7575b5001516001600160a01b031690565b9081166126cb5750565b6126d4906133ef565b50565b6126e090613380565b505f6126b2565b6126f090613311565b505f61269a565b6127009061323b565b505f612682565b6127109061318a565b505f61266b565b60e084015161272e906001600160a01b0316611293565b15612803575b61012084015161274c906001600160a01b0316611293565b61252a576080840151156127b95760a0840151158061279a575b61278a575091612663610140926126026125dd6126c1965b9496505050925061252a565b5163183c854560e21b8152600490fd5b506101408401516127b3906001600160a01b0316611293565b15612766565b60a0840151158015906127e3575b61278a575091612663610140926126026125dd6126c19661277e565b506101408401516127fc906001600160a01b0316611293565b15156127c7565b60608401511561283957610100840151612825906001600160a01b0316611293565b612734575163183c854560e21b8152600490fd5b610100840151612851906001600160a01b0316611293565b15612734575163183c854560e21b8152600490fd5b81516368f5f8f160e11b8152600490fd5b6040516368f7a67560e11b8152600490fd5b61289d9061289561421b565b61231661421b565b5f6124be565b6001600160a01b03165f908152600e602052604090206128c290613c6f565b6128ca613b82565b6128d2613bfb565b90600181018091116106d157600182018092116106d15761091692613a0a565b65ffffffffffff91821690821603919082116106d157565b634e487b7160e01b5f52601260045260245ffd5b9065ffffffffffff80911691821561293557160490565b61290a565b61294342612d8f565b61296a60015461296065ffffffffffff93848360a01c16906128f2565b9060d01c9061291e565b1690565b6001549065ffffffffffff91828160a01c169182848216106129975761296a92612960916128f2565b60405163b7d0949760e01b8152600490fd5b906129b2612be6565b5f926001600160a01b038316928315611ec9578115612a6a575f5b828110612a4857505f547f326b6aff1cd2fb1c8234de4f9dcfb9047c5c36eb9ef2eb34af5121e969a75d279286929091612a1d918491612a189060101c6001600160a01b0316611293565b613a97565b612a2e604051928392339684612aa5565b0390a3906108a860015f805160206148ab83398151915255565b94612a636001916114dd612a5d898789612a90565b35613ae6565b95016129cd565b60405163edf3b93360e01b8152600490fd5b634e487b7160e01b5f52603260045260245ffd5b9190811015612aa05760051b0190565b612a7c565b604080825281018390529392916001600160fb1b03811161048a5760209160609160051b809183880137850101930152565b51906108a882610aa5565b9081602091031261048a575161091681610aa5565b51906108a882610502565b9081602091031261048a575161091681610502565b6001600160a01b03908116908115612b70575f8051602061482b83398151915280546001600160a01b031981168417909155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b604051631e4fbdf760e01b81525f6004820152602490fd5b90612bae90825f52600860205260405f209060018060a01b03165f5260205260405f2090565b54905f52600660205260405f2054600760205260405f205490600181018091116106d157600182018092116106d15761091692613a0a565b5f805160206148ab8339815191526002815414612c035760029055565b604051633ee5aeb560e01b8152600490fd5b335f908152600e6020526040902093929190612c3042612d8f565b335f908152600e60205260409020612c4790613c6f565b918483039283116106d157612c827febff2602b3f468259e1e99f613fed6691f3a6526effe6ef3e768ba7ae7a36c4f938593612d0d99613836565b5050612c9c612c9042612d8f565b610cb887611477613bfb565b5050612cb6612caa42612d8f565b610ca384611477613b82565b5050612d5b81612d46612ccf612cca61293a565b61242d565b612d25612ce4825f52600660205260405f2090565b54612cf7835f52600760205260405f2090565b54612d0382828b613cbc565b9d8e998a9361243b565b612d1f855f52600660205260405f2090565b5561243b565b612d37825f52600760205260405f2090565b555f52600860205260405f2090565b9060018060a01b03165f5260205260405f2090565b612d6683825461243b565b9055604080519485526020850195909552938301526001600160a01b03909216913391606090a3565b65ffffffffffff90818111612da2571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b61048a9136916108c5565b9081602091031261048a575163ffffffff8116810361048a5790565b90600163ffffffff809316019182116106d157565b90805115612ec85780602080612e1893518301019101612dcc565b612e2181613f2d565b90612e32825165ffffffffffff1690565b9065ffffffffffff8085169216828114612ebc5782119182612e68575b5050612e5f575061091690613cdd565b60209150015190565b909150612e76600a546123ff565b63ffffffff831614918215612e8f575b50505f80612e4f565b612eb49192506125d1612ea4612ea992612de8565b613f2d565b65ffffffffffff1690565b115f80612e86565b50505060209150015190565b5061091690613cdd565b90805115612f7d5780602080612eed93518301019101612dcc565b612ef681613fb7565b90612f07825165ffffffffffff1690565b9065ffffffffffff8085169216828114612ebc5782119182612f34575b5050612e5f575061091690613da4565b909150612f42600c546123ff565b63ffffffff831614918215612f5b575b50505f80612f24565b612f759192506125d1612f70612ea992612de8565b613fb7565b115f80612f52565b5061091690613da4565b918051156130495780602080612fa293518301019101612dcc565b91612fad8382614037565b92612fbe845165ffffffffffff1690565b9065ffffffffffff808516921682811461303d5782119182612ff4575b5050612feb576109169250613e64565b50506020015190565b90915061300183546123ff565b63ffffffff83161491821561301a575b50505f80612fdb565b6130359192506125d161302f612ea992612de8565b85614037565b115f80613011565b50505050506020015190565b5061091691613e64565b335f9081527f03b26b53c87faa1058f30bb5d2fee64f717719a0d9b7e4f4df027aa5e9b6ed69602052604090207fbae4ee3de6c709ff9a002e774c5b78cb381560b219213c88ae0f1e207c03c0239060ff905b5416156120075750565b335f9081527fe41986b390c4ce6791b87f7423b5fab7a81a0e6d89660b6264f697d008b2243a602052604090207fc6aaadd7371d5e8f9ed6849dd66a66573a3ba37167d03f4352c9ba5693678fac9060ff906130a6565b335f9081527f0287ab4cb376ea253d7b2ce0c2cbf458f7deae9458470d74afdfbbee484e9540602052604090207f9c56d972d63cbb4195b3c1484691dfc220fa96a4c47e7b6613bd82a022029e069060ff906130a6565b5f8181525f8051602061488b83398151915260209081526040808320338452909152902060ff906130a6565b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260409020545f8051602061488b8339815191529060ff16613235575f808052602091825260408082206001600160a01b038516835290925220805460ff1916600117905533906001600160a01b03165f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b50505f90565b6001600160a01b0381165f9081527f03b26b53c87faa1058f30bb5d2fee64f717719a0d9b7e4f4df027aa5e9b6ed69602052604090207fbae4ee3de6c709ff9a002e774c5b78cb381560b219213c88ae0f1e207c03c023905f8051602061488b8339815191529060ff905b541661330a575f828152602091825260408082206001600160a01b038616835290925220805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b5050505f90565b6001600160a01b0381165f9081527f0287ab4cb376ea253d7b2ce0c2cbf458f7deae9458470d74afdfbbee484e9540602052604090207f9c56d972d63cbb4195b3c1484691dfc220fa96a4c47e7b6613bd82a022029e06905f8051602061488b8339815191529060ff906132a6565b6001600160a01b0381165f9081527fe41986b390c4ce6791b87f7423b5fab7a81a0e6d89660b6264f697d008b2243a602052604090207fc6aaadd7371d5e8f9ed6849dd66a66573a3ba37167d03f4352c9ba5693678fac905f8051602061488b8339815191529060ff906132a6565b6001600160a01b0381165f9081527f2d4ccbfe9f7672a6f2537c1e5bce6adacb73706879154bbab6ce096012d67216602052604090207f4a634bc14d77baf979756509ef4298c6f6318af357828612545267ee2eb79233905f8051602061488b8339815191529060ff906132a6565b5f8181525f8051602061488b833981519152602081815260408084206001600160a01b038716855290915290912060ff906132a6565b5f8181525f8051602061488b833981519152602081815260408084206001600160a01b03871685529091529091205460ff161561330a575f828152602091825260408082206001600160a01b038616835290925220805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b6040516323b872dd60e01b60208201526001600160a01b03928316602482015292909116604483015260648083019390935291815260a08101918183106001600160401b0384111761083a576108a8926040526140a5565b600b54811015612aa057600b5f525f8051602061486b83398151915201905f90565b600d54811015612aa057600d5f525f8051602061484b83398151915201905f90565b8054821015612aa0575f5260205f2001905f90565b600d54600160401b81101561083a576001810180600d55811015612aa057600d5f525f8051602061484b8339815191520155565b600b54600160401b81101561083a576001810180600b55811015612aa057600b5f525f8051602061486b8339815191520155565b90815491600160401b83101561083a57826136629160016108a8950181556135c2565b90919082549060031b91821b915f19901b1916179055565b919091600d9081548015613725575b50613692614138565b509290918154926136a1613b82565b9481613710575b50156136ed57505f1982018281116106d15781541115612aa0575f527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb4018390559190565b613701926001600160d01b03169150614362565b505061370c836135d7565b9190565b65ffffffffffff83811691161490505f6136a8565b600160401b81101561083a5760018101808455811015612aa0575f908382525f8051602061484b83398151915201555f613689565b919091600b9081548015613801575b5061377261418d565b50929091815492613781613bfb565b94816137ec575b50156137cd57505f1982018281116106d15781541115612aa0575f527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db8018390559190565b6137e1926001600160d01b03169150614432565b505061370c8361360b565b65ffffffffffff83811691161490505f613788565b600160401b81101561083a5760018101808455811015612aa0575f908382525f8051602061486b83398151915201555f613769565b909291926001820190815480156138c4575b5084613853846141e2565b5094909284549361386383613c6f565b96816138af575b501561388c575050505f1981019081116106d157613662859161370c936135c2565b61370c9492936138a8926001600160d01b0390911691906144d1565b505061363f565b65ffffffffffff83811691161490505f61386a565b600160401b81101561083a578060016138e092018455836135c2565b8154905f199060031b1b191690555f613848565b51906108a8826107fb565b908161016091031261048a5761391361087b565b9061391d81612af7565b825261392b60208201612af7565b602083015261393c604082016138f4565b604083015261394d60608201612ad7565b606083015261395e60808201612ad7565b608083015260a081015160a083015261397960c08201612af7565b60c083015261398a60e08201612af7565b60e083015261010061399d818301612af7565b908301526101206139af818301612af7565b908301526139c1610140809201612af7565b9082015290565b5f8051602061482b833981519152546001600160a01b031633036139e857565b60405163118cdaa760e01b8152336004820152602490fd5b8115612935570490565b91818302915f1981850993838086109503948086039514613a8a5784831115613a7d5790829109815f038216809204600280826003021880830282030280830282030280830282030280830282030280830282030280920290030293600183805f03040190848311900302920304170290565b8215600302601118614249565b5050906109169250613a00565b60405163a9059cbb60e01b60208201526001600160a01b03909216602483015260448083019390935291815260808101916001600160401b0383118284101761083a576108a8926040526140a5565b90613aef61293a565b821015613b70575f82815260096020908152604080832033845290915290205460ff16613b5e57613b203383612b88565b918215613b4c575f9081526009602090815260408083203384529091529020805460ff19166001179055565b6040516366c0bcbf60e11b8152600490fd5b604051630c8d9eab60e31b8152600490fd5b60405163d5b25b6360e01b8152600490fd5b600c5480613bc257505f5b6001600160d01b03811615613bbd57600d54811015612aa057600d5f525f8051602061484b833981519152015490565b505f90565b805f198101116106d157600c5f527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c6015460301c613b8d565b600a5480613c3657505f5b6001600160d01b03811615613bbd57600b54811015612aa057600b5f525f8051602061486b833981519152015490565b805f198101116106d157600a5f527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a7015460301c613c06565b805480613c9e57505f5b6001600160d01b03811615613235576001613c9492016135c2565b90549060031b1c90565b5f199080828101116106d157825f5260205f2001015460301c613c79565b9190600181018091116106d157600182018092116106d15761091692613a0a565b600a54905f829160058411613d4b575b613cf793506146b6565b80613d1a57505f5b6001600160d01b03811615613bbd57613c946109169161357e565b613d3f613d29613d46926123ff565b600a5f525f8051602061480b8339815191520190565b5460301c90565b613cff565b9192613d568161458b565b81039081116106d157613cf793600a5f5265ffffffffffff80835f8051602061480b833981519152015416908516105f14613d92575091613ced565b929150613d9e9061242d565b90613ced565b600c54905f829160058411613e0b575b613dbe935061471f565b80613de157505f5b6001600160d01b03811615613bbd57613c94610916916135a0565b613d3f613df0613e06926123ff565b600c5f525f805160206147eb8339815191520190565b613dc6565b9192613e168161458b565b81039081116106d157613dbe93600c5f5265ffffffffffff80835f805160206147eb833981519152015416908516105f14613e52575091613db4565b929150613e5e9061242d565b90613db4565b908154905f829160058411613ec7575b613e7f935084614788565b80613ea757505f905b6001600160d01b0382161561323557610916916001613c9492016135c2565b613d3f613eb6613ec1926123ff565b835f5260205f200190565b90613e88565b9192613ed28161458b565b81039081116106d157613e7f93855f5265ffffffffffff808360205f20015416908516105f14613f03575091613e74565b929150613f0f9061242d565b90613e74565b60405190613f228261083f565b5f6020838281520152565b613f35613f15565b50613f3e613f15565b50600a54811015612aa057600a5f52602060405191613f5c8361083f565b5f8051602061480b83398151915201549165ffffffffffff83169283825260301c9182910152600b54811015612aa057600b5f525f8051602061486b833981519152015460405191613fad8361083f565b8252602082015290565b613fbf613f15565b50613fc8613f15565b50600c54811015612aa057600c5f52602060405191613fe68361083f565b5f805160206147eb83398151915201549165ffffffffffff83169283825260301c9182910152600d54811015612aa057600d5f525f8051602061484b833981519152015460405191613fad8361083f565b906020600161405b6140879361404b613f15565b50614054613f15565b50856135c2565b50936040519461406a8661083f565b549465ffffffffffff86169586825260301c9384910152016135c2565b905490604051926140978461083f565b835260031b1c602082015290565b905f602091828151910182855af115612478575f513d6140f657506001600160a01b0381163b155b6140d45750565b604051635274afe760e01b81526001600160a01b039091166004820152602490fd5b600114156140cd565b9190600181018091116106d157600182018092116106d157614122828285613a0a565b9282156129355709151581018091116106d15790565b600c548061414957505f905f905f90565b805f198101116106d157600c5f527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c6015460019165ffffffffffff82169160301c90565b600a548061419e57505f905f905f90565b805f198101116106d157600a5f527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a7015460019165ffffffffffff82169160301c90565b8054806141f35750505f905f905f90565b5f199181838101116106d1575f5260205f2001015460019165ffffffffffff82169160301c90565b60ff5f805160206148cb8339815191525460401c161561423757565b604051631afcd79f60e31b8152600490fd5b634e487b715f526020526024601cfd5b600c5490600160401b82101561083a576001820180600c55821015612aa057600c5f52805160209091015160301b65ffffffffffff191665ffffffffffff91909116175f805160206147eb83398151915290910155565b600a5490600160401b82101561083a576001820180600a55821015612aa057600a5f52805160209091015160301b65ffffffffffff191665ffffffffffff91909116175f8051602061480b83398151915290910155565b8054600160401b81101561083a57614324916001820181556135c2565b61434f57815160209092015160301b65ffffffffffff191665ffffffffffff92909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b600c54919291801561440957613df061437a916123ff565b9081549165ffffffffffff908184169183168083116143f7578692036143bf576143b892509065ffffffffffff82549181199060301b169116179055565b60301c9190565b50506143f2906143de6143d061089b565b65ffffffffffff9092168252565b6001600160d01b0385166020820152614259565b6143b8565b604051632520601d60e01b8152600490fd5b5061442d906144196143d061089b565b6001600160d01b0384166020820152614259565b5f9190565b600a5491929180156144ad57613d2961444a916123ff565b9081549165ffffffffffff908184169183168083116143f757869203614488576143b892509065ffffffffffff82549181199060301b169116179055565b50506143f2906144996143d061089b565b6001600160d01b03851660208201526142b0565b5061442d906144bd6143d061089b565b6001600160d01b03841660208201526142b0565b80549293928015614566576144e86144f3916123ff565b825f5260205f200190565b9182549265ffffffffffff918285169281168084116143f75787930361453257506143b892509065ffffffffffff82549181199060301b169116179055565b9150506143f29161455261454461089b565b65ffffffffffff9093168352565b6001600160d01b0386166020830152614307565b509061442d9161457761454461089b565b6001600160d01b0385166020830152614307565b600181111561091657600181600160801b8110156146a4575b61464c61464261463861462e61462461461a61465897600488600160401b6146539a1015614697575b64010000000081101561468a575b6201000081101561467d575b610100811015614671575b6010811015614665575b101561465d575b60030260011c614613818b613a00565b0160011c90565b614613818a613a00565b6146138189613a00565b6146138188613a00565b6146138187613a00565b6146138186613a00565b8093613a00565b821190565b900390565b60011b614603565b811c9160021b916145fc565b60081c91811b916145f2565b60101c9160081b916145e7565b60201c9160101b916145db565b60401c9160201b916145cd565b50600160401b9050608082901c6145a4565b905b8281106146c457505090565b9091808216906001818418811c83018093116106d157600a5f5265ffffffffffff80845f8051602061480b833981519152015416908616105f1461470c575050915b906146b8565b9093925081018091116106d15790614706565b905b82811061472d57505090565b9091808216906001818418811c83018093116106d157600c5f5265ffffffffffff80845f805160206147eb833981519152015416908616105f14614775575050915b90614721565b9093925081018091116106d1579061476f565b91905b8382106147985750505090565b909192808316906001818518811c83018093116106d157855f5265ffffffffffff808460205f20015416908516105f146147d7575050925b919061478b565b9094935081018091116106d157916147d056fedf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7c65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a89016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300d7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db902dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220397482c9a8ce651b670b21962bb148b00fad05ebc198b873564640451f1ffc5164736f6c63430008190033","sourceMap":"981:14958:102:-:0;;;;;;;;;;;;;-1:-1:-1;;981:14958:102;;;;;-1:-1:-1;;;;;981:14958:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;3173:36:103;;;3219:32;;8837:64:22;981:14958:102;;;;;;;;;7896:76:22;;981:14958:102;;;;7985:34:22;7981:146;;-1:-1:-1;927:17:78;;;;;981:14958:102;;;;;;;3173:36:103;981:14958:102;;;;;;;;;;3219:32:103;981:14958:102;;;;;;;;;;927:17:78;981:14958:102;;;;;;;;;;;7981:146:22;-1:-1:-1;;;;;;981:14958:102;;;;;;;;;;;;;8087:29:22;;981:14958:102;;8087:29:22;7981:146;;;;;7896:76;981:14958:102;;-1:-1:-1;;;7938:23:22;;;;;981:14958:102;-1:-1:-1;981:14958:102;;;;;;-1:-1:-1;981:14958:102;;;;;-1:-1:-1;981:14958:102;;;;-1:-1:-1;;;;;981:14958:102;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a7146104345780631415519b1461042f5780631b66c9e11461042a5780631e9a695014610425578063248a9ca31461042057806327810b6e1461041b578063281f5752146104165780632abe3048146104115780632d73c69c1461040c5780632dd31000146104075780632f2ff15d1461040257806336568abe146103fd578063392e53cd146103f85780634105a7dd146103f357806346361671146103ee57806347e7ef24146103e957806348d3b775146103e45780634ff0876a146103df57806350861adc146103da57806350f22068146103d55780635346e34f146103d057806354fd4d50146103cb57806357ec83cc146103c657806359f769a9146103c15780635cc07076146103bc57806361a8c8c4146103b75780636da3e06d146103b25780636ec1e3f8146103ad578063715018a6146103a85780637278e31c146103a357806373790ab31461039e5780637667180814610399578063794b15b7146103945780637953b33b1461038f5780637c04c80a1461038a578063810da75d1461038557806383cd9cc31461038057806387df07881461037b5780638b0e9f3f146103765780638da5cb5b1461037157806391d148541461036c5780639d66201b146103675780639f86fd8514610362578063a1b122021461035d578063a217fddf14610358578063a21a1df914610353578063a28614661461034e578063a3b5417214610349578063a5d0322314610344578063aabc24961461033f578063aad3ec961461033a578063afba70ad14610335578063b134427114610330578063bd49c35f1461032b578063bdc8144b14610326578063bfefcd7b14610321578063c31e8dd71461031c578063ce9b793014610317578063d547741f14610312578063d8dfeb451461030d578063db38871514610308578063ecf7085814610303578063efb559d6146102fe578063f2fde38b146102f9578063f3fef3a3146102f45763f5e7ee0f146102ef575f80fd5b6123c1565b61231b565b6122ee565b61219f565b612182565b612148565b61211d565b6120d1565b6120a9565b61203f565b612025565b611f47565b611f2d565b611f05565b611edb565b611e1a565b611c63565b611c1d565b611bd0565b611add565b611aa3565b611a89565b611a65565b611998565b61195e565b611900565b6118cc565b61186a565b611826565b61166d565b611654565b6115ee565b6115c7565b611587565b61156d565b61152c565b61125a565b6111f3565b6111ce565b61118a565b611137565b61110d565b6110e6565b610fae565b610f7c565b610ee7565b610ece565b610e71565b610e51565b610e30565b610b72565b610b4a565b610aaf565b610a6a565b610a1f565b6109d1565b61098d565b610919565b61072b565b61065d565b610635565b6105fc565b610513565b6104c8565b61048e565b3461048a57602036600319011261048a5760043563ffffffff60e01b811680910361048a57602090637965db0b60e01b8114908115610479575b506040519015158152f35b6301ffc9a760e01b1490505f61046e565b5f80fd5b3461048a575f36600319011261048a5760206040517fc6aaadd7371d5e8f9ed6849dd66a66573a3ba37167d03f4352c9ba5693678fac8152f35b3461048a575f36600319011261048a5760206040517f9c56d972d63cbb4195b3c1484691dfc220fa96a4c47e7b6613bd82a022029e068152f35b6001600160a01b0381160361048a57565b3461048a57604036600319011261048a5760043561053081610502565b6024359061053c612be6565b6001600160a01b038116156105eb57335f908152600e6020526040902061056790613c6f565b613c6f565b82116105d957610587610578613b82565b610580613bfb565b9084613cbc565b9182156105c4578261059892612c15565b906105af60015f805160206148ab83398151915255565b604080519182526020820192909252f35b0390f35b60405160016245ddc760e11b03198152600490fd5b604051632418411f60e11b8152600490fd5b6040516208978560e71b8152600490fd5b3461048a57602036600319011261048a576004355f525f8051602061488b8339815191526020526020600160405f200154604051908152f35b3461048a575f36600319011261048a576001546040516001600160a01b039091168152602090f35b3461048a575f36600319011261048a5761067561293a565b80156106d65760015465ffffffffffff8160a01c16915f1981019081116106d1576106a39160d01c9061241a565b81018091116106d1576106b86105c091612d8f565b60405165ffffffffffff90911681529081906020820190565b6123eb565b604051639fa56a5b60e01b8152600490fd5b600435906001600160401b038216820361048a57565b9181601f8401121561048a578235916001600160401b03831161048a576020838186019501011161048a57565b3461048a57604036600319011261048a576107446106e8565b6001600160401b0360243581811161048a576107649036906004016106fe565b92909161076f612be6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036107e9575f805160206148cb833981519152549060ff8260401c169283156107d9575b50505015612dc1575b60405163f92ee8a960e01b8152600490fd5b81169116101590505f80806107be565b604051631966391b60e11b8152600490fd5b65ffffffffffff81160361048a57565b634e487b7160e01b5f52604160045260245ffd5b606081019081106001600160401b0382111761083a57604052565b61080b565b604081019081106001600160401b0382111761083a57604052565b90601f801991011681019081106001600160401b0382111761083a57604052565b6040519061016082018281106001600160401b0382111761083a57604052565b604051906108a88261083f565b565b6001600160401b03811161083a57601f01601f191660200190565b9291926108d1826108aa565b916108df604051938461085a565b82948184528183011161048a578281602093845f960137010152565b9080601f8301121561048a57816020610916933591016108c5565b90565b3461048a57606036600319011261048a5760043561093681610502565b60243590610943826107fb565b604435906001600160401b03821161048a576020926109696109859336906004016108fb565b6001600160a01b039092165f908152600e855260409020612f87565b604051908152f35b3461048a575f36600319011261048a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461048a57604036600319011261048a57610a1d6024356004356109f482610502565b805f525f8051602061488b833981519152602052610a18600160405f20015461315e565b61345e565b005b3461048a57604036600319011261048a57602435610a3c81610502565b336001600160a01b03821603610a5857610a1d90600435613494565b60405163334bd91960e11b8152600490fd5b3461048a575f36600319011261048a5760ff60025460a01c1680610a96575b6020906040519015158152f35b5060035460a01c60ff16610a89565b8015150361048a57565b3461048a57602036600319011261048a57600435610acc81610aa5565b610ad4612be6565b610adc613053565b5f54901515908160ff8216151514610b385760ff191660ff8216175f556040519081527f3e12b7b36c75ac9609a3f58609b331210428e1a85909132638955ba0301eec3390602090a160015f805160206148ab83398151915255005b60405163a741a04560e01b8152600490fd5b3461048a575f36600319011261048a57602065ffffffffffff60015460a01c16604051908152f35b3461048a5760408060031936011261048a576004803591610b9283610502565b610b9a612be6565b6001600160a01b0391838316908115610e22575f5460ff811680610e09575b610dfa5783516370a0823160e01b808252308483019081529096602093909160109190911c82169084908490819083010381845afa928315610dd2575f93610dd7575b50610c0e906024359030903390613526565b5f5486519788523085890190815290979184918391908290819060200103918b60101c165afa908115610dd257610c4d935f92610da5575b505061240d565b938415610d965760081c60ff1680610d81575b610d735750906105c091610d11610c75613b82565b95610cbe610c81613bfb565b610ca9610c8f8a838b613cbc565b99610ca38a610c9d42612d8f565b9261243b565b9061367a565b5050610cb889610c9d42612d8f565b9061375a565b50506001600160a01b0381165f908152600e6020526040902090610d0b88610d06610562610ceb42612d8f565b6001600160a01b039095165f908152600e6020526040902090565b61243b565b91613836565b505081518481526020810186905233907fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d790604090a3610d5d60015f805160206148ab83398151915255565b5191825260208201929092529081906040820190565b8251632484557960e01b8152fd5b50610d8e84610d06613b82565b815410610c60565b50825163070f6eed60e11b8152fd5b610dc49250803d10610dcb575b610dbc818361085a565b810190612469565b5f80610c46565b503d610db2565b612478565b610c0e919350610df390853d8711610dcb57610dbc818361085a565b9290610bfc565b5082516304f63b8560e01b8152fd5b50335f9081526005602052604090205460ff1615610bb9565b8251630d534ce360e11b8152fd5b3461048a575f36600319011261048a57602060ff5f54166040519015158152f35b3461048a575f36600319011261048a57602060015460d01c604051908152f35b3461048a575f36600319011261048a57602060ff60025460a01c166040519015158152f35b90604060031983011261048a57600435610eaf816107fb565b91602435906001600160401b03821161048a57610916916004016108fb565b3461048a576020610985610ee136610e96565b90612dfd565b3461048a57602036600319011261048a57600435610f0481610aa5565b610f0c612be6565b610f146130b0565b5f54901515908160ff8260081c16151514610b385761ff001916600882901b61ff0016175f556040519081527ffa7a25a0b611d4ba3c0ea990e90dc23d484a5dd7a1be4733fef2946ba74530c690602090a1610a1d60015f805160206148ab83398151915255565b3461048a575f36600319011261048a5760206001600160401b035f805160206148cb8339815191525416604051908152f35b3461048a57606036600319011261048a57610fc76106e8565b602435610fd381610502565b6001600160401b039160443583811161048a57610ff49036906004016106fe565b5f805160206148cb8339815191529491855494838616806110d55760ff8760401c169081156110c8575b506107c7577fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2966110c39661108b958716906001600160401b0319161790556110865f805160206148cb833981519152600160401b68ff000000000000000019825416179055565b612483565b5f805160206148cb833981519152805468ff0000000000000000191690556040516001600160401b0390911681529081906020820190565b0390a1005b905084861611155f61101e565b60405162dc149f60e41b8152600490fd5b3461048a57602036600319011261048a57602061098560043561110881610502565b6128a3565b3461048a57602036600319011261048a576004355f526006602052602060405f2054604051908152f35b3461048a575f36600319011261048a5760015465ffffffffffff61116d818360a01c169261116361293a565b9060d01c9061241a565b82018092116106d157611181602092612d8f565b60405191168152f35b3461048a575f36600319011261048a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461048a575f36600319011261048a57602060ff60035460a01c166040519015158152f35b3461048a575f36600319011261048a5761120b6139c8565b5f8051602061482b83398151915280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461048a57604036600319011261048a5760043560243561127a816107fb565b611282612be6565b60035461129f906001600160a01b03165b6001600160a01b031690565b330361151a576112ad61293a565b906112b78161296e565b9082151580611509575b8015611500575b6114ee576105c0937ff9d090c096f71cd1659861a9ce5b6f384bceb4e2fa4e4a19edf6489a9b8d56c7926112fa613b82565b946113156113078261242d565b5f52600660205260405f2090565b54908281036114085750611329818761243b565b8381188185100281189687806113c1575b50505050505b8361138d575b6040805191825265ffffffffffff929092166020820152908101839052606090a161137d60015f805160206148ab83398151915255565b6040519081529081906020820190565b5f546113bc9085906113aa9060101c6001600160a01b0316611293565b6001546001600160a01b031690613a97565b611346565b6113fd93610c4683610ca36113e76113e0611307986113f79888613a0a565b809661240d565b946113f142612d8f565b9261240d565b9261242d565b555f8080808761133a565b915061141c825f52600660205260405f2090565b549061142c81610d06848a61243b565b908482188286100282189788611447575b5050505050611340565b6114bc938361146f9361147c8c6114776114656114ad998884613a0a565b9788958584613a0a565b94859261240d565b61240d565b938484106114c7575b610c4690610ca361149b9596976113f142612d8f565b6114a76113078761242d565b5561240d565b915f52600660205260405f2090565b555f8080808061143d565b916114e3610c46916114dd8661149b979861240d565b9061243b565b859450929050611485565b604051635e18d2a560e01b8152600490fd5b508282116112c8565b50611513836123ff565b82106112c1565b60405163dabc4ad960e01b8152600490fd5b3461048a575f36600319011261048a5760015465ffffffffffff808260a01c169161155561293a565b600181018091116106d15761116d9160d01c9061241a565b3461048a575f36600319011261048a57602061098561293a565b3461048a57602036600319011261048a576004356115a481610502565b60018060a01b03165f526005602052602060ff60405f2054166040519015158152f35b3461048a57602036600319011261048a5760206109856004356115e9816107fb565b61296e565b3461048a57604036600319011261048a5760043561160b81610502565b6024356001600160401b0380821161048a573660238301121561048a57816004013590811161048a573660248260051b8401011161048a576105c092602461137d9301906129a9565b3461048a57602061098561166736610e96565b90612ed2565b3461048a5760208060031936011261048a57600480359061168d82610502565b611695612be6565b60025460a01c60ff16611817576040516302910f8b60e31b81526001600160a01b03838116838301908152909491908290829081906020010381887f0000000000000000000000000000000000000000000000000000000000000000165afa908115610dd2575f916117ea575b50156117da5760405163fbfa77cf60e01b8152838516949082818581895afa928315610dd2575f936117ab575b50503091160361179c5750600280546001600160a01b03929092166001600160a81b031990921691909117600160a01b1790557fdb2160616f776a37b24808115554e79439bf26cccbbd4438190cc6d28e80ecd15f80a2610a1d60015f805160206148ab83398151915255565b60405163b9f0f17160e01b8152fd5b6117cb929350803d106117d3575b6117c3818361085a565b810190612b02565b905f8061172f565b503d6117b9565b506040516324e5af8d60e21b8152fd5b61180a9150823d8411611810575b611802818361085a565b810190612ae2565b5f611702565b503d6117f8565b604051631380833b60e01b8152fd5b3461048a575f36600319011261048a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461048a575f36600319011261048a5761188261293a565b61188a613b82565b90805f52600660205260405f205482018092116106d157600181018091116106d1575f52600660205260405f205481018091116106d157602090604051908152f35b3461048a575f36600319011261048a575f8051602061482b833981519152546040516001600160a01b039091168152602090f35b3461048a57604036600319011261048a57602060ff61195260243561192481610502565b6004355f525f8051602061488b833981519152845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b3461048a57602036600319011261048a5760043561197b81610502565b60018060a01b03165f52600e602052602061098560405f20613c6f565b3461048a5760408060031936011261048a576004356119b681610502565b6024356001600160401b03811161048a575f80611a54936119dd60809436906004016106fe565b908188519283928337810184815203915af43d15611a5c5760203d611a01816108aa565b90611a0e8751928361085a565b81523d5f8383013e5b8551958693151583850152808401528051918291826060860152018484015e5f838284010152601f8019910116810103606081018452018261085a565b805190602001fd5b60206060611a17565b3461048a575f36600319011261048a57602060ff5f5460081c166040519015158152f35b3461048a575f36600319011261048a5760206040515f8152f35b3461048a575f36600319011261048a5760206040517f4a634bc14d77baf979756509ef4298c6f6318af357828612545267ee2eb792338152f35b3461048a57604036600319011261048a57600435611afa81610502565b602435611b0681610aa5565b611b0e612be6565b611b16613107565b6001600160a01b038216918215611bbe575f8381526005602052604090205460ff16151582151514610b38576001600160a01b03165f9081526005602052604090207ff991b1ecfb5115cbb36a2b2e2240c058406d2acc2fcc6e9e2dc99d845ff70a6291611ba591611b93908260ff801983541691151516179055565b60405190151581529081906020820190565b0390a2610a1d60015f805160206148ab83398151915255565b604051630da30f6560e31b8152600490fd5b3461048a57604036600319011261048a576020611c14602435611bf281610502565b6004355f526008835260405f209060018060a01b03165f5260205260405f2090565b54604051908152f35b3461048a57604036600319011261048a57602060ff611952602435611c4181610502565b6004355f526009845260405f209060018060a01b03165f5260205260405f2090565b3461048a5760208060031936011261048a576004803590611c8382610502565b611c8b612be6565b60035460a01c60ff16611e0b576001600160a01b03828116939084611cf9575b6003805460ff60a01b1916600160a01b179055847fe7e4c932e03abddfe20f83af42c33627e816115c7ec2b168441f65dc14bfc3ba5f80a2610a1d60015f805160206148ab83398151915255565b6040516302910f8b60e31b81526001600160a01b0385168482019081528390829081906020010381857f0000000000000000000000000000000000000000000000000000000000000000165afa908115610dd2575f91611dee575b5015611ddd5760405163fbfa77cf60e01b815282818581895afa928315610dd2575f93611dbe575b505030911603611daf5750600380546001600160a01b0319166001600160a01b039092169190911790555f808080611cab565b604051633f3e089160e21b8152fd5b611dd5929350803d106117d3576117c3818361085a565b905f80611d7c565b60405163dabc4ad960e01b81528390fd5b611e059150833d851161181057611802818361085a565b5f611d54565b60405163703fe2e560e01b8152fd5b3461048a57604036600319011261048a57600435611e3781610502565b60243590611e43612be6565b6001600160a01b0391818316908115611ec957611e746105c094611e6683613ae6565b9485915f5460101c16613a97565b604080519182526020820184905233917f865ca08d59f5cb456e85cd2f7ef63664ea4f73327414e9d8152c4158b0e946459190a360015f805160206148ab833981519152556040519081529081906020820190565b604051634e46966960e11b8152600490fd5b3461048a57602036600319011261048a576004355f526007602052602060405f2054604051908152f35b3461048a575f36600319011261048a576003546040516001600160a01b039091168152602090f35b3461048a575f36600319011261048a576020610985613b82565b3461048a57602036600319011261048a57600435611f63612be6565b335f9081527f2d4ccbfe9f7672a6f2537c1e5bce6adacb73706879154bbab6ce096012d6721660205260409020547f4a634bc14d77baf979756509ef4298c6f6318af357828612545267ee2eb792339060ff161561200757508060045414610b38576020817f854df3eb95564502c8bc871ebdd15310ee26270f955f6c6bd8cea68e75045bc092600455604051908152a160015f805160206148ab83398151915255005b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b3461048a575f36600319011261048a576020610985613bfb565b3461048a57602036600319011261048a5760043561205c81610502565b61206461293a565b61206d826128a3565b916120788183612b88565b83018093116106d157600182018092116106d15761209591612b88565b81018091116106d157602090604051908152f35b3461048a575f36600319011261048a576002546040516001600160a01b039091168152602090f35b3461048a57604036600319011261048a57610a1d6024356004356120f482610502565b805f525f8051602061488b833981519152602052612118600160405f20015461315e565b613494565b3461048a575f36600319011261048a575f5460405160109190911c6001600160a01b03168152602090f35b3461048a575f36600319011261048a5760206040517fbae4ee3de6c709ff9a002e774c5b78cb381560b219213c88ae0f1e207c03c0238152f35b3461048a575f36600319011261048a576020600454604051908152f35b3461048a57606036600319011261048a576004356121bc81610502565b602435906121c9826107fb565b6001600160401b039160443583811161048a576121ea9036906004016106fe565b909260409384516121fa8161081f565b60608152606060208201526060868201529280612259575b6105c08661224a878761224461222b8984845191612448565b928561223b602085015183612ed2565b93015190612dfd565b91613cbc565b90519081529081906020820190565b810193925060208185031261048a5780359086821161048a57019260608482031261048a5784519561228a8761081f565b843581811161048a578261229f9187016108fb565b8752602085013581811161048a57826122b99187016108fb565b60208801528585013590811161048a576105c0966122e26122449361222b9361224a98016108fb565b87820152939450612212565b3461048a57602036600319011261048a57610a1d60043561230e81610502565b6123166139c8565b612b17565b3461048a57604036600319011261048a5760043561233881610502565b602435612343612be6565b6001600160a01b038216156105eb5780156123af57612372612363613bfb565b61236b613b82565b90836140ff565b335f908152600e6020526040902090929061238c90613c6f565b831161239d57610598918391612c15565b6040516321727a3760e11b8152600490fd5b604051636c6c627d60e11b8152600490fd5b3461048a57604036600319011261048a5760206109856024356123e381610502565b600435612b88565b634e487b7160e01b5f52601160045260245ffd5b5f198101919082116106d157565b919082039182116106d157565b818102929181159184041417156106d157565b90600182018092116106d157565b919082018092116106d157565b6001600160a01b03165f908152600e60205260409020610916929190612f87565b9081602091031261048a575190565b6040513d5f823e3d90fd5b916124d5916124c69161249461421b565b61249c61421b565b60015f805160206148ab833981519152556001600160a01b0394808616612889575b5036916108c5565b602080825183010191016138ff565b805182166001600160a01b03161561287757604080820165ffffffffffff612503825165ffffffffffff1690565b16156128665760c083018051909290612524906001600160a01b0316611293565b15612717575b5091612663610140926126026125dd6126c196612578612550875160018060a01b031690565b5f805462010000600160b01b03191660109290921b62010000600160b01b0316919091179055565b6020860151600180546001600160a01b0319166001600160a01b039092169190911790556125d16125a842612d8f565b6001805465ffffffffffff60a01b191660a09290921b65ffffffffffff60a01b16919091179055565b5165ffffffffffff1690565b600180546001600160d01b031660d09290921b6001600160d01b031916919091179055565b6126226126126060850151151590565b60ff80195f541691151516175f55565b6126496126326080850151151590565b61ff005f5491151560081b169061ff001916175f55565b61265660a0840151600455565b516001600160a01b031690565b848116612707575b5060e08101516001600160a01b03168481166126f7575b506101008101516001600160a01b03168481166126e7575b506101208101516001600160a01b03168481166126d7575b5001516001600160a01b031690565b9081166126cb5750565b6126d4906133ef565b50565b6126e090613380565b505f6126b2565b6126f090613311565b505f61269a565b6127009061323b565b505f612682565b6127109061318a565b505f61266b565b60e084015161272e906001600160a01b0316611293565b15612803575b61012084015161274c906001600160a01b0316611293565b61252a576080840151156127b95760a0840151158061279a575b61278a575091612663610140926126026125dd6126c1965b9496505050925061252a565b5163183c854560e21b8152600490fd5b506101408401516127b3906001600160a01b0316611293565b15612766565b60a0840151158015906127e3575b61278a575091612663610140926126026125dd6126c19661277e565b506101408401516127fc906001600160a01b0316611293565b15156127c7565b60608401511561283957610100840151612825906001600160a01b0316611293565b612734575163183c854560e21b8152600490fd5b610100840151612851906001600160a01b0316611293565b15612734575163183c854560e21b8152600490fd5b81516368f5f8f160e11b8152600490fd5b6040516368f7a67560e11b8152600490fd5b61289d9061289561421b565b61231661421b565b5f6124be565b6001600160a01b03165f908152600e602052604090206128c290613c6f565b6128ca613b82565b6128d2613bfb565b90600181018091116106d157600182018092116106d15761091692613a0a565b65ffffffffffff91821690821603919082116106d157565b634e487b7160e01b5f52601260045260245ffd5b9065ffffffffffff80911691821561293557160490565b61290a565b61294342612d8f565b61296a60015461296065ffffffffffff93848360a01c16906128f2565b9060d01c9061291e565b1690565b6001549065ffffffffffff91828160a01c169182848216106129975761296a92612960916128f2565b60405163b7d0949760e01b8152600490fd5b906129b2612be6565b5f926001600160a01b038316928315611ec9578115612a6a575f5b828110612a4857505f547f326b6aff1cd2fb1c8234de4f9dcfb9047c5c36eb9ef2eb34af5121e969a75d279286929091612a1d918491612a189060101c6001600160a01b0316611293565b613a97565b612a2e604051928392339684612aa5565b0390a3906108a860015f805160206148ab83398151915255565b94612a636001916114dd612a5d898789612a90565b35613ae6565b95016129cd565b60405163edf3b93360e01b8152600490fd5b634e487b7160e01b5f52603260045260245ffd5b9190811015612aa05760051b0190565b612a7c565b604080825281018390529392916001600160fb1b03811161048a5760209160609160051b809183880137850101930152565b51906108a882610aa5565b9081602091031261048a575161091681610aa5565b51906108a882610502565b9081602091031261048a575161091681610502565b6001600160a01b03908116908115612b70575f8051602061482b83398151915280546001600160a01b031981168417909155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b604051631e4fbdf760e01b81525f6004820152602490fd5b90612bae90825f52600860205260405f209060018060a01b03165f5260205260405f2090565b54905f52600660205260405f2054600760205260405f205490600181018091116106d157600182018092116106d15761091692613a0a565b5f805160206148ab8339815191526002815414612c035760029055565b604051633ee5aeb560e01b8152600490fd5b335f908152600e6020526040902093929190612c3042612d8f565b335f908152600e60205260409020612c4790613c6f565b918483039283116106d157612c827febff2602b3f468259e1e99f613fed6691f3a6526effe6ef3e768ba7ae7a36c4f938593612d0d99613836565b5050612c9c612c9042612d8f565b610cb887611477613bfb565b5050612cb6612caa42612d8f565b610ca384611477613b82565b5050612d5b81612d46612ccf612cca61293a565b61242d565b612d25612ce4825f52600660205260405f2090565b54612cf7835f52600760205260405f2090565b54612d0382828b613cbc565b9d8e998a9361243b565b612d1f855f52600660205260405f2090565b5561243b565b612d37825f52600760205260405f2090565b555f52600860205260405f2090565b9060018060a01b03165f5260205260405f2090565b612d6683825461243b565b9055604080519485526020850195909552938301526001600160a01b03909216913391606090a3565b65ffffffffffff90818111612da2571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b61048a9136916108c5565b9081602091031261048a575163ffffffff8116810361048a5790565b90600163ffffffff809316019182116106d157565b90805115612ec85780602080612e1893518301019101612dcc565b612e2181613f2d565b90612e32825165ffffffffffff1690565b9065ffffffffffff8085169216828114612ebc5782119182612e68575b5050612e5f575061091690613cdd565b60209150015190565b909150612e76600a546123ff565b63ffffffff831614918215612e8f575b50505f80612e4f565b612eb49192506125d1612ea4612ea992612de8565b613f2d565b65ffffffffffff1690565b115f80612e86565b50505060209150015190565b5061091690613cdd565b90805115612f7d5780602080612eed93518301019101612dcc565b612ef681613fb7565b90612f07825165ffffffffffff1690565b9065ffffffffffff8085169216828114612ebc5782119182612f34575b5050612e5f575061091690613da4565b909150612f42600c546123ff565b63ffffffff831614918215612f5b575b50505f80612f24565b612f759192506125d1612f70612ea992612de8565b613fb7565b115f80612f52565b5061091690613da4565b918051156130495780602080612fa293518301019101612dcc565b91612fad8382614037565b92612fbe845165ffffffffffff1690565b9065ffffffffffff808516921682811461303d5782119182612ff4575b5050612feb576109169250613e64565b50506020015190565b90915061300183546123ff565b63ffffffff83161491821561301a575b50505f80612fdb565b6130359192506125d161302f612ea992612de8565b85614037565b115f80613011565b50505050506020015190565b5061091691613e64565b335f9081527f03b26b53c87faa1058f30bb5d2fee64f717719a0d9b7e4f4df027aa5e9b6ed69602052604090207fbae4ee3de6c709ff9a002e774c5b78cb381560b219213c88ae0f1e207c03c0239060ff905b5416156120075750565b335f9081527fe41986b390c4ce6791b87f7423b5fab7a81a0e6d89660b6264f697d008b2243a602052604090207fc6aaadd7371d5e8f9ed6849dd66a66573a3ba37167d03f4352c9ba5693678fac9060ff906130a6565b335f9081527f0287ab4cb376ea253d7b2ce0c2cbf458f7deae9458470d74afdfbbee484e9540602052604090207f9c56d972d63cbb4195b3c1484691dfc220fa96a4c47e7b6613bd82a022029e069060ff906130a6565b5f8181525f8051602061488b83398151915260209081526040808320338452909152902060ff906130a6565b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260409020545f8051602061488b8339815191529060ff16613235575f808052602091825260408082206001600160a01b038516835290925220805460ff1916600117905533906001600160a01b03165f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b50505f90565b6001600160a01b0381165f9081527f03b26b53c87faa1058f30bb5d2fee64f717719a0d9b7e4f4df027aa5e9b6ed69602052604090207fbae4ee3de6c709ff9a002e774c5b78cb381560b219213c88ae0f1e207c03c023905f8051602061488b8339815191529060ff905b541661330a575f828152602091825260408082206001600160a01b038616835290925220805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b5050505f90565b6001600160a01b0381165f9081527f0287ab4cb376ea253d7b2ce0c2cbf458f7deae9458470d74afdfbbee484e9540602052604090207f9c56d972d63cbb4195b3c1484691dfc220fa96a4c47e7b6613bd82a022029e06905f8051602061488b8339815191529060ff906132a6565b6001600160a01b0381165f9081527fe41986b390c4ce6791b87f7423b5fab7a81a0e6d89660b6264f697d008b2243a602052604090207fc6aaadd7371d5e8f9ed6849dd66a66573a3ba37167d03f4352c9ba5693678fac905f8051602061488b8339815191529060ff906132a6565b6001600160a01b0381165f9081527f2d4ccbfe9f7672a6f2537c1e5bce6adacb73706879154bbab6ce096012d67216602052604090207f4a634bc14d77baf979756509ef4298c6f6318af357828612545267ee2eb79233905f8051602061488b8339815191529060ff906132a6565b5f8181525f8051602061488b833981519152602081815260408084206001600160a01b038716855290915290912060ff906132a6565b5f8181525f8051602061488b833981519152602081815260408084206001600160a01b03871685529091529091205460ff161561330a575f828152602091825260408082206001600160a01b038616835290925220805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b6040516323b872dd60e01b60208201526001600160a01b03928316602482015292909116604483015260648083019390935291815260a08101918183106001600160401b0384111761083a576108a8926040526140a5565b600b54811015612aa057600b5f525f8051602061486b83398151915201905f90565b600d54811015612aa057600d5f525f8051602061484b83398151915201905f90565b8054821015612aa0575f5260205f2001905f90565b600d54600160401b81101561083a576001810180600d55811015612aa057600d5f525f8051602061484b8339815191520155565b600b54600160401b81101561083a576001810180600b55811015612aa057600b5f525f8051602061486b8339815191520155565b90815491600160401b83101561083a57826136629160016108a8950181556135c2565b90919082549060031b91821b915f19901b1916179055565b919091600d9081548015613725575b50613692614138565b509290918154926136a1613b82565b9481613710575b50156136ed57505f1982018281116106d15781541115612aa0575f527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb4018390559190565b613701926001600160d01b03169150614362565b505061370c836135d7565b9190565b65ffffffffffff83811691161490505f6136a8565b600160401b81101561083a5760018101808455811015612aa0575f908382525f8051602061484b83398151915201555f613689565b919091600b9081548015613801575b5061377261418d565b50929091815492613781613bfb565b94816137ec575b50156137cd57505f1982018281116106d15781541115612aa0575f527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db8018390559190565b6137e1926001600160d01b03169150614432565b505061370c8361360b565b65ffffffffffff83811691161490505f613788565b600160401b81101561083a5760018101808455811015612aa0575f908382525f8051602061486b83398151915201555f613769565b909291926001820190815480156138c4575b5084613853846141e2565b5094909284549361386383613c6f565b96816138af575b501561388c575050505f1981019081116106d157613662859161370c936135c2565b61370c9492936138a8926001600160d01b0390911691906144d1565b505061363f565b65ffffffffffff83811691161490505f61386a565b600160401b81101561083a578060016138e092018455836135c2565b8154905f199060031b1b191690555f613848565b51906108a8826107fb565b908161016091031261048a5761391361087b565b9061391d81612af7565b825261392b60208201612af7565b602083015261393c604082016138f4565b604083015261394d60608201612ad7565b606083015261395e60808201612ad7565b608083015260a081015160a083015261397960c08201612af7565b60c083015261398a60e08201612af7565b60e083015261010061399d818301612af7565b908301526101206139af818301612af7565b908301526139c1610140809201612af7565b9082015290565b5f8051602061482b833981519152546001600160a01b031633036139e857565b60405163118cdaa760e01b8152336004820152602490fd5b8115612935570490565b91818302915f1981850993838086109503948086039514613a8a5784831115613a7d5790829109815f038216809204600280826003021880830282030280830282030280830282030280830282030280830282030280920290030293600183805f03040190848311900302920304170290565b8215600302601118614249565b5050906109169250613a00565b60405163a9059cbb60e01b60208201526001600160a01b03909216602483015260448083019390935291815260808101916001600160401b0383118284101761083a576108a8926040526140a5565b90613aef61293a565b821015613b70575f82815260096020908152604080832033845290915290205460ff16613b5e57613b203383612b88565b918215613b4c575f9081526009602090815260408083203384529091529020805460ff19166001179055565b6040516366c0bcbf60e11b8152600490fd5b604051630c8d9eab60e31b8152600490fd5b60405163d5b25b6360e01b8152600490fd5b600c5480613bc257505f5b6001600160d01b03811615613bbd57600d54811015612aa057600d5f525f8051602061484b833981519152015490565b505f90565b805f198101116106d157600c5f527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c6015460301c613b8d565b600a5480613c3657505f5b6001600160d01b03811615613bbd57600b54811015612aa057600b5f525f8051602061486b833981519152015490565b805f198101116106d157600a5f527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a7015460301c613c06565b805480613c9e57505f5b6001600160d01b03811615613235576001613c9492016135c2565b90549060031b1c90565b5f199080828101116106d157825f5260205f2001015460301c613c79565b9190600181018091116106d157600182018092116106d15761091692613a0a565b600a54905f829160058411613d4b575b613cf793506146b6565b80613d1a57505f5b6001600160d01b03811615613bbd57613c946109169161357e565b613d3f613d29613d46926123ff565b600a5f525f8051602061480b8339815191520190565b5460301c90565b613cff565b9192613d568161458b565b81039081116106d157613cf793600a5f5265ffffffffffff80835f8051602061480b833981519152015416908516105f14613d92575091613ced565b929150613d9e9061242d565b90613ced565b600c54905f829160058411613e0b575b613dbe935061471f565b80613de157505f5b6001600160d01b03811615613bbd57613c94610916916135a0565b613d3f613df0613e06926123ff565b600c5f525f805160206147eb8339815191520190565b613dc6565b9192613e168161458b565b81039081116106d157613dbe93600c5f5265ffffffffffff80835f805160206147eb833981519152015416908516105f14613e52575091613db4565b929150613e5e9061242d565b90613db4565b908154905f829160058411613ec7575b613e7f935084614788565b80613ea757505f905b6001600160d01b0382161561323557610916916001613c9492016135c2565b613d3f613eb6613ec1926123ff565b835f5260205f200190565b90613e88565b9192613ed28161458b565b81039081116106d157613e7f93855f5265ffffffffffff808360205f20015416908516105f14613f03575091613e74565b929150613f0f9061242d565b90613e74565b60405190613f228261083f565b5f6020838281520152565b613f35613f15565b50613f3e613f15565b50600a54811015612aa057600a5f52602060405191613f5c8361083f565b5f8051602061480b83398151915201549165ffffffffffff83169283825260301c9182910152600b54811015612aa057600b5f525f8051602061486b833981519152015460405191613fad8361083f565b8252602082015290565b613fbf613f15565b50613fc8613f15565b50600c54811015612aa057600c5f52602060405191613fe68361083f565b5f805160206147eb83398151915201549165ffffffffffff83169283825260301c9182910152600d54811015612aa057600d5f525f8051602061484b833981519152015460405191613fad8361083f565b906020600161405b6140879361404b613f15565b50614054613f15565b50856135c2565b50936040519461406a8661083f565b549465ffffffffffff86169586825260301c9384910152016135c2565b905490604051926140978461083f565b835260031b1c602082015290565b905f602091828151910182855af115612478575f513d6140f657506001600160a01b0381163b155b6140d45750565b604051635274afe760e01b81526001600160a01b039091166004820152602490fd5b600114156140cd565b9190600181018091116106d157600182018092116106d157614122828285613a0a565b9282156129355709151581018091116106d15790565b600c548061414957505f905f905f90565b805f198101116106d157600c5f527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c6015460019165ffffffffffff82169160301c90565b600a548061419e57505f905f905f90565b805f198101116106d157600a5f527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a7015460019165ffffffffffff82169160301c90565b8054806141f35750505f905f905f90565b5f199181838101116106d1575f5260205f2001015460019165ffffffffffff82169160301c90565b60ff5f805160206148cb8339815191525460401c161561423757565b604051631afcd79f60e31b8152600490fd5b634e487b715f526020526024601cfd5b600c5490600160401b82101561083a576001820180600c55821015612aa057600c5f52805160209091015160301b65ffffffffffff191665ffffffffffff91909116175f805160206147eb83398151915290910155565b600a5490600160401b82101561083a576001820180600a55821015612aa057600a5f52805160209091015160301b65ffffffffffff191665ffffffffffff91909116175f8051602061480b83398151915290910155565b8054600160401b81101561083a57614324916001820181556135c2565b61434f57815160209092015160301b65ffffffffffff191665ffffffffffff92909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b600c54919291801561440957613df061437a916123ff565b9081549165ffffffffffff908184169183168083116143f7578692036143bf576143b892509065ffffffffffff82549181199060301b169116179055565b60301c9190565b50506143f2906143de6143d061089b565b65ffffffffffff9092168252565b6001600160d01b0385166020820152614259565b6143b8565b604051632520601d60e01b8152600490fd5b5061442d906144196143d061089b565b6001600160d01b0384166020820152614259565b5f9190565b600a5491929180156144ad57613d2961444a916123ff565b9081549165ffffffffffff908184169183168083116143f757869203614488576143b892509065ffffffffffff82549181199060301b169116179055565b50506143f2906144996143d061089b565b6001600160d01b03851660208201526142b0565b5061442d906144bd6143d061089b565b6001600160d01b03841660208201526142b0565b80549293928015614566576144e86144f3916123ff565b825f5260205f200190565b9182549265ffffffffffff918285169281168084116143f75787930361453257506143b892509065ffffffffffff82549181199060301b169116179055565b9150506143f29161455261454461089b565b65ffffffffffff9093168352565b6001600160d01b0386166020830152614307565b509061442d9161457761454461089b565b6001600160d01b0385166020830152614307565b600181111561091657600181600160801b8110156146a4575b61464c61464261463861462e61462461461a61465897600488600160401b6146539a1015614697575b64010000000081101561468a575b6201000081101561467d575b610100811015614671575b6010811015614665575b101561465d575b60030260011c614613818b613a00565b0160011c90565b614613818a613a00565b6146138189613a00565b6146138188613a00565b6146138187613a00565b6146138186613a00565b8093613a00565b821190565b900390565b60011b614603565b811c9160021b916145fc565b60081c91811b916145f2565b60101c9160081b916145e7565b60201c9160101b916145db565b60401c9160201b916145cd565b50600160401b9050608082901c6145a4565b905b8281106146c457505090565b9091808216906001818418811c83018093116106d157600a5f5265ffffffffffff80845f8051602061480b833981519152015416908616105f1461470c575050915b906146b8565b9093925081018091116106d15790614706565b905b82811061472d57505090565b9091808216906001818418811c83018093116106d157600c5f5265ffffffffffff80845f805160206147eb833981519152015416908616105f14614775575050915b90614721565b9093925081018091116106d1579061476f565b91905b8382106147985750505090565b909192808316906001818518811c83018093116106d157855f5265ffffffffffff808460205f20015416908516105f146147d7575050925b919061478b565b9094935081018091116106d157916147d056fedf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7c65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a89016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300d7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db902dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220397482c9a8ce651b670b21962bb148b00fad05ebc198b873564640451f1ffc5164736f6c63430008190033","sourceMap":"981:14958:102:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;-1:-1:-1;;981:14958:102;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3551:47:19;;;:87;;;;981:14958:102;;;;;;;;;;3551:87:19;-1:-1:-1;;;1134:40:28;;-1:-1:-1;3551:87:19;;;981:14958:102;-1:-1:-1;981:14958:102;;;;;;;;-1:-1:-1;;981:14958:102;;;;;;;966:38:103;981:14958:102;;;;;;;;;-1:-1:-1;;981:14958:102;;;;;;;821:37:103;981:14958:102;;;;-1:-1:-1;;;;;981:14958:102;;;;;:::o;:::-;;;;;;-1:-1:-1;;981:14958:102;;;;;;;;;:::i;:::-;;;3361:103:26;;;:::i;:::-;-1:-1:-1;;;;;981:14958:102;;5525:21;5521:75;;5634:10;981:14958;;;;5606:15:103;981:14958:102;;;;;5606:33:103;;;:::i;:24::-;:33;:::i;:::-;5610:35:102;;5606:88;;1057:70:94;5173:21:103;;:::i;:::-;4803:22;;:::i;:::-;1057:70:94;;;:::i;:::-;5801:20:102;;;5797:82;;5904:43;;;;:::i;:::-;3426:1:26;;1949;-1:-1:-1;;;;;;;;;;;981:14958:102;3860:283:26;3426:1;981:14958:102;;;;;;;;;;;;;;;;;;5797:82;981:14958;;-1:-1:-1;;;;;;5844:24:102;;981:14958;;5844:24;5606:88;981:14958;;-1:-1:-1;;;5668:15:102;;981:14958;;5668:15;5521:75;981:14958;;-1:-1:-1;;;5569:16:102;;981:14958;;5569:16;981:14958;;;;;;-1:-1:-1;;981:14958:102;;;;;;-1:-1:-1;981:14958:102;-1:-1:-1;;;;;;;;;;;981:14958:102;;;4919:24:19;981:14958:102;-1:-1:-1;981:14958:102;4919:24:19;981:14958:102;;;;;;;;;;;;;-1:-1:-1;;981:14958:102;;;;;;;;-1:-1:-1;;;;;981:14958:102;;;;;;;;;;;;;;-1:-1:-1;;981:14958:102;;;;4084:14:103;;:::i;:::-;4112:10;;4108:65;;4190:17;981:14958:102;;;;;;;;;;;;;;;;4210:27:103;981:14958:102;;;4210:27:103;;:::i;:::-;981:14958:102;;;;;;;4189:60:103;981:14958:102;4189:60:103;;:::i;:::-;981:14958:102;;;;;;;;;;;;;;;;;;:::i;4108:65:103:-;981:14958:102;;-1:-1:-1;;;4145:17:103;;981:14958:102;;4145:17:103;981:14958:102;;;;-1:-1:-1;;;;;981:14958:102;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;981:14958:102;;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;981:14958:102;;;;;;:::i;:::-;-1:-1:-1;;;;;981:14958:102;;;;;;;;;;;;;;:::i;:::-;3361:103:26;;;;;:::i;:::-;1673:7:78;-1:-1:-1;;;;;981:14958:102;1659:10:78;:21;1655:71;;-1:-1:-1;;;;;;;;;;;981:14958:102;;;;;;;6431:44:22;;;;;981:14958:102;6427:105:22;;;;1809:204:78;6427:105:22;;981:14958:102;;-1:-1:-1;;;6498:23:22;;981:14958:102;;6498:23:22;6431:44;981:14958:102;;;;6450:25:22;;;-1:-1:-1;6431:44:22;;;;;1655:71:78;981:14958:102;;-1:-1:-1;;;1703:12:78;;981:14958:102;;1703:12:78;981:14958:102;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;981:14958:102;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;-1:-1:-1;;;;;981:14958:102;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;981:14958:102;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;981:14958:102;;;;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;:::-;-1:-1:-1;;;;;981:14958:102;;;;;;-1:-1:-1;;981:14958:102;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;981:14958:102;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;-1:-1:-1;;981:14958:102;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;981:14958:102;;;;;;;5383:59:103;981:14958:102;;;;;;:::i;:::-;-1:-1:-1;;;;;981:14958:102;;;-1:-1:-1;981:14958:102;;;5383:15:103;981:14958:102;;;;;5383:59:103;:::i;:::-;981:14958:102;;;;;;;;;;;;-1:-1:-1;;981:14958:102;;;;;;655:32:78;-1:-1:-1;;;;;981:14958:102;;;;;;;;;;;;-1:-1:-1;;981:14958:102;;;;5350:25:19;981:14958:102;;;;;;;:::i;:::-;;-1:-1:-1;981:14958:102;-1:-1:-1;;;;;;;;;;;981:14958:102;;3202:4:19;4919:24;981:14958:102;-1:-1:-1;981:14958:102;4919:24:19;981:14958:102;3202:4:19;:::i;:::-;5350:25;:::i;:::-;981:14958:102;;;;;;;-1:-1:-1;;981:14958:102;;;;;;;;;:::i;:::-;966:10:24;-1:-1:-1;;;;;981:14958:102;;6441:34:19;6437:102;;6549:37;981:14958:102;;;6549:37:19;:::i;6437:102::-;981:14958:102;;-1:-1:-1;;;6498:30:19;;981:14958:102;;6498:30:19;981:14958:102;;;;;;-1:-1:-1;;981:14958:102;;;;;1524:22;981:14958;;;;1524:46;;;981:14958;;;;;;;;;;;1524:46;-1:-1:-1;1550:20:102;981:14958;;;;;1524:46;;981:14958;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;981:14958:102;;;;;;;;;:::i;:::-;3361:103:26;;:::i;:::-;3202:4:19;;:::i;:::-;-1:-1:-1;981:14958:102;;;;;;;;;;;9542:26;9538:76;;-1:-1:-1;;981:14958:102;;;;;-1:-1:-1;981:14958:102;;;;;;9665:27;;981:14958;;9665:27;1949:1:26;-1:-1:-1;;;;;;;;;;;981:14958:102;;9538:76;981:14958;;-1:-1:-1;;;9591:12:102;;981:14958;;9591:12;981:14958;;;;;;-1:-1:-1;;981:14958:102;;;;;;1718:31:103;981:14958:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3361:103:26;;:::i;:::-;-1:-1:-1;;;;;981:14958:102;;;;;3474:24;;3470:81;;-1:-1:-1;981:14958:102;;;;3565:55;;;981:14958;3561:118;;981:14958;;-1:-1:-1;;;3713:43:102;;;3750:4;3713:43;;;981:14958;;;;;;;;;;;;;;;;;;;;;;;;;3713:43;;;;;;;;;;-1:-1:-1;3713:43:102;;;981:14958;;3829:6;981:14958;;;3750:4;;3802:10;;3829:6;;:::i;:::-;-1:-1:-1;981:14958:102;;;3864:43;;;3750:4;3864:43;;;981:14958;;;;;;;;;;3864:43;981:14958;;;;;;3864:43;981:14958;;;;;3864:43;;;;;;;:59;:43;-1:-1:-1;3864:43:102;;;981:14958;3864:59;;;:::i;:::-;3938:20;;;3934:79;;981:14958;;;;;4027:64;;981:14958;4023:123;;5173:21:103;;981:14958:102;5173:21:103;4502:93:102;5173:21:103;;:::i;:::-;4803:22;4426:66:102;4803:22:103;;:::i;:::-;4349:67:102;390:70:94;;;;;:::i;:::-;837:15:68;4385:30:102;837:15:68;819:34;837:15;819:34;:::i;:::-;4385:30:102;;:::i;:::-;4349:67;;:::i;:::-;837:15:68;;4463:28:102;837:15:68;819:34;837:15;819:34;:::i;4463:28:102:-;4426:66;;:::i;:::-;-1:-1:-1;;;;;;;981:14958:102;;;;;;5606:15:103;981:14958:102;;;;;837:15:68;4553:41:102;837:15:68;5606:33:103;:24;819:34:68;837:15;819:34;:::i;:::-;-1:-1:-1;;;;;981:14958:102;;;;;;;5606:15:103;981:14958:102;;;;;;;5606:33:103;4553:41:102;:::i;:::-;4502:93;;:::i;:::-;-1:-1:-1;;981:14958:102;;;;;;;;;;;3802:10;;4611:62;;981:14958;;4611:62;3426:1:26;1949;-1:-1:-1;;;;;;;;;;;981:14958:102;3860:283:26;3426:1;981:14958:102;;;;;;;;;;;;;;;;;;;4023:123;981:14958;;-1:-1:-1;;;4114:21:102;;;4027:64;5173:21:103;4045:31:102;5173:21:103;;;:::i;4045:31:102:-;981:14958;;-1:-1:-1;4027:64:102;;3934:79;-1:-1:-1;981:14958:102;;-1:-1:-1;;;3981:21:102;;;3864:43;;;;;;-1:-1:-1;3864:43:102;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;:::i;3713:::-;3829:6;3713:43;;;;;;;;;;;;;;;:::i;:::-;;;;;3561:118;-1:-1:-1;981:14958:102;;-1:-1:-1;;;3643:25:102;;;3565:55;-1:-1:-1;3609:10:102;981:14958;;;;3586:22;981:14958;;;;;;;;3585:35;3565:55;;3470:81;981:14958;;-1:-1:-1;;;3521:19:102;;;981:14958;;;;;;-1:-1:-1;;981:14958:102;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;981:14958:102;;;;;1805:27:103;981:14958:102;;;;;;;;;;;;;;;-1:-1:-1;;981:14958:102;;;;;;1968:34:103;981:14958:102;;;;;;;;;;;;;;;-1:-1:-1;;981:14958:102;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;981:14958:102;;;;;;;;;:::i;:::-;;;;;4622:48:103;981:14958:102;;;:::i;:::-;4622:48:103;;:::i;981:14958:102:-;;;;;;-1:-1:-1;;981:14958:102;;;;;;;;;:::i;:::-;3361:103:26;;:::i;:::-;3202:4:19;;:::i;:::-;-1:-1:-1;981:14958:102;;;;;;;;;;;;;10370:24;10366:74;;-1:-1:-1;;981:14958:102;;;;;;;;-1:-1:-1;981:14958:102;;;;;;10489:25;;981:14958;;10489:25;3426:1:26;1949;-1:-1:-1;;;;;;;;;;;981:14958:102;3860:283:26;981:14958:102;;;;;;-1:-1:-1;;981:14958:102;;;;;-1:-1:-1;;;;;;;;;;;;;;;;981:14958:102;;;;;;;;;;;;;;-1:-1:-1;;981:14958:102;;;;;;:::i;:::-;;;;;;:::i;:::-;-1:-1:-1;;;;;981:14958:102;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;8837:64:22;;981:14958:102;;;;;;734:29:78;730:87;;981:14958:102;;;;;6431:44:22;;;;;981:14958:102;6427:105:22;;;6656:20;981:14958:102;6656:20:22;981:14958:102;1167:340:78;981:14958:102;;;;-1:-1:-1;;;;;981:14958:102;;;;;6575:22:22;-1:-1:-1;;;;;;;;;;;;;;981:14958:102;;;;;;;;;6575:22:22;1167:340:78;:::i;:::-;-1:-1:-1;;;;;;;;;;;981:14958:102;;-1:-1:-1;;981:14958:102;;;;;-1:-1:-1;;;;;981:14958:102;;;;;;;;;;;;;6656:20:22;;;;981:14958:102;6431:44:22;981:14958:102;;;;;-1:-1:-1;6450:25:22;6431:44;;;730:87:78;981:14958:102;;-1:-1:-1;;;786:20:78;;981:14958:102;;786:20:78;981:14958:102;;;;;;-1:-1:-1;;981:14958:102;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;-1:-1:-1;;981:14958:102;;;;;;-1:-1:-1;981:14958:102;2431:59:103;981:14958:102;;;;-1:-1:-1;981:14958:102;;;;;;;;;;;;;;-1:-1:-1;;981:14958:102;;;;3875:17:103;981:14958:102;;3895:30:103;981:14958:102;;;;;3895:14:103;;;:::i;:::-;981:14958:102;;;3895:30:103;;:::i;:::-;981:14958:102;;;;;;;3874:63:103;981:14958:102;3874:63:103;;:::i;:::-;981:14958:102;;;;;;;;;;;;;-1:-1:-1;;981:14958:102;;;;;;1200:42:103;-1:-1:-1;;;;;981:14958:102;;;;;;;;;;;;-1:-1:-1;;981:14958:102;;;;;;2136:32:103;981:14958:102;;;;;;;;;;;;;;;;;;-1:-1:-1;;981:14958:102;;;;2303:62:20;;:::i;:::-;-1:-1:-1;;;;;;;;;;;981:14958:102;;-1:-1:-1;;;;;;981:14958:102;;;;;;;-1:-1:-1;;;;;981:14958:102;3975:40:20;981:14958:102;;3975:40:20;981:14958:102;;;;;;;-1:-1:-1;;981:14958:102;;;;;;;;;;;:::i;:::-;3361:103:26;;:::i;:::-;7131:7:102;981:14958;7117:21;;-1:-1:-1;;;;;981:14958:102;;-1:-1:-1;;;;;981:14958:102;;;7117:21;:10;:21;7113:71;;7218:14;;:::i;:::-;7265:25;;;;:::i;:::-;7305:17;;;;:53;;;981:14958;7304:87;;;;981:14958;7300:146;;981:14958;5173:21:103;9310:48:102;5173:21:103;;;:::i;:::-;7540:17:102;7528:30;7540:17;;;:::i;:::-;981:14958;;7528:11;981:14958;;;;;;;7528:30;981:14958;;7572:29;;;;;7642:30;;;;;:::i;:::-;3066:5:63;;;3463;;;981:14958:102;3060:42:63;;7752:17:102;;;7748:384;;7568:1615;;;;;;;9197:17;9193:102;;7568:1615;981:14958;;;;;;;;;;;;;;;;;;;;;;;9310:48;3426:1:26;1949;-1:-1:-1;;;;;;;;;;;981:14958:102;3860:283:26;3426:1;981:14958:102;;;;;;;;;;;;;9193:102;-1:-1:-1;981:14958:102;9270:13;;981:14958;;9230:18;;981:14958;;-1:-1:-1;;;;;981:14958:102;;;9230:18;7556:1;981:14958;-1:-1:-1;;;;;981:14958:102;9270:13;;:::i;:::-;9193:102;;7748:384;8045:29;7813:50;7962:65;7813:50;7998:28;7914:29;7813:50;8057:16;7813:50;8077:40;7813:50;;;:::i;:::-;7914:29;;;:::i;:::-;837:15:68;819:34;837:15;819:34;:::i;:::-;7998:28:102;;:::i;8077:40::-;8057:16;;:::i;8045:29::-;981:14958;7748:384;;;;;;;7568:1615;8185:26;;;;981:14958;;7528:11;981:14958;;;;;;;8185:26;981:14958;8250:27;:45;:27;;;;;:::i;:45::-;3463:5:63;3066;;;3463;;;981:14958:102;3060:42:63;;8375:17:102;;8371:802;;7568:1615;;;;;;;;8371:802;9096:26;8436:50;;8537:53;8436:50;8637:54;8436:50;8637:29;8436:50;9125:33;8436:50;;;;:::i;:::-;8537:53;;;;;;:::i;:::-;8637:29;;;;:::i;:::-;:54;:::i;:::-;8714:33;;;;8710:194;;8371:802;8922:65;837:15:68;8958:28:102;9038:40;837:15:68;;;819:34;837:15;819:34;:::i;9038:40:102:-;9005:30;9017:17;;;:::i;9005:30::-;981:14958;9125:33;:::i;:::-;9096:26;981:14958;;7528:11;981:14958;;;;;;;9096:26;981:14958;8371:802;;;;;;;8710:194;8797:33;8771:59;8922:65;8797:33;;;9038:40;8797:33;;;:::i;:::-;8771:59;;:::i;:::-;8852:33;;-1:-1:-1;8852:33:102;;-1:-1:-1;8710:194:102;;7300:146;981:14958;;-1:-1:-1;;;7414:21:102;;981:14958;;7414:21;7304:87;7363:28;;;;7304:87;;7305:53;7341:17;;;;:::i;:::-;7326:32;;7305:53;;7113:71;981:14958;;-1:-1:-1;;;7161:12:102;;981:14958;;7161:12;981:14958;;;;;;-1:-1:-1;;981:14958:102;;;;4384:17:103;981:14958:102;;;;;;;4405:14:103;;;:::i;:::-;4384:17;981:14958:102;;;;;;;4404:36:103;981:14958:102;;;4404:36:103;;:::i;981:14958:102:-;;;;;;-1:-1:-1;;981:14958:102;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;981:14958:102;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;981:14958:102;2307:68:103;981:14958:102;;;;;-1:-1:-1;981:14958:102;;;;;;;;;;;;;;;;;-1:-1:-1;;981:14958:102;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;-1:-1:-1;;981:14958:102;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;981:14958:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6491:14;981:14958;;6491:14;;:::i;981:14958::-;;;;;4994:47:103;981:14958:102;;;:::i;:::-;4994:47:103;;:::i;981:14958:102:-;;;;;;;;;;;;;;;;;;;;:::i;:::-;3361:103:26;;:::i;:::-;10932:22:102;981:14958;;;;;10928:89;;981:14958;;-1:-1:-1;;;11032:49:102;;-1:-1:-1;;;;;981:14958:102;;;11032:49;;;981:14958;;;;;;;;;;;;;;;11032:49;11042:17;;;981:14958;11032:49;;;;;;;-1:-1:-1;11032:49:102;;;981:14958;11031:50;;11027:102;;981:14958;;-1:-1:-1;;;11143:34:102;;981:14958;;;;;11143:34;981:14958;11143:34;981:14958;;11143:34;;;;;;;-1:-1:-1;11143:34:102;;;981:14958;11189:4;;;981:14958;;11143:51;11139:107;;-1:-1:-1;10932:22:102;981:14958;;-1:-1:-1;;;;;981:14958:102;;;;-1:-1:-1;;;;;;981:14958:102;;;;;;;-1:-1:-1;;;981:14958:102;;;11334:24;-1:-1:-1;;11334:24:102;3426:1:26;1949;-1:-1:-1;;;;;;;;;;;981:14958:102;3860:283:26;11139:107:102;981:14958;;-1:-1:-1;;;11217:18:102;;;11143:34;;;;;;;-1:-1:-1;11143:34:102;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;11027:102;-1:-1:-1;981:14958:102;;-1:-1:-1;;;11104:14:102;;;11032:49;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;10928:89;981:14958;;-1:-1:-1;;;10977:29:102;;;981:14958;;;;;;-1:-1:-1;;981:14958:102;;;;;;1298:40:103;-1:-1:-1;;;;;981:14958:102;;;;;;;;;;;;-1:-1:-1;;981:14958:102;;;;1703:14;;:::i;:::-;5173:21:103;;:::i;:::-;981:14958:102;;;;1750:11;981:14958;;;;;;;;;;;;;1791:1;981:14958;;;;;;;;;1750:11;981:14958;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;981:14958:102;;;;-1:-1:-1;;;;;;;;;;;981:14958:102;;;-1:-1:-1;;;;;981:14958:102;;;;;;;;;;;;;;-1:-1:-1;;981:14958:102;;;;;;3901:31:19;981:14958:102;;;;;:::i;:::-;;;-1:-1:-1;981:14958:102;-1:-1:-1;;;;;;;;;;;981:14958:102;;;-1:-1:-1;981:14958:102;;;;;;;;;;;;;;;;;3901:31:19;981:14958:102;;;;;;;;;;;;;;;;-1:-1:-1;;981:14958:102;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;981:14958:102;5606:15:103;981:14958:102;;;5606:33:103;981:14958:102;-1:-1:-1;981:14958:102;5606:33:103;:::i;981:14958:102:-;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;981:14958:102;;;;-1:-1:-1;981:14958:102;477:31:82;981:14958:102;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;416:25:82;;;;981:14958:102;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;981:14958:102;;;;;;;;;;;;477:31:82;;;981:14958:102;;;;;;;;;;;;;;;;;;;;-1:-1:-1;981:14958:102;;;;;;;;;;;;;;477:31:82;981:14958:102;477:31:82;;;;;;;:::i;:::-;518:79;;;981:14958:102;518:79:82;;981:14958:102;;;;;;;;;;;-1:-1:-1;;981:14958:102;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;981:14958:102;;;;;;;;;;;;;;;;;-1:-1:-1;;981:14958:102;;;;;;;1109:35:103;981:14958:102;;;;;;;;;-1:-1:-1;;981:14958:102;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;3361:103:26;;:::i;:::-;3202:4:19;;:::i;:::-;-1:-1:-1;;;;;981:14958:102;;;9907:21;;9903:75;;-1:-1:-1;981:14958:102;;;9992:22;981:14958;;;;;;;;;;;;;9992:41;9988:91;;-1:-1:-1;;;;;981:14958:102;;;;;3586:22;981:14958;;;;;10145:44;;;;10089:40;;:31;981:14958;;;;;;;;;;;;;;10089:40;981:14958;;;;;;;;;;;;;;;10145:44;;;;3426:1:26;1949;-1:-1:-1;;;;;;;;;;;981:14958:102;3860:283:26;9903:75:102;981:14958;;-1:-1:-1;;;9951:16:102;;981:14958;;9951:16;981:14958;;;;;;-1:-1:-1;;981:14958:102;;;;;2666:94:103;981:14958:102;;;;;:::i;:::-;;;-1:-1:-1;981:14958:102;2666:94:103;981:14958:102;;;-1:-1:-1;981:14958:102;;;;;;;;;;;;;;;;;2666:94:103;981:14958:102;;;;;;;;;;;;;-1:-1:-1;;981:14958:102;;;;;;2816:92:103;981:14958:102;;;;;:::i;:::-;;;-1:-1:-1;981:14958:102;2816:92:103;981:14958:102;;;-1:-1:-1;981:14958:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3361:103:26;;:::i;:::-;11459:20:102;981:14958;;;;;11455:85;;-1:-1:-1;;;;;981:14958:102;;;;;;11550:312;;981:14958;11459:20;981:14958;;-1:-1:-1;;;;981:14958:102;-1:-1:-1;;;981:14958:102;;;11872:27;11915:20;-1:-1:-1;11915:20:102;;3426:1:26;1949;-1:-1:-1;;;;;;;;;;;981:14958:102;3860:283:26;11550:312:102;981:14958;;-1:-1:-1;;;11597:45:102;;-1:-1:-1;;;;;981:14958:102;;11597:45;;;981:14958;;;11597:45;;981:14958;;;;;;11597:45;11607:15;;;981:14958;11597:45;;;;;;;-1:-1:-1;11597:45:102;;;11550:312;11596:46;;11592:104;;981:14958;;-1:-1:-1;;;11714:30:102;;;981:14958;11714:30;981:14958;11714:30;;;;;;;;-1:-1:-1;11714:30:102;;;11550:312;11756:4;;;981:14958;;11714:47;11710:109;;-1:-1:-1;11459:20:102;981:14958;;-1:-1:-1;;;;;;981:14958:102;-1:-1:-1;;;;;981:14958:102;;;;;;;;;11550:312;;;;;;11710:109;981:14958;;-1:-1:-1;;;11788:16:102;;;11714:30;;;;;;;-1:-1:-1;11714:30:102;;;;;;:::i;:::-;;;;;;11592:104;981:14958;;-1:-1:-1;;;11669:12:102;;981:14958;;11669:12;11597:45;;;;;;;;;;;;;;:::i;:::-;;;;11455:85;981:14958;;-1:-1:-1;;;11502:27:102;;;981:14958;;;;;;-1:-1:-1;;981:14958:102;;;;;;;;;:::i;:::-;;;3361:103:26;;;:::i;:::-;-1:-1:-1;;;;;981:14958:102;;;;;6112:23;;6108:79;;6273:6;981:14958;6206:13;;;;:::i;:::-;981:14958;;;-1:-1:-1;981:14958:102;;;;6273:6;:::i;:::-;981:14958;;;;;;;;;;;;6302:10;;6296:43;;981:14958;6296:43;1949:1:26;-1:-1:-1;;;;;;;;;;;981:14958:102;;;;;;;;;;;;;;6108:79;981:14958;;-1:-1:-1;;;6158:18:102;;981:14958;;6158:18;981:14958;;;;;;-1:-1:-1;;981:14958:102;;;;;;-1:-1:-1;981:14958:102;2546:64:103;981:14958:102;;;;-1:-1:-1;981:14958:102;;;;;;;;;;;;;;-1:-1:-1;;981:14958:102;;;;2058:22:103;981:14958:102;;;-1:-1:-1;;;;;981:14958:102;;;;;;;;;;;;;;-1:-1:-1;;981:14958:102;;;;;5173:21:103;;:::i;981:14958:102:-;;;;;;-1:-1:-1;;981:14958:102;;;;;;3361:103:26;;:::i;:::-;966:10:24;-1:-1:-1;981:14958:102;;;;;;;;;;1109:35:103;;981:14958:102;;4468:23:19;4464:108;;981:14958:102;;;;10692:21;10688:71;;981:14958;;10805:22;981:14958;;;;;;;;10805:22;1949:1:26;-1:-1:-1;;;;;;;;;;;981:14958:102;;4464:108:19;981:14958:102;;;;4514:47:19;;;;;;966:10:24;981:14958:102;4514:47:19;;981:14958:102;;;;;4514:47:19;981:14958:102;;;;;;-1:-1:-1;;981:14958:102;;;;;4803:22:103;;:::i;981:14958:102:-;;;;;;-1:-1:-1;;981:14958:102;;;;;;;;;:::i;:::-;3123:14;;:::i;:::-;3154:24;;;:::i;:::-;3181:29;;;;;:::i;:::-;981:14958;;;;;;;3235:1;981:14958;;;;;;;3213:33;;;:::i;:::-;981:14958;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;981:14958:102;;;;1888:24:103;981:14958:102;;;-1:-1:-1;;;;;981:14958:102;;;;;;;;;;;;;;-1:-1:-1;;981:14958:102;;;;5767:26:19;981:14958:102;;;;;;;:::i;:::-;;-1:-1:-1;981:14958:102;-1:-1:-1;;;;;;;;;;;981:14958:102;;3202:4:19;4919:24;981:14958:102;-1:-1:-1;981:14958:102;4919:24:19;981:14958:102;3202:4:19;:::i;:::-;5767:26;:::i;981:14958:102:-;;;;;;-1:-1:-1;;981:14958:102;;;;;;;;;;;;;-1:-1:-1;;;;;981:14958:102;;;;;;;;;;;;-1:-1:-1;;981:14958:102;;;;;;;675:39:103;981:14958:102;;;;;;;;;-1:-1:-1;;981:14958:102;;;;;;;;;;;;;;;;;;;-1:-1:-1;;981:14958:102;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;-1:-1:-1;;;;;981:14958:102;;;;;;;;;;;;;;;:::i;:::-;1972:48;;981:14958;;;;;;;:::i;:::-;;;;;;;;;;;;;;2034:16;;2030:111;;981:14958;;2233:39;1057:70:94;2233:39:102;;4622:48:103;2196:77:102;2233:39;;;;2196:77;;:::i;:::-;2312:36;;4994:47:103;981:14958:102;2312:36;;;4994:47:103;;:::i;:::-;2389:37:102;;;4622:48:103;;:::i;:::-;1057:70:94;;:::i;:::-;981:14958:102;;;;;;;;;;;;;2030:111;2089:41;;;;-1:-1:-1;981:14958:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;4622:48:103;981:14958:102;2196:77;981:14958;1057:70:94;981:14958:102;;;:::i;:::-;;;;;2030:111;;;;;981:14958;;;;;;-1:-1:-1;;981:14958:102;;;;2357:1:20;981:14958:102;;;;;:::i;:::-;2303:62:20;;:::i;:::-;2357:1;:::i;981:14958:102:-;;;;;;-1:-1:-1;;981:14958:102;;;;;;;;;:::i;:::-;;;3361:103:26;;:::i;:::-;-1:-1:-1;;;;;981:14958:102;;4890:21;4886:75;;4975:11;;4971:73;;845:69:94;4803:22:103;;:::i;:::-;5173:21;;:::i;:::-;845:69:94;;;:::i;:::-;5180:10:102;981:14958;;;;5606:15:103;981:14958:102;;;;;5180:10;;;5606:33:103;;;:::i;:::-;5150:41:102;;5146:96;;5267:40;;;;;:::i;5146:96::-;981:14958;;-1:-1:-1;;;5214:17:102;;981:14958;;5214:17;4971:73;981:14958;;-1:-1:-1;;;5009:24:102;;981:14958;;5009:24;981:14958;;;;;;-1:-1:-1;;981:14958:102;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;981:14958:102;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;7556:1;981:14958;;;;;;;:::o;:::-;;;;;;;;;;:::o;5256:193:103:-;-1:-1:-1;;;;;981:14958:102;-1:-1:-1;981:14958:102;;;5383:15:103;981:14958:102;;;;;5383:59:103;;5256:193;;5383:59;:::i;981:14958:102:-;;;;;;;;;;;:::o;:::-;;;;;;;;;;1167:340:78;;13510:30:102;1167:340:78;981:14958:102;1167:340:78;6893:76:22;;:::i;:::-;;;:::i;:::-;1949:1:26;-1:-1:-1;;;;;;;;;;;981:14958:102;-1:-1:-1;;;;;981:14958:102;;;;1376:73:78;;1167:340;981:14958:102;;;;:::i;:::-;13510:30;981:14958;;;13510:30;;;;;;:::i;:::-;981:14958;;;;-1:-1:-1;;;;;981:14958:102;13555:31;13551:88;;13653:20;;;;981:14958;;;;;;;;;;13653:25;13649:85;;13748:29;;;981:14958;;13748:29;;981:14958;13748:43;;-1:-1:-1;;;;;981:14958:102;;;13748:43;;13744:943;;1167:340:78;981:14958:102;;;15647:32;981:14958;14817:36;981:14958;;;14697:30;981:14958;;;;;;;;;;;;1398:1:78;981:14958:102;;-1:-1:-1;;;;;;981:14958:102;;;;;;-1:-1:-1;;;;;981:14958:102;;;;;;;;14697:30;13510;14747:13;;981:14958;;;;-1:-1:-1;;;;;;981:14958:102;-1:-1:-1;;;;;981:14958:102;;;;;;;;;14771:36;819:34:68;837:15;819:34;:::i;:::-;1949:1:26;981:14958:102;;-1:-1:-1;;;;981:14958:102;;;;;;-1:-1:-1;;;981:14958:102;;;;;;;;14771:36;981:14958;;;;;;1949:1:26;981:14958:102;;-1:-1:-1;;;;;981:14958:102;;;;;;-1:-1:-1;;;;;;981:14958:102;;;;;;;;14817:36;14864:42;981:14958;14883:23;;;981:14958;;;;;;;;;1398:1:78;981:14958:102;;;;;;;1398:1:78;981:14958:102;;14864:42;14917:38;981:14958;14934:21;;;981:14958;;;;;;;1398:1:78;981:14958:102;;;;;;;;;;;;1398:1:78;981:14958:102;;14917:38;14965:34;14980:19;;;981:14958;14965:34;981:14958;;14965:34;981:14958;-1:-1:-1;;;;;981:14958:102;;;;;;;15010:135;;1167:340:78;-1:-1:-1;15158:36:102;;;981:14958;-1:-1:-1;;;;;981:14958:102;;;;15154:157;;1167:340:78;-1:-1:-1;15324:35:102;;;981:14958;-1:-1:-1;;;;;981:14958:102;;;;15320:153;;1167:340:78;-1:-1:-1;15486:34:102;;;981:14958;-1:-1:-1;;;;;981:14958:102;;;;15482:152;;1167:340:78;-1:-1:-1;15647:32:102;981:14958;-1:-1:-1;;;;;981:14958:102;;;;;;;15643:145;;1167:340:78;:::o;15643:145:102:-;15709:68;;;:::i;:::-;;1167:340:78:o;15482:152:102:-;15550:73;;;:::i;:::-;;15482:152;;;15320:153;15389:73;;;:::i;:::-;;15320:153;;;15154:157;15224:76;;;:::i;:::-;;15154:157;;;15010:135;15073:61;;;:::i;:::-;;15010:135;;;13744:943;13811:36;;;981:14958;13811:50;;-1:-1:-1;;;;;981:14958:102;;;13811:50;;13807:405;;13744:943;14230:34;;;981:14958;14230:48;;-1:-1:-1;;;;;981:14958:102;;;14230:48;13744:943;14226:451;14302:21;;;981:14958;;14302:21;;14351:19;;;981:14958;14351:24;:74;;;14298:365;14347:150;;14298:365;;981:14958;15647:32;14298:365;14817:36;981:14958;;14298:365;;14226:451;;;;;;;13744:943;;14347:150;981:14958;-1:-1:-1;;;14460:14:102;;;;;14351:74;-1:-1:-1;14379:32:102;;;981:14958;14379:46;;-1:-1:-1;;;;;981:14958:102;;;14379:46;;14351:74;;14298:365;14525:19;;;981:14958;14525:24;;;:74;;;14298:365;14521:142;;14298:365;;981:14958;15647:32;14298:365;14817:36;981:14958;;14298:365;;;14525:74;-1:-1:-1;14553:32:102;;;981:14958;14553:46;;-1:-1:-1;;;;;981:14958:102;;;14553:46;;;14525:74;;13807:405;13885:23;;;981:14958;;13885:23;;13936:35;;;981:14958;13936:49;;-1:-1:-1;;;;;981:14958:102;;;13936:49;13807:405;13932:125;981:14958;-1:-1:-1;;;14020:14:102;;;;;13881:317;14085:35;;;981:14958;14085:49;;-1:-1:-1;;;;;981:14958:102;;;14085:49;14081:117;13807:405;14081:117;981:14958;-1:-1:-1;;;14165:14:102;;;;;13649:85;981:14958;;-1:-1:-1;;;13701:22:102;;;;;13551:88;981:14958;;-1:-1:-1;;;13609:19:102;;;;;1376:73:78;6961:1:22;6893:76;;;:::i;:::-;;;:::i;6961:1::-;1376:73:78;;;2492:191:102;-1:-1:-1;;;;;981:14958:102;-1:-1:-1;981:14958:102;;;5606:15:103;981:14958:102;;;;;5606:33:103;;;:::i;:::-;5173:21;;:::i;:::-;4803:22;;:::i;:::-;981:14958:102;1884:1:94;981:14958:102;;;;;;;1884:1:94;981:14958:102;;;;;;;9478:25:63;;;:::i;981:14958:102:-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;3612:132:103:-;819:34:68;837:15;819:34;:::i;:::-;3683:54:103;3703:17;981:14958:102;3684:36:103;981:14958:102;;;;;;;3684:36:103;;:::i;:::-;981:14958:102;;;3683:54:103;;:::i;:::-;981:14958:102;3612:132:103;:::o;3313:244::-;3418:17;981:14958:102;;;;;;;;;;;;;;3406:29:103;3402:85;;3503:47;3504:29;;;;:::i;3402:85::-;981:14958:102;;-1:-1:-1;;;3458:18:103;;;;;3361:103:26;;;;:::i;:::-;981:14958:102;;-1:-1:-1;;;;;981:14958:102;;;6521:23;;6517:79;;6650:11;;6646:70;;981:14958;6742:10;;;;;;-1:-1:-1;981:14958:102;;6887:49;;981:14958;;;;6864:6;;981:14958;;6821:18;;981:14958;;-1:-1:-1;;;;;981:14958:102;;;6821:18;6864:6;:::i;:::-;6887:49;981:14958;;6898:10;;;;6887:49;;;:::i;:::-;;;;3426:1:26;;1949;-1:-1:-1;;;;;;;;;;;981:14958:102;3860:283:26;6754:3:102;6790:9;6773:27;981:14958;6790:9;6783:17;6790:9;;;;;:::i;:::-;981:14958;6783:17;:::i;6773:27::-;6754:3;981:14958;6731:9;;6646:70;981:14958;;-1:-1:-1;;;6684:21:102;;;;;981:14958;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;981:14958:102;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;3405:215:20:-;-1:-1:-1;;;;;981:14958:102;;;;3489:22:20;;3485:91;;-1:-1:-1;;;;;;;;;;;981:14958:102;;-1:-1:-1;;;;;;981:14958:102;;;;;;;;3975:40:20;-1:-1:-1;;3975:40:20;3405:215::o;3485:91::-;981:14958:102;;-1:-1:-1;;;3534:31:20;;3509:1;3534:31;;;981:14958:102;;;3534:31:20;2731:227:102;;2871:34;2731:227;981:14958;-1:-1:-1;981:14958:102;2871:18;981:14958;;;-1:-1:-1;981:14958:102;;;;;;;;;;;;;;;;;2871:34;981:14958;;-1:-1:-1;981:14958:102;2907:11;981:14958;;;-1:-1:-1;981:14958:102;;2927:16;981:14958;;;-1:-1:-1;981:14958:102;;;1884:1:94;981:14958:102;;;;;;;1884:1:94;981:14958:102;;;;;;;9478:25:63;;;:::i;3470:384:26:-;-1:-1:-1;;;;;;;;;;;1991:1:26;981:14958:102;;3670:20:26;3666:88;;1991:1;981:14958:102;;3470:384:26:o;3666:88::-;981:14958:102;;-1:-1:-1;;;3713:30:26;;;;;11948:968:102;12135:10;981:14958;;;;5606:15:103;981:14958:102;;;;;;11948:968;;;819:34:68;837:15;819:34;:::i;:::-;12135:10:102;981:14958;;;;5606:15:103;981:14958:102;;;;;5606:33:103;;;:::i;:::-;981:14958:102;;;;;;;;;12119:93;12835:74;12119:93;;;12660:30;12119:93;;:::i;:::-;837:15:68;;12222:67:102;819:34:68;837:15;819:34;:::i;:::-;12259:29:102;4803:22:103;;;:::i;12222:67:102:-;837:15:68;;12299:68:102;819:34:68;837:15;819:34;:::i;:::-;12335:31:102;5173:21:103;;;:::i;12299:68:102:-;12394:14;;12769:34;12394:14;12769:25;12394:18;:14;;:::i;:::-;:18;:::i;:::-;12726:33;12445:18;;981:14958;;7528:11;981:14958;;;;;;;12445:18;981:14958;12502:23;;981:14958;;12502:16;981:14958;;;;;;;12502:23;981:14958;390:70:94;;;;;:::i;:::-;12660:30:102;;;;;;:::i;:::-;12639:18;;981:14958;;7528:11;981:14958;;;;;;;12639:18;981:14958;12726:33;:::i;:::-;12700:23;;981:14958;;12502:16;981:14958;;;;;;;12700:23;981:14958;;;12769:18;981:14958;;;;;;;12769:25;981:14958;;;;;;;;;;;;;;;;12769:34;:50;981:14958;;;12769:50;:::i;:::-;981:14958;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;981:14958:102;;;;12135:10;;981:14958;;12835:74;11948:968::o;14296:213:64:-;981:14958:102;14374:24:64;;;;14370:103;;981:14958:102;14296:213:64;:::o;14370:103::-;981:14958:102;;;;14421:41:64;;;;;;14452:2;14421:41;;;981:14958:102;;;;;14421:41:64;1809:204:78;981:14958:102;1809:204:78;981:14958:102;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::o;7558:604:93:-;;981:14958:102;;7686:17:93;7682:83;;981:14958:102;7789:27:93;981:14958:102;7789:27:93;981:14958:102;;7789:27:93;;;;;;:::i;:::-;7860:14;;;:::i;:::-;981:14958:102;;;;;;;;;;;;;;;;7888:22:93;;;7884:77;;7975:21;-1:-1:-1;7975:84:93;;;;7558:604;7971:139;;;;8127:28;;;;:::i;7971:139::-;7789:27;8082:17;;;981:14958:102;8075:24:93;:::o;7975:84::-;981:14958:102;;;8009:16:93;4622:13:103;981:14958:102;8009:16:93;:::i;:::-;981:14958:102;;;8001:24:93;:57;;;;;7975:84;;;;;;;8001:57;8029:29;8038:8;;;8029:18;8038:8;8029:23;8038:8;;:::i;:::-;8029:18;:::i;:23::-;981:14958:102;;;;8029:29:93;;8001:57;;;;7884:77;7933:17;;;7789:27;7933:17;;;981:14958:102;7926:24:93;:::o;7682:83::-;7726:28;;;;:::i;7558:604::-;;981:14958:102;;7686:17:93;7682:83;;981:14958:102;7789:27:93;981:14958:102;7789:27:93;981:14958:102;;7789:27:93;;;;;;:::i;:::-;7860:14;;;:::i;:::-;981:14958:102;;;;;;;;;;;;;;;;7888:22:93;;;7884:77;;7975:21;-1:-1:-1;7975:84:93;;;;7558:604;7971:139;;;;8127:28;;;;:::i;7975:84::-;981:14958:102;;;8009:16:93;4994:12:103;981:14958:102;8009:16:93;:::i;:::-;981:14958:102;;;8001:24:93;:57;;;;;7975:84;;;;;;;8001:57;8029:29;8038:8;;;8029:18;8038:8;8029:23;8038:8;;:::i;:::-;8029:18;:::i;:29::-;;8001:57;;;;7682:83;7726:28;;;;:::i;7558:604::-;;981:14958:102;;7686:17:93;7682:83;;981:14958:102;7789:27:93;981:14958:102;7789:27:93;981:14958:102;;7789:27:93;;;;;;:::i;:::-;7860:14;;;;;:::i;:::-;981:14958:102;;;;;;;;;;;;;;;;7888:22:93;;;7884:77;;7975:21;-1:-1:-1;7975:84:93;;;;7558:604;7971:139;;;;8127:28;;;;:::i;7971:139::-;8082:17;;7789:27;8082:17;981:14958:102;8075:24:93;:::o;7975:84::-;981:14958:102;;;8009:16:93;981:14958:102;;8009:16:93;:::i;:::-;981:14958:102;;;8001:24:93;:57;;;;;7975:84;;;;;;;8001:57;8029:29;8038:8;;;8029:18;8038:8;8029:23;8038:8;;:::i;:::-;8029:18;;:::i;:29::-;;8001:57;;;;7884:77;7933:17;;;;;7789:27;7933:17;981:14958:102;7926:24:93;:::o;7682:83::-;7726:28;;;;:::i;4148:103:19:-;966:10:24;-1:-1:-1;981:14958:102;;;;;;;;;675:39:103;;981:14958:102;;3901:31:19;981:14958:102;;4468:23:19;4464:108;;4148:103;:::o;:::-;966:10:24;-1:-1:-1;981:14958:102;;;;;;;;;966:38:103;;981:14958:102;;3901:31:19;981:14958:102;4148:103:19;966:10:24;-1:-1:-1;981:14958:102;;;;;;;;;821:37:103;;981:14958:102;;3901:31:19;981:14958:102;4148:103:19;-1:-1:-1;981:14958:102;;;-1:-1:-1;;;;;;;;;;;981:14958:102;;;;;;;;966:10:24;981:14958:102;;;;;;;;;3901:31:19;981:14958:102;7270:387:19;-1:-1:-1;;;;;981:14958:102;;1398:1:78;981:14958:102;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2887:71:19;981:14958:102;;;;1398:1:78;981:14958:102;;;;;;;;;;;-1:-1:-1;;;;;981:14958:102;;;;;;;;;;-1:-1:-1;;981:14958:102;7509:4:19;981:14958:102;;;966:10:24;;-1:-1:-1;;;;;981:14958:102;-1:-1:-1;7532:40:19;-1:-1:-1;;7532:40:19;7509:4;7586:11;:::o;7432:219::-;7628:12;;1398:1:78;7628:12:19;:::o;7270:387::-;-1:-1:-1;;;;;981:14958:102;;-1:-1:-1;981:14958:102;;;;;;;;;675:39:103;;-1:-1:-1;;;;;;;;;;;2887:71:19;981:14958:102;;3901:31:19;981:14958:102;;;;-1:-1:-1;981:14958:102;;;;;;;;;;;-1:-1:-1;;;;;981:14958:102;;;;;;;;;;-1:-1:-1;;981:14958:102;7509:4:19;981:14958:102;;;966:10:24;;-1:-1:-1;;;;;981:14958:102;;7532:40:19;-1:-1:-1;;7532:40:19;7509:4;7586:11;:::o;7432:219::-;7628:12;;;-1:-1:-1;7628:12:19;:::o;7270:387::-;-1:-1:-1;;;;;981:14958:102;;-1:-1:-1;981:14958:102;;;;;;;;;821:37:103;;-1:-1:-1;;;;;;;;;;;2887:71:19;981:14958:102;;3901:31:19;981:14958:102;7270:387:19;-1:-1:-1;;;;;981:14958:102;;-1:-1:-1;981:14958:102;;;;;;;;;966:38:103;;-1:-1:-1;;;;;;;;;;;2887:71:19;981:14958:102;;3901:31:19;981:14958:102;7270:387:19;-1:-1:-1;;;;;981:14958:102;;-1:-1:-1;981:14958:102;;;;;;;;;1109:35:103;;-1:-1:-1;;;;;;;;;;;2887:71:19;981:14958:102;;3901:31:19;981:14958:102;7270:387:19;-1:-1:-1;981:14958:102;;;-1:-1:-1;;;;;;;;;;;981:14958:102;;;;;;;;-1:-1:-1;;;;;981:14958:102;;;;;;;;;;;;3901:31:19;981:14958:102;7892:388:19;-1:-1:-1;981:14958:102;;;-1:-1:-1;;;;;;;;;;;981:14958:102;;;;;;;;-1:-1:-1;;;;;981:14958:102;;;;;;;;;;;;;;;;-1:-1:-1;981:14958:102;;;;;;;;;;;-1:-1:-1;;;;;981:14958:102;;;;;;;;;;-1:-1:-1;;981:14958:102;;;966:10:24;;-1:-1:-1;;;;;981:14958:102;;8155:40:19;-1:-1:-1;;8155:40:19;981:14958:102;8209:11:19;:::o;1670:188:50:-;981:14958:102;;-1:-1:-1;;;1797:53:50;;;;-1:-1:-1;;;;;981:14958:102;;;1797:53:50;;;981:14958:102;;;;;;;;;;;;;;;;;1797:53:50;;;981:14958:102;;;;;;;-1:-1:-1;;;;;981:14958:102;;;;;1797:53:50;981:14958:102;;;1797:53:50;:::i;981:14958:102:-;7178:12:93;981:14958:102;;;;;;7178:12:93;-1:-1:-1;981:14958:102;-1:-1:-1;;;;;;;;;;;981:14958:102;;-1:-1:-1;981:14958:102;:::o;:::-;7178:12:93;981:14958:102;;;;;;7178:12:93;-1:-1:-1;981:14958:102;-1:-1:-1;;;;;;;;;;;981:14958:102;;-1:-1:-1;981:14958:102;:::o;:::-;;;;;;;;-1:-1:-1;981:14958:102;;-1:-1:-1;981:14958:102;;;-1:-1:-1;981:14958:102;:::o;:::-;6360:12:93;981:14958:102;-1:-1:-1;;;981:14958:102;;;;;;;;;6360:12:93;981:14958:102;;;;;;6360:12:93;-1:-1:-1;981:14958:102;-1:-1:-1;;;;;;;;;;;981:14958:102;;:::o;:::-;6360:12:93;981:14958:102;-1:-1:-1;;;981:14958:102;;;;;;;;;6360:12:93;981:14958:102;;;;;;6360:12:93;-1:-1:-1;981:14958:102;-1:-1:-1;;;;;;;;;;;981:14958:102;;:::o;:::-;;;;;-1:-1:-1;;;981:14958:102;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6246:584:93;;;;6360:12;981:14958:102;;;6360:24:93;;6356:75;;6246:584;6474:30;;;:::i;:::-;981:14958:102;;;;;;6578:12:93;;;:::i;:::-;6604:24;;;;6246:584;-1:-1:-1;6600:188:93;;;-1:-1:-1;;;981:14958:102;;;;;;;;;-1:-1:-1;981:14958:102;;;-1:-1:-1;981:14958:102;;;;;;6798:25:93;981:14958:102;6246:584:93:o;6600:188::-;8310:38:66;;-1:-1:-1;;;;;981:14958:102;;-1:-1:-1;8310:38:66;:::i;:::-;6753:24:93;;;;;:::i;:::-;6798:25;6246:584;:::o;6604:24::-;981:14958:102;;;;;;6614:14:93;;-1:-1:-1;6604:24:93;;;6356:75;-1:-1:-1;;;981:14958:102;;;;;;;;;;;;;;;;-1:-1:-1;981:14958:102;;;;-1:-1:-1;;;;;;;;;;;981:14958:102;;6356:75:93;;;6246:584;;;;6360:12;981:14958:102;;;6360:24:93;;6356:75;;6246:584;6474:30;;;:::i;:::-;981:14958:102;;;;;;6578:12:93;;;:::i;:::-;6604:24;;;;6246:584;-1:-1:-1;6600:188:93;;;-1:-1:-1;;;981:14958:102;;;;;;;;;-1:-1:-1;981:14958:102;;;-1:-1:-1;981:14958:102;;;;;;6798:25:93;981:14958:102;6246:584:93:o;6600:188::-;8310:38:66;;-1:-1:-1;;;;;981:14958:102;;-1:-1:-1;8310:38:66;:::i;:::-;6753:24:93;;;;;:::i;6604:::-;981:14958:102;;;;;;6614:14:93;;-1:-1:-1;6604:24:93;;;6356:75;-1:-1:-1;;;981:14958:102;;;;;;;;;;;;;;;;-1:-1:-1;981:14958:102;;;;-1:-1:-1;;;;;;;;;;;981:14958:102;;6356:75:93;;;6246:584;;;;;6360:12;;;981:14958:102;;;6360:24:93;;6356:75;;6246:584;6474:30;;;;;:::i;:::-;981:14958:102;;;;;;6578:12:93;;;;:::i;:::-;6604:24;;;;6246:584;-1:-1:-1;6600:188:93;;;-1:-1:-1;;;;;981:14958:102;;;;;;;6644:21:93;;;:29;:21;;:::i;6600:188::-;6753:24;;981:14958:102;;8310:38:66;;-1:-1:-1;;;;;981:14958:102;;;;;8310:38:66;:::i;:::-;6753:24:93;;;:::i;6604:::-;981:14958:102;;;;;;6614:14:93;;-1:-1:-1;6604:24:93;;;6356:75;-1:-1:-1;;;981:14958:102;;;;;;6360:12:93;981:14958:102;;;;;;;:::i;:::-;;;;;;;;;;;;;;6356:75:93;;;981:14958:102;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;:::o;2658:162:20:-;-1:-1:-1;;;;;;;;;;;981:14958:102;-1:-1:-1;;;;;981:14958:102;966:10:24;2717:23:20;2713:101;;2658:162::o;2713:101::-;981:14958:102;;-1:-1:-1;;;2763:40:20;;966:10:24;2763:40:20;;;981:14958:102;;;2763:40:20;981:14958:102;;;;;;;:::o;4996:4226:63:-;;981:14958:102;;;;-1:-1:-1;;981:14958:102;4996:4226:63;5584:131;;;;;;;;;;;;5796:10;;5792:368;;6270:20;;;;6266:143;;6695:300;;;;940:4:54;-1:-1:-1;940:4:54;7214:31:63;;7259:375;;;8094:1;981:14958:102;;8075:1:63;981:14958:102;8074:21:63;981:14958:102;;;940:4:54;;981:14958:102;;;;940:4:54;;981:14958:102;;;;940:4:54;;981:14958:102;;;;940:4:54;;981:14958:102;;;;940:4:54;;981:14958:102;;;;940:4:54;;981:14958:102;7259:375:63;;;;-1:-1:-1;7259:375:63;;;6695:300;;;;;;981:14958:102;6695:300:63;;7259:375;7700:21;981:14958:102;4996:4226:63;:::o;6266:143::-;6330:16;;3066:5;981:14958:102;940:4:54;3060:42:63;6322:71;:::i;5792:368::-;6126:19;;;;;;;:::i;1271:160:50:-;981:14958:102;;-1:-1:-1;;;1380:43:50;;;;-1:-1:-1;;;;;981:14958:102;;;1380:43:50;;;981:14958:102;;;;;;;;;1380:43:50;;;981:14958:102;;;;-1:-1:-1;;;;;981:14958:102;;;;;;;;1380:43:50;981:14958:102;;;1380:43:50;:::i;12922:460:102:-;;13024:14;;:::i;:::-;13015:23;;;13011:75;;-1:-1:-1;981:14958:102;;;13100:20;981:14958;;;;;;;;13128:10;981:14958;;;;;;;;;;13096:93;;13208:32;13128:10;13208:32;;:::i;:::-;13255:11;;;13251:68;;-1:-1:-1;981:14958:102;;;13100:20;981:14958;;;;;;;;13128:10;981:14958;;;;;;;;;-1:-1:-1;;981:14958:102;13371:4;981:14958;;;12922:460::o;13251:68::-;981:14958;;-1:-1:-1;;;13289:19:102;;;;;13096:93;981:14958;;-1:-1:-1;;;13162:16:102;;;;;13011:75;981:14958;;-1:-1:-1;;;13061:14:102;;;;;10580:184:93;5173:12:103;981:14958:102;10446:8:66;;;:63;-1:-1:-1;10446:63:66;-1:-1:-1;;;;;981:14958:102;;10726:7:93;981:14958:102;;10736:12:93;981:14958:102;;;;;;10736:12:93;-1:-1:-1;981:14958:102;-1:-1:-1;;;;;;;;;;;981:14958:102;;10580:184:93;:::o;10726:31::-;;-1:-1:-1;10580:184:93;:::o;10446:63:66:-;981:14958:102;;;;;;;;5173:12:103;-1:-1:-1;14439:109:66;;;981:14958:102;;;10446:63:66;;10580:184:93;4803:13:103;981:14958:102;10446:8:66;;;:63;-1:-1:-1;10446:63:66;-1:-1:-1;;;;;981:14958:102;;10726:7:93;981:14958:102;;10736:12:93;981:14958:102;;;;;;10736:12:93;-1:-1:-1;981:14958:102;-1:-1:-1;;;;;;;;;;;981:14958:102;;10580:184:93;:::o;10446:63:66:-;981:14958:102;;;;;;;;4803:13:103;-1:-1:-1;14439:109:66;;;981:14958:102;;;10446:63:66;;10580:184:93;981:14958:102;;10446:8:66;;;:63;-1:-1:-1;10446:63:66;-1:-1:-1;;;;;981:14958:102;;10726:7:93;981:14958:102;;10736:12:93;:17;:12;;:17;:::i;:::-;981:14958:102;;;;;;10580:184:93;:::o;10446:63:66:-;981:14958:102;;;;;;;;;;14439:109:66;-1:-1:-1;14439:109:66;;-1:-1:-1;14439:109:66;;;981:14958:102;;;10446:63:66;;1662:280:94;;;1884:1;981:14958:102;;;;;;;1884:1:94;981:14958:102;;;;;;;9478:25:63;;;:::i;6999:207:93:-;4622:13:103;981:14958:102;9737:15:66;-1:-1:-1;9762:18:66;9795:7;9801:1;9795:7;;9791:234;;6999:207:93;10049:53:66;;;;:::i;:::-;10120:8;;;:63;-1:-1:-1;10120:63:66;-1:-1:-1;;;;;981:14958:102;;7168:7:93;981:14958:102;;7178:17:93;981:14958:102;7178:17:93;;:::i;10120:63:66:-;10135:41;10168:7;10135:48;10168:7;;:::i;:::-;4622:13:103;14439:109:66;;-1:-1:-1;;;;;;;;;;;14439:109:66;14289:265;;10135:41;981:14958:102;;;;;10135:48:66;10120:63;;9791:234;9838:14;;;;;:::i;:::-;981:14958:102;;;;;;;10049:53:66;14439:109;4622:13:103;-1:-1:-1;14439:109:66;981:14958:102;14439:109:66;;-1:-1:-1;;;;;;;;;;;14439:109:66;981:14958:102;;;;;9870:48:66;9866:149;981:14958:102;;;9938:10:66;9866:149;9791:234;;9866:149;9993:7;;;;;;:::i;:::-;9866:149;9791:234;;6999:207:93;4994:12:103;981:14958:102;9737:15:66;-1:-1:-1;9762:18:66;9795:7;9801:1;9795:7;;9791:234;;6999:207:93;10049:53:66;;;;:::i;:::-;10120:8;;;:63;-1:-1:-1;10120:63:66;-1:-1:-1;;;;;981:14958:102;;7168:7:93;981:14958:102;;7178:17:93;981:14958:102;7178:17:93;;:::i;10120:63:66:-;10135:41;10168:7;10135:48;10168:7;;:::i;:::-;4994:12:103;14439:109:66;;-1:-1:-1;;;;;;;;;;;14439:109:66;14289:265;;10135:48;10120:63;;9791:234;9838:14;;;;;:::i;:::-;981:14958:102;;;;;;;10049:53:66;14439:109;4994:12:103;-1:-1:-1;14439:109:66;981:14958:102;14439:109:66;;-1:-1:-1;;;;;;;;;;;14439:109:66;981:14958:102;;;;;9870:48:66;9866:149;981:14958:102;;;9938:10:66;9866:149;9791:234;;9866:149;9993:7;;;;;;:::i;:::-;9866:149;9791:234;;6999:207:93;;981:14958:102;;9737:15:66;-1:-1:-1;9762:18:66;9795:7;9801:1;9795:7;;9791:234;;6999:207:93;10049:53:66;;;;;:::i;:::-;10120:8;;;:63;-1:-1:-1;10120:63:66;;-1:-1:-1;;;;;981:14958:102;;7168:7:93;981:14958:102;;;7178:12:93;;:17;:12;;:17;:::i;10120:63:66:-;10135:41;10168:7;10135:48;10168:7;;:::i;:::-;10135:41;14439:109;;;;;;14289:265;;10135:48;10120:63;;;9791:234;9838:14;;;;;:::i;:::-;981:14958:102;;;;;;;10049:53:66;14439:109;;-1:-1:-1;14439:109:66;981:14958:102;14439:109:66;;;-1:-1:-1;14439:109:66;;981:14958:102;;;;;9870:48:66;9866:149;981:14958:102;;;9938:10:66;9866:149;9791:234;;9866:149;9993:7;;;;;;:::i;:::-;9866:149;9791:234;;981:14958:102;;;;;;;:::i;:::-;-1:-1:-1;981:14958:102;;;;;;;:::o;11486:272:93:-;981:14958:102;;:::i;:::-;;;;:::i;:::-;;4622:13:103;981:14958:102;;;;;;4622:13:103;-1:-1:-1;981:14958:102;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;981:14958:102;;;;;;;;;;;;;;;;;11718:12:93;981:14958:102;;;;;;11718:12:93;-1:-1:-1;981:14958:102;-1:-1:-1;;;;;;;;;;;981:14958:102;;;;;;;;:::i;:::-;;;;11672:79:93;;981:14958:102;11486:272:93;:::o;:::-;981:14958:102;;:::i;:::-;;;;:::i;:::-;;4994:12:103;981:14958:102;;;;;;4994:12:103;-1:-1:-1;981:14958:102;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;981:14958:102;;;;;;;;;;;;;;;;;11718:12:93;981:14958:102;;;;;;11718:12:93;-1:-1:-1;981:14958:102;-1:-1:-1;;;;;;;;;;;981:14958:102;;;;;;;;:::i;11486:272:93:-;;981:14958:102;11718:12:93;11452:22:66;11718:31:93;11486:272;981:14958:102;;:::i;:::-;;;;:::i;:::-;;11452:22:66;;:::i;:::-;981:14958:102;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;11718:12:93;:31;:::i;:::-;981:14958:102;;;;;;;;;:::i;:::-;;;;;;;11672:79:93;;981:14958:102;11486:272:93;:::o;7738:720:50:-;;-1:-1:-1;7875:421:50;7738:720;7875:421;;;;;;;;;;;;-1:-1:-1;7875:421:50;;8310:15;;-1:-1:-1;;;;;;981:14958:102;;8328:26:50;:31;8310:68;8306:146;;7738:720;:::o;8306:146::-;981:14958:102;;-1:-1:-1;;;8401:40:50;;-1:-1:-1;;;;;981:14958:102;;;8401:40:50;;;981:14958:102;;;8401:40:50;8310:68;8377:1;8362:16;;8310:68;;1258:280:94;;;981:14958:102;;;;;;;;;;;;;;;;9478:25:63;;;;;:::i;:::-;9552;;;;;;:29;;981:14958:102;;;;;;;1258:280:94;:::o;10695:389:66:-;5173:12:103;981:14958:102;10871:8:66;;;10895:20;10833:17;10895:20;10833:17;10895:20;10833:17;10895:20;:::o;10867:211::-;981:14958:102;;;;;;;;5173:12:103;10833:17:66;14439:109;;;981:14958:102;11014:1:66;;981:14958:102;;;;;;;11030:37:66:o;10695:389::-;4803:13:103;981:14958:102;10871:8:66;;;10895:20;10833:17;10895:20;10833:17;10895:20;10833:17;10895:20;:::o;10867:211::-;981:14958:102;;;;;;;;4803:13:103;10833:17:66;14439:109;;;981:14958:102;11014:1:66;;981:14958:102;;;;;;;11030:37:66:o;10695:389::-;981:14958:102;;10871:8:66;;;10895:20;;10833:17;10895:20;10833:17;10895:20;10833:17;10895:20;:::o;10867:211::-;981:14958:102;;;;;;;;;;10833:17:66;14439:109;;10833:17;14439:109;;;981:14958:102;11014:1:66;981:14958:102;;;;;;;11030:37:66;:::o;7084:141:22:-;981:14958:102;-1:-1:-1;;;;;;;;;;;981:14958:102;;;;7150:18:22;7146:73;;7084:141::o;7146:73::-;981:14958:102;;-1:-1:-1;;;7191:17:22;;;;;1776:194:54;1829:135;;;;;;;;981:14958:102;5173:12:103;981:14958:102;;-1:-1:-1;;;981:14958:102;;;;;;;;;5173:12:103;981:14958:102;;;;;;5173:12:103;-1:-1:-1;981:14958:102;;;;;;;;;;-1:-1:-1;;981:14958:102;;;;;;;-1:-1:-1;;;;;;;;;;;981:14958:102;;;;:::o;:::-;4803:13:103;981:14958:102;;-1:-1:-1;;;981:14958:102;;;;;;;;;4803:13:103;981:14958:102;;;;;;4803:13:103;-1:-1:-1;981:14958:102;;;;;;;;;;-1:-1:-1;;981:14958:102;;;;;;;-1:-1:-1;;;;;;;;;;;981:14958:102;;;;:::o;:::-;;;-1:-1:-1;;;981:14958:102;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;981:14958:102;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;11657:922:66;5173:12:103;981:14958:102;11657:922:66;;;11864:7;;;;11936;11916:28;11936:7;;:::i;11916:28::-;981:14958:102;;;;;;;;;;;;12103:13:66;;;12099:89;;12251:14;;;;;12285:19;;;981:14958:102;;;;;;;;;;;;;;;;;12285:19:66;981:14958:102;;12423:25:66;;:::o;12247:163::-;981:14958:102;;12343:52:66;981:14958:102;12353:41:66;981:14958:102;;:::i;:::-;;;;;;;;12353:41:66;-1:-1:-1;;;;;981:14958:102;;12353:41:66;;;981:14958:102;12343:52:66;:::i;:::-;12247:163;;12099:89;981:14958:102;;-1:-1:-1;;;12143:30:66;;;;;11860:713;981:14958:102;12479:52:66;981:14958:102;12489:41:66;981:14958:102;;:::i;12489:41:66:-;-1:-1:-1;;;;;981:14958:102;;12489:41:66;;;981:14958:102;12343:52:66;:::i;12479:::-;11870:1;12545:17;;:::o;11657:922::-;4803:13:103;981:14958:102;11657:922:66;;;11864:7;;;;11936;11916:28;11936:7;;:::i;11916:28::-;981:14958:102;;;;;;;;;;;;12103:13:66;;;12099:89;;12251:14;;;;;12285:19;;;981:14958:102;;;;;;;;;;;;;;;;;12247:163:66;981:14958:102;;12343:52:66;981:14958:102;12353:41:66;981:14958:102;;:::i;12353:41:66:-;-1:-1:-1;;;;;981:14958:102;;12353:41:66;;;981:14958:102;12343:52:66;:::i;11860:713::-;981:14958:102;12479:52:66;981:14958:102;12489:41:66;981:14958:102;;:::i;12489:41:66:-;-1:-1:-1;;;;;981:14958:102;;12489:41:66;;;981:14958:102;12343:52:66;:::i;11657:922::-;981:14958:102;;11657:922:66;;;11864:7;;;;11936;11916:28;11936:7;;:::i;:::-;11916:28;14439:109;;;;;;14289:265;;11916:28;981:14958:102;;;;;;;;;;;;12103:13:66;;;12099:89;;12251:14;;;;;12285:19;;;;981:14958:102;;;;;;;;;;;;;;;;;12247:163:66;981:14958:102;;;12343:52:66;981:14958:102;12353:41:66;981:14958:102;;:::i;:::-;;;;;;;;12353:41:66;-1:-1:-1;;;;;981:14958:102;;12353:41:66;;;981:14958:102;12343:52:66;:::i;11860:713::-;981:14958:102;;12479:52:66;981:14958:102;12489:41:66;981:14958:102;;:::i;12489:41:66:-;-1:-1:-1;;;;;981:14958:102;;12489:41:66;;;981:14958:102;12343:52:66;:::i;18080:5181:63:-;18246:1;18241:6;;;18237:53;;18246:1;19217:14;-1:-1:-1;;;19278:16:63;;;19274:92;;18080:5181;22827:18;22717;22607;22498;22387;22278;23216:28;19383:15;19898:6;19383:15;-1:-1:-1;;;23237:6:63;19383:15;;;19379:90;;18080:5181;19493:7;19486:15;;;19482:90;;18080:5181;19596:7;19589:15;;;19585:89;;18080:5181;19698:6;19691:14;;;19687:87;;18080:5181;19798:6;19791:14;;;19787:87;;18080:5181;19891:14;;19887:61;;18080:5181;20374:1;981:14958:102;18246:1:63;981:14958:102;22284:6:63;;;;:::i;:::-;981:14958:102;;;;;22278:18:63;22393:6;;;;:::i;22387:18::-;22504:6;;;;:::i;22498:18::-;22613:6;;;;:::i;22607:18::-;22723:6;;;;:::i;22717:18::-;22833:6;;;;:::i;22827:18::-;23237:6;;;:::i;:::-;23232:11;;;981:14958:102;23216:28:63;940:4:54;;18080:5181:63;:::o;19887:61::-;18246:1;981:14958:102;19887:61:63;;19787:87;981:14958:102;;;;;19787:87:63;;;19687;981:14958:102;;;;;19687:87:63;;;19585:89;981:14958:102;;;;;19585:89:63;;;19482:90;981:14958:102;;;;;19482:90:63;;;19379;981:14958:102;;;;;19379:90:63;;;19274:92;-1:-1:-1;;;;981:14958:102;-1:-1:-1;981:14958:102;;;;19274:92:63;;12929:433:66;;13112:10;;;;;;13344:11;;12929:433;:::o;13105:230::-;3721:5:63;;;;;981:14958:102;;3731:5:63;;;981:14958:102;;;;;;;;;4622:13:103;-1:-1:-1;14439:109:66;981:14958:102;14439:109:66;;-1:-1:-1;;;;;;;;;;;14439:109:66;981:14958:102;;;;;-1:-1:-1;13189:136:66;981:14958:102;;;13248:10:66;;13189:136;;13105:230;;;13189:136;981:14958:102;;;;;;;;;;;13189:136:66;;;12929:433;;13112:10;;;;;;13344:11;;12929:433;:::o;13105:230::-;3721:5:63;;;;;981:14958:102;;3731:5:63;;;981:14958:102;;;;;;;;;4994:12:103;-1:-1:-1;14439:109:66;981:14958:102;14439:109:66;;-1:-1:-1;;;;;;;;;;;14439:109:66;981:14958:102;;;;;-1:-1:-1;13189:136:66;981:14958:102;;;13248:10:66;;13189:136;;13105:230;;;13189:136;981:14958:102;;;;;;;;;;;13189:136:66;;;12929:433;;;13112:10;;;;;;13344:11;;;12929:433;:::o;13105:230::-;3721:5:63;;;;;;981:14958:102;;3731:5:63;;;981:14958:102;;;;;;;;;14439:109:66;-1:-1:-1;14439:109:66;981:14958:102;14439:109:66;;;-1:-1:-1;14439:109:66;;981:14958:102;;;;;-1:-1:-1;13189:136:66;981:14958:102;;;13248:10:66;;13189:136;;13105:230;;;;13189:136;981:14958:102;;;;;;;;;;;13189:136:66;;","linkReferences":{},"immutableReferences":{"56865":[{"start":1905,"length":32},{"start":2466,"length":32}],"67505":[{"start":4511,"length":32},{"start":5842,"length":32}],"67508":[{"start":6203,"length":32},{"start":7460,"length":32}]}},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","DELEGATOR_FACTORY()":"6da3e06d","DEPOSITOR_WHITELIST_ROLE()":"1b66c9e1","DEPOSIT_LIMIT_SET_ROLE()":"a21a1df9","DEPOSIT_WHITELIST_SET_ROLE()":"db388715","FACTORY()":"2dd31000","IS_DEPOSIT_LIMIT_SET_ROLE()":"1415519b","SLASHER_FACTORY()":"87df0788","activeBalanceOf(address)":"59f769a9","activeBalanceOfAt(address,uint48,bytes)":"efb559d6","activeShares()":"bfefcd7b","activeSharesAt(uint48,bytes)":"50f22068","activeSharesOf(address)":"9d66201b","activeSharesOfAt(address,uint48,bytes)":"2d73c69c","activeStake()":"bd49c35f","activeStakeAt(uint48,bytes)":"810da75d","burner()":"27810b6e","claim(address,uint256)":"aad3ec96","claimBatch(address,uint256[])":"7c04c80a","collateral()":"d8dfeb45","currentEpoch()":"76671808","currentEpochStart()":"61a8c8c4","delegator()":"ce9b7930","deposit(address,uint256)":"47e7ef24","depositLimit()":"ecf70858","depositWhitelist()":"48d3b775","epochAt(uint48)":"7953b33b","epochDuration()":"4ff0876a","epochDurationInit()":"46361671","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","initialize(uint64,address,bytes)":"57ec83cc","isDelegatorInitialized()":"50861adc","isDepositLimit()":"a1b12202","isDepositorWhitelisted(address)":"794b15b7","isInitialized()":"392e53cd","isSlasherInitialized()":"6ec1e3f8","isWithdrawalsClaimed(uint256,address)":"a5d03223","migrate(uint64,bytes)":"2abe3048","nextEpochStart()":"73790ab3","onSlash(uint256,uint48)":"7278e31c","owner()":"8da5cb5b","previousEpochStart()":"281f5752","redeem(address,uint256)":"1e9a6950","renounceOwnership()":"715018a6","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","setDelegator(address)":"83cd9cc3","setDepositLimit(uint256)":"bdc8144b","setDepositWhitelist(bool)":"4105a7dd","setDepositorWhitelistStatus(address,bool)":"a2861466","setIsDepositLimit(bool)":"5346e34f","setSlasher(address)":"aabc2496","slashableBalanceOf(address)":"c31e8dd7","slasher()":"b1344271","staticDelegateCall(address,bytes)":"9f86fd85","supportsInterface(bytes4)":"01ffc9a7","totalStake()":"8b0e9f3f","transferOwnership(address)":"f2fde38b","version()":"54fd4d50","withdraw(address,uint256)":"f3fef3a3","withdrawalShares(uint256)":"afba70ad","withdrawalSharesOf(uint256,address)":"a3b54172","withdrawals(uint256)":"5cc07076","withdrawalsOf(uint256,address)":"f5e7ee0f"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatorFactory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"slasherFactory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"vaultFactory\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadyClaimed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadySet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CheckpointUnorderedInsertion\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DelegatorAlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DepositLimitReached\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientClaim\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientDeposit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientRedemption\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientWithdrawal\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCaptureEpoch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidClaimer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCollateral\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDelegator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEpoch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEpochDuration\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidLengthEpochs\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOnBehalfOf\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRecipient\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSlasher\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTimestamp\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingRoles\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoPreviousEpoch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotDelegator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotFactory\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotSlasher\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotWhitelistedDepositor\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SlasherAlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TooMuchRedeem\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TooMuchWithdraw\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"claimer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Claim\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"claimer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"epochs\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"ClaimBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"depositor\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slashedAmount\",\"type\":\"uint256\"}],\"name\":\"OnSlash\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"SetDelegator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"SetDepositLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"SetDepositWhitelist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"SetDepositorWhitelistStatus\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"SetIsDepositLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"slasher\",\"type\":\"address\"}],\"name\":\"SetSlasher\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"claimer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"burnedShares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"mintedShares\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DELEGATOR_FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEPOSITOR_WHITELIST_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEPOSIT_LIMIT_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEPOSIT_WHITELIST_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"IS_DEPOSIT_LIMIT_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SLASHER_FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"activeBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hints\",\"type\":\"bytes\"}],\"name\":\"activeBalanceOfAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"activeShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"activeSharesAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"activeSharesOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"activeSharesOfAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"activeStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"activeStakeAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"burner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"}],\"name\":\"claim\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"epochs\",\"type\":\"uint256[]\"}],\"name\":\"claimBatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"collateral\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentEpochStart\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"delegator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"depositedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mintedShares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"depositLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"depositWhitelist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"epochAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"epochDuration\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"epochDurationInit\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"initialVersion\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner_\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isDelegatorInitialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isDepositLimit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isDepositorWhitelisted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isInitialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isSlasherInitialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isWithdrawalsClaimed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newVersion\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"migrate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nextEpochStart\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"}],\"name\":\"onSlash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"slashedAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"previousEpochStart\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"claimer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"withdrawnAssets\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mintedShares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator_\",\"type\":\"address\"}],\"name\":\"setDelegator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"setDepositLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"setDepositWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"setDepositorWhitelistStatus\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"setIsDepositLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"slasher_\",\"type\":\"address\"}],\"name\":\"setSlasher\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"slashableBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slasher\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"staticDelegateCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"claimer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"burnedShares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mintedShares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"}],\"name\":\"withdrawalShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"withdrawalSharesOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"}],\"name\":\"withdrawals\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"withdrawalsOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"CheckpointUnorderedInsertion()\":[{\"details\":\"A value was attempted to be inserted on a past checkpoint.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}]},\"events\":{\"Claim(address,address,uint256,uint256)\":{\"params\":{\"amount\":\"amount of the collateral claimed\",\"claimer\":\"account that claimed\",\"epoch\":\"epoch the collateral was claimed for\",\"recipient\":\"account that received the collateral\"}},\"ClaimBatch(address,address,uint256[],uint256)\":{\"params\":{\"amount\":\"amount of the collateral claimed\",\"claimer\":\"account that claimed\",\"epochs\":\"epochs the collateral was claimed for\",\"recipient\":\"account that received the collateral\"}},\"Deposit(address,address,uint256,uint256)\":{\"params\":{\"amount\":\"amount of the collateral deposited\",\"depositor\":\"account that made the deposit\",\"onBehalfOf\":\"account the deposit was made on behalf of\",\"shares\":\"amount of the active shares minted\"}},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"OnSlash(uint256,uint48,uint256)\":{\"params\":{\"amount\":\"amount of the collateral to slash\",\"captureTimestamp\":\"time point when the stake was captured\",\"slashedAmount\":\"real amount of the collateral slashed\"}},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"SetDelegator(address)\":{\"details\":\"Can be set only once.\",\"params\":{\"delegator\":\"vault's delegator to delegate the stake to networks and operators\"}},\"SetDepositLimit(uint256)\":{\"params\":{\"limit\":\"deposit limit (maximum amount of the collateral that can be in the vault simultaneously)\"}},\"SetDepositWhitelist(bool)\":{\"params\":{\"status\":\"if enabled deposit whitelist\"}},\"SetDepositorWhitelistStatus(address,bool)\":{\"params\":{\"account\":\"account for which the whitelist status is set\",\"status\":\"if whitelisted the account\"}},\"SetIsDepositLimit(bool)\":{\"params\":{\"status\":\"if enabled deposit limit\"}},\"SetSlasher(address)\":{\"details\":\"Can be set only once.\",\"params\":{\"slasher\":\"vault's slasher to provide a slashing mechanism to networks\"}},\"Withdraw(address,address,uint256,uint256,uint256)\":{\"params\":{\"amount\":\"amount of the collateral withdrawn\",\"burnedShares\":\"amount of the active shares burned\",\"claimer\":\"account that needs to claim the withdrawal\",\"mintedShares\":\"amount of the epoch withdrawal shares minted\",\"withdrawer\":\"account that made the withdrawal\"}}},\"kind\":\"dev\",\"methods\":{\"activeBalanceOf(address)\":{\"params\":{\"account\":\"account to get the active balance for\"},\"returns\":{\"_0\":\"active balance for the account\"}},\"activeBalanceOfAt(address,uint48,bytes)\":{\"params\":{\"account\":\"account to get the active balance for\",\"hints\":\"hints for checkpoints' indexes\",\"timestamp\":\"time point to get the active balance for the account at\"},\"returns\":{\"_0\":\"active balance for the account at the timestamp\"}},\"activeShares()\":{\"returns\":{\"_0\":\"total number of active shares\"}},\"activeSharesAt(uint48,bytes)\":{\"params\":{\"hint\":\"hint for the checkpoint index\",\"timestamp\":\"time point to get the total number of active shares at\"},\"returns\":{\"_0\":\"total number of active shares at the timestamp\"}},\"activeSharesOf(address)\":{\"params\":{\"account\":\"account to get the number of active shares for\"},\"returns\":{\"_0\":\"number of active shares for the account\"}},\"activeSharesOfAt(address,uint48,bytes)\":{\"params\":{\"account\":\"account to get the number of active shares for\",\"hint\":\"hint for the checkpoint index\",\"timestamp\":\"time point to get the number of active shares for the account at\"},\"returns\":{\"_0\":\"number of active shares for the account at the timestamp\"}},\"activeStake()\":{\"returns\":{\"_0\":\"total amount of active stake\"}},\"activeStakeAt(uint48,bytes)\":{\"params\":{\"hint\":\"hint for the checkpoint index\",\"timestamp\":\"time point to get the total active stake at\"},\"returns\":{\"_0\":\"total amount of active stake at the timestamp\"}},\"claim(address,uint256)\":{\"params\":{\"epoch\":\"epoch to claim the collateral for\",\"recipient\":\"account that receives the collateral\"},\"returns\":{\"amount\":\"amount of the collateral claimed\"}},\"claimBatch(address,uint256[])\":{\"params\":{\"epochs\":\"epochs to claim the collateral for\",\"recipient\":\"account that receives the collateral\"},\"returns\":{\"amount\":\"amount of the collateral claimed\"}},\"currentEpoch()\":{\"returns\":{\"_0\":\"current epoch\"}},\"currentEpochStart()\":{\"returns\":{\"_0\":\"start of the current epoch\"}},\"deposit(address,uint256)\":{\"params\":{\"amount\":\"amount of the collateral to deposit\",\"onBehalfOf\":\"account the deposit is made on behalf of\"},\"returns\":{\"depositedAmount\":\"real amount of the collateral deposited\",\"mintedShares\":\"amount of the active shares minted\"}},\"epochAt(uint48)\":{\"details\":\"Reverts if the timestamp is less than the start of the epoch 0.\",\"params\":{\"timestamp\":\"time point to get the epoch at\"},\"returns\":{\"_0\":\"epoch at the timestamp\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize(uint64,address,bytes)\":{\"params\":{\"data\":\"some data to use\",\"initialVersion\":\"initial version of the entity\",\"owner\":\"initial owner of the entity\"}},\"isInitialized()\":{\"returns\":{\"_0\":\"if the vault is fully initialized\"}},\"migrate(uint64,bytes)\":{\"params\":{\"data\":\"some data to use\",\"newVersion\":\"new version of the entity\"}},\"nextEpochStart()\":{\"returns\":{\"_0\":\"start of the next epoch\"}},\"onSlash(uint256,uint48)\":{\"details\":\"Only the slasher can call this function.\",\"params\":{\"amount\":\"amount to slash\",\"captureTimestamp\":\"time point when the stake was captured\"},\"returns\":{\"slashedAmount\":\"real amount of the collateral slashed\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"previousEpochStart()\":{\"details\":\"Reverts if the current epoch is 0.\",\"returns\":{\"_0\":\"start of the previous epoch\"}},\"redeem(address,uint256)\":{\"params\":{\"claimer\":\"account that needs to claim the withdrawal\",\"shares\":\"amount of the active shares to redeem\"},\"returns\":{\"mintedShares\":\"amount of the epoch withdrawal shares minted\",\"withdrawnAssets\":\"amount of the collateral withdrawn\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"setDepositLimit(uint256)\":{\"details\":\"Only a DEPOSIT_LIMIT_SET_ROLE holder can call this function.\",\"params\":{\"limit\":\"deposit limit (maximum amount of the collateral that can be in the vault simultaneously)\"}},\"setDepositWhitelist(bool)\":{\"details\":\"Only a DEPOSIT_WHITELIST_SET_ROLE holder can call this function.\",\"params\":{\"status\":\"if enabling deposit whitelist\"}},\"setDepositorWhitelistStatus(address,bool)\":{\"details\":\"Only a DEPOSITOR_WHITELIST_ROLE holder can call this function.\",\"params\":{\"account\":\"account for which the whitelist status is set\",\"status\":\"if whitelisting the account\"}},\"setIsDepositLimit(bool)\":{\"details\":\"Only a IS_DEPOSIT_LIMIT_SET_ROLE holder can call this function.\",\"params\":{\"status\":\"if enabling deposit limit\"}},\"slashableBalanceOf(address)\":{\"params\":{\"account\":\"account to get the slashable collateral for\"},\"returns\":{\"_0\":\"total amount of the account's slashable collateral\"}},\"staticDelegateCall(address,bytes)\":{\"details\":\"It allows to use this contract's storage on-chain.\",\"params\":{\"data\":\"data to make a delegatecall with\",\"target\":\"address of the contract to make a delegatecall to\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"totalStake()\":{\"returns\":{\"_0\":\"total amount of the slashable collateral\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"version()\":{\"details\":\"Starts from 1.\",\"returns\":{\"_0\":\"version of the entity\"}},\"withdraw(address,uint256)\":{\"params\":{\"amount\":\"amount of the collateral to withdraw\",\"claimer\":\"account that needs to claim the withdrawal\"},\"returns\":{\"burnedShares\":\"amount of the active shares burned\",\"mintedShares\":\"amount of the epoch withdrawal shares minted\"}},\"withdrawalsOf(uint256,address)\":{\"params\":{\"account\":\"account to get the withdrawals for\",\"epoch\":\"epoch to get the withdrawals for the account at\"},\"returns\":{\"_0\":\"withdrawals for the account at the epoch\"}}},\"version\":1},\"userdoc\":{\"events\":{\"Claim(address,address,uint256,uint256)\":{\"notice\":\"Emitted when a claim is made.\"},\"ClaimBatch(address,address,uint256[],uint256)\":{\"notice\":\"Emitted when a batch claim is made.\"},\"Deposit(address,address,uint256,uint256)\":{\"notice\":\"Emitted when a deposit is made.\"},\"OnSlash(uint256,uint48,uint256)\":{\"notice\":\"Emitted when a slash happens.\"},\"SetDelegator(address)\":{\"notice\":\"Emitted when a delegator is set.\"},\"SetDepositLimit(uint256)\":{\"notice\":\"Emitted when a deposit limit is set.\"},\"SetDepositWhitelist(bool)\":{\"notice\":\"Emitted when a deposit whitelist status is enabled/disabled.\"},\"SetDepositorWhitelistStatus(address,bool)\":{\"notice\":\"Emitted when a depositor whitelist status is set.\"},\"SetIsDepositLimit(bool)\":{\"notice\":\"Emitted when a deposit limit status is enabled/disabled.\"},\"SetSlasher(address)\":{\"notice\":\"Emitted when a slasher is set.\"},\"Withdraw(address,address,uint256,uint256,uint256)\":{\"notice\":\"Emitted when a withdrawal is made.\"}},\"kind\":\"user\",\"methods\":{\"DELEGATOR_FACTORY()\":{\"notice\":\"Get the delegator factory's address.\"},\"DEPOSITOR_WHITELIST_ROLE()\":{\"notice\":\"Get a depositor whitelist status setter's role.\"},\"DEPOSIT_LIMIT_SET_ROLE()\":{\"notice\":\"Get a deposit limit setter's role.\"},\"DEPOSIT_WHITELIST_SET_ROLE()\":{\"notice\":\"Get a deposit whitelist enabler/disabler's role.\"},\"FACTORY()\":{\"notice\":\"Get the factory's address.\"},\"IS_DEPOSIT_LIMIT_SET_ROLE()\":{\"notice\":\"Get a deposit limit enabler/disabler's role.\"},\"SLASHER_FACTORY()\":{\"notice\":\"Get the slasher factory's address.\"},\"activeBalanceOf(address)\":{\"notice\":\"Get an active balance for a particular account.\"},\"activeBalanceOfAt(address,uint48,bytes)\":{\"notice\":\"Get an active balance for a particular account at a given timestamp using hints.\"},\"activeShares()\":{\"notice\":\"Get a total number of active shares in the vault.\"},\"activeSharesAt(uint48,bytes)\":{\"notice\":\"Get a total number of active shares in the vault at a given timestamp using a hint.\"},\"activeSharesOf(address)\":{\"notice\":\"Get a number of active shares for a particular account.\"},\"activeSharesOfAt(address,uint48,bytes)\":{\"notice\":\"Get a total number of active shares for a particular account at a given timestamp using a hint.\"},\"activeStake()\":{\"notice\":\"Get a total amount of active stake in the vault.\"},\"activeStakeAt(uint48,bytes)\":{\"notice\":\"Get a total amount of active stake in the vault at a given timestamp using a hint.\"},\"burner()\":{\"notice\":\"Get a burner to issue debt to (e.g., 0xdEaD or some unwrapper contract).\"},\"claim(address,uint256)\":{\"notice\":\"Claim collateral from the vault.\"},\"claimBatch(address,uint256[])\":{\"notice\":\"Claim collateral from the vault for multiple epochs.\"},\"collateral()\":{\"notice\":\"Get a vault collateral.\"},\"currentEpoch()\":{\"notice\":\"Get a current vault epoch.\"},\"currentEpochStart()\":{\"notice\":\"Get a start of the current vault epoch.\"},\"delegator()\":{\"notice\":\"Get a delegator (it delegates the vault's stake to networks and operators).\"},\"deposit(address,uint256)\":{\"notice\":\"Deposit collateral into the vault.\"},\"depositLimit()\":{\"notice\":\"Get a deposit limit (maximum amount of the active stake that can be in the vault simultaneously).\"},\"depositWhitelist()\":{\"notice\":\"Get if the deposit whitelist is enabled.\"},\"epochAt(uint48)\":{\"notice\":\"Get an epoch at a given timestamp.\"},\"epochDuration()\":{\"notice\":\"Get a duration of the vault epoch.\"},\"epochDurationInit()\":{\"notice\":\"Get a time point of the epoch duration set.\"},\"initialize(uint64,address,bytes)\":{\"notice\":\"Initialize this entity contract by using a given data and setting a particular version and owner.\"},\"isDelegatorInitialized()\":{\"notice\":\"Get if the delegator is initialized.\"},\"isDepositLimit()\":{\"notice\":\"Get if the deposit limit is set.\"},\"isDepositorWhitelisted(address)\":{\"notice\":\"Get if a given account is whitelisted as a depositor.\"},\"isInitialized()\":{\"notice\":\"Check if the vault is fully initialized (a delegator and a slasher are set).\"},\"isSlasherInitialized()\":{\"notice\":\"Get if the slasher is initialized.\"},\"isWithdrawalsClaimed(uint256,address)\":{\"notice\":\"Get if the withdrawals are claimed for a particular account at a given epoch.\"},\"migrate(uint64,bytes)\":{\"notice\":\"Migrate this entity to a particular newer version using a given data.\"},\"nextEpochStart()\":{\"notice\":\"Get a start of the next vault epoch.\"},\"onSlash(uint256,uint48)\":{\"notice\":\"Slash callback for burning collateral.\"},\"previousEpochStart()\":{\"notice\":\"Get a start of the previous vault epoch.\"},\"redeem(address,uint256)\":{\"notice\":\"Redeem collateral from the vault (it will be claimable after the next epoch).\"},\"setDepositLimit(uint256)\":{\"notice\":\"Set a deposit limit.\"},\"setDepositWhitelist(bool)\":{\"notice\":\"Enable/disable deposit whitelist.\"},\"setDepositorWhitelistStatus(address,bool)\":{\"notice\":\"Set a depositor whitelist status.\"},\"setIsDepositLimit(bool)\":{\"notice\":\"Enable/disable deposit limit.\"},\"slashableBalanceOf(address)\":{\"notice\":\"Get a total amount of the collateral that can be slashed for a given account.\"},\"slasher()\":{\"notice\":\"Get a slasher (it provides networks a slashing mechanism).\"},\"staticDelegateCall(address,bytes)\":{\"notice\":\"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data).\"},\"totalStake()\":{\"notice\":\"Get a total amount of the collateral that can be slashed.\"},\"version()\":{\"notice\":\"Get the entity's version.\"},\"withdraw(address,uint256)\":{\"notice\":\"Withdraw collateral from the vault (it will be claimable after the next epoch).\"},\"withdrawalShares(uint256)\":{\"notice\":\"Get a total number of withdrawal shares at a given epoch.\"},\"withdrawalSharesOf(uint256,address)\":{\"notice\":\"Get a number of withdrawal shares for a particular account at a given epoch (zero if claimed).\"},\"withdrawals(uint256)\":{\"notice\":\"Get a total amount of the withdrawals at a given epoch.\"},\"withdrawalsOf(uint256,address)\":{\"notice\":\"Get withdrawals for a particular account at a given epoch (zero if claimed).\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/vault/Vault.sol\":\"Vault\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf\",\"dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89\",\"dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1\",\"dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44\",\"dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6\",\"dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza\"]},\"src/contracts/common/MigratableEntity.sol\":{\"keccak256\":\"0x303ad40a3de8fa808cc30a6fbd5998633f6a89b982e6db1fa981e0566ab445e7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://fa8fb92995ead02798e013190b87b84b44cc68668262f045c9b0b4783940e2bf\",\"dweb:/ipfs/QmV1uKGVLKwWisc714R8fCt71gXUQJpaKvdc6LQ8WtvMpL\"]},\"src/contracts/common/StaticDelegateCallable.sol\":{\"keccak256\":\"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764\",\"dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD\"]},\"src/contracts/libraries/Checkpoints.sol\":{\"keccak256\":\"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609\",\"dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE\"]},\"src/contracts/libraries/ERC4626Math.sol\":{\"keccak256\":\"0x8441160513c1cbeb1c3b9ee077bcc7e7ce20006b52a77c8dd39ff0ef89699939\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://943f8cc3e26ddf649f465f40c909819f5c864717c4baa339e9e403b9374a4653\",\"dweb:/ipfs/QmXPxi1sUDsrGprZdUgCzoPEosaZMv9ZhygWQ1vAi1phAB\"]},\"src/contracts/vault/Vault.sol\":{\"keccak256\":\"0x7ee6dbf060c45d6eba95315f4ac0b3b467dd9c4999b84c31d6f66d4d8b53a116\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://301948b8ea522db292aa2722ba42def3911dae95f0b376f7023c3fef470f8676\",\"dweb:/ipfs/QmSDbP2HdzhDAzstr8Zz5isEAcSkma8ABc5UwPsoazaumZ\"]},\"src/contracts/vault/VaultStorage.sol\":{\"keccak256\":\"0x57db25b127d77ea3472de53e3a4af3354399655b9268638b99ca5925fa364a56\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://aa763d9a6ec508ae3abfb8228b72b9fd9525279e5135d4962e79ff059feb1173\",\"dweb:/ipfs/QmcbDR6E9wyEpu6V2FkEC4hnWy47zXA9LSKJde6zSGd33Q\"]},\"src/interfaces/common/IEntity.sol\":{\"keccak256\":\"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b\",\"dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv\"]},\"src/interfaces/common/IMigratableEntity.sol\":{\"keccak256\":\"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c\",\"dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds\"]},\"src/interfaces/common/IRegistry.sol\":{\"keccak256\":\"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014\",\"dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK\"]},\"src/interfaces/common/IStaticDelegateCallable.sol\":{\"keccak256\":\"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516\",\"dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi\"]},\"src/interfaces/delegator/IBaseDelegator.sol\":{\"keccak256\":\"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2\",\"dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8\"]},\"src/interfaces/slasher/IBaseSlasher.sol\":{\"keccak256\":\"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf\",\"dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx\"]},\"src/interfaces/vault/IVault.sol\":{\"keccak256\":\"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9\",\"dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R\"]},\"src/interfaces/vault/IVaultStorage.sol\":{\"keccak256\":\"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e\",\"dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"delegatorFactory","type":"address"},{"internalType":"address","name":"slasherFactory","type":"address"},{"internalType":"address","name":"vaultFactory","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"inputs":[],"type":"error","name":"AlreadyClaimed"},{"inputs":[],"type":"error","name":"AlreadyInitialized"},{"inputs":[],"type":"error","name":"AlreadySet"},{"inputs":[],"type":"error","name":"CheckpointUnorderedInsertion"},{"inputs":[],"type":"error","name":"DelegatorAlreadyInitialized"},{"inputs":[],"type":"error","name":"DepositLimitReached"},{"inputs":[],"type":"error","name":"InsufficientClaim"},{"inputs":[],"type":"error","name":"InsufficientDeposit"},{"inputs":[],"type":"error","name":"InsufficientRedemption"},{"inputs":[],"type":"error","name":"InsufficientWithdrawal"},{"inputs":[],"type":"error","name":"InvalidAccount"},{"inputs":[],"type":"error","name":"InvalidCaptureEpoch"},{"inputs":[],"type":"error","name":"InvalidClaimer"},{"inputs":[],"type":"error","name":"InvalidCollateral"},{"inputs":[],"type":"error","name":"InvalidDelegator"},{"inputs":[],"type":"error","name":"InvalidEpoch"},{"inputs":[],"type":"error","name":"InvalidEpochDuration"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"InvalidLengthEpochs"},{"inputs":[],"type":"error","name":"InvalidOnBehalfOf"},{"inputs":[],"type":"error","name":"InvalidRecipient"},{"inputs":[],"type":"error","name":"InvalidSlasher"},{"inputs":[],"type":"error","name":"InvalidTimestamp"},{"inputs":[],"type":"error","name":"MissingRoles"},{"inputs":[],"type":"error","name":"NoPreviousEpoch"},{"inputs":[],"type":"error","name":"NotDelegator"},{"inputs":[],"type":"error","name":"NotFactory"},{"inputs":[],"type":"error","name":"NotInitialized"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"NotSlasher"},{"inputs":[],"type":"error","name":"NotWhitelistedDepositor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintDowncast"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"type":"error","name":"SafeERC20FailedOperation"},{"inputs":[],"type":"error","name":"SlasherAlreadyInitialized"},{"inputs":[],"type":"error","name":"TooMuchRedeem"},{"inputs":[],"type":"error","name":"TooMuchWithdraw"},{"inputs":[{"internalType":"address","name":"claimer","type":"address","indexed":true},{"internalType":"address","name":"recipient","type":"address","indexed":true},{"internalType":"uint256","name":"epoch","type":"uint256","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Claim","anonymous":false},{"inputs":[{"internalType":"address","name":"claimer","type":"address","indexed":true},{"internalType":"address","name":"recipient","type":"address","indexed":true},{"internalType":"uint256[]","name":"epochs","type":"uint256[]","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"ClaimBatch","anonymous":false},{"inputs":[{"internalType":"address","name":"depositor","type":"address","indexed":true},{"internalType":"address","name":"onBehalfOf","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false}],"type":"event","name":"Deposit","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint48","name":"captureTimestamp","type":"uint48","indexed":false},{"internalType":"uint256","name":"slashedAmount","type":"uint256","indexed":false}],"type":"event","name":"OnSlash","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true}],"type":"event","name":"SetDelegator","anonymous":false},{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"SetDepositLimit","anonymous":false},{"inputs":[{"internalType":"bool","name":"status","type":"bool","indexed":false}],"type":"event","name":"SetDepositWhitelist","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"bool","name":"status","type":"bool","indexed":false}],"type":"event","name":"SetDepositorWhitelistStatus","anonymous":false},{"inputs":[{"internalType":"bool","name":"status","type":"bool","indexed":false}],"type":"event","name":"SetIsDepositLimit","anonymous":false},{"inputs":[{"internalType":"address","name":"slasher","type":"address","indexed":true}],"type":"event","name":"SetSlasher","anonymous":false},{"inputs":[{"internalType":"address","name":"withdrawer","type":"address","indexed":true},{"internalType":"address","name":"claimer","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"burnedShares","type":"uint256","indexed":false},{"internalType":"uint256","name":"mintedShares","type":"uint256","indexed":false}],"type":"event","name":"Withdraw","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DELEGATOR_FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEPOSITOR_WHITELIST_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEPOSIT_LIMIT_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEPOSIT_WHITELIST_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_DEPOSIT_LIMIT_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"SLASHER_FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"activeBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hints","type":"bytes"}],"stateMutability":"view","type":"function","name":"activeBalanceOfAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"activeShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"activeSharesAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"activeSharesOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"activeSharesOfAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"activeStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"activeStakeAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"burner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"epoch","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"claim","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256[]","name":"epochs","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"claimBatch","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"collateral","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"currentEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"currentEpochStart","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"delegator","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"onBehalfOf","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"deposit","outputs":[{"internalType":"uint256","name":"depositedAmount","type":"uint256"},{"internalType":"uint256","name":"mintedShares","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"depositLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"depositWhitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"epochAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"epochDuration","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"epochDurationInit","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"initialVersion","type":"uint64"},{"internalType":"address","name":"owner_","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"isDelegatorInitialized","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"isDepositLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"isDepositorWhitelisted","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"isInitialized","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"isSlasherInitialized","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"isWithdrawalsClaimed","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"newVersion","type":"uint64"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"migrate"},{"inputs":[],"stateMutability":"view","type":"function","name":"nextEpochStart","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint48","name":"captureTimestamp","type":"uint48"}],"stateMutability":"nonpayable","type":"function","name":"onSlash","outputs":[{"internalType":"uint256","name":"slashedAmount","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"previousEpochStart","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[{"internalType":"address","name":"claimer","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"redeem","outputs":[{"internalType":"uint256","name":"withdrawnAssets","type":"uint256"},{"internalType":"uint256","name":"mintedShares","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"address","name":"delegator_","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setDelegator"},{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setDepositLimit"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setDepositWhitelist"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setDepositorWhitelistStatus"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setIsDepositLimit"},{"inputs":[{"internalType":"address","name":"slasher_","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setSlasher"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"slashableBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"slasher","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"staticDelegateCall"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"version","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"claimer","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"withdraw","outputs":[{"internalType":"uint256","name":"burnedShares","type":"uint256"},{"internalType":"uint256","name":"mintedShares","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"}],"stateMutability":"view","type":"function","name":"withdrawalShares","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"withdrawalSharesOf","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"}],"stateMutability":"view","type":"function","name":"withdrawals","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"withdrawalsOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{"activeBalanceOf(address)":{"params":{"account":"account to get the active balance for"},"returns":{"_0":"active balance for the account"}},"activeBalanceOfAt(address,uint48,bytes)":{"params":{"account":"account to get the active balance for","hints":"hints for checkpoints' indexes","timestamp":"time point to get the active balance for the account at"},"returns":{"_0":"active balance for the account at the timestamp"}},"activeShares()":{"returns":{"_0":"total number of active shares"}},"activeSharesAt(uint48,bytes)":{"params":{"hint":"hint for the checkpoint index","timestamp":"time point to get the total number of active shares at"},"returns":{"_0":"total number of active shares at the timestamp"}},"activeSharesOf(address)":{"params":{"account":"account to get the number of active shares for"},"returns":{"_0":"number of active shares for the account"}},"activeSharesOfAt(address,uint48,bytes)":{"params":{"account":"account to get the number of active shares for","hint":"hint for the checkpoint index","timestamp":"time point to get the number of active shares for the account at"},"returns":{"_0":"number of active shares for the account at the timestamp"}},"activeStake()":{"returns":{"_0":"total amount of active stake"}},"activeStakeAt(uint48,bytes)":{"params":{"hint":"hint for the checkpoint index","timestamp":"time point to get the total active stake at"},"returns":{"_0":"total amount of active stake at the timestamp"}},"claim(address,uint256)":{"params":{"epoch":"epoch to claim the collateral for","recipient":"account that receives the collateral"},"returns":{"amount":"amount of the collateral claimed"}},"claimBatch(address,uint256[])":{"params":{"epochs":"epochs to claim the collateral for","recipient":"account that receives the collateral"},"returns":{"amount":"amount of the collateral claimed"}},"currentEpoch()":{"returns":{"_0":"current epoch"}},"currentEpochStart()":{"returns":{"_0":"start of the current epoch"}},"deposit(address,uint256)":{"params":{"amount":"amount of the collateral to deposit","onBehalfOf":"account the deposit is made on behalf of"},"returns":{"depositedAmount":"real amount of the collateral deposited","mintedShares":"amount of the active shares minted"}},"epochAt(uint48)":{"details":"Reverts if the timestamp is less than the start of the epoch 0.","params":{"timestamp":"time point to get the epoch at"},"returns":{"_0":"epoch at the timestamp"}},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"initialize(uint64,address,bytes)":{"params":{"data":"some data to use","initialVersion":"initial version of the entity","owner":"initial owner of the entity"}},"isInitialized()":{"returns":{"_0":"if the vault is fully initialized"}},"migrate(uint64,bytes)":{"params":{"data":"some data to use","newVersion":"new version of the entity"}},"nextEpochStart()":{"returns":{"_0":"start of the next epoch"}},"onSlash(uint256,uint48)":{"details":"Only the slasher can call this function.","params":{"amount":"amount to slash","captureTimestamp":"time point when the stake was captured"},"returns":{"slashedAmount":"real amount of the collateral slashed"}},"owner()":{"details":"Returns the address of the current owner."},"previousEpochStart()":{"details":"Reverts if the current epoch is 0.","returns":{"_0":"start of the previous epoch"}},"redeem(address,uint256)":{"params":{"claimer":"account that needs to claim the withdrawal","shares":"amount of the active shares to redeem"},"returns":{"mintedShares":"amount of the epoch withdrawal shares minted","withdrawnAssets":"amount of the collateral withdrawn"}},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"setDepositLimit(uint256)":{"details":"Only a DEPOSIT_LIMIT_SET_ROLE holder can call this function.","params":{"limit":"deposit limit (maximum amount of the collateral that can be in the vault simultaneously)"}},"setDepositWhitelist(bool)":{"details":"Only a DEPOSIT_WHITELIST_SET_ROLE holder can call this function.","params":{"status":"if enabling deposit whitelist"}},"setDepositorWhitelistStatus(address,bool)":{"details":"Only a DEPOSITOR_WHITELIST_ROLE holder can call this function.","params":{"account":"account for which the whitelist status is set","status":"if whitelisting the account"}},"setIsDepositLimit(bool)":{"details":"Only a IS_DEPOSIT_LIMIT_SET_ROLE holder can call this function.","params":{"status":"if enabling deposit limit"}},"slashableBalanceOf(address)":{"params":{"account":"account to get the slashable collateral for"},"returns":{"_0":"total amount of the account's slashable collateral"}},"staticDelegateCall(address,bytes)":{"details":"It allows to use this contract's storage on-chain.","params":{"data":"data to make a delegatecall with","target":"address of the contract to make a delegatecall to"}},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"totalStake()":{"returns":{"_0":"total amount of the slashable collateral"}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"version()":{"details":"Starts from 1.","returns":{"_0":"version of the entity"}},"withdraw(address,uint256)":{"params":{"amount":"amount of the collateral to withdraw","claimer":"account that needs to claim the withdrawal"},"returns":{"burnedShares":"amount of the active shares burned","mintedShares":"amount of the epoch withdrawal shares minted"}},"withdrawalsOf(uint256,address)":{"params":{"account":"account to get the withdrawals for","epoch":"epoch to get the withdrawals for the account at"},"returns":{"_0":"withdrawals for the account at the epoch"}}},"version":1},"userdoc":{"kind":"user","methods":{"DELEGATOR_FACTORY()":{"notice":"Get the delegator factory's address."},"DEPOSITOR_WHITELIST_ROLE()":{"notice":"Get a depositor whitelist status setter's role."},"DEPOSIT_LIMIT_SET_ROLE()":{"notice":"Get a deposit limit setter's role."},"DEPOSIT_WHITELIST_SET_ROLE()":{"notice":"Get a deposit whitelist enabler/disabler's role."},"FACTORY()":{"notice":"Get the factory's address."},"IS_DEPOSIT_LIMIT_SET_ROLE()":{"notice":"Get a deposit limit enabler/disabler's role."},"SLASHER_FACTORY()":{"notice":"Get the slasher factory's address."},"activeBalanceOf(address)":{"notice":"Get an active balance for a particular account."},"activeBalanceOfAt(address,uint48,bytes)":{"notice":"Get an active balance for a particular account at a given timestamp using hints."},"activeShares()":{"notice":"Get a total number of active shares in the vault."},"activeSharesAt(uint48,bytes)":{"notice":"Get a total number of active shares in the vault at a given timestamp using a hint."},"activeSharesOf(address)":{"notice":"Get a number of active shares for a particular account."},"activeSharesOfAt(address,uint48,bytes)":{"notice":"Get a total number of active shares for a particular account at a given timestamp using a hint."},"activeStake()":{"notice":"Get a total amount of active stake in the vault."},"activeStakeAt(uint48,bytes)":{"notice":"Get a total amount of active stake in the vault at a given timestamp using a hint."},"burner()":{"notice":"Get a burner to issue debt to (e.g., 0xdEaD or some unwrapper contract)."},"claim(address,uint256)":{"notice":"Claim collateral from the vault."},"claimBatch(address,uint256[])":{"notice":"Claim collateral from the vault for multiple epochs."},"collateral()":{"notice":"Get a vault collateral."},"currentEpoch()":{"notice":"Get a current vault epoch."},"currentEpochStart()":{"notice":"Get a start of the current vault epoch."},"delegator()":{"notice":"Get a delegator (it delegates the vault's stake to networks and operators)."},"deposit(address,uint256)":{"notice":"Deposit collateral into the vault."},"depositLimit()":{"notice":"Get a deposit limit (maximum amount of the active stake that can be in the vault simultaneously)."},"depositWhitelist()":{"notice":"Get if the deposit whitelist is enabled."},"epochAt(uint48)":{"notice":"Get an epoch at a given timestamp."},"epochDuration()":{"notice":"Get a duration of the vault epoch."},"epochDurationInit()":{"notice":"Get a time point of the epoch duration set."},"initialize(uint64,address,bytes)":{"notice":"Initialize this entity contract by using a given data and setting a particular version and owner."},"isDelegatorInitialized()":{"notice":"Get if the delegator is initialized."},"isDepositLimit()":{"notice":"Get if the deposit limit is set."},"isDepositorWhitelisted(address)":{"notice":"Get if a given account is whitelisted as a depositor."},"isInitialized()":{"notice":"Check if the vault is fully initialized (a delegator and a slasher are set)."},"isSlasherInitialized()":{"notice":"Get if the slasher is initialized."},"isWithdrawalsClaimed(uint256,address)":{"notice":"Get if the withdrawals are claimed for a particular account at a given epoch."},"migrate(uint64,bytes)":{"notice":"Migrate this entity to a particular newer version using a given data."},"nextEpochStart()":{"notice":"Get a start of the next vault epoch."},"onSlash(uint256,uint48)":{"notice":"Slash callback for burning collateral."},"previousEpochStart()":{"notice":"Get a start of the previous vault epoch."},"redeem(address,uint256)":{"notice":"Redeem collateral from the vault (it will be claimable after the next epoch)."},"setDepositLimit(uint256)":{"notice":"Set a deposit limit."},"setDepositWhitelist(bool)":{"notice":"Enable/disable deposit whitelist."},"setDepositorWhitelistStatus(address,bool)":{"notice":"Set a depositor whitelist status."},"setIsDepositLimit(bool)":{"notice":"Enable/disable deposit limit."},"slashableBalanceOf(address)":{"notice":"Get a total amount of the collateral that can be slashed for a given account."},"slasher()":{"notice":"Get a slasher (it provides networks a slashing mechanism)."},"staticDelegateCall(address,bytes)":{"notice":"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data)."},"totalStake()":{"notice":"Get a total amount of the collateral that can be slashed."},"version()":{"notice":"Get the entity's version."},"withdraw(address,uint256)":{"notice":"Withdraw collateral from the vault (it will be claimable after the next epoch)."},"withdrawalShares(uint256)":{"notice":"Get a total number of withdrawal shares at a given epoch."},"withdrawalSharesOf(uint256,address)":{"notice":"Get a number of withdrawal shares for a particular account at a given epoch (zero if claimed)."},"withdrawals(uint256)":{"notice":"Get a total amount of the withdrawals at a given epoch."},"withdrawalsOf(uint256,address)":{"notice":"Get withdrawals for a particular account at a given epoch (zero if claimed)."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/vault/Vault.sol":"Vault"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol":{"keccak256":"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866","urls":["bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf","dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab","urls":["bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89","dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606","urls":["bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1","dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310","urls":["bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862","dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol":{"keccak256":"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f","urls":["bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44","dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc","urls":["bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6","dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza"],"license":"MIT"},"src/contracts/common/MigratableEntity.sol":{"keccak256":"0x303ad40a3de8fa808cc30a6fbd5998633f6a89b982e6db1fa981e0566ab445e7","urls":["bzz-raw://fa8fb92995ead02798e013190b87b84b44cc68668262f045c9b0b4783940e2bf","dweb:/ipfs/QmV1uKGVLKwWisc714R8fCt71gXUQJpaKvdc6LQ8WtvMpL"],"license":"BUSL-1.1"},"src/contracts/common/StaticDelegateCallable.sol":{"keccak256":"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90","urls":["bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764","dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD"],"license":"BUSL-1.1"},"src/contracts/libraries/Checkpoints.sol":{"keccak256":"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c","urls":["bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609","dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE"],"license":"MIT"},"src/contracts/libraries/ERC4626Math.sol":{"keccak256":"0x8441160513c1cbeb1c3b9ee077bcc7e7ce20006b52a77c8dd39ff0ef89699939","urls":["bzz-raw://943f8cc3e26ddf649f465f40c909819f5c864717c4baa339e9e403b9374a4653","dweb:/ipfs/QmXPxi1sUDsrGprZdUgCzoPEosaZMv9ZhygWQ1vAi1phAB"],"license":"MIT"},"src/contracts/vault/Vault.sol":{"keccak256":"0x7ee6dbf060c45d6eba95315f4ac0b3b467dd9c4999b84c31d6f66d4d8b53a116","urls":["bzz-raw://301948b8ea522db292aa2722ba42def3911dae95f0b376f7023c3fef470f8676","dweb:/ipfs/QmSDbP2HdzhDAzstr8Zz5isEAcSkma8ABc5UwPsoazaumZ"],"license":"BUSL-1.1"},"src/contracts/vault/VaultStorage.sol":{"keccak256":"0x57db25b127d77ea3472de53e3a4af3354399655b9268638b99ca5925fa364a56","urls":["bzz-raw://aa763d9a6ec508ae3abfb8228b72b9fd9525279e5135d4962e79ff059feb1173","dweb:/ipfs/QmcbDR6E9wyEpu6V2FkEC4hnWy47zXA9LSKJde6zSGd33Q"],"license":"BUSL-1.1"},"src/interfaces/common/IEntity.sol":{"keccak256":"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21","urls":["bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b","dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv"],"license":"MIT"},"src/interfaces/common/IMigratableEntity.sol":{"keccak256":"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4","urls":["bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c","dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds"],"license":"MIT"},"src/interfaces/common/IRegistry.sol":{"keccak256":"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb","urls":["bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014","dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK"],"license":"MIT"},"src/interfaces/common/IStaticDelegateCallable.sol":{"keccak256":"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5","urls":["bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516","dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi"],"license":"MIT"},"src/interfaces/delegator/IBaseDelegator.sol":{"keccak256":"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee","urls":["bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2","dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8"],"license":"MIT"},"src/interfaces/slasher/IBaseSlasher.sol":{"keccak256":"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404","urls":["bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf","dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx"],"license":"MIT"},"src/interfaces/vault/IVault.sol":{"keccak256":"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235","urls":["bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9","dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R"],"license":"MIT"},"src/interfaces/vault/IVaultStorage.sol":{"keccak256":"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22","urls":["bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e","dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6"],"license":"MIT"}},"version":1},"id":102} \ No newline at end of file diff --git a/out/VaultConfigurator.sol/VaultConfigurator.json b/out/VaultConfigurator.sol/VaultConfigurator.json index e6007148..c92a94a8 100644 --- a/out/VaultConfigurator.sol/VaultConfigurator.json +++ b/out/VaultConfigurator.sol/VaultConfigurator.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"vaultFactory","type":"address","internalType":"address"},{"name":"delegatorFactory","type":"address","internalType":"address"},{"name":"slasherFactory","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"DELEGATOR_FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"SLASHER_FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"VAULT_FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"create","inputs":[{"name":"params","type":"tuple","internalType":"struct IVaultConfigurator.InitParams","components":[{"name":"version","type":"uint64","internalType":"uint64"},{"name":"owner","type":"address","internalType":"address"},{"name":"vaultParams","type":"bytes","internalType":"bytes"},{"name":"delegatorIndex","type":"uint64","internalType":"uint64"},{"name":"delegatorParams","type":"bytes","internalType":"bytes"},{"name":"withSlasher","type":"bool","internalType":"bool"},{"name":"slasherIndex","type":"uint64","internalType":"uint64"},{"name":"slasherParams","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"vault","type":"address","internalType":"address"},{"name":"delegator","type":"address","internalType":"address"},{"name":"slasher","type":"address","internalType":"address"}],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x60e0346100a957601f61078338819003918201601f19168301916001600160401b038311848410176100ad578084926060946040528339810103126100a957610047816100c1565b906100606040610059602084016100c1565b92016100c1565b9160805260a05260c0526040516106ad90816100d682396080518181816101aa015261050a015260a05181818161023301526104c9015260c05181818161038201526104860152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036100a95756fe60806040818152600480361015610014575f80fd5b5f925f3560e01c908163103f2907146104f8575080636da3e06d146104b557806387df0788146104725763c48927e41461004c575f80fd5b346103385760031991602036840181136103385782359067ffffffffffffffff9485831161033857610100809184360301126103385783519081018181108782111761045f57845261009f838601610583565b81526001600160a01b039560248401358781168103610338578383019081526044850135828111610338576100d990883691880101610598565b918684019283526100ec60648701610583565b956060850196875260848101358281116103385761010f908a3691840101610598565b966080860197885260a48201359081151582036103385760a0870191825261013960c48401610583565b9260c0880193845260e481013596858811610338578d8d975f6101648f9b958b8f9736920101610598565b9960e08d019a8b526101a6848b849f511694511695519c519c8d9687958694633ac0491160e01b8652850152602484015260606044840152606483019061060d565b03927f0000000000000000000000000000000000000000000000000000000000000000165af19586156104555791888d8c95938e97955f9a61042e575b50908561022f9251169c515f8b6102008a51938492888401610631565b0398610214601f199a8b8101855284610561565b519e8f94859384926319a211df60e31b9d8e85528401610656565b03927f0000000000000000000000000000000000000000000000000000000000000000165af1998a1561042457908d979695949392915f9b6103f9575b50908995949392915161033c575b5050505050501695863b156103385784516383cd9cc360e01b8152938116868501819052935f81602481838c5af1801561032e5761031b575b50863b1561031757845163555e124b60e11b815291169481018590528681602481838a5af1801561030d576102f5575b50606095508251948552840152820152f35b6102ff8791610539565b61030957856102e3565b8580fd5b84513d89823e3d90fd5b8780fd5b610326919850610539565b5f965f6102b3565b86513d5f823e3d90fd5b5f80fd5b61036893949596985061035c9750511693518a5196879189888401610631565b03908101865285610561565b61037c8851948593849384528b8401610656565b03815f8b7f0000000000000000000000000000000000000000000000000000000000000000165af19081156103ef579087915f916103c2575b5091835f8080808061027a565b6103e29150843d86116103e8575b6103da8183610561565b8101906105ee565b5f6103b5565b503d6103d0565b85513d5f823e3d90fd5b8a9695949392919b5061041890873d89116103e8576103da8183610561565b9a90919293949561026c565b8b513d5f823e3d90fd5b61022f92919a5061044c8791853d87116103e8576103da8183610561565b9a9192506101e3565b8a513d5f823e3d90fd5b604186634e487b7160e01b5f525260245ffd5b8234610338575f36600319011261033857517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b8234610338575f36600319011261033857517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610338575f366003190112610338577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b67ffffffffffffffff811161054d57604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff82111761054d57604052565b359067ffffffffffffffff8216820361033857565b81601f820112156103385780359067ffffffffffffffff821161054d57604051926105cd601f8401601f191660200185610561565b8284526020838301011161033857815f926020809301838601378301015290565b9081602091031261033857516001600160a01b03811681036103385790565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b6001600160a01b0390911681526040602082018190526106539291019061060d565b90565b60409067ffffffffffffffff6106539493168152816020820152019061060d56fea264697066735822122017a06bce8ee6c8b14165edcd334e877656eb476fe3a8fdbc511129d9bf4fbb8664736f6c63430008190033","sourceMap":"392:1286:67:-:0;;;;;;;;;;;;;-1:-1:-1;;392:1286:67;;;;-1:-1:-1;;;;;392:1286:67;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;844:28;;;882:36;;928:32;;392:1286;;;;;;;;844:28;392:1286;;;;;;;;;;882:36;392:1286;;;;;;;;;;928:32;392:1286;;;;;;;;;;;;-1:-1:-1;392:1286:67;;;;;;-1:-1:-1;392:1286:67;;;;;-1:-1:-1;392:1286:67;;;;-1:-1:-1;;;;;392:1286:67;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x60806040818152600480361015610014575f80fd5b5f925f3560e01c908163103f2907146104f8575080636da3e06d146104b557806387df0788146104725763c48927e41461004c575f80fd5b346103385760031991602036840181136103385782359067ffffffffffffffff9485831161033857610100809184360301126103385783519081018181108782111761045f57845261009f838601610583565b81526001600160a01b039560248401358781168103610338578383019081526044850135828111610338576100d990883691880101610598565b918684019283526100ec60648701610583565b956060850196875260848101358281116103385761010f908a3691840101610598565b966080860197885260a48201359081151582036103385760a0870191825261013960c48401610583565b9260c0880193845260e481013596858811610338578d8d975f6101648f9b958b8f9736920101610598565b9960e08d019a8b526101a6848b849f511694511695519c519c8d9687958694633ac0491160e01b8652850152602484015260606044840152606483019061060d565b03927f0000000000000000000000000000000000000000000000000000000000000000165af19586156104555791888d8c95938e97955f9a61042e575b50908561022f9251169c515f8b6102008a51938492888401610631565b0398610214601f199a8b8101855284610561565b519e8f94859384926319a211df60e31b9d8e85528401610656565b03927f0000000000000000000000000000000000000000000000000000000000000000165af1998a1561042457908d979695949392915f9b6103f9575b50908995949392915161033c575b5050505050501695863b156103385784516383cd9cc360e01b8152938116868501819052935f81602481838c5af1801561032e5761031b575b50863b1561031757845163555e124b60e11b815291169481018590528681602481838a5af1801561030d576102f5575b50606095508251948552840152820152f35b6102ff8791610539565b61030957856102e3565b8580fd5b84513d89823e3d90fd5b8780fd5b610326919850610539565b5f965f6102b3565b86513d5f823e3d90fd5b5f80fd5b61036893949596985061035c9750511693518a5196879189888401610631565b03908101865285610561565b61037c8851948593849384528b8401610656565b03815f8b7f0000000000000000000000000000000000000000000000000000000000000000165af19081156103ef579087915f916103c2575b5091835f8080808061027a565b6103e29150843d86116103e8575b6103da8183610561565b8101906105ee565b5f6103b5565b503d6103d0565b85513d5f823e3d90fd5b8a9695949392919b5061041890873d89116103e8576103da8183610561565b9a90919293949561026c565b8b513d5f823e3d90fd5b61022f92919a5061044c8791853d87116103e8576103da8183610561565b9a9192506101e3565b8a513d5f823e3d90fd5b604186634e487b7160e01b5f525260245ffd5b8234610338575f36600319011261033857517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b8234610338575f36600319011261033857517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610338575f366003190112610338577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b67ffffffffffffffff811161054d57604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff82111761054d57604052565b359067ffffffffffffffff8216820361033857565b81601f820112156103385780359067ffffffffffffffff821161054d57604051926105cd601f8401601f191660200185610561565b8284526020838301011161033857815f926020809301838601378301015290565b9081602091031261033857516001600160a01b03811681036103385790565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b6001600160a01b0390911681526040602082018190526106539291019061060d565b90565b60409067ffffffffffffffff6106539493168152816020820152019061060d56fea264697066735822122017a06bce8ee6c8b14165edcd334e877656eb476fe3a8fdbc511129d9bf4fbb8664736f6c63430008190033","sourceMap":"392:1286:67:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;392:1286:67;;;;;;-1:-1:-1;392:1286:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;392:1286:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;1133:15;;;392:1286;;;;;;1233:18;;392:1286;;;;;;;;;;;;1168:84;;;;392:1286;;;;;;;;;;;;;;;:::i;:::-;1168:84;1181:13;;392:1286;1168:84;;;;;;;;;;;;;;;;392:1286;1168:84;;;392:1286;;;;1287:108;392:1286;;;1371:22;;392:1286;;1353:41;392:1286;;1353:41;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;392:1286;;;;;;;;;;;1287:108;;;;;;;:::i;:::-;;1304:17;;392:1286;1287:108;;;;;;;;;;;;;;;;392:1286;1287:108;;;392:1286;;;;;;;;;;1406:175;;392:1286;;;;;;;;1591:36;;;;;;392:1286;;-1:-1:-1;;;1591:36:67;;392:1286;;;1591:36;;;392:1286;;;;;;;;;1591:36;;;;;;;;;392:1286;1637:32;;;;;;392:1286;;-1:-1:-1;;;1637:32:67;;392:1286;;1637:32;;;392:1286;;;1637:32;392:1286;;;1637:32;;;;;;;;;;392:1286;;;;;;;;;;;;;;;;;1637:32;;;;;:::i;:::-;392:1286;;1637:32;;;392:1286;;;;1637:32;392:1286;;;;;;;;;1637:32;392:1286;;;1591:36;;;;;;:::i;:::-;392:1286;1591:36;;;;;392:1286;;;;;;;;;1591:36;392:1286;;;1406:175;1530:39;392:1286;;;;;;1530:39;392:1286;;;;1548:20;;392:1286;;1530:39;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;1470:100;392:1286;;1470:100;;;;;;;;;;;:::i;:::-;;1485:15;392:1286;1485:15;;392:1286;1470:100;;;;;;;;;;392:1286;1470:100;;;1406:175;1444:126;1406:175;;;;;;;;;1470:100;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;392:1286;;;;;;;;;1287:108;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;392:1286;;;;;;;;;1168:84;1287:108;1168:84;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;392:1286;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;392:1286:67;;;;;703:40;-1:-1:-1;;;;;392:1286:67;;;;;;;;;;;;;-1:-1:-1;;392:1286:67;;;;;600:42;-1:-1:-1;;;;;392:1286:67;;;;;;;;;;;;-1:-1:-1;;392:1286:67;;;;501:38;-1:-1:-1;;;;;392:1286:67;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;1353:41;;392:1286;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;1353:41;392:1286;;-1:-1:-1;;392:1286:67;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;392:1286:67;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;392:1286:67;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;392:1286:67;;;;;;;;-1:-1:-1;;392:1286:67;;;;:::o;:::-;-1:-1:-1;;;;;392:1286:67;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i","linkReferences":{},"immutableReferences":{"57668":[{"start":426,"length":32},{"start":1290,"length":32}],"57671":[{"start":563,"length":32},{"start":1225,"length":32}],"57674":[{"start":898,"length":32},{"start":1158,"length":32}]}},"methodIdentifiers":{"DELEGATOR_FACTORY()":"6da3e06d","SLASHER_FACTORY()":"87df0788","VAULT_FACTORY()":"103f2907","create((uint64,address,bytes,uint64,bytes,bool,uint64,bytes))":"c48927e4"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vaultFactory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegatorFactory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"slasherFactory\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"DELEGATOR_FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SLASHER_FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VAULT_FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"vaultParams\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"delegatorIndex\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"delegatorParams\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"withSlasher\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"slasherIndex\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"slasherParams\",\"type\":\"bytes\"}],\"internalType\":\"struct IVaultConfigurator.InitParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"create\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"slasher\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"create((uint64,address,bytes,uint64,bytes,bool,uint64,bytes))\":{\"params\":{\"params\":\"initial parameters needed for a vault with a delegator and a slasher deployment\"},\"returns\":{\"delegator\":\"address of the delegator\",\"slasher\":\"address of the slasher\",\"vault\":\"address of the vault\"}}},\"stateVariables\":{\"DELEGATOR_FACTORY\":{\"return\":\"address of the delegator factory\",\"returns\":{\"_0\":\"address of the delegator factory\"}},\"SLASHER_FACTORY\":{\"return\":\"address of the slasher factory\",\"returns\":{\"_0\":\"address of the slasher factory\"}},\"VAULT_FACTORY\":{\"return\":\"address of the vault factory\",\"returns\":{\"_0\":\"address of the vault factory\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DELEGATOR_FACTORY()\":{\"notice\":\"Get the delegator factory's address.\"},\"SLASHER_FACTORY()\":{\"notice\":\"Get the slasher factory's address.\"},\"VAULT_FACTORY()\":{\"notice\":\"Get the vault factory's address.\"},\"create((uint64,address,bytes,uint64,bytes,bool,uint64,bytes))\":{\"notice\":\"Create a new vault with a delegator and a slasher.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/VaultConfigurator.sol\":\"VaultConfigurator\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://942dad22fbdc1669f025540ba63aa3ccfad5f8458fc5d4525b31ebf272e7af45\",\"dweb:/ipfs/Qmdo4X2M82aM3AMoW2kf2jhYkSCyC4T1pHNd6obdsDFnAB\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45\",\"dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26\",\"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/proxy/Clones.sol\":{\"keccak256\":\"0xd18408af8a91bedb3d56343eeb9b30eb852e6dea93a5e2d5c6db9ca4cb905155\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://061475b7302a732dc598907790f407417551c2b13e89daa57b3698489ef5484b\",\"dweb:/ipfs/QmdX5qmk3VSniSErFuD4aVawQxUi2MuUbP7spPcHddPfcX\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"keccak256\":\"0xbfb6695731de677140fbf76c772ab08c4233a122fb51ac28ac120fc49bbbc4ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68f8fded7cc318efa15874b7c6a983fe17a4a955d72d240353a9a4ca1e1b824c\",\"dweb:/ipfs/QmdcmBL9Qo4Tk3Dby4wFYabGyot9JNeLPxpSXZUgUm92BV\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://547d21aa17f4f3f1a1a7edf7167beff8dd9496a0348d5588f15cc8a4b29d052a\",\"dweb:/ipfs/QmT16JtRQSWNpLo9W23jr6CzaMuTAcQcjJJcdRd8HLJ6cE\"]},\"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c\",\"dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0xbdc5e074d7dd6678f67e92b1a51a20226801a407b0e1af3da367c5d1ff4519ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a36cca6b22fff3db16fc789ff6c60eea71d4b156065d4d0c83a0bc5e91a77a8b\",\"dweb:/ipfs/QmYN3exd5AemxjBrN8XMB1p5LbbE16uC3sjbYjwi8AjcGR\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1\",\"dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0xc7755af115020049e4140f224f9ee88d7e1799ffb0646f37bf0df24bf6213f58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f09bf94d5274334ec021f61a04659db303f31e60460e14b709c9bf187740111\",\"dweb:/ipfs/QmNvgomZYUwFAt4cZbPWAiTeSZQreGehY9BK5xyVJsUttb\"]},\"src/contracts/DelegatorFactory.sol\":{\"keccak256\":\"0x3c3fb62c441302f4f75d94703779f5c4bb755c06f310b4c923dbf24d6e0adda9\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://597fa8be7179d8a555bf942c1dea0504273a1d34f6ac4c206fc2e816da143e68\",\"dweb:/ipfs/Qmf54DKNYXC7fTMcAFABw68RC6ZFenVgyAPGhbPTf6s5TR\"]},\"src/contracts/SlasherFactory.sol\":{\"keccak256\":\"0xbafc96e3d2511eb62942613645b4f5cbf6f603063a711b30e25940aaba08064c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://489440f1181b1858e3b27a90ec6f514c0c287c602b4779676048213202165867\",\"dweb:/ipfs/QmRG7AQ9m9qHr8ofEvP1Ur8S379fFXTo9rmiWaAtZ9rsUc\"]},\"src/contracts/VaultConfigurator.sol\":{\"keccak256\":\"0x2484ee5cfac134e27cedeeef22d4111d7ecd4a4b62f02381f2c2b67c57ed7955\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://adce2d9b8a9fb670c0f3266d5407b752901921f1c9f9406c7db65d84e48e779a\",\"dweb:/ipfs/QmTbcKhdGfepqexFc8kziqPdfFC8SGZzFrVnEcJ5nKBiPz\"]},\"src/contracts/VaultFactory.sol\":{\"keccak256\":\"0xa9122dd11e5f21fa97a813e90f8c4905f0a4967b9611dd03437a31377cbdecb8\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://4c2feda1f9c0c7ddf65bccdc99494e4bfbb820fcddc3e4222e3b58ef821424a3\",\"dweb:/ipfs/Qmdmt4rH214jDmDsF9ELvJXVCt8abhk6poSmhJqqzLse3R\"]},\"src/contracts/common/Entity.sol\":{\"keccak256\":\"0x3d61a932995b8443381f3950542d388223a2c26dd5d29a3274dea3baa7388bd7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7cdf5f03ca72fd263fd32ff59c8d88ddca911ae83896a287d10772c1bbe9b138\",\"dweb:/ipfs/QmbP84r5BWT1Rn9AYTntWSf3xUMTTCohTZJFhbBhDXFoHa\"]},\"src/contracts/common/Factory.sol\":{\"keccak256\":\"0x41764643e6a2a3d80d694a3efee91f50a2fd084fb2bcd13566259443840e6369\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://fefc1e2a2189275388826f4f82ca421ca79c2866d3ef39dc2c7df46fe7cbf7c9\",\"dweb:/ipfs/QmSJ4VGmgpYUv5ni4ZYoSV4qMuZrk5DLjyB3Vv9NbFgeNZ\"]},\"src/contracts/common/MigratableEntity.sol\":{\"keccak256\":\"0x2d736f4dacd5d7e7697503bc426c78b8250fe1694ca157965ec178da6807de58\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f1237acf96b4b9f9b69156e068eddd726a6e15bd8e87a18dc999cd4ba4da069c\",\"dweb:/ipfs/QmS6M8fiFFSeuJ4ZKKq1z8W7w4ybeHQSy5TLASGoc1LVic\"]},\"src/contracts/common/MigratableEntityProxy.sol\":{\"keccak256\":\"0x78ba27242276232ad10a45265e3c07f0a25722456f6abb3fb3f24a1c8e1b38d1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://a19623df688e5085036b59fc934e35b72997f875d7ffda1cdc557c6ca468206d\",\"dweb:/ipfs/QmaQiT5uYZu5JmqhMjTDJnsq3nqaHbKrWAjrxKKLesdHV7\"]},\"src/contracts/common/MigratablesFactory.sol\":{\"keccak256\":\"0x5d1487c3456da4bd0bc2a131eeab97ab92484c923edefaebf190cc08d4080093\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://fec38d2e52e9c5148e95599c133fd6fe66d41296d6fc06e7329d2db199a1798f\",\"dweb:/ipfs/QmeiaydBXHHkJRUnpaZH1C6JQ7HPocTvQbUJBqKTvUeEYv\"]},\"src/contracts/common/Registry.sol\":{\"keccak256\":\"0x4a4004836d920953a8ec6e223de9a330f43acf7a5b93c6b8b3e4a95e0f129889\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://e8bdda207f3852c683a2b481602239a914f7e26bcd042ade618e263a43b67652\",\"dweb:/ipfs/Qmb8GZykJWxZcfwNp3SqhFizDFydFuV6LXgemV3vnWyLyu\"]},\"src/contracts/common/StaticDelegateCallable.sol\":{\"keccak256\":\"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764\",\"dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD\"]},\"src/contracts/libraries/Checkpoints.sol\":{\"keccak256\":\"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609\",\"dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE\"]},\"src/contracts/libraries/ERC4626Math.sol\":{\"keccak256\":\"0x8441160513c1cbeb1c3b9ee077bcc7e7ce20006b52a77c8dd39ff0ef89699939\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://943f8cc3e26ddf649f465f40c909819f5c864717c4baa339e9e403b9374a4653\",\"dweb:/ipfs/QmXPxi1sUDsrGprZdUgCzoPEosaZMv9ZhygWQ1vAi1phAB\"]},\"src/contracts/libraries/Subnetwork.sol\":{\"keccak256\":\"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56\",\"dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32\"]},\"src/contracts/slasher/BaseSlasher.sol\":{\"keccak256\":\"0x190e5dce196a061bdad42468c52e9f5b0eb7810cd7d0c19f04d6a2e94984f1b6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://07ca08d0cd43c2fe5d54a5577f6bdd522ced410f5d3a52e764deaa7ba26b5f06\",\"dweb:/ipfs/QmZe3PiMKBQKWcwodaLupragdqxPjgS4v1qMC7RXau8hDF\"]},\"src/contracts/vault/Vault.sol\":{\"keccak256\":\"0x2ceff6ed3298c4cad144c99fcc79b51cb9397d6ebef00285b915848b476f8c2e\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://11f2fb3581854f3ab6e82e8d4935d9eb510c903a13c3f022346c2956a58f5307\",\"dweb:/ipfs/QmdUnoXoyYoG9SGWyQZCFyLDRUUX3eXyXetkRvw6jxqqBz\"]},\"src/contracts/vault/VaultStorage.sol\":{\"keccak256\":\"0x57db25b127d77ea3472de53e3a4af3354399655b9268638b99ca5925fa364a56\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://aa763d9a6ec508ae3abfb8228b72b9fd9525279e5135d4962e79ff059feb1173\",\"dweb:/ipfs/QmcbDR6E9wyEpu6V2FkEC4hnWy47zXA9LSKJde6zSGd33Q\"]},\"src/interfaces/IDelegatorFactory.sol\":{\"keccak256\":\"0x7850453237ca93b301393506d2489a38830a60be0c29f39a4a1aee3508d836e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8f418702b883c90e046af92d5654a25849baf79b61c11401ad603b861fed7b80\",\"dweb:/ipfs/Qmdju1XFJXx3uJidzoS7srcoSnzT8jUoPAmGEdbceYgB7j\"]},\"src/interfaces/ISlasherFactory.sol\":{\"keccak256\":\"0x30018af5c2719d9b5cfacbfc0277017896815b3fcc4dfbea78813e6ae81c1e56\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5e028fbed23ab973d8d9eb2be4e53a528dd01248e3233f56ab0f8ac9a7c9c220\",\"dweb:/ipfs/Qmd9cHMRSE52ESmxMiu5gTBpRNmDHQK5q18f7UTj8DQke4\"]},\"src/interfaces/IVaultConfigurator.sol\":{\"keccak256\":\"0x699d9b8c767780c4ea593fe7608bc0b3ef7646f54cea0610ae355f2974658eba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ac4081f36b477025213f59c489cbb85f904580b145fa9f18ef9a7b794f0fba2\",\"dweb:/ipfs/QmPE3Ep6pTdaeFsJoixeom3NEaQiTe8WHrLoiFEGJo1zx4\"]},\"src/interfaces/IVaultFactory.sol\":{\"keccak256\":\"0x6f658b264fc8d530e458a98d83a09cb55ace4d3e509f0a3e9294471bb1bcf84d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a7253435e4e1d1ae19a50d14091ddb254f6a36f296440106bfc094623dd1aeba\",\"dweb:/ipfs/QmbHK9yoQ7Ctf3nuDLmqxTWPYD8cEm1TKXzfxePtE87AQN\"]},\"src/interfaces/common/IEntity.sol\":{\"keccak256\":\"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b\",\"dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv\"]},\"src/interfaces/common/IFactory.sol\":{\"keccak256\":\"0xe835ebda85d181b70874f6eb53f2a892aa3223d23efe247060da9b51d2b8e969\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://48b3dfb5f0491d90efbc8ed498b45358260ebac6e8f2aa0106b8b8fabdc988cb\",\"dweb:/ipfs/QmWnnCs3xiHeUvYfUWMJTSFZWc34bSYn9Zpm7f7syra3TA\"]},\"src/interfaces/common/IMigratableEntity.sol\":{\"keccak256\":\"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c\",\"dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds\"]},\"src/interfaces/common/IMigratableEntityProxy.sol\":{\"keccak256\":\"0x9030ced51ad12e0b3ddaa11bba4a3adcfa29e67b909c46065c14b19d158bb9fd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d859c21510d1a0f06a71abe21dc6424608c1b2e3194a10e4df4cc88c4de9e9f\",\"dweb:/ipfs/QmNi6Buri2oaujc4vTv6bZ5mgMKFsjUmYmQLUNaDCXFEEt\"]},\"src/interfaces/common/IMigratablesFactory.sol\":{\"keccak256\":\"0xd4dfe9449bf005dbcbab9e0e85eaaca15a601ff971f34182a0b1832dc4b9d124\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff8b73285192a9c64160b008d23a09da33e7164d10a9dc29d1a4464bd9c02be5\",\"dweb:/ipfs/QmZQW2LLV4dQfJ3coENKeycbzXJzi7zdvupsqWA4UV29Gq\"]},\"src/interfaces/common/IRegistry.sol\":{\"keccak256\":\"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014\",\"dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK\"]},\"src/interfaces/common/IStaticDelegateCallable.sol\":{\"keccak256\":\"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516\",\"dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi\"]},\"src/interfaces/delegator/IBaseDelegator.sol\":{\"keccak256\":\"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2\",\"dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8\"]},\"src/interfaces/service/INetworkMiddlewareService.sol\":{\"keccak256\":\"0x347afc7fcf1fbcdb96d66162070ef6c78aed27b3af2c1d5dfb4e511840631783\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d90b8ceb495159e8e4e95d76447719dd166443f67dfabdd942846162071595c\",\"dweb:/ipfs/QmVVuiAWYx92T6vBvNMKZfTvraCf1fa16BsUKkdNs3hdHA\"]},\"src/interfaces/slasher/IBaseSlasher.sol\":{\"keccak256\":\"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf\",\"dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx\"]},\"src/interfaces/slasher/IBurner.sol\":{\"keccak256\":\"0xaf495dacc19ae0b3c787ba8021c5944927d70261536addd234d7dab146158c2b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b3cc66251008be6ff9fc8b11ecc6831d5a9dca49a3fe9817fcd970253c1d447\",\"dweb:/ipfs/QmVxfb9ALGdF9W3SN2h41gQbUct6tawvu5bw4K89kFQ4HW\"]},\"src/interfaces/vault/IVault.sol\":{\"keccak256\":\"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9\",\"dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R\"]},\"src/interfaces/vault/IVaultStorage.sol\":{\"keccak256\":\"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e\",\"dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"vaultFactory","type":"address"},{"internalType":"address","name":"delegatorFactory","type":"address"},{"internalType":"address","name":"slasherFactory","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"stateMutability":"view","type":"function","name":"DELEGATOR_FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"SLASHER_FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VAULT_FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"struct IVaultConfigurator.InitParams","name":"params","type":"tuple","components":[{"internalType":"uint64","name":"version","type":"uint64"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"bytes","name":"vaultParams","type":"bytes"},{"internalType":"uint64","name":"delegatorIndex","type":"uint64"},{"internalType":"bytes","name":"delegatorParams","type":"bytes"},{"internalType":"bool","name":"withSlasher","type":"bool"},{"internalType":"uint64","name":"slasherIndex","type":"uint64"},{"internalType":"bytes","name":"slasherParams","type":"bytes"}]}],"stateMutability":"nonpayable","type":"function","name":"create","outputs":[{"internalType":"address","name":"vault","type":"address"},{"internalType":"address","name":"delegator","type":"address"},{"internalType":"address","name":"slasher","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"create((uint64,address,bytes,uint64,bytes,bool,uint64,bytes))":{"params":{"params":"initial parameters needed for a vault with a delegator and a slasher deployment"},"returns":{"delegator":"address of the delegator","slasher":"address of the slasher","vault":"address of the vault"}}},"version":1},"userdoc":{"kind":"user","methods":{"DELEGATOR_FACTORY()":{"notice":"Get the delegator factory's address."},"SLASHER_FACTORY()":{"notice":"Get the slasher factory's address."},"VAULT_FACTORY()":{"notice":"Get the vault factory's address."},"create((uint64,address,bytes,uint64,bytes,bool,uint64,bytes))":{"notice":"Create a new vault with a delegator and a slasher."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/VaultConfigurator.sol":"VaultConfigurator"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol":{"keccak256":"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74","urls":["bzz-raw://942dad22fbdc1669f025540ba63aa3ccfad5f8458fc5d4525b31ebf272e7af45","dweb:/ipfs/Qmdo4X2M82aM3AMoW2kf2jhYkSCyC4T1pHNd6obdsDFnAB"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8","urls":["bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45","dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41","urls":["bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26","dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/Clones.sol":{"keccak256":"0xd18408af8a91bedb3d56343eeb9b30eb852e6dea93a5e2d5c6db9ca4cb905155","urls":["bzz-raw://061475b7302a732dc598907790f407417551c2b13e89daa57b3698489ef5484b","dweb:/ipfs/QmdX5qmk3VSniSErFuD4aVawQxUi2MuUbP7spPcHddPfcX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol":{"keccak256":"0xbfb6695731de677140fbf76c772ab08c4233a122fb51ac28ac120fc49bbbc4ec","urls":["bzz-raw://68f8fded7cc318efa15874b7c6a983fe17a4a955d72d240353a9a4ca1e1b824c","dweb:/ipfs/QmdcmBL9Qo4Tk3Dby4wFYabGyot9JNeLPxpSXZUgUm92BV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol":{"keccak256":"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65","urls":["bzz-raw://547d21aa17f4f3f1a1a7edf7167beff8dd9496a0348d5588f15cc8a4b29d052a","dweb:/ipfs/QmT16JtRQSWNpLo9W23jr6CzaMuTAcQcjJJcdRd8HLJ6cE"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol":{"keccak256":"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd","urls":["bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac","dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c","urls":["bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa","dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70","urls":["bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c","dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff","urls":["bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d","dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386","urls":["bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0","dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721","urls":["bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245","dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418","urls":["bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c","dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe","urls":["bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c","dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol":{"keccak256":"0xbdc5e074d7dd6678f67e92b1a51a20226801a407b0e1af3da367c5d1ff4519ad","urls":["bzz-raw://a36cca6b22fff3db16fc789ff6c60eea71d4b156065d4d0c83a0bc5e91a77a8b","dweb:/ipfs/QmYN3exd5AemxjBrN8XMB1p5LbbE16uC3sjbYjwi8AjcGR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol":{"keccak256":"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa","urls":["bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1","dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0xc7755af115020049e4140f224f9ee88d7e1799ffb0646f37bf0df24bf6213f58","urls":["bzz-raw://7f09bf94d5274334ec021f61a04659db303f31e60460e14b709c9bf187740111","dweb:/ipfs/QmNvgomZYUwFAt4cZbPWAiTeSZQreGehY9BK5xyVJsUttb"],"license":"MIT"},"src/contracts/DelegatorFactory.sol":{"keccak256":"0x3c3fb62c441302f4f75d94703779f5c4bb755c06f310b4c923dbf24d6e0adda9","urls":["bzz-raw://597fa8be7179d8a555bf942c1dea0504273a1d34f6ac4c206fc2e816da143e68","dweb:/ipfs/Qmf54DKNYXC7fTMcAFABw68RC6ZFenVgyAPGhbPTf6s5TR"],"license":"BUSL-1.1"},"src/contracts/SlasherFactory.sol":{"keccak256":"0xbafc96e3d2511eb62942613645b4f5cbf6f603063a711b30e25940aaba08064c","urls":["bzz-raw://489440f1181b1858e3b27a90ec6f514c0c287c602b4779676048213202165867","dweb:/ipfs/QmRG7AQ9m9qHr8ofEvP1Ur8S379fFXTo9rmiWaAtZ9rsUc"],"license":"BUSL-1.1"},"src/contracts/VaultConfigurator.sol":{"keccak256":"0x2484ee5cfac134e27cedeeef22d4111d7ecd4a4b62f02381f2c2b67c57ed7955","urls":["bzz-raw://adce2d9b8a9fb670c0f3266d5407b752901921f1c9f9406c7db65d84e48e779a","dweb:/ipfs/QmTbcKhdGfepqexFc8kziqPdfFC8SGZzFrVnEcJ5nKBiPz"],"license":"BUSL-1.1"},"src/contracts/VaultFactory.sol":{"keccak256":"0xa9122dd11e5f21fa97a813e90f8c4905f0a4967b9611dd03437a31377cbdecb8","urls":["bzz-raw://4c2feda1f9c0c7ddf65bccdc99494e4bfbb820fcddc3e4222e3b58ef821424a3","dweb:/ipfs/Qmdmt4rH214jDmDsF9ELvJXVCt8abhk6poSmhJqqzLse3R"],"license":"BUSL-1.1"},"src/contracts/common/Entity.sol":{"keccak256":"0x3d61a932995b8443381f3950542d388223a2c26dd5d29a3274dea3baa7388bd7","urls":["bzz-raw://7cdf5f03ca72fd263fd32ff59c8d88ddca911ae83896a287d10772c1bbe9b138","dweb:/ipfs/QmbP84r5BWT1Rn9AYTntWSf3xUMTTCohTZJFhbBhDXFoHa"],"license":"BUSL-1.1"},"src/contracts/common/Factory.sol":{"keccak256":"0x41764643e6a2a3d80d694a3efee91f50a2fd084fb2bcd13566259443840e6369","urls":["bzz-raw://fefc1e2a2189275388826f4f82ca421ca79c2866d3ef39dc2c7df46fe7cbf7c9","dweb:/ipfs/QmSJ4VGmgpYUv5ni4ZYoSV4qMuZrk5DLjyB3Vv9NbFgeNZ"],"license":"BUSL-1.1"},"src/contracts/common/MigratableEntity.sol":{"keccak256":"0x2d736f4dacd5d7e7697503bc426c78b8250fe1694ca157965ec178da6807de58","urls":["bzz-raw://f1237acf96b4b9f9b69156e068eddd726a6e15bd8e87a18dc999cd4ba4da069c","dweb:/ipfs/QmS6M8fiFFSeuJ4ZKKq1z8W7w4ybeHQSy5TLASGoc1LVic"],"license":"BUSL-1.1"},"src/contracts/common/MigratableEntityProxy.sol":{"keccak256":"0x78ba27242276232ad10a45265e3c07f0a25722456f6abb3fb3f24a1c8e1b38d1","urls":["bzz-raw://a19623df688e5085036b59fc934e35b72997f875d7ffda1cdc557c6ca468206d","dweb:/ipfs/QmaQiT5uYZu5JmqhMjTDJnsq3nqaHbKrWAjrxKKLesdHV7"],"license":"BUSL-1.1"},"src/contracts/common/MigratablesFactory.sol":{"keccak256":"0x5d1487c3456da4bd0bc2a131eeab97ab92484c923edefaebf190cc08d4080093","urls":["bzz-raw://fec38d2e52e9c5148e95599c133fd6fe66d41296d6fc06e7329d2db199a1798f","dweb:/ipfs/QmeiaydBXHHkJRUnpaZH1C6JQ7HPocTvQbUJBqKTvUeEYv"],"license":"BUSL-1.1"},"src/contracts/common/Registry.sol":{"keccak256":"0x4a4004836d920953a8ec6e223de9a330f43acf7a5b93c6b8b3e4a95e0f129889","urls":["bzz-raw://e8bdda207f3852c683a2b481602239a914f7e26bcd042ade618e263a43b67652","dweb:/ipfs/Qmb8GZykJWxZcfwNp3SqhFizDFydFuV6LXgemV3vnWyLyu"],"license":"BUSL-1.1"},"src/contracts/common/StaticDelegateCallable.sol":{"keccak256":"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90","urls":["bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764","dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD"],"license":"BUSL-1.1"},"src/contracts/libraries/Checkpoints.sol":{"keccak256":"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c","urls":["bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609","dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE"],"license":"MIT"},"src/contracts/libraries/ERC4626Math.sol":{"keccak256":"0x8441160513c1cbeb1c3b9ee077bcc7e7ce20006b52a77c8dd39ff0ef89699939","urls":["bzz-raw://943f8cc3e26ddf649f465f40c909819f5c864717c4baa339e9e403b9374a4653","dweb:/ipfs/QmXPxi1sUDsrGprZdUgCzoPEosaZMv9ZhygWQ1vAi1phAB"],"license":"MIT"},"src/contracts/libraries/Subnetwork.sol":{"keccak256":"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe","urls":["bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56","dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32"],"license":"MIT"},"src/contracts/slasher/BaseSlasher.sol":{"keccak256":"0x190e5dce196a061bdad42468c52e9f5b0eb7810cd7d0c19f04d6a2e94984f1b6","urls":["bzz-raw://07ca08d0cd43c2fe5d54a5577f6bdd522ced410f5d3a52e764deaa7ba26b5f06","dweb:/ipfs/QmZe3PiMKBQKWcwodaLupragdqxPjgS4v1qMC7RXau8hDF"],"license":"BUSL-1.1"},"src/contracts/vault/Vault.sol":{"keccak256":"0x2ceff6ed3298c4cad144c99fcc79b51cb9397d6ebef00285b915848b476f8c2e","urls":["bzz-raw://11f2fb3581854f3ab6e82e8d4935d9eb510c903a13c3f022346c2956a58f5307","dweb:/ipfs/QmdUnoXoyYoG9SGWyQZCFyLDRUUX3eXyXetkRvw6jxqqBz"],"license":"BUSL-1.1"},"src/contracts/vault/VaultStorage.sol":{"keccak256":"0x57db25b127d77ea3472de53e3a4af3354399655b9268638b99ca5925fa364a56","urls":["bzz-raw://aa763d9a6ec508ae3abfb8228b72b9fd9525279e5135d4962e79ff059feb1173","dweb:/ipfs/QmcbDR6E9wyEpu6V2FkEC4hnWy47zXA9LSKJde6zSGd33Q"],"license":"BUSL-1.1"},"src/interfaces/IDelegatorFactory.sol":{"keccak256":"0x7850453237ca93b301393506d2489a38830a60be0c29f39a4a1aee3508d836e6","urls":["bzz-raw://8f418702b883c90e046af92d5654a25849baf79b61c11401ad603b861fed7b80","dweb:/ipfs/Qmdju1XFJXx3uJidzoS7srcoSnzT8jUoPAmGEdbceYgB7j"],"license":"MIT"},"src/interfaces/ISlasherFactory.sol":{"keccak256":"0x30018af5c2719d9b5cfacbfc0277017896815b3fcc4dfbea78813e6ae81c1e56","urls":["bzz-raw://5e028fbed23ab973d8d9eb2be4e53a528dd01248e3233f56ab0f8ac9a7c9c220","dweb:/ipfs/Qmd9cHMRSE52ESmxMiu5gTBpRNmDHQK5q18f7UTj8DQke4"],"license":"MIT"},"src/interfaces/IVaultConfigurator.sol":{"keccak256":"0x699d9b8c767780c4ea593fe7608bc0b3ef7646f54cea0610ae355f2974658eba","urls":["bzz-raw://9ac4081f36b477025213f59c489cbb85f904580b145fa9f18ef9a7b794f0fba2","dweb:/ipfs/QmPE3Ep6pTdaeFsJoixeom3NEaQiTe8WHrLoiFEGJo1zx4"],"license":"MIT"},"src/interfaces/IVaultFactory.sol":{"keccak256":"0x6f658b264fc8d530e458a98d83a09cb55ace4d3e509f0a3e9294471bb1bcf84d","urls":["bzz-raw://a7253435e4e1d1ae19a50d14091ddb254f6a36f296440106bfc094623dd1aeba","dweb:/ipfs/QmbHK9yoQ7Ctf3nuDLmqxTWPYD8cEm1TKXzfxePtE87AQN"],"license":"MIT"},"src/interfaces/common/IEntity.sol":{"keccak256":"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21","urls":["bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b","dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv"],"license":"MIT"},"src/interfaces/common/IFactory.sol":{"keccak256":"0xe835ebda85d181b70874f6eb53f2a892aa3223d23efe247060da9b51d2b8e969","urls":["bzz-raw://48b3dfb5f0491d90efbc8ed498b45358260ebac6e8f2aa0106b8b8fabdc988cb","dweb:/ipfs/QmWnnCs3xiHeUvYfUWMJTSFZWc34bSYn9Zpm7f7syra3TA"],"license":"MIT"},"src/interfaces/common/IMigratableEntity.sol":{"keccak256":"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4","urls":["bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c","dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds"],"license":"MIT"},"src/interfaces/common/IMigratableEntityProxy.sol":{"keccak256":"0x9030ced51ad12e0b3ddaa11bba4a3adcfa29e67b909c46065c14b19d158bb9fd","urls":["bzz-raw://2d859c21510d1a0f06a71abe21dc6424608c1b2e3194a10e4df4cc88c4de9e9f","dweb:/ipfs/QmNi6Buri2oaujc4vTv6bZ5mgMKFsjUmYmQLUNaDCXFEEt"],"license":"MIT"},"src/interfaces/common/IMigratablesFactory.sol":{"keccak256":"0xd4dfe9449bf005dbcbab9e0e85eaaca15a601ff971f34182a0b1832dc4b9d124","urls":["bzz-raw://ff8b73285192a9c64160b008d23a09da33e7164d10a9dc29d1a4464bd9c02be5","dweb:/ipfs/QmZQW2LLV4dQfJ3coENKeycbzXJzi7zdvupsqWA4UV29Gq"],"license":"MIT"},"src/interfaces/common/IRegistry.sol":{"keccak256":"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb","urls":["bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014","dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK"],"license":"MIT"},"src/interfaces/common/IStaticDelegateCallable.sol":{"keccak256":"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5","urls":["bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516","dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi"],"license":"MIT"},"src/interfaces/delegator/IBaseDelegator.sol":{"keccak256":"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee","urls":["bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2","dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8"],"license":"MIT"},"src/interfaces/service/INetworkMiddlewareService.sol":{"keccak256":"0x347afc7fcf1fbcdb96d66162070ef6c78aed27b3af2c1d5dfb4e511840631783","urls":["bzz-raw://2d90b8ceb495159e8e4e95d76447719dd166443f67dfabdd942846162071595c","dweb:/ipfs/QmVVuiAWYx92T6vBvNMKZfTvraCf1fa16BsUKkdNs3hdHA"],"license":"MIT"},"src/interfaces/slasher/IBaseSlasher.sol":{"keccak256":"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404","urls":["bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf","dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx"],"license":"MIT"},"src/interfaces/slasher/IBurner.sol":{"keccak256":"0xaf495dacc19ae0b3c787ba8021c5944927d70261536addd234d7dab146158c2b","urls":["bzz-raw://9b3cc66251008be6ff9fc8b11ecc6831d5a9dca49a3fe9817fcd970253c1d447","dweb:/ipfs/QmVxfb9ALGdF9W3SN2h41gQbUct6tawvu5bw4K89kFQ4HW"],"license":"MIT"},"src/interfaces/vault/IVault.sol":{"keccak256":"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235","urls":["bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9","dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R"],"license":"MIT"},"src/interfaces/vault/IVaultStorage.sol":{"keccak256":"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22","urls":["bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e","dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6"],"license":"MIT"}},"version":1},"id":67} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[{"name":"vaultFactory","type":"address","internalType":"address"},{"name":"delegatorFactory","type":"address","internalType":"address"},{"name":"slasherFactory","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"DELEGATOR_FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"SLASHER_FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"VAULT_FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"create","inputs":[{"name":"params","type":"tuple","internalType":"struct IVaultConfigurator.InitParams","components":[{"name":"version","type":"uint64","internalType":"uint64"},{"name":"owner","type":"address","internalType":"address"},{"name":"vaultParams","type":"bytes","internalType":"bytes"},{"name":"delegatorIndex","type":"uint64","internalType":"uint64"},{"name":"delegatorParams","type":"bytes","internalType":"bytes"},{"name":"withSlasher","type":"bool","internalType":"bool"},{"name":"slasherIndex","type":"uint64","internalType":"uint64"},{"name":"slasherParams","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"vault","type":"address","internalType":"address"},{"name":"delegator","type":"address","internalType":"address"},{"name":"slasher","type":"address","internalType":"address"}],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x60e0346100a957601f61078338819003918201601f19168301916001600160401b038311848410176100ad578084926060946040528339810103126100a957610047816100c1565b906100606040610059602084016100c1565b92016100c1565b9160805260a05260c0526040516106ad90816100d682396080518181816101aa015261050a015260a05181818161023301526104c9015260c05181818161038201526104860152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036100a95756fe60806040818152600480361015610014575f80fd5b5f925f3560e01c908163103f2907146104f8575080636da3e06d146104b557806387df0788146104725763c48927e41461004c575f80fd5b346103385760031991602036840181136103385782359067ffffffffffffffff9485831161033857610100809184360301126103385783519081018181108782111761045f57845261009f838601610583565b81526001600160a01b039560248401358781168103610338578383019081526044850135828111610338576100d990883691880101610598565b918684019283526100ec60648701610583565b956060850196875260848101358281116103385761010f908a3691840101610598565b966080860197885260a48201359081151582036103385760a0870191825261013960c48401610583565b9260c0880193845260e481013596858811610338578d8d975f6101648f9b958b8f9736920101610598565b9960e08d019a8b526101a6848b849f511694511695519c519c8d9687958694633ac0491160e01b8652850152602484015260606044840152606483019061060d565b03927f0000000000000000000000000000000000000000000000000000000000000000165af19586156104555791888d8c95938e97955f9a61042e575b50908561022f9251169c515f8b6102008a51938492888401610631565b0398610214601f199a8b8101855284610561565b519e8f94859384926319a211df60e31b9d8e85528401610656565b03927f0000000000000000000000000000000000000000000000000000000000000000165af1998a1561042457908d979695949392915f9b6103f9575b50908995949392915161033c575b5050505050501695863b156103385784516383cd9cc360e01b8152938116868501819052935f81602481838c5af1801561032e5761031b575b50863b1561031757845163555e124b60e11b815291169481018590528681602481838a5af1801561030d576102f5575b50606095508251948552840152820152f35b6102ff8791610539565b61030957856102e3565b8580fd5b84513d89823e3d90fd5b8780fd5b610326919850610539565b5f965f6102b3565b86513d5f823e3d90fd5b5f80fd5b61036893949596985061035c9750511693518a5196879189888401610631565b03908101865285610561565b61037c8851948593849384528b8401610656565b03815f8b7f0000000000000000000000000000000000000000000000000000000000000000165af19081156103ef579087915f916103c2575b5091835f8080808061027a565b6103e29150843d86116103e8575b6103da8183610561565b8101906105ee565b5f6103b5565b503d6103d0565b85513d5f823e3d90fd5b8a9695949392919b5061041890873d89116103e8576103da8183610561565b9a90919293949561026c565b8b513d5f823e3d90fd5b61022f92919a5061044c8791853d87116103e8576103da8183610561565b9a9192506101e3565b8a513d5f823e3d90fd5b604186634e487b7160e01b5f525260245ffd5b8234610338575f36600319011261033857517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b8234610338575f36600319011261033857517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610338575f366003190112610338577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b67ffffffffffffffff811161054d57604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff82111761054d57604052565b359067ffffffffffffffff8216820361033857565b81601f820112156103385780359067ffffffffffffffff821161054d57604051926105cd601f8401601f191660200185610561565b8284526020838301011161033857815f926020809301838601378301015290565b9081602091031261033857516001600160a01b03811681036103385790565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b6001600160a01b0390911681526040602082018190526106539291019061060d565b90565b60409067ffffffffffffffff6106539493168152816020820152019061060d56fea264697066735822122060d3c9df75a621c4d113c39e4aac4a8c1382fc5d24821f7e1bbe3e7376d34ad564736f6c63430008190033","sourceMap":"392:1286:74:-:0;;;;;;;;;;;;;-1:-1:-1;;392:1286:74;;;;-1:-1:-1;;;;;392:1286:74;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;844:28;;;882:36;;928:32;;392:1286;;;;;;;;844:28;392:1286;;;;;;;;;;882:36;392:1286;;;;;;;;;;928:32;392:1286;;;;;;;;;;;;-1:-1:-1;392:1286:74;;;;;;-1:-1:-1;392:1286:74;;;;;-1:-1:-1;392:1286:74;;;;-1:-1:-1;;;;;392:1286:74;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x60806040818152600480361015610014575f80fd5b5f925f3560e01c908163103f2907146104f8575080636da3e06d146104b557806387df0788146104725763c48927e41461004c575f80fd5b346103385760031991602036840181136103385782359067ffffffffffffffff9485831161033857610100809184360301126103385783519081018181108782111761045f57845261009f838601610583565b81526001600160a01b039560248401358781168103610338578383019081526044850135828111610338576100d990883691880101610598565b918684019283526100ec60648701610583565b956060850196875260848101358281116103385761010f908a3691840101610598565b966080860197885260a48201359081151582036103385760a0870191825261013960c48401610583565b9260c0880193845260e481013596858811610338578d8d975f6101648f9b958b8f9736920101610598565b9960e08d019a8b526101a6848b849f511694511695519c519c8d9687958694633ac0491160e01b8652850152602484015260606044840152606483019061060d565b03927f0000000000000000000000000000000000000000000000000000000000000000165af19586156104555791888d8c95938e97955f9a61042e575b50908561022f9251169c515f8b6102008a51938492888401610631565b0398610214601f199a8b8101855284610561565b519e8f94859384926319a211df60e31b9d8e85528401610656565b03927f0000000000000000000000000000000000000000000000000000000000000000165af1998a1561042457908d979695949392915f9b6103f9575b50908995949392915161033c575b5050505050501695863b156103385784516383cd9cc360e01b8152938116868501819052935f81602481838c5af1801561032e5761031b575b50863b1561031757845163555e124b60e11b815291169481018590528681602481838a5af1801561030d576102f5575b50606095508251948552840152820152f35b6102ff8791610539565b61030957856102e3565b8580fd5b84513d89823e3d90fd5b8780fd5b610326919850610539565b5f965f6102b3565b86513d5f823e3d90fd5b5f80fd5b61036893949596985061035c9750511693518a5196879189888401610631565b03908101865285610561565b61037c8851948593849384528b8401610656565b03815f8b7f0000000000000000000000000000000000000000000000000000000000000000165af19081156103ef579087915f916103c2575b5091835f8080808061027a565b6103e29150843d86116103e8575b6103da8183610561565b8101906105ee565b5f6103b5565b503d6103d0565b85513d5f823e3d90fd5b8a9695949392919b5061041890873d89116103e8576103da8183610561565b9a90919293949561026c565b8b513d5f823e3d90fd5b61022f92919a5061044c8791853d87116103e8576103da8183610561565b9a9192506101e3565b8a513d5f823e3d90fd5b604186634e487b7160e01b5f525260245ffd5b8234610338575f36600319011261033857517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b8234610338575f36600319011261033857517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610338575f366003190112610338577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b67ffffffffffffffff811161054d57604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff82111761054d57604052565b359067ffffffffffffffff8216820361033857565b81601f820112156103385780359067ffffffffffffffff821161054d57604051926105cd601f8401601f191660200185610561565b8284526020838301011161033857815f926020809301838601378301015290565b9081602091031261033857516001600160a01b03811681036103385790565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b6001600160a01b0390911681526040602082018190526106539291019061060d565b90565b60409067ffffffffffffffff6106539493168152816020820152019061060d56fea264697066735822122060d3c9df75a621c4d113c39e4aac4a8c1382fc5d24821f7e1bbe3e7376d34ad564736f6c63430008190033","sourceMap":"392:1286:74:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;392:1286:74;;;;;;-1:-1:-1;392:1286:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;392:1286:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;1133:15;;;392:1286;;;;;;1233:18;;392:1286;;;;;;;;;;;;1168:84;;;;392:1286;;;;;;;;;;;;;;;:::i;:::-;1168:84;1181:13;;392:1286;1168:84;;;;;;;;;;;;;;;;392:1286;1168:84;;;392:1286;;;;1287:108;392:1286;;;1371:22;;392:1286;;1353:41;392:1286;;1353:41;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;392:1286;;;;;;;;;;;1287:108;;;;;;;:::i;:::-;;1304:17;;392:1286;1287:108;;;;;;;;;;;;;;;;392:1286;1287:108;;;392:1286;;;;;;;;;;1406:175;;392:1286;;;;;;;;1591:36;;;;;;392:1286;;-1:-1:-1;;;1591:36:74;;392:1286;;;1591:36;;;392:1286;;;;;;;;;1591:36;;;;;;;;;392:1286;1637:32;;;;;;392:1286;;-1:-1:-1;;;1637:32:74;;392:1286;;1637:32;;;392:1286;;;1637:32;392:1286;;;1637:32;;;;;;;;;;392:1286;;;;;;;;;;;;;;;;;1637:32;;;;;:::i;:::-;392:1286;;1637:32;;;392:1286;;;;1637:32;392:1286;;;;;;;;;1637:32;392:1286;;;1591:36;;;;;;:::i;:::-;392:1286;1591:36;;;;;392:1286;;;;;;;;;1591:36;392:1286;;;1406:175;1530:39;392:1286;;;;;;1530:39;392:1286;;;;1548:20;;392:1286;;1530:39;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;1470:100;392:1286;;1470:100;;;;;;;;;;;:::i;:::-;;1485:15;392:1286;1485:15;;392:1286;1470:100;;;;;;;;;;392:1286;1470:100;;;1406:175;1444:126;1406:175;;;;;;;;;1470:100;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;392:1286;;;;;;;;;1287:108;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;392:1286;;;;;;;;;1168:84;1287:108;1168:84;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;392:1286;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;392:1286:74;;;;;703:40;-1:-1:-1;;;;;392:1286:74;;;;;;;;;;;;;-1:-1:-1;;392:1286:74;;;;;600:42;-1:-1:-1;;;;;392:1286:74;;;;;;;;;;;;-1:-1:-1;;392:1286:74;;;;501:38;-1:-1:-1;;;;;392:1286:74;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;1353:41;;392:1286;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;1353:41;392:1286;;-1:-1:-1;;392:1286:74;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;392:1286:74;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;392:1286:74;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;392:1286:74;;;;;;;;-1:-1:-1;;392:1286:74;;;;:::o;:::-;-1:-1:-1;;;;;392:1286:74;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i","linkReferences":{},"immutableReferences":{"56458":[{"start":426,"length":32},{"start":1290,"length":32}],"56461":[{"start":563,"length":32},{"start":1225,"length":32}],"56464":[{"start":898,"length":32},{"start":1158,"length":32}]}},"methodIdentifiers":{"DELEGATOR_FACTORY()":"6da3e06d","SLASHER_FACTORY()":"87df0788","VAULT_FACTORY()":"103f2907","create((uint64,address,bytes,uint64,bytes,bool,uint64,bytes))":"c48927e4"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vaultFactory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegatorFactory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"slasherFactory\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"DELEGATOR_FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SLASHER_FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VAULT_FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"vaultParams\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"delegatorIndex\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"delegatorParams\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"withSlasher\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"slasherIndex\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"slasherParams\",\"type\":\"bytes\"}],\"internalType\":\"struct IVaultConfigurator.InitParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"create\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"slasher\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"create((uint64,address,bytes,uint64,bytes,bool,uint64,bytes))\":{\"params\":{\"params\":\"initial parameters needed for a vault with a delegator and a slasher deployment\"},\"returns\":{\"delegator\":\"address of the delegator\",\"slasher\":\"address of the slasher\",\"vault\":\"address of the vault\"}}},\"stateVariables\":{\"DELEGATOR_FACTORY\":{\"return\":\"address of the delegator factory\",\"returns\":{\"_0\":\"address of the delegator factory\"}},\"SLASHER_FACTORY\":{\"return\":\"address of the slasher factory\",\"returns\":{\"_0\":\"address of the slasher factory\"}},\"VAULT_FACTORY\":{\"return\":\"address of the vault factory\",\"returns\":{\"_0\":\"address of the vault factory\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DELEGATOR_FACTORY()\":{\"notice\":\"Get the delegator factory's address.\"},\"SLASHER_FACTORY()\":{\"notice\":\"Get the slasher factory's address.\"},\"VAULT_FACTORY()\":{\"notice\":\"Get the vault factory's address.\"},\"create((uint64,address,bytes,uint64,bytes,bool,uint64,bytes))\":{\"notice\":\"Create a new vault with a delegator and a slasher.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/VaultConfigurator.sol\":\"VaultConfigurator\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf\",\"dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89\",\"dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1\",\"dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d\",\"dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/proxy/Clones.sol\":{\"keccak256\":\"0xf55d01dac75cffdabec6833a79bf3be0c108fc0db10e273daf7adfd3e9e59dae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://540002a50a2a1a2b9dafffb976178e55adbf8d3a28db462c69f996921479c6b0\",\"dweb:/ipfs/QmQNAFyMf2FW3U1giM4Yej3zzd1pnxMtAA5GoADj4hTYYD\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"keccak256\":\"0x0a8a5b994d4c4da9f61d128945cc8c9e60dcbc72bf532f72ae42a48ea90eed9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e63ae15b6b1079b9d3c73913424d4278139f9e9c9658316675b9c48d5883a50d\",\"dweb:/ipfs/QmWLxBYfp8j1YjNMabWgv75ELTaK2eEYEEGx7qsJbxVZZq\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x911c3346ee26afe188f3b9dc267ef62a7ccf940aba1afa963e3922f0ca3d8a06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04539f4419e44a831807d7203375d2bc6a733da256efd02e51290f5d5015218c\",\"dweb:/ipfs/QmPZ97gsAAgaMRPiE2WJfkzRsudQnW5tPAvMgGj1jcTJtR\"]},\"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44\",\"dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f\",\"dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6\",\"dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza\"]},\"src/contracts/DelegatorFactory.sol\":{\"keccak256\":\"0x3c3fb62c441302f4f75d94703779f5c4bb755c06f310b4c923dbf24d6e0adda9\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://597fa8be7179d8a555bf942c1dea0504273a1d34f6ac4c206fc2e816da143e68\",\"dweb:/ipfs/Qmf54DKNYXC7fTMcAFABw68RC6ZFenVgyAPGhbPTf6s5TR\"]},\"src/contracts/SlasherFactory.sol\":{\"keccak256\":\"0xbafc96e3d2511eb62942613645b4f5cbf6f603063a711b30e25940aaba08064c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://489440f1181b1858e3b27a90ec6f514c0c287c602b4779676048213202165867\",\"dweb:/ipfs/QmRG7AQ9m9qHr8ofEvP1Ur8S379fFXTo9rmiWaAtZ9rsUc\"]},\"src/contracts/VaultConfigurator.sol\":{\"keccak256\":\"0x2484ee5cfac134e27cedeeef22d4111d7ecd4a4b62f02381f2c2b67c57ed7955\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://adce2d9b8a9fb670c0f3266d5407b752901921f1c9f9406c7db65d84e48e779a\",\"dweb:/ipfs/QmTbcKhdGfepqexFc8kziqPdfFC8SGZzFrVnEcJ5nKBiPz\"]},\"src/contracts/VaultFactory.sol\":{\"keccak256\":\"0xa9122dd11e5f21fa97a813e90f8c4905f0a4967b9611dd03437a31377cbdecb8\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://4c2feda1f9c0c7ddf65bccdc99494e4bfbb820fcddc3e4222e3b58ef821424a3\",\"dweb:/ipfs/Qmdmt4rH214jDmDsF9ELvJXVCt8abhk6poSmhJqqzLse3R\"]},\"src/contracts/common/Entity.sol\":{\"keccak256\":\"0x3d61a932995b8443381f3950542d388223a2c26dd5d29a3274dea3baa7388bd7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7cdf5f03ca72fd263fd32ff59c8d88ddca911ae83896a287d10772c1bbe9b138\",\"dweb:/ipfs/QmbP84r5BWT1Rn9AYTntWSf3xUMTTCohTZJFhbBhDXFoHa\"]},\"src/contracts/common/Factory.sol\":{\"keccak256\":\"0x41764643e6a2a3d80d694a3efee91f50a2fd084fb2bcd13566259443840e6369\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://fefc1e2a2189275388826f4f82ca421ca79c2866d3ef39dc2c7df46fe7cbf7c9\",\"dweb:/ipfs/QmSJ4VGmgpYUv5ni4ZYoSV4qMuZrk5DLjyB3Vv9NbFgeNZ\"]},\"src/contracts/common/MigratableEntity.sol\":{\"keccak256\":\"0x303ad40a3de8fa808cc30a6fbd5998633f6a89b982e6db1fa981e0566ab445e7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://fa8fb92995ead02798e013190b87b84b44cc68668262f045c9b0b4783940e2bf\",\"dweb:/ipfs/QmV1uKGVLKwWisc714R8fCt71gXUQJpaKvdc6LQ8WtvMpL\"]},\"src/contracts/common/MigratableEntityProxy.sol\":{\"keccak256\":\"0x78ba27242276232ad10a45265e3c07f0a25722456f6abb3fb3f24a1c8e1b38d1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://a19623df688e5085036b59fc934e35b72997f875d7ffda1cdc557c6ca468206d\",\"dweb:/ipfs/QmaQiT5uYZu5JmqhMjTDJnsq3nqaHbKrWAjrxKKLesdHV7\"]},\"src/contracts/common/MigratablesFactory.sol\":{\"keccak256\":\"0x5d1487c3456da4bd0bc2a131eeab97ab92484c923edefaebf190cc08d4080093\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://fec38d2e52e9c5148e95599c133fd6fe66d41296d6fc06e7329d2db199a1798f\",\"dweb:/ipfs/QmeiaydBXHHkJRUnpaZH1C6JQ7HPocTvQbUJBqKTvUeEYv\"]},\"src/contracts/common/Registry.sol\":{\"keccak256\":\"0x4a4004836d920953a8ec6e223de9a330f43acf7a5b93c6b8b3e4a95e0f129889\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://e8bdda207f3852c683a2b481602239a914f7e26bcd042ade618e263a43b67652\",\"dweb:/ipfs/Qmb8GZykJWxZcfwNp3SqhFizDFydFuV6LXgemV3vnWyLyu\"]},\"src/contracts/common/StaticDelegateCallable.sol\":{\"keccak256\":\"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764\",\"dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD\"]},\"src/contracts/libraries/Checkpoints.sol\":{\"keccak256\":\"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609\",\"dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE\"]},\"src/contracts/libraries/ERC4626Math.sol\":{\"keccak256\":\"0x8441160513c1cbeb1c3b9ee077bcc7e7ce20006b52a77c8dd39ff0ef89699939\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://943f8cc3e26ddf649f465f40c909819f5c864717c4baa339e9e403b9374a4653\",\"dweb:/ipfs/QmXPxi1sUDsrGprZdUgCzoPEosaZMv9ZhygWQ1vAi1phAB\"]},\"src/contracts/libraries/Subnetwork.sol\":{\"keccak256\":\"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56\",\"dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32\"]},\"src/contracts/slasher/BaseSlasher.sol\":{\"keccak256\":\"0x190e5dce196a061bdad42468c52e9f5b0eb7810cd7d0c19f04d6a2e94984f1b6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://07ca08d0cd43c2fe5d54a5577f6bdd522ced410f5d3a52e764deaa7ba26b5f06\",\"dweb:/ipfs/QmZe3PiMKBQKWcwodaLupragdqxPjgS4v1qMC7RXau8hDF\"]},\"src/contracts/vault/Vault.sol\":{\"keccak256\":\"0x7ee6dbf060c45d6eba95315f4ac0b3b467dd9c4999b84c31d6f66d4d8b53a116\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://301948b8ea522db292aa2722ba42def3911dae95f0b376f7023c3fef470f8676\",\"dweb:/ipfs/QmSDbP2HdzhDAzstr8Zz5isEAcSkma8ABc5UwPsoazaumZ\"]},\"src/contracts/vault/VaultStorage.sol\":{\"keccak256\":\"0x57db25b127d77ea3472de53e3a4af3354399655b9268638b99ca5925fa364a56\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://aa763d9a6ec508ae3abfb8228b72b9fd9525279e5135d4962e79ff059feb1173\",\"dweb:/ipfs/QmcbDR6E9wyEpu6V2FkEC4hnWy47zXA9LSKJde6zSGd33Q\"]},\"src/interfaces/IDelegatorFactory.sol\":{\"keccak256\":\"0x7850453237ca93b301393506d2489a38830a60be0c29f39a4a1aee3508d836e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8f418702b883c90e046af92d5654a25849baf79b61c11401ad603b861fed7b80\",\"dweb:/ipfs/Qmdju1XFJXx3uJidzoS7srcoSnzT8jUoPAmGEdbceYgB7j\"]},\"src/interfaces/ISlasherFactory.sol\":{\"keccak256\":\"0x30018af5c2719d9b5cfacbfc0277017896815b3fcc4dfbea78813e6ae81c1e56\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5e028fbed23ab973d8d9eb2be4e53a528dd01248e3233f56ab0f8ac9a7c9c220\",\"dweb:/ipfs/Qmd9cHMRSE52ESmxMiu5gTBpRNmDHQK5q18f7UTj8DQke4\"]},\"src/interfaces/IVaultConfigurator.sol\":{\"keccak256\":\"0x699d9b8c767780c4ea593fe7608bc0b3ef7646f54cea0610ae355f2974658eba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ac4081f36b477025213f59c489cbb85f904580b145fa9f18ef9a7b794f0fba2\",\"dweb:/ipfs/QmPE3Ep6pTdaeFsJoixeom3NEaQiTe8WHrLoiFEGJo1zx4\"]},\"src/interfaces/IVaultFactory.sol\":{\"keccak256\":\"0x6f658b264fc8d530e458a98d83a09cb55ace4d3e509f0a3e9294471bb1bcf84d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a7253435e4e1d1ae19a50d14091ddb254f6a36f296440106bfc094623dd1aeba\",\"dweb:/ipfs/QmbHK9yoQ7Ctf3nuDLmqxTWPYD8cEm1TKXzfxePtE87AQN\"]},\"src/interfaces/common/IEntity.sol\":{\"keccak256\":\"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b\",\"dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv\"]},\"src/interfaces/common/IFactory.sol\":{\"keccak256\":\"0xe835ebda85d181b70874f6eb53f2a892aa3223d23efe247060da9b51d2b8e969\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://48b3dfb5f0491d90efbc8ed498b45358260ebac6e8f2aa0106b8b8fabdc988cb\",\"dweb:/ipfs/QmWnnCs3xiHeUvYfUWMJTSFZWc34bSYn9Zpm7f7syra3TA\"]},\"src/interfaces/common/IMigratableEntity.sol\":{\"keccak256\":\"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c\",\"dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds\"]},\"src/interfaces/common/IMigratableEntityProxy.sol\":{\"keccak256\":\"0x9030ced51ad12e0b3ddaa11bba4a3adcfa29e67b909c46065c14b19d158bb9fd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d859c21510d1a0f06a71abe21dc6424608c1b2e3194a10e4df4cc88c4de9e9f\",\"dweb:/ipfs/QmNi6Buri2oaujc4vTv6bZ5mgMKFsjUmYmQLUNaDCXFEEt\"]},\"src/interfaces/common/IMigratablesFactory.sol\":{\"keccak256\":\"0xd4dfe9449bf005dbcbab9e0e85eaaca15a601ff971f34182a0b1832dc4b9d124\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff8b73285192a9c64160b008d23a09da33e7164d10a9dc29d1a4464bd9c02be5\",\"dweb:/ipfs/QmZQW2LLV4dQfJ3coENKeycbzXJzi7zdvupsqWA4UV29Gq\"]},\"src/interfaces/common/IRegistry.sol\":{\"keccak256\":\"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014\",\"dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK\"]},\"src/interfaces/common/IStaticDelegateCallable.sol\":{\"keccak256\":\"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516\",\"dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi\"]},\"src/interfaces/delegator/IBaseDelegator.sol\":{\"keccak256\":\"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2\",\"dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8\"]},\"src/interfaces/service/INetworkMiddlewareService.sol\":{\"keccak256\":\"0x347afc7fcf1fbcdb96d66162070ef6c78aed27b3af2c1d5dfb4e511840631783\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d90b8ceb495159e8e4e95d76447719dd166443f67dfabdd942846162071595c\",\"dweb:/ipfs/QmVVuiAWYx92T6vBvNMKZfTvraCf1fa16BsUKkdNs3hdHA\"]},\"src/interfaces/slasher/IBaseSlasher.sol\":{\"keccak256\":\"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf\",\"dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx\"]},\"src/interfaces/slasher/IBurner.sol\":{\"keccak256\":\"0xaf495dacc19ae0b3c787ba8021c5944927d70261536addd234d7dab146158c2b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b3cc66251008be6ff9fc8b11ecc6831d5a9dca49a3fe9817fcd970253c1d447\",\"dweb:/ipfs/QmVxfb9ALGdF9W3SN2h41gQbUct6tawvu5bw4K89kFQ4HW\"]},\"src/interfaces/vault/IVault.sol\":{\"keccak256\":\"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9\",\"dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R\"]},\"src/interfaces/vault/IVaultStorage.sol\":{\"keccak256\":\"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e\",\"dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"vaultFactory","type":"address"},{"internalType":"address","name":"delegatorFactory","type":"address"},{"internalType":"address","name":"slasherFactory","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"stateMutability":"view","type":"function","name":"DELEGATOR_FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"SLASHER_FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VAULT_FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"struct IVaultConfigurator.InitParams","name":"params","type":"tuple","components":[{"internalType":"uint64","name":"version","type":"uint64"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"bytes","name":"vaultParams","type":"bytes"},{"internalType":"uint64","name":"delegatorIndex","type":"uint64"},{"internalType":"bytes","name":"delegatorParams","type":"bytes"},{"internalType":"bool","name":"withSlasher","type":"bool"},{"internalType":"uint64","name":"slasherIndex","type":"uint64"},{"internalType":"bytes","name":"slasherParams","type":"bytes"}]}],"stateMutability":"nonpayable","type":"function","name":"create","outputs":[{"internalType":"address","name":"vault","type":"address"},{"internalType":"address","name":"delegator","type":"address"},{"internalType":"address","name":"slasher","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"create((uint64,address,bytes,uint64,bytes,bool,uint64,bytes))":{"params":{"params":"initial parameters needed for a vault with a delegator and a slasher deployment"},"returns":{"delegator":"address of the delegator","slasher":"address of the slasher","vault":"address of the vault"}}},"version":1},"userdoc":{"kind":"user","methods":{"DELEGATOR_FACTORY()":{"notice":"Get the delegator factory's address."},"SLASHER_FACTORY()":{"notice":"Get the slasher factory's address."},"VAULT_FACTORY()":{"notice":"Get the vault factory's address."},"create((uint64,address,bytes,uint64,bytes,bool,uint64,bytes))":{"notice":"Create a new vault with a delegator and a slasher."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/VaultConfigurator.sol":"VaultConfigurator"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol":{"keccak256":"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866","urls":["bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf","dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab","urls":["bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89","dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606","urls":["bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1","dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol":{"keccak256":"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486","urls":["bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d","dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/Clones.sol":{"keccak256":"0xf55d01dac75cffdabec6833a79bf3be0c108fc0db10e273daf7adfd3e9e59dae","urls":["bzz-raw://540002a50a2a1a2b9dafffb976178e55adbf8d3a28db462c69f996921479c6b0","dweb:/ipfs/QmQNAFyMf2FW3U1giM4Yej3zzd1pnxMtAA5GoADj4hTYYD"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol":{"keccak256":"0x0a8a5b994d4c4da9f61d128945cc8c9e60dcbc72bf532f72ae42a48ea90eed9a","urls":["bzz-raw://e63ae15b6b1079b9d3c73913424d4278139f9e9c9658316675b9c48d5883a50d","dweb:/ipfs/QmWLxBYfp8j1YjNMabWgv75ELTaK2eEYEEGx7qsJbxVZZq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol":{"keccak256":"0x911c3346ee26afe188f3b9dc267ef62a7ccf940aba1afa963e3922f0ca3d8a06","urls":["bzz-raw://04539f4419e44a831807d7203375d2bc6a733da256efd02e51290f5d5015218c","dweb:/ipfs/QmPZ97gsAAgaMRPiE2WJfkzRsudQnW5tPAvMgGj1jcTJtR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol":{"keccak256":"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd","urls":["bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac","dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c","urls":["bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa","dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310","urls":["bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862","dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol":{"keccak256":"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f","urls":["bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44","dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol":{"keccak256":"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212","urls":["bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f","dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc","urls":["bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6","dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza"],"license":"MIT"},"src/contracts/DelegatorFactory.sol":{"keccak256":"0x3c3fb62c441302f4f75d94703779f5c4bb755c06f310b4c923dbf24d6e0adda9","urls":["bzz-raw://597fa8be7179d8a555bf942c1dea0504273a1d34f6ac4c206fc2e816da143e68","dweb:/ipfs/Qmf54DKNYXC7fTMcAFABw68RC6ZFenVgyAPGhbPTf6s5TR"],"license":"BUSL-1.1"},"src/contracts/SlasherFactory.sol":{"keccak256":"0xbafc96e3d2511eb62942613645b4f5cbf6f603063a711b30e25940aaba08064c","urls":["bzz-raw://489440f1181b1858e3b27a90ec6f514c0c287c602b4779676048213202165867","dweb:/ipfs/QmRG7AQ9m9qHr8ofEvP1Ur8S379fFXTo9rmiWaAtZ9rsUc"],"license":"BUSL-1.1"},"src/contracts/VaultConfigurator.sol":{"keccak256":"0x2484ee5cfac134e27cedeeef22d4111d7ecd4a4b62f02381f2c2b67c57ed7955","urls":["bzz-raw://adce2d9b8a9fb670c0f3266d5407b752901921f1c9f9406c7db65d84e48e779a","dweb:/ipfs/QmTbcKhdGfepqexFc8kziqPdfFC8SGZzFrVnEcJ5nKBiPz"],"license":"BUSL-1.1"},"src/contracts/VaultFactory.sol":{"keccak256":"0xa9122dd11e5f21fa97a813e90f8c4905f0a4967b9611dd03437a31377cbdecb8","urls":["bzz-raw://4c2feda1f9c0c7ddf65bccdc99494e4bfbb820fcddc3e4222e3b58ef821424a3","dweb:/ipfs/Qmdmt4rH214jDmDsF9ELvJXVCt8abhk6poSmhJqqzLse3R"],"license":"BUSL-1.1"},"src/contracts/common/Entity.sol":{"keccak256":"0x3d61a932995b8443381f3950542d388223a2c26dd5d29a3274dea3baa7388bd7","urls":["bzz-raw://7cdf5f03ca72fd263fd32ff59c8d88ddca911ae83896a287d10772c1bbe9b138","dweb:/ipfs/QmbP84r5BWT1Rn9AYTntWSf3xUMTTCohTZJFhbBhDXFoHa"],"license":"BUSL-1.1"},"src/contracts/common/Factory.sol":{"keccak256":"0x41764643e6a2a3d80d694a3efee91f50a2fd084fb2bcd13566259443840e6369","urls":["bzz-raw://fefc1e2a2189275388826f4f82ca421ca79c2866d3ef39dc2c7df46fe7cbf7c9","dweb:/ipfs/QmSJ4VGmgpYUv5ni4ZYoSV4qMuZrk5DLjyB3Vv9NbFgeNZ"],"license":"BUSL-1.1"},"src/contracts/common/MigratableEntity.sol":{"keccak256":"0x303ad40a3de8fa808cc30a6fbd5998633f6a89b982e6db1fa981e0566ab445e7","urls":["bzz-raw://fa8fb92995ead02798e013190b87b84b44cc68668262f045c9b0b4783940e2bf","dweb:/ipfs/QmV1uKGVLKwWisc714R8fCt71gXUQJpaKvdc6LQ8WtvMpL"],"license":"BUSL-1.1"},"src/contracts/common/MigratableEntityProxy.sol":{"keccak256":"0x78ba27242276232ad10a45265e3c07f0a25722456f6abb3fb3f24a1c8e1b38d1","urls":["bzz-raw://a19623df688e5085036b59fc934e35b72997f875d7ffda1cdc557c6ca468206d","dweb:/ipfs/QmaQiT5uYZu5JmqhMjTDJnsq3nqaHbKrWAjrxKKLesdHV7"],"license":"BUSL-1.1"},"src/contracts/common/MigratablesFactory.sol":{"keccak256":"0x5d1487c3456da4bd0bc2a131eeab97ab92484c923edefaebf190cc08d4080093","urls":["bzz-raw://fec38d2e52e9c5148e95599c133fd6fe66d41296d6fc06e7329d2db199a1798f","dweb:/ipfs/QmeiaydBXHHkJRUnpaZH1C6JQ7HPocTvQbUJBqKTvUeEYv"],"license":"BUSL-1.1"},"src/contracts/common/Registry.sol":{"keccak256":"0x4a4004836d920953a8ec6e223de9a330f43acf7a5b93c6b8b3e4a95e0f129889","urls":["bzz-raw://e8bdda207f3852c683a2b481602239a914f7e26bcd042ade618e263a43b67652","dweb:/ipfs/Qmb8GZykJWxZcfwNp3SqhFizDFydFuV6LXgemV3vnWyLyu"],"license":"BUSL-1.1"},"src/contracts/common/StaticDelegateCallable.sol":{"keccak256":"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90","urls":["bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764","dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD"],"license":"BUSL-1.1"},"src/contracts/libraries/Checkpoints.sol":{"keccak256":"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c","urls":["bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609","dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE"],"license":"MIT"},"src/contracts/libraries/ERC4626Math.sol":{"keccak256":"0x8441160513c1cbeb1c3b9ee077bcc7e7ce20006b52a77c8dd39ff0ef89699939","urls":["bzz-raw://943f8cc3e26ddf649f465f40c909819f5c864717c4baa339e9e403b9374a4653","dweb:/ipfs/QmXPxi1sUDsrGprZdUgCzoPEosaZMv9ZhygWQ1vAi1phAB"],"license":"MIT"},"src/contracts/libraries/Subnetwork.sol":{"keccak256":"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe","urls":["bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56","dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32"],"license":"MIT"},"src/contracts/slasher/BaseSlasher.sol":{"keccak256":"0x190e5dce196a061bdad42468c52e9f5b0eb7810cd7d0c19f04d6a2e94984f1b6","urls":["bzz-raw://07ca08d0cd43c2fe5d54a5577f6bdd522ced410f5d3a52e764deaa7ba26b5f06","dweb:/ipfs/QmZe3PiMKBQKWcwodaLupragdqxPjgS4v1qMC7RXau8hDF"],"license":"BUSL-1.1"},"src/contracts/vault/Vault.sol":{"keccak256":"0x7ee6dbf060c45d6eba95315f4ac0b3b467dd9c4999b84c31d6f66d4d8b53a116","urls":["bzz-raw://301948b8ea522db292aa2722ba42def3911dae95f0b376f7023c3fef470f8676","dweb:/ipfs/QmSDbP2HdzhDAzstr8Zz5isEAcSkma8ABc5UwPsoazaumZ"],"license":"BUSL-1.1"},"src/contracts/vault/VaultStorage.sol":{"keccak256":"0x57db25b127d77ea3472de53e3a4af3354399655b9268638b99ca5925fa364a56","urls":["bzz-raw://aa763d9a6ec508ae3abfb8228b72b9fd9525279e5135d4962e79ff059feb1173","dweb:/ipfs/QmcbDR6E9wyEpu6V2FkEC4hnWy47zXA9LSKJde6zSGd33Q"],"license":"BUSL-1.1"},"src/interfaces/IDelegatorFactory.sol":{"keccak256":"0x7850453237ca93b301393506d2489a38830a60be0c29f39a4a1aee3508d836e6","urls":["bzz-raw://8f418702b883c90e046af92d5654a25849baf79b61c11401ad603b861fed7b80","dweb:/ipfs/Qmdju1XFJXx3uJidzoS7srcoSnzT8jUoPAmGEdbceYgB7j"],"license":"MIT"},"src/interfaces/ISlasherFactory.sol":{"keccak256":"0x30018af5c2719d9b5cfacbfc0277017896815b3fcc4dfbea78813e6ae81c1e56","urls":["bzz-raw://5e028fbed23ab973d8d9eb2be4e53a528dd01248e3233f56ab0f8ac9a7c9c220","dweb:/ipfs/Qmd9cHMRSE52ESmxMiu5gTBpRNmDHQK5q18f7UTj8DQke4"],"license":"MIT"},"src/interfaces/IVaultConfigurator.sol":{"keccak256":"0x699d9b8c767780c4ea593fe7608bc0b3ef7646f54cea0610ae355f2974658eba","urls":["bzz-raw://9ac4081f36b477025213f59c489cbb85f904580b145fa9f18ef9a7b794f0fba2","dweb:/ipfs/QmPE3Ep6pTdaeFsJoixeom3NEaQiTe8WHrLoiFEGJo1zx4"],"license":"MIT"},"src/interfaces/IVaultFactory.sol":{"keccak256":"0x6f658b264fc8d530e458a98d83a09cb55ace4d3e509f0a3e9294471bb1bcf84d","urls":["bzz-raw://a7253435e4e1d1ae19a50d14091ddb254f6a36f296440106bfc094623dd1aeba","dweb:/ipfs/QmbHK9yoQ7Ctf3nuDLmqxTWPYD8cEm1TKXzfxePtE87AQN"],"license":"MIT"},"src/interfaces/common/IEntity.sol":{"keccak256":"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21","urls":["bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b","dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv"],"license":"MIT"},"src/interfaces/common/IFactory.sol":{"keccak256":"0xe835ebda85d181b70874f6eb53f2a892aa3223d23efe247060da9b51d2b8e969","urls":["bzz-raw://48b3dfb5f0491d90efbc8ed498b45358260ebac6e8f2aa0106b8b8fabdc988cb","dweb:/ipfs/QmWnnCs3xiHeUvYfUWMJTSFZWc34bSYn9Zpm7f7syra3TA"],"license":"MIT"},"src/interfaces/common/IMigratableEntity.sol":{"keccak256":"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4","urls":["bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c","dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds"],"license":"MIT"},"src/interfaces/common/IMigratableEntityProxy.sol":{"keccak256":"0x9030ced51ad12e0b3ddaa11bba4a3adcfa29e67b909c46065c14b19d158bb9fd","urls":["bzz-raw://2d859c21510d1a0f06a71abe21dc6424608c1b2e3194a10e4df4cc88c4de9e9f","dweb:/ipfs/QmNi6Buri2oaujc4vTv6bZ5mgMKFsjUmYmQLUNaDCXFEEt"],"license":"MIT"},"src/interfaces/common/IMigratablesFactory.sol":{"keccak256":"0xd4dfe9449bf005dbcbab9e0e85eaaca15a601ff971f34182a0b1832dc4b9d124","urls":["bzz-raw://ff8b73285192a9c64160b008d23a09da33e7164d10a9dc29d1a4464bd9c02be5","dweb:/ipfs/QmZQW2LLV4dQfJ3coENKeycbzXJzi7zdvupsqWA4UV29Gq"],"license":"MIT"},"src/interfaces/common/IRegistry.sol":{"keccak256":"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb","urls":["bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014","dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK"],"license":"MIT"},"src/interfaces/common/IStaticDelegateCallable.sol":{"keccak256":"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5","urls":["bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516","dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi"],"license":"MIT"},"src/interfaces/delegator/IBaseDelegator.sol":{"keccak256":"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee","urls":["bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2","dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8"],"license":"MIT"},"src/interfaces/service/INetworkMiddlewareService.sol":{"keccak256":"0x347afc7fcf1fbcdb96d66162070ef6c78aed27b3af2c1d5dfb4e511840631783","urls":["bzz-raw://2d90b8ceb495159e8e4e95d76447719dd166443f67dfabdd942846162071595c","dweb:/ipfs/QmVVuiAWYx92T6vBvNMKZfTvraCf1fa16BsUKkdNs3hdHA"],"license":"MIT"},"src/interfaces/slasher/IBaseSlasher.sol":{"keccak256":"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404","urls":["bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf","dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx"],"license":"MIT"},"src/interfaces/slasher/IBurner.sol":{"keccak256":"0xaf495dacc19ae0b3c787ba8021c5944927d70261536addd234d7dab146158c2b","urls":["bzz-raw://9b3cc66251008be6ff9fc8b11ecc6831d5a9dca49a3fe9817fcd970253c1d447","dweb:/ipfs/QmVxfb9ALGdF9W3SN2h41gQbUct6tawvu5bw4K89kFQ4HW"],"license":"MIT"},"src/interfaces/vault/IVault.sol":{"keccak256":"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235","urls":["bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9","dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R"],"license":"MIT"},"src/interfaces/vault/IVaultStorage.sol":{"keccak256":"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22","urls":["bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e","dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6"],"license":"MIT"}},"version":1},"id":74} \ No newline at end of file diff --git a/out/VaultFactory.sol/VaultFactory.json b/out/VaultFactory.sol/VaultFactory.json index baf395bd..b76f76f0 100644 --- a/out/VaultFactory.sol/VaultFactory.json +++ b/out/VaultFactory.sol/VaultFactory.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"owner_","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"blacklist","inputs":[{"name":"version","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"blacklisted","inputs":[{"name":"version","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"create","inputs":[{"name":"version","type":"uint64","internalType":"uint64"},{"name":"owner_","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"entity_","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"entity","inputs":[{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"implementation","inputs":[{"name":"version","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"isEntity","inputs":[{"name":"entity_","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"lastVersion","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"migrate","inputs":[{"name":"entity_","type":"address","internalType":"address"},{"name":"newVersion","type":"uint64","internalType":"uint64"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"totalEntities","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"whitelist","inputs":[{"name":"implementation_","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"AddEntity","inputs":[{"name":"entity","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Blacklist","inputs":[{"name":"version","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"Migrate","inputs":[{"name":"entity","type":"address","indexed":true,"internalType":"address"},{"name":"newVersion","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Whitelist","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AlreadyBlacklisted","inputs":[]},{"type":"error","name":"AlreadyWhitelisted","inputs":[]},{"type":"error","name":"EntityNotExist","inputs":[]},{"type":"error","name":"InvalidImplementation","inputs":[]},{"type":"error","name":"InvalidVersion","inputs":[]},{"type":"error","name":"NotOwner","inputs":[]},{"type":"error","name":"OldVersion","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x60803460b557601f61121538819003918201601f19168301916001600160401b0383118484101760b95780849260209460405283398101031260b557516001600160a01b03908181169081900360b5578015609d57600280546001600160a01b03198116831790915560405192167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a361114790816100ce8239f35b604051631e4fbdf760e01b81525f6004820152602490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60406080815260049081361015610014575f80fd5b5f915f3560e01c90816314887c581461084a5781633ac04911146106dc57816358336662146104945781635cd8b15e1461047757816364dfea061461044f578163715018a6146103f25781638da5cb5b146103c95781639b19251a146102e3578163b42ba2a214610273578163b572a966146101b9578163b6caa1191461017c578163f2fde38b146100e8575063f9661602146100af575f80fd5b346100e45760203660031901126100e4576020906100d36100ce6108a3565b610999565b90516001600160a01b039091168152f35b5080fd5b9050346101785760203660031901126101785761010361088d565b9061010c610a0f565b6001600160a01b03918216928315610162575050600254826bffffffffffffffffffffffff60a01b821617600255167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a380f35b51631e4fbdf760e01b8152908101849052602490fd5b8280fd5b5050346100e45760203660031901126100e45760ff8160209367ffffffffffffffff6101a66108a3565b1681526003855220541690519015158152f35b91905034610178576020366003190112610178576101d56108a3565b916101de610a0f565b67ffffffffffffffff809316928315908115610266575b5061025857828452600360205260ff828520541661024a575081835260036020528220805460ff191660011790557ffc8245c2838846b295ae66fbe0d08e20c799b737c93b56f7b209df2e5fa2d4588280a280f35b905163f53de75f60e01b8152fd5b905163a9146eeb60e01b8152fd5b905081541683115f6101f5565b8284346102e05760203660031901126102e0575081355f548110156102cd575f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563015490516001600160a01b03909116815260209150f35b603283634e487b7160e01b5f525260245ffd5b80fd5b905034610178576020366003190112610178576102fe61088d565b91610307610a0f565b80516202dd3160ec1b81526001600160a01b03938416936020828581885afa9182156103bf57869261038e575b50309116036103815761034683610af2565b156103745750507feb73900b98b6a3e2b8b01708fe544760cf570d21e7fbe5225f24e48b5b2b432e8280a280f35b5163b73e95e160e01b8152fd5b5163340aafcd60e11b8152fd5b6103b191925060203d6020116103b8575b6103a98183610908565b81019061097a565b905f610334565b503d61039f565b83513d88823e3d90fd5b5050346100e457816003193601126100e45760025490516001600160a01b039091168152602090f35b83346102e057806003193601126102e05761040b610a0f565b600280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b8284346102e057806003193601126102e0575067ffffffffffffffff60209254169051908152f35b5050346100e457816003193601126100e457602091549051908152f35b83833461063d57606036600319011261063d576104af61088d565b6024359167ffffffffffffffff908184169182850361063d5760443581811161063d576104df90369089016108ba565b6001600160a01b039586165f81815260016020526040902054909792939290156106cc578451638da5cb5b60e01b81526020979088818d818d5afa9081156106c2575f916106a5575b5016330361069557845163054fd4d560e41b815287818c818c5afa90811561068b579084915f91610651575b5016861115610641576105696105a291610999565b916105948651958692630557c60960e31b8b85015289602485015288604485015260648401916108e8565b03601f198101855284610908565b863b1561063d57835163278f794360e11b8152925f91849182916105c991908d840161093e565b0381838a5af1801561063357610607575b5050519081527fb91c18bf7dbfdff96560fb98128531c4c6187079fe0bd7f24a81f54ea87f35a79190a280f35b9080929650116106205784529293505f928486806105da565b604186634e487b7160e01b5f525260245ffd5b83513d5f823e3d90fd5b5f80fd5b8451630384ebd960e41b81528a90fd5b809250898092503d8311610684575b61066a8183610908565b8101031261063d5751838116810361063d5783908c610554565b503d610660565b86513d5f823e3d90fd5b84516330cd747160e01b81528a90fd5b6106bc9150893d8b116103b8576103a98183610908565b8c610528565b87513d5f823e3d90fd5b845163e3fd10ff60e01b81528a90fd5b823461063d57606036600319011261063d576106f66108a3565b6001600160a01b03926024358481169081900361063d5760443567ffffffffffffffff80821161063d576107306107bf92369086016108ba565b92905f546107b389519260208401928352610785868b1693848d8701528960608701526080808701528561076860a082018b866108e8565b039561077c601f1997888101835282610908565b5190209a610999565b968b519889946315fb20f360e21b6020870152602486015260448501526060606485015260848401916108e8565b03908101855284610908565b8551936105c39081860192868410908411176108375750918493916107e893610b4f863961093e565b03905ff591821561082d57602092169061080182610a84565b505190807fb919910dcefbf753bfd926ab3b1d3f85d877190c3d01ba1bd585047b99b99f0b5f80a28152f35b50513d5f823e3d90fd5b604190634e487b7160e01b5f525260245ffd5b823461063d57602036600319011261063d576020906108846001600160a01b0361087261088d565b165f52600160205260405f2054151590565b90519015158152f35b600435906001600160a01b038216820361063d57565b6004359067ffffffffffffffff8216820361063d57565b9181601f8401121561063d5782359167ffffffffffffffff831161063d576020838186019501011161063d57565b908060209392818452848401375f828201840152601f01601f1916010190565b90601f8019910116810190811067ffffffffffffffff82111761092a57604052565b634e487b7160e01b5f52604160045260245ffd5b6001600160a01b0390911681526040602080830182905283519183018290526060938291018484015e5f828201840152601f01601f1916010190565b9081602091031261063d57516001600160a01b038116810361063d5790565b67ffffffffffffffff80911680158015610a02575b6109f0575f1901908082116109dc576109c79116610a3b565b905460039190911b1c6001600160a01b031690565b634e487b7160e01b5f52601160045260245ffd5b60405163a9146eeb60e01b8152600490fd5b50816004541681116109ae565b6002546001600160a01b03163303610a2357565b60405163118cdaa760e01b8152336004820152602490fd5b600454811015610a705760045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01905f90565b634e487b7160e01b5f52603260045260245ffd5b805f52600160205260405f2054155f14610aed575f54600160401b81101561092a5760018101805f55811015610a705781907f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56301555f54905f52600160205260405f2055600190565b505f90565b805f52600560205260405f2054155f14610aed57600454600160401b81101561092a57806001610b259201600455610a3b565b81549060031b9083821b915f19901b1916179055600454905f52600560205260405f205560019056fe604060a08152346101df576105c38038038061001a816101e3565b92833981019082818303126101df5780516001600160a01b0392838216918281036101df5760208481015190946001600160401b0382116101df570182601f820112156101df57805161007461006f8261021c565b6101e3565b91818352868301948783830101116101df57815f9288809301875e83010152813b156101c7577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b03199081168617909155937fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a25180156101bf575f809161012694845af43d156101b7573d9161011861006f8461021c565b9283523d5f8785013e610237565b505b336080527f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f847fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610394855494825191861682523390820152a133156101a057163317905551610328908161029b82396080518160f10152f35b8351633173bdd160e11b81525f6004820152602490fd5b606091610237565b505050610128565b8651634c9c8ce360e01b815260048101859052602490fd5b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761020857604052565b634e487b7160e01b5f52604160045260245ffd5b6001600160401b03811161020857601f01601f191660200190565b9061025e575080511561024c57805190602001fd5b604051630a12f52160e11b8152600490fd5b81511580610291575b61026f575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b1561026756fe6080604052600436106101f4575f3560e01c634f1ef286036101f45734610086576040366003190112610086576004356001600160a01b0381168103610086576024359067ffffffffffffffff9081831161008657366023840112156100865782600401359182116100865736602483850101116100865760246100849301906100e5565b005b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b6040519190601f01601f1916820167ffffffffffffffff8111838210176100c457604052565b61008a565b67ffffffffffffffff81116100c457601f01601f191660200190565b916001600160a01b03907f0000000000000000000000000000000000000000000000000000000000000000821633036101e257610129610124826100c9565b61009e565b92818452368282011161008657815f926020928387013784010152823b156101c85782167f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc816bffffffffffffffffffffffff60a01b8254161790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28051156101bc576101b991610256565b50565b50506101c661023d565b565b604051634c9c8ce360e01b81529083166004820152602490fd5b6040516334ad5dbb60e21b8152600490fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545f9081906001600160a01b0316368280378136915af43d5f803e15610239573d5ff35b3d5ffd5b3461024457565b60405163b398979f60e01b8152600490fd5b5f8061028893602081519101845af43d1561028b573d91610279610124846100c9565b9283523d5f602085013e61028f565b90565b6060915b906102b657508051156102a457805190602001fd5b604051630a12f52160e11b8152600490fd5b815115806102e9575b6102c7575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b156102bf56fea264697066735822122028e25eef202279b950fae0b3b6144d4d7a8824832024cb7fc76ff5455d7c319964736f6c63430008190033a264697066735822122044a749ed3b4cc7533f65daf7149d976a000661a24fc7eadbf8ace3eef7a619fb64736f6c63430008190033","sourceMap":"195:138:68:-:0;;;;;;;;;;;;;-1:-1:-1;;195:138:68;;;;-1:-1:-1;;;;;195:138:68;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;195:138:68;;;;;;;;;;1273:26:32;;1269:95;;3004:6;195:138:68;;-1:-1:-1;;;;;;195:138:68;;;;;;;;;;;3052:40:32;-1:-1:-1;;3052:40:32;195:138:68;;;;;;;1269:95:32;195:138:68;;-1:-1:-1;;;1322:31:32;;-1:-1:-1;1322:31:32;;;195:138:68;;;1322:31:32;195:138:68;-1:-1:-1;195:138:68;;;;;;-1:-1:-1;195:138:68;;;;;-1:-1:-1;195:138:68","linkReferences":{}},"deployedBytecode":{"object":"0x60406080815260049081361015610014575f80fd5b5f915f3560e01c90816314887c581461084a5781633ac04911146106dc57816358336662146104945781635cd8b15e1461047757816364dfea061461044f578163715018a6146103f25781638da5cb5b146103c95781639b19251a146102e3578163b42ba2a214610273578163b572a966146101b9578163b6caa1191461017c578163f2fde38b146100e8575063f9661602146100af575f80fd5b346100e45760203660031901126100e4576020906100d36100ce6108a3565b610999565b90516001600160a01b039091168152f35b5080fd5b9050346101785760203660031901126101785761010361088d565b9061010c610a0f565b6001600160a01b03918216928315610162575050600254826bffffffffffffffffffffffff60a01b821617600255167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a380f35b51631e4fbdf760e01b8152908101849052602490fd5b8280fd5b5050346100e45760203660031901126100e45760ff8160209367ffffffffffffffff6101a66108a3565b1681526003855220541690519015158152f35b91905034610178576020366003190112610178576101d56108a3565b916101de610a0f565b67ffffffffffffffff809316928315908115610266575b5061025857828452600360205260ff828520541661024a575081835260036020528220805460ff191660011790557ffc8245c2838846b295ae66fbe0d08e20c799b737c93b56f7b209df2e5fa2d4588280a280f35b905163f53de75f60e01b8152fd5b905163a9146eeb60e01b8152fd5b905081541683115f6101f5565b8284346102e05760203660031901126102e0575081355f548110156102cd575f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563015490516001600160a01b03909116815260209150f35b603283634e487b7160e01b5f525260245ffd5b80fd5b905034610178576020366003190112610178576102fe61088d565b91610307610a0f565b80516202dd3160ec1b81526001600160a01b03938416936020828581885afa9182156103bf57869261038e575b50309116036103815761034683610af2565b156103745750507feb73900b98b6a3e2b8b01708fe544760cf570d21e7fbe5225f24e48b5b2b432e8280a280f35b5163b73e95e160e01b8152fd5b5163340aafcd60e11b8152fd5b6103b191925060203d6020116103b8575b6103a98183610908565b81019061097a565b905f610334565b503d61039f565b83513d88823e3d90fd5b5050346100e457816003193601126100e45760025490516001600160a01b039091168152602090f35b83346102e057806003193601126102e05761040b610a0f565b600280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b8284346102e057806003193601126102e0575067ffffffffffffffff60209254169051908152f35b5050346100e457816003193601126100e457602091549051908152f35b83833461063d57606036600319011261063d576104af61088d565b6024359167ffffffffffffffff908184169182850361063d5760443581811161063d576104df90369089016108ba565b6001600160a01b039586165f81815260016020526040902054909792939290156106cc578451638da5cb5b60e01b81526020979088818d818d5afa9081156106c2575f916106a5575b5016330361069557845163054fd4d560e41b815287818c818c5afa90811561068b579084915f91610651575b5016861115610641576105696105a291610999565b916105948651958692630557c60960e31b8b85015289602485015288604485015260648401916108e8565b03601f198101855284610908565b863b1561063d57835163278f794360e11b8152925f91849182916105c991908d840161093e565b0381838a5af1801561063357610607575b5050519081527fb91c18bf7dbfdff96560fb98128531c4c6187079fe0bd7f24a81f54ea87f35a79190a280f35b9080929650116106205784529293505f928486806105da565b604186634e487b7160e01b5f525260245ffd5b83513d5f823e3d90fd5b5f80fd5b8451630384ebd960e41b81528a90fd5b809250898092503d8311610684575b61066a8183610908565b8101031261063d5751838116810361063d5783908c610554565b503d610660565b86513d5f823e3d90fd5b84516330cd747160e01b81528a90fd5b6106bc9150893d8b116103b8576103a98183610908565b8c610528565b87513d5f823e3d90fd5b845163e3fd10ff60e01b81528a90fd5b823461063d57606036600319011261063d576106f66108a3565b6001600160a01b03926024358481169081900361063d5760443567ffffffffffffffff80821161063d576107306107bf92369086016108ba565b92905f546107b389519260208401928352610785868b1693848d8701528960608701526080808701528561076860a082018b866108e8565b039561077c601f1997888101835282610908565b5190209a610999565b968b519889946315fb20f360e21b6020870152602486015260448501526060606485015260848401916108e8565b03908101855284610908565b8551936105c39081860192868410908411176108375750918493916107e893610b4f863961093e565b03905ff591821561082d57602092169061080182610a84565b505190807fb919910dcefbf753bfd926ab3b1d3f85d877190c3d01ba1bd585047b99b99f0b5f80a28152f35b50513d5f823e3d90fd5b604190634e487b7160e01b5f525260245ffd5b823461063d57602036600319011261063d576020906108846001600160a01b0361087261088d565b165f52600160205260405f2054151590565b90519015158152f35b600435906001600160a01b038216820361063d57565b6004359067ffffffffffffffff8216820361063d57565b9181601f8401121561063d5782359167ffffffffffffffff831161063d576020838186019501011161063d57565b908060209392818452848401375f828201840152601f01601f1916010190565b90601f8019910116810190811067ffffffffffffffff82111761092a57604052565b634e487b7160e01b5f52604160045260245ffd5b6001600160a01b0390911681526040602080830182905283519183018290526060938291018484015e5f828201840152601f01601f1916010190565b9081602091031261063d57516001600160a01b038116810361063d5790565b67ffffffffffffffff80911680158015610a02575b6109f0575f1901908082116109dc576109c79116610a3b565b905460039190911b1c6001600160a01b031690565b634e487b7160e01b5f52601160045260245ffd5b60405163a9146eeb60e01b8152600490fd5b50816004541681116109ae565b6002546001600160a01b03163303610a2357565b60405163118cdaa760e01b8152336004820152602490fd5b600454811015610a705760045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01905f90565b634e487b7160e01b5f52603260045260245ffd5b805f52600160205260405f2054155f14610aed575f54600160401b81101561092a5760018101805f55811015610a705781907f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56301555f54905f52600160205260405f2055600190565b505f90565b805f52600560205260405f2054155f14610aed57600454600160401b81101561092a57806001610b259201600455610a3b565b81549060031b9083821b915f19901b1916179055600454905f52600560205260405f205560019056fe604060a08152346101df576105c38038038061001a816101e3565b92833981019082818303126101df5780516001600160a01b0392838216918281036101df5760208481015190946001600160401b0382116101df570182601f820112156101df57805161007461006f8261021c565b6101e3565b91818352868301948783830101116101df57815f9288809301875e83010152813b156101c7577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b03199081168617909155937fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a25180156101bf575f809161012694845af43d156101b7573d9161011861006f8461021c565b9283523d5f8785013e610237565b505b336080527f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f847fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610394855494825191861682523390820152a133156101a057163317905551610328908161029b82396080518160f10152f35b8351633173bdd160e11b81525f6004820152602490fd5b606091610237565b505050610128565b8651634c9c8ce360e01b815260048101859052602490fd5b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761020857604052565b634e487b7160e01b5f52604160045260245ffd5b6001600160401b03811161020857601f01601f191660200190565b9061025e575080511561024c57805190602001fd5b604051630a12f52160e11b8152600490fd5b81511580610291575b61026f575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b1561026756fe6080604052600436106101f4575f3560e01c634f1ef286036101f45734610086576040366003190112610086576004356001600160a01b0381168103610086576024359067ffffffffffffffff9081831161008657366023840112156100865782600401359182116100865736602483850101116100865760246100849301906100e5565b005b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b6040519190601f01601f1916820167ffffffffffffffff8111838210176100c457604052565b61008a565b67ffffffffffffffff81116100c457601f01601f191660200190565b916001600160a01b03907f0000000000000000000000000000000000000000000000000000000000000000821633036101e257610129610124826100c9565b61009e565b92818452368282011161008657815f926020928387013784010152823b156101c85782167f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc816bffffffffffffffffffffffff60a01b8254161790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28051156101bc576101b991610256565b50565b50506101c661023d565b565b604051634c9c8ce360e01b81529083166004820152602490fd5b6040516334ad5dbb60e21b8152600490fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545f9081906001600160a01b0316368280378136915af43d5f803e15610239573d5ff35b3d5ffd5b3461024457565b60405163b398979f60e01b8152600490fd5b5f8061028893602081519101845af43d1561028b573d91610279610124846100c9565b9283523d5f602085013e61028f565b90565b6060915b906102b657508051156102a457805190602001fd5b604051630a12f52160e11b8152600490fd5b815115806102e9575b6102c7575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b156102bf56fea264697066735822122028e25eef202279b950fae0b3b6144d4d7a8824832024cb7fc76ff5455d7c319964736f6c63430008190033a264697066735822122044a749ed3b4cc7533f65daf7149d976a000661a24fc7eadbf8ace3eef7a619fb64736f6c63430008190033","sourceMap":"195:138:68:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;195:138:68;;;;;;1576:7:73;195:138:68;;:::i;:::-;1576:7:73;:::i;:::-;195:138:68;;-1:-1:-1;;;;;195:138:68;;;;;;;;;;;;;;;;;;-1:-1:-1;;195:138:68;;;;;;:::i;:::-;1500:62:32;;;:::i;:::-;-1:-1:-1;;;;;195:138:68;;;;2627:22:32;;2623:91;;195:138:68;;3004:6:32;195:138:68;;;;;;;;3004:6:32;195:138:68;;3052:40:32;195:138:68;3052:40:32;;195:138:68;;2623:91:32;195:138:68;-1:-1:-1;;;2672:31:32;;;;;195:138:68;;;;;2672:31:32;195:138:68;;;;;;;;;;;;-1:-1:-1;;195:138:68;;;;;;;;;;;:::i;:::-;;;;869:56:73;195:138:68;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;195:138:68;;;;;;:::i;:::-;1500:62:32;;;:::i;:::-;195:138:68;;;;1065:12:73;;;:39;;;;;195:138:68;1061:93:73;;;195:138:68;;;2251:11:73;195:138:68;;;;;;;;2247:78:73;;-1:-1:-1;195:138:68;;;2251:11:73;195:138:68;;;;;;-1:-1:-1;;195:138:68;2358:4:73;195:138:68;;;2378:18:73;195:138:68;;2378:18:73;195:138:68;;2247:78:73;195:138:68;;-1:-1:-1;;;2294:20:73;;;1061:93;195:138:68;;-1:-1:-1;;;1127:16:73;;;1065:39;195:138:68;;;;;1081:23:73;;1065:39;;;195:138:68;;;;;;;;-1:-1:-1;;195:138:68;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;195:138:68;;;;;;;-1:-1:-1;195:138:68;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;195:138:68;;;;;;:::i;:::-;1500:62:32;;;:::i;:::-;195:138:68;;-1:-1:-1;;;1804:44:73;;-1:-1:-1;;;;;195:138:68;;;;;;1804:44:73;195:138:68;;1804:44:73;;;;;;;;;;;195:138:68;1860:4:73;;195:138:68;;1804:61:73;1800:122;;8409:50:61;;;:::i;:::-;1935:49:73;1931:107;;2053:26;;;;;;195:138:68;;1931:107:73;195:138:68;-1:-1:-1;;;2007:20:73;;;1800:122;195:138:68;-1:-1:-1;;;1888:23:73;;;1804:44;;;;;195:138:68;1804:44:73;195:138:68;1804:44:73;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;195:138:68;;;;;;;;;;;;;;;;;;;;;;;1710:6:32;195:138:68;;;-1:-1:-1;;;;;195:138:68;;;;;;;;;;;;;;;;;;;;;1500:62:32;;:::i;:::-;3004:6;195:138:68;;-1:-1:-1;;;;;;195:138:68;;;;;;;-1:-1:-1;;;;;195:138:68;3052:40:32;195:138:68;;3052:40:32;195:138:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;195:138:68;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;195:138:68;;;;;;;;;;;;;;;;;;;8974:55:61;4360:26;1185:72:74;;195:138:68;;-1:-1:-1;;;3069:24:73;;195:138:68;;;;;3069:24:73;195:138:68;3069:24:73;;;;;;;;195:138:68;3069:24:73;;;195:138:68;;;3055:10:73;:38;3051:86;;195:138:68;;-1:-1:-1;;;3165:36:73;;;195:138:68;3165:36:73;195:138:68;3165:36:73;;;;;;;;;;;195:138:68;3165:36:73;;;195:138:68;;;3151:50:73;;;3147:100;;1576:7;3347:61;1576:7;;:::i;:::-;195:138:68;;;;3347:61:73;;;;;;;;;;;195:138:68;3347:61:73;;195:138:68;;;;;;;;;;;:::i;:::-;3347:61:73;2651:50;;3347:61;;;;;;:::i;:::-;3257:161;;;;;195:138:68;;-1:-1:-1;;;3257:161:73;;195:138:68;;;;;;;3257:161:73;;195:138:68;3257:161:73;;;;:::i;:::-;;;;;;;;;;;;;195:138:68;-1:-1:-1;;195:138:68;;;;3434:28:73;;195:138:68;3434:28:73;195:138:68;;3257:161:73;195:138:68;;;;;;;;;;;;-1:-1:-1;195:138:68;;;3257:161:73;;;;195:138:68;;;;;;;;;;;;3257:161:73;195:138:68;;;;;;;;;3257:161:73;195:138:68;;;3147:100:73;195:138:68;;-1:-1:-1;;;3224:12:73;;195:138:68;;3224:12:73;3165:36;;;;;;;;;;;;;;;;;;:::i;:::-;;;195:138:68;;;;;;;;;;;;3165:36:73;;;;;;;;;;;195:138:68;;;;;;;;;3051:86:73;195:138:68;;-1:-1:-1;;;3116:10:73;;195:138:68;;3116:10:73;3069:24;;;;;;;;;;;;;;:::i;:::-;;;;;195:138:68;;;;;;;;;1185:72:74;195:138:68;;-1:-1:-1;;;1230:16:74;;195:138:68;;1230:16:74;195:138:68;;;;;;;-1:-1:-1;;195:138:68;;;;;;:::i;:::-;-1:-1:-1;;;;;195:138:68;;;;;;;;;;;;;;;;;;;;;2746:69:73;195:138:68;;;;;;:::i;:::-;;;;;;;;2651:50:73;195:138:68;2651:50:73;;195:138:68;;;1576:7:73;195:138:68;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2651:50:73;;;;;;;;;;;;;:::i;:::-;195:138:68;2641:61:73;;1576:7;;:::i;:::-;195:138:68;;;2746:69:73;;;;;;195:138:68;2746:69:73;;;195:138:68;2746:69:73;;195:138:68;;;;;;;;;;;;;;;:::i;:::-;2746:69:73;;;;;;;;:::i;:::-;195:138:68;;2609:220:73;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;195:138:68;2609:220:73;;;;;;195:138:68;;;8409:50:61;;;;:::i;:::-;;195:138:68;1077:18:74;;;195:138:68;1077:18:74;;195:138:68;;;2609:220:73;195:138:68;;;;;;;;;2609:220:73;195:138:68;;;;;;;;;;;;;;;;;;-1:-1:-1;;195:138:68;;;;;;8974:55:61;-1:-1:-1;;;;;195:138:68;;:::i;:::-;;;;4360:14:61;195:138:68;;;;;;4360:26:61;;4264:129;;8974:55;195:138:68;;;;;;;;;;;;-1:-1:-1;;;;;195:138:68;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;195:138:68;;;;;;;;-1:-1:-1;;195:138:68;;;;:::o;:::-;;;2651:50:73;;195:138:68;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;195:138:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;195:138:68;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;195:138:68;;;;;;;:::o;999:172:73:-;195:138:68;;;;1065:12:73;;:39;;;;999:172;1061:93;;-1:-1:-1;;195:138:68;;;;;;;5016:18:61;195:138:68;;5016:18:61;:::i;:::-;195:138:68;;;;;;;;-1:-1:-1;;;;;195:138:68;;999:172:73:o;195:138:68:-;;;;;;;1602:27:73;195:138:68;;;;1061:93:73;195:138:68;;-1:-1:-1;;;1127:16:73;;;;;1065:39;195:138:68;;1374:27:73;195:138:68;;1081:23:73;;1065:39;;1796:162:32;1710:6;195:138:68;-1:-1:-1;;;;;195:138:68;735:10:47;1855:23:32;1851:101;;1796:162::o;1851:101::-;195:138:68;;-1:-1:-1;;;1901:40:32;;735:10:47;1901:40:32;;;195:138:68;;;1901:40:32;195:138:68;1602:27:73;195:138:68;;;;;;1602:27:73;-1:-1:-1;195:138:68;;;;-1:-1:-1;195:138:68;:::o;:::-;;;;;;;1602:27:73;195:138:68;;;;2241:406:61;195:138:68;;;4360:14:61;195:138:68;;;;;;4360:26:61;2320:321;195:138:68;;;;;-1:-1:-1;;;195:138:68;;;;;4360:14:61;195:138:68;;;;;;;;;;;;;;;;;;;;4360:14:61;195:138:68;;;;;;4360:14:61;2576:11;:::o;2320:321::-;2618:12;195:138:68;2618:12:61;:::o;2241:406::-;195:138:68;-1:-1:-1;195:138:68;4360:14:61;195:138:68;;;-1:-1:-1;195:138:68;;4360:26:61;2320:321;195:138:68;;;;;-1:-1:-1;;;195:138:68;;;;;;4360:14:61;195:138:68;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;195:138:68;4360:14:61;195:138:68;;;-1:-1:-1;195:138:68;;4360:14:61;2576:11;:::o","linkReferences":{}},"methodIdentifiers":{"blacklist(uint64)":"b572a966","blacklisted(uint64)":"b6caa119","create(uint64,address,bytes)":"3ac04911","entity(uint256)":"b42ba2a2","implementation(uint64)":"f9661602","isEntity(address)":"14887c58","lastVersion()":"64dfea06","migrate(address,uint64,bytes)":"58336662","owner()":"8da5cb5b","renounceOwnership()":"715018a6","totalEntities()":"5cd8b15e","transferOwnership(address)":"f2fde38b","whitelist(address)":"9b19251a"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AlreadyBlacklisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadyWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EntityNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidVersion\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OldVersion\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"entity\",\"type\":\"address\"}],\"name\":\"AddEntity\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Blacklist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"entity\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newVersion\",\"type\":\"uint64\"}],\"name\":\"Migrate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Whitelist\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"blacklist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"blacklisted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner_\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"create\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"entity_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"entity\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"entity_\",\"type\":\"address\"}],\"name\":\"isEntity\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastVersion\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"entity_\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"newVersion\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"migrate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalEntities\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation_\",\"type\":\"address\"}],\"name\":\"whitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"events\":{\"AddEntity(address)\":{\"params\":{\"entity\":\"address of the added entity\"}},\"Blacklist(uint64)\":{\"details\":\"The given version is still deployable.\",\"params\":{\"version\":\"version that was blacklisted\"}},\"Migrate(address,uint64)\":{\"params\":{\"entity\":\"address of the entity\",\"newVersion\":\"new version of the entity\"}},\"Whitelist(address)\":{\"params\":{\"implementation\":\"address of the new implementation\"}}},\"kind\":\"dev\",\"methods\":{\"blacklist(uint64)\":{\"details\":\"The given version will still be deployable.\",\"params\":{\"version\":\"version to blacklist\"}},\"create(uint64,address,bytes)\":{\"details\":\"CREATE2 salt is constructed from the given parameters.\",\"params\":{\"data\":\"initial data for the entity creation\",\"owner\":\"initial owner of the entity\",\"version\":\"entity's version to use\"},\"returns\":{\"entity_\":\"address of the entity\"}},\"entity(uint256)\":{\"params\":{\"index\":\"index of the entity to get\"},\"returns\":{\"_0\":\"address of the entity\"}},\"implementation(uint64)\":{\"details\":\"Reverts when an invalid version.\",\"params\":{\"version\":\"version to get the implementation for\"},\"returns\":{\"_0\":\"address of the implementation\"}},\"isEntity(address)\":{\"params\":{\"account\":\"address to check\"},\"returns\":{\"_0\":\"if the given address is an entity\"}},\"lastVersion()\":{\"details\":\"If zero, no implementations are whitelisted.\",\"returns\":{\"_0\":\"version of the last implementation\"}},\"migrate(address,uint64,bytes)\":{\"details\":\"Only the entity's owner can call this function.\",\"params\":{\"data\":\"some data to reinitialize the contract with\",\"entity\":\"address of the entity to migrate\",\"newVersion\":\"new version to migrate to\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"totalEntities()\":{\"returns\":{\"_0\":\"total number of entities added\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"whitelist(address)\":{\"params\":{\"implementation\":\"address of the new implementation\"}}},\"version\":1},\"userdoc\":{\"events\":{\"AddEntity(address)\":{\"notice\":\"Emitted when an entity is added.\"},\"Blacklist(uint64)\":{\"notice\":\"Emitted when a version is blacklisted (e.g., in case of invalid implementation).\"},\"Migrate(address,uint64)\":{\"notice\":\"Emitted when an entity is migrated to a new version.\"},\"Whitelist(address)\":{\"notice\":\"Emitted when a new implementation is whitelisted.\"}},\"kind\":\"user\",\"methods\":{\"blacklist(uint64)\":{\"notice\":\"Blacklist a version of entities.\"},\"blacklisted(uint64)\":{\"notice\":\"Get if a version is blacklisted (e.g., in case of invalid implementation).\"},\"create(uint64,address,bytes)\":{\"notice\":\"Create a new entity at the factory.\"},\"entity(uint256)\":{\"notice\":\"Get an entity given its index.\"},\"implementation(uint64)\":{\"notice\":\"Get the implementation for a given version.\"},\"isEntity(address)\":{\"notice\":\"Get if a given address is an entity.\"},\"lastVersion()\":{\"notice\":\"Get the last available version.\"},\"migrate(address,uint64,bytes)\":{\"notice\":\"Migrate a given entity to a given newer version.\"},\"totalEntities()\":{\"notice\":\"Get a total number of entities.\"},\"whitelist(address)\":{\"notice\":\"Whitelist a new implementation for entities.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/VaultFactory.sol\":\"VaultFactory\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"keccak256\":\"0xbfb6695731de677140fbf76c772ab08c4233a122fb51ac28ac120fc49bbbc4ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68f8fded7cc318efa15874b7c6a983fe17a4a955d72d240353a9a4ca1e1b824c\",\"dweb:/ipfs/QmdcmBL9Qo4Tk3Dby4wFYabGyot9JNeLPxpSXZUgUm92BV\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://547d21aa17f4f3f1a1a7edf7167beff8dd9496a0348d5588f15cc8a4b29d052a\",\"dweb:/ipfs/QmT16JtRQSWNpLo9W23jr6CzaMuTAcQcjJJcdRd8HLJ6cE\"]},\"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1\",\"dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA\"]},\"src/contracts/VaultFactory.sol\":{\"keccak256\":\"0xa9122dd11e5f21fa97a813e90f8c4905f0a4967b9611dd03437a31377cbdecb8\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://4c2feda1f9c0c7ddf65bccdc99494e4bfbb820fcddc3e4222e3b58ef821424a3\",\"dweb:/ipfs/Qmdmt4rH214jDmDsF9ELvJXVCt8abhk6poSmhJqqzLse3R\"]},\"src/contracts/common/MigratableEntityProxy.sol\":{\"keccak256\":\"0x78ba27242276232ad10a45265e3c07f0a25722456f6abb3fb3f24a1c8e1b38d1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://a19623df688e5085036b59fc934e35b72997f875d7ffda1cdc557c6ca468206d\",\"dweb:/ipfs/QmaQiT5uYZu5JmqhMjTDJnsq3nqaHbKrWAjrxKKLesdHV7\"]},\"src/contracts/common/MigratablesFactory.sol\":{\"keccak256\":\"0x5d1487c3456da4bd0bc2a131eeab97ab92484c923edefaebf190cc08d4080093\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://fec38d2e52e9c5148e95599c133fd6fe66d41296d6fc06e7329d2db199a1798f\",\"dweb:/ipfs/QmeiaydBXHHkJRUnpaZH1C6JQ7HPocTvQbUJBqKTvUeEYv\"]},\"src/contracts/common/Registry.sol\":{\"keccak256\":\"0x4a4004836d920953a8ec6e223de9a330f43acf7a5b93c6b8b3e4a95e0f129889\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://e8bdda207f3852c683a2b481602239a914f7e26bcd042ade618e263a43b67652\",\"dweb:/ipfs/Qmb8GZykJWxZcfwNp3SqhFizDFydFuV6LXgemV3vnWyLyu\"]},\"src/interfaces/IVaultFactory.sol\":{\"keccak256\":\"0x6f658b264fc8d530e458a98d83a09cb55ace4d3e509f0a3e9294471bb1bcf84d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a7253435e4e1d1ae19a50d14091ddb254f6a36f296440106bfc094623dd1aeba\",\"dweb:/ipfs/QmbHK9yoQ7Ctf3nuDLmqxTWPYD8cEm1TKXzfxePtE87AQN\"]},\"src/interfaces/common/IMigratableEntity.sol\":{\"keccak256\":\"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c\",\"dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds\"]},\"src/interfaces/common/IMigratableEntityProxy.sol\":{\"keccak256\":\"0x9030ced51ad12e0b3ddaa11bba4a3adcfa29e67b909c46065c14b19d158bb9fd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d859c21510d1a0f06a71abe21dc6424608c1b2e3194a10e4df4cc88c4de9e9f\",\"dweb:/ipfs/QmNi6Buri2oaujc4vTv6bZ5mgMKFsjUmYmQLUNaDCXFEEt\"]},\"src/interfaces/common/IMigratablesFactory.sol\":{\"keccak256\":\"0xd4dfe9449bf005dbcbab9e0e85eaaca15a601ff971f34182a0b1832dc4b9d124\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff8b73285192a9c64160b008d23a09da33e7164d10a9dc29d1a4464bd9c02be5\",\"dweb:/ipfs/QmZQW2LLV4dQfJ3coENKeycbzXJzi7zdvupsqWA4UV29Gq\"]},\"src/interfaces/common/IRegistry.sol\":{\"keccak256\":\"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014\",\"dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AlreadyBlacklisted"},{"inputs":[],"type":"error","name":"AlreadyWhitelisted"},{"inputs":[],"type":"error","name":"EntityNotExist"},{"inputs":[],"type":"error","name":"InvalidImplementation"},{"inputs":[],"type":"error","name":"InvalidVersion"},{"inputs":[],"type":"error","name":"NotOwner"},{"inputs":[],"type":"error","name":"OldVersion"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"entity","type":"address","indexed":true}],"type":"event","name":"AddEntity","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":true}],"type":"event","name":"Blacklist","anonymous":false},{"inputs":[{"internalType":"address","name":"entity","type":"address","indexed":true},{"internalType":"uint64","name":"newVersion","type":"uint64","indexed":false}],"type":"event","name":"Migrate","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Whitelist","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"blacklist"},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64"}],"stateMutability":"view","type":"function","name":"blacklisted","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64"},{"internalType":"address","name":"owner_","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"create","outputs":[{"internalType":"address","name":"entity_","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function","name":"entity","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64"}],"stateMutability":"view","type":"function","name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"entity_","type":"address"}],"stateMutability":"view","type":"function","name":"isEntity","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"lastVersion","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"entity_","type":"address"},{"internalType":"uint64","name":"newVersion","type":"uint64"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"migrate"},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"totalEntities","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"address","name":"implementation_","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"whitelist"}],"devdoc":{"kind":"dev","methods":{"blacklist(uint64)":{"details":"The given version will still be deployable.","params":{"version":"version to blacklist"}},"create(uint64,address,bytes)":{"details":"CREATE2 salt is constructed from the given parameters.","params":{"data":"initial data for the entity creation","owner":"initial owner of the entity","version":"entity's version to use"},"returns":{"entity_":"address of the entity"}},"entity(uint256)":{"params":{"index":"index of the entity to get"},"returns":{"_0":"address of the entity"}},"implementation(uint64)":{"details":"Reverts when an invalid version.","params":{"version":"version to get the implementation for"},"returns":{"_0":"address of the implementation"}},"isEntity(address)":{"params":{"account":"address to check"},"returns":{"_0":"if the given address is an entity"}},"lastVersion()":{"details":"If zero, no implementations are whitelisted.","returns":{"_0":"version of the last implementation"}},"migrate(address,uint64,bytes)":{"details":"Only the entity's owner can call this function.","params":{"data":"some data to reinitialize the contract with","entity":"address of the entity to migrate","newVersion":"new version to migrate to"}},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"totalEntities()":{"returns":{"_0":"total number of entities added"}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"whitelist(address)":{"params":{"implementation":"address of the new implementation"}}},"version":1},"userdoc":{"kind":"user","methods":{"blacklist(uint64)":{"notice":"Blacklist a version of entities."},"blacklisted(uint64)":{"notice":"Get if a version is blacklisted (e.g., in case of invalid implementation)."},"create(uint64,address,bytes)":{"notice":"Create a new entity at the factory."},"entity(uint256)":{"notice":"Get an entity given its index."},"implementation(uint64)":{"notice":"Get the implementation for a given version."},"isEntity(address)":{"notice":"Get if a given address is an entity."},"lastVersion()":{"notice":"Get the last available version."},"migrate(address,uint64,bytes)":{"notice":"Migrate a given entity to a given newer version."},"totalEntities()":{"notice":"Get a total number of entities."},"whitelist(address)":{"notice":"Whitelist a new implementation for entities."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/VaultFactory.sol":"VaultFactory"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol":{"keccak256":"0xbfb6695731de677140fbf76c772ab08c4233a122fb51ac28ac120fc49bbbc4ec","urls":["bzz-raw://68f8fded7cc318efa15874b7c6a983fe17a4a955d72d240353a9a4ca1e1b824c","dweb:/ipfs/QmdcmBL9Qo4Tk3Dby4wFYabGyot9JNeLPxpSXZUgUm92BV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol":{"keccak256":"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65","urls":["bzz-raw://547d21aa17f4f3f1a1a7edf7167beff8dd9496a0348d5588f15cc8a4b29d052a","dweb:/ipfs/QmT16JtRQSWNpLo9W23jr6CzaMuTAcQcjJJcdRd8HLJ6cE"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol":{"keccak256":"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd","urls":["bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac","dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c","urls":["bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa","dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721","urls":["bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245","dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418","urls":["bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c","dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol":{"keccak256":"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa","urls":["bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1","dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA"],"license":"MIT"},"src/contracts/VaultFactory.sol":{"keccak256":"0xa9122dd11e5f21fa97a813e90f8c4905f0a4967b9611dd03437a31377cbdecb8","urls":["bzz-raw://4c2feda1f9c0c7ddf65bccdc99494e4bfbb820fcddc3e4222e3b58ef821424a3","dweb:/ipfs/Qmdmt4rH214jDmDsF9ELvJXVCt8abhk6poSmhJqqzLse3R"],"license":"BUSL-1.1"},"src/contracts/common/MigratableEntityProxy.sol":{"keccak256":"0x78ba27242276232ad10a45265e3c07f0a25722456f6abb3fb3f24a1c8e1b38d1","urls":["bzz-raw://a19623df688e5085036b59fc934e35b72997f875d7ffda1cdc557c6ca468206d","dweb:/ipfs/QmaQiT5uYZu5JmqhMjTDJnsq3nqaHbKrWAjrxKKLesdHV7"],"license":"BUSL-1.1"},"src/contracts/common/MigratablesFactory.sol":{"keccak256":"0x5d1487c3456da4bd0bc2a131eeab97ab92484c923edefaebf190cc08d4080093","urls":["bzz-raw://fec38d2e52e9c5148e95599c133fd6fe66d41296d6fc06e7329d2db199a1798f","dweb:/ipfs/QmeiaydBXHHkJRUnpaZH1C6JQ7HPocTvQbUJBqKTvUeEYv"],"license":"BUSL-1.1"},"src/contracts/common/Registry.sol":{"keccak256":"0x4a4004836d920953a8ec6e223de9a330f43acf7a5b93c6b8b3e4a95e0f129889","urls":["bzz-raw://e8bdda207f3852c683a2b481602239a914f7e26bcd042ade618e263a43b67652","dweb:/ipfs/Qmb8GZykJWxZcfwNp3SqhFizDFydFuV6LXgemV3vnWyLyu"],"license":"BUSL-1.1"},"src/interfaces/IVaultFactory.sol":{"keccak256":"0x6f658b264fc8d530e458a98d83a09cb55ace4d3e509f0a3e9294471bb1bcf84d","urls":["bzz-raw://a7253435e4e1d1ae19a50d14091ddb254f6a36f296440106bfc094623dd1aeba","dweb:/ipfs/QmbHK9yoQ7Ctf3nuDLmqxTWPYD8cEm1TKXzfxePtE87AQN"],"license":"MIT"},"src/interfaces/common/IMigratableEntity.sol":{"keccak256":"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4","urls":["bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c","dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds"],"license":"MIT"},"src/interfaces/common/IMigratableEntityProxy.sol":{"keccak256":"0x9030ced51ad12e0b3ddaa11bba4a3adcfa29e67b909c46065c14b19d158bb9fd","urls":["bzz-raw://2d859c21510d1a0f06a71abe21dc6424608c1b2e3194a10e4df4cc88c4de9e9f","dweb:/ipfs/QmNi6Buri2oaujc4vTv6bZ5mgMKFsjUmYmQLUNaDCXFEEt"],"license":"MIT"},"src/interfaces/common/IMigratablesFactory.sol":{"keccak256":"0xd4dfe9449bf005dbcbab9e0e85eaaca15a601ff971f34182a0b1832dc4b9d124","urls":["bzz-raw://ff8b73285192a9c64160b008d23a09da33e7164d10a9dc29d1a4464bd9c02be5","dweb:/ipfs/QmZQW2LLV4dQfJ3coENKeycbzXJzi7zdvupsqWA4UV29Gq"],"license":"MIT"},"src/interfaces/common/IRegistry.sol":{"keccak256":"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb","urls":["bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014","dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK"],"license":"MIT"}},"version":1},"id":68} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[{"name":"owner_","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"blacklist","inputs":[{"name":"version","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"blacklisted","inputs":[{"name":"version","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"create","inputs":[{"name":"version","type":"uint64","internalType":"uint64"},{"name":"owner_","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"entity_","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"entity","inputs":[{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"implementation","inputs":[{"name":"version","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"isEntity","inputs":[{"name":"entity_","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"lastVersion","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"migrate","inputs":[{"name":"entity_","type":"address","internalType":"address"},{"name":"newVersion","type":"uint64","internalType":"uint64"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"totalEntities","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"whitelist","inputs":[{"name":"implementation_","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"AddEntity","inputs":[{"name":"entity","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Blacklist","inputs":[{"name":"version","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"Migrate","inputs":[{"name":"entity","type":"address","indexed":true,"internalType":"address"},{"name":"newVersion","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Whitelist","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AlreadyBlacklisted","inputs":[]},{"type":"error","name":"AlreadyWhitelisted","inputs":[]},{"type":"error","name":"EntityNotExist","inputs":[]},{"type":"error","name":"InvalidImplementation","inputs":[]},{"type":"error","name":"InvalidVersion","inputs":[]},{"type":"error","name":"NotOwner","inputs":[]},{"type":"error","name":"OldVersion","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x60803460b557601f61121538819003918201601f19168301916001600160401b0383118484101760b95780849260209460405283398101031260b557516001600160a01b03908181169081900360b5578015609d57600280546001600160a01b03198116831790915560405192167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a361114790816100ce8239f35b604051631e4fbdf760e01b81525f6004820152602490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60406080815260049081361015610014575f80fd5b5f915f3560e01c90816314887c581461084a5781633ac04911146106dc57816358336662146104945781635cd8b15e1461047757816364dfea061461044f578163715018a6146103f25781638da5cb5b146103c95781639b19251a146102e3578163b42ba2a214610273578163b572a966146101b9578163b6caa1191461017c578163f2fde38b146100e8575063f9661602146100af575f80fd5b346100e45760203660031901126100e4576020906100d36100ce6108a3565b610999565b90516001600160a01b039091168152f35b5080fd5b9050346101785760203660031901126101785761010361088d565b9061010c610a0f565b6001600160a01b03918216928315610162575050600254826bffffffffffffffffffffffff60a01b821617600255167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a380f35b51631e4fbdf760e01b8152908101849052602490fd5b8280fd5b5050346100e45760203660031901126100e45760ff8160209367ffffffffffffffff6101a66108a3565b1681526003855220541690519015158152f35b91905034610178576020366003190112610178576101d56108a3565b916101de610a0f565b67ffffffffffffffff809316928315908115610266575b5061025857828452600360205260ff828520541661024a575081835260036020528220805460ff191660011790557ffc8245c2838846b295ae66fbe0d08e20c799b737c93b56f7b209df2e5fa2d4588280a280f35b905163f53de75f60e01b8152fd5b905163a9146eeb60e01b8152fd5b905081541683115f6101f5565b8284346102e05760203660031901126102e0575081355f548110156102cd575f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563015490516001600160a01b03909116815260209150f35b603283634e487b7160e01b5f525260245ffd5b80fd5b905034610178576020366003190112610178576102fe61088d565b91610307610a0f565b80516202dd3160ec1b81526001600160a01b03938416936020828581885afa9182156103bf57869261038e575b50309116036103815761034683610af2565b156103745750507feb73900b98b6a3e2b8b01708fe544760cf570d21e7fbe5225f24e48b5b2b432e8280a280f35b5163b73e95e160e01b8152fd5b5163340aafcd60e11b8152fd5b6103b191925060203d6020116103b8575b6103a98183610908565b81019061097a565b905f610334565b503d61039f565b83513d88823e3d90fd5b5050346100e457816003193601126100e45760025490516001600160a01b039091168152602090f35b83346102e057806003193601126102e05761040b610a0f565b600280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b8284346102e057806003193601126102e0575067ffffffffffffffff60209254169051908152f35b5050346100e457816003193601126100e457602091549051908152f35b83833461063d57606036600319011261063d576104af61088d565b6024359167ffffffffffffffff908184169182850361063d5760443581811161063d576104df90369089016108ba565b6001600160a01b039586165f81815260016020526040902054909792939290156106cc578451638da5cb5b60e01b81526020979088818d818d5afa9081156106c2575f916106a5575b5016330361069557845163054fd4d560e41b815287818c818c5afa90811561068b579084915f91610651575b5016861115610641576105696105a291610999565b916105948651958692630557c60960e31b8b85015289602485015288604485015260648401916108e8565b03601f198101855284610908565b863b1561063d57835163278f794360e11b8152925f91849182916105c991908d840161093e565b0381838a5af1801561063357610607575b5050519081527fb91c18bf7dbfdff96560fb98128531c4c6187079fe0bd7f24a81f54ea87f35a79190a280f35b9080929650116106205784529293505f928486806105da565b604186634e487b7160e01b5f525260245ffd5b83513d5f823e3d90fd5b5f80fd5b8451630384ebd960e41b81528a90fd5b809250898092503d8311610684575b61066a8183610908565b8101031261063d5751838116810361063d5783908c610554565b503d610660565b86513d5f823e3d90fd5b84516330cd747160e01b81528a90fd5b6106bc9150893d8b116103b8576103a98183610908565b8c610528565b87513d5f823e3d90fd5b845163e3fd10ff60e01b81528a90fd5b823461063d57606036600319011261063d576106f66108a3565b6001600160a01b03926024358481169081900361063d5760443567ffffffffffffffff80821161063d576107306107bf92369086016108ba565b92905f546107b389519260208401928352610785868b1693848d8701528960608701526080808701528561076860a082018b866108e8565b039561077c601f1997888101835282610908565b5190209a610999565b968b519889946315fb20f360e21b6020870152602486015260448501526060606485015260848401916108e8565b03908101855284610908565b8551936105c39081860192868410908411176108375750918493916107e893610b4f863961093e565b03905ff591821561082d57602092169061080182610a84565b505190807fb919910dcefbf753bfd926ab3b1d3f85d877190c3d01ba1bd585047b99b99f0b5f80a28152f35b50513d5f823e3d90fd5b604190634e487b7160e01b5f525260245ffd5b823461063d57602036600319011261063d576020906108846001600160a01b0361087261088d565b165f52600160205260405f2054151590565b90519015158152f35b600435906001600160a01b038216820361063d57565b6004359067ffffffffffffffff8216820361063d57565b9181601f8401121561063d5782359167ffffffffffffffff831161063d576020838186019501011161063d57565b908060209392818452848401375f828201840152601f01601f1916010190565b90601f8019910116810190811067ffffffffffffffff82111761092a57604052565b634e487b7160e01b5f52604160045260245ffd5b6001600160a01b0390911681526040602080830182905283519183018290526060938291018484015e5f828201840152601f01601f1916010190565b9081602091031261063d57516001600160a01b038116810361063d5790565b67ffffffffffffffff80911680158015610a02575b6109f0575f1901908082116109dc576109c79116610a3b565b905460039190911b1c6001600160a01b031690565b634e487b7160e01b5f52601160045260245ffd5b60405163a9146eeb60e01b8152600490fd5b50816004541681116109ae565b6002546001600160a01b03163303610a2357565b60405163118cdaa760e01b8152336004820152602490fd5b600454811015610a705760045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01905f90565b634e487b7160e01b5f52603260045260245ffd5b805f52600160205260405f2054155f14610aed575f54600160401b81101561092a5760018101805f55811015610a705781907f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56301555f54905f52600160205260405f2055600190565b505f90565b805f52600560205260405f2054155f14610aed57600454600160401b81101561092a57806001610b259201600455610a3b565b81549060031b9083821b915f19901b1916179055600454905f52600560205260405f205560019056fe604060a08152346101df576105c38038038061001a816101e3565b92833981019082818303126101df5780516001600160a01b0392838216918281036101df5760208481015190946001600160401b0382116101df570182601f820112156101df57805161007461006f8261021c565b6101e3565b91818352868301948783830101116101df57815f9288809301875e83010152813b156101c7577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b03199081168617909155937fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a25180156101bf575f809161012694845af43d156101b7573d9161011861006f8461021c565b9283523d5f8785013e610237565b505b336080527f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f847fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610394855494825191861682523390820152a133156101a057163317905551610328908161029b82396080518160f10152f35b8351633173bdd160e11b81525f6004820152602490fd5b606091610237565b505050610128565b8651634c9c8ce360e01b815260048101859052602490fd5b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761020857604052565b634e487b7160e01b5f52604160045260245ffd5b6001600160401b03811161020857601f01601f191660200190565b9061025e575080511561024c57805190602001fd5b60405163d6bda27560e01b8152600490fd5b81511580610291575b61026f575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b1561026756fe6080604052600436106101f4575f3560e01c634f1ef286036101f45734610086576040366003190112610086576004356001600160a01b0381168103610086576024359067ffffffffffffffff9081831161008657366023840112156100865782600401359182116100865736602483850101116100865760246100849301906100e5565b005b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b6040519190601f01601f1916820167ffffffffffffffff8111838210176100c457604052565b61008a565b67ffffffffffffffff81116100c457601f01601f191660200190565b916001600160a01b03907f0000000000000000000000000000000000000000000000000000000000000000821633036101e257610129610124826100c9565b61009e565b92818452368282011161008657815f926020928387013784010152823b156101c85782167f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc816bffffffffffffffffffffffff60a01b8254161790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28051156101bc576101b991610256565b50565b50506101c661023d565b565b604051634c9c8ce360e01b81529083166004820152602490fd5b6040516334ad5dbb60e21b8152600490fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545f9081906001600160a01b0316368280378136915af43d5f803e15610239573d5ff35b3d5ffd5b3461024457565b60405163b398979f60e01b8152600490fd5b5f8061028893602081519101845af43d1561028b573d91610279610124846100c9565b9283523d5f602085013e61028f565b90565b6060915b906102b657508051156102a457805190602001fd5b60405163d6bda27560e01b8152600490fd5b815115806102e9575b6102c7575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b156102bf56fea2646970667358221220df21b8bf1cc52a49f5a8c95057c072fa7c7f0fb4ba07d9311151dffababb98cd64736f6c63430008190033a26469706673582212204fd66d130737ef1dde2ca5d1ef238d1a0746266a4a527657c2cbb48f94c05c1364736f6c63430008190033","sourceMap":"195:138:75:-:0;;;;;;;;;;;;;-1:-1:-1;;195:138:75;;;;-1:-1:-1;;;;;195:138:75;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;195:138:75;;;;;;;;;;1273:26:30;;1269:95;;3004:6;195:138:75;;-1:-1:-1;;;;;;195:138:75;;;;;;;;;;;3052:40:30;-1:-1:-1;;3052:40:30;195:138:75;;;;;;;1269:95:30;195:138:75;;-1:-1:-1;;;1322:31:30;;-1:-1:-1;1322:31:30;;;195:138:75;;;1322:31:30;195:138:75;-1:-1:-1;195:138:75;;;;;;-1:-1:-1;195:138:75;;;;;-1:-1:-1;195:138:75","linkReferences":{}},"deployedBytecode":{"object":"0x60406080815260049081361015610014575f80fd5b5f915f3560e01c90816314887c581461084a5781633ac04911146106dc57816358336662146104945781635cd8b15e1461047757816364dfea061461044f578163715018a6146103f25781638da5cb5b146103c95781639b19251a146102e3578163b42ba2a214610273578163b572a966146101b9578163b6caa1191461017c578163f2fde38b146100e8575063f9661602146100af575f80fd5b346100e45760203660031901126100e4576020906100d36100ce6108a3565b610999565b90516001600160a01b039091168152f35b5080fd5b9050346101785760203660031901126101785761010361088d565b9061010c610a0f565b6001600160a01b03918216928315610162575050600254826bffffffffffffffffffffffff60a01b821617600255167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a380f35b51631e4fbdf760e01b8152908101849052602490fd5b8280fd5b5050346100e45760203660031901126100e45760ff8160209367ffffffffffffffff6101a66108a3565b1681526003855220541690519015158152f35b91905034610178576020366003190112610178576101d56108a3565b916101de610a0f565b67ffffffffffffffff809316928315908115610266575b5061025857828452600360205260ff828520541661024a575081835260036020528220805460ff191660011790557ffc8245c2838846b295ae66fbe0d08e20c799b737c93b56f7b209df2e5fa2d4588280a280f35b905163f53de75f60e01b8152fd5b905163a9146eeb60e01b8152fd5b905081541683115f6101f5565b8284346102e05760203660031901126102e0575081355f548110156102cd575f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563015490516001600160a01b03909116815260209150f35b603283634e487b7160e01b5f525260245ffd5b80fd5b905034610178576020366003190112610178576102fe61088d565b91610307610a0f565b80516202dd3160ec1b81526001600160a01b03938416936020828581885afa9182156103bf57869261038e575b50309116036103815761034683610af2565b156103745750507feb73900b98b6a3e2b8b01708fe544760cf570d21e7fbe5225f24e48b5b2b432e8280a280f35b5163b73e95e160e01b8152fd5b5163340aafcd60e11b8152fd5b6103b191925060203d6020116103b8575b6103a98183610908565b81019061097a565b905f610334565b503d61039f565b83513d88823e3d90fd5b5050346100e457816003193601126100e45760025490516001600160a01b039091168152602090f35b83346102e057806003193601126102e05761040b610a0f565b600280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b8284346102e057806003193601126102e0575067ffffffffffffffff60209254169051908152f35b5050346100e457816003193601126100e457602091549051908152f35b83833461063d57606036600319011261063d576104af61088d565b6024359167ffffffffffffffff908184169182850361063d5760443581811161063d576104df90369089016108ba565b6001600160a01b039586165f81815260016020526040902054909792939290156106cc578451638da5cb5b60e01b81526020979088818d818d5afa9081156106c2575f916106a5575b5016330361069557845163054fd4d560e41b815287818c818c5afa90811561068b579084915f91610651575b5016861115610641576105696105a291610999565b916105948651958692630557c60960e31b8b85015289602485015288604485015260648401916108e8565b03601f198101855284610908565b863b1561063d57835163278f794360e11b8152925f91849182916105c991908d840161093e565b0381838a5af1801561063357610607575b5050519081527fb91c18bf7dbfdff96560fb98128531c4c6187079fe0bd7f24a81f54ea87f35a79190a280f35b9080929650116106205784529293505f928486806105da565b604186634e487b7160e01b5f525260245ffd5b83513d5f823e3d90fd5b5f80fd5b8451630384ebd960e41b81528a90fd5b809250898092503d8311610684575b61066a8183610908565b8101031261063d5751838116810361063d5783908c610554565b503d610660565b86513d5f823e3d90fd5b84516330cd747160e01b81528a90fd5b6106bc9150893d8b116103b8576103a98183610908565b8c610528565b87513d5f823e3d90fd5b845163e3fd10ff60e01b81528a90fd5b823461063d57606036600319011261063d576106f66108a3565b6001600160a01b03926024358481169081900361063d5760443567ffffffffffffffff80821161063d576107306107bf92369086016108ba565b92905f546107b389519260208401928352610785868b1693848d8701528960608701526080808701528561076860a082018b866108e8565b039561077c601f1997888101835282610908565b5190209a610999565b968b519889946315fb20f360e21b6020870152602486015260448501526060606485015260848401916108e8565b03908101855284610908565b8551936105c39081860192868410908411176108375750918493916107e893610b4f863961093e565b03905ff591821561082d57602092169061080182610a84565b505190807fb919910dcefbf753bfd926ab3b1d3f85d877190c3d01ba1bd585047b99b99f0b5f80a28152f35b50513d5f823e3d90fd5b604190634e487b7160e01b5f525260245ffd5b823461063d57602036600319011261063d576020906108846001600160a01b0361087261088d565b165f52600160205260405f2054151590565b90519015158152f35b600435906001600160a01b038216820361063d57565b6004359067ffffffffffffffff8216820361063d57565b9181601f8401121561063d5782359167ffffffffffffffff831161063d576020838186019501011161063d57565b908060209392818452848401375f828201840152601f01601f1916010190565b90601f8019910116810190811067ffffffffffffffff82111761092a57604052565b634e487b7160e01b5f52604160045260245ffd5b6001600160a01b0390911681526040602080830182905283519183018290526060938291018484015e5f828201840152601f01601f1916010190565b9081602091031261063d57516001600160a01b038116810361063d5790565b67ffffffffffffffff80911680158015610a02575b6109f0575f1901908082116109dc576109c79116610a3b565b905460039190911b1c6001600160a01b031690565b634e487b7160e01b5f52601160045260245ffd5b60405163a9146eeb60e01b8152600490fd5b50816004541681116109ae565b6002546001600160a01b03163303610a2357565b60405163118cdaa760e01b8152336004820152602490fd5b600454811015610a705760045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01905f90565b634e487b7160e01b5f52603260045260245ffd5b805f52600160205260405f2054155f14610aed575f54600160401b81101561092a5760018101805f55811015610a705781907f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56301555f54905f52600160205260405f2055600190565b505f90565b805f52600560205260405f2054155f14610aed57600454600160401b81101561092a57806001610b259201600455610a3b565b81549060031b9083821b915f19901b1916179055600454905f52600560205260405f205560019056fe604060a08152346101df576105c38038038061001a816101e3565b92833981019082818303126101df5780516001600160a01b0392838216918281036101df5760208481015190946001600160401b0382116101df570182601f820112156101df57805161007461006f8261021c565b6101e3565b91818352868301948783830101116101df57815f9288809301875e83010152813b156101c7577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b03199081168617909155937fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a25180156101bf575f809161012694845af43d156101b7573d9161011861006f8461021c565b9283523d5f8785013e610237565b505b336080527f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f847fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610394855494825191861682523390820152a133156101a057163317905551610328908161029b82396080518160f10152f35b8351633173bdd160e11b81525f6004820152602490fd5b606091610237565b505050610128565b8651634c9c8ce360e01b815260048101859052602490fd5b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761020857604052565b634e487b7160e01b5f52604160045260245ffd5b6001600160401b03811161020857601f01601f191660200190565b9061025e575080511561024c57805190602001fd5b60405163d6bda27560e01b8152600490fd5b81511580610291575b61026f575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b1561026756fe6080604052600436106101f4575f3560e01c634f1ef286036101f45734610086576040366003190112610086576004356001600160a01b0381168103610086576024359067ffffffffffffffff9081831161008657366023840112156100865782600401359182116100865736602483850101116100865760246100849301906100e5565b005b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b6040519190601f01601f1916820167ffffffffffffffff8111838210176100c457604052565b61008a565b67ffffffffffffffff81116100c457601f01601f191660200190565b916001600160a01b03907f0000000000000000000000000000000000000000000000000000000000000000821633036101e257610129610124826100c9565b61009e565b92818452368282011161008657815f926020928387013784010152823b156101c85782167f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc816bffffffffffffffffffffffff60a01b8254161790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28051156101bc576101b991610256565b50565b50506101c661023d565b565b604051634c9c8ce360e01b81529083166004820152602490fd5b6040516334ad5dbb60e21b8152600490fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545f9081906001600160a01b0316368280378136915af43d5f803e15610239573d5ff35b3d5ffd5b3461024457565b60405163b398979f60e01b8152600490fd5b5f8061028893602081519101845af43d1561028b573d91610279610124846100c9565b9283523d5f602085013e61028f565b90565b6060915b906102b657508051156102a457805190602001fd5b60405163d6bda27560e01b8152600490fd5b815115806102e9575b6102c7575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b156102bf56fea2646970667358221220df21b8bf1cc52a49f5a8c95057c072fa7c7f0fb4ba07d9311151dffababb98cd64736f6c63430008190033a26469706673582212204fd66d130737ef1dde2ca5d1ef238d1a0746266a4a527657c2cbb48f94c05c1364736f6c63430008190033","sourceMap":"195:138:75:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;195:138:75;;;;;;1576:7:80;195:138:75;;:::i;:::-;1576:7:80;:::i;:::-;195:138:75;;-1:-1:-1;;;;;195:138:75;;;;;;;;;;;;;;;;;;-1:-1:-1;;195:138:75;;;;;;:::i;:::-;1500:62:30;;;:::i;:::-;-1:-1:-1;;;;;195:138:75;;;;2627:22:30;;2623:91;;195:138:75;;3004:6:30;195:138:75;;;;;;;;3004:6:30;195:138:75;;3052:40:30;195:138:75;3052:40:30;;195:138:75;;2623:91:30;195:138:75;-1:-1:-1;;;2672:31:30;;;;;195:138:75;;;;;2672:31:30;195:138:75;;;;;;;;;;;;-1:-1:-1;;195:138:75;;;;;;;;;;;:::i;:::-;;;;869:56:80;195:138:75;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;195:138:75;;;;;;:::i;:::-;1500:62:30;;;:::i;:::-;195:138:75;;;;1065:12:80;;;:39;;;;;195:138:75;1061:93:80;;;195:138:75;;;2251:11:80;195:138:75;;;;;;;;2247:78:80;;-1:-1:-1;195:138:75;;;2251:11:80;195:138:75;;;;;;-1:-1:-1;;195:138:75;2358:4:80;195:138:75;;;2378:18:80;195:138:75;;2378:18:80;195:138:75;;2247:78:80;195:138:75;;-1:-1:-1;;;2294:20:80;;;1061:93;195:138:75;;-1:-1:-1;;;1127:16:80;;;1065:39;195:138:75;;;;;1081:23:80;;1065:39;;;195:138:75;;;;;;;;-1:-1:-1;;195:138:75;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;195:138:75;;;;;;;-1:-1:-1;195:138:75;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;195:138:75;;;;;;:::i;:::-;1500:62:30;;;:::i;:::-;195:138:75;;-1:-1:-1;;;1804:44:80;;-1:-1:-1;;;;;195:138:75;;;;;;1804:44:80;195:138:75;;1804:44:80;;;;;;;;;;;195:138:75;1860:4:80;;195:138:75;;1804:61:80;1800:122;;8382:50:67;;;:::i;:::-;1935:49:80;1931:107;;2053:26;;;;;;195:138:75;;1931:107:80;195:138:75;-1:-1:-1;;;2007:20:80;;;1800:122;195:138:75;-1:-1:-1;;;1888:23:80;;;1804:44;;;;;195:138:75;1804:44:80;195:138:75;1804:44:80;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;195:138:75;;;;;;;;;;;;;;;;;;;;;;;1710:6:30;195:138:75;;;-1:-1:-1;;;;;195:138:75;;;;;;;;;;;;;;;;;;;;;1500:62:30;;:::i;:::-;3004:6;195:138:75;;-1:-1:-1;;;;;;195:138:75;;;;;;;-1:-1:-1;;;;;195:138:75;3052:40:30;195:138:75;;3052:40:30;195:138:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;195:138:75;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;195:138:75;;;;;;;;;;;;;;;;;;;8947:55:67;4360:26;1185:72:81;;195:138:75;;-1:-1:-1;;;3069:24:80;;195:138:75;;;;;3069:24:80;195:138:75;3069:24:80;;;;;;;;195:138:75;3069:24:80;;;195:138:75;;;3055:10:80;:38;3051:86;;195:138:75;;-1:-1:-1;;;3165:36:80;;;195:138:75;3165:36:80;195:138:75;3165:36:80;;;;;;;;;;;195:138:75;3165:36:80;;;195:138:75;;;3151:50:80;;;3147:100;;1576:7;3347:61;1576:7;;:::i;:::-;195:138:75;;;;3347:61:80;;;;;;;;;;;195:138:75;3347:61:80;;195:138:75;;;;;;;;;;;:::i;:::-;3347:61:80;2651:50;;3347:61;;;;;;:::i;:::-;3257:161;;;;;195:138:75;;-1:-1:-1;;;3257:161:80;;195:138:75;;;;;;;3257:161:80;;195:138:75;3257:161:80;;;;:::i;:::-;;;;;;;;;;;;;195:138:75;-1:-1:-1;;195:138:75;;;;3434:28:80;;195:138:75;3434:28:80;195:138:75;;3257:161:80;195:138:75;;;;;;;;;;;;-1:-1:-1;195:138:75;;;3257:161:80;;;;195:138:75;;;;;;;;;;;;3257:161:80;195:138:75;;;;;;;;;3257:161:80;195:138:75;;;3147:100:80;195:138:75;;-1:-1:-1;;;3224:12:80;;195:138:75;;3224:12:80;3165:36;;;;;;;;;;;;;;;;;;:::i;:::-;;;195:138:75;;;;;;;;;;;;3165:36:80;;;;;;;;;;;195:138:75;;;;;;;;;3051:86:80;195:138:75;;-1:-1:-1;;;3116:10:80;;195:138:75;;3116:10:80;3069:24;;;;;;;;;;;;;;:::i;:::-;;;;;195:138:75;;;;;;;;;1185:72:81;195:138:75;;-1:-1:-1;;;1230:16:81;;195:138:75;;1230:16:81;195:138:75;;;;;;;-1:-1:-1;;195:138:75;;;;;;:::i;:::-;-1:-1:-1;;;;;195:138:75;;;;;;;;;;;;;;;;;;;;;2746:69:80;195:138:75;;;;;;:::i;:::-;;;;;;;;2651:50:80;195:138:75;2651:50:80;;195:138:75;;;1576:7:80;195:138:75;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2651:50:80;;;;;;;;;;;;;:::i;:::-;195:138:75;2641:61:80;;1576:7;;:::i;:::-;195:138:75;;;2746:69:80;;;;;;195:138:75;2746:69:80;;;195:138:75;2746:69:80;;195:138:75;;;;;;;;;;;;;;;:::i;:::-;2746:69:80;;;;;;;;:::i;:::-;195:138:75;;2609:220:80;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;195:138:75;2609:220:80;;;;;;195:138:75;;;8382:50:67;;;;:::i;:::-;;195:138:75;1077:18:81;;;195:138:75;1077:18:81;;195:138:75;;;2609:220:80;195:138:75;;;;;;;;;2609:220:80;195:138:75;;;;;;;;;;;;;;;;;;-1:-1:-1;;195:138:75;;;;;;8947:55:67;-1:-1:-1;;;;;195:138:75;;:::i;:::-;;;;4360:14:67;195:138:75;;;;;;4360:26:67;;4264:129;;8947:55;195:138:75;;;;;;;;;;;;-1:-1:-1;;;;;195:138:75;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;195:138:75;;;;;;;;-1:-1:-1;;195:138:75;;;;:::o;:::-;;;2651:50:80;;195:138:75;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;195:138:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;195:138:75;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;195:138:75;;;;;;;:::o;999:172:80:-;195:138:75;;;;1065:12:80;;:39;;;;999:172;1061:93;;-1:-1:-1;;195:138:75;;;;;;;5016:18:67;195:138:75;;5016:18:67;:::i;:::-;195:138:75;;;;;;;;-1:-1:-1;;;;;195:138:75;;999:172:80:o;195:138:75:-;;;;;;;1602:27:80;195:138:75;;;;1061:93:80;195:138:75;;-1:-1:-1;;;1127:16:80;;;;;1065:39;195:138:75;;1374:27:80;195:138:75;;1081:23:80;;1065:39;;1796:162:30;1710:6;195:138:75;-1:-1:-1;;;;;195:138:75;735:10:52;1855:23:30;1851:101;;1796:162::o;1851:101::-;195:138:75;;-1:-1:-1;;;1901:40:30;;735:10:52;1901:40:30;;;195:138:75;;;1901:40:30;195:138:75;1602:27:80;195:138:75;;;;;;1602:27:80;-1:-1:-1;195:138:75;;;;-1:-1:-1;195:138:75;:::o;:::-;;;;;;;1602:27:80;195:138:75;;;;2241:406:67;195:138:75;;;4360:14:67;195:138:75;;;;;;4360:26:67;2320:321;195:138:75;;;;;-1:-1:-1;;;195:138:75;;;;;4360:14:67;195:138:75;;;;;;;;;;;;;;;;;;;;4360:14:67;195:138:75;;;;;;4360:14:67;2576:11;:::o;2320:321::-;2618:12;195:138:75;2618:12:67;:::o;2241:406::-;195:138:75;-1:-1:-1;195:138:75;4360:14:67;195:138:75;;;-1:-1:-1;195:138:75;;4360:26:67;2320:321;195:138:75;;;;;-1:-1:-1;;;195:138:75;;;;;;4360:14:67;195:138:75;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;195:138:75;4360:14:67;195:138:75;;;-1:-1:-1;195:138:75;;4360:14:67;2576:11;:::o","linkReferences":{}},"methodIdentifiers":{"blacklist(uint64)":"b572a966","blacklisted(uint64)":"b6caa119","create(uint64,address,bytes)":"3ac04911","entity(uint256)":"b42ba2a2","implementation(uint64)":"f9661602","isEntity(address)":"14887c58","lastVersion()":"64dfea06","migrate(address,uint64,bytes)":"58336662","owner()":"8da5cb5b","renounceOwnership()":"715018a6","totalEntities()":"5cd8b15e","transferOwnership(address)":"f2fde38b","whitelist(address)":"9b19251a"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AlreadyBlacklisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadyWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EntityNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidVersion\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OldVersion\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"entity\",\"type\":\"address\"}],\"name\":\"AddEntity\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Blacklist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"entity\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newVersion\",\"type\":\"uint64\"}],\"name\":\"Migrate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Whitelist\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"blacklist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"blacklisted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner_\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"create\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"entity_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"entity\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"entity_\",\"type\":\"address\"}],\"name\":\"isEntity\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastVersion\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"entity_\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"newVersion\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"migrate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalEntities\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation_\",\"type\":\"address\"}],\"name\":\"whitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"events\":{\"AddEntity(address)\":{\"params\":{\"entity\":\"address of the added entity\"}},\"Blacklist(uint64)\":{\"details\":\"The given version is still deployable.\",\"params\":{\"version\":\"version that was blacklisted\"}},\"Migrate(address,uint64)\":{\"params\":{\"entity\":\"address of the entity\",\"newVersion\":\"new version of the entity\"}},\"Whitelist(address)\":{\"params\":{\"implementation\":\"address of the new implementation\"}}},\"kind\":\"dev\",\"methods\":{\"blacklist(uint64)\":{\"details\":\"The given version will still be deployable.\",\"params\":{\"version\":\"version to blacklist\"}},\"create(uint64,address,bytes)\":{\"details\":\"CREATE2 salt is constructed from the given parameters.\",\"params\":{\"data\":\"initial data for the entity creation\",\"owner\":\"initial owner of the entity\",\"version\":\"entity's version to use\"},\"returns\":{\"entity_\":\"address of the entity\"}},\"entity(uint256)\":{\"params\":{\"index\":\"index of the entity to get\"},\"returns\":{\"_0\":\"address of the entity\"}},\"implementation(uint64)\":{\"details\":\"Reverts when an invalid version.\",\"params\":{\"version\":\"version to get the implementation for\"},\"returns\":{\"_0\":\"address of the implementation\"}},\"isEntity(address)\":{\"params\":{\"account\":\"address to check\"},\"returns\":{\"_0\":\"if the given address is an entity\"}},\"lastVersion()\":{\"details\":\"If zero, no implementations are whitelisted.\",\"returns\":{\"_0\":\"version of the last implementation\"}},\"migrate(address,uint64,bytes)\":{\"details\":\"Only the entity's owner can call this function.\",\"params\":{\"data\":\"some data to reinitialize the contract with\",\"entity\":\"address of the entity to migrate\",\"newVersion\":\"new version to migrate to\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"totalEntities()\":{\"returns\":{\"_0\":\"total number of entities added\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"whitelist(address)\":{\"params\":{\"implementation\":\"address of the new implementation\"}}},\"version\":1},\"userdoc\":{\"events\":{\"AddEntity(address)\":{\"notice\":\"Emitted when an entity is added.\"},\"Blacklist(uint64)\":{\"notice\":\"Emitted when a version is blacklisted (e.g., in case of invalid implementation).\"},\"Migrate(address,uint64)\":{\"notice\":\"Emitted when an entity is migrated to a new version.\"},\"Whitelist(address)\":{\"notice\":\"Emitted when a new implementation is whitelisted.\"}},\"kind\":\"user\",\"methods\":{\"blacklist(uint64)\":{\"notice\":\"Blacklist a version of entities.\"},\"blacklisted(uint64)\":{\"notice\":\"Get if a version is blacklisted (e.g., in case of invalid implementation).\"},\"create(uint64,address,bytes)\":{\"notice\":\"Create a new entity at the factory.\"},\"entity(uint256)\":{\"notice\":\"Get an entity given its index.\"},\"implementation(uint64)\":{\"notice\":\"Get the implementation for a given version.\"},\"isEntity(address)\":{\"notice\":\"Get if a given address is an entity.\"},\"lastVersion()\":{\"notice\":\"Get the last available version.\"},\"migrate(address,uint64,bytes)\":{\"notice\":\"Migrate a given entity to a given newer version.\"},\"totalEntities()\":{\"notice\":\"Get a total number of entities.\"},\"whitelist(address)\":{\"notice\":\"Whitelist a new implementation for entities.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/VaultFactory.sol\":\"VaultFactory\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d\",\"dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"keccak256\":\"0x0a8a5b994d4c4da9f61d128945cc8c9e60dcbc72bf532f72ae42a48ea90eed9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e63ae15b6b1079b9d3c73913424d4278139f9e9c9658316675b9c48d5883a50d\",\"dweb:/ipfs/QmWLxBYfp8j1YjNMabWgv75ELTaK2eEYEEGx7qsJbxVZZq\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x911c3346ee26afe188f3b9dc267ef62a7ccf940aba1afa963e3922f0ca3d8a06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04539f4419e44a831807d7203375d2bc6a733da256efd02e51290f5d5015218c\",\"dweb:/ipfs/QmPZ97gsAAgaMRPiE2WJfkzRsudQnW5tPAvMgGj1jcTJtR\"]},\"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f\",\"dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz\"]},\"src/contracts/VaultFactory.sol\":{\"keccak256\":\"0xa9122dd11e5f21fa97a813e90f8c4905f0a4967b9611dd03437a31377cbdecb8\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://4c2feda1f9c0c7ddf65bccdc99494e4bfbb820fcddc3e4222e3b58ef821424a3\",\"dweb:/ipfs/Qmdmt4rH214jDmDsF9ELvJXVCt8abhk6poSmhJqqzLse3R\"]},\"src/contracts/common/MigratableEntityProxy.sol\":{\"keccak256\":\"0x78ba27242276232ad10a45265e3c07f0a25722456f6abb3fb3f24a1c8e1b38d1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://a19623df688e5085036b59fc934e35b72997f875d7ffda1cdc557c6ca468206d\",\"dweb:/ipfs/QmaQiT5uYZu5JmqhMjTDJnsq3nqaHbKrWAjrxKKLesdHV7\"]},\"src/contracts/common/MigratablesFactory.sol\":{\"keccak256\":\"0x5d1487c3456da4bd0bc2a131eeab97ab92484c923edefaebf190cc08d4080093\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://fec38d2e52e9c5148e95599c133fd6fe66d41296d6fc06e7329d2db199a1798f\",\"dweb:/ipfs/QmeiaydBXHHkJRUnpaZH1C6JQ7HPocTvQbUJBqKTvUeEYv\"]},\"src/contracts/common/Registry.sol\":{\"keccak256\":\"0x4a4004836d920953a8ec6e223de9a330f43acf7a5b93c6b8b3e4a95e0f129889\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://e8bdda207f3852c683a2b481602239a914f7e26bcd042ade618e263a43b67652\",\"dweb:/ipfs/Qmb8GZykJWxZcfwNp3SqhFizDFydFuV6LXgemV3vnWyLyu\"]},\"src/interfaces/IVaultFactory.sol\":{\"keccak256\":\"0x6f658b264fc8d530e458a98d83a09cb55ace4d3e509f0a3e9294471bb1bcf84d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a7253435e4e1d1ae19a50d14091ddb254f6a36f296440106bfc094623dd1aeba\",\"dweb:/ipfs/QmbHK9yoQ7Ctf3nuDLmqxTWPYD8cEm1TKXzfxePtE87AQN\"]},\"src/interfaces/common/IMigratableEntity.sol\":{\"keccak256\":\"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c\",\"dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds\"]},\"src/interfaces/common/IMigratableEntityProxy.sol\":{\"keccak256\":\"0x9030ced51ad12e0b3ddaa11bba4a3adcfa29e67b909c46065c14b19d158bb9fd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d859c21510d1a0f06a71abe21dc6424608c1b2e3194a10e4df4cc88c4de9e9f\",\"dweb:/ipfs/QmNi6Buri2oaujc4vTv6bZ5mgMKFsjUmYmQLUNaDCXFEEt\"]},\"src/interfaces/common/IMigratablesFactory.sol\":{\"keccak256\":\"0xd4dfe9449bf005dbcbab9e0e85eaaca15a601ff971f34182a0b1832dc4b9d124\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff8b73285192a9c64160b008d23a09da33e7164d10a9dc29d1a4464bd9c02be5\",\"dweb:/ipfs/QmZQW2LLV4dQfJ3coENKeycbzXJzi7zdvupsqWA4UV29Gq\"]},\"src/interfaces/common/IRegistry.sol\":{\"keccak256\":\"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014\",\"dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AlreadyBlacklisted"},{"inputs":[],"type":"error","name":"AlreadyWhitelisted"},{"inputs":[],"type":"error","name":"EntityNotExist"},{"inputs":[],"type":"error","name":"InvalidImplementation"},{"inputs":[],"type":"error","name":"InvalidVersion"},{"inputs":[],"type":"error","name":"NotOwner"},{"inputs":[],"type":"error","name":"OldVersion"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"entity","type":"address","indexed":true}],"type":"event","name":"AddEntity","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":true}],"type":"event","name":"Blacklist","anonymous":false},{"inputs":[{"internalType":"address","name":"entity","type":"address","indexed":true},{"internalType":"uint64","name":"newVersion","type":"uint64","indexed":false}],"type":"event","name":"Migrate","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Whitelist","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"blacklist"},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64"}],"stateMutability":"view","type":"function","name":"blacklisted","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64"},{"internalType":"address","name":"owner_","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"create","outputs":[{"internalType":"address","name":"entity_","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function","name":"entity","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64"}],"stateMutability":"view","type":"function","name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"entity_","type":"address"}],"stateMutability":"view","type":"function","name":"isEntity","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"lastVersion","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"entity_","type":"address"},{"internalType":"uint64","name":"newVersion","type":"uint64"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"migrate"},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"totalEntities","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"address","name":"implementation_","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"whitelist"}],"devdoc":{"kind":"dev","methods":{"blacklist(uint64)":{"details":"The given version will still be deployable.","params":{"version":"version to blacklist"}},"create(uint64,address,bytes)":{"details":"CREATE2 salt is constructed from the given parameters.","params":{"data":"initial data for the entity creation","owner":"initial owner of the entity","version":"entity's version to use"},"returns":{"entity_":"address of the entity"}},"entity(uint256)":{"params":{"index":"index of the entity to get"},"returns":{"_0":"address of the entity"}},"implementation(uint64)":{"details":"Reverts when an invalid version.","params":{"version":"version to get the implementation for"},"returns":{"_0":"address of the implementation"}},"isEntity(address)":{"params":{"account":"address to check"},"returns":{"_0":"if the given address is an entity"}},"lastVersion()":{"details":"If zero, no implementations are whitelisted.","returns":{"_0":"version of the last implementation"}},"migrate(address,uint64,bytes)":{"details":"Only the entity's owner can call this function.","params":{"data":"some data to reinitialize the contract with","entity":"address of the entity to migrate","newVersion":"new version to migrate to"}},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"totalEntities()":{"returns":{"_0":"total number of entities added"}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"whitelist(address)":{"params":{"implementation":"address of the new implementation"}}},"version":1},"userdoc":{"kind":"user","methods":{"blacklist(uint64)":{"notice":"Blacklist a version of entities."},"blacklisted(uint64)":{"notice":"Get if a version is blacklisted (e.g., in case of invalid implementation)."},"create(uint64,address,bytes)":{"notice":"Create a new entity at the factory."},"entity(uint256)":{"notice":"Get an entity given its index."},"implementation(uint64)":{"notice":"Get the implementation for a given version."},"isEntity(address)":{"notice":"Get if a given address is an entity."},"lastVersion()":{"notice":"Get the last available version."},"migrate(address,uint64,bytes)":{"notice":"Migrate a given entity to a given newer version."},"totalEntities()":{"notice":"Get a total number of entities."},"whitelist(address)":{"notice":"Whitelist a new implementation for entities."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/VaultFactory.sol":"VaultFactory"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol":{"keccak256":"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486","urls":["bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d","dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol":{"keccak256":"0x0a8a5b994d4c4da9f61d128945cc8c9e60dcbc72bf532f72ae42a48ea90eed9a","urls":["bzz-raw://e63ae15b6b1079b9d3c73913424d4278139f9e9c9658316675b9c48d5883a50d","dweb:/ipfs/QmWLxBYfp8j1YjNMabWgv75ELTaK2eEYEEGx7qsJbxVZZq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol":{"keccak256":"0x911c3346ee26afe188f3b9dc267ef62a7ccf940aba1afa963e3922f0ca3d8a06","urls":["bzz-raw://04539f4419e44a831807d7203375d2bc6a733da256efd02e51290f5d5015218c","dweb:/ipfs/QmPZ97gsAAgaMRPiE2WJfkzRsudQnW5tPAvMgGj1jcTJtR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol":{"keccak256":"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd","urls":["bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac","dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c","urls":["bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa","dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol":{"keccak256":"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212","urls":["bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f","dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz"],"license":"MIT"},"src/contracts/VaultFactory.sol":{"keccak256":"0xa9122dd11e5f21fa97a813e90f8c4905f0a4967b9611dd03437a31377cbdecb8","urls":["bzz-raw://4c2feda1f9c0c7ddf65bccdc99494e4bfbb820fcddc3e4222e3b58ef821424a3","dweb:/ipfs/Qmdmt4rH214jDmDsF9ELvJXVCt8abhk6poSmhJqqzLse3R"],"license":"BUSL-1.1"},"src/contracts/common/MigratableEntityProxy.sol":{"keccak256":"0x78ba27242276232ad10a45265e3c07f0a25722456f6abb3fb3f24a1c8e1b38d1","urls":["bzz-raw://a19623df688e5085036b59fc934e35b72997f875d7ffda1cdc557c6ca468206d","dweb:/ipfs/QmaQiT5uYZu5JmqhMjTDJnsq3nqaHbKrWAjrxKKLesdHV7"],"license":"BUSL-1.1"},"src/contracts/common/MigratablesFactory.sol":{"keccak256":"0x5d1487c3456da4bd0bc2a131eeab97ab92484c923edefaebf190cc08d4080093","urls":["bzz-raw://fec38d2e52e9c5148e95599c133fd6fe66d41296d6fc06e7329d2db199a1798f","dweb:/ipfs/QmeiaydBXHHkJRUnpaZH1C6JQ7HPocTvQbUJBqKTvUeEYv"],"license":"BUSL-1.1"},"src/contracts/common/Registry.sol":{"keccak256":"0x4a4004836d920953a8ec6e223de9a330f43acf7a5b93c6b8b3e4a95e0f129889","urls":["bzz-raw://e8bdda207f3852c683a2b481602239a914f7e26bcd042ade618e263a43b67652","dweb:/ipfs/Qmb8GZykJWxZcfwNp3SqhFizDFydFuV6LXgemV3vnWyLyu"],"license":"BUSL-1.1"},"src/interfaces/IVaultFactory.sol":{"keccak256":"0x6f658b264fc8d530e458a98d83a09cb55ace4d3e509f0a3e9294471bb1bcf84d","urls":["bzz-raw://a7253435e4e1d1ae19a50d14091ddb254f6a36f296440106bfc094623dd1aeba","dweb:/ipfs/QmbHK9yoQ7Ctf3nuDLmqxTWPYD8cEm1TKXzfxePtE87AQN"],"license":"MIT"},"src/interfaces/common/IMigratableEntity.sol":{"keccak256":"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4","urls":["bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c","dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds"],"license":"MIT"},"src/interfaces/common/IMigratableEntityProxy.sol":{"keccak256":"0x9030ced51ad12e0b3ddaa11bba4a3adcfa29e67b909c46065c14b19d158bb9fd","urls":["bzz-raw://2d859c21510d1a0f06a71abe21dc6424608c1b2e3194a10e4df4cc88c4de9e9f","dweb:/ipfs/QmNi6Buri2oaujc4vTv6bZ5mgMKFsjUmYmQLUNaDCXFEEt"],"license":"MIT"},"src/interfaces/common/IMigratablesFactory.sol":{"keccak256":"0xd4dfe9449bf005dbcbab9e0e85eaaca15a601ff971f34182a0b1832dc4b9d124","urls":["bzz-raw://ff8b73285192a9c64160b008d23a09da33e7164d10a9dc29d1a4464bd9c02be5","dweb:/ipfs/QmZQW2LLV4dQfJ3coENKeycbzXJzi7zdvupsqWA4UV29Gq"],"license":"MIT"},"src/interfaces/common/IRegistry.sol":{"keccak256":"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb","urls":["bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014","dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK"],"license":"MIT"}},"version":1},"id":75} \ No newline at end of file diff --git a/out/VaultHints.sol/VaultHints.json b/out/VaultHints.sol/VaultHints.json index 1cb37bd8..39eb2ba7 100644 --- a/out/VaultHints.sol/VaultHints.json +++ b/out/VaultHints.sol/VaultHints.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"DELEGATOR_FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"DEPOSITOR_WHITELIST_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"DEPOSIT_LIMIT_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"DEPOSIT_WHITELIST_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"IS_DEPOSIT_LIMIT_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"SLASHER_FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"activeBalanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"activeBalanceOfAt","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hints","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"activeBalanceOfHints","inputs":[{"name":"vault","type":"address","internalType":"address"},{"name":"account","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"activeShares","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"activeSharesAt","inputs":[{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"activeSharesHint","inputs":[{"name":"vault","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"activeSharesHintInternal","inputs":[{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"exists","type":"bool","internalType":"bool"},{"name":"hint","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"activeSharesOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"activeSharesOfAt","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"activeSharesOfHint","inputs":[{"name":"vault","type":"address","internalType":"address"},{"name":"account","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"activeSharesOfHintInternal","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"exists","type":"bool","internalType":"bool"},{"name":"hint","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"activeStake","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"activeStakeAt","inputs":[{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"activeStakeHint","inputs":[{"name":"vault","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"activeStakeHintInternal","inputs":[{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"exists","type":"bool","internalType":"bool"},{"name":"hint","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"burner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"claim","inputs":[{"name":"recipient","type":"address","internalType":"address"},{"name":"epoch","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"claimBatch","inputs":[{"name":"recipient","type":"address","internalType":"address"},{"name":"epochs","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"collateral","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"currentEpoch","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"currentEpochStart","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"delegator","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"deposit","inputs":[{"name":"onBehalfOf","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"depositedAmount","type":"uint256","internalType":"uint256"},{"name":"mintedShares","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"depositLimit","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"depositWhitelist","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"epochAt","inputs":[{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"epochDuration","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"epochDurationInit","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"initialVersion","type":"uint64","internalType":"uint64"},{"name":"owner_","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isDelegatorInitialized","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isDepositLimit","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isDepositorWhitelisted","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isInitialized","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isSlasherInitialized","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isWithdrawalsClaimed","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"migrate","inputs":[{"name":"newVersion","type":"uint64","internalType":"uint64"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"nextEpochStart","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"onSlash","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"slashedAmount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"previousEpochStart","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"redeem","inputs":[{"name":"claimer","type":"address","internalType":"address"},{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"withdrawnAssets","type":"uint256","internalType":"uint256"},{"name":"mintedShares","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDelegator","inputs":[{"name":"delegator_","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDepositLimit","inputs":[{"name":"limit","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDepositWhitelist","inputs":[{"name":"status","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDepositorWhitelistStatus","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"status","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setIsDepositLimit","inputs":[{"name":"status","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSlasher","inputs":[{"name":"slasher_","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"slashableBalanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"slasher","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"staticDelegateCall","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"totalStake","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"version","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"withdraw","inputs":[{"name":"claimer","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"burnedShares","type":"uint256","internalType":"uint256"},{"name":"mintedShares","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawalShares","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"withdrawalSharesOf","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"withdrawals","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"withdrawalsOf","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"Claim","inputs":[{"name":"claimer","type":"address","indexed":true,"internalType":"address"},{"name":"recipient","type":"address","indexed":true,"internalType":"address"},{"name":"epoch","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ClaimBatch","inputs":[{"name":"claimer","type":"address","indexed":true,"internalType":"address"},{"name":"recipient","type":"address","indexed":true,"internalType":"address"},{"name":"epochs","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Deposit","inputs":[{"name":"depositor","type":"address","indexed":true,"internalType":"address"},{"name":"onBehalfOf","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OnSlash","inputs":[{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","indexed":false,"internalType":"uint48"},{"name":"slashedAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SetDelegator","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SetDepositLimit","inputs":[{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SetDepositWhitelist","inputs":[{"name":"status","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"SetDepositorWhitelistStatus","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"status","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"SetIsDepositLimit","inputs":[{"name":"status","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"SetSlasher","inputs":[{"name":"slasher","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Withdraw","inputs":[{"name":"withdrawer","type":"address","indexed":true,"internalType":"address"},{"name":"claimer","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"burnedShares","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"mintedShares","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"AddressInsufficientBalance","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"AlreadyClaimed","inputs":[]},{"type":"error","name":"AlreadyInitialized","inputs":[]},{"type":"error","name":"AlreadySet","inputs":[]},{"type":"error","name":"CheckpointUnorderedInsertion","inputs":[]},{"type":"error","name":"DelegatorAlreadyInitialized","inputs":[]},{"type":"error","name":"DepositLimitReached","inputs":[]},{"type":"error","name":"ExternalCall","inputs":[]},{"type":"error","name":"FailedInnerCall","inputs":[]},{"type":"error","name":"InsufficientClaim","inputs":[]},{"type":"error","name":"InsufficientDeposit","inputs":[]},{"type":"error","name":"InsufficientRedemption","inputs":[]},{"type":"error","name":"InsufficientWithdrawal","inputs":[]},{"type":"error","name":"InvalidAccount","inputs":[]},{"type":"error","name":"InvalidCaptureEpoch","inputs":[]},{"type":"error","name":"InvalidClaimer","inputs":[]},{"type":"error","name":"InvalidCollateral","inputs":[]},{"type":"error","name":"InvalidDelegator","inputs":[]},{"type":"error","name":"InvalidEpoch","inputs":[]},{"type":"error","name":"InvalidEpochDuration","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"InvalidLengthEpochs","inputs":[]},{"type":"error","name":"InvalidOnBehalfOf","inputs":[]},{"type":"error","name":"InvalidRecipient","inputs":[]},{"type":"error","name":"InvalidSlasher","inputs":[]},{"type":"error","name":"InvalidTimestamp","inputs":[]},{"type":"error","name":"MathOverflowedMulDiv","inputs":[]},{"type":"error","name":"MissingRoles","inputs":[]},{"type":"error","name":"NoPreviousEpoch","inputs":[]},{"type":"error","name":"NotDelegator","inputs":[]},{"type":"error","name":"NotFactory","inputs":[]},{"type":"error","name":"NotInitialized","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"NotSlasher","inputs":[]},{"type":"error","name":"NotWhitelistedDepositor","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]},{"type":"error","name":"SlasherAlreadyInitialized","inputs":[]},{"type":"error","name":"TooMuchRedeem","inputs":[]},{"type":"error","name":"TooMuchWithdraw","inputs":[]}],"bytecode":{"object":"0x610100806040523461011057306080525f60a0525f60c0527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff8260401c1661010157506001600160401b036002600160401b0319828216016100bc575b5f60e05260405161521a908161011582396080518181816110590152818161133101526123a7015260a05181818161137d01526118cc015260c051818181611a350152611ee5015260e0518181816107e00152610a2e0152f35b6001600160401b031990911681179091556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f8080610062565b63f92ee8a960e01b8152600490fd5b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a7146104a45780631415519b1461049f5780631b66c9e11461049a5780631e9a695014610495578063248a9ca31461049057806327810b6e1461048b578063281f5752146104865780632abe3048146104815780632d73c69c1461047c5780632dd31000146104775780632f2ff15d1461047257806336568abe1461046d578063392e53cd146104685780634105a7dd14610463578063463616711461045e57806347e7ef241461045957806348d3b775146104545780634ff0876a1461044f57806350861adc1461044a57806350f22068146104455780635346e34f1461044057806354fd4d501461043b57806355a2c6721461043657806357ec83cc1461043157806359f769a91461042c5780635cc070761461042757806361a8c8c41461042257806364b03fdc1461041d57806367567add146104185780636da3e06d146104135780636ec1e3f81461040e578063715018a6146104095780637278e31c1461040457806373790ab3146103ff57806376671808146103fa578063794b15b7146103f55780637953b33b146103f05780637c04c80a146103eb578063810da75d146103e65780638326056f146103e157806383cd9cc3146103dc57806387df0788146103d75780638b0e9f3f146103d25780638da5cb5b146103cd57806391d14854146103c85780639d66201b146103c35780639f86fd85146103be578063a1b12202146103b9578063a217fddf146103b4578063a21a1df9146103af578063a2861466146103aa578063a3b54172146103a5578063a5d03223146103a0578063aabc24961461039b578063aad3ec9614610396578063afba70ad14610391578063b13442711461038c578063bd49c35f14610387578063bdc8144b14610382578063bfefcd7b1461037d578063c31e8dd714610378578063ce9b793014610373578063d547741f1461036e578063d8dfeb4514610369578063db38871514610364578063de4997161461035f578063eb5562381461035a578063ecf7085814610355578063efb559d614610350578063f2fde38b1461034b578063f3fef3a314610346578063f5e7ee0f146103415763f9e1bf6c1461033c575f80fd5b61264c565b612622565b61257c565b61254f565b612400565b6123e3565b61238f565b612375565b612309565b6122de565b612292565b61226a565b612200565b6121e6565b612108565b6120ee565b6120c6565b61209c565b611fdb565b611e24565b611dde565b611d91565b611c9e565b611c64565b611c4a565b611c26565b611b92565b611b58565b611afa565b611ac6565b611a64565b611a20565b611867565b61184d565b611834565b6117ce565b6117a7565b611767565b61174d565b61170c565b611438565b6113d1565b6113ac565b611368565b611312565b6112e4565b611248565b61121e565b6111f7565b6110bf565b61103a565b611008565b610f73565b610f5a565b610efd565b610edd565b610ebc565b610bfe565b610bd6565b610b3b565b610af6565b610aab565b610a5d565b610a19565b6109a5565b61079b565b6106cd565b6106a5565b61066c565b610583565b610538565b6104fe565b346104fa5760203660031901126104fa5760043563ffffffff60e01b81168091036104fa57602090637965db0b60e01b81149081156104e9575b506040519015158152f35b6301ffc9a760e01b1490505f6104de565b5f80fd5b346104fa575f3660031901126104fa5760206040517fc6aaadd7371d5e8f9ed6849dd66a66573a3ba37167d03f4352c9ba5693678fac8152f35b346104fa575f3660031901126104fa5760206040517f9c56d972d63cbb4195b3c1484691dfc220fa96a4c47e7b6613bd82a022029e068152f35b6001600160a01b038116036104fa57565b346104fa5760403660031901126104fa576004356105a081610572565b602435906105ac613080565b6001600160a01b0381161561065b57335f908152600e602052604090206105d790614498565b614498565b8211610649576105f76105e86143ab565b6105f0614424565b90846144db565b9182156106345782610608926130af565b9061061f60015f805160206151a583398151915255565b604080519182526020820192909252f35b0390f35b60405160016245ddc760e11b03198152600490fd5b604051632418411f60e11b8152600490fd5b6040516208978560e71b8152600490fd5b346104fa5760203660031901126104fa576004355f525f805160206151858339815191526020526020600160405f200154604051908152f35b346104fa575f3660031901126104fa576001546040516001600160a01b039091168152602090f35b346104fa575f3660031901126104fa576106e5612c66565b80156107465760015465ffffffffffff8160a01c16915f198101908111610741576107139160d01c90612695565b81018091116107415761072861063091613229565b60405165ffffffffffff90911681529081906020820190565b612666565b604051639fa56a5b60e01b8152600490fd5b600435906001600160401b03821682036104fa57565b9181601f840112156104fa578235916001600160401b0383116104fa57602083818601950101116104fa57565b346104fa5760403660031901126104fa576107b4610758565b6001600160401b036024358181116104fa576107d490369060040161076e565b50506107de613080565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361085a575f805160206151c5833981519152549060ff8260401c1692831561084a575b505050610838575f80fd5b60405163f92ee8a960e01b8152600490fd5b81169116101590505f808061082d565b604051631966391b60e11b8152600490fd5b65ffffffffffff8116036104fa57565b634e487b7160e01b5f52604160045260245ffd5b606081019081106001600160401b038211176108ab57604052565b61087c565b604081019081106001600160401b038211176108ab57604052565b608081019081106001600160401b038211176108ab57604052565b90601f801991011681019081106001600160401b038211176108ab57604052565b6040519061016082018281106001600160401b038211176108ab57604052565b60405190610934826108b0565b565b6001600160401b0381116108ab57601f01601f191660200190565b92919261095d82610936565b9161096b60405193846108e6565b8294818452818301116104fa578281602093845f960137010152565b9080601f830112156104fa578160206109a293359101610951565b90565b346104fa5760603660031901126104fa576004356109c281610572565b602435906109cf8261086c565b604435906001600160401b0382116104fa576020926109f5610a11933690600401610987565b6001600160a01b039092165f908152600e85526040902061340e565b604051908152f35b346104fa575f3660031901126104fa576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346104fa5760403660031901126104fa57610aa9602435600435610a8082610572565b805f525f80516020615185833981519152602052610aa4600160405f2001546135e5565b6138e5565b005b346104fa5760403660031901126104fa57602435610ac881610572565b336001600160a01b03821603610ae457610aa99060043561391b565b60405163334bd91960e11b8152600490fd5b346104fa575f3660031901126104fa5760ff60025460a01c1680610b22575b6020906040519015158152f35b5060035460a01c60ff16610b15565b801515036104fa57565b346104fa5760203660031901126104fa57600435610b5881610b31565b610b60613080565b610b686134da565b5f54901515908160ff8216151514610bc45760ff191660ff8216175f556040519081527f3e12b7b36c75ac9609a3f58609b331210428e1a85909132638955ba0301eec3390602090a160015f805160206151a583398151915255005b60405163a741a04560e01b8152600490fd5b346104fa575f3660031901126104fa57602065ffffffffffff60015460a01c16604051908152f35b346104fa576040806003193601126104fa576004803591610c1e83610572565b610c26613080565b6001600160a01b0391838316908115610eae575f5460ff811680610e95575b610e865783516370a0823160e01b808252308483019081529096602093909160109190911c82169084908490819083010381845afa928315610e5e575f93610e63575b50610c9a9060243590309033906139ad565b5f5486519788523085890190815290979184918391908290819060200103918b60101c165afa908115610e5e57610cd9935f92610e31575b5050612688565b938415610e225760081c60ff1680610e0d575b610dff57509061063091610d9d610d016143ab565b95610d4a610d0d614424565b610d35610d1b8a838b6144db565b99610d2f8a610d2942613229565b926126b6565b90613b01565b5050610d4489610d2942613229565b90613be1565b50506001600160a01b0381165f908152600e6020526040902090610d9788610d926105d2610d7742613229565b6001600160a01b039095165f908152600e6020526040902090565b6126b6565b91613cbd565b505081518481526020810186905233907fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d790604090a3610de960015f805160206151a583398151915255565b5191825260208201929092529081906040820190565b8251632484557960e01b8152fd5b50610e1a84610d926143ab565b815410610cec565b50825163070f6eed60e11b8152fd5b610e509250803d10610e57575b610e4881836108e6565b8101906126e4565b5f80610cd2565b503d610e3e565b6126f3565b610c9a919350610e7f90853d8711610e5757610e4881836108e6565b9290610c88565b5082516304f63b8560e01b8152fd5b50335f9081526005602052604090205460ff1615610c45565b8251630d534ce360e11b8152fd5b346104fa575f3660031901126104fa57602060ff5f54166040519015158152f35b346104fa575f3660031901126104fa57602060015460d01c604051908152f35b346104fa575f3660031901126104fa57602060ff60025460a01c166040519015158152f35b9060406003198301126104fa57600435610f3b8161086c565b91602435906001600160401b0382116104fa576109a291600401610987565b346104fa576020610a11610f6d36610f22565b90613284565b346104fa5760203660031901126104fa57600435610f9081610b31565b610f98613080565b610fa0613537565b5f54901515908160ff8260081c16151514610bc45761ff001916600882901b61ff0016175f556040519081527ffa7a25a0b611d4ba3c0ea990e90dc23d484a5dd7a1be4733fef2946ba74530c690602090a1610aa960015f805160206151a583398151915255565b346104fa575f3660031901126104fa5760206001600160401b035f805160206151c58339815191525416604051908152f35b346104fa5760203660031901126104fa576004356110578161086c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036110ad5761109090613d9f565b60408051941515855263ffffffff91909116602085015292915050f35b604051637ca475e560e11b8152600490fd5b346104fa5760603660031901126104fa576110d8610758565b6024356110e481610572565b6001600160401b03916044358381116104fa5761110590369060040161076e565b5f805160206151c58339815191529491855494838616806111e65760ff8760401c169081156111d9575b50610838577fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2966111d49661119c958716906001600160401b0319161790556111975f805160206151c5833981519152600160401b68ff000000000000000019825416179055565b6126fe565b5f805160206151c5833981519152805468ff0000000000000000191690556040516001600160401b0390911681529081906020820190565b0390a1005b905084861611155f61112f565b60405162dc149f60e41b8152600490fd5b346104fa5760203660031901126104fa576020610a1160043561121981610572565b612b1e565b346104fa5760203660031901126104fa576004355f526006602052602060405f2054604051908152f35b346104fa575f3660031901126104fa5760015465ffffffffffff61127e818360a01c1692611274612c66565b9060d01c90612695565b820180921161074157611292602092613229565b60405191168152f35b60409060031901126104fa576004356112b381610572565b906024356109a28161086c565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b346104fa576106306112fe6112f83661129b565b90612bac565b6040519182916020835260208301906112c0565b346104fa5760203660031901126104fa5760043561132f8161086c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036110ad5761109090613ea4565b346104fa575f3660031901126104fa576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346104fa575f3660031901126104fa57602060ff60035460a01c166040519015158152f35b346104fa575f3660031901126104fa576113e96141eb565b5f8051602061512583398151915280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346104fa5760403660031901126104fa576004356024356114588161086c565b611460613080565b60035461147d906001600160a01b03165b6001600160a01b031690565b33036116fa5761148b612c66565b9061149581612c9a565b90821515806116e9575b80156116e0575b6116ce57610630937ff9d090c096f71cd1659861a9ce5b6f384bceb4e2fa4e4a19edf6489a9b8d56c7926114d86143ab565b946114f36114e5826126a8565b5f52600660205260405f2090565b54908281036115e7575061150781876126b6565b6115118185614223565b9687806115a0575b50505050505b8361156c575b6040805191825265ffffffffffff929092166020820152908101839052606090a161155c60015f805160206151a583398151915255565b6040519081529081906020820190565b5f5461159b9085906115899060101c6001600160a01b0316611471565b6001546001600160a01b0316906142d1565b611525565b6115dc93610cd283610d2f6115c66115bf6114e5986115d6988861423f565b8096612688565b946115d042613229565b92612688565b926126a8565b555f80808087611519565b91506115fb825f52600660205260405f2090565b549061160b81610d92848a6126b6565b906116168286614223565b9788611627575b505050505061151f565b61169c938361164f9361165c8c61165761164561168d99888461423f565b978895858461423f565b948592612688565b612688565b938484106116a7575b610cd290610d2f61167b9596976115d042613229565b6116876114e5876126a8565b55612688565b915f52600660205260405f2090565b555f8080808061161d565b916116c3610cd2916116bd8661167b9798612688565b906126b6565b859450929050611665565b604051635e18d2a560e01b8152600490fd5b508282116114a6565b506116f38361267a565b821061149f565b60405163dabc4ad960e01b8152600490fd5b346104fa575f3660031901126104fa5760015465ffffffffffff808260a01c1691611735612c66565b600181018091116107415761127e9160d01c90612695565b346104fa575f3660031901126104fa576020610a11612c66565b346104fa5760203660031901126104fa5760043561178481610572565b60018060a01b03165f526005602052602060ff60405f2054166040519015158152f35b346104fa5760203660031901126104fa576020610a116004356117c98161086c565b612c9a565b346104fa5760403660031901126104fa576004356117eb81610572565b6024356001600160401b038082116104fa57366023830112156104fa5781600401359081116104fa573660248260051b840101116104fa5761063092602461155c930190612cd5565b346104fa576020610a1161184736610f22565b90613359565b346104fa576106306112fe6118613661129b565b90612e03565b346104fa576020806003193601126104fa57600480359061188782610572565b61188f613080565b60025460a01c60ff16611a11576040516302910f8b60e31b81526001600160a01b03838116838301908152909491908290829081906020010381887f0000000000000000000000000000000000000000000000000000000000000000165afa908115610e5e575f916119e4575b50156119d45760405163fbfa77cf60e01b8152838516949082818581895afa928315610e5e575f936119a5575b5050309116036119965750600280546001600160a01b03929092166001600160a81b031990921691909117600160a01b1790557fdb2160616f776a37b24808115554e79439bf26cccbbd4438190cc6d28e80ecd15f80a2610aa960015f805160206151a583398151915255565b60405163b9f0f17160e01b8152fd5b6119c5929350803d106119cd575b6119bd81836108e6565b810190612e5a565b905f80611929565b503d6119b3565b506040516324e5af8d60e21b8152fd5b611a049150823d8411611a0a575b6119fc81836108e6565b810190612e3a565b5f6118fc565b503d6119f2565b604051631380833b60e01b8152fd5b346104fa575f3660031901126104fa576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346104fa575f3660031901126104fa57611a7c612c66565b611a846143ab565b90805f52600660205260405f205482018092116107415760018101809111610741575f52600660205260405f2054810180911161074157602090604051908152f35b346104fa575f3660031901126104fa575f80516020615125833981519152546040516001600160a01b039091168152602090f35b346104fa5760403660031901126104fa57602060ff611b4c602435611b1e81610572565b6004355f525f80516020615185833981519152845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b346104fa5760203660031901126104fa57600435611b7581610572565b60018060a01b03165f52600e6020526020610a1160405f20614498565b346104fa5760403660031901126104fa57600435611baf81610572565b6024356001600160401b0381116104fa575f91611bd18392369060040161076e565b90816040519283928337810184815203915af4611c1e611bef612e6f565b91611c106040519384921515602084015260408084015260608301906112c0565b03601f1981018352826108e6565b805190602001fd5b346104fa575f3660031901126104fa57602060ff5f5460081c166040519015158152f35b346104fa575f3660031901126104fa5760206040515f8152f35b346104fa575f3660031901126104fa5760206040517f4a634bc14d77baf979756509ef4298c6f6318af357828612545267ee2eb792338152f35b346104fa5760403660031901126104fa57600435611cbb81610572565b602435611cc781610b31565b611ccf613080565b611cd761358e565b6001600160a01b038216918215611d7f575f8381526005602052604090205460ff16151582151514610bc4576001600160a01b03165f9081526005602052604090207ff991b1ecfb5115cbb36a2b2e2240c058406d2acc2fcc6e9e2dc99d845ff70a6291611d6691611d54908260ff801983541691151516179055565b60405190151581529081906020820190565b0390a2610aa960015f805160206151a583398151915255565b604051630da30f6560e31b8152600490fd5b346104fa5760403660031901126104fa576020611dd5602435611db381610572565b6004355f526008835260405f209060018060a01b03165f5260205260405f2090565b54604051908152f35b346104fa5760403660031901126104fa57602060ff611b4c602435611e0281610572565b6004355f526009845260405f209060018060a01b03165f5260205260405f2090565b346104fa576020806003193601126104fa576004803590611e4482610572565b611e4c613080565b60035460a01c60ff16611fcc576001600160a01b03828116939084611eba575b6003805460ff60a01b1916600160a01b179055847fe7e4c932e03abddfe20f83af42c33627e816115c7ec2b168441f65dc14bfc3ba5f80a2610aa960015f805160206151a583398151915255565b6040516302910f8b60e31b81526001600160a01b0385168482019081528390829081906020010381857f0000000000000000000000000000000000000000000000000000000000000000165afa908115610e5e575f91611faf575b5015611f9e5760405163fbfa77cf60e01b815282818581895afa928315610e5e575f93611f7f575b505030911603611f705750600380546001600160a01b0319166001600160a01b039092169190911790555f808080611e6c565b604051633f3e089160e21b8152fd5b611f96929350803d106119cd576119bd81836108e6565b905f80611f3d565b60405163dabc4ad960e01b81528390fd5b611fc69150833d8511611a0a576119fc81836108e6565b5f611f15565b60405163703fe2e560e01b8152fd5b346104fa5760403660031901126104fa57600435611ff881610572565b60243590612004613080565b6001600160a01b039181831690811561208a57612035610630946120278361430f565b9485915f5460101c166142d1565b604080519182526020820184905233917f865ca08d59f5cb456e85cd2f7ef63664ea4f73327414e9d8152c4158b0e946459190a360015f805160206151a5833981519152556040519081529081906020820190565b604051634e46966960e11b8152600490fd5b346104fa5760203660031901126104fa576004355f526007602052602060405f2054604051908152f35b346104fa575f3660031901126104fa576003546040516001600160a01b039091168152602090f35b346104fa575f3660031901126104fa576020610a116143ab565b346104fa5760203660031901126104fa57600435612124613080565b335f9081527f2d4ccbfe9f7672a6f2537c1e5bce6adacb73706879154bbab6ce096012d6721660205260409020547f4a634bc14d77baf979756509ef4298c6f6318af357828612545267ee2eb792339060ff16156121c857508060045414610bc4576020817f854df3eb95564502c8bc871ebdd15310ee26270f955f6c6bd8cea68e75045bc092600455604051908152a160015f805160206151a583398151915255005b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b346104fa575f3660031901126104fa576020610a11614424565b346104fa5760203660031901126104fa5760043561221d81610572565b612225612c66565b61222e82612b1e565b916122398183612f59565b830180931161074157600182018092116107415761225691612f59565b810180911161074157602090604051908152f35b346104fa575f3660031901126104fa576002546040516001600160a01b039091168152602090f35b346104fa5760403660031901126104fa57610aa96024356004356122b582610572565b805f525f805160206151858339815191526020526122d9600160405f2001546135e5565b61391b565b346104fa575f3660031901126104fa575f5460405160109190911c6001600160a01b03168152602090f35b346104fa575f3660031901126104fa5760206040517fbae4ee3de6c709ff9a002e774c5b78cb381560b219213c88ae0f1e207c03c0238152f35b60609060031901126104fa5760043561235b81610572565b9060243561236881610572565b906044356109a28161086c565b346104fa576106306112fe61238936612343565b91612e9e565b346104fa5761239d3661129b565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811633036110ad5761109092165f52600e60205260405f20613f6a565b346104fa575f3660031901126104fa576020600454604051908152f35b346104fa5760603660031901126104fa5760043561241d81610572565b6024359061242a8261086c565b6001600160401b03916044358381116104fa5761244b90369060040161076e565b9092604093845161245b81610890565b606081526060602082015260608682015292806124ba575b610630866124ab87876124a561248c89848451916126c3565b928561249c602085015183613359565b93015190613284565b916144db565b90519081529081906020820190565b81019392506020818503126104fa578035908682116104fa5701926060848203126104fa578451956124eb87610890565b84358181116104fa5782612500918701610987565b875260208501358181116104fa578261251a918701610987565b6020880152858501359081116104fa57610630966125436124a59361248c936124ab9801610987565b87820152939450612473565b346104fa5760203660031901126104fa57610aa960043561256f81610572565b6125776141eb565b612ee8565b346104fa5760403660031901126104fa5760043561259981610572565b6024356125a4613080565b6001600160a01b0382161561065b578015612610576125d36125c4614424565b6125cc6143ab565b90836148f9565b335f908152600e602052604090209092906125ed90614498565b83116125fe576106089183916130af565b6040516321727a3760e11b8152600490fd5b604051636c6c627d60e11b8152600490fd5b346104fa5760403660031901126104fa576020610a1160243561264481610572565b600435612f59565b346104fa576106306112fe61266036612343565b91612fb7565b634e487b7160e01b5f52601160045260245ffd5b5f1981019190821161074157565b9190820391821161074157565b8181029291811591840414171561074157565b906001820180921161074157565b9190820180921161074157565b6001600160a01b03165f908152600e602052604090206109a292919061340e565b908160209103126104fa575190565b6040513d5f823e3d90fd5b91612750916127419161270f614c66565b612717614c66565b60015f805160206151a5833981519152556001600160a01b0394808616612b04575b503691610951565b60208082518301019101614054565b805182166001600160a01b031615612af257604080820165ffffffffffff61277e825165ffffffffffff1690565b1615612ae15760c08301805190929061279f906001600160a01b0316611471565b15612992575b50916128de6101409261287d61285861293c966127f36127cb875160018060a01b031690565b5f805462010000600160b01b03191660109290921b62010000600160b01b0316919091179055565b6020860151600180546001600160a01b0319166001600160a01b0390921691909117905561284c61282342613229565b6001805465ffffffffffff60a01b191660a09290921b65ffffffffffff60a01b16919091179055565b5165ffffffffffff1690565b600180546001600160d01b031660d09290921b6001600160d01b031916919091179055565b61289d61288d6060850151151590565b60ff80195f541691151516175f55565b6128c46128ad6080850151151590565b61ff005f5491151560081b169061ff001916175f55565b6128d160a0840151600455565b516001600160a01b031690565b848116612982575b5060e08101516001600160a01b0316848116612972575b506101008101516001600160a01b0316848116612962575b506101208101516001600160a01b0316848116612952575b5001516001600160a01b031690565b9081166129465750565b61294f90613876565b50565b61295b90613807565b505f61292d565b61296b90613798565b505f612915565b61297b906136c2565b505f6128fd565b61298b90613611565b505f6128e6565b60e08401516129a9906001600160a01b0316611471565b15612a7e575b6101208401516129c7906001600160a01b0316611471565b6127a557608084015115612a345760a08401511580612a15575b612a055750916128de6101409261287d61285861293c965b949650505092506127a5565b5163183c854560e21b8152600490fd5b50610140840151612a2e906001600160a01b0316611471565b156129e1565b60a084015115801590612a5e575b612a055750916128de6101409261287d61285861293c966129f9565b50610140840151612a77906001600160a01b0316611471565b1515612a42565b606084015115612ab457610100840151612aa0906001600160a01b0316611471565b6129af575163183c854560e21b8152600490fd5b610100840151612acc906001600160a01b0316611471565b156129af575163183c854560e21b8152600490fd5b81516368f5f8f160e11b8152600490fd5b6040516368f7a67560e11b8152600490fd5b612b1890612b10614c66565b612577614c66565b5f612739565b6001600160a01b03165f908152600e60205260409020612b3d90614498565b612b456143ab565b612b4d614424565b90600181018091116107415760018201809211610741576109a29261423f565b519061093482610b31565b519063ffffffff821682036104fa57565b91908260409103126104fa576109a260208351612ba581610b31565b9301612b78565b9190612be8612bf79160609465ffffffffffff604051926367567add60e01b602085015216602483015260248252612be382610890565b61411d565b60208082518301019101612b89565b90612bff5750565b90915063ffffffff60405191166020820152602081526109a2816108b0565b65ffffffffffff918216908216039190821161074157565b634e487b7160e01b5f52601260045260245ffd5b9065ffffffffffff809116918215612c6157160490565b612c36565b612c6f42613229565b612c96600154612c8c65ffffffffffff93848360a01c1690612c1e565b9060d01c90612c4a565b1690565b6001549065ffffffffffff91828160a01c16918284821610612cc357612c9692612c8c91612c1e565b60405163b7d0949760e01b8152600490fd5b90612cde613080565b5f926001600160a01b03831692831561208a578115612d96575f5b828110612d7457505f547f326b6aff1cd2fb1c8234de4f9dcfb9047c5c36eb9ef2eb34af5121e969a75d279286929091612d49918491612d449060101c6001600160a01b0316611471565b6142d1565b612d5a604051928392339684612dd1565b0390a39061093460015f805160206151a583398151915255565b94612d8f6001916116bd612d89898789612dbc565b3561430f565b9501612cf9565b60405163edf3b93360e01b8152600490fd5b634e487b7160e01b5f52603260045260245ffd5b9190811015612dcc5760051b0190565b612da8565b604080825281018390529392916001600160fb1b0381116104fa5760209160609160051b809183880137850101930152565b9190612be8612bf79160609465ffffffffffff60405192632ad1633960e11b602085015216602483015260248252612be382610890565b908160209103126104fa57516109a281610b31565b519061093482610572565b908160209103126104fa57516109a281610572565b3d15612e99573d90612e8082610936565b91612e8e60405193846108e6565b82523d5f602084013e565b606090565b604051631d6aac4760e31b60208201526001600160a01b03909216602483015265ffffffffffff909216604480830191909152815260609291612bf791612be891612be3826108cb565b6001600160a01b03908116908115612f41575f8051602061512583398151915280546001600160a01b031981168417909155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b604051631e4fbdf760e01b81525f6004820152602490fd5b90612f7f90825f52600860205260405f209060018060a01b03165f5260205260405f2090565b54905f52600660205260405f2054600760205260405f205490600181018091116107415760018201809211610741576109a29261423f565b92919092612fdc612fcb8360609684612e9e565b92612fd68184612bac565b92612e03565b90825115801590613076575b801561306c575b612ff857505050565b6130459394506109a29291611c10916040519361301485610890565b8452602084019081526040840191825261305b604051968795602080880152516060604088015260a08701906112c0565b915191603f1992838783030160608801526112c0565b9151908483030160808501526112c0565b5081511515612fef565b5080511515612fe8565b5f805160206151a5833981519152600281541461309d5760029055565b604051633ee5aeb560e01b8152600490fd5b335f908152600e60205260409020939291906130ca42613229565b335f908152600e602052604090206130e190614498565b918483039283116107415761311c7febff2602b3f468259e1e99f613fed6691f3a6526effe6ef3e768ba7ae7a36c4f9385936131a799613cbd565b505061313661312a42613229565b610d4487611657614424565b505061315061314442613229565b610d2f846116576143ab565b50506131f5816131e0613169613164612c66565b6126a8565b6131bf61317e825f52600660205260405f2090565b54613191835f52600760205260405f2090565b5461319d82828b6144db565b9d8e998a936126b6565b6131b9855f52600660205260405f2090565b556126b6565b6131d1825f52600760205260405f2090565b555f52600860205260405f2090565b9060018060a01b03165f5260205260405f2090565b6132008382546126b6565b9055604080519485526020850195909552938301526001600160a01b03909216913391606090a3565b65ffffffffffff9081811161323c571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b908160209103126104fa576109a290612b78565b90600163ffffffff8093160191821161074157565b9080511561334f578060208061329f9351830101910161325b565b6132a881614720565b906132b9825165ffffffffffff1690565b9065ffffffffffff808516921682811461334357821191826132ef575b50506132e657506109a2906144fc565b60209150015190565b9091506132fd600a5461267a565b63ffffffff831614918215613316575b50505f806132d6565b61333b91925061284c61332b6133309261326f565b614720565b65ffffffffffff1690565b115f8061330d565b50505060209150015190565b506109a2906144fc565b9080511561340457806020806133749351830101910161325b565b61337d816147a5565b9061338e825165ffffffffffff1690565b9065ffffffffffff808516921682811461334357821191826133bb575b50506132e657506109a2906145ad565b9091506133c9600c5461267a565b63ffffffff8316149182156133e2575b50505f806133ab565b6133fc91925061284c6133f76133309261326f565b6147a5565b115f806133d9565b506109a2906145ad565b918051156134d057806020806134299351830101910161325b565b916134348382614820565b92613445845165ffffffffffff1690565b9065ffffffffffff80851692168281146134c4578211918261347b575b5050613472576109a29250614657565b50506020015190565b909150613488835461267a565b63ffffffff8316149182156134a1575b50505f80613462565b6134bc91925061284c6134b66133309261326f565b85614820565b115f80613498565b50505050506020015190565b506109a291614657565b335f9081527f03b26b53c87faa1058f30bb5d2fee64f717719a0d9b7e4f4df027aa5e9b6ed69602052604090207fbae4ee3de6c709ff9a002e774c5b78cb381560b219213c88ae0f1e207c03c0239060ff905b5416156121c85750565b335f9081527fe41986b390c4ce6791b87f7423b5fab7a81a0e6d89660b6264f697d008b2243a602052604090207fc6aaadd7371d5e8f9ed6849dd66a66573a3ba37167d03f4352c9ba5693678fac9060ff9061352d565b335f9081527f0287ab4cb376ea253d7b2ce0c2cbf458f7deae9458470d74afdfbbee484e9540602052604090207f9c56d972d63cbb4195b3c1484691dfc220fa96a4c47e7b6613bd82a022029e069060ff9061352d565b5f8181525f8051602061518583398151915260209081526040808320338452909152902060ff9061352d565b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260409020545f805160206151858339815191529060ff166136bc575f808052602091825260408082206001600160a01b038516835290925220805460ff1916600117905533906001600160a01b03165f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b50505f90565b6001600160a01b0381165f9081527f03b26b53c87faa1058f30bb5d2fee64f717719a0d9b7e4f4df027aa5e9b6ed69602052604090207fbae4ee3de6c709ff9a002e774c5b78cb381560b219213c88ae0f1e207c03c023905f805160206151858339815191529060ff905b5416613791575f828152602091825260408082206001600160a01b038616835290925220805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b5050505f90565b6001600160a01b0381165f9081527f0287ab4cb376ea253d7b2ce0c2cbf458f7deae9458470d74afdfbbee484e9540602052604090207f9c56d972d63cbb4195b3c1484691dfc220fa96a4c47e7b6613bd82a022029e06905f805160206151858339815191529060ff9061372d565b6001600160a01b0381165f9081527fe41986b390c4ce6791b87f7423b5fab7a81a0e6d89660b6264f697d008b2243a602052604090207fc6aaadd7371d5e8f9ed6849dd66a66573a3ba37167d03f4352c9ba5693678fac905f805160206151858339815191529060ff9061372d565b6001600160a01b0381165f9081527f2d4ccbfe9f7672a6f2537c1e5bce6adacb73706879154bbab6ce096012d67216602052604090207f4a634bc14d77baf979756509ef4298c6f6318af357828612545267ee2eb79233905f805160206151858339815191529060ff9061372d565b5f8181525f80516020615185833981519152602081815260408084206001600160a01b038716855290915290912060ff9061372d565b5f8181525f80516020615185833981519152602081815260408084206001600160a01b03871685529091529091205460ff1615613791575f828152602091825260408082206001600160a01b038616835290925220805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b6040516323b872dd60e01b60208201526001600160a01b03928316602482015292909116604483015260648083019390935291815260a08101918183106001600160401b038411176108ab5761093492604052614888565b600b54811015612dcc57600b5f525f8051602061516583398151915201905f90565b600d54811015612dcc57600d5f525f8051602061514583398151915201905f90565b8054821015612dcc575f5260205f2001905f90565b600d54600160401b8110156108ab576001810180600d55811015612dcc57600d5f525f805160206151458339815191520155565b600b54600160401b8110156108ab576001810180600b55811015612dcc57600b5f525f805160206151658339815191520155565b90815491600160401b8310156108ab5782613ae991600161093495018155613a49565b90919082549060031b91821b915f19901b1916179055565b919091600d9081548015613bac575b50613b19614939565b50929091815492613b286143ab565b9481613b97575b5015613b7457505f1982018281116107415781541115612dcc575f527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb4018390559190565b613b88926001600160d01b03169150614d9d565b5050613b9383613a5e565b9190565b65ffffffffffff83811691161490505f613b2f565b600160401b8110156108ab5760018101808455811015612dcc575f908382525f8051602061514583398151915201555f613b10565b919091600b9081548015613c88575b50613bf96149a4565b50929091815492613c08614424565b9481613c73575b5015613c5457505f1982018281116107415781541115612dcc575f527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db8018390559190565b613c68926001600160d01b03169150614e98565b5050613b9383613a92565b65ffffffffffff83811691161490505f613c0f565b600160401b8110156108ab5760018101808455811015612dcc575f908382525f8051602061516583398151915201555f613bf0565b90929192600182019081548015613d4b575b5084613cda846149ee565b50949092845493613cea83614498565b9681613d36575b5015613d13575050505f19810190811161074157613ae98591613b9393613a49565b613b93949293613d2f926001600160d01b039091169190614f42565b5050613ac6565b65ffffffffffff83811691161490505f613cf1565b600160401b8110156108ab57806001613d679201845583613a49565b8154905f199060031b1b191690555f613ccf565b90604051613d88816108b0565b915465ffffffffffff8116835260301c6020830152565b600a54905f829160058411613e4a575b613db99350614b55565b8015613e3f57613de9613de4613dce8361267a565b600a5f525f805160206151058339815191520190565b613d7b565b91613e38613e2f613e29613e1f613e1a6020613e0b895165ffffffffffff1690565b9801516001600160d01b031690565b613a05565b90549060031b1c90565b9361267a565b63ffffffff1690565b6001939291565b505f905f905f905f90565b9192613e5581614a1c565b810390811161074157600a5f525f80516020615105833981519152810154613db9949065ffffffffffff9081169085161015613e92575091613daf565b929150613e9e906126a8565b90613daf565b600c54905f829160058411613f10575b613ebe9350614bb2565b8015613e3f57613ee9613de4613ed38361267a565b600c5f525f805160206150e58339815191520190565b91613e38613e2f613e29613e1f613f0b6020613e0b895165ffffffffffff1690565b613a27565b9192613f1b81614a1c565b810390811161074157600c5f525f805160206150e5833981519152810154613ebe949065ffffffffffff9081169085161015613f58575091613eb4565b929150613f64906126a8565b90613eb4565b91908254905f829160058411613fed575b613f86935085614c0f565b908115613fe157613e38613e2f613e29613e1f613fb3613de4613fa88861267a565b895f5260205f200190565b966001613fda6020613fcb8b5165ffffffffffff1690565b9a01516001600160d01b031690565b9101613a49565b5f925082915081908190565b9192613ff881614a1c565b810390811161074157613f8693865f526140216133308360205f200165ffffffffffff90541690565b65ffffffffffff85161015614037575091613f7b565b929150614043906126a8565b90613f7b565b51906109348261086c565b90816101609103126104fa57614068610907565b9061407281612e4f565b825261408060208201612e4f565b602083015261409160408201614049565b60408301526140a260608201612b6d565b60608301526140b360808201612b6d565b608083015260a081015160a08301526140ce60c08201612e4f565b60c08301526140df60e08201612e4f565b60e08301526101006140f2818301612e4f565b90830152610120614104818301612e4f565b90830152614116610140809201612e4f565b9082015290565b905f8060409384519360209461415481611c1088820194639f86fd8560e01b86523060248401528a604484015260648301906112c0565b51915afa50614161612e6f565b805181019280828486019503126104fa57828201519161418083610b31565b81810151906001600160401b0382116104fa57019084603f830112156104fa57838201516141ad81610936565b956141ba835197886108e6565b8187528282850101116104fa578085925f94018388015e85010152156141de575090565b9080519182156104fa5701fd5b5f80516020615125833981519152546001600160a01b0316330361420b57565b60405163118cdaa760e01b8152336004820152602490fd5b9080821015614230575090565b905090565b8115612c61570490565b9091828202915f19848209938380861095039480860395146142c457848311156142b257829109815f038216809204600280826003021880830282030280830282030280830282030280830282030280830282030280920290030293600183805f03040190848311900302920304170290565b60405163227bc15360e01b8152600490fd5b5050906109a29250614235565b60405163a9059cbb60e01b60208201526001600160a01b0390921660248301526044808301939093529181526109349161430a826108cb565b614888565b90614318612c66565b821015614399575f82815260096020908152604080832033845290915290205460ff16614387576143493383612f59565b918215614375575f9081526009602090815260408083203384529091529020805460ff19166001179055565b6040516366c0bcbf60e11b8152600490fd5b604051630c8d9eab60e31b8152600490fd5b60405163d5b25b6360e01b8152600490fd5b600c54806143eb57505f5b6001600160d01b038116156143e657600d54811015612dcc57600d5f525f80516020615145833981519152015490565b505f90565b805f1981011161074157600c5f527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c6015460301c6143b6565b600a548061445f57505f5b6001600160d01b038116156143e657600b54811015612dcc57600b5f525f80516020615165833981519152015490565b805f1981011161074157600a5f527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a7015460301c61442f565b8054806144bd57505f5b6001600160d01b038116156136bc576001613e1f9201613a49565b5f1990808281011161074157825f5260205f2001015460301c6144a2565b9190600181018091116107415760018201809211610741576109a29261423f565b600a54905f829160058411614554575b6145169350614b55565b8061453957505f5b6001600160d01b038116156143e657613e1f6109a291613a05565b614548613dce61454f9261267a565b5460301c90565b61451e565b919261455f81614a1c565b81039081116107415761451693600a5f5265ffffffffffff80835f80516020615105833981519152015416908516105f1461459b57509161450c565b9291506145a7906126a8565b9061450c565b600c54905f8291600584116145fe575b6145c79350614bb2565b806145ea57505f5b6001600160d01b038116156143e657613e1f6109a291613a27565b614548613ed36145f99261267a565b6145cf565b919261460981614a1c565b8103908111610741576145c793600c5f5265ffffffffffff80835f805160206150e5833981519152015416908516105f146146455750916145bd565b929150614651906126a8565b906145bd565b908154905f8291600584116146ba575b61467293508461502a565b8061469a57505f905b6001600160d01b038216156136bc576109a2916001613e1f9201613a49565b6145486146a96146b49261267a565b835f5260205f200190565b9061467b565b91926146c581614a1c565b81039081116107415761467293855f5265ffffffffffff808360205f20015416908516105f146146f6575091614667565b929150614702906126a8565b90614667565b60405190614715826108b0565b5f6020838281520152565b614728614708565b50614731614708565b50600a54811015612dcc5761475890600a5f525f8051602061510583398151915201613d7b565b65ffffffffffff81511690602060018060d01b0391015116600b54811015612dcc57600b5f525f8051602061516583398151915201546040519161479b836108b0565b8252602082015290565b6147ad614708565b506147b6614708565b50600c54811015612dcc576147dd90600c5f525f805160206150e583398151915201613d7b565b65ffffffffffff81511690602060018060d01b0391015116600d54811015612dcc57600d5f525f8051602061514583398151915201546040519161479b836108b0565b9061484961484361486a92614833614708565b5061483c614708565b5084613a49565b50613d7b565b91600165ffffffffffff845116936020828060d01b03910151169101613a49565b9054906040519261487a846108b0565b835260031b1c602082015290565b5f806148b09260018060a01b03169360208151910182865af16148a9612e6f565b9083615081565b80519081151591826148de575b50506148c65750565b60249060405190635274afe760e01b82526004820152fd5b6148f19250602080918301019101612e3a565b155f806148bd565b91906001810180911161074157600182018092116107415761491c82828561423f565b928215612c61570961492b5790565b600181018091116107415790565b600c548061494a57505f905f905f90565b805f19810111610741577fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c661498391600c5f5201613d7b565b9065ffffffffffff82511691602060018060d01b0391015116906001929190565b600a54806149b557505f905f905f90565b805f19810111610741577fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a761498391600a5f5201613d7b565b8054806149ff5750505f905f905f90565b5f1990808281011161074157614983925f5260205f200101613d7b565b80156143e65780614aee614ae7614add614ad3614ac9614abf614ab5614aab60016109a29a5f908b60801c80614b49575b508060401c80614b3c575b508060201c80614b2f575b508060101c80614b22575b508060081c80614b15575b508060041c80614b08575b508060021c80614afb575b50821c614af4575b811c1b614aa4818b614235565b0160011c90565b614aa4818a614235565b614aa48189614235565b614aa48188614235565b614aa48187614235565b614aa48186614235565b614aa48185614235565b8092614235565b90614223565b8101614a97565b600291509101905f614a8f565b600491509101905f614a84565b600891509101905f614a79565b601091509101905f614a6e565b602091509101905f614a63565b604091509101905f614a58565b9150506080905f614a4d565b828210614b6157505090565b9091614b6d8184615015565b90600a5f5265ffffffffffff80835f80516020615105833981519152015416908416105f14614b9f5750915b90614b55565b92506001810180911115614b9957612666565b828210614bbe57505090565b9091614bca8184615015565b90600c5f5265ffffffffffff80835f805160206150e5833981519152015416908416105f14614bfc5750915b90614bb2565b92506001810180911115614bf657612666565b905b838310614c1e5750505090565b909192614c2b8185615015565b90835f5265ffffffffffff808360205f20015416908416105f14614c535750925b9190614c11565b93506001810180911115614c4c57612666565b60ff5f805160206151c58339815191525460401c1615614c8257565b604051631afcd79f60e31b8152600490fd5b600c5490600160401b8210156108ab576001820180600c55821015612dcc57600c5f52805160209091015160301b65ffffffffffff191665ffffffffffff91909116175f805160206150e583398151915290910155565b600a5490600160401b8210156108ab576001820180600a55821015612dcc57600a5f52805160209091015160301b65ffffffffffff191665ffffffffffff91909116175f8051602061510583398151915290910155565b8054600160401b8110156108ab57614d5f91600182018155613a49565b614d8a57815160209092015160301b65ffffffffffff191665ffffffffffff92909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b600c54919291908115614e6f57614db9613de4613ed38461267a565b805165ffffffffffff8381169491168410614e5d5785602093613b9395614de9613330865165ffffffffffff1690565b03614e255750614dfe613ed3614e179361267a565b9065ffffffffffff82549181199060301b169116179055565b01516001600160d01b031690565b9050614e589150614e45614e37610927565b65ffffffffffff9092168252565b6001600160d01b03871681850152614c94565b614e17565b604051632520601d60e01b8152600490fd5b614e939150614e7f614e37610927565b6001600160d01b0384166020820152614c94565b5f9190565b600a54919291908115614f1e57614eb4613de4613dce8461267a565b805165ffffffffffff8381169491168410614e5d5785602093613b9395614ee4613330865165ffffffffffff1690565b03614ef95750614dfe613dce614e179361267a565b9050614e589150614f0b614e37610927565b6001600160d01b03871681850152614ceb565b614e939150614f2e614e37610927565b6001600160d01b0384166020820152614ceb565b805492939291908215614ff157614f5e613de46146a98561267a565b90614f6f825165ffffffffffff1690565b65ffffffffffff84811691168110614e5d57613b93946020948892614f9d613330875165ffffffffffff1690565b03614fbe5750614e1792614fb3614dfe9261267a565b905f5260205f200190565b915050614e5891614fde614fd0610927565b65ffffffffffff9093168352565b6001600160d01b03881682860152614d42565b614e939250615001614fd0610927565b6001600160d01b0385166020830152614d42565b90808216911860011c81018091116107415790565b905b8383106150395750505090565b9091926150468185615015565b90835f5265ffffffffffff808360205f20015416908416105f1461506e5750925b919061502c565b9350600181018091111561506757612666565b906150a8575080511561509657805190602001fd5b604051630a12f52160e11b8152600490fd5b815115806150db575b6150b9575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b156150b156fedf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7c65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a89016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300d7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db902dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212206764d46b458c94bc30a6b4a8199ffc550f65122fd0eea52d69629dd17905644864736f6c63430008190033","sourceMap":"199:2819:85:-:0;;;;;;;348:4:82;332:21;;318:1:85;3173:36:96;;318:1:85;3219:32:96;;8837:64:25;199:2819:85;;;;;;;;;7896:76:25;;-1:-1:-1;;;;;;;;;;;;199:2819:85;;;7985:34:25;7981:146;;-1:-1:-1;318:1:85;927:17:71;;199:2819:85;;;;;;;;332:21:82;199:2819:85;;;;;;;;;;;;;;;3173:36:96;199:2819:85;;;;;;;;;;3219:32:96;199:2819:85;;;;;;;;;;927:17:71;199:2819:85;;;;;;;;;;;7981:146:25;-1:-1:-1;;;;;;199:2819:85;;;;;;;;;;;;;8087:29:25;;199:2819:85;;8087:29:25;7981:146;;;;;7896:76;-1:-1:-1;;;7938:23:25;;;;;199:2819:85;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a7146104a45780631415519b1461049f5780631b66c9e11461049a5780631e9a695014610495578063248a9ca31461049057806327810b6e1461048b578063281f5752146104865780632abe3048146104815780632d73c69c1461047c5780632dd31000146104775780632f2ff15d1461047257806336568abe1461046d578063392e53cd146104685780634105a7dd14610463578063463616711461045e57806347e7ef241461045957806348d3b775146104545780634ff0876a1461044f57806350861adc1461044a57806350f22068146104455780635346e34f1461044057806354fd4d501461043b57806355a2c6721461043657806357ec83cc1461043157806359f769a91461042c5780635cc070761461042757806361a8c8c41461042257806364b03fdc1461041d57806367567add146104185780636da3e06d146104135780636ec1e3f81461040e578063715018a6146104095780637278e31c1461040457806373790ab3146103ff57806376671808146103fa578063794b15b7146103f55780637953b33b146103f05780637c04c80a146103eb578063810da75d146103e65780638326056f146103e157806383cd9cc3146103dc57806387df0788146103d75780638b0e9f3f146103d25780638da5cb5b146103cd57806391d14854146103c85780639d66201b146103c35780639f86fd85146103be578063a1b12202146103b9578063a217fddf146103b4578063a21a1df9146103af578063a2861466146103aa578063a3b54172146103a5578063a5d03223146103a0578063aabc24961461039b578063aad3ec9614610396578063afba70ad14610391578063b13442711461038c578063bd49c35f14610387578063bdc8144b14610382578063bfefcd7b1461037d578063c31e8dd714610378578063ce9b793014610373578063d547741f1461036e578063d8dfeb4514610369578063db38871514610364578063de4997161461035f578063eb5562381461035a578063ecf7085814610355578063efb559d614610350578063f2fde38b1461034b578063f3fef3a314610346578063f5e7ee0f146103415763f9e1bf6c1461033c575f80fd5b61264c565b612622565b61257c565b61254f565b612400565b6123e3565b61238f565b612375565b612309565b6122de565b612292565b61226a565b612200565b6121e6565b612108565b6120ee565b6120c6565b61209c565b611fdb565b611e24565b611dde565b611d91565b611c9e565b611c64565b611c4a565b611c26565b611b92565b611b58565b611afa565b611ac6565b611a64565b611a20565b611867565b61184d565b611834565b6117ce565b6117a7565b611767565b61174d565b61170c565b611438565b6113d1565b6113ac565b611368565b611312565b6112e4565b611248565b61121e565b6111f7565b6110bf565b61103a565b611008565b610f73565b610f5a565b610efd565b610edd565b610ebc565b610bfe565b610bd6565b610b3b565b610af6565b610aab565b610a5d565b610a19565b6109a5565b61079b565b6106cd565b6106a5565b61066c565b610583565b610538565b6104fe565b346104fa5760203660031901126104fa5760043563ffffffff60e01b81168091036104fa57602090637965db0b60e01b81149081156104e9575b506040519015158152f35b6301ffc9a760e01b1490505f6104de565b5f80fd5b346104fa575f3660031901126104fa5760206040517fc6aaadd7371d5e8f9ed6849dd66a66573a3ba37167d03f4352c9ba5693678fac8152f35b346104fa575f3660031901126104fa5760206040517f9c56d972d63cbb4195b3c1484691dfc220fa96a4c47e7b6613bd82a022029e068152f35b6001600160a01b038116036104fa57565b346104fa5760403660031901126104fa576004356105a081610572565b602435906105ac613080565b6001600160a01b0381161561065b57335f908152600e602052604090206105d790614498565b614498565b8211610649576105f76105e86143ab565b6105f0614424565b90846144db565b9182156106345782610608926130af565b9061061f60015f805160206151a583398151915255565b604080519182526020820192909252f35b0390f35b60405160016245ddc760e11b03198152600490fd5b604051632418411f60e11b8152600490fd5b6040516208978560e71b8152600490fd5b346104fa5760203660031901126104fa576004355f525f805160206151858339815191526020526020600160405f200154604051908152f35b346104fa575f3660031901126104fa576001546040516001600160a01b039091168152602090f35b346104fa575f3660031901126104fa576106e5612c66565b80156107465760015465ffffffffffff8160a01c16915f198101908111610741576107139160d01c90612695565b81018091116107415761072861063091613229565b60405165ffffffffffff90911681529081906020820190565b612666565b604051639fa56a5b60e01b8152600490fd5b600435906001600160401b03821682036104fa57565b9181601f840112156104fa578235916001600160401b0383116104fa57602083818601950101116104fa57565b346104fa5760403660031901126104fa576107b4610758565b6001600160401b036024358181116104fa576107d490369060040161076e565b50506107de613080565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361085a575f805160206151c5833981519152549060ff8260401c1692831561084a575b505050610838575f80fd5b60405163f92ee8a960e01b8152600490fd5b81169116101590505f808061082d565b604051631966391b60e11b8152600490fd5b65ffffffffffff8116036104fa57565b634e487b7160e01b5f52604160045260245ffd5b606081019081106001600160401b038211176108ab57604052565b61087c565b604081019081106001600160401b038211176108ab57604052565b608081019081106001600160401b038211176108ab57604052565b90601f801991011681019081106001600160401b038211176108ab57604052565b6040519061016082018281106001600160401b038211176108ab57604052565b60405190610934826108b0565b565b6001600160401b0381116108ab57601f01601f191660200190565b92919261095d82610936565b9161096b60405193846108e6565b8294818452818301116104fa578281602093845f960137010152565b9080601f830112156104fa578160206109a293359101610951565b90565b346104fa5760603660031901126104fa576004356109c281610572565b602435906109cf8261086c565b604435906001600160401b0382116104fa576020926109f5610a11933690600401610987565b6001600160a01b039092165f908152600e85526040902061340e565b604051908152f35b346104fa575f3660031901126104fa576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346104fa5760403660031901126104fa57610aa9602435600435610a8082610572565b805f525f80516020615185833981519152602052610aa4600160405f2001546135e5565b6138e5565b005b346104fa5760403660031901126104fa57602435610ac881610572565b336001600160a01b03821603610ae457610aa99060043561391b565b60405163334bd91960e11b8152600490fd5b346104fa575f3660031901126104fa5760ff60025460a01c1680610b22575b6020906040519015158152f35b5060035460a01c60ff16610b15565b801515036104fa57565b346104fa5760203660031901126104fa57600435610b5881610b31565b610b60613080565b610b686134da565b5f54901515908160ff8216151514610bc45760ff191660ff8216175f556040519081527f3e12b7b36c75ac9609a3f58609b331210428e1a85909132638955ba0301eec3390602090a160015f805160206151a583398151915255005b60405163a741a04560e01b8152600490fd5b346104fa575f3660031901126104fa57602065ffffffffffff60015460a01c16604051908152f35b346104fa576040806003193601126104fa576004803591610c1e83610572565b610c26613080565b6001600160a01b0391838316908115610eae575f5460ff811680610e95575b610e865783516370a0823160e01b808252308483019081529096602093909160109190911c82169084908490819083010381845afa928315610e5e575f93610e63575b50610c9a9060243590309033906139ad565b5f5486519788523085890190815290979184918391908290819060200103918b60101c165afa908115610e5e57610cd9935f92610e31575b5050612688565b938415610e225760081c60ff1680610e0d575b610dff57509061063091610d9d610d016143ab565b95610d4a610d0d614424565b610d35610d1b8a838b6144db565b99610d2f8a610d2942613229565b926126b6565b90613b01565b5050610d4489610d2942613229565b90613be1565b50506001600160a01b0381165f908152600e6020526040902090610d9788610d926105d2610d7742613229565b6001600160a01b039095165f908152600e6020526040902090565b6126b6565b91613cbd565b505081518481526020810186905233907fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d790604090a3610de960015f805160206151a583398151915255565b5191825260208201929092529081906040820190565b8251632484557960e01b8152fd5b50610e1a84610d926143ab565b815410610cec565b50825163070f6eed60e11b8152fd5b610e509250803d10610e57575b610e4881836108e6565b8101906126e4565b5f80610cd2565b503d610e3e565b6126f3565b610c9a919350610e7f90853d8711610e5757610e4881836108e6565b9290610c88565b5082516304f63b8560e01b8152fd5b50335f9081526005602052604090205460ff1615610c45565b8251630d534ce360e11b8152fd5b346104fa575f3660031901126104fa57602060ff5f54166040519015158152f35b346104fa575f3660031901126104fa57602060015460d01c604051908152f35b346104fa575f3660031901126104fa57602060ff60025460a01c166040519015158152f35b9060406003198301126104fa57600435610f3b8161086c565b91602435906001600160401b0382116104fa576109a291600401610987565b346104fa576020610a11610f6d36610f22565b90613284565b346104fa5760203660031901126104fa57600435610f9081610b31565b610f98613080565b610fa0613537565b5f54901515908160ff8260081c16151514610bc45761ff001916600882901b61ff0016175f556040519081527ffa7a25a0b611d4ba3c0ea990e90dc23d484a5dd7a1be4733fef2946ba74530c690602090a1610aa960015f805160206151a583398151915255565b346104fa575f3660031901126104fa5760206001600160401b035f805160206151c58339815191525416604051908152f35b346104fa5760203660031901126104fa576004356110578161086c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036110ad5761109090613d9f565b60408051941515855263ffffffff91909116602085015292915050f35b604051637ca475e560e11b8152600490fd5b346104fa5760603660031901126104fa576110d8610758565b6024356110e481610572565b6001600160401b03916044358381116104fa5761110590369060040161076e565b5f805160206151c58339815191529491855494838616806111e65760ff8760401c169081156111d9575b50610838577fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2966111d49661119c958716906001600160401b0319161790556111975f805160206151c5833981519152600160401b68ff000000000000000019825416179055565b6126fe565b5f805160206151c5833981519152805468ff0000000000000000191690556040516001600160401b0390911681529081906020820190565b0390a1005b905084861611155f61112f565b60405162dc149f60e41b8152600490fd5b346104fa5760203660031901126104fa576020610a1160043561121981610572565b612b1e565b346104fa5760203660031901126104fa576004355f526006602052602060405f2054604051908152f35b346104fa575f3660031901126104fa5760015465ffffffffffff61127e818360a01c1692611274612c66565b9060d01c90612695565b820180921161074157611292602092613229565b60405191168152f35b60409060031901126104fa576004356112b381610572565b906024356109a28161086c565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b346104fa576106306112fe6112f83661129b565b90612bac565b6040519182916020835260208301906112c0565b346104fa5760203660031901126104fa5760043561132f8161086c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036110ad5761109090613ea4565b346104fa575f3660031901126104fa576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346104fa575f3660031901126104fa57602060ff60035460a01c166040519015158152f35b346104fa575f3660031901126104fa576113e96141eb565b5f8051602061512583398151915280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346104fa5760403660031901126104fa576004356024356114588161086c565b611460613080565b60035461147d906001600160a01b03165b6001600160a01b031690565b33036116fa5761148b612c66565b9061149581612c9a565b90821515806116e9575b80156116e0575b6116ce57610630937ff9d090c096f71cd1659861a9ce5b6f384bceb4e2fa4e4a19edf6489a9b8d56c7926114d86143ab565b946114f36114e5826126a8565b5f52600660205260405f2090565b54908281036115e7575061150781876126b6565b6115118185614223565b9687806115a0575b50505050505b8361156c575b6040805191825265ffffffffffff929092166020820152908101839052606090a161155c60015f805160206151a583398151915255565b6040519081529081906020820190565b5f5461159b9085906115899060101c6001600160a01b0316611471565b6001546001600160a01b0316906142d1565b611525565b6115dc93610cd283610d2f6115c66115bf6114e5986115d6988861423f565b8096612688565b946115d042613229565b92612688565b926126a8565b555f80808087611519565b91506115fb825f52600660205260405f2090565b549061160b81610d92848a6126b6565b906116168286614223565b9788611627575b505050505061151f565b61169c938361164f9361165c8c61165761164561168d99888461423f565b978895858461423f565b948592612688565b612688565b938484106116a7575b610cd290610d2f61167b9596976115d042613229565b6116876114e5876126a8565b55612688565b915f52600660205260405f2090565b555f8080808061161d565b916116c3610cd2916116bd8661167b9798612688565b906126b6565b859450929050611665565b604051635e18d2a560e01b8152600490fd5b508282116114a6565b506116f38361267a565b821061149f565b60405163dabc4ad960e01b8152600490fd5b346104fa575f3660031901126104fa5760015465ffffffffffff808260a01c1691611735612c66565b600181018091116107415761127e9160d01c90612695565b346104fa575f3660031901126104fa576020610a11612c66565b346104fa5760203660031901126104fa5760043561178481610572565b60018060a01b03165f526005602052602060ff60405f2054166040519015158152f35b346104fa5760203660031901126104fa576020610a116004356117c98161086c565b612c9a565b346104fa5760403660031901126104fa576004356117eb81610572565b6024356001600160401b038082116104fa57366023830112156104fa5781600401359081116104fa573660248260051b840101116104fa5761063092602461155c930190612cd5565b346104fa576020610a1161184736610f22565b90613359565b346104fa576106306112fe6118613661129b565b90612e03565b346104fa576020806003193601126104fa57600480359061188782610572565b61188f613080565b60025460a01c60ff16611a11576040516302910f8b60e31b81526001600160a01b03838116838301908152909491908290829081906020010381887f0000000000000000000000000000000000000000000000000000000000000000165afa908115610e5e575f916119e4575b50156119d45760405163fbfa77cf60e01b8152838516949082818581895afa928315610e5e575f936119a5575b5050309116036119965750600280546001600160a01b03929092166001600160a81b031990921691909117600160a01b1790557fdb2160616f776a37b24808115554e79439bf26cccbbd4438190cc6d28e80ecd15f80a2610aa960015f805160206151a583398151915255565b60405163b9f0f17160e01b8152fd5b6119c5929350803d106119cd575b6119bd81836108e6565b810190612e5a565b905f80611929565b503d6119b3565b506040516324e5af8d60e21b8152fd5b611a049150823d8411611a0a575b6119fc81836108e6565b810190612e3a565b5f6118fc565b503d6119f2565b604051631380833b60e01b8152fd5b346104fa575f3660031901126104fa576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346104fa575f3660031901126104fa57611a7c612c66565b611a846143ab565b90805f52600660205260405f205482018092116107415760018101809111610741575f52600660205260405f2054810180911161074157602090604051908152f35b346104fa575f3660031901126104fa575f80516020615125833981519152546040516001600160a01b039091168152602090f35b346104fa5760403660031901126104fa57602060ff611b4c602435611b1e81610572565b6004355f525f80516020615185833981519152845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b346104fa5760203660031901126104fa57600435611b7581610572565b60018060a01b03165f52600e6020526020610a1160405f20614498565b346104fa5760403660031901126104fa57600435611baf81610572565b6024356001600160401b0381116104fa575f91611bd18392369060040161076e565b90816040519283928337810184815203915af4611c1e611bef612e6f565b91611c106040519384921515602084015260408084015260608301906112c0565b03601f1981018352826108e6565b805190602001fd5b346104fa575f3660031901126104fa57602060ff5f5460081c166040519015158152f35b346104fa575f3660031901126104fa5760206040515f8152f35b346104fa575f3660031901126104fa5760206040517f4a634bc14d77baf979756509ef4298c6f6318af357828612545267ee2eb792338152f35b346104fa5760403660031901126104fa57600435611cbb81610572565b602435611cc781610b31565b611ccf613080565b611cd761358e565b6001600160a01b038216918215611d7f575f8381526005602052604090205460ff16151582151514610bc4576001600160a01b03165f9081526005602052604090207ff991b1ecfb5115cbb36a2b2e2240c058406d2acc2fcc6e9e2dc99d845ff70a6291611d6691611d54908260ff801983541691151516179055565b60405190151581529081906020820190565b0390a2610aa960015f805160206151a583398151915255565b604051630da30f6560e31b8152600490fd5b346104fa5760403660031901126104fa576020611dd5602435611db381610572565b6004355f526008835260405f209060018060a01b03165f5260205260405f2090565b54604051908152f35b346104fa5760403660031901126104fa57602060ff611b4c602435611e0281610572565b6004355f526009845260405f209060018060a01b03165f5260205260405f2090565b346104fa576020806003193601126104fa576004803590611e4482610572565b611e4c613080565b60035460a01c60ff16611fcc576001600160a01b03828116939084611eba575b6003805460ff60a01b1916600160a01b179055847fe7e4c932e03abddfe20f83af42c33627e816115c7ec2b168441f65dc14bfc3ba5f80a2610aa960015f805160206151a583398151915255565b6040516302910f8b60e31b81526001600160a01b0385168482019081528390829081906020010381857f0000000000000000000000000000000000000000000000000000000000000000165afa908115610e5e575f91611faf575b5015611f9e5760405163fbfa77cf60e01b815282818581895afa928315610e5e575f93611f7f575b505030911603611f705750600380546001600160a01b0319166001600160a01b039092169190911790555f808080611e6c565b604051633f3e089160e21b8152fd5b611f96929350803d106119cd576119bd81836108e6565b905f80611f3d565b60405163dabc4ad960e01b81528390fd5b611fc69150833d8511611a0a576119fc81836108e6565b5f611f15565b60405163703fe2e560e01b8152fd5b346104fa5760403660031901126104fa57600435611ff881610572565b60243590612004613080565b6001600160a01b039181831690811561208a57612035610630946120278361430f565b9485915f5460101c166142d1565b604080519182526020820184905233917f865ca08d59f5cb456e85cd2f7ef63664ea4f73327414e9d8152c4158b0e946459190a360015f805160206151a5833981519152556040519081529081906020820190565b604051634e46966960e11b8152600490fd5b346104fa5760203660031901126104fa576004355f526007602052602060405f2054604051908152f35b346104fa575f3660031901126104fa576003546040516001600160a01b039091168152602090f35b346104fa575f3660031901126104fa576020610a116143ab565b346104fa5760203660031901126104fa57600435612124613080565b335f9081527f2d4ccbfe9f7672a6f2537c1e5bce6adacb73706879154bbab6ce096012d6721660205260409020547f4a634bc14d77baf979756509ef4298c6f6318af357828612545267ee2eb792339060ff16156121c857508060045414610bc4576020817f854df3eb95564502c8bc871ebdd15310ee26270f955f6c6bd8cea68e75045bc092600455604051908152a160015f805160206151a583398151915255005b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b346104fa575f3660031901126104fa576020610a11614424565b346104fa5760203660031901126104fa5760043561221d81610572565b612225612c66565b61222e82612b1e565b916122398183612f59565b830180931161074157600182018092116107415761225691612f59565b810180911161074157602090604051908152f35b346104fa575f3660031901126104fa576002546040516001600160a01b039091168152602090f35b346104fa5760403660031901126104fa57610aa96024356004356122b582610572565b805f525f805160206151858339815191526020526122d9600160405f2001546135e5565b61391b565b346104fa575f3660031901126104fa575f5460405160109190911c6001600160a01b03168152602090f35b346104fa575f3660031901126104fa5760206040517fbae4ee3de6c709ff9a002e774c5b78cb381560b219213c88ae0f1e207c03c0238152f35b60609060031901126104fa5760043561235b81610572565b9060243561236881610572565b906044356109a28161086c565b346104fa576106306112fe61238936612343565b91612e9e565b346104fa5761239d3661129b565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811633036110ad5761109092165f52600e60205260405f20613f6a565b346104fa575f3660031901126104fa576020600454604051908152f35b346104fa5760603660031901126104fa5760043561241d81610572565b6024359061242a8261086c565b6001600160401b03916044358381116104fa5761244b90369060040161076e565b9092604093845161245b81610890565b606081526060602082015260608682015292806124ba575b610630866124ab87876124a561248c89848451916126c3565b928561249c602085015183613359565b93015190613284565b916144db565b90519081529081906020820190565b81019392506020818503126104fa578035908682116104fa5701926060848203126104fa578451956124eb87610890565b84358181116104fa5782612500918701610987565b875260208501358181116104fa578261251a918701610987565b6020880152858501359081116104fa57610630966125436124a59361248c936124ab9801610987565b87820152939450612473565b346104fa5760203660031901126104fa57610aa960043561256f81610572565b6125776141eb565b612ee8565b346104fa5760403660031901126104fa5760043561259981610572565b6024356125a4613080565b6001600160a01b0382161561065b578015612610576125d36125c4614424565b6125cc6143ab565b90836148f9565b335f908152600e602052604090209092906125ed90614498565b83116125fe576106089183916130af565b6040516321727a3760e11b8152600490fd5b604051636c6c627d60e11b8152600490fd5b346104fa5760403660031901126104fa576020610a1160243561264481610572565b600435612f59565b346104fa576106306112fe61266036612343565b91612fb7565b634e487b7160e01b5f52601160045260245ffd5b5f1981019190821161074157565b9190820391821161074157565b8181029291811591840414171561074157565b906001820180921161074157565b9190820180921161074157565b6001600160a01b03165f908152600e602052604090206109a292919061340e565b908160209103126104fa575190565b6040513d5f823e3d90fd5b91612750916127419161270f614c66565b612717614c66565b60015f805160206151a5833981519152556001600160a01b0394808616612b04575b503691610951565b60208082518301019101614054565b805182166001600160a01b031615612af257604080820165ffffffffffff61277e825165ffffffffffff1690565b1615612ae15760c08301805190929061279f906001600160a01b0316611471565b15612992575b50916128de6101409261287d61285861293c966127f36127cb875160018060a01b031690565b5f805462010000600160b01b03191660109290921b62010000600160b01b0316919091179055565b6020860151600180546001600160a01b0319166001600160a01b0390921691909117905561284c61282342613229565b6001805465ffffffffffff60a01b191660a09290921b65ffffffffffff60a01b16919091179055565b5165ffffffffffff1690565b600180546001600160d01b031660d09290921b6001600160d01b031916919091179055565b61289d61288d6060850151151590565b60ff80195f541691151516175f55565b6128c46128ad6080850151151590565b61ff005f5491151560081b169061ff001916175f55565b6128d160a0840151600455565b516001600160a01b031690565b848116612982575b5060e08101516001600160a01b0316848116612972575b506101008101516001600160a01b0316848116612962575b506101208101516001600160a01b0316848116612952575b5001516001600160a01b031690565b9081166129465750565b61294f90613876565b50565b61295b90613807565b505f61292d565b61296b90613798565b505f612915565b61297b906136c2565b505f6128fd565b61298b90613611565b505f6128e6565b60e08401516129a9906001600160a01b0316611471565b15612a7e575b6101208401516129c7906001600160a01b0316611471565b6127a557608084015115612a345760a08401511580612a15575b612a055750916128de6101409261287d61285861293c965b949650505092506127a5565b5163183c854560e21b8152600490fd5b50610140840151612a2e906001600160a01b0316611471565b156129e1565b60a084015115801590612a5e575b612a055750916128de6101409261287d61285861293c966129f9565b50610140840151612a77906001600160a01b0316611471565b1515612a42565b606084015115612ab457610100840151612aa0906001600160a01b0316611471565b6129af575163183c854560e21b8152600490fd5b610100840151612acc906001600160a01b0316611471565b156129af575163183c854560e21b8152600490fd5b81516368f5f8f160e11b8152600490fd5b6040516368f7a67560e11b8152600490fd5b612b1890612b10614c66565b612577614c66565b5f612739565b6001600160a01b03165f908152600e60205260409020612b3d90614498565b612b456143ab565b612b4d614424565b90600181018091116107415760018201809211610741576109a29261423f565b519061093482610b31565b519063ffffffff821682036104fa57565b91908260409103126104fa576109a260208351612ba581610b31565b9301612b78565b9190612be8612bf79160609465ffffffffffff604051926367567add60e01b602085015216602483015260248252612be382610890565b61411d565b60208082518301019101612b89565b90612bff5750565b90915063ffffffff60405191166020820152602081526109a2816108b0565b65ffffffffffff918216908216039190821161074157565b634e487b7160e01b5f52601260045260245ffd5b9065ffffffffffff809116918215612c6157160490565b612c36565b612c6f42613229565b612c96600154612c8c65ffffffffffff93848360a01c1690612c1e565b9060d01c90612c4a565b1690565b6001549065ffffffffffff91828160a01c16918284821610612cc357612c9692612c8c91612c1e565b60405163b7d0949760e01b8152600490fd5b90612cde613080565b5f926001600160a01b03831692831561208a578115612d96575f5b828110612d7457505f547f326b6aff1cd2fb1c8234de4f9dcfb9047c5c36eb9ef2eb34af5121e969a75d279286929091612d49918491612d449060101c6001600160a01b0316611471565b6142d1565b612d5a604051928392339684612dd1565b0390a39061093460015f805160206151a583398151915255565b94612d8f6001916116bd612d89898789612dbc565b3561430f565b9501612cf9565b60405163edf3b93360e01b8152600490fd5b634e487b7160e01b5f52603260045260245ffd5b9190811015612dcc5760051b0190565b612da8565b604080825281018390529392916001600160fb1b0381116104fa5760209160609160051b809183880137850101930152565b9190612be8612bf79160609465ffffffffffff60405192632ad1633960e11b602085015216602483015260248252612be382610890565b908160209103126104fa57516109a281610b31565b519061093482610572565b908160209103126104fa57516109a281610572565b3d15612e99573d90612e8082610936565b91612e8e60405193846108e6565b82523d5f602084013e565b606090565b604051631d6aac4760e31b60208201526001600160a01b03909216602483015265ffffffffffff909216604480830191909152815260609291612bf791612be891612be3826108cb565b6001600160a01b03908116908115612f41575f8051602061512583398151915280546001600160a01b031981168417909155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b604051631e4fbdf760e01b81525f6004820152602490fd5b90612f7f90825f52600860205260405f209060018060a01b03165f5260205260405f2090565b54905f52600660205260405f2054600760205260405f205490600181018091116107415760018201809211610741576109a29261423f565b92919092612fdc612fcb8360609684612e9e565b92612fd68184612bac565b92612e03565b90825115801590613076575b801561306c575b612ff857505050565b6130459394506109a29291611c10916040519361301485610890565b8452602084019081526040840191825261305b604051968795602080880152516060604088015260a08701906112c0565b915191603f1992838783030160608801526112c0565b9151908483030160808501526112c0565b5081511515612fef565b5080511515612fe8565b5f805160206151a5833981519152600281541461309d5760029055565b604051633ee5aeb560e01b8152600490fd5b335f908152600e60205260409020939291906130ca42613229565b335f908152600e602052604090206130e190614498565b918483039283116107415761311c7febff2602b3f468259e1e99f613fed6691f3a6526effe6ef3e768ba7ae7a36c4f9385936131a799613cbd565b505061313661312a42613229565b610d4487611657614424565b505061315061314442613229565b610d2f846116576143ab565b50506131f5816131e0613169613164612c66565b6126a8565b6131bf61317e825f52600660205260405f2090565b54613191835f52600760205260405f2090565b5461319d82828b6144db565b9d8e998a936126b6565b6131b9855f52600660205260405f2090565b556126b6565b6131d1825f52600760205260405f2090565b555f52600860205260405f2090565b9060018060a01b03165f5260205260405f2090565b6132008382546126b6565b9055604080519485526020850195909552938301526001600160a01b03909216913391606090a3565b65ffffffffffff9081811161323c571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b908160209103126104fa576109a290612b78565b90600163ffffffff8093160191821161074157565b9080511561334f578060208061329f9351830101910161325b565b6132a881614720565b906132b9825165ffffffffffff1690565b9065ffffffffffff808516921682811461334357821191826132ef575b50506132e657506109a2906144fc565b60209150015190565b9091506132fd600a5461267a565b63ffffffff831614918215613316575b50505f806132d6565b61333b91925061284c61332b6133309261326f565b614720565b65ffffffffffff1690565b115f8061330d565b50505060209150015190565b506109a2906144fc565b9080511561340457806020806133749351830101910161325b565b61337d816147a5565b9061338e825165ffffffffffff1690565b9065ffffffffffff808516921682811461334357821191826133bb575b50506132e657506109a2906145ad565b9091506133c9600c5461267a565b63ffffffff8316149182156133e2575b50505f806133ab565b6133fc91925061284c6133f76133309261326f565b6147a5565b115f806133d9565b506109a2906145ad565b918051156134d057806020806134299351830101910161325b565b916134348382614820565b92613445845165ffffffffffff1690565b9065ffffffffffff80851692168281146134c4578211918261347b575b5050613472576109a29250614657565b50506020015190565b909150613488835461267a565b63ffffffff8316149182156134a1575b50505f80613462565b6134bc91925061284c6134b66133309261326f565b85614820565b115f80613498565b50505050506020015190565b506109a291614657565b335f9081527f03b26b53c87faa1058f30bb5d2fee64f717719a0d9b7e4f4df027aa5e9b6ed69602052604090207fbae4ee3de6c709ff9a002e774c5b78cb381560b219213c88ae0f1e207c03c0239060ff905b5416156121c85750565b335f9081527fe41986b390c4ce6791b87f7423b5fab7a81a0e6d89660b6264f697d008b2243a602052604090207fc6aaadd7371d5e8f9ed6849dd66a66573a3ba37167d03f4352c9ba5693678fac9060ff9061352d565b335f9081527f0287ab4cb376ea253d7b2ce0c2cbf458f7deae9458470d74afdfbbee484e9540602052604090207f9c56d972d63cbb4195b3c1484691dfc220fa96a4c47e7b6613bd82a022029e069060ff9061352d565b5f8181525f8051602061518583398151915260209081526040808320338452909152902060ff9061352d565b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260409020545f805160206151858339815191529060ff166136bc575f808052602091825260408082206001600160a01b038516835290925220805460ff1916600117905533906001600160a01b03165f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b50505f90565b6001600160a01b0381165f9081527f03b26b53c87faa1058f30bb5d2fee64f717719a0d9b7e4f4df027aa5e9b6ed69602052604090207fbae4ee3de6c709ff9a002e774c5b78cb381560b219213c88ae0f1e207c03c023905f805160206151858339815191529060ff905b5416613791575f828152602091825260408082206001600160a01b038616835290925220805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b5050505f90565b6001600160a01b0381165f9081527f0287ab4cb376ea253d7b2ce0c2cbf458f7deae9458470d74afdfbbee484e9540602052604090207f9c56d972d63cbb4195b3c1484691dfc220fa96a4c47e7b6613bd82a022029e06905f805160206151858339815191529060ff9061372d565b6001600160a01b0381165f9081527fe41986b390c4ce6791b87f7423b5fab7a81a0e6d89660b6264f697d008b2243a602052604090207fc6aaadd7371d5e8f9ed6849dd66a66573a3ba37167d03f4352c9ba5693678fac905f805160206151858339815191529060ff9061372d565b6001600160a01b0381165f9081527f2d4ccbfe9f7672a6f2537c1e5bce6adacb73706879154bbab6ce096012d67216602052604090207f4a634bc14d77baf979756509ef4298c6f6318af357828612545267ee2eb79233905f805160206151858339815191529060ff9061372d565b5f8181525f80516020615185833981519152602081815260408084206001600160a01b038716855290915290912060ff9061372d565b5f8181525f80516020615185833981519152602081815260408084206001600160a01b03871685529091529091205460ff1615613791575f828152602091825260408082206001600160a01b038616835290925220805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b6040516323b872dd60e01b60208201526001600160a01b03928316602482015292909116604483015260648083019390935291815260a08101918183106001600160401b038411176108ab5761093492604052614888565b600b54811015612dcc57600b5f525f8051602061516583398151915201905f90565b600d54811015612dcc57600d5f525f8051602061514583398151915201905f90565b8054821015612dcc575f5260205f2001905f90565b600d54600160401b8110156108ab576001810180600d55811015612dcc57600d5f525f805160206151458339815191520155565b600b54600160401b8110156108ab576001810180600b55811015612dcc57600b5f525f805160206151658339815191520155565b90815491600160401b8310156108ab5782613ae991600161093495018155613a49565b90919082549060031b91821b915f19901b1916179055565b919091600d9081548015613bac575b50613b19614939565b50929091815492613b286143ab565b9481613b97575b5015613b7457505f1982018281116107415781541115612dcc575f527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb4018390559190565b613b88926001600160d01b03169150614d9d565b5050613b9383613a5e565b9190565b65ffffffffffff83811691161490505f613b2f565b600160401b8110156108ab5760018101808455811015612dcc575f908382525f8051602061514583398151915201555f613b10565b919091600b9081548015613c88575b50613bf96149a4565b50929091815492613c08614424565b9481613c73575b5015613c5457505f1982018281116107415781541115612dcc575f527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db8018390559190565b613c68926001600160d01b03169150614e98565b5050613b9383613a92565b65ffffffffffff83811691161490505f613c0f565b600160401b8110156108ab5760018101808455811015612dcc575f908382525f8051602061516583398151915201555f613bf0565b90929192600182019081548015613d4b575b5084613cda846149ee565b50949092845493613cea83614498565b9681613d36575b5015613d13575050505f19810190811161074157613ae98591613b9393613a49565b613b93949293613d2f926001600160d01b039091169190614f42565b5050613ac6565b65ffffffffffff83811691161490505f613cf1565b600160401b8110156108ab57806001613d679201845583613a49565b8154905f199060031b1b191690555f613ccf565b90604051613d88816108b0565b915465ffffffffffff8116835260301c6020830152565b600a54905f829160058411613e4a575b613db99350614b55565b8015613e3f57613de9613de4613dce8361267a565b600a5f525f805160206151058339815191520190565b613d7b565b91613e38613e2f613e29613e1f613e1a6020613e0b895165ffffffffffff1690565b9801516001600160d01b031690565b613a05565b90549060031b1c90565b9361267a565b63ffffffff1690565b6001939291565b505f905f905f905f90565b9192613e5581614a1c565b810390811161074157600a5f525f80516020615105833981519152810154613db9949065ffffffffffff9081169085161015613e92575091613daf565b929150613e9e906126a8565b90613daf565b600c54905f829160058411613f10575b613ebe9350614bb2565b8015613e3f57613ee9613de4613ed38361267a565b600c5f525f805160206150e58339815191520190565b91613e38613e2f613e29613e1f613f0b6020613e0b895165ffffffffffff1690565b613a27565b9192613f1b81614a1c565b810390811161074157600c5f525f805160206150e5833981519152810154613ebe949065ffffffffffff9081169085161015613f58575091613eb4565b929150613f64906126a8565b90613eb4565b91908254905f829160058411613fed575b613f86935085614c0f565b908115613fe157613e38613e2f613e29613e1f613fb3613de4613fa88861267a565b895f5260205f200190565b966001613fda6020613fcb8b5165ffffffffffff1690565b9a01516001600160d01b031690565b9101613a49565b5f925082915081908190565b9192613ff881614a1c565b810390811161074157613f8693865f526140216133308360205f200165ffffffffffff90541690565b65ffffffffffff85161015614037575091613f7b565b929150614043906126a8565b90613f7b565b51906109348261086c565b90816101609103126104fa57614068610907565b9061407281612e4f565b825261408060208201612e4f565b602083015261409160408201614049565b60408301526140a260608201612b6d565b60608301526140b360808201612b6d565b608083015260a081015160a08301526140ce60c08201612e4f565b60c08301526140df60e08201612e4f565b60e08301526101006140f2818301612e4f565b90830152610120614104818301612e4f565b90830152614116610140809201612e4f565b9082015290565b905f8060409384519360209461415481611c1088820194639f86fd8560e01b86523060248401528a604484015260648301906112c0565b51915afa50614161612e6f565b805181019280828486019503126104fa57828201519161418083610b31565b81810151906001600160401b0382116104fa57019084603f830112156104fa57838201516141ad81610936565b956141ba835197886108e6565b8187528282850101116104fa578085925f94018388015e85010152156141de575090565b9080519182156104fa5701fd5b5f80516020615125833981519152546001600160a01b0316330361420b57565b60405163118cdaa760e01b8152336004820152602490fd5b9080821015614230575090565b905090565b8115612c61570490565b9091828202915f19848209938380861095039480860395146142c457848311156142b257829109815f038216809204600280826003021880830282030280830282030280830282030280830282030280830282030280920290030293600183805f03040190848311900302920304170290565b60405163227bc15360e01b8152600490fd5b5050906109a29250614235565b60405163a9059cbb60e01b60208201526001600160a01b0390921660248301526044808301939093529181526109349161430a826108cb565b614888565b90614318612c66565b821015614399575f82815260096020908152604080832033845290915290205460ff16614387576143493383612f59565b918215614375575f9081526009602090815260408083203384529091529020805460ff19166001179055565b6040516366c0bcbf60e11b8152600490fd5b604051630c8d9eab60e31b8152600490fd5b60405163d5b25b6360e01b8152600490fd5b600c54806143eb57505f5b6001600160d01b038116156143e657600d54811015612dcc57600d5f525f80516020615145833981519152015490565b505f90565b805f1981011161074157600c5f527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c6015460301c6143b6565b600a548061445f57505f5b6001600160d01b038116156143e657600b54811015612dcc57600b5f525f80516020615165833981519152015490565b805f1981011161074157600a5f527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a7015460301c61442f565b8054806144bd57505f5b6001600160d01b038116156136bc576001613e1f9201613a49565b5f1990808281011161074157825f5260205f2001015460301c6144a2565b9190600181018091116107415760018201809211610741576109a29261423f565b600a54905f829160058411614554575b6145169350614b55565b8061453957505f5b6001600160d01b038116156143e657613e1f6109a291613a05565b614548613dce61454f9261267a565b5460301c90565b61451e565b919261455f81614a1c565b81039081116107415761451693600a5f5265ffffffffffff80835f80516020615105833981519152015416908516105f1461459b57509161450c565b9291506145a7906126a8565b9061450c565b600c54905f8291600584116145fe575b6145c79350614bb2565b806145ea57505f5b6001600160d01b038116156143e657613e1f6109a291613a27565b614548613ed36145f99261267a565b6145cf565b919261460981614a1c565b8103908111610741576145c793600c5f5265ffffffffffff80835f805160206150e5833981519152015416908516105f146146455750916145bd565b929150614651906126a8565b906145bd565b908154905f8291600584116146ba575b61467293508461502a565b8061469a57505f905b6001600160d01b038216156136bc576109a2916001613e1f9201613a49565b6145486146a96146b49261267a565b835f5260205f200190565b9061467b565b91926146c581614a1c565b81039081116107415761467293855f5265ffffffffffff808360205f20015416908516105f146146f6575091614667565b929150614702906126a8565b90614667565b60405190614715826108b0565b5f6020838281520152565b614728614708565b50614731614708565b50600a54811015612dcc5761475890600a5f525f8051602061510583398151915201613d7b565b65ffffffffffff81511690602060018060d01b0391015116600b54811015612dcc57600b5f525f8051602061516583398151915201546040519161479b836108b0565b8252602082015290565b6147ad614708565b506147b6614708565b50600c54811015612dcc576147dd90600c5f525f805160206150e583398151915201613d7b565b65ffffffffffff81511690602060018060d01b0391015116600d54811015612dcc57600d5f525f8051602061514583398151915201546040519161479b836108b0565b9061484961484361486a92614833614708565b5061483c614708565b5084613a49565b50613d7b565b91600165ffffffffffff845116936020828060d01b03910151169101613a49565b9054906040519261487a846108b0565b835260031b1c602082015290565b5f806148b09260018060a01b03169360208151910182865af16148a9612e6f565b9083615081565b80519081151591826148de575b50506148c65750565b60249060405190635274afe760e01b82526004820152fd5b6148f19250602080918301019101612e3a565b155f806148bd565b91906001810180911161074157600182018092116107415761491c82828561423f565b928215612c61570961492b5790565b600181018091116107415790565b600c548061494a57505f905f905f90565b805f19810111610741577fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c661498391600c5f5201613d7b565b9065ffffffffffff82511691602060018060d01b0391015116906001929190565b600a54806149b557505f905f905f90565b805f19810111610741577fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a761498391600a5f5201613d7b565b8054806149ff5750505f905f905f90565b5f1990808281011161074157614983925f5260205f200101613d7b565b80156143e65780614aee614ae7614add614ad3614ac9614abf614ab5614aab60016109a29a5f908b60801c80614b49575b508060401c80614b3c575b508060201c80614b2f575b508060101c80614b22575b508060081c80614b15575b508060041c80614b08575b508060021c80614afb575b50821c614af4575b811c1b614aa4818b614235565b0160011c90565b614aa4818a614235565b614aa48189614235565b614aa48188614235565b614aa48187614235565b614aa48186614235565b614aa48185614235565b8092614235565b90614223565b8101614a97565b600291509101905f614a8f565b600491509101905f614a84565b600891509101905f614a79565b601091509101905f614a6e565b602091509101905f614a63565b604091509101905f614a58565b9150506080905f614a4d565b828210614b6157505090565b9091614b6d8184615015565b90600a5f5265ffffffffffff80835f80516020615105833981519152015416908416105f14614b9f5750915b90614b55565b92506001810180911115614b9957612666565b828210614bbe57505090565b9091614bca8184615015565b90600c5f5265ffffffffffff80835f805160206150e5833981519152015416908416105f14614bfc5750915b90614bb2565b92506001810180911115614bf657612666565b905b838310614c1e5750505090565b909192614c2b8185615015565b90835f5265ffffffffffff808360205f20015416908416105f14614c535750925b9190614c11565b93506001810180911115614c4c57612666565b60ff5f805160206151c58339815191525460401c1615614c8257565b604051631afcd79f60e31b8152600490fd5b600c5490600160401b8210156108ab576001820180600c55821015612dcc57600c5f52805160209091015160301b65ffffffffffff191665ffffffffffff91909116175f805160206150e583398151915290910155565b600a5490600160401b8210156108ab576001820180600a55821015612dcc57600a5f52805160209091015160301b65ffffffffffff191665ffffffffffff91909116175f8051602061510583398151915290910155565b8054600160401b8110156108ab57614d5f91600182018155613a49565b614d8a57815160209092015160301b65ffffffffffff191665ffffffffffff92909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b600c54919291908115614e6f57614db9613de4613ed38461267a565b805165ffffffffffff8381169491168410614e5d5785602093613b9395614de9613330865165ffffffffffff1690565b03614e255750614dfe613ed3614e179361267a565b9065ffffffffffff82549181199060301b169116179055565b01516001600160d01b031690565b9050614e589150614e45614e37610927565b65ffffffffffff9092168252565b6001600160d01b03871681850152614c94565b614e17565b604051632520601d60e01b8152600490fd5b614e939150614e7f614e37610927565b6001600160d01b0384166020820152614c94565b5f9190565b600a54919291908115614f1e57614eb4613de4613dce8461267a565b805165ffffffffffff8381169491168410614e5d5785602093613b9395614ee4613330865165ffffffffffff1690565b03614ef95750614dfe613dce614e179361267a565b9050614e589150614f0b614e37610927565b6001600160d01b03871681850152614ceb565b614e939150614f2e614e37610927565b6001600160d01b0384166020820152614ceb565b805492939291908215614ff157614f5e613de46146a98561267a565b90614f6f825165ffffffffffff1690565b65ffffffffffff84811691168110614e5d57613b93946020948892614f9d613330875165ffffffffffff1690565b03614fbe5750614e1792614fb3614dfe9261267a565b905f5260205f200190565b915050614e5891614fde614fd0610927565b65ffffffffffff9093168352565b6001600160d01b03881682860152614d42565b614e939250615001614fd0610927565b6001600160d01b0385166020830152614d42565b90808216911860011c81018091116107415790565b905b8383106150395750505090565b9091926150468185615015565b90835f5265ffffffffffff808360205f20015416908416105f1461506e5750925b919061502c565b9350600181018091111561506757612666565b906150a8575080511561509657805190602001fd5b604051630a12f52160e11b8152600490fd5b815115806150db575b6150b9575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b156150b156fedf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7c65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a89016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300d7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db902dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212206764d46b458c94bc30a6b4a8199ffc550f65122fd0eea52d69629dd17905644864736f6c63430008190033","sourceMap":"199:2819:85:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;-1:-1:-1;;199:2819:85;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3551:47:23;;;:87;;;;199:2819:85;;;;;;;;;;3551:87:23;-1:-1:-1;;;1133:40:29;;-1:-1:-1;3551:87:23;;;199:2819:85;-1:-1:-1;199:2819:85;;;;;;;;-1:-1:-1;;199:2819:85;;;;;;;966:38:96;199:2819:85;;;;;;;;;-1:-1:-1;;199:2819:85;;;;;;;821:37:96;199:2819:85;;;;-1:-1:-1;;;;;199:2819:85;;;;;:::o;:::-;;;;;;-1:-1:-1;;199:2819:85;;;;;;;;;:::i;:::-;;;3217:103:28;;;:::i;:::-;-1:-1:-1;;;;;199:2819:85;;5525:21:95;5521:75;;5634:10;199:2819:85;;;;5606:15:96;199:2819:85;;;;;5606:33:96;;;:::i;:24::-;:33;:::i;:::-;5610:35:95;;5606:88;;1057:70:87;5173:21:96;;:::i;:::-;4803:22;;:::i;:::-;1057:70:87;;;:::i;:::-;5801:20:95;;;5797:82;;5904:43;;;;:::i;:::-;3282:1:28;;1805;-1:-1:-1;;;;;;;;;;;199:2819:85;3716:283:28;3282:1;199:2819:85;;;;;;;;;;;;;;;;;;5797:82:95;199:2819:85;;-1:-1:-1;;;;;;5844:24:95;;199:2819:85;;5844:24:95;5606:88;199:2819:85;;-1:-1:-1;;;5668:15:95;;199:2819:85;;5668:15:95;5521:75;199:2819:85;;-1:-1:-1;;;5569:16:95;;199:2819:85;;5569:16:95;199:2819:85;;;;;;-1:-1:-1;;199:2819:85;;;;;;-1:-1:-1;199:2819:85;-1:-1:-1;;;;;;;;;;;199:2819:85;;;4919:24:23;199:2819:85;-1:-1:-1;199:2819:85;4919:24:23;199:2819:85;;;;;;;;;;;;;-1:-1:-1;;199:2819:85;;;;;;;;-1:-1:-1;;;;;199:2819:85;;;;;;;;;;;;;;-1:-1:-1;;199:2819:85;;;;4084:14:96;;:::i;:::-;4112:10;;4108:65;;4190:17;199:2819:85;;;;;;;;;;;;;;;;4210:27:96;199:2819:85;;;4210:27:96;;:::i;:::-;199:2819:85;;;;;;;4189:60:96;199:2819:85;4189:60:96;;:::i;:::-;199:2819:85;;;;;;;;;;;;;;;;;;:::i;4108:65:96:-;199:2819:85;;-1:-1:-1;;;4145:17:96;;199:2819:85;;4145:17:96;199:2819:85;;;;-1:-1:-1;;;;;199:2819:85;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;199:2819:85;;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;199:2819:85;;;;;;:::i;:::-;-1:-1:-1;;;;;199:2819:85;;;;;;;;;;;;;;:::i;:::-;3217:103:28;;;;:::i;:::-;1673:7:71;-1:-1:-1;;;;;199:2819:85;1659:10:71;:21;1655:71;;-1:-1:-1;;;;;;;;;;;199:2819:85;;;;;;;6431:44:25;;;;;199:2819:85;6427:105:25;;;;;-1:-1:-1;15924:8:95;;6427:105:25;199:2819:85;;-1:-1:-1;;;6498:23:25;;199:2819:85;;6498:23:25;6431:44;199:2819:85;;;;6450:25:25;;;-1:-1:-1;6431:44:25;;;;;1655:71:71;199:2819:85;;-1:-1:-1;;;1703:12:71;;199:2819:85;;1703:12:71;199:2819:85;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;199:2819:85;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;-1:-1:-1;;;;;199:2819:85;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;199:2819:85;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;199:2819:85;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;199:2819:85;;;;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;:::-;-1:-1:-1;;;;;199:2819:85;;;;;;-1:-1:-1;;199:2819:85;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;199:2819:85;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;-1:-1:-1;;199:2819:85;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;199:2819:85;;;;;;;5383:59:96;199:2819:85;;;;;;:::i;:::-;-1:-1:-1;;;;;199:2819:85;;;-1:-1:-1;199:2819:85;;;5383:15:96;199:2819:85;;;;;5383:59:96;:::i;:::-;199:2819:85;;;;;;;;;;;;-1:-1:-1;;199:2819:85;;;;;;655:32:71;-1:-1:-1;;;;;199:2819:85;;;;;;;;;;;;-1:-1:-1;;199:2819:85;;;;5350:25:23;199:2819:85;;;;;;;:::i;:::-;;-1:-1:-1;199:2819:85;-1:-1:-1;;;;;;;;;;;199:2819:85;;3202:4:23;4919:24;199:2819:85;-1:-1:-1;199:2819:85;4919:24:23;199:2819:85;3202:4:23;:::i;:::-;5350:25;:::i;:::-;199:2819:85;;;;;;;-1:-1:-1;;199:2819:85;;;;;;;;;:::i;:::-;966:10:27;-1:-1:-1;;;;;199:2819:85;;6441:34:23;6437:102;;6549:37;199:2819:85;;;6549:37:23;:::i;6437:102::-;199:2819:85;;-1:-1:-1;;;6498:30:23;;199:2819:85;;6498:30:23;199:2819:85;;;;;;-1:-1:-1;;199:2819:85;;;;;1524:22:95;199:2819:85;;;;1524:46:95;;;199:2819:85;;;;;;;;;;;1524:46:95;-1:-1:-1;1550:20:95;199:2819:85;;;;;1524:46:95;;199:2819:85;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;199:2819:85;;;;;;;;;:::i;:::-;3217:103:28;;:::i;:::-;3202:4:23;;:::i;:::-;-1:-1:-1;199:2819:85;;;;;;;;;;;9542:26:95;9538:76;;-1:-1:-1;;199:2819:85;;;;;-1:-1:-1;199:2819:85;;;;;;9665:27:95;;199:2819:85;;9665:27:95;1805:1:28;-1:-1:-1;;;;;;;;;;;199:2819:85;;9538:76:95;199:2819:85;;-1:-1:-1;;;9591:12:95;;199:2819:85;;9591:12:95;199:2819:85;;;;;;-1:-1:-1;;199:2819:85;;;;;;1718:31:96;199:2819:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3217:103:28;;:::i;:::-;-1:-1:-1;;;;;199:2819:85;;;;;3474:24:95;;3470:81;;-1:-1:-1;199:2819:85;;;;3565:55:95;;;199:2819:85;3561:118:95;;199:2819:85;;-1:-1:-1;;;3713:43:95;;;3750:4;3713:43;;;199:2819:85;;;;;;;;;;;;;;;;;;;;;;;;;3713:43:95;;;;;;;;;;-1:-1:-1;3713:43:95;;;199:2819:85;;3829:6:95;199:2819:85;;;3750:4:95;;3802:10;;3829:6;;:::i;:::-;-1:-1:-1;199:2819:85;;;3864:43:95;;;3750:4;3864:43;;;199:2819:85;;;;;;;;;;3864:43:95;199:2819:85;;;;;;3864:43:95;199:2819:85;;;;;3864:43:95;;;;;;;:59;:43;-1:-1:-1;3864:43:95;;;199:2819:85;3864:59:95;;;:::i;:::-;3938:20;;;3934:79;;199:2819:85;;;;;4027:64:95;;199:2819:85;4023:123:95;;5173:21:96;;199:2819:85;5173:21:96;4502:93:95;5173:21:96;;:::i;:::-;4803:22;4426:66:95;4803:22:96;;:::i;:::-;4349:67:95;390:70:87;;;;;:::i;:::-;837:15:62;4385:30:95;837:15:62;819:34;837:15;819:34;:::i;:::-;4385:30:95;;:::i;:::-;4349:67;;:::i;:::-;837:15:62;;4463:28:95;837:15:62;819:34;837:15;819:34;:::i;4463:28:95:-;4426:66;;:::i;:::-;-1:-1:-1;;;;;;;199:2819:85;;;;;;5606:15:96;199:2819:85;;;;;837:15:62;4553:41:95;837:15:62;5606:33:96;:24;819:34:62;837:15;819:34;:::i;:::-;-1:-1:-1;;;;;199:2819:85;;;;;;;5606:15:96;199:2819:85;;;;;;;5606:33:96;4553:41:95;:::i;:::-;4502:93;;:::i;:::-;-1:-1:-1;;199:2819:85;;;;;;;;;;;3802:10:95;;4611:62;;199:2819:85;;4611:62:95;3282:1:28;1805;-1:-1:-1;;;;;;;;;;;199:2819:85;3716:283:28;3282:1;199:2819:85;;;;;;;;;;;;;;;;;;;4023:123:95;199:2819:85;;-1:-1:-1;;;4114:21:95;;;4027:64;5173:21:96;4045:31:95;5173:21:96;;;:::i;4045:31:95:-;199:2819:85;;-1:-1:-1;4027:64:95;;3934:79;-1:-1:-1;199:2819:85;;-1:-1:-1;;;3981:21:95;;;3864:43;;;;;;-1:-1:-1;3864:43:95;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;:::i;3713:::-;3829:6;3713:43;;;;;;;;;;;;;;;:::i;:::-;;;;;3561:118;-1:-1:-1;199:2819:85;;-1:-1:-1;;;3643:25:95;;;3565:55;-1:-1:-1;3609:10:95;199:2819:85;;;;3586:22:95;199:2819:85;;;;;;;;3585:35:95;3565:55;;3470:81;199:2819:85;;-1:-1:-1;;;3521:19:95;;;199:2819:85;;;;;;-1:-1:-1;;199:2819:85;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;199:2819:85;;;;;1805:27:96;199:2819:85;;;;;;;;;;;;;;;-1:-1:-1;;199:2819:85;;;;;;1968:34:96;199:2819:85;;;;;;;;;;;;;;;-1:-1:-1;;199:2819:85;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;199:2819:85;;;;;;;;;:::i;:::-;;;;;4622:48:96;199:2819:85;;;:::i;:::-;4622:48:96;;:::i;199:2819:85:-;;;;;;-1:-1:-1;;199:2819:85;;;;;;;;;:::i;:::-;3217:103:28;;:::i;:::-;3202:4:23;;:::i;:::-;-1:-1:-1;199:2819:85;;;;;;;;;;;;;10370:24:95;10366:74;;-1:-1:-1;;199:2819:85;;;;;;;;-1:-1:-1;199:2819:85;;;;;;10489:25:95;;199:2819:85;;10489:25:95;3282:1:28;1805;-1:-1:-1;;;;;;;;;;;199:2819:85;3716:283:28;199:2819:85;;;;;;-1:-1:-1;;199:2819:85;;;;;-1:-1:-1;;;;;;;;;;;;;;;;199:2819:85;;;;;;;;;;;;;;-1:-1:-1;;199:2819:85;;;;;;;;;:::i;:::-;449:5:82;-1:-1:-1;;;;;199:2819:85;435:10:82;:19;431:71;;1113:52:85;;;:::i;:::-;199:2819;;;;;;;;;;;;;;;;;;;-1:-1:-1;;199:2819:85;431:71:82;199:2819:85;;-1:-1:-1;;;477:14:82;;199:2819:85;;477:14:82;199:2819:85;;;;;;-1:-1:-1;;199:2819:85;;;;;;:::i;:::-;;;;;;:::i;:::-;-1:-1:-1;;;;;199:2819:85;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;8837:64:25;;199:2819:85;;;;;;734:29:71;730:87;;199:2819:85;;;;;6431:44:25;;;;;199:2819:85;6427:105:25;;;6656:20;199:2819:85;6656:20:25;199:2819:85;1167:340:71;199:2819:85;;;;-1:-1:-1;;;;;199:2819:85;;;;;6575:22:25;-1:-1:-1;;;;;;;;;;;;;;199:2819:85;;;;;;;;;6575:22:25;1167:340:71;:::i;:::-;-1:-1:-1;;;;;;;;;;;199:2819:85;;-1:-1:-1;;199:2819:85;;;;;-1:-1:-1;;;;;199:2819:85;;;;;;;;;;;;;6656:20:25;;;;199:2819:85;6431:44:25;199:2819:85;;;;;-1:-1:-1;6450:25:25;6431:44;;;730:87:71;199:2819:85;;-1:-1:-1;;;786:20:71;;199:2819:85;;786:20:71;199:2819:85;;;;;;-1:-1:-1;;199:2819:85;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;-1:-1:-1;;199:2819:85;;;;;;-1:-1:-1;199:2819:85;2431:59:96;199:2819:85;;;;-1:-1:-1;199:2819:85;;;;;;;;;;;;;;-1:-1:-1;;199:2819:85;;;;3875:17:96;199:2819:85;;3895:30:96;199:2819:85;;;;;3895:14:96;;;:::i;:::-;199:2819:85;;;3895:30:96;;:::i;:::-;199:2819:85;;;;;;;3874:63:96;199:2819:85;3874:63:96;;:::i;:::-;199:2819:85;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;199:2819:85;;;;;;;;-1:-1:-1;;199:2819:85;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;199:2819:85;;;;;;;;;:::i;:::-;449:5:82;-1:-1:-1;;;;;199:2819:85;435:10:82;:19;431:71;;514:51:85;;;:::i;199:2819::-;;;;;;-1:-1:-1;;199:2819:85;;;;;;1200:42:96;-1:-1:-1;;;;;199:2819:85;;;;;;;;;;;;-1:-1:-1;;199:2819:85;;;;;;2136:32:96;199:2819:85;;;;;;;;;;;;;;;;;;-1:-1:-1;;199:2819:85;;;;2303:62:24;;:::i;:::-;-1:-1:-1;;;;;;;;;;;199:2819:85;;-1:-1:-1;;;;;;199:2819:85;;;;;;;-1:-1:-1;;;;;199:2819:85;3975:40:24;199:2819:85;;3975:40:24;199:2819:85;;;;;;;-1:-1:-1;;199:2819:85;;;;;;;;;;;:::i;:::-;3217:103:28;;:::i;:::-;7131:7:95;199:2819:85;7117:21:95;;-1:-1:-1;;;;;199:2819:85;;-1:-1:-1;;;;;199:2819:85;;;7117:21:95;:10;:21;7113:71;;7218:14;;:::i;:::-;7265:25;;;;:::i;:::-;7305:17;;;;:53;;;199:2819:85;7304:87:95;;;;199:2819:85;7300:146:95;;199:2819:85;5173:21:96;9310:48:95;5173:21:96;;;:::i;:::-;7540:17:95;7528:30;7540:17;;;:::i;:::-;199:2819:85;;7528:11:95;199:2819:85;;;;;;;7528:30:95;199:2819:85;;7572:29:95;;;;;7642:30;;;;;:::i;:::-;7702:32;;;;:::i;:::-;7752:17;;;7748:384;;7568:1615;;;;;;;9197:17;9193:102;;7568:1615;199:2819:85;;;;;;;;;;;;;;;;;;;;;;;9310:48:95;3282:1:28;1805;-1:-1:-1;;;;;;;;;;;199:2819:85;3716:283:28;3282:1;199:2819:85;;;;;;;;;;;;;9193:102:95;-1:-1:-1;199:2819:85;9270:13:95;;199:2819:85;;9230:18:95;;199:2819:85;;-1:-1:-1;;;;;199:2819:85;;;9230:18:95;7556:1;199:2819:85;-1:-1:-1;;;;;199:2819:85;9270:13:95;;:::i;:::-;9193:102;;7748:384;8045:29;7813:50;7962:65;7813:50;7998:28;7914:29;7813:50;8057:16;7813:50;8077:40;7813:50;;;:::i;:::-;7914:29;;;:::i;:::-;837:15:62;819:34;837:15;819:34;:::i;:::-;7998:28:95;;:::i;8077:40::-;8057:16;;:::i;8045:29::-;199:2819:85;7748:384:95;;;;;;;7568:1615;8185:26;;;;199:2819:85;;7528:11:95;199:2819:85;;;;;;;8185:26:95;199:2819:85;8250:27:95;:45;:27;;;;;:::i;:45::-;8325:32;;;;;:::i;:::-;8375:17;;8371:802;;7568:1615;;;;;;;;8371:802;9096:26;8436:50;;8537:53;8436:50;8637:54;8436:50;8637:29;8436:50;9125:33;8436:50;;;;:::i;:::-;8537:53;;;;;;:::i;:::-;8637:29;;;;:::i;:::-;:54;:::i;:::-;8714:33;;;;8710:194;;8371:802;8922:65;837:15:62;8958:28:95;9038:40;837:15:62;;;819:34;837:15;819:34;:::i;9038:40:95:-;9005:30;9017:17;;;:::i;9005:30::-;199:2819:85;9125:33:95;:::i;:::-;9096:26;199:2819:85;;7528:11:95;199:2819:85;;;;;;;9096:26:95;199:2819:85;8371:802:95;;;;;;;8710:194;8797:33;8771:59;8922:65;8797:33;;;9038:40;8797:33;;;:::i;:::-;8771:59;;:::i;:::-;8852:33;;-1:-1:-1;8852:33:95;;-1:-1:-1;8710:194:95;;7300:146;199:2819:85;;-1:-1:-1;;;7414:21:95;;199:2819:85;;7414:21:95;7304:87;7363:28;;;;7304:87;;7305:53;7341:17;;;;:::i;:::-;7326:32;;7305:53;;7113:71;199:2819:85;;-1:-1:-1;;;7161:12:95;;199:2819:85;;7161:12:95;199:2819:85;;;;;;-1:-1:-1;;199:2819:85;;;;4384:17:96;199:2819:85;;;;;;;4405:14:96;;;:::i;:::-;4384:17;199:2819:85;;;;;;;4404:36:96;199:2819:85;;;4404:36:96;;:::i;199:2819:85:-;;;;;;-1:-1:-1;;199:2819:85;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;199:2819:85;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;199:2819:85;2307:68:96;199:2819:85;;;;;-1:-1:-1;199:2819:85;;;;;;;;;;;;;;;;;-1:-1:-1;;199:2819:85;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;-1:-1:-1;;199:2819:85;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;199:2819:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6491:14:95;199:2819:85;;6491:14:95;;:::i;199:2819:85:-;;;;;4994:47:96;199:2819:85;;;:::i;:::-;4994:47:96;;:::i;199:2819:85:-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;3217:103:28;;:::i;:::-;10932:22:95;199:2819:85;;;;;10928:89:95;;199:2819:85;;-1:-1:-1;;;11032:49:95;;-1:-1:-1;;;;;199:2819:85;;;11032:49:95;;;199:2819:85;;;;;;;;;;;;;;;11032:49:95;11042:17;;;199:2819:85;11032:49:95;;;;;;;-1:-1:-1;11032:49:95;;;199:2819:85;11031:50:95;;11027:102;;199:2819:85;;-1:-1:-1;;;11143:34:95;;199:2819:85;;;;;11143:34:95;199:2819:85;11143:34:95;199:2819:85;;11143:34:95;;;;;;;-1:-1:-1;11143:34:95;;;199:2819:85;11189:4:95;;;199:2819:85;;11143:51:95;11139:107;;-1:-1:-1;10932:22:95;199:2819:85;;-1:-1:-1;;;;;199:2819:85;;;;-1:-1:-1;;;;;;199:2819:85;;;;;;;-1:-1:-1;;;199:2819:85;;;11334:24:95;-1:-1:-1;;11334:24:95;3282:1:28;1805;-1:-1:-1;;;;;;;;;;;199:2819:85;3716:283:28;11139:107:95;199:2819:85;;-1:-1:-1;;;11217:18:95;;;11143:34;;;;;;;-1:-1:-1;11143:34:95;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;11027:102;-1:-1:-1;199:2819:85;;-1:-1:-1;;;11104:14:95;;;11032:49;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;10928:89;199:2819:85;;-1:-1:-1;;;10977:29:95;;;199:2819:85;;;;;;-1:-1:-1;;199:2819:85;;;;;;1298:40:96;-1:-1:-1;;;;;199:2819:85;;;;;;;;;;;;-1:-1:-1;;199:2819:85;;;;1703:14:95;;:::i;:::-;5173:21:96;;:::i;:::-;199:2819:85;;;;1750:11:95;199:2819:85;;;;;;;;;;;;;1791:1:95;199:2819:85;;;;;;;;;1750:11:95;199:2819:85;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;199:2819:85;;;;-1:-1:-1;;;;;;;;;;;199:2819:85;;;-1:-1:-1;;;;;199:2819:85;;;;;;;;;;;;;;-1:-1:-1;;199:2819:85;;;;;;3901:31:23;199:2819:85;;;;;:::i;:::-;;;-1:-1:-1;199:2819:85;-1:-1:-1;;;;;;;;;;;199:2819:85;;;-1:-1:-1;199:2819:85;;;;;;;;;;;;;;;;;3901:31:23;199:2819:85;;;;;;;;;;;;;;;;-1:-1:-1;;199:2819:85;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;199:2819:85;5606:15:96;199:2819:85;;;5606:33:96;199:2819:85;-1:-1:-1;199:2819:85;5606:33:96;:::i;199:2819:85:-;;;;;;-1:-1:-1;;199:2819:85;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;199:2819:85;;;;-1:-1:-1;199:2819:85;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;416:25:75;;;;477:31;416:25;;:::i;:::-;199:2819:85;;;;;;;;;;477:31:75;;199:2819:85;;;;;;;;;;;:::i;:::-;477:31:75;199:2819:85;;477:31:75;;;;;;:::i;:::-;518:79;;;199:2819:85;518:79:75;;199:2819:85;;;;;;-1:-1:-1;;199:2819:85;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;199:2819:85;;;;;;;;;;;;;;;;;-1:-1:-1;;199:2819:85;;;;;;;1109:35:96;199:2819:85;;;;;;;;;-1:-1:-1;;199:2819:85;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;3217:103:28;;:::i;:::-;3202:4:23;;:::i;:::-;-1:-1:-1;;;;;199:2819:85;;;9907:21:95;;9903:75;;-1:-1:-1;199:2819:85;;;9992:22:95;199:2819:85;;;;;;;;;;;;;9992:41:95;9988:91;;-1:-1:-1;;;;;199:2819:85;;;;;3586:22:95;199:2819:85;;;;;10145:44:95;;;;10089:40;;:31;199:2819:85;;;;;;;;;;;;;;10089:40:95;199:2819:85;;;;;;;;;;;;;;;10145:44:95;;;;3282:1:28;1805;-1:-1:-1;;;;;;;;;;;199:2819:85;3716:283:28;9903:75:95;199:2819:85;;-1:-1:-1;;;9951:16:95;;199:2819:85;;9951:16:95;199:2819:85;;;;;;-1:-1:-1;;199:2819:85;;;;;2666:94:96;199:2819:85;;;;;:::i;:::-;;;-1:-1:-1;199:2819:85;2666:94:96;199:2819:85;;;-1:-1:-1;199:2819:85;;;;;;;;;;;;;;;;;2666:94:96;199:2819:85;;;;;;;;;;;;;-1:-1:-1;;199:2819:85;;;;;;2816:92:96;199:2819:85;;;;;:::i;:::-;;;-1:-1:-1;199:2819:85;2816:92:96;199:2819:85;;;-1:-1:-1;199:2819:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3217:103:28;;:::i;:::-;11459:20:95;199:2819:85;;;;;11455:85:95;;-1:-1:-1;;;;;199:2819:85;;;;;;11550:312:95;;199:2819:85;11459:20:95;199:2819:85;;-1:-1:-1;;;;199:2819:85;-1:-1:-1;;;199:2819:85;;;11872:27:95;11915:20;-1:-1:-1;11915:20:95;;3282:1:28;1805;-1:-1:-1;;;;;;;;;;;199:2819:85;3716:283:28;11550:312:95;199:2819:85;;-1:-1:-1;;;11597:45:95;;-1:-1:-1;;;;;199:2819:85;;11597:45:95;;;199:2819:85;;;11597:45:95;;199:2819:85;;;;;;11597:45:95;11607:15;;;199:2819:85;11597:45:95;;;;;;;-1:-1:-1;11597:45:95;;;11550:312;11596:46;;11592:104;;199:2819:85;;-1:-1:-1;;;11714:30:95;;;199:2819:85;11714:30:95;199:2819:85;11714:30:95;;;;;;;;-1:-1:-1;11714:30:95;;;11550:312;11756:4;;;199:2819:85;;11714:47:95;11710:109;;-1:-1:-1;11459:20:95;199:2819:85;;-1:-1:-1;;;;;;199:2819:85;-1:-1:-1;;;;;199:2819:85;;;;;;;;;11550:312:95;;;;;;11710:109;199:2819:85;;-1:-1:-1;;;11788:16:95;;;11714:30;;;;;;;-1:-1:-1;11714:30:95;;;;;;:::i;:::-;;;;;;11592:104;199:2819:85;;-1:-1:-1;;;11669:12:95;;199:2819:85;;11669:12:95;11597:45;;;;;;;;;;;;;;:::i;:::-;;;;11455:85;199:2819:85;;-1:-1:-1;;;11502:27:95;;;199:2819:85;;;;;;-1:-1:-1;;199:2819:85;;;;;;;;;:::i;:::-;;;3217:103:28;;;:::i;:::-;-1:-1:-1;;;;;199:2819:85;;;;;6112:23:95;;6108:79;;6273:6;199:2819:85;6206:13:95;;;;:::i;:::-;199:2819:85;;;-1:-1:-1;199:2819:85;;;;6273:6:95;:::i;:::-;199:2819:85;;;;;;;;;;;;6302:10:95;;6296:43;;199:2819:85;6296:43:95;1805:1:28;-1:-1:-1;;;;;;;;;;;199:2819:85;;;;;;;;;;;;;;6108:79:95;199:2819:85;;-1:-1:-1;;;6158:18:95;;199:2819:85;;6158:18:95;199:2819:85;;;;;;-1:-1:-1;;199:2819:85;;;;;;-1:-1:-1;199:2819:85;2546:64:96;199:2819:85;;;;-1:-1:-1;199:2819:85;;;;;;;;;;;;;;-1:-1:-1;;199:2819:85;;;;2058:22:96;199:2819:85;;;-1:-1:-1;;;;;199:2819:85;;;;;;;;;;;;;;-1:-1:-1;;199:2819:85;;;;;5173:21:96;;:::i;199:2819:85:-;;;;;;-1:-1:-1;;199:2819:85;;;;;;3217:103:28;;:::i;:::-;966:10:27;-1:-1:-1;199:2819:85;;;;;;;;;;1109:35:96;;199:2819:85;;4468:23:23;4464:108;;199:2819:85;;;;10692:21:95;10688:71;;199:2819:85;;10805:22:95;199:2819:85;;;;;;;;10805:22:95;1805:1:28;-1:-1:-1;;;;;;;;;;;199:2819:85;;4464:108:23;199:2819:85;;;;4514:47:23;;;;;;966:10:27;199:2819:85;4514:47:23;;199:2819:85;;;;;4514:47:23;199:2819:85;;;;;;-1:-1:-1;;199:2819:85;;;;;4803:22:96;;:::i;199:2819:85:-;;;;;;-1:-1:-1;;199:2819:85;;;;;;;;;:::i;:::-;3123:14:95;;:::i;:::-;3154:24;;;:::i;:::-;3181:29;;;;;:::i;:::-;199:2819:85;;;;;;;3235:1:95;199:2819:85;;;;;;;3213:33:95;;;:::i;:::-;199:2819:85;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;199:2819:85;;;;1888:24:96;199:2819:85;;;-1:-1:-1;;;;;199:2819:85;;;;;;;;;;;;;;-1:-1:-1;;199:2819:85;;;;5767:26:23;199:2819:85;;;;;;;:::i;:::-;;-1:-1:-1;199:2819:85;-1:-1:-1;;;;;;;;;;;199:2819:85;;3202:4:23;4919:24;199:2819:85;-1:-1:-1;199:2819:85;4919:24:23;199:2819:85;3202:4:23;:::i;:::-;5767:26;:::i;199:2819:85:-;;;;;;-1:-1:-1;;199:2819:85;;;;;;;;;;;;;-1:-1:-1;;;;;199:2819:85;;;;;;;;;;;;-1:-1:-1;;199:2819:85;;;;;;;675:39:96;199:2819:85;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;:::i;:::-;-1:-1:-1;;;;;449:5:82;199:2819:85;;435:10:82;:19;431:71;;1742:63:85;199:2819;;-1:-1:-1;199:2819:85;1742:15;199:2819;;;-1:-1:-1;199:2819:85;1742:63;:::i;199:2819::-;;;;;;-1:-1:-1;;199:2819:85;;;;;;;;;;;;;;;;;;;-1:-1:-1;;199:2819:85;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;-1:-1:-1;;;;;199:2819:85;;;;;;;;;;;;;;;:::i;:::-;1972:48:95;;199:2819:85;;;;;;;:::i;:::-;;;;;;;;;;;;;;2034:16:95;;2030:111;;199:2819:85;;2233:39:95;1057:70:87;2233:39:95;;4622:48:96;2196:77:95;2233:39;;;;2196:77;;:::i;:::-;2312:36;;4994:47:96;199:2819:85;2312:36:95;;;4994:47:96;;:::i;:::-;2389:37:95;;;4622:48:96;;:::i;:::-;1057:70:87;;:::i;:::-;199:2819:85;;;;;;;;;;;;;2030:111:95;2089:41;;;;-1:-1:-1;199:2819:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;4622:48:96;199:2819:85;2196:77:95;199:2819:85;1057:70:87;199:2819:85;;;:::i;:::-;;;;;2030:111:95;;;;;199:2819:85;;;;;;-1:-1:-1;;199:2819:85;;;;2357:1:24;199:2819:85;;;;;:::i;:::-;2303:62:24;;:::i;:::-;2357:1;:::i;199:2819:85:-;;;;;;-1:-1:-1;;199:2819:85;;;;;;;;;:::i;:::-;;;3217:103:28;;:::i;:::-;-1:-1:-1;;;;;199:2819:85;;4890:21:95;4886:75;;4975:11;;4971:73;;845:69:87;4803:22:96;;:::i;:::-;5173:21;;:::i;:::-;845:69:87;;;:::i;:::-;5180:10:95;199:2819:85;;;;5606:15:96;199:2819:85;;;;;5180:10:95;;;5606:33:96;;;:::i;:::-;5150:41:95;;5146:96;;5267:40;;;;;:::i;5146:96::-;199:2819:85;;-1:-1:-1;;;5214:17:95;;199:2819:85;;5214:17:95;4971:73;199:2819:85;;-1:-1:-1;;;5009:24:95;;199:2819:85;;5009:24:95;199:2819:85;;;;;;-1:-1:-1;;199:2819:85;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;199:2819:85;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;7556:1:95;199:2819:85;;;;;;;:::o;:::-;;;;;;;;;;:::o;5256:193:96:-;-1:-1:-1;;;;;199:2819:85;-1:-1:-1;199:2819:85;;;5383:15:96;199:2819:85;;;;;5383:59:96;;5256:193;;5383:59;:::i;199:2819:85:-;;;;;;;;;;;:::o;:::-;;;;;;;;;;1167:340:71;;13510:30:95;1167:340:71;199:2819:85;1167:340:71;6893:76:25;;:::i;:::-;;;:::i;:::-;1805:1:28;-1:-1:-1;;;;;;;;;;;199:2819:85;-1:-1:-1;;;;;199:2819:85;;;;1376:73:71;;1167:340;199:2819:85;;;;:::i;:::-;13510:30:95;199:2819:85;;;13510:30:95;;;;;;:::i;:::-;199:2819:85;;;;-1:-1:-1;;;;;199:2819:85;13555:31:95;13551:88;;13653:20;;;;199:2819:85;;;;;;;;;;13653:25:95;13649:85;;13748:29;;;199:2819:85;;13748:29:95;;199:2819:85;13748:43:95;;-1:-1:-1;;;;;199:2819:85;;;13748:43:95;;13744:943;;1167:340:71;199:2819:85;;;15647:32:95;199:2819:85;14817:36:95;199:2819:85;;;14697:30:95;199:2819:85;;;;;;;;;;;;1398:1:71;199:2819:85;;-1:-1:-1;;;;;;199:2819:85;;;;;;-1:-1:-1;;;;;199:2819:85;;;;;;;;14697:30:95;13510;14747:13;;199:2819:85;;;;-1:-1:-1;;;;;;199:2819:85;-1:-1:-1;;;;;199:2819:85;;;;;;;;;14771:36:95;819:34:62;837:15;819:34;:::i;:::-;1805:1:28;199:2819:85;;-1:-1:-1;;;;199:2819:85;;;;;;-1:-1:-1;;;199:2819:85;;;;;;;;14771:36:95;199:2819:85;;;;;;1805:1:28;199:2819:85;;-1:-1:-1;;;;;199:2819:85;;;;;;-1:-1:-1;;;;;;199:2819:85;;;;;;;;14817:36:95;14864:42;199:2819:85;14883:23:95;;;199:2819:85;;;;;;;;;1398:1:71;199:2819:85;;;;;;;1398:1:71;199:2819:85;;14864:42:95;14917:38;199:2819:85;14934:21:95;;;199:2819:85;;;;;;;1398:1:71;199:2819:85;;;;;;;;;;;;1398:1:71;199:2819:85;;14917:38:95;14965:34;14980:19;;;199:2819:85;14965:34:95;199:2819:85;;14965:34:95;199:2819:85;-1:-1:-1;;;;;199:2819:85;;;;;;;15010:135:95;;1167:340:71;-1:-1:-1;15158:36:95;;;199:2819:85;-1:-1:-1;;;;;199:2819:85;;;;15154:157:95;;1167:340:71;-1:-1:-1;15324:35:95;;;199:2819:85;-1:-1:-1;;;;;199:2819:85;;;;15320:153:95;;1167:340:71;-1:-1:-1;15486:34:95;;;199:2819:85;-1:-1:-1;;;;;199:2819:85;;;;15482:152:95;;1167:340:71;-1:-1:-1;15647:32:95;199:2819:85;-1:-1:-1;;;;;199:2819:85;;;;;;;15643:145:95;;1167:340:71;:::o;15643:145:95:-;15709:68;;;:::i;:::-;;1167:340:71:o;15482:152:95:-;15550:73;;;:::i;:::-;;15482:152;;;15320:153;15389:73;;;:::i;:::-;;15320:153;;;15154:157;15224:76;;;:::i;:::-;;15154:157;;;15010:135;15073:61;;;:::i;:::-;;15010:135;;;13744:943;13811:36;;;199:2819:85;13811:50:95;;-1:-1:-1;;;;;199:2819:85;;;13811:50:95;;13807:405;;13744:943;14230:34;;;199:2819:85;14230:48:95;;-1:-1:-1;;;;;199:2819:85;;;14230:48:95;13744:943;14226:451;14302:21;;;199:2819:85;;14302:21:95;;14351:19;;;199:2819:85;14351:24:95;:74;;;14298:365;14347:150;;14298:365;;199:2819:85;15647:32:95;14298:365;14817:36;199:2819:85;;14298:365:95;;14226:451;;;;;;;13744:943;;14347:150;199:2819:85;-1:-1:-1;;;14460:14:95;;;;;14351:74;-1:-1:-1;14379:32:95;;;199:2819:85;14379:46:95;;-1:-1:-1;;;;;199:2819:85;;;14379:46:95;;14351:74;;14298:365;14525:19;;;199:2819:85;14525:24:95;;;:74;;;14298:365;14521:142;;14298:365;;199:2819:85;15647:32:95;14298:365;14817:36;199:2819:85;;14298:365:95;;;14525:74;-1:-1:-1;14553:32:95;;;199:2819:85;14553:46:95;;-1:-1:-1;;;;;199:2819:85;;;14553:46:95;;;14525:74;;13807:405;13885:23;;;199:2819:85;;13885:23:95;;13936:35;;;199:2819:85;13936:49:95;;-1:-1:-1;;;;;199:2819:85;;;13936:49:95;13807:405;13932:125;199:2819:85;-1:-1:-1;;;14020:14:95;;;;;13881:317;14085:35;;;199:2819:85;14085:49:95;;-1:-1:-1;;;;;199:2819:85;;;14085:49:95;14081:117;13807:405;14081:117;199:2819:85;-1:-1:-1;;;14165:14:95;;;;;13649:85;199:2819:85;;-1:-1:-1;;;13701:22:95;;;;;13551:88;199:2819:85;;-1:-1:-1;;;13609:19:95;;;;;1376:73:71;6961:1:25;6893:76;;;:::i;:::-;;;:::i;6961:1::-;1376:73:71;;;2492:191:95;-1:-1:-1;;;;;199:2819:85;-1:-1:-1;199:2819:85;;;5606:15:96;199:2819:85;;;;;5606:33:96;;;:::i;:::-;5173:21;;:::i;:::-;4803:22;;:::i;:::-;199:2819:85;1884:1:87;199:2819:85;;;;;;;1884:1:87;199:2819:85;;;;;;;8188:25:57;;;:::i;199:2819:85:-;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;578:368::-;;;735:95;711:157;578:368;199:2819;;;;;766:63;;;;;;;;199:2819;766:63;;;199:2819;766:63;;;;;;:::i;:::-;735:95;:::i;:::-;766:63;199:2819;;;711:157;;;;;;:::i;:::-;879:61;;;578:368;:::o;879:61::-;199:2819;;;;;;;;766:63;912:17;;199:2819;766:63;912:17;;;;;:::i;199:2819::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;3612:132:96:-;819:34:62;837:15;819:34;:::i;:::-;3683:54:96;3703:17;199:2819:85;3684:36:96;199:2819:85;;;;;;;3684:36:96;;:::i;:::-;199:2819:85;;;3683:54:96;;:::i;:::-;199:2819:85;3612:132:96;:::o;3313:244::-;3418:17;199:2819:85;;;;;;;;;;;;;;3406:29:96;3402:85;;3503:47;3504:29;;;;:::i;3402:85::-;199:2819:85;;-1:-1:-1;;;3458:18:96;;;;;3217:103:28;;;;:::i;:::-;199:2819:85;;-1:-1:-1;;;;;199:2819:85;;;6521:23:95;;6517:79;;6650:11;;6646:70;;199:2819:85;6742:10:95;;;;;;-1:-1:-1;199:2819:85;;6887:49:95;;199:2819:85;;;;6864:6:95;;199:2819:85;;6821:18:95;;199:2819:85;;-1:-1:-1;;;;;199:2819:85;;;6821:18:95;6864:6;:::i;:::-;6887:49;199:2819:85;;6898:10:95;;;;6887:49;;;:::i;:::-;;;;3282:1:28;;1805;-1:-1:-1;;;;;;;;;;;199:2819:85;3716:283:28;6754:3:95;6790:9;6773:27;199:2819:85;6790:9:95;6783:17;6790:9;;;;;:::i;:::-;199:2819:85;6783:17:95;:::i;6773:27::-;6754:3;199:2819:85;6731:9:95;;6646:70;199:2819:85;;-1:-1:-1;;;6684:21:95;;;;;199:2819:85;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;199:2819:85;;;;;;;;;;;;;;;;;;;;;;:::o;1178:370::-;;;1336:96;1312:158;1178:370;199:2819;;;;;1367:64;;;;;;;;199:2819;1367:64;;;199:2819;1367:64;;;;;;:::i;199:2819::-;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;199:2819:85;;;;:::o;:::-;;;:::o;1818:400::-;199:2819;;-1:-1:-1;;;2026:75:85;;;;-1:-1:-1;;;;;199:2819:85;;;2026:75;;;199:2819;;;;;;;;;;;;;2026:75;;199:2819;;1818:400;1971:169;;1995:107;;2026:75;199:2819;2026:75;:::i;3405:215:24:-;-1:-1:-1;;;;;199:2819:85;;;;3489:22:24;;3485:91;;-1:-1:-1;;;;;;;;;;;199:2819:85;;-1:-1:-1;;;;;;199:2819:85;;;;;;;;3975:40:24;-1:-1:-1;;3975:40:24;3405:215::o;3485:91::-;199:2819:85;;-1:-1:-1;;;3534:31:24;;3509:1;3534:31;;;199:2819:85;;;3534:31:24;2731:227:95;;2871:34;2731:227;199:2819:85;-1:-1:-1;199:2819:85;2871:18:95;199:2819:85;;;-1:-1:-1;199:2819:85;;;;;;;;;;;;;;;;;2871:34:95;199:2819:85;;-1:-1:-1;199:2819:85;2907:11:95;199:2819:85;;;-1:-1:-1;199:2819:85;;2927:16:95;199:2819:85;;;-1:-1:-1;199:2819:85;;;1884:1:87;199:2819:85;;;;;;;1884:1:87;199:2819:85;;;;;;;8188:25:57;;;:::i;2224:792:85:-;;;;;2579:34;2416:45;2357:12;199:2819;2416:45;;;:::i;:::-;2503:33;;;;;:::i;:::-;2579:34;;:::i;:::-;199:2819;;;2628:30;;;:61;;;2224:792;2628:93;;;;2224:792;2624:386;;2224:792;;;:::o;2624:386::-;199:2819;;;;2744:255;199:2819;;;;;;;;;;:::i;:::-;;;2772:213;;;199:2819;;;;2772:213;;199:2819;;;;;;2744:255;;;2772:213;2744:255;;;199:2819;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;2628:93::-;199:2819;;;2693:28;;2628:93;;:61;199:2819;;;2662:27;;2628:61;;3326:384:28;-1:-1:-1;;;;;;;;;;;1847:1:28;199:2819:85;;3526:20:28;3522:88;;1847:1;199:2819:85;;3326:384:28:o;3522:88::-;199:2819:85;;-1:-1:-1;;;3569:30:28;;;;;11948:968:95;12135:10;199:2819:85;;;;5606:15:96;199:2819:85;;;;;;11948:968:95;;;819:34:62;837:15;819:34;:::i;:::-;12135:10:95;199:2819:85;;;;5606:15:96;199:2819:85;;;;;5606:33:96;;;:::i;:::-;199:2819:85;;;;;;;;;12119:93:95;12835:74;12119:93;;;12660:30;12119:93;;:::i;:::-;837:15:62;;12222:67:95;819:34:62;837:15;819:34;:::i;:::-;12259:29:95;4803:22:96;;;:::i;12222:67:95:-;837:15:62;;12299:68:95;819:34:62;837:15;819:34;:::i;:::-;12335:31:95;5173:21:96;;;:::i;12299:68:95:-;12394:14;;12769:34;12394:14;12769:25;12394:18;:14;;:::i;:::-;:18;:::i;:::-;12726:33;12445:18;;199:2819:85;;7528:11:95;199:2819:85;;;;;;;12445:18:95;199:2819:85;12502:23:95;;199:2819:85;;12502:16:95;199:2819:85;;;;;;;12502:23:95;199:2819:85;390:70:87;;;;;:::i;:::-;12660:30:95;;;;;;:::i;:::-;12639:18;;199:2819:85;;7528:11:95;199:2819:85;;;;;;;12639:18:95;199:2819:85;12726:33:95;:::i;:::-;12700:23;;199:2819:85;;12502:16:95;199:2819:85;;;;;;;12700:23:95;199:2819:85;;;12769:18:95;199:2819:85;;;;;;;12769:25:95;199:2819:85;;;;;;;;;;;;;;;;12769:34:95;:50;199:2819:85;;;12769:50:95;:::i;:::-;199:2819:85;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;199:2819:85;;;;12135:10:95;;199:2819:85;;12835:74:95;11948:968::o;14291:213:58:-;199:2819:85;14369:24:58;;;;14365:103;;199:2819:85;14291:213:58;:::o;14365:103::-;199:2819:85;;;;14416:41:58;;;;;;14447:2;14416:41;;;199:2819:85;;;;;14416:41:58;199:2819:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::o;7558:604:86:-;;199:2819:85;;7686:17:86;7682:83;;199:2819:85;7789:27:86;199:2819:85;7789:27:86;199:2819:85;;7789:27:86;;;;;;:::i;:::-;7860:14;;;:::i;:::-;199:2819:85;;;;;;;;;;;;;;;;7888:22:86;;;7884:77;;7975:21;-1:-1:-1;7975:84:86;;;;7558:604;7971:139;;;;8127:28;;;;:::i;7971:139::-;7789:27;8082:17;;;199:2819:85;8075:24:86;:::o;7975:84::-;199:2819:85;;;8009:16:86;4622:13:96;199:2819:85;8009:16:86;:::i;:::-;199:2819:85;;;8001:24:86;:57;;;;;7975:84;;;;;;;8001:57;8029:29;8038:8;;;8029:18;8038:8;8029:23;8038:8;;:::i;:::-;8029:18;:::i;:23::-;199:2819:85;;;;8029:29:86;;8001:57;;;;7884:77;7933:17;;;7789:27;7933:17;;;199:2819:85;7926:24:86;:::o;7682:83::-;7726:28;;;;:::i;7558:604::-;;199:2819:85;;7686:17:86;7682:83;;199:2819:85;7789:27:86;199:2819:85;7789:27:86;199:2819:85;;7789:27:86;;;;;;:::i;:::-;7860:14;;;:::i;:::-;199:2819:85;;;;;;;;;;;;;;;;7888:22:86;;;7884:77;;7975:21;-1:-1:-1;7975:84:86;;;;7558:604;7971:139;;;;8127:28;;;;:::i;7975:84::-;199:2819:85;;;8009:16:86;4994:12:96;199:2819:85;8009:16:86;:::i;:::-;199:2819:85;;;8001:24:86;:57;;;;;7975:84;;;;;;;8001:57;8029:29;8038:8;;;8029:18;8038:8;8029:23;8038:8;;:::i;:::-;8029:18;:::i;:29::-;;8001:57;;;;7682:83;7726:28;;;;:::i;7558:604::-;;199:2819:85;;7686:17:86;7682:83;;199:2819:85;7789:27:86;199:2819:85;7789:27:86;199:2819:85;;7789:27:86;;;;;;:::i;:::-;7860:14;;;;;:::i;:::-;199:2819:85;;;;;;;;;;;;;;;;7888:22:86;;;7884:77;;7975:21;-1:-1:-1;7975:84:86;;;;7558:604;7971:139;;;;8127:28;;;;:::i;7971:139::-;8082:17;;7789:27;8082:17;199:2819:85;8075:24:86;:::o;7975:84::-;199:2819:85;;;8009:16:86;199:2819:85;;8009:16:86;:::i;:::-;199:2819:85;;;8001:24:86;:57;;;;;7975:84;;;;;;;8001:57;8029:29;8038:8;;;8029:18;8038:8;8029:23;8038:8;;:::i;:::-;8029:18;;:::i;:29::-;;8001:57;;;;7884:77;7933:17;;;;;7789:27;7933:17;199:2819:85;7926:24:86;:::o;7682:83::-;7726:28;;;;:::i;4148:103:23:-;966:10:27;-1:-1:-1;199:2819:85;;;;;;;;;675:39:96;;199:2819:85;;3901:31:23;199:2819:85;;4468:23:23;4464:108;;4148:103;:::o;:::-;966:10:27;-1:-1:-1;199:2819:85;;;;;;;;;966:38:96;;199:2819:85;;3901:31:23;199:2819:85;4148:103:23;966:10:27;-1:-1:-1;199:2819:85;;;;;;;;;821:37:96;;199:2819:85;;3901:31:23;199:2819:85;4148:103:23;-1:-1:-1;199:2819:85;;;-1:-1:-1;;;;;;;;;;;199:2819:85;;;;;;;;966:10:27;199:2819:85;;;;;;;;;3901:31:23;199:2819:85;7270:387:23;-1:-1:-1;;;;;199:2819:85;;1398:1:71;199:2819:85;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2887:71:23;199:2819:85;;;;1398:1:71;199:2819:85;;;;;;;;;;;-1:-1:-1;;;;;199:2819:85;;;;;;;;;;-1:-1:-1;;199:2819:85;7509:4:23;199:2819:85;;;966:10:27;;-1:-1:-1;;;;;199:2819:85;-1:-1:-1;7532:40:23;-1:-1:-1;;7532:40:23;7509:4;7586:11;:::o;7432:219::-;7628:12;;1398:1:71;7628:12:23;:::o;7270:387::-;-1:-1:-1;;;;;199:2819:85;;-1:-1:-1;199:2819:85;;;;;;;;;675:39:96;;-1:-1:-1;;;;;;;;;;;2887:71:23;199:2819:85;;3901:31:23;199:2819:85;;;;-1:-1:-1;199:2819:85;;;;;;;;;;;-1:-1:-1;;;;;199:2819:85;;;;;;;;;;-1:-1:-1;;199:2819:85;7509:4:23;199:2819:85;;;966:10:27;;-1:-1:-1;;;;;199:2819:85;;7532:40:23;-1:-1:-1;;7532:40:23;7509:4;7586:11;:::o;7432:219::-;7628:12;;;-1:-1:-1;7628:12:23;:::o;7270:387::-;-1:-1:-1;;;;;199:2819:85;;-1:-1:-1;199:2819:85;;;;;;;;;821:37:96;;-1:-1:-1;;;;;;;;;;;2887:71:23;199:2819:85;;3901:31:23;199:2819:85;7270:387:23;-1:-1:-1;;;;;199:2819:85;;-1:-1:-1;199:2819:85;;;;;;;;;966:38:96;;-1:-1:-1;;;;;;;;;;;2887:71:23;199:2819:85;;3901:31:23;199:2819:85;7270:387:23;-1:-1:-1;;;;;199:2819:85;;-1:-1:-1;199:2819:85;;;;;;;;;1109:35:96;;-1:-1:-1;;;;;;;;;;;2887:71:23;199:2819:85;;3901:31:23;199:2819:85;7270:387:23;-1:-1:-1;199:2819:85;;;-1:-1:-1;;;;;;;;;;;199:2819:85;;;;;;;;-1:-1:-1;;;;;199:2819:85;;;;;;;;;;;;3901:31:23;199:2819:85;7892:388:23;-1:-1:-1;199:2819:85;;;-1:-1:-1;;;;;;;;;;;199:2819:85;;;;;;;;-1:-1:-1;;;;;199:2819:85;;;;;;;;;;;;;;;;-1:-1:-1;199:2819:85;;;;;;;;;;;-1:-1:-1;;;;;199:2819:85;;;;;;;;;;-1:-1:-1;;199:2819:85;;;966:10:27;;-1:-1:-1;;;;;199:2819:85;;8155:40:23;-1:-1:-1;;8155:40:23;199:2819:85;8209:11:23;:::o;1702:188:45:-;199:2819:85;;-1:-1:-1;;;1829:53:45;;;;-1:-1:-1;;;;;199:2819:85;;;1829:53:45;;;199:2819:85;;;;;;;;;;;;;;;;;1829:53:45;;;199:2819:85;;;;;;;-1:-1:-1;;;;;199:2819:85;;;;;1829:53:45;199:2819:85;;;1829:53:45;:::i;199:2819:85:-;9219:12:86;199:2819:85;;;;;;9219:12:86;-1:-1:-1;199:2819:85;-1:-1:-1;;;;;;;;;;;199:2819:85;;-1:-1:-1;199:2819:85;:::o;:::-;9219:12:86;199:2819:85;;;;;;9219:12:86;-1:-1:-1;199:2819:85;-1:-1:-1;;;;;;;;;;;199:2819:85;;-1:-1:-1;199:2819:85;:::o;:::-;;;;;;;;-1:-1:-1;199:2819:85;;-1:-1:-1;199:2819:85;;;-1:-1:-1;199:2819:85;:::o;:::-;6360:12:86;199:2819:85;-1:-1:-1;;;199:2819:85;;;;;;;;;6360:12:86;199:2819:85;;;;;;6360:12:86;-1:-1:-1;199:2819:85;-1:-1:-1;;;;;;;;;;;199:2819:85;;:::o;:::-;6360:12:86;199:2819:85;-1:-1:-1;;;199:2819:85;;;;;;;;;6360:12:86;199:2819:85;;;;;;6360:12:86;-1:-1:-1;199:2819:85;-1:-1:-1;;;;;;;;;;;199:2819:85;;:::o;:::-;;;;;-1:-1:-1;;;199:2819:85;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6246:584:86;;;;6360:12;199:2819:85;;;6360:24:86;;6356:75;;6246:584;6474:30;;;:::i;:::-;199:2819:85;;;;;;6578:12:86;;;:::i;:::-;6604:24;;;;6246:584;-1:-1:-1;6600:188:86;;;-1:-1:-1;;;199:2819:85;;;;;;;;;-1:-1:-1;199:2819:85;;;-1:-1:-1;199:2819:85;;;;;;6798:25:86;199:2819:85;6246:584:86:o;6600:188::-;8167:38:60;;-1:-1:-1;;;;;199:2819:85;;-1:-1:-1;8167:38:60;:::i;:::-;6753:24:86;;;;;:::i;:::-;6798:25;6246:584;:::o;6604:24::-;199:2819:85;;;;;;6614:14:86;;-1:-1:-1;6604:24:86;;;6356:75;-1:-1:-1;;;199:2819:85;;;;;;;;;;;;;;;;-1:-1:-1;199:2819:85;;;;-1:-1:-1;;;;;;;;;;;199:2819:85;;6356:75:86;;;6246:584;;;;6360:12;199:2819:85;;;6360:24:86;;6356:75;;6246:584;6474:30;;;:::i;:::-;199:2819:85;;;;;;6578:12:86;;;:::i;:::-;6604:24;;;;6246:584;-1:-1:-1;6600:188:86;;;-1:-1:-1;;;199:2819:85;;;;;;;;;-1:-1:-1;199:2819:85;;;-1:-1:-1;199:2819:85;;;;;;6798:25:86;199:2819:85;6246:584:86:o;6600:188::-;8167:38:60;;-1:-1:-1;;;;;199:2819:85;;-1:-1:-1;8167:38:60;:::i;:::-;6753:24:86;;;;;:::i;6604:::-;199:2819:85;;;;;;6614:14:86;;-1:-1:-1;6604:24:86;;;6356:75;-1:-1:-1;;;199:2819:85;;;;;;;;;;;;;;;;-1:-1:-1;199:2819:85;;;;-1:-1:-1;;;;;;;;;;;199:2819:85;;6356:75:86;;;6246:584;;;;;6360:12;;;199:2819:85;;;6360:24:86;;6356:75;;6246:584;6474:30;;;;;:::i;:::-;199:2819:85;;;;;;6578:12:86;;;;:::i;:::-;6604:24;;;;6246:584;-1:-1:-1;6600:188:86;;;-1:-1:-1;;;;;199:2819:85;;;;;;;6644:21:86;;;:29;:21;;:::i;6600:188::-;6753:24;;199:2819:85;;8167:38:60;;-1:-1:-1;;;;;199:2819:85;;;;;8167:38:60;:::i;:::-;6753:24:86;;;:::i;6604:::-;199:2819:85;;;;;;6614:14:86;;-1:-1:-1;6604:24:86;;;6356:75;-1:-1:-1;;;199:2819:85;;;;;;6360:12:86;199:2819:85;;;;;;;:::i;:::-;;;;;;;;;;;;;;6356:75:86;;;199:2819:85;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;8406:869:86:-;1113:13:85;199:2819;8620:15:86;8578:11;8645:18;8678:7;8684:1;8678:7;;8674:241;;8406:869;8939:60;;;;:::i;:::-;9014:8;;9010:62;;199:2819:85;9130:48:86;9170:7;;;:::i;:::-;1113:13:85;13267:109:86;;-1:-1:-1;;;;;;;;;;;13267:109:86;13089:293;;9130:48;199:2819:85;:::i;:::-;;9252:15:86;9259:7;199:2819:85;9219:31:86;199:2819:85;9232:17:86;199:2819:85;;;;;;;;9232:17:86;;199:2819:85;-1:-1:-1;;;;;199:2819:85;;;;9219:31:86;:::i;:::-;199:2819:85;;;;;;;;;9259:7:86;;:::i;:::-;199:2819:85;;;;9252:15:86;9176:1;;9188:80;;8406:869::o;9010:62::-;9038:23;8578:11;9038:23;8578:11;9038:23;8578:11;9038:23;8578:11;9038:23;:::o;8674:241::-;8721:14;;;;;:::i;:::-;199:2819:85;;;;;;;1113:13;8578:11:86;13267:109;-1:-1:-1;;;;;;;;;;;13267:109:86;;199:2819:85;8939:60:86;;13267:109;199:2819:85;;;;;;;8753:55:86;199:2819:85;;;8828:10:86;8749:156;8674:241;;8749:156;8883:7;;;;;;:::i;:::-;8749:156;8674:241;;8406:869;514:12:85;199:2819;8620:15:86;8578:11;8645:18;8678:7;8684:1;8678:7;;8674:241;;8406:869;8939:60;;;;:::i;:::-;9014:8;;9010:62;;199:2819:85;9130:48:86;9170:7;;;:::i;:::-;514:12:85;13267:109:86;;-1:-1:-1;;;;;;;;;;;13267:109:86;13089:293;;199:2819:85;;9252:15:86;9259:7;199:2819:85;9219:31:86;199:2819:85;9232:17:86;199:2819:85;;;;;;;;9219:31:86;:::i;8674:241::-;8721:14;;;;;:::i;:::-;199:2819:85;;;;;;;514:12;8578:11:86;13267:109;-1:-1:-1;;;;;;;;;;;13267:109:86;;199:2819:85;8939:60:86;;13267:109;199:2819:85;;;;;;;8753:55:86;199:2819:85;;;8828:10:86;8749:156;8674:241;;8749:156;8883:7;;;;;;:::i;:::-;8749:156;8674:241;;8406:869;;;199:2819:85;;8620:15:86;8578:11;8645:18;8678:7;8684:1;8678:7;;8674:241;;8406:869;8939:60;;;;;:::i;:::-;9014:8;;;9010:62;;9252:15;9259:7;199:2819:85;9219:31:86;199:2819:85;9130:48:86;9170:7;;;:::i;:::-;9130:48;13267:109;;;;;;13089:293;;199:2819:85;;9176:1:86;199:2819:85;9232:17:86;199:2819:85;;;;;;;;9232:17:86;;199:2819:85;-1:-1:-1;;;;;199:2819:85;;;;9219:12:86;;:31;:::i;9010:62::-;8578:11;;-1:-1:-1;8578:11:86;;-1:-1:-1;8578:11:86;;;;9038:23::o;8674:241::-;8721:14;;;;;:::i;:::-;199:2819:85;;;;;;;8939:60:86;13267:109;;8578:11;13267:109;8753:55;8759:49;13267:109;;8578:11;13267:109;;199:2819:85;;;;;;8753:55:86;199:2819:85;;;8753:55:86;13267:109;;;8828:10;8749:156;8674:241;;8749:156;8883:7;;;;;;:::i;:::-;8749:156;8674:241;;199:2819:85;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;:::o;525:595:82:-;;-1:-1:-1;199:2819:85;;;;;716:88:82;;;;;199:2819:85;716:88:82;;;;;;;;;783:4;716:88;;;199:2819:85;;;;;;;;;;;:::i;716:88:82:-;698:107;;;;;;;:::i;:::-;199:2819:85;;857:45:82;;;;;;;;199:2819:85;;;;;857:45:82;;;199:2819:85;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;199:2819:85;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;199:2819:85;;;;;;;;;;916:8:82;912:175;;1096:17;525:595;:::o;912:175::-;199:2819:85;;;944:22:82;;;940:36;;990:87;;2658:162:24;-1:-1:-1;;;;;;;;;;;199:2819:85;-1:-1:-1;;;;;199:2819:85;966:10:27;2717:23:24;2713:101;;2658:162::o;2713:101::-;199:2819:85;;-1:-1:-1;;;2763:40:24;;966:10:27;2763:40:24;;;199:2819:85;;;2763:40:24;2557:104:57;;2641:5;;;;;;:13;2557:104;:::o;2641:13::-;;;2557:104;:::o;199:2819:85:-;;;;;;;:::o;3803:4116:57:-;;;199:2819:85;;;;-1:-1:-1;;3803:4116:57;;4383:131;;;;;;;;;;;;4595:10;;4591:368;;5065:20;;;;5061:88;;5435:300;;;199:2819:85;-1:-1:-1;199:2819:85;5954:31:57;;5999:371;;;6813:1;199:2819:85;;6794:1:57;199:2819:85;6793:21:57;199:2819:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5999:371:57;;;;-1:-1:-1;5999:371:57;;;5435:300;;;;;;199:2819:85;5435:300:57;;5999:371;6436:21;199:2819:85;3803:4116:57;:::o;5061:88::-;199:2819:85;;-1:-1:-1;;;5112:22:57;;;;;4591:368;4925:19;;;;;;;:::i;1303:160:45:-;199:2819:85;;-1:-1:-1;;;1412:43:45;;;;-1:-1:-1;;;;;199:2819:85;;;1412:43:45;;;199:2819:85;;;;;;;;;1412:43:45;;;;;;199:2819:85;1412:43:45;:::i;:::-;;:::i;12922:460:95:-;;13024:14;;:::i;:::-;13015:23;;;13011:75;;-1:-1:-1;199:2819:85;;;13100:20:95;199:2819:85;;;;;;;;13128:10:95;199:2819:85;;;;;;;;;;13096:93:95;;13208:32;13128:10;13208:32;;:::i;:::-;13255:11;;;13251:68;;-1:-1:-1;199:2819:85;;;13100:20:95;199:2819:85;;;;;;;;13128:10:95;199:2819:85;;;;;;;;;-1:-1:-1;;199:2819:85;13371:4:95;199:2819:85;;;12922:460:95:o;13251:68::-;199:2819:85;;-1:-1:-1;;;13289:19:95;;;;;13096:93;199:2819:85;;-1:-1:-1;;;13162:16:95;;;;;13011:75;199:2819:85;;-1:-1:-1;;;13061:14:95;;;;;10580:184:86;5173:12:96;199:2819:85;10303:8:60;;;:63;-1:-1:-1;10303:63:60;-1:-1:-1;;;;;199:2819:85;;10726:7:86;199:2819:85;;10736:12:86;199:2819:85;;;;;;10736:12:86;-1:-1:-1;199:2819:85;-1:-1:-1;;;;;;;;;;;199:2819:85;;10580:184:86;:::o;10726:31::-;;-1:-1:-1;10580:184:86;:::o;10303:63:60:-;199:2819:85;;;;;;;;5173:12:96;-1:-1:-1;13267:109:86;;;199:2819:85;;;10303:63:60;;10580:184:86;4803:13:96;199:2819:85;10303:8:60;;;:63;-1:-1:-1;10303:63:60;-1:-1:-1;;;;;199:2819:85;;10726:7:86;199:2819:85;;10736:12:86;199:2819:85;;;;;;10736:12:86;-1:-1:-1;199:2819:85;-1:-1:-1;;;;;;;;;;;199:2819:85;;10580:184:86;:::o;10303:63:60:-;199:2819:85;;;;;;;;4803:13:96;-1:-1:-1;13267:109:86;;;199:2819:85;;;10303:63:60;;10580:184:86;199:2819:85;;10303:8:60;;;:63;-1:-1:-1;10303:63:60;-1:-1:-1;;;;;199:2819:85;;10726:7:86;199:2819:85;;10736:12:86;:17;:12;;:17;:::i;10303:63:60:-;199:2819:85;;;;;;;;;;13267:109:86;-1:-1:-1;13267:109:86;;-1:-1:-1;13267:109:86;;;199:2819:85;;;10303:63:60;;1662:280:87;;;1884:1;199:2819:85;;;;;;;1884:1:87;199:2819:85;;;;;;;8188:25:57;;;:::i;6999:207:86:-;4622:13:96;199:2819:85;9594:15:60;-1:-1:-1;9619:18:60;9652:7;9658:1;9652:7;;9648:234;;6999:207:86;9906:53:60;;;;:::i;:::-;9977:8;;;:63;-1:-1:-1;9977:63:60;-1:-1:-1;;;;;199:2819:85;;7168:7:86;199:2819:85;;7178:17:86;199:2819:85;7178:17:86;;:::i;9977:63:60:-;9992:41;10025:7;9992:48;10025:7;;:::i;9992:41::-;199:2819:85;;;;;9992:48:60;9977:63;;9648:234;9695:14;;;;;:::i;:::-;199:2819:85;;;;;;;9906:53:60;13267:109:86;4622:13:96;-1:-1:-1;13267:109:86;199:2819:85;13267:109:86;;-1:-1:-1;;;;;;;;;;;13267:109:86;199:2819:85;;;;;9727:48:60;9723:149;199:2819:85;;;9795:10:60;9723:149;9648:234;;9723:149;9850:7;;;;;;:::i;:::-;9723:149;9648:234;;6999:207:86;4994:12:96;199:2819:85;9594:15:60;-1:-1:-1;9619:18:60;9652:7;9658:1;9652:7;;9648:234;;6999:207:86;9906:53:60;;;;:::i;:::-;9977:8;;;:63;-1:-1:-1;9977:63:60;-1:-1:-1;;;;;199:2819:85;;7168:7:86;199:2819:85;;7178:17:86;199:2819:85;7178:17:86;;:::i;9977:63:60:-;9992:41;10025:7;9992:48;10025:7;;:::i;9992:48::-;9977:63;;9648:234;9695:14;;;;;:::i;:::-;199:2819:85;;;;;;;9906:53:60;13267:109:86;4994:12:96;-1:-1:-1;13267:109:86;199:2819:85;13267:109:86;;-1:-1:-1;;;;;;;;;;;13267:109:86;199:2819:85;;;;;9727:48:60;9723:149;199:2819:85;;;9795:10:60;9723:149;9648:234;;9723:149;9850:7;;;;;;:::i;:::-;9723:149;9648:234;;6999:207:86;;199:2819:85;;9594:15:60;-1:-1:-1;9619:18:60;9652:7;9658:1;9652:7;;9648:234;;6999:207:86;9906:53:60;;;;;:::i;:::-;9977:8;;;:63;-1:-1:-1;9977:63:60;;-1:-1:-1;;;;;199:2819:85;;7168:7:86;199:2819:85;;;7178:12:86;;:17;:12;;:17;:::i;9977:63:60:-;9992:41;10025:7;9992:48;10025:7;;:::i;:::-;9992:41;13267:109:86;;;;;;13089:293;;9992:48:60;9977:63;;;9648:234;9695:14;;;;;:::i;:::-;199:2819:85;;;;;;;9906:53:60;13267:109:86;;-1:-1:-1;13267:109:86;199:2819:85;13267:109:86;;;-1:-1:-1;13267:109:86;;199:2819:85;;;;;9727:48:60;9723:149;199:2819:85;;;9795:10:60;9723:149;9648:234;;9723:149;9850:7;;;;;;:::i;:::-;9723:149;9648:234;;199:2819:85;;;;;;;:::i;:::-;-1:-1:-1;199:2819:85;;;;;;;:::o;11486:272:86:-;199:2819:85;;:::i;:::-;;;;:::i;:::-;;4622:13:96;199:2819:85;;;;;;;;4622:13:96;-1:-1:-1;199:2819:85;-1:-1:-1;;;;;;;;;;;199:2819:85;;:::i;:::-;;;;;;;;;;;;11731:17:86;;199:2819:85;;11718:12:86;199:2819:85;;;;;;11718:12:86;-1:-1:-1;199:2819:85;-1:-1:-1;;;;;;;;;;;199:2819:85;;;;;;;;:::i;:::-;;;;11672:79:86;;199:2819:85;11486:272:86;:::o;:::-;199:2819:85;;:::i;:::-;;;;:::i;:::-;;4994:12:96;199:2819:85;;;;;;;;4994:12:96;-1:-1:-1;199:2819:85;-1:-1:-1;;;;;;;;;;;199:2819:85;;:::i;:::-;;;;;;;;;;;;11731:17:86;;199:2819:85;;11718:12:86;199:2819:85;;;;;;11718:12:86;-1:-1:-1;199:2819:85;-1:-1:-1;;;;;;;;;;;199:2819:85;;;;;;;;:::i;11486:272:86:-;;199:2819:85;11308:22:60;11718:31:86;11486:272;199:2819:85;;:::i;:::-;;;;:::i;:::-;;11308:22:60;;:::i;:::-;199:2819:85;;:::i;:::-;;11718:12:86;199:2819:85;;;;;11731:17:86;199:2819:85;;;;;11731:17:86;;199:2819:85;;11718:12:86;;:31;:::i;:::-;199:2819:85;;;;;;;;;:::i;:::-;;;;;;11731:17:86;11672:79;;199:2819:85;11486:272:86;:::o;4059:629:45:-;2847:1:46;4059:629:45;3510:55:46;4059:629:45;199:2819:85;;;;;;3462:31:46;;;;;;;;;;;;:::i;:::-;3510:55;;;:::i;:::-;199:2819:85;;4551:22:45;;;;:57;;;;4059:629;4547:135;;;;4059:629;:::o;4547:135::-;199:2819:85;;;;4631:40:45;;;;;;;;;199:2819:85;4631:40:45;4551:57;4578:30;;;3462:31:46;4578:30:45;;;;;;;;:::i;:::-;4577:31;4551:57;;;;1258:280:87;;;199:2819:85;;;;;;;;;;;;;;;;8188:25:57;;;;;:::i;:::-;8257;;;;;;8223:101;;1258:280:87;:::o;8223:101:57:-;199:2819:85;;;;;;;;1258:280:87;:::o;10552:388:60:-;5173:12:96;199:2819:85;10728:8:60;;;10752:20;10690:17;10752:20;10690:17;10752:20;10690:17;10752:20;:::o;10724:210::-;199:2819:85;;;;;;;;13267:109:86;199:2819:85;13267:109:86;5173:12:96;10690:17:60;13267:109:86;;199:2819:85;:::i;:::-;;;;;;;13267:109:86;199:2819:85;;;;;10911:11:60;;199:2819:85;;10886:37:60;10870:1;10886:37;;;:::o;10552:388::-;4803:13:96;199:2819:85;10728:8:60;;;10752:20;10690:17;10752:20;10690:17;10752:20;10690:17;10752:20;:::o;10724:210::-;199:2819:85;;;;;;;;13267:109:86;199:2819:85;13267:109:86;4803:13:96;10690:17:60;13267:109:86;;199:2819:85;:::i;10552:388:60:-;199:2819:85;;10728:8:60;;;10752:20;;10690:17;10752:20;10690:17;10752:20;10690:17;10752:20;:::o;10724:210::-;199:2819:85;;;;;;;;;;;13267:109:86;10690:17:60;13267:109:86;;10690:17:60;13267:109:86;;;199:2819:85;:::i;8587:1642:57:-;8658:6;;8654:45;;9401:7;10201:10;10142:26;10093;10044;9995;9946;9897;9848;199:2819:85;10189:23:57;9401:7;8663:1;199:2819:85;;;;10826:16:57;10822:99;;8587:1642;199:2819:85;;;;10938:15:57;10934:96;;8587:1642;199:2819:85;;;;11047:15:57;11043:96;;8587:1642;199:2819:85;;;;11156:15:57;11152:96;;8587:1642;199:2819:85;;;;11265:14:57;11261:93;;8587:1642;199:2819:85;;;;11371:14:57;11367:93;;8587:1642;199:2819:85;;;;11477:14:57;11473:93;;8587:1642;199:2819:85;;;11579:64:57;;8587:1642;199:2819:85;;;9858:10:57;;;;:::i;:::-;199:2819:85;;;;;9848:26:57;9907:10;;;;:::i;9897:26::-;9956:10;;;;:::i;9946:26::-;10005:10;;;;:::i;9995:26::-;10054:10;;;;:::i;10044:26::-;10103:10;;;;:::i;10093:26::-;10152:10;;;;:::i;10142:26::-;10201:10;;;:::i;:::-;10189:23;;:::i;11579:64::-;199:2819:85;;11579:64:57;;11473:93;199:2819:85;11511:11:57;;199:2819:85;;11473:93:57;;;;11367;199:2819:85;11405:11:57;;199:2819:85;;11367:93:57;;;;11261;199:2819:85;11299:11:57;;199:2819:85;;11261:93:57;;;;11152:96;199:2819:85;11191:12:57;;199:2819:85;;11152:96:57;;;;11043;199:2819:85;11082:12:57;;199:2819:85;;11043:96:57;;;;10934;199:2819:85;10973:12:57;;199:2819:85;;10934:96:57;;;;10822:99;10862:13;;;199:2819:85;10822:99:57;;;;12497:447:86;12694:10;;;;;12926:11;;12497:447;:::o;12687:230::-;12734:23;;;;;;:::i;:::-;13267:109;1113:13:85;-1:-1:-1;13267:109:86;199:2819:85;13267:109:86;;-1:-1:-1;;;;;;;;;;;13267:109:86;199:2819:85;;;;;-1:-1:-1;12771:136:86;199:2819:85;;;12830:10:86;12771:136;;12687:230;;;12771:136;199:2819:85;;12891:1:86;199:2819:85;;;;;;12771:136:86;199:2819:85;;:::i;12497:447:86:-;12694:10;;;;;12926:11;;12497:447;:::o;12687:230::-;12734:23;;;;;;:::i;:::-;13267:109;514:12:85;-1:-1:-1;13267:109:86;199:2819:85;13267:109:86;;-1:-1:-1;;;;;;;;;;;13267:109:86;199:2819:85;;;;;-1:-1:-1;12771:136:86;199:2819:85;;;12830:10:86;12771:136;;12687:230;;;12771:136;199:2819:85;;12891:1:86;199:2819:85;;;;;;12771:136:86;199:2819:85;;:::i;12497:447:86:-;;12694:10;;;;;;12926:11;;;12497:447;:::o;12687:230::-;12734:23;;;;;;;:::i;:::-;13267:109;;-1:-1:-1;13267:109:86;199:2819:85;13267:109:86;;;-1:-1:-1;13267:109:86;;199:2819:85;;;;;-1:-1:-1;12771:136:86;199:2819:85;;;12830:10:86;12771:136;;12687:230;;;;12771:136;199:2819:85;;12891:1:86;199:2819:85;;;;;;12771:136:86;199:2819:85;;:::i;7084:141:25:-;199:2819:85;-1:-1:-1;;;;;;;;;;;199:2819:85;;;;7150:18:25;7146:73;;7084:141::o;7146:73::-;199:2819:85;;-1:-1:-1;;;7191:17:25;;;;;199:2819:85;5173:12:96;199:2819:85;;-1:-1:-1;;;199:2819:85;;;;;;;;;5173:12:96;199:2819:85;;;;;;5173:12:96;-1:-1:-1;199:2819:85;;;;;;;;;;-1:-1:-1;;199:2819:85;;;;;;;-1:-1:-1;;;;;;;;;;;199:2819:85;;;;:::o;:::-;4803:13:96;199:2819:85;;-1:-1:-1;;;199:2819:85;;;;;;;;;4803:13:96;199:2819:85;;;;;;4803:13:96;-1:-1:-1;199:2819:85;;;;;;;;;;-1:-1:-1;;199:2819:85;;;;;;;-1:-1:-1;;;;;;;;;;;199:2819:85;;;;:::o;:::-;;;-1:-1:-1;;;199:2819:85;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;199:2819:85;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;11513:870:60;5173:12:96;199:2819:85;11513:870:60;;;199:2819:85;11672:7:60;;;;199:2819:85;11775:28:60;11795:7;;;:::i;199:2819:85:-;;;;;;;;;;-1:-1:-1;;11873:91:60;;199:2819:85;12233:11:60;199:2819:85;;;12027:16:60;199:2819:85;;;;;;;12027:16:60;;;;12083:7;12063:28;12083:7;12063:43;12083:7;;:::i;12063:28::-;199:2819:85;;;;;;;;;;;;;;;;;12063:43:60;12233:11;199:2819:85;-1:-1:-1;;;;;199:2819:85;;;12023:189:60;199:2819:85;;12145:52:60;199:2819:85;;12155:41:60;199:2819:85;;:::i;:::-;;;;;;;;12155:41:60;-1:-1:-1;;;;;199:2819:85;;12155:41:60;;;199:2819:85;12145:52:60;:::i;:::-;12023:189;;11873:91;199:2819:85;;-1:-1:-1;;;11919:30:60;;;;;11668:709;12283:52;199:2819:85;;12293:41:60;199:2819:85;;:::i;12293:41:60:-;-1:-1:-1;;;;;199:2819:85;;12293:41:60;;;199:2819:85;12145:52:60;:::i;12283:::-;11678:1;12349:17;;:::o;11513:870::-;4803:13:96;199:2819:85;11513:870:60;;;199:2819:85;11672:7:60;;;;199:2819:85;11775:28:60;11795:7;;;:::i;199:2819:85:-;;;;;;;;;;-1:-1:-1;;11873:91:60;;199:2819:85;12233:11:60;199:2819:85;;;12027:16:60;199:2819:85;;;;;;;12027:16:60;;;;12083:7;12063:28;12083:7;12063:43;12083:7;;:::i;12023:189::-;199:2819:85;;12145:52:60;199:2819:85;;12155:41:60;199:2819:85;;:::i;12155:41:60:-;-1:-1:-1;;;;;199:2819:85;;12155:41:60;;;199:2819:85;12145:52:60;:::i;11668:709::-;12283:52;199:2819:85;;12293:41:60;199:2819:85;;:::i;12293:41:60:-;-1:-1:-1;;;;;199:2819:85;;12293:41:60;;;199:2819:85;12145:52:60;:::i;11513:870::-;199:2819:85;;11513:870:60;;;199:2819:85;11513:870:60;11672:7;;;;199:2819:85;11775:28:60;11795:7;;;:::i;199:2819:85:-;;;;;;;;;;;;;;;;11877:15:60;-1:-1:-1;11873:91:60;;199:2819:85;;12233:11:60;199:2819:85;;;12027:16:60;199:2819:85;;;;;;;12027:16:60;;;;12083:7;12063:43;12083:7;;12063:28;12083:7;;:::i;:::-;12063:28;13267:109:86;;;;;;13089:293;;12023:189:60;199:2819:85;;;12145:52:60;199:2819:85;12155:41:60;199:2819:85;;:::i;:::-;;;;;;;;12155:41:60;-1:-1:-1;;;;;199:2819:85;;12155:41:60;;;199:2819:85;12145:52:60;:::i;11668:709::-;12283:52;199:2819:85;;12293:41:60;199:2819:85;;:::i;12293:41:60:-;-1:-1:-1;;;;;199:2819:85;;12293:41:60;;;199:2819:85;12145:52:60;:::i;2774:153:57:-;;2900:5;;;2910;;199:2819:85;;;;;;;;;2774:153:57;:::o;12736:433:60:-;;12919:10;;;;;;13151:11;;;12736:433;:::o;12912:230::-;12959:23;;;;;;;:::i;:::-;13267:109:86;;-1:-1:-1;13267:109:86;199:2819:85;13267:109:86;;;-1:-1:-1;13267:109:86;;199:2819:85;;;;;-1:-1:-1;12996:136:60;199:2819:85;;;13055:10:60;12996:136;;12912:230;;;;12996:136;199:2819:85;;13116:1:60;199:2819:85;;;;;;12996:136:60;199:2819:85;;:::i;4625:582:46:-;;4797:8;;-1:-1:-1;199:2819:85;;5874:21:46;:17;;6046:142;;;;;;5870:383;199:2819:85;;-1:-1:-1;;;6225:17:46;;;;;4793:408;199:2819:85;;5045:22:46;:49;;;4793:408;5041:119;;5173:17;;:::o;5041:119::-;199:2819:85;;-1:-1:-1;;;5121:24:46;;-1:-1:-1;;;;;199:2819:85;;;5121:24:46;;;199:2819:85;;;5121:24:46;5045:49;5071:18;;;:23;5045:49;","linkReferences":{},"immutableReferences":{"58075":[{"start":2016,"length":32},{"start":2606,"length":32}],"62368":[{"start":4185,"length":32},{"start":4913,"length":32},{"start":9127,"length":32}],"68715":[{"start":4989,"length":32},{"start":6348,"length":32}],"68718":[{"start":6709,"length":32},{"start":7909,"length":32}]}},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","DELEGATOR_FACTORY()":"6da3e06d","DEPOSITOR_WHITELIST_ROLE()":"1b66c9e1","DEPOSIT_LIMIT_SET_ROLE()":"a21a1df9","DEPOSIT_WHITELIST_SET_ROLE()":"db388715","FACTORY()":"2dd31000","IS_DEPOSIT_LIMIT_SET_ROLE()":"1415519b","SLASHER_FACTORY()":"87df0788","activeBalanceOf(address)":"59f769a9","activeBalanceOfAt(address,uint48,bytes)":"efb559d6","activeBalanceOfHints(address,address,uint48)":"f9e1bf6c","activeShares()":"bfefcd7b","activeSharesAt(uint48,bytes)":"50f22068","activeSharesHint(address,uint48)":"8326056f","activeSharesHintInternal(uint48)":"55a2c672","activeSharesOf(address)":"9d66201b","activeSharesOfAt(address,uint48,bytes)":"2d73c69c","activeSharesOfHint(address,address,uint48)":"de499716","activeSharesOfHintInternal(address,uint48)":"eb556238","activeStake()":"bd49c35f","activeStakeAt(uint48,bytes)":"810da75d","activeStakeHint(address,uint48)":"64b03fdc","activeStakeHintInternal(uint48)":"67567add","burner()":"27810b6e","claim(address,uint256)":"aad3ec96","claimBatch(address,uint256[])":"7c04c80a","collateral()":"d8dfeb45","currentEpoch()":"76671808","currentEpochStart()":"61a8c8c4","delegator()":"ce9b7930","deposit(address,uint256)":"47e7ef24","depositLimit()":"ecf70858","depositWhitelist()":"48d3b775","epochAt(uint48)":"7953b33b","epochDuration()":"4ff0876a","epochDurationInit()":"46361671","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","initialize(uint64,address,bytes)":"57ec83cc","isDelegatorInitialized()":"50861adc","isDepositLimit()":"a1b12202","isDepositorWhitelisted(address)":"794b15b7","isInitialized()":"392e53cd","isSlasherInitialized()":"6ec1e3f8","isWithdrawalsClaimed(uint256,address)":"a5d03223","migrate(uint64,bytes)":"2abe3048","nextEpochStart()":"73790ab3","onSlash(uint256,uint48)":"7278e31c","owner()":"8da5cb5b","previousEpochStart()":"281f5752","redeem(address,uint256)":"1e9a6950","renounceOwnership()":"715018a6","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","setDelegator(address)":"83cd9cc3","setDepositLimit(uint256)":"bdc8144b","setDepositWhitelist(bool)":"4105a7dd","setDepositorWhitelistStatus(address,bool)":"a2861466","setIsDepositLimit(bool)":"5346e34f","setSlasher(address)":"aabc2496","slashableBalanceOf(address)":"c31e8dd7","slasher()":"b1344271","staticDelegateCall(address,bytes)":"9f86fd85","supportsInterface(bytes4)":"01ffc9a7","totalStake()":"8b0e9f3f","transferOwnership(address)":"f2fde38b","version()":"54fd4d50","withdraw(address,uint256)":"f3fef3a3","withdrawalShares(uint256)":"afba70ad","withdrawalSharesOf(uint256,address)":"a3b54172","withdrawals(uint256)":"5cc07076","withdrawalsOf(uint256,address)":"f5e7ee0f"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadyClaimed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadySet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CheckpointUnorderedInsertion\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DelegatorAlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DepositLimitReached\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExternalCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientClaim\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientDeposit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientRedemption\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientWithdrawal\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCaptureEpoch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidClaimer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCollateral\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDelegator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEpoch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEpochDuration\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidLengthEpochs\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOnBehalfOf\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRecipient\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSlasher\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTimestamp\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MathOverflowedMulDiv\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingRoles\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoPreviousEpoch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotDelegator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotFactory\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotSlasher\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotWhitelistedDepositor\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SlasherAlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TooMuchRedeem\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TooMuchWithdraw\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"claimer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Claim\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"claimer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"epochs\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"ClaimBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"depositor\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slashedAmount\",\"type\":\"uint256\"}],\"name\":\"OnSlash\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"SetDelegator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"SetDepositLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"SetDepositWhitelist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"SetDepositorWhitelistStatus\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"SetIsDepositLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"slasher\",\"type\":\"address\"}],\"name\":\"SetSlasher\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"claimer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"burnedShares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"mintedShares\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DELEGATOR_FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEPOSITOR_WHITELIST_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEPOSIT_LIMIT_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEPOSIT_WHITELIST_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"IS_DEPOSIT_LIMIT_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SLASHER_FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"activeBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hints\",\"type\":\"bytes\"}],\"name\":\"activeBalanceOfAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"activeBalanceOfHints\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"activeShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"activeSharesAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"activeSharesHint\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"activeSharesHintInternal\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"exists\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"hint\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"activeSharesOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"activeSharesOfAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"activeSharesOfHint\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"activeSharesOfHintInternal\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"exists\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"hint\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"activeStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"activeStakeAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"activeStakeHint\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"activeStakeHintInternal\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"exists\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"hint\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"burner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"}],\"name\":\"claim\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"epochs\",\"type\":\"uint256[]\"}],\"name\":\"claimBatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"collateral\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentEpochStart\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"delegator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"depositedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mintedShares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"depositLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"depositWhitelist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"epochAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"epochDuration\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"epochDurationInit\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"initialVersion\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner_\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isDelegatorInitialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isDepositLimit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isDepositorWhitelisted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isInitialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isSlasherInitialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isWithdrawalsClaimed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newVersion\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"migrate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nextEpochStart\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"}],\"name\":\"onSlash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"slashedAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"previousEpochStart\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"claimer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"withdrawnAssets\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mintedShares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator_\",\"type\":\"address\"}],\"name\":\"setDelegator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"setDepositLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"setDepositWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"setDepositorWhitelistStatus\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"setIsDepositLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"slasher_\",\"type\":\"address\"}],\"name\":\"setSlasher\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"slashableBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slasher\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"staticDelegateCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"claimer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"burnedShares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mintedShares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"}],\"name\":\"withdrawalShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"withdrawalSharesOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"}],\"name\":\"withdrawals\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"withdrawalsOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"AddressInsufficientBalance(address)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"CheckpointUnorderedInsertion()\":[{\"details\":\"A value was attempted to be inserted on a past checkpoint.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"MathOverflowedMulDiv()\":[{\"details\":\"Muldiv operation overflow.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC20 token failed.\"}]},\"events\":{\"Claim(address,address,uint256,uint256)\":{\"params\":{\"amount\":\"amount of the collateral claimed\",\"claimer\":\"account that claimed\",\"epoch\":\"epoch the collateral was claimed for\",\"recipient\":\"account that received the collateral\"}},\"ClaimBatch(address,address,uint256[],uint256)\":{\"params\":{\"amount\":\"amount of the collateral claimed\",\"claimer\":\"account that claimed\",\"epochs\":\"epochs the collateral was claimed for\",\"recipient\":\"account that received the collateral\"}},\"Deposit(address,address,uint256,uint256)\":{\"params\":{\"amount\":\"amount of the collateral deposited\",\"depositor\":\"account that made the deposit\",\"onBehalfOf\":\"account the deposit was made on behalf of\",\"shares\":\"amount of the active shares minted\"}},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"OnSlash(uint256,uint48,uint256)\":{\"params\":{\"amount\":\"amount of the collateral to slash\",\"captureTimestamp\":\"time point when the stake was captured\",\"slashedAmount\":\"real amount of the collateral slashed\"}},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"SetDelegator(address)\":{\"details\":\"Can be set only once.\",\"params\":{\"delegator\":\"vault's delegator to delegate the stake to networks and operators\"}},\"SetDepositLimit(uint256)\":{\"params\":{\"limit\":\"deposit limit (maximum amount of the collateral that can be in the vault simultaneously)\"}},\"SetDepositWhitelist(bool)\":{\"params\":{\"status\":\"if enabled deposit whitelist\"}},\"SetDepositorWhitelistStatus(address,bool)\":{\"params\":{\"account\":\"account for which the whitelist status is set\",\"status\":\"if whitelisted the account\"}},\"SetIsDepositLimit(bool)\":{\"params\":{\"status\":\"if enabled deposit limit\"}},\"SetSlasher(address)\":{\"details\":\"Can be set only once.\",\"params\":{\"slasher\":\"vault's slasher to provide a slashing mechanism to networks\"}},\"Withdraw(address,address,uint256,uint256,uint256)\":{\"params\":{\"amount\":\"amount of the collateral withdrawn\",\"burnedShares\":\"amount of the active shares burned\",\"claimer\":\"account that needs to claim the withdrawal\",\"mintedShares\":\"amount of the epoch withdrawal shares minted\",\"withdrawer\":\"account that made the withdrawal\"}}},\"kind\":\"dev\",\"methods\":{\"activeBalanceOf(address)\":{\"params\":{\"account\":\"account to get the active balance for\"},\"returns\":{\"_0\":\"active balance for the account\"}},\"activeBalanceOfAt(address,uint48,bytes)\":{\"params\":{\"account\":\"account to get the active balance for\",\"hints\":\"hints for checkpoints' indexes\",\"timestamp\":\"time point to get the active balance for the account at\"},\"returns\":{\"_0\":\"active balance for the account at the timestamp\"}},\"activeShares()\":{\"returns\":{\"_0\":\"total number of active shares\"}},\"activeSharesAt(uint48,bytes)\":{\"params\":{\"hint\":\"hint for the checkpoint index\",\"timestamp\":\"time point to get the total number of active shares at\"},\"returns\":{\"_0\":\"total number of active shares at the timestamp\"}},\"activeSharesOf(address)\":{\"params\":{\"account\":\"account to get the number of active shares for\"},\"returns\":{\"_0\":\"number of active shares for the account\"}},\"activeSharesOfAt(address,uint48,bytes)\":{\"params\":{\"account\":\"account to get the number of active shares for\",\"hint\":\"hint for the checkpoint index\",\"timestamp\":\"time point to get the number of active shares for the account at\"},\"returns\":{\"_0\":\"number of active shares for the account at the timestamp\"}},\"activeStake()\":{\"returns\":{\"_0\":\"total amount of active stake\"}},\"activeStakeAt(uint48,bytes)\":{\"params\":{\"hint\":\"hint for the checkpoint index\",\"timestamp\":\"time point to get the total active stake at\"},\"returns\":{\"_0\":\"total amount of active stake at the timestamp\"}},\"claim(address,uint256)\":{\"params\":{\"epoch\":\"epoch to claim the collateral for\",\"recipient\":\"account that receives the collateral\"},\"returns\":{\"amount\":\"amount of the collateral claimed\"}},\"claimBatch(address,uint256[])\":{\"params\":{\"epochs\":\"epochs to claim the collateral for\",\"recipient\":\"account that receives the collateral\"},\"returns\":{\"amount\":\"amount of the collateral claimed\"}},\"currentEpoch()\":{\"returns\":{\"_0\":\"current epoch\"}},\"currentEpochStart()\":{\"returns\":{\"_0\":\"start of the current epoch\"}},\"deposit(address,uint256)\":{\"params\":{\"amount\":\"amount of the collateral to deposit\",\"onBehalfOf\":\"account the deposit is made on behalf of\"},\"returns\":{\"depositedAmount\":\"real amount of the collateral deposited\",\"mintedShares\":\"amount of the active shares minted\"}},\"epochAt(uint48)\":{\"details\":\"Reverts if the timestamp is less than the start of the epoch 0.\",\"params\":{\"timestamp\":\"time point to get the epoch at\"},\"returns\":{\"_0\":\"epoch at the timestamp\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize(uint64,address,bytes)\":{\"params\":{\"data\":\"some data to use\",\"initialVersion\":\"initial version of the entity\",\"owner\":\"initial owner of the entity\"}},\"isInitialized()\":{\"returns\":{\"_0\":\"if the vault is fully initialized\"}},\"migrate(uint64,bytes)\":{\"params\":{\"data\":\"some data to use\",\"newVersion\":\"new version of the entity\"}},\"nextEpochStart()\":{\"returns\":{\"_0\":\"start of the next epoch\"}},\"onSlash(uint256,uint48)\":{\"details\":\"Only the slasher can call this function.\",\"params\":{\"amount\":\"amount to slash\",\"captureTimestamp\":\"time point when the stake was captured\"},\"returns\":{\"slashedAmount\":\"real amount of the collateral slashed\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"previousEpochStart()\":{\"details\":\"Reverts if the current epoch is 0.\",\"returns\":{\"_0\":\"start of the previous epoch\"}},\"redeem(address,uint256)\":{\"params\":{\"claimer\":\"account that needs to claim the withdrawal\",\"shares\":\"amount of the active shares to redeem\"},\"returns\":{\"mintedShares\":\"amount of the epoch withdrawal shares minted\",\"withdrawnAssets\":\"amount of the collateral withdrawn\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"setDepositLimit(uint256)\":{\"details\":\"Only a DEPOSIT_LIMIT_SET_ROLE holder can call this function.\",\"params\":{\"limit\":\"deposit limit (maximum amount of the collateral that can be in the vault simultaneously)\"}},\"setDepositWhitelist(bool)\":{\"details\":\"Only a DEPOSIT_WHITELIST_SET_ROLE holder can call this function.\",\"params\":{\"status\":\"if enabling deposit whitelist\"}},\"setDepositorWhitelistStatus(address,bool)\":{\"details\":\"Only a DEPOSITOR_WHITELIST_ROLE holder can call this function.\",\"params\":{\"account\":\"account for which the whitelist status is set\",\"status\":\"if whitelisting the account\"}},\"setIsDepositLimit(bool)\":{\"details\":\"Only a IS_DEPOSIT_LIMIT_SET_ROLE holder can call this function.\",\"params\":{\"status\":\"if enabling deposit limit\"}},\"slashableBalanceOf(address)\":{\"params\":{\"account\":\"account to get the slashable collateral for\"},\"returns\":{\"_0\":\"total amount of the account's slashable collateral\"}},\"staticDelegateCall(address,bytes)\":{\"details\":\"It allows to use this contract's storage on-chain.\",\"params\":{\"data\":\"data to make a delegatecall with\",\"target\":\"address of the contract to make a delegatecall to\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"totalStake()\":{\"returns\":{\"_0\":\"total amount of the slashable collateral\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"version()\":{\"details\":\"Starts from 1.\",\"returns\":{\"_0\":\"version of the entity\"}},\"withdraw(address,uint256)\":{\"params\":{\"amount\":\"amount of the collateral to withdraw\",\"claimer\":\"account that needs to claim the withdrawal\"},\"returns\":{\"burnedShares\":\"amount of the active shares burned\",\"mintedShares\":\"amount of the epoch withdrawal shares minted\"}},\"withdrawalsOf(uint256,address)\":{\"params\":{\"account\":\"account to get the withdrawals for\",\"epoch\":\"epoch to get the withdrawals for the account at\"},\"returns\":{\"_0\":\"withdrawals for the account at the epoch\"}}},\"version\":1},\"userdoc\":{\"events\":{\"Claim(address,address,uint256,uint256)\":{\"notice\":\"Emitted when a claim is made.\"},\"ClaimBatch(address,address,uint256[],uint256)\":{\"notice\":\"Emitted when a batch claim is made.\"},\"Deposit(address,address,uint256,uint256)\":{\"notice\":\"Emitted when a deposit is made.\"},\"OnSlash(uint256,uint48,uint256)\":{\"notice\":\"Emitted when a slash happens.\"},\"SetDelegator(address)\":{\"notice\":\"Emitted when a delegator is set.\"},\"SetDepositLimit(uint256)\":{\"notice\":\"Emitted when a deposit limit is set.\"},\"SetDepositWhitelist(bool)\":{\"notice\":\"Emitted when a deposit whitelist status is enabled/disabled.\"},\"SetDepositorWhitelistStatus(address,bool)\":{\"notice\":\"Emitted when a depositor whitelist status is set.\"},\"SetIsDepositLimit(bool)\":{\"notice\":\"Emitted when a deposit limit status is enabled/disabled.\"},\"SetSlasher(address)\":{\"notice\":\"Emitted when a slasher is set.\"},\"Withdraw(address,address,uint256,uint256,uint256)\":{\"notice\":\"Emitted when a withdrawal is made.\"}},\"kind\":\"user\",\"methods\":{\"DELEGATOR_FACTORY()\":{\"notice\":\"Get the delegator factory's address.\"},\"DEPOSITOR_WHITELIST_ROLE()\":{\"notice\":\"Get a depositor whitelist status setter's role.\"},\"DEPOSIT_LIMIT_SET_ROLE()\":{\"notice\":\"Get a deposit limit setter's role.\"},\"DEPOSIT_WHITELIST_SET_ROLE()\":{\"notice\":\"Get a deposit whitelist enabler/disabler's role.\"},\"FACTORY()\":{\"notice\":\"Get the factory's address.\"},\"IS_DEPOSIT_LIMIT_SET_ROLE()\":{\"notice\":\"Get a deposit limit enabler/disabler's role.\"},\"SLASHER_FACTORY()\":{\"notice\":\"Get the slasher factory's address.\"},\"activeBalanceOf(address)\":{\"notice\":\"Get an active balance for a particular account.\"},\"activeBalanceOfAt(address,uint48,bytes)\":{\"notice\":\"Get an active balance for a particular account at a given timestamp using hints.\"},\"activeShares()\":{\"notice\":\"Get a total number of active shares in the vault.\"},\"activeSharesAt(uint48,bytes)\":{\"notice\":\"Get a total number of active shares in the vault at a given timestamp using a hint.\"},\"activeSharesOf(address)\":{\"notice\":\"Get a number of active shares for a particular account.\"},\"activeSharesOfAt(address,uint48,bytes)\":{\"notice\":\"Get a total number of active shares for a particular account at a given timestamp using a hint.\"},\"activeStake()\":{\"notice\":\"Get a total amount of active stake in the vault.\"},\"activeStakeAt(uint48,bytes)\":{\"notice\":\"Get a total amount of active stake in the vault at a given timestamp using a hint.\"},\"burner()\":{\"notice\":\"Get a burner to issue debt to (e.g., 0xdEaD or some unwrapper contract).\"},\"claim(address,uint256)\":{\"notice\":\"Claim collateral from the vault.\"},\"claimBatch(address,uint256[])\":{\"notice\":\"Claim collateral from the vault for multiple epochs.\"},\"collateral()\":{\"notice\":\"Get a vault collateral.\"},\"currentEpoch()\":{\"notice\":\"Get a current vault epoch.\"},\"currentEpochStart()\":{\"notice\":\"Get a start of the current vault epoch.\"},\"delegator()\":{\"notice\":\"Get a delegator (it delegates the vault's stake to networks and operators).\"},\"deposit(address,uint256)\":{\"notice\":\"Deposit collateral into the vault.\"},\"depositLimit()\":{\"notice\":\"Get a deposit limit (maximum amount of the active stake that can be in the vault simultaneously).\"},\"depositWhitelist()\":{\"notice\":\"Get if the deposit whitelist is enabled.\"},\"epochAt(uint48)\":{\"notice\":\"Get an epoch at a given timestamp.\"},\"epochDuration()\":{\"notice\":\"Get a duration of the vault epoch.\"},\"epochDurationInit()\":{\"notice\":\"Get a time point of the epoch duration set.\"},\"initialize(uint64,address,bytes)\":{\"notice\":\"Initialize this entity contract by using a given data and setting a particular version and owner.\"},\"isDelegatorInitialized()\":{\"notice\":\"Get if the delegator is initialized.\"},\"isDepositLimit()\":{\"notice\":\"Get if the deposit limit is set.\"},\"isDepositorWhitelisted(address)\":{\"notice\":\"Get if a given account is whitelisted as a depositor.\"},\"isInitialized()\":{\"notice\":\"Check if the vault is fully initialized (a delegator and a slasher are set).\"},\"isSlasherInitialized()\":{\"notice\":\"Get if the slasher is initialized.\"},\"isWithdrawalsClaimed(uint256,address)\":{\"notice\":\"Get if the withdrawals are claimed for a particular account at a given epoch.\"},\"migrate(uint64,bytes)\":{\"notice\":\"Migrate this entity to a particular newer version using a given data.\"},\"nextEpochStart()\":{\"notice\":\"Get a start of the next vault epoch.\"},\"onSlash(uint256,uint48)\":{\"notice\":\"Slash callback for burning collateral.\"},\"previousEpochStart()\":{\"notice\":\"Get a start of the previous vault epoch.\"},\"redeem(address,uint256)\":{\"notice\":\"Redeem collateral from the vault (it will be claimable after the next epoch).\"},\"setDepositLimit(uint256)\":{\"notice\":\"Set a deposit limit.\"},\"setDepositWhitelist(bool)\":{\"notice\":\"Enable/disable deposit whitelist.\"},\"setDepositorWhitelistStatus(address,bool)\":{\"notice\":\"Set a depositor whitelist status.\"},\"setIsDepositLimit(bool)\":{\"notice\":\"Enable/disable deposit limit.\"},\"slashableBalanceOf(address)\":{\"notice\":\"Get a total amount of the collateral that can be slashed for a given account.\"},\"slasher()\":{\"notice\":\"Get a slasher (it provides networks a slashing mechanism).\"},\"staticDelegateCall(address,bytes)\":{\"notice\":\"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data).\"},\"totalStake()\":{\"notice\":\"Get a total amount of the collateral that can be slashed.\"},\"version()\":{\"notice\":\"Get the entity's version.\"},\"withdraw(address,uint256)\":{\"notice\":\"Withdraw collateral from the vault (it will be claimable after the next epoch).\"},\"withdrawalShares(uint256)\":{\"notice\":\"Get a total number of withdrawal shares at a given epoch.\"},\"withdrawalSharesOf(uint256,address)\":{\"notice\":\"Get a number of withdrawal shares for a particular account at a given epoch (zero if claimed).\"},\"withdrawals(uint256)\":{\"notice\":\"Get a total amount of the withdrawals at a given epoch.\"},\"withdrawalsOf(uint256,address)\":{\"notice\":\"Get withdrawals for a particular account at a given epoch (zero if claimed).\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/hints/VaultHints.sol\":\"VaultHints\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://942dad22fbdc1669f025540ba63aa3ccfad5f8458fc5d4525b31ebf272e7af45\",\"dweb:/ipfs/Qmdo4X2M82aM3AMoW2kf2jhYkSCyC4T1pHNd6obdsDFnAB\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45\",\"dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26\",\"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c\",\"dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0xbdc5e074d7dd6678f67e92b1a51a20226801a407b0e1af3da367c5d1ff4519ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a36cca6b22fff3db16fc789ff6c60eea71d4b156065d4d0c83a0bc5e91a77a8b\",\"dweb:/ipfs/QmYN3exd5AemxjBrN8XMB1p5LbbE16uC3sjbYjwi8AjcGR\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0xc7755af115020049e4140f224f9ee88d7e1799ffb0646f37bf0df24bf6213f58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f09bf94d5274334ec021f61a04659db303f31e60460e14b709c9bf187740111\",\"dweb:/ipfs/QmNvgomZYUwFAt4cZbPWAiTeSZQreGehY9BK5xyVJsUttb\"]},\"src/contracts/common/MigratableEntity.sol\":{\"keccak256\":\"0x2d736f4dacd5d7e7697503bc426c78b8250fe1694ca157965ec178da6807de58\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f1237acf96b4b9f9b69156e068eddd726a6e15bd8e87a18dc999cd4ba4da069c\",\"dweb:/ipfs/QmS6M8fiFFSeuJ4ZKKq1z8W7w4ybeHQSy5TLASGoc1LVic\"]},\"src/contracts/common/StaticDelegateCallable.sol\":{\"keccak256\":\"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764\",\"dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD\"]},\"src/contracts/hints/Hints.sol\":{\"keccak256\":\"0x8b565df1ae35993c097a9e642002782a8f451f6fd01809cad6bcd345bdf1b99c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://99a19adb01e350a92f534095b3078229df1f2f83077992d75d58d8684be45971\",\"dweb:/ipfs/QmbmwcuswVbzvwHQFTtrJG86oV98GnfxqYTb8cV8u1acox\"]},\"src/contracts/hints/VaultHints.sol\":{\"keccak256\":\"0xccb505b7159b769cc114d67b87c2de6b106557f667fc8f3780114baad5c3c442\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6d0c80a908fc16e96a8b5605a0bd53f9e89ad0ef0a738fbbae80ba4d3160749b\",\"dweb:/ipfs/QmXo5UtWoR8YmunqcbBU8rQMm1nvmvjNPoXcVrDhh4pEwR\"]},\"src/contracts/libraries/Checkpoints.sol\":{\"keccak256\":\"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609\",\"dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE\"]},\"src/contracts/libraries/ERC4626Math.sol\":{\"keccak256\":\"0x8441160513c1cbeb1c3b9ee077bcc7e7ce20006b52a77c8dd39ff0ef89699939\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://943f8cc3e26ddf649f465f40c909819f5c864717c4baa339e9e403b9374a4653\",\"dweb:/ipfs/QmXPxi1sUDsrGprZdUgCzoPEosaZMv9ZhygWQ1vAi1phAB\"]},\"src/contracts/vault/Vault.sol\":{\"keccak256\":\"0x2ceff6ed3298c4cad144c99fcc79b51cb9397d6ebef00285b915848b476f8c2e\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://11f2fb3581854f3ab6e82e8d4935d9eb510c903a13c3f022346c2956a58f5307\",\"dweb:/ipfs/QmdUnoXoyYoG9SGWyQZCFyLDRUUX3eXyXetkRvw6jxqqBz\"]},\"src/contracts/vault/VaultStorage.sol\":{\"keccak256\":\"0x57db25b127d77ea3472de53e3a4af3354399655b9268638b99ca5925fa364a56\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://aa763d9a6ec508ae3abfb8228b72b9fd9525279e5135d4962e79ff059feb1173\",\"dweb:/ipfs/QmcbDR6E9wyEpu6V2FkEC4hnWy47zXA9LSKJde6zSGd33Q\"]},\"src/interfaces/common/IEntity.sol\":{\"keccak256\":\"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b\",\"dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv\"]},\"src/interfaces/common/IMigratableEntity.sol\":{\"keccak256\":\"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c\",\"dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds\"]},\"src/interfaces/common/IRegistry.sol\":{\"keccak256\":\"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014\",\"dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK\"]},\"src/interfaces/common/IStaticDelegateCallable.sol\":{\"keccak256\":\"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516\",\"dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi\"]},\"src/interfaces/delegator/IBaseDelegator.sol\":{\"keccak256\":\"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2\",\"dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8\"]},\"src/interfaces/slasher/IBaseSlasher.sol\":{\"keccak256\":\"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf\",\"dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx\"]},\"src/interfaces/vault/IVault.sol\":{\"keccak256\":\"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9\",\"dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R\"]},\"src/interfaces/vault/IVaultStorage.sol\":{\"keccak256\":\"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e\",\"dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"AddressInsufficientBalance"},{"inputs":[],"type":"error","name":"AlreadyClaimed"},{"inputs":[],"type":"error","name":"AlreadyInitialized"},{"inputs":[],"type":"error","name":"AlreadySet"},{"inputs":[],"type":"error","name":"CheckpointUnorderedInsertion"},{"inputs":[],"type":"error","name":"DelegatorAlreadyInitialized"},{"inputs":[],"type":"error","name":"DepositLimitReached"},{"inputs":[],"type":"error","name":"ExternalCall"},{"inputs":[],"type":"error","name":"FailedInnerCall"},{"inputs":[],"type":"error","name":"InsufficientClaim"},{"inputs":[],"type":"error","name":"InsufficientDeposit"},{"inputs":[],"type":"error","name":"InsufficientRedemption"},{"inputs":[],"type":"error","name":"InsufficientWithdrawal"},{"inputs":[],"type":"error","name":"InvalidAccount"},{"inputs":[],"type":"error","name":"InvalidCaptureEpoch"},{"inputs":[],"type":"error","name":"InvalidClaimer"},{"inputs":[],"type":"error","name":"InvalidCollateral"},{"inputs":[],"type":"error","name":"InvalidDelegator"},{"inputs":[],"type":"error","name":"InvalidEpoch"},{"inputs":[],"type":"error","name":"InvalidEpochDuration"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"InvalidLengthEpochs"},{"inputs":[],"type":"error","name":"InvalidOnBehalfOf"},{"inputs":[],"type":"error","name":"InvalidRecipient"},{"inputs":[],"type":"error","name":"InvalidSlasher"},{"inputs":[],"type":"error","name":"InvalidTimestamp"},{"inputs":[],"type":"error","name":"MathOverflowedMulDiv"},{"inputs":[],"type":"error","name":"MissingRoles"},{"inputs":[],"type":"error","name":"NoPreviousEpoch"},{"inputs":[],"type":"error","name":"NotDelegator"},{"inputs":[],"type":"error","name":"NotFactory"},{"inputs":[],"type":"error","name":"NotInitialized"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"NotSlasher"},{"inputs":[],"type":"error","name":"NotWhitelistedDepositor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintDowncast"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"type":"error","name":"SafeERC20FailedOperation"},{"inputs":[],"type":"error","name":"SlasherAlreadyInitialized"},{"inputs":[],"type":"error","name":"TooMuchRedeem"},{"inputs":[],"type":"error","name":"TooMuchWithdraw"},{"inputs":[{"internalType":"address","name":"claimer","type":"address","indexed":true},{"internalType":"address","name":"recipient","type":"address","indexed":true},{"internalType":"uint256","name":"epoch","type":"uint256","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Claim","anonymous":false},{"inputs":[{"internalType":"address","name":"claimer","type":"address","indexed":true},{"internalType":"address","name":"recipient","type":"address","indexed":true},{"internalType":"uint256[]","name":"epochs","type":"uint256[]","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"ClaimBatch","anonymous":false},{"inputs":[{"internalType":"address","name":"depositor","type":"address","indexed":true},{"internalType":"address","name":"onBehalfOf","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false}],"type":"event","name":"Deposit","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint48","name":"captureTimestamp","type":"uint48","indexed":false},{"internalType":"uint256","name":"slashedAmount","type":"uint256","indexed":false}],"type":"event","name":"OnSlash","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true}],"type":"event","name":"SetDelegator","anonymous":false},{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"SetDepositLimit","anonymous":false},{"inputs":[{"internalType":"bool","name":"status","type":"bool","indexed":false}],"type":"event","name":"SetDepositWhitelist","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"bool","name":"status","type":"bool","indexed":false}],"type":"event","name":"SetDepositorWhitelistStatus","anonymous":false},{"inputs":[{"internalType":"bool","name":"status","type":"bool","indexed":false}],"type":"event","name":"SetIsDepositLimit","anonymous":false},{"inputs":[{"internalType":"address","name":"slasher","type":"address","indexed":true}],"type":"event","name":"SetSlasher","anonymous":false},{"inputs":[{"internalType":"address","name":"withdrawer","type":"address","indexed":true},{"internalType":"address","name":"claimer","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"burnedShares","type":"uint256","indexed":false},{"internalType":"uint256","name":"mintedShares","type":"uint256","indexed":false}],"type":"event","name":"Withdraw","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DELEGATOR_FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEPOSITOR_WHITELIST_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEPOSIT_LIMIT_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEPOSIT_WHITELIST_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_DEPOSIT_LIMIT_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"SLASHER_FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"activeBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hints","type":"bytes"}],"stateMutability":"view","type":"function","name":"activeBalanceOfAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"vault","type":"address"},{"internalType":"address","name":"account","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"activeBalanceOfHints","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"activeShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"activeSharesAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"vault","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"activeSharesHint","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"activeSharesHintInternal","outputs":[{"internalType":"bool","name":"exists","type":"bool"},{"internalType":"uint32","name":"hint","type":"uint32"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"activeSharesOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"activeSharesOfAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"vault","type":"address"},{"internalType":"address","name":"account","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"activeSharesOfHint","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"activeSharesOfHintInternal","outputs":[{"internalType":"bool","name":"exists","type":"bool"},{"internalType":"uint32","name":"hint","type":"uint32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"activeStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"activeStakeAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"vault","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"activeStakeHint","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"activeStakeHintInternal","outputs":[{"internalType":"bool","name":"exists","type":"bool"},{"internalType":"uint32","name":"hint","type":"uint32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"burner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"epoch","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"claim","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256[]","name":"epochs","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"claimBatch","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"collateral","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"currentEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"currentEpochStart","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"delegator","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"onBehalfOf","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"deposit","outputs":[{"internalType":"uint256","name":"depositedAmount","type":"uint256"},{"internalType":"uint256","name":"mintedShares","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"depositLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"depositWhitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"epochAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"epochDuration","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"epochDurationInit","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"initialVersion","type":"uint64"},{"internalType":"address","name":"owner_","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"isDelegatorInitialized","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"isDepositLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"isDepositorWhitelisted","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"isInitialized","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"isSlasherInitialized","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"isWithdrawalsClaimed","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"newVersion","type":"uint64"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"migrate"},{"inputs":[],"stateMutability":"view","type":"function","name":"nextEpochStart","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint48","name":"captureTimestamp","type":"uint48"}],"stateMutability":"nonpayable","type":"function","name":"onSlash","outputs":[{"internalType":"uint256","name":"slashedAmount","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"previousEpochStart","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[{"internalType":"address","name":"claimer","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"redeem","outputs":[{"internalType":"uint256","name":"withdrawnAssets","type":"uint256"},{"internalType":"uint256","name":"mintedShares","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"address","name":"delegator_","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setDelegator"},{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setDepositLimit"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setDepositWhitelist"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setDepositorWhitelistStatus"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setIsDepositLimit"},{"inputs":[{"internalType":"address","name":"slasher_","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setSlasher"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"slashableBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"slasher","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"staticDelegateCall"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"version","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"claimer","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"withdraw","outputs":[{"internalType":"uint256","name":"burnedShares","type":"uint256"},{"internalType":"uint256","name":"mintedShares","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"}],"stateMutability":"view","type":"function","name":"withdrawalShares","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"withdrawalSharesOf","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"}],"stateMutability":"view","type":"function","name":"withdrawals","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"withdrawalsOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{"activeBalanceOf(address)":{"params":{"account":"account to get the active balance for"},"returns":{"_0":"active balance for the account"}},"activeBalanceOfAt(address,uint48,bytes)":{"params":{"account":"account to get the active balance for","hints":"hints for checkpoints' indexes","timestamp":"time point to get the active balance for the account at"},"returns":{"_0":"active balance for the account at the timestamp"}},"activeShares()":{"returns":{"_0":"total number of active shares"}},"activeSharesAt(uint48,bytes)":{"params":{"hint":"hint for the checkpoint index","timestamp":"time point to get the total number of active shares at"},"returns":{"_0":"total number of active shares at the timestamp"}},"activeSharesOf(address)":{"params":{"account":"account to get the number of active shares for"},"returns":{"_0":"number of active shares for the account"}},"activeSharesOfAt(address,uint48,bytes)":{"params":{"account":"account to get the number of active shares for","hint":"hint for the checkpoint index","timestamp":"time point to get the number of active shares for the account at"},"returns":{"_0":"number of active shares for the account at the timestamp"}},"activeStake()":{"returns":{"_0":"total amount of active stake"}},"activeStakeAt(uint48,bytes)":{"params":{"hint":"hint for the checkpoint index","timestamp":"time point to get the total active stake at"},"returns":{"_0":"total amount of active stake at the timestamp"}},"claim(address,uint256)":{"params":{"epoch":"epoch to claim the collateral for","recipient":"account that receives the collateral"},"returns":{"amount":"amount of the collateral claimed"}},"claimBatch(address,uint256[])":{"params":{"epochs":"epochs to claim the collateral for","recipient":"account that receives the collateral"},"returns":{"amount":"amount of the collateral claimed"}},"currentEpoch()":{"returns":{"_0":"current epoch"}},"currentEpochStart()":{"returns":{"_0":"start of the current epoch"}},"deposit(address,uint256)":{"params":{"amount":"amount of the collateral to deposit","onBehalfOf":"account the deposit is made on behalf of"},"returns":{"depositedAmount":"real amount of the collateral deposited","mintedShares":"amount of the active shares minted"}},"epochAt(uint48)":{"details":"Reverts if the timestamp is less than the start of the epoch 0.","params":{"timestamp":"time point to get the epoch at"},"returns":{"_0":"epoch at the timestamp"}},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"initialize(uint64,address,bytes)":{"params":{"data":"some data to use","initialVersion":"initial version of the entity","owner":"initial owner of the entity"}},"isInitialized()":{"returns":{"_0":"if the vault is fully initialized"}},"migrate(uint64,bytes)":{"params":{"data":"some data to use","newVersion":"new version of the entity"}},"nextEpochStart()":{"returns":{"_0":"start of the next epoch"}},"onSlash(uint256,uint48)":{"details":"Only the slasher can call this function.","params":{"amount":"amount to slash","captureTimestamp":"time point when the stake was captured"},"returns":{"slashedAmount":"real amount of the collateral slashed"}},"owner()":{"details":"Returns the address of the current owner."},"previousEpochStart()":{"details":"Reverts if the current epoch is 0.","returns":{"_0":"start of the previous epoch"}},"redeem(address,uint256)":{"params":{"claimer":"account that needs to claim the withdrawal","shares":"amount of the active shares to redeem"},"returns":{"mintedShares":"amount of the epoch withdrawal shares minted","withdrawnAssets":"amount of the collateral withdrawn"}},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"setDepositLimit(uint256)":{"details":"Only a DEPOSIT_LIMIT_SET_ROLE holder can call this function.","params":{"limit":"deposit limit (maximum amount of the collateral that can be in the vault simultaneously)"}},"setDepositWhitelist(bool)":{"details":"Only a DEPOSIT_WHITELIST_SET_ROLE holder can call this function.","params":{"status":"if enabling deposit whitelist"}},"setDepositorWhitelistStatus(address,bool)":{"details":"Only a DEPOSITOR_WHITELIST_ROLE holder can call this function.","params":{"account":"account for which the whitelist status is set","status":"if whitelisting the account"}},"setIsDepositLimit(bool)":{"details":"Only a IS_DEPOSIT_LIMIT_SET_ROLE holder can call this function.","params":{"status":"if enabling deposit limit"}},"slashableBalanceOf(address)":{"params":{"account":"account to get the slashable collateral for"},"returns":{"_0":"total amount of the account's slashable collateral"}},"staticDelegateCall(address,bytes)":{"details":"It allows to use this contract's storage on-chain.","params":{"data":"data to make a delegatecall with","target":"address of the contract to make a delegatecall to"}},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"totalStake()":{"returns":{"_0":"total amount of the slashable collateral"}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"version()":{"details":"Starts from 1.","returns":{"_0":"version of the entity"}},"withdraw(address,uint256)":{"params":{"amount":"amount of the collateral to withdraw","claimer":"account that needs to claim the withdrawal"},"returns":{"burnedShares":"amount of the active shares burned","mintedShares":"amount of the epoch withdrawal shares minted"}},"withdrawalsOf(uint256,address)":{"params":{"account":"account to get the withdrawals for","epoch":"epoch to get the withdrawals for the account at"},"returns":{"_0":"withdrawals for the account at the epoch"}}},"version":1},"userdoc":{"kind":"user","methods":{"DELEGATOR_FACTORY()":{"notice":"Get the delegator factory's address."},"DEPOSITOR_WHITELIST_ROLE()":{"notice":"Get a depositor whitelist status setter's role."},"DEPOSIT_LIMIT_SET_ROLE()":{"notice":"Get a deposit limit setter's role."},"DEPOSIT_WHITELIST_SET_ROLE()":{"notice":"Get a deposit whitelist enabler/disabler's role."},"FACTORY()":{"notice":"Get the factory's address."},"IS_DEPOSIT_LIMIT_SET_ROLE()":{"notice":"Get a deposit limit enabler/disabler's role."},"SLASHER_FACTORY()":{"notice":"Get the slasher factory's address."},"activeBalanceOf(address)":{"notice":"Get an active balance for a particular account."},"activeBalanceOfAt(address,uint48,bytes)":{"notice":"Get an active balance for a particular account at a given timestamp using hints."},"activeShares()":{"notice":"Get a total number of active shares in the vault."},"activeSharesAt(uint48,bytes)":{"notice":"Get a total number of active shares in the vault at a given timestamp using a hint."},"activeSharesOf(address)":{"notice":"Get a number of active shares for a particular account."},"activeSharesOfAt(address,uint48,bytes)":{"notice":"Get a total number of active shares for a particular account at a given timestamp using a hint."},"activeStake()":{"notice":"Get a total amount of active stake in the vault."},"activeStakeAt(uint48,bytes)":{"notice":"Get a total amount of active stake in the vault at a given timestamp using a hint."},"burner()":{"notice":"Get a burner to issue debt to (e.g., 0xdEaD or some unwrapper contract)."},"claim(address,uint256)":{"notice":"Claim collateral from the vault."},"claimBatch(address,uint256[])":{"notice":"Claim collateral from the vault for multiple epochs."},"collateral()":{"notice":"Get a vault collateral."},"currentEpoch()":{"notice":"Get a current vault epoch."},"currentEpochStart()":{"notice":"Get a start of the current vault epoch."},"delegator()":{"notice":"Get a delegator (it delegates the vault's stake to networks and operators)."},"deposit(address,uint256)":{"notice":"Deposit collateral into the vault."},"depositLimit()":{"notice":"Get a deposit limit (maximum amount of the active stake that can be in the vault simultaneously)."},"depositWhitelist()":{"notice":"Get if the deposit whitelist is enabled."},"epochAt(uint48)":{"notice":"Get an epoch at a given timestamp."},"epochDuration()":{"notice":"Get a duration of the vault epoch."},"epochDurationInit()":{"notice":"Get a time point of the epoch duration set."},"initialize(uint64,address,bytes)":{"notice":"Initialize this entity contract by using a given data and setting a particular version and owner."},"isDelegatorInitialized()":{"notice":"Get if the delegator is initialized."},"isDepositLimit()":{"notice":"Get if the deposit limit is set."},"isDepositorWhitelisted(address)":{"notice":"Get if a given account is whitelisted as a depositor."},"isInitialized()":{"notice":"Check if the vault is fully initialized (a delegator and a slasher are set)."},"isSlasherInitialized()":{"notice":"Get if the slasher is initialized."},"isWithdrawalsClaimed(uint256,address)":{"notice":"Get if the withdrawals are claimed for a particular account at a given epoch."},"migrate(uint64,bytes)":{"notice":"Migrate this entity to a particular newer version using a given data."},"nextEpochStart()":{"notice":"Get a start of the next vault epoch."},"onSlash(uint256,uint48)":{"notice":"Slash callback for burning collateral."},"previousEpochStart()":{"notice":"Get a start of the previous vault epoch."},"redeem(address,uint256)":{"notice":"Redeem collateral from the vault (it will be claimable after the next epoch)."},"setDepositLimit(uint256)":{"notice":"Set a deposit limit."},"setDepositWhitelist(bool)":{"notice":"Enable/disable deposit whitelist."},"setDepositorWhitelistStatus(address,bool)":{"notice":"Set a depositor whitelist status."},"setIsDepositLimit(bool)":{"notice":"Enable/disable deposit limit."},"slashableBalanceOf(address)":{"notice":"Get a total amount of the collateral that can be slashed for a given account."},"slasher()":{"notice":"Get a slasher (it provides networks a slashing mechanism)."},"staticDelegateCall(address,bytes)":{"notice":"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data)."},"totalStake()":{"notice":"Get a total amount of the collateral that can be slashed."},"version()":{"notice":"Get the entity's version."},"withdraw(address,uint256)":{"notice":"Withdraw collateral from the vault (it will be claimable after the next epoch)."},"withdrawalShares(uint256)":{"notice":"Get a total number of withdrawal shares at a given epoch."},"withdrawalSharesOf(uint256,address)":{"notice":"Get a number of withdrawal shares for a particular account at a given epoch (zero if claimed)."},"withdrawals(uint256)":{"notice":"Get a total amount of the withdrawals at a given epoch."},"withdrawalsOf(uint256,address)":{"notice":"Get withdrawals for a particular account at a given epoch (zero if claimed)."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/hints/VaultHints.sol":"VaultHints"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol":{"keccak256":"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74","urls":["bzz-raw://942dad22fbdc1669f025540ba63aa3ccfad5f8458fc5d4525b31ebf272e7af45","dweb:/ipfs/Qmdo4X2M82aM3AMoW2kf2jhYkSCyC4T1pHNd6obdsDFnAB"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8","urls":["bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45","dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41","urls":["bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26","dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70","urls":["bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c","dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff","urls":["bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d","dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386","urls":["bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0","dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721","urls":["bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245","dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe","urls":["bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c","dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol":{"keccak256":"0xbdc5e074d7dd6678f67e92b1a51a20226801a407b0e1af3da367c5d1ff4519ad","urls":["bzz-raw://a36cca6b22fff3db16fc789ff6c60eea71d4b156065d4d0c83a0bc5e91a77a8b","dweb:/ipfs/QmYN3exd5AemxjBrN8XMB1p5LbbE16uC3sjbYjwi8AjcGR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0xc7755af115020049e4140f224f9ee88d7e1799ffb0646f37bf0df24bf6213f58","urls":["bzz-raw://7f09bf94d5274334ec021f61a04659db303f31e60460e14b709c9bf187740111","dweb:/ipfs/QmNvgomZYUwFAt4cZbPWAiTeSZQreGehY9BK5xyVJsUttb"],"license":"MIT"},"src/contracts/common/MigratableEntity.sol":{"keccak256":"0x2d736f4dacd5d7e7697503bc426c78b8250fe1694ca157965ec178da6807de58","urls":["bzz-raw://f1237acf96b4b9f9b69156e068eddd726a6e15bd8e87a18dc999cd4ba4da069c","dweb:/ipfs/QmS6M8fiFFSeuJ4ZKKq1z8W7w4ybeHQSy5TLASGoc1LVic"],"license":"BUSL-1.1"},"src/contracts/common/StaticDelegateCallable.sol":{"keccak256":"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90","urls":["bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764","dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD"],"license":"BUSL-1.1"},"src/contracts/hints/Hints.sol":{"keccak256":"0x8b565df1ae35993c097a9e642002782a8f451f6fd01809cad6bcd345bdf1b99c","urls":["bzz-raw://99a19adb01e350a92f534095b3078229df1f2f83077992d75d58d8684be45971","dweb:/ipfs/QmbmwcuswVbzvwHQFTtrJG86oV98GnfxqYTb8cV8u1acox"],"license":"BUSL-1.1"},"src/contracts/hints/VaultHints.sol":{"keccak256":"0xccb505b7159b769cc114d67b87c2de6b106557f667fc8f3780114baad5c3c442","urls":["bzz-raw://6d0c80a908fc16e96a8b5605a0bd53f9e89ad0ef0a738fbbae80ba4d3160749b","dweb:/ipfs/QmXo5UtWoR8YmunqcbBU8rQMm1nvmvjNPoXcVrDhh4pEwR"],"license":"BUSL-1.1"},"src/contracts/libraries/Checkpoints.sol":{"keccak256":"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c","urls":["bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609","dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE"],"license":"MIT"},"src/contracts/libraries/ERC4626Math.sol":{"keccak256":"0x8441160513c1cbeb1c3b9ee077bcc7e7ce20006b52a77c8dd39ff0ef89699939","urls":["bzz-raw://943f8cc3e26ddf649f465f40c909819f5c864717c4baa339e9e403b9374a4653","dweb:/ipfs/QmXPxi1sUDsrGprZdUgCzoPEosaZMv9ZhygWQ1vAi1phAB"],"license":"MIT"},"src/contracts/vault/Vault.sol":{"keccak256":"0x2ceff6ed3298c4cad144c99fcc79b51cb9397d6ebef00285b915848b476f8c2e","urls":["bzz-raw://11f2fb3581854f3ab6e82e8d4935d9eb510c903a13c3f022346c2956a58f5307","dweb:/ipfs/QmdUnoXoyYoG9SGWyQZCFyLDRUUX3eXyXetkRvw6jxqqBz"],"license":"BUSL-1.1"},"src/contracts/vault/VaultStorage.sol":{"keccak256":"0x57db25b127d77ea3472de53e3a4af3354399655b9268638b99ca5925fa364a56","urls":["bzz-raw://aa763d9a6ec508ae3abfb8228b72b9fd9525279e5135d4962e79ff059feb1173","dweb:/ipfs/QmcbDR6E9wyEpu6V2FkEC4hnWy47zXA9LSKJde6zSGd33Q"],"license":"BUSL-1.1"},"src/interfaces/common/IEntity.sol":{"keccak256":"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21","urls":["bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b","dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv"],"license":"MIT"},"src/interfaces/common/IMigratableEntity.sol":{"keccak256":"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4","urls":["bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c","dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds"],"license":"MIT"},"src/interfaces/common/IRegistry.sol":{"keccak256":"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb","urls":["bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014","dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK"],"license":"MIT"},"src/interfaces/common/IStaticDelegateCallable.sol":{"keccak256":"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5","urls":["bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516","dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi"],"license":"MIT"},"src/interfaces/delegator/IBaseDelegator.sol":{"keccak256":"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee","urls":["bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2","dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8"],"license":"MIT"},"src/interfaces/slasher/IBaseSlasher.sol":{"keccak256":"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404","urls":["bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf","dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx"],"license":"MIT"},"src/interfaces/vault/IVault.sol":{"keccak256":"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235","urls":["bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9","dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R"],"license":"MIT"},"src/interfaces/vault/IVaultStorage.sol":{"keccak256":"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22","urls":["bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e","dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6"],"license":"MIT"}},"version":1},"id":85} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"DELEGATOR_FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"DEPOSITOR_WHITELIST_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"DEPOSIT_LIMIT_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"DEPOSIT_WHITELIST_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"IS_DEPOSIT_LIMIT_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"SLASHER_FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"activeBalanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"activeBalanceOfAt","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hints","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"activeBalanceOfHints","inputs":[{"name":"vault","type":"address","internalType":"address"},{"name":"account","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"activeShares","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"activeSharesAt","inputs":[{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"activeSharesHint","inputs":[{"name":"vault","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"activeSharesHintInternal","inputs":[{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"exists","type":"bool","internalType":"bool"},{"name":"hint","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"activeSharesOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"activeSharesOfAt","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"activeSharesOfHint","inputs":[{"name":"vault","type":"address","internalType":"address"},{"name":"account","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"activeSharesOfHintInternal","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"exists","type":"bool","internalType":"bool"},{"name":"hint","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"activeStake","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"activeStakeAt","inputs":[{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"activeStakeHint","inputs":[{"name":"vault","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"activeStakeHintInternal","inputs":[{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"exists","type":"bool","internalType":"bool"},{"name":"hint","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"burner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"claim","inputs":[{"name":"recipient","type":"address","internalType":"address"},{"name":"epoch","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"claimBatch","inputs":[{"name":"recipient","type":"address","internalType":"address"},{"name":"epochs","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"collateral","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"currentEpoch","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"currentEpochStart","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"delegator","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"deposit","inputs":[{"name":"onBehalfOf","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"depositedAmount","type":"uint256","internalType":"uint256"},{"name":"mintedShares","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"depositLimit","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"depositWhitelist","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"epochAt","inputs":[{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"epochDuration","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"epochDurationInit","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"initialVersion","type":"uint64","internalType":"uint64"},{"name":"owner_","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isDelegatorInitialized","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isDepositLimit","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isDepositorWhitelisted","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isInitialized","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isSlasherInitialized","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isWithdrawalsClaimed","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"migrate","inputs":[{"name":"newVersion","type":"uint64","internalType":"uint64"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"nextEpochStart","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"onSlash","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"slashedAmount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"previousEpochStart","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"redeem","inputs":[{"name":"claimer","type":"address","internalType":"address"},{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"withdrawnAssets","type":"uint256","internalType":"uint256"},{"name":"mintedShares","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDelegator","inputs":[{"name":"delegator_","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDepositLimit","inputs":[{"name":"limit","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDepositWhitelist","inputs":[{"name":"status","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDepositorWhitelistStatus","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"status","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setIsDepositLimit","inputs":[{"name":"status","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSlasher","inputs":[{"name":"slasher_","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"slashableBalanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"slasher","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"staticDelegateCall","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"totalStake","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"version","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"withdraw","inputs":[{"name":"claimer","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"burnedShares","type":"uint256","internalType":"uint256"},{"name":"mintedShares","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawalShares","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"withdrawalSharesOf","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"withdrawals","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"withdrawalsOf","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"Claim","inputs":[{"name":"claimer","type":"address","indexed":true,"internalType":"address"},{"name":"recipient","type":"address","indexed":true,"internalType":"address"},{"name":"epoch","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ClaimBatch","inputs":[{"name":"claimer","type":"address","indexed":true,"internalType":"address"},{"name":"recipient","type":"address","indexed":true,"internalType":"address"},{"name":"epochs","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Deposit","inputs":[{"name":"depositor","type":"address","indexed":true,"internalType":"address"},{"name":"onBehalfOf","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OnSlash","inputs":[{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","indexed":false,"internalType":"uint48"},{"name":"slashedAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SetDelegator","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SetDepositLimit","inputs":[{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SetDepositWhitelist","inputs":[{"name":"status","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"SetDepositorWhitelistStatus","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"status","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"SetIsDepositLimit","inputs":[{"name":"status","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"SetSlasher","inputs":[{"name":"slasher","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Withdraw","inputs":[{"name":"withdrawer","type":"address","indexed":true,"internalType":"address"},{"name":"claimer","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"burnedShares","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"mintedShares","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"AlreadyClaimed","inputs":[]},{"type":"error","name":"AlreadyInitialized","inputs":[]},{"type":"error","name":"AlreadySet","inputs":[]},{"type":"error","name":"CheckpointUnorderedInsertion","inputs":[]},{"type":"error","name":"DelegatorAlreadyInitialized","inputs":[]},{"type":"error","name":"DepositLimitReached","inputs":[]},{"type":"error","name":"ExternalCall","inputs":[]},{"type":"error","name":"InsufficientClaim","inputs":[]},{"type":"error","name":"InsufficientDeposit","inputs":[]},{"type":"error","name":"InsufficientRedemption","inputs":[]},{"type":"error","name":"InsufficientWithdrawal","inputs":[]},{"type":"error","name":"InvalidAccount","inputs":[]},{"type":"error","name":"InvalidCaptureEpoch","inputs":[]},{"type":"error","name":"InvalidClaimer","inputs":[]},{"type":"error","name":"InvalidCollateral","inputs":[]},{"type":"error","name":"InvalidDelegator","inputs":[]},{"type":"error","name":"InvalidEpoch","inputs":[]},{"type":"error","name":"InvalidEpochDuration","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"InvalidLengthEpochs","inputs":[]},{"type":"error","name":"InvalidOnBehalfOf","inputs":[]},{"type":"error","name":"InvalidRecipient","inputs":[]},{"type":"error","name":"InvalidSlasher","inputs":[]},{"type":"error","name":"InvalidTimestamp","inputs":[]},{"type":"error","name":"MissingRoles","inputs":[]},{"type":"error","name":"NoPreviousEpoch","inputs":[]},{"type":"error","name":"NotDelegator","inputs":[]},{"type":"error","name":"NotFactory","inputs":[]},{"type":"error","name":"NotInitialized","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"NotSlasher","inputs":[]},{"type":"error","name":"NotWhitelistedDepositor","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]},{"type":"error","name":"SlasherAlreadyInitialized","inputs":[]},{"type":"error","name":"TooMuchRedeem","inputs":[]},{"type":"error","name":"TooMuchWithdraw","inputs":[]}],"bytecode":{"object":"0x610100806040523461011057306080525f60a0525f60c0527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff8260401c1661010157506001600160401b036002600160401b0319828216016100bc575b5f60e0526040516151f7908161011582396080518181816110580152818161133001526123a4015260a05181818161137c01526118c9015260c051818181611a320152611ee2015260e0518181816107e10152610a2d0152f35b6001600160401b031990911681179091556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f8080610062565b63f92ee8a960e01b8152600490fd5b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a7146104a45780631415519b1461049f5780631b66c9e11461049a5780631e9a695014610495578063248a9ca31461049057806327810b6e1461048b578063281f5752146104865780632abe3048146104815780632d73c69c1461047c5780632dd31000146104775780632f2ff15d1461047257806336568abe1461046d578063392e53cd146104685780634105a7dd14610463578063463616711461045e57806347e7ef241461045957806348d3b775146104545780634ff0876a1461044f57806350861adc1461044a57806350f22068146104455780635346e34f1461044057806354fd4d501461043b57806355a2c6721461043657806357ec83cc1461043157806359f769a91461042c5780635cc070761461042757806361a8c8c41461042257806364b03fdc1461041d57806367567add146104185780636da3e06d146104135780636ec1e3f81461040e578063715018a6146104095780637278e31c1461040457806373790ab3146103ff57806376671808146103fa578063794b15b7146103f55780637953b33b146103f05780637c04c80a146103eb578063810da75d146103e65780638326056f146103e157806383cd9cc3146103dc57806387df0788146103d75780638b0e9f3f146103d25780638da5cb5b146103cd57806391d14854146103c85780639d66201b146103c35780639f86fd85146103be578063a1b12202146103b9578063a217fddf146103b4578063a21a1df9146103af578063a2861466146103aa578063a3b54172146103a5578063a5d03223146103a0578063aabc24961461039b578063aad3ec9614610396578063afba70ad14610391578063b13442711461038c578063bd49c35f14610387578063bdc8144b14610382578063bfefcd7b1461037d578063c31e8dd714610378578063ce9b793014610373578063d547741f1461036e578063d8dfeb4514610369578063db38871514610364578063de4997161461035f578063eb5562381461035a578063ecf7085814610355578063efb559d614610350578063f2fde38b1461034b578063f3fef3a314610346578063f5e7ee0f146103415763f9e1bf6c1461033c575f80fd5b612649565b61261f565b612579565b61254c565b6123fd565b6123e0565b61238c565b612372565b612306565b6122db565b61228f565b612267565b6121fd565b6121e3565b612105565b6120eb565b6120c3565b612099565b611fd8565b611e21565b611ddb565b611d8e565b611c9b565b611c61565b611c47565b611c23565b611b8f565b611b55565b611af7565b611ac3565b611a61565b611a1d565b611864565b61184a565b611831565b6117cb565b6117a4565b611764565b61174a565b611709565b611437565b6113d0565b6113ab565b611367565b611311565b6112e3565b611247565b61121d565b6111f6565b6110be565b611039565b611007565b610f72565b610f59565b610efc565b610edc565b610ebb565b610bfd565b610bd5565b610b3a565b610af5565b610aaa565b610a5c565b610a18565b6109a4565b61079b565b6106cd565b6106a5565b61066c565b610583565b610538565b6104fe565b346104fa5760203660031901126104fa5760043563ffffffff60e01b81168091036104fa57602090637965db0b60e01b81149081156104e9575b506040519015158152f35b6301ffc9a760e01b1490505f6104de565b5f80fd5b346104fa575f3660031901126104fa5760206040517fc6aaadd7371d5e8f9ed6849dd66a66573a3ba37167d03f4352c9ba5693678fac8152f35b346104fa575f3660031901126104fa5760206040517f9c56d972d63cbb4195b3c1484691dfc220fa96a4c47e7b6613bd82a022029e068152f35b6001600160a01b038116036104fa57565b346104fa5760403660031901126104fa576004356105a081610572565b602435906105ac61307d565b6001600160a01b0381161561065b57335f908152600e602052604090206105d790614489565b614489565b8211610649576105f76105e861439c565b6105f0614415565b90846144cc565b9182156106345782610608926130ac565b9061061f60015f8051602061518283398151915255565b604080519182526020820192909252f35b0390f35b60405160016245ddc760e11b03198152600490fd5b604051632418411f60e11b8152600490fd5b6040516208978560e71b8152600490fd5b346104fa5760203660031901126104fa576004355f525f805160206151628339815191526020526020600160405f200154604051908152f35b346104fa575f3660031901126104fa576001546040516001600160a01b039091168152602090f35b346104fa575f3660031901126104fa576106e5612c63565b80156107465760015465ffffffffffff8160a01c16915f198101908111610741576107139160d01c90612692565b81018091116107415761072861063091613226565b60405165ffffffffffff90911681529081906020820190565b612663565b604051639fa56a5b60e01b8152600490fd5b600435906001600160401b03821682036104fa57565b9181601f840112156104fa578235916001600160401b0383116104fa57602083818601950101116104fa57565b346104fa5760403660031901126104fa576107b4610758565b6001600160401b036024358181116104fa576107d490369060040161076e565b9290916107df61307d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610859575f805160206151a2833981519152549060ff8260401c16928315610849575b50505015613258575b60405163f92ee8a960e01b8152600490fd5b81169116101590505f808061082e565b604051631966391b60e11b8152600490fd5b65ffffffffffff8116036104fa57565b634e487b7160e01b5f52604160045260245ffd5b606081019081106001600160401b038211176108aa57604052565b61087b565b604081019081106001600160401b038211176108aa57604052565b608081019081106001600160401b038211176108aa57604052565b90601f801991011681019081106001600160401b038211176108aa57604052565b6040519061016082018281106001600160401b038211176108aa57604052565b60405190610933826108af565b565b6001600160401b0381116108aa57601f01601f191660200190565b92919261095c82610935565b9161096a60405193846108e5565b8294818452818301116104fa578281602093845f960137010152565b9080601f830112156104fa578160206109a193359101610950565b90565b346104fa5760603660031901126104fa576004356109c181610572565b602435906109ce8261086b565b604435906001600160401b0382116104fa576020926109f4610a10933690600401610986565b6001600160a01b039092165f908152600e855260409020613416565b604051908152f35b346104fa575f3660031901126104fa576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346104fa5760403660031901126104fa57610aa8602435600435610a7f82610572565b805f525f80516020615162833981519152602052610aa3600160405f2001546135ed565b6138ed565b005b346104fa5760403660031901126104fa57602435610ac781610572565b336001600160a01b03821603610ae357610aa890600435613923565b60405163334bd91960e11b8152600490fd5b346104fa575f3660031901126104fa5760ff60025460a01c1680610b21575b6020906040519015158152f35b5060035460a01c60ff16610b14565b801515036104fa57565b346104fa5760203660031901126104fa57600435610b5781610b30565b610b5f61307d565b610b676134e2565b5f54901515908160ff8216151514610bc35760ff191660ff8216175f556040519081527f3e12b7b36c75ac9609a3f58609b331210428e1a85909132638955ba0301eec3390602090a160015f8051602061518283398151915255005b60405163a741a04560e01b8152600490fd5b346104fa575f3660031901126104fa57602065ffffffffffff60015460a01c16604051908152f35b346104fa576040806003193601126104fa576004803591610c1d83610572565b610c2561307d565b6001600160a01b0391838316908115610ead575f5460ff811680610e94575b610e855783516370a0823160e01b808252308483019081529096602093909160109190911c82169084908490819083010381845afa928315610e5d575f93610e62575b50610c999060243590309033906139b5565b5f5486519788523085890190815290979184918391908290819060200103918b60101c165afa908115610e5d57610cd8935f92610e30575b5050612685565b938415610e215760081c60ff1680610e0c575b610dfe57509061063091610d9c610d0061439c565b95610d49610d0c614415565b610d34610d1a8a838b6144cc565b99610d2e8a610d2842613226565b926126b3565b90613b09565b5050610d4389610d2842613226565b90613be9565b50506001600160a01b0381165f908152600e6020526040902090610d9688610d916105d2610d7642613226565b6001600160a01b039095165f908152600e6020526040902090565b6126b3565b91613cc5565b505081518481526020810186905233907fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d790604090a3610de860015f8051602061518283398151915255565b5191825260208201929092529081906040820190565b8251632484557960e01b8152fd5b50610e1984610d9161439c565b815410610ceb565b50825163070f6eed60e11b8152fd5b610e4f9250803d10610e56575b610e4781836108e5565b8101906126e1565b5f80610cd1565b503d610e3d565b6126f0565b610c99919350610e7e90853d8711610e5657610e4781836108e5565b9290610c87565b5082516304f63b8560e01b8152fd5b50335f9081526005602052604090205460ff1615610c44565b8251630d534ce360e11b8152fd5b346104fa575f3660031901126104fa57602060ff5f54166040519015158152f35b346104fa575f3660031901126104fa57602060015460d01c604051908152f35b346104fa575f3660031901126104fa57602060ff60025460a01c166040519015158152f35b9060406003198301126104fa57600435610f3a8161086b565b91602435906001600160401b0382116104fa576109a191600401610986565b346104fa576020610a10610f6c36610f21565b9061328c565b346104fa5760203660031901126104fa57600435610f8f81610b30565b610f9761307d565b610f9f61353f565b5f54901515908160ff8260081c16151514610bc35761ff001916600882901b61ff0016175f556040519081527ffa7a25a0b611d4ba3c0ea990e90dc23d484a5dd7a1be4733fef2946ba74530c690602090a1610aa860015f8051602061518283398151915255565b346104fa575f3660031901126104fa5760206001600160401b035f805160206151a28339815191525416604051908152f35b346104fa5760203660031901126104fa576004356110568161086b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036110ac5761108f90613da7565b60408051941515855263ffffffff91909116602085015292915050f35b604051637ca475e560e11b8152600490fd5b346104fa5760603660031901126104fa576110d7610758565b6024356110e381610572565b6001600160401b03916044358381116104fa5761110490369060040161076e565b5f805160206151a28339815191529491855494838616806111e55760ff8760401c169081156111d8575b50610837577fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2966111d39661119b958716906001600160401b0319161790556111965f805160206151a2833981519152600160401b68ff000000000000000019825416179055565b6126fb565b5f805160206151a2833981519152805468ff0000000000000000191690556040516001600160401b0390911681529081906020820190565b0390a1005b905084861611155f61112e565b60405162dc149f60e41b8152600490fd5b346104fa5760203660031901126104fa576020610a1060043561121881610572565b612b1b565b346104fa5760203660031901126104fa576004355f526006602052602060405f2054604051908152f35b346104fa575f3660031901126104fa5760015465ffffffffffff61127d818360a01c1692611273612c63565b9060d01c90612692565b820180921161074157611291602092613226565b60405191168152f35b60409060031901126104fa576004356112b281610572565b906024356109a18161086b565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b346104fa576106306112fd6112f73661129a565b90612ba9565b6040519182916020835260208301906112bf565b346104fa5760203660031901126104fa5760043561132e8161086b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036110ac5761108f90613eac565b346104fa575f3660031901126104fa576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346104fa575f3660031901126104fa57602060ff60035460a01c166040519015158152f35b346104fa575f3660031901126104fa576113e86141f3565b5f8051602061510283398151915280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346104fa5760403660031901126104fa576004356024356114578161086b565b61145f61307d565b60035461147c906001600160a01b03165b6001600160a01b031690565b33036116f75761148a612c63565b9061149481612c97565b90821515806116e6575b80156116dd575b6116cb57610630937ff9d090c096f71cd1659861a9ce5b6f384bceb4e2fa4e4a19edf6489a9b8d56c7926114d761439c565b946114f26114e4826126a5565b5f52600660205260405f2090565b54908281036115e5575061150681876126b3565b83811881851002811896878061159e575b50505050505b8361156a575b6040805191825265ffffffffffff929092166020820152908101839052606090a161155a60015f8051602061518283398151915255565b6040519081529081906020820190565b5f546115999085906115879060101c6001600160a01b0316611470565b6001546001600160a01b0316906142c2565b611523565b6115da93610cd183610d2e6115c46115bd6114e4986115d49888614235565b8096612685565b946115ce42613226565b92612685565b926126a5565b555f80808087611517565b91506115f9825f52600660205260405f2090565b549061160981610d91848a6126b3565b908482188286100282189788611624575b505050505061151d565b611699938361164c936116598c61165461164261168a998884614235565b9788958584614235565b948592612685565b612685565b938484106116a4575b610cd190610d2e6116789596976115ce42613226565b6116846114e4876126a5565b55612685565b915f52600660205260405f2090565b555f8080808061161a565b916116c0610cd1916116ba866116789798612685565b906126b3565b859450929050611662565b604051635e18d2a560e01b8152600490fd5b508282116114a5565b506116f083612677565b821061149e565b60405163dabc4ad960e01b8152600490fd5b346104fa575f3660031901126104fa5760015465ffffffffffff808260a01c1691611732612c63565b600181018091116107415761127d9160d01c90612692565b346104fa575f3660031901126104fa576020610a10612c63565b346104fa5760203660031901126104fa5760043561178181610572565b60018060a01b03165f526005602052602060ff60405f2054166040519015158152f35b346104fa5760203660031901126104fa576020610a106004356117c68161086b565b612c97565b346104fa5760403660031901126104fa576004356117e881610572565b6024356001600160401b038082116104fa57366023830112156104fa5781600401359081116104fa573660248260051b840101116104fa5761063092602461155a930190612cd2565b346104fa576020610a1061184436610f21565b90613361565b346104fa576106306112fd61185e3661129a565b90612e00565b346104fa576020806003193601126104fa57600480359061188482610572565b61188c61307d565b60025460a01c60ff16611a0e576040516302910f8b60e31b81526001600160a01b03838116838301908152909491908290829081906020010381887f0000000000000000000000000000000000000000000000000000000000000000165afa908115610e5d575f916119e1575b50156119d15760405163fbfa77cf60e01b8152838516949082818581895afa928315610e5d575f936119a2575b5050309116036119935750600280546001600160a01b03929092166001600160a81b031990921691909117600160a01b1790557fdb2160616f776a37b24808115554e79439bf26cccbbd4438190cc6d28e80ecd15f80a2610aa860015f8051602061518283398151915255565b60405163b9f0f17160e01b8152fd5b6119c2929350803d106119ca575b6119ba81836108e5565b810190612e57565b905f80611926565b503d6119b0565b506040516324e5af8d60e21b8152fd5b611a019150823d8411611a07575b6119f981836108e5565b810190612e37565b5f6118f9565b503d6119ef565b604051631380833b60e01b8152fd5b346104fa575f3660031901126104fa576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346104fa575f3660031901126104fa57611a79612c63565b611a8161439c565b90805f52600660205260405f205482018092116107415760018101809111610741575f52600660205260405f2054810180911161074157602090604051908152f35b346104fa575f3660031901126104fa575f80516020615102833981519152546040516001600160a01b039091168152602090f35b346104fa5760403660031901126104fa57602060ff611b49602435611b1b81610572565b6004355f525f80516020615162833981519152845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b346104fa5760203660031901126104fa57600435611b7281610572565b60018060a01b03165f52600e6020526020610a1060405f20614489565b346104fa5760403660031901126104fa57600435611bac81610572565b6024356001600160401b0381116104fa575f91611bce8392369060040161076e565b90816040519283928337810184815203915af4611c1b611bec612e6c565b91611c0d6040519384921515602084015260408084015260608301906112bf565b03601f1981018352826108e5565b805190602001fd5b346104fa575f3660031901126104fa57602060ff5f5460081c166040519015158152f35b346104fa575f3660031901126104fa5760206040515f8152f35b346104fa575f3660031901126104fa5760206040517f4a634bc14d77baf979756509ef4298c6f6318af357828612545267ee2eb792338152f35b346104fa5760403660031901126104fa57600435611cb881610572565b602435611cc481610b30565b611ccc61307d565b611cd4613596565b6001600160a01b038216918215611d7c575f8381526005602052604090205460ff16151582151514610bc3576001600160a01b03165f9081526005602052604090207ff991b1ecfb5115cbb36a2b2e2240c058406d2acc2fcc6e9e2dc99d845ff70a6291611d6391611d51908260ff801983541691151516179055565b60405190151581529081906020820190565b0390a2610aa860015f8051602061518283398151915255565b604051630da30f6560e31b8152600490fd5b346104fa5760403660031901126104fa576020611dd2602435611db081610572565b6004355f526008835260405f209060018060a01b03165f5260205260405f2090565b54604051908152f35b346104fa5760403660031901126104fa57602060ff611b49602435611dff81610572565b6004355f526009845260405f209060018060a01b03165f5260205260405f2090565b346104fa576020806003193601126104fa576004803590611e4182610572565b611e4961307d565b60035460a01c60ff16611fc9576001600160a01b03828116939084611eb7575b6003805460ff60a01b1916600160a01b179055847fe7e4c932e03abddfe20f83af42c33627e816115c7ec2b168441f65dc14bfc3ba5f80a2610aa860015f8051602061518283398151915255565b6040516302910f8b60e31b81526001600160a01b0385168482019081528390829081906020010381857f0000000000000000000000000000000000000000000000000000000000000000165afa908115610e5d575f91611fac575b5015611f9b5760405163fbfa77cf60e01b815282818581895afa928315610e5d575f93611f7c575b505030911603611f6d5750600380546001600160a01b0319166001600160a01b039092169190911790555f808080611e69565b604051633f3e089160e21b8152fd5b611f93929350803d106119ca576119ba81836108e5565b905f80611f3a565b60405163dabc4ad960e01b81528390fd5b611fc39150833d8511611a07576119f981836108e5565b5f611f12565b60405163703fe2e560e01b8152fd5b346104fa5760403660031901126104fa57600435611ff581610572565b6024359061200161307d565b6001600160a01b0391818316908115612087576120326106309461202483614300565b9485915f5460101c166142c2565b604080519182526020820184905233917f865ca08d59f5cb456e85cd2f7ef63664ea4f73327414e9d8152c4158b0e946459190a360015f80516020615182833981519152556040519081529081906020820190565b604051634e46966960e11b8152600490fd5b346104fa5760203660031901126104fa576004355f526007602052602060405f2054604051908152f35b346104fa575f3660031901126104fa576003546040516001600160a01b039091168152602090f35b346104fa575f3660031901126104fa576020610a1061439c565b346104fa5760203660031901126104fa5760043561212161307d565b335f9081527f2d4ccbfe9f7672a6f2537c1e5bce6adacb73706879154bbab6ce096012d6721660205260409020547f4a634bc14d77baf979756509ef4298c6f6318af357828612545267ee2eb792339060ff16156121c557508060045414610bc3576020817f854df3eb95564502c8bc871ebdd15310ee26270f955f6c6bd8cea68e75045bc092600455604051908152a160015f8051602061518283398151915255005b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b346104fa575f3660031901126104fa576020610a10614415565b346104fa5760203660031901126104fa5760043561221a81610572565b612222612c63565b61222b82612b1b565b916122368183612f56565b830180931161074157600182018092116107415761225391612f56565b810180911161074157602090604051908152f35b346104fa575f3660031901126104fa576002546040516001600160a01b039091168152602090f35b346104fa5760403660031901126104fa57610aa86024356004356122b282610572565b805f525f805160206151628339815191526020526122d6600160405f2001546135ed565b613923565b346104fa575f3660031901126104fa575f5460405160109190911c6001600160a01b03168152602090f35b346104fa575f3660031901126104fa5760206040517fbae4ee3de6c709ff9a002e774c5b78cb381560b219213c88ae0f1e207c03c0238152f35b60609060031901126104fa5760043561235881610572565b9060243561236581610572565b906044356109a18161086b565b346104fa576106306112fd61238636612340565b91612e9b565b346104fa5761239a3661129a565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811633036110ac5761108f92165f52600e60205260405f20613f72565b346104fa575f3660031901126104fa576020600454604051908152f35b346104fa5760603660031901126104fa5760043561241a81610572565b602435906124278261086b565b6001600160401b03916044358381116104fa5761244890369060040161076e565b909260409384516124588161088f565b606081526060602082015260608682015292806124b7575b610630866124a887876124a261248989848451916126c0565b9285612499602085015183613361565b9301519061328c565b916144cc565b90519081529081906020820190565b81019392506020818503126104fa578035908682116104fa5701926060848203126104fa578451956124e88761088f565b84358181116104fa57826124fd918701610986565b875260208501358181116104fa5782612517918701610986565b6020880152858501359081116104fa57610630966125406124a293612489936124a89801610986565b87820152939450612470565b346104fa5760203660031901126104fa57610aa860043561256c81610572565b6125746141f3565b612ee5565b346104fa5760403660031901126104fa5760043561259681610572565b6024356125a161307d565b6001600160a01b0382161561065b57801561260d576125d06125c1614415565b6125c961439c565b90836148d3565b335f908152600e602052604090209092906125ea90614489565b83116125fb576106089183916130ac565b6040516321727a3760e11b8152600490fd5b604051636c6c627d60e11b8152600490fd5b346104fa5760403660031901126104fa576020610a1060243561264181610572565b600435612f56565b346104fa576106306112fd61265d36612340565b91612fb4565b634e487b7160e01b5f52601160045260245ffd5b5f1981019190821161074157565b9190820391821161074157565b8181029291811591840414171561074157565b906001820180921161074157565b9190820180921161074157565b6001600160a01b03165f908152600e602052604090206109a1929190613416565b908160209103126104fa575190565b6040513d5f823e3d90fd5b9161274d9161273e9161270c614c2b565b612714614c2b565b60015f80516020615182833981519152556001600160a01b0394808616612b01575b503691610950565b6020808251830101910161405c565b805182166001600160a01b031615612aef57604080820165ffffffffffff61277b825165ffffffffffff1690565b1615612ade5760c08301805190929061279c906001600160a01b0316611470565b1561298f575b50916128db6101409261287a612855612939966127f06127c8875160018060a01b031690565b5f805462010000600160b01b03191660109290921b62010000600160b01b0316919091179055565b6020860151600180546001600160a01b0319166001600160a01b0390921691909117905561284961282042613226565b6001805465ffffffffffff60a01b191660a09290921b65ffffffffffff60a01b16919091179055565b5165ffffffffffff1690565b600180546001600160d01b031660d09290921b6001600160d01b031916919091179055565b61289a61288a6060850151151590565b60ff80195f541691151516175f55565b6128c16128aa6080850151151590565b61ff005f5491151560081b169061ff001916175f55565b6128ce60a0840151600455565b516001600160a01b031690565b84811661297f575b5060e08101516001600160a01b031684811661296f575b506101008101516001600160a01b031684811661295f575b506101208101516001600160a01b031684811661294f575b5001516001600160a01b031690565b9081166129435750565b61294c9061387e565b50565b6129589061380f565b505f61292a565b612968906137a0565b505f612912565b612978906136ca565b505f6128fa565b61298890613619565b505f6128e3565b60e08401516129a6906001600160a01b0316611470565b15612a7b575b6101208401516129c4906001600160a01b0316611470565b6127a257608084015115612a315760a08401511580612a12575b612a025750916128db6101409261287a612855612939965b949650505092506127a2565b5163183c854560e21b8152600490fd5b50610140840151612a2b906001600160a01b0316611470565b156129de565b60a084015115801590612a5b575b612a025750916128db6101409261287a612855612939966129f6565b50610140840151612a74906001600160a01b0316611470565b1515612a3f565b606084015115612ab157610100840151612a9d906001600160a01b0316611470565b6129ac575163183c854560e21b8152600490fd5b610100840151612ac9906001600160a01b0316611470565b156129ac575163183c854560e21b8152600490fd5b81516368f5f8f160e11b8152600490fd5b6040516368f7a67560e11b8152600490fd5b612b1590612b0d614c2b565b612574614c2b565b5f612736565b6001600160a01b03165f908152600e60205260409020612b3a90614489565b612b4261439c565b612b4a614415565b90600181018091116107415760018201809211610741576109a192614235565b519061093382610b30565b519063ffffffff821682036104fa57565b91908260409103126104fa576109a160208351612ba281610b30565b9301612b75565b9190612be5612bf49160609465ffffffffffff604051926367567add60e01b602085015216602483015260248252612be08261088f565b614125565b60208082518301019101612b86565b90612bfc5750565b90915063ffffffff60405191166020820152602081526109a1816108af565b65ffffffffffff918216908216039190821161074157565b634e487b7160e01b5f52601260045260245ffd5b9065ffffffffffff809116918215612c5e57160490565b612c33565b612c6c42613226565b612c93600154612c8965ffffffffffff93848360a01c1690612c1b565b9060d01c90612c47565b1690565b6001549065ffffffffffff91828160a01c16918284821610612cc057612c9392612c8991612c1b565b60405163b7d0949760e01b8152600490fd5b90612cdb61307d565b5f926001600160a01b038316928315612087578115612d93575f5b828110612d7157505f547f326b6aff1cd2fb1c8234de4f9dcfb9047c5c36eb9ef2eb34af5121e969a75d279286929091612d46918491612d419060101c6001600160a01b0316611470565b6142c2565b612d57604051928392339684612dce565b0390a39061093360015f8051602061518283398151915255565b94612d8c6001916116ba612d86898789612db9565b35614300565b9501612cf6565b60405163edf3b93360e01b8152600490fd5b634e487b7160e01b5f52603260045260245ffd5b9190811015612dc95760051b0190565b612da5565b604080825281018390529392916001600160fb1b0381116104fa5760209160609160051b809183880137850101930152565b9190612be5612bf49160609465ffffffffffff60405192632ad1633960e11b602085015216602483015260248252612be08261088f565b908160209103126104fa57516109a181610b30565b519061093382610572565b908160209103126104fa57516109a181610572565b3d15612e96573d90612e7d82610935565b91612e8b60405193846108e5565b82523d5f602084013e565b606090565b604051631d6aac4760e31b60208201526001600160a01b03909216602483015265ffffffffffff909216604480830191909152815260609291612bf491612be591612be0826108ca565b6001600160a01b03908116908115612f3e575f8051602061510283398151915280546001600160a01b031981168417909155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b604051631e4fbdf760e01b81525f6004820152602490fd5b90612f7c90825f52600860205260405f209060018060a01b03165f5260205260405f2090565b54905f52600660205260405f2054600760205260405f205490600181018091116107415760018201809211610741576109a192614235565b92919092612fd9612fc88360609684612e9b565b92612fd38184612ba9565b92612e00565b90825115801590613073575b8015613069575b612ff557505050565b6130429394506109a19291611c0d91604051936130118561088f565b84526020840190815260408401918252613058604051968795602080880152516060604088015260a08701906112bf565b915191603f1992838783030160608801526112bf565b9151908483030160808501526112bf565b5081511515612fec565b5080511515612fe5565b5f80516020615182833981519152600281541461309a5760029055565b604051633ee5aeb560e01b8152600490fd5b335f908152600e60205260409020939291906130c742613226565b335f908152600e602052604090206130de90614489565b91848303928311610741576131197febff2602b3f468259e1e99f613fed6691f3a6526effe6ef3e768ba7ae7a36c4f9385936131a499613cc5565b505061313361312742613226565b610d4387611654614415565b505061314d61314142613226565b610d2e8461165461439c565b50506131f2816131dd613166613161612c63565b6126a5565b6131bc61317b825f52600660205260405f2090565b5461318e835f52600760205260405f2090565b5461319a82828b6144cc565b9d8e998a936126b3565b6131b6855f52600660205260405f2090565b556126b3565b6131ce825f52600760205260405f2090565b555f52600860205260405f2090565b9060018060a01b03165f5260205260405f2090565b6131fd8382546126b3565b9055604080519485526020850195909552938301526001600160a01b03909216913391606090a3565b65ffffffffffff90818111613239571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b6104fa913691610950565b908160209103126104fa576109a190612b75565b90600163ffffffff8093160191821161074157565b9080511561335757806020806132a793518301019101613263565b6132b081614711565b906132c1825165ffffffffffff1690565b9065ffffffffffff808516921682811461334b57821191826132f7575b50506132ee57506109a1906144ed565b60209150015190565b909150613305600a54612677565b63ffffffff83161491821561331e575b50505f806132de565b61334391925061284961333361333892613277565b614711565b65ffffffffffff1690565b115f80613315565b50505060209150015190565b506109a1906144ed565b9080511561340c578060208061337c93518301019101613263565b61338581614796565b90613396825165ffffffffffff1690565b9065ffffffffffff808516921682811461334b57821191826133c3575b50506132ee57506109a19061459e565b9091506133d1600c54612677565b63ffffffff8316149182156133ea575b50505f806133b3565b6134049192506128496133ff61333892613277565b614796565b115f806133e1565b506109a19061459e565b918051156134d8578060208061343193518301019101613263565b9161343c8382614811565b9261344d845165ffffffffffff1690565b9065ffffffffffff80851692168281146134cc5782119182613483575b505061347a576109a19250614648565b50506020015190565b9091506134908354612677565b63ffffffff8316149182156134a9575b50505f8061346a565b6134c49192506128496134be61333892613277565b85614811565b115f806134a0565b50505050506020015190565b506109a191614648565b335f9081527f03b26b53c87faa1058f30bb5d2fee64f717719a0d9b7e4f4df027aa5e9b6ed69602052604090207fbae4ee3de6c709ff9a002e774c5b78cb381560b219213c88ae0f1e207c03c0239060ff905b5416156121c55750565b335f9081527fe41986b390c4ce6791b87f7423b5fab7a81a0e6d89660b6264f697d008b2243a602052604090207fc6aaadd7371d5e8f9ed6849dd66a66573a3ba37167d03f4352c9ba5693678fac9060ff90613535565b335f9081527f0287ab4cb376ea253d7b2ce0c2cbf458f7deae9458470d74afdfbbee484e9540602052604090207f9c56d972d63cbb4195b3c1484691dfc220fa96a4c47e7b6613bd82a022029e069060ff90613535565b5f8181525f8051602061516283398151915260209081526040808320338452909152902060ff90613535565b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260409020545f805160206151628339815191529060ff166136c4575f808052602091825260408082206001600160a01b038516835290925220805460ff1916600117905533906001600160a01b03165f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b50505f90565b6001600160a01b0381165f9081527f03b26b53c87faa1058f30bb5d2fee64f717719a0d9b7e4f4df027aa5e9b6ed69602052604090207fbae4ee3de6c709ff9a002e774c5b78cb381560b219213c88ae0f1e207c03c023905f805160206151628339815191529060ff905b5416613799575f828152602091825260408082206001600160a01b038616835290925220805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b5050505f90565b6001600160a01b0381165f9081527f0287ab4cb376ea253d7b2ce0c2cbf458f7deae9458470d74afdfbbee484e9540602052604090207f9c56d972d63cbb4195b3c1484691dfc220fa96a4c47e7b6613bd82a022029e06905f805160206151628339815191529060ff90613735565b6001600160a01b0381165f9081527fe41986b390c4ce6791b87f7423b5fab7a81a0e6d89660b6264f697d008b2243a602052604090207fc6aaadd7371d5e8f9ed6849dd66a66573a3ba37167d03f4352c9ba5693678fac905f805160206151628339815191529060ff90613735565b6001600160a01b0381165f9081527f2d4ccbfe9f7672a6f2537c1e5bce6adacb73706879154bbab6ce096012d67216602052604090207f4a634bc14d77baf979756509ef4298c6f6318af357828612545267ee2eb79233905f805160206151628339815191529060ff90613735565b5f8181525f80516020615162833981519152602081815260408084206001600160a01b038716855290915290912060ff90613735565b5f8181525f80516020615162833981519152602081815260408084206001600160a01b03871685529091529091205460ff1615613799575f828152602091825260408082206001600160a01b038616835290925220805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b6040516323b872dd60e01b60208201526001600160a01b03928316602482015292909116604483015260648083019390935291815260a08101918183106001600160401b038411176108aa5761093392604052614879565b600b54811015612dc957600b5f525f8051602061514283398151915201905f90565b600d54811015612dc957600d5f525f8051602061512283398151915201905f90565b8054821015612dc9575f5260205f2001905f90565b600d54600160401b8110156108aa576001810180600d55811015612dc957600d5f525f805160206151228339815191520155565b600b54600160401b8110156108aa576001810180600b55811015612dc957600b5f525f805160206151428339815191520155565b90815491600160401b8310156108aa5782613af191600161093395018155613a51565b90919082549060031b91821b915f19901b1916179055565b919091600d9081548015613bb4575b50613b2161490c565b50929091815492613b3061439c565b9481613b9f575b5015613b7c57505f1982018281116107415781541115612dc9575f527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb4018390559190565b613b90926001600160d01b03169150614d72565b5050613b9b83613a66565b9190565b65ffffffffffff83811691161490505f613b37565b600160401b8110156108aa5760018101808455811015612dc9575f908382525f8051602061512283398151915201555f613b18565b919091600b9081548015613c90575b50613c01614961565b50929091815492613c10614415565b9481613c7b575b5015613c5c57505f1982018281116107415781541115612dc9575f527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db8018390559190565b613c70926001600160d01b03169150614e42565b5050613b9b83613a9a565b65ffffffffffff83811691161490505f613c17565b600160401b8110156108aa5760018101808455811015612dc9575f908382525f8051602061514283398151915201555f613bf8565b90929192600182019081548015613d53575b5084613ce2846149b6565b50949092845493613cf283614489565b9681613d3e575b5015613d1b575050505f19810190811161074157613af18591613b9b93613a51565b613b9b949293613d37926001600160d01b039091169190614ee1565b5050613ace565b65ffffffffffff83811691161490505f613cf9565b600160401b8110156108aa57806001613d6f9201845583613a51565b8154905f199060031b1b191690555f613cd7565b90604051613d90816108af565b915465ffffffffffff8116835260301c6020830152565b600a54905f829160058411613e52575b613dc19350614b1a565b8015613e4757613df1613dec613dd683612677565b600a5f525f805160206150e28339815191520190565b613d83565b91613e40613e37613e31613e27613e226020613e13895165ffffffffffff1690565b9801516001600160d01b031690565b613a0d565b90549060031b1c90565b93612677565b63ffffffff1690565b6001939291565b505f905f905f905f90565b9192613e5d816149ef565b810390811161074157600a5f525f805160206150e2833981519152810154613dc1949065ffffffffffff9081169085161015613e9a575091613db7565b929150613ea6906126a5565b90613db7565b600c54905f829160058411613f18575b613ec69350614b77565b8015613e4757613ef1613dec613edb83612677565b600c5f525f805160206150c28339815191520190565b91613e40613e37613e31613e27613f136020613e13895165ffffffffffff1690565b613a2f565b9192613f23816149ef565b810390811161074157600c5f525f805160206150c2833981519152810154613ec6949065ffffffffffff9081169085161015613f60575091613ebc565b929150613f6c906126a5565b90613ebc565b91908254905f829160058411613ff5575b613f8e935085614bd4565b908115613fe957613e40613e37613e31613e27613fbb613dec613fb088612677565b895f5260205f200190565b966001613fe26020613fd38b5165ffffffffffff1690565b9a01516001600160d01b031690565b9101613a51565b5f925082915081908190565b9192614000816149ef565b810390811161074157613f8e93865f526140296133388360205f200165ffffffffffff90541690565b65ffffffffffff8516101561403f575091613f83565b92915061404b906126a5565b90613f83565b51906109338261086b565b90816101609103126104fa57614070610906565b9061407a81612e4c565b825261408860208201612e4c565b602083015261409960408201614051565b60408301526140aa60608201612b6a565b60608301526140bb60808201612b6a565b608083015260a081015160a08301526140d660c08201612e4c565b60c08301526140e760e08201612e4c565b60e08301526101006140fa818301612e4c565b9083015261012061410c818301612e4c565b9083015261411e610140809201612e4c565b9082015290565b905f8060409384519360209461415c81611c0d88820194639f86fd8560e01b86523060248401528a604484015260648301906112bf565b51915afa50614169612e6c565b805181019280828486019503126104fa57828201519161418883610b30565b81810151906001600160401b0382116104fa57019084603f830112156104fa57838201516141b581610935565b956141c2835197886108e5565b8187528282850101116104fa578085925f94018388015e85010152156141e6575090565b9080519182156104fa5701fd5b5f80516020615102833981519152546001600160a01b0316330361421357565b60405163118cdaa760e01b8152336004820152602490fd5b8115612c5e570490565b91818302915f19818509938380861095039480860395146142b557848311156142a85790829109815f038216809204600280826003021880830282030280830282030280830282030280830282030280830282030280920290030293600183805f03040190848311900302920304170290565b8215600302601118614c59565b5050906109a1925061422b565b60405163a9059cbb60e01b60208201526001600160a01b039092166024830152604480830193909352918152610933916142fb826108ca565b614879565b90614309612c63565b82101561438a575f82815260096020908152604080832033845290915290205460ff166143785761433a3383612f56565b918215614366575f9081526009602090815260408083203384529091529020805460ff19166001179055565b6040516366c0bcbf60e11b8152600490fd5b604051630c8d9eab60e31b8152600490fd5b60405163d5b25b6360e01b8152600490fd5b600c54806143dc57505f5b6001600160d01b038116156143d757600d54811015612dc957600d5f525f80516020615122833981519152015490565b505f90565b805f1981011161074157600c5f527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c6015460301c6143a7565b600a548061445057505f5b6001600160d01b038116156143d757600b54811015612dc957600b5f525f80516020615142833981519152015490565b805f1981011161074157600a5f527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a7015460301c614420565b8054806144ae57505f5b6001600160d01b038116156136c4576001613e279201613a51565b5f1990808281011161074157825f5260205f2001015460301c614493565b9190600181018091116107415760018201809211610741576109a192614235565b600a54905f829160058411614545575b6145079350614fb0565b8061452a57505f5b6001600160d01b038116156143d757613e276109a191613a0d565b614539613dd661454092612677565b5460301c90565b61450f565b9192614550816149ef565b81039081116107415761450793600a5f5265ffffffffffff80835f805160206150e2833981519152015416908516105f1461458c5750916144fd565b929150614598906126a5565b906144fd565b600c54905f8291600584116145ef575b6145b8935061500d565b806145db57505f5b6001600160d01b038116156143d757613e276109a191613a2f565b614539613edb6145ea92612677565b6145c0565b91926145fa816149ef565b8103908111610741576145b893600c5f5265ffffffffffff80835f805160206150c2833981519152015416908516105f146146365750916145ae565b929150614642906126a5565b906145ae565b908154905f8291600584116146ab575b61466393508461506a565b8061468b57505f905b6001600160d01b038216156136c4576109a1916001613e279201613a51565b61453961469a6146a592612677565b835f5260205f200190565b9061466c565b91926146b6816149ef565b81039081116107415761466393855f5265ffffffffffff808360205f20015416908516105f146146e7575091614658565b9291506146f3906126a5565b90614658565b60405190614706826108af565b5f6020838281520152565b6147196146f9565b506147226146f9565b50600a54811015612dc95761474990600a5f525f805160206150e283398151915201613d83565b65ffffffffffff81511690602060018060d01b0391015116600b54811015612dc957600b5f525f8051602061514283398151915201546040519161478c836108af565b8252602082015290565b61479e6146f9565b506147a76146f9565b50600c54811015612dc9576147ce90600c5f525f805160206150c283398151915201613d83565b65ffffffffffff81511690602060018060d01b0391015116600d54811015612dc957600d5f525f8051602061512283398151915201546040519161478c836108af565b9061483a61483461485b926148246146f9565b5061482d6146f9565b5084613a51565b50613d83565b91600165ffffffffffff845116936020828060d01b03910151169101613a51565b9054906040519261486b846108af565b835260031b1c602082015290565b905f602091828151910182855af1156126f0575f513d6148ca57506001600160a01b0381163b155b6148a85750565b604051635274afe760e01b81526001600160a01b039091166004820152602490fd5b600114156148a1565b9190600181018091116107415760018201809211610741576148f6828285614235565b928215612c5e5709151581018091116107415790565b600c548061491d57505f905f905f90565b805f1981011161074157600c5f527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c6015460019165ffffffffffff82169160301c90565b600a548061497257505f905f905f90565b805f1981011161074157600a5f527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a7015460019165ffffffffffff82169160301c90565b8054806149c75750505f905f905f90565b5f19918183810111610741575f5260205f2001015460019165ffffffffffff82169160301c90565b60018111156109a157600181600160801b811015614b08575b614ab0614aa6614a9c614a92614a88614a7e614abc97600488600160401b614ab79a1015614afb575b640100000000811015614aee575b62010000811015614ae1575b610100811015614ad5575b6010811015614ac9575b1015614ac1575b60030260011c614a77818b61422b565b0160011c90565b614a77818a61422b565b614a77818961422b565b614a77818861422b565b614a77818761422b565b614a77818661422b565b809361422b565b821190565b900390565b60011b614a67565b811c9160021b91614a60565b60081c91811b91614a56565b60101c9160081b91614a4b565b60201c9160101b91614a3f565b60401c9160201b91614a31565b50600160401b9050608082901c614a08565b828210614b2657505090565b9091614b328184614f9b565b90600a5f5265ffffffffffff80835f805160206150e2833981519152015416908416105f14614b645750915b90614b1a565b92506001810180911115614b5e57612663565b828210614b8357505090565b9091614b8f8184614f9b565b90600c5f5265ffffffffffff80835f805160206150c2833981519152015416908416105f14614bc15750915b90614b77565b92506001810180911115614bbb57612663565b905b838310614be35750505090565b909192614bf08185614f9b565b90835f5265ffffffffffff808360205f20015416908416105f14614c185750925b9190614bd6565b93506001810180911115614c1157612663565b60ff5f805160206151a28339815191525460401c1615614c4757565b604051631afcd79f60e31b8152600490fd5b634e487b715f526020526024601cfd5b600c5490600160401b8210156108aa576001820180600c55821015612dc957600c5f52805160209091015160301b65ffffffffffff191665ffffffffffff91909116175f805160206150c283398151915290910155565b600a5490600160401b8210156108aa576001820180600a55821015612dc957600a5f52805160209091015160301b65ffffffffffff191665ffffffffffff91909116175f805160206150e283398151915290910155565b8054600160401b8110156108aa57614d3491600182018155613a51565b614d5f57815160209092015160301b65ffffffffffff191665ffffffffffff92909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b600c549192918015614e1957613edb614d8a91612677565b9081549165ffffffffffff90818416918316808311614e0757869203614dcf57614dc892509065ffffffffffff82549181199060301b169116179055565b60301c9190565b5050614e0290614dee614de0610926565b65ffffffffffff9092168252565b6001600160d01b0385166020820152614c69565b614dc8565b604051632520601d60e01b8152600490fd5b50614e3d90614e29614de0610926565b6001600160d01b0384166020820152614c69565b5f9190565b600a549192918015614ebd57613dd6614e5a91612677565b9081549165ffffffffffff90818416918316808311614e0757869203614e9857614dc892509065ffffffffffff82549181199060301b169116179055565b5050614e0290614ea9614de0610926565b6001600160d01b0385166020820152614cc0565b50614e3d90614ecd614de0610926565b6001600160d01b0384166020820152614cc0565b80549293928015614f7657614ef8614f0391612677565b825f5260205f200190565b9182549265ffffffffffff91828516928116808411614e0757879303614f425750614dc892509065ffffffffffff82549181199060301b169116179055565b915050614e0291614f62614f54610926565b65ffffffffffff9093168352565b6001600160d01b0386166020830152614d17565b5090614e3d91614f87614f54610926565b6001600160d01b0385166020830152614d17565b90808216911860011c81018091116107415790565b828210614fbc57505090565b9091614fc88184614f9b565b90600a5f5265ffffffffffff80835f805160206150e2833981519152015416908416105f14614ffa5750915b90614fb0565b92506001810180911115614ff457612663565b82821061501957505090565b90916150258184614f9b565b90600c5f5265ffffffffffff80835f805160206150c2833981519152015416908416105f146150575750915b9061500d565b9250600181018091111561505157612663565b905b8383106150795750505090565b9091926150868185614f9b565b90835f5265ffffffffffff808360205f20015416908416105f146150ae5750925b919061506c565b935060018101809111156150a75761266356fedf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7c65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a89016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300d7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db902dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a264697066735822122096afd643cffc15a05e275ebcf57e554339f04ba03ab6025ec642ba4ec611894864736f6c63430008190033","sourceMap":"199:2819:92:-:0;;;;;;;348:4:89;332:21;;318:1:92;3173:36:103;;318:1:92;3219:32:103;;8837:64:22;199:2819:92;;;;;;;;;7896:76:22;;-1:-1:-1;;;;;;;;;;;;199:2819:92;;;7985:34:22;7981:146;;-1:-1:-1;318:1:92;927:17:78;;199:2819:92;;;;;;;;332:21:89;199:2819:92;;;;;;;;;;;;;;;3173:36:103;199:2819:92;;;;;;;;;;3219:32:103;199:2819:92;;;;;;;;;;927:17:78;199:2819:92;;;;;;;;;;;7981:146:22;-1:-1:-1;;;;;;199:2819:92;;;;;;;;;;;;;8087:29:22;;199:2819:92;;8087:29:22;7981:146;;;;;7896:76;-1:-1:-1;;;7938:23:22;;;;;199:2819:92;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a7146104a45780631415519b1461049f5780631b66c9e11461049a5780631e9a695014610495578063248a9ca31461049057806327810b6e1461048b578063281f5752146104865780632abe3048146104815780632d73c69c1461047c5780632dd31000146104775780632f2ff15d1461047257806336568abe1461046d578063392e53cd146104685780634105a7dd14610463578063463616711461045e57806347e7ef241461045957806348d3b775146104545780634ff0876a1461044f57806350861adc1461044a57806350f22068146104455780635346e34f1461044057806354fd4d501461043b57806355a2c6721461043657806357ec83cc1461043157806359f769a91461042c5780635cc070761461042757806361a8c8c41461042257806364b03fdc1461041d57806367567add146104185780636da3e06d146104135780636ec1e3f81461040e578063715018a6146104095780637278e31c1461040457806373790ab3146103ff57806376671808146103fa578063794b15b7146103f55780637953b33b146103f05780637c04c80a146103eb578063810da75d146103e65780638326056f146103e157806383cd9cc3146103dc57806387df0788146103d75780638b0e9f3f146103d25780638da5cb5b146103cd57806391d14854146103c85780639d66201b146103c35780639f86fd85146103be578063a1b12202146103b9578063a217fddf146103b4578063a21a1df9146103af578063a2861466146103aa578063a3b54172146103a5578063a5d03223146103a0578063aabc24961461039b578063aad3ec9614610396578063afba70ad14610391578063b13442711461038c578063bd49c35f14610387578063bdc8144b14610382578063bfefcd7b1461037d578063c31e8dd714610378578063ce9b793014610373578063d547741f1461036e578063d8dfeb4514610369578063db38871514610364578063de4997161461035f578063eb5562381461035a578063ecf7085814610355578063efb559d614610350578063f2fde38b1461034b578063f3fef3a314610346578063f5e7ee0f146103415763f9e1bf6c1461033c575f80fd5b612649565b61261f565b612579565b61254c565b6123fd565b6123e0565b61238c565b612372565b612306565b6122db565b61228f565b612267565b6121fd565b6121e3565b612105565b6120eb565b6120c3565b612099565b611fd8565b611e21565b611ddb565b611d8e565b611c9b565b611c61565b611c47565b611c23565b611b8f565b611b55565b611af7565b611ac3565b611a61565b611a1d565b611864565b61184a565b611831565b6117cb565b6117a4565b611764565b61174a565b611709565b611437565b6113d0565b6113ab565b611367565b611311565b6112e3565b611247565b61121d565b6111f6565b6110be565b611039565b611007565b610f72565b610f59565b610efc565b610edc565b610ebb565b610bfd565b610bd5565b610b3a565b610af5565b610aaa565b610a5c565b610a18565b6109a4565b61079b565b6106cd565b6106a5565b61066c565b610583565b610538565b6104fe565b346104fa5760203660031901126104fa5760043563ffffffff60e01b81168091036104fa57602090637965db0b60e01b81149081156104e9575b506040519015158152f35b6301ffc9a760e01b1490505f6104de565b5f80fd5b346104fa575f3660031901126104fa5760206040517fc6aaadd7371d5e8f9ed6849dd66a66573a3ba37167d03f4352c9ba5693678fac8152f35b346104fa575f3660031901126104fa5760206040517f9c56d972d63cbb4195b3c1484691dfc220fa96a4c47e7b6613bd82a022029e068152f35b6001600160a01b038116036104fa57565b346104fa5760403660031901126104fa576004356105a081610572565b602435906105ac61307d565b6001600160a01b0381161561065b57335f908152600e602052604090206105d790614489565b614489565b8211610649576105f76105e861439c565b6105f0614415565b90846144cc565b9182156106345782610608926130ac565b9061061f60015f8051602061518283398151915255565b604080519182526020820192909252f35b0390f35b60405160016245ddc760e11b03198152600490fd5b604051632418411f60e11b8152600490fd5b6040516208978560e71b8152600490fd5b346104fa5760203660031901126104fa576004355f525f805160206151628339815191526020526020600160405f200154604051908152f35b346104fa575f3660031901126104fa576001546040516001600160a01b039091168152602090f35b346104fa575f3660031901126104fa576106e5612c63565b80156107465760015465ffffffffffff8160a01c16915f198101908111610741576107139160d01c90612692565b81018091116107415761072861063091613226565b60405165ffffffffffff90911681529081906020820190565b612663565b604051639fa56a5b60e01b8152600490fd5b600435906001600160401b03821682036104fa57565b9181601f840112156104fa578235916001600160401b0383116104fa57602083818601950101116104fa57565b346104fa5760403660031901126104fa576107b4610758565b6001600160401b036024358181116104fa576107d490369060040161076e565b9290916107df61307d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610859575f805160206151a2833981519152549060ff8260401c16928315610849575b50505015613258575b60405163f92ee8a960e01b8152600490fd5b81169116101590505f808061082e565b604051631966391b60e11b8152600490fd5b65ffffffffffff8116036104fa57565b634e487b7160e01b5f52604160045260245ffd5b606081019081106001600160401b038211176108aa57604052565b61087b565b604081019081106001600160401b038211176108aa57604052565b608081019081106001600160401b038211176108aa57604052565b90601f801991011681019081106001600160401b038211176108aa57604052565b6040519061016082018281106001600160401b038211176108aa57604052565b60405190610933826108af565b565b6001600160401b0381116108aa57601f01601f191660200190565b92919261095c82610935565b9161096a60405193846108e5565b8294818452818301116104fa578281602093845f960137010152565b9080601f830112156104fa578160206109a193359101610950565b90565b346104fa5760603660031901126104fa576004356109c181610572565b602435906109ce8261086b565b604435906001600160401b0382116104fa576020926109f4610a10933690600401610986565b6001600160a01b039092165f908152600e855260409020613416565b604051908152f35b346104fa575f3660031901126104fa576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346104fa5760403660031901126104fa57610aa8602435600435610a7f82610572565b805f525f80516020615162833981519152602052610aa3600160405f2001546135ed565b6138ed565b005b346104fa5760403660031901126104fa57602435610ac781610572565b336001600160a01b03821603610ae357610aa890600435613923565b60405163334bd91960e11b8152600490fd5b346104fa575f3660031901126104fa5760ff60025460a01c1680610b21575b6020906040519015158152f35b5060035460a01c60ff16610b14565b801515036104fa57565b346104fa5760203660031901126104fa57600435610b5781610b30565b610b5f61307d565b610b676134e2565b5f54901515908160ff8216151514610bc35760ff191660ff8216175f556040519081527f3e12b7b36c75ac9609a3f58609b331210428e1a85909132638955ba0301eec3390602090a160015f8051602061518283398151915255005b60405163a741a04560e01b8152600490fd5b346104fa575f3660031901126104fa57602065ffffffffffff60015460a01c16604051908152f35b346104fa576040806003193601126104fa576004803591610c1d83610572565b610c2561307d565b6001600160a01b0391838316908115610ead575f5460ff811680610e94575b610e855783516370a0823160e01b808252308483019081529096602093909160109190911c82169084908490819083010381845afa928315610e5d575f93610e62575b50610c999060243590309033906139b5565b5f5486519788523085890190815290979184918391908290819060200103918b60101c165afa908115610e5d57610cd8935f92610e30575b5050612685565b938415610e215760081c60ff1680610e0c575b610dfe57509061063091610d9c610d0061439c565b95610d49610d0c614415565b610d34610d1a8a838b6144cc565b99610d2e8a610d2842613226565b926126b3565b90613b09565b5050610d4389610d2842613226565b90613be9565b50506001600160a01b0381165f908152600e6020526040902090610d9688610d916105d2610d7642613226565b6001600160a01b039095165f908152600e6020526040902090565b6126b3565b91613cc5565b505081518481526020810186905233907fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d790604090a3610de860015f8051602061518283398151915255565b5191825260208201929092529081906040820190565b8251632484557960e01b8152fd5b50610e1984610d9161439c565b815410610ceb565b50825163070f6eed60e11b8152fd5b610e4f9250803d10610e56575b610e4781836108e5565b8101906126e1565b5f80610cd1565b503d610e3d565b6126f0565b610c99919350610e7e90853d8711610e5657610e4781836108e5565b9290610c87565b5082516304f63b8560e01b8152fd5b50335f9081526005602052604090205460ff1615610c44565b8251630d534ce360e11b8152fd5b346104fa575f3660031901126104fa57602060ff5f54166040519015158152f35b346104fa575f3660031901126104fa57602060015460d01c604051908152f35b346104fa575f3660031901126104fa57602060ff60025460a01c166040519015158152f35b9060406003198301126104fa57600435610f3a8161086b565b91602435906001600160401b0382116104fa576109a191600401610986565b346104fa576020610a10610f6c36610f21565b9061328c565b346104fa5760203660031901126104fa57600435610f8f81610b30565b610f9761307d565b610f9f61353f565b5f54901515908160ff8260081c16151514610bc35761ff001916600882901b61ff0016175f556040519081527ffa7a25a0b611d4ba3c0ea990e90dc23d484a5dd7a1be4733fef2946ba74530c690602090a1610aa860015f8051602061518283398151915255565b346104fa575f3660031901126104fa5760206001600160401b035f805160206151a28339815191525416604051908152f35b346104fa5760203660031901126104fa576004356110568161086b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036110ac5761108f90613da7565b60408051941515855263ffffffff91909116602085015292915050f35b604051637ca475e560e11b8152600490fd5b346104fa5760603660031901126104fa576110d7610758565b6024356110e381610572565b6001600160401b03916044358381116104fa5761110490369060040161076e565b5f805160206151a28339815191529491855494838616806111e55760ff8760401c169081156111d8575b50610837577fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2966111d39661119b958716906001600160401b0319161790556111965f805160206151a2833981519152600160401b68ff000000000000000019825416179055565b6126fb565b5f805160206151a2833981519152805468ff0000000000000000191690556040516001600160401b0390911681529081906020820190565b0390a1005b905084861611155f61112e565b60405162dc149f60e41b8152600490fd5b346104fa5760203660031901126104fa576020610a1060043561121881610572565b612b1b565b346104fa5760203660031901126104fa576004355f526006602052602060405f2054604051908152f35b346104fa575f3660031901126104fa5760015465ffffffffffff61127d818360a01c1692611273612c63565b9060d01c90612692565b820180921161074157611291602092613226565b60405191168152f35b60409060031901126104fa576004356112b281610572565b906024356109a18161086b565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b346104fa576106306112fd6112f73661129a565b90612ba9565b6040519182916020835260208301906112bf565b346104fa5760203660031901126104fa5760043561132e8161086b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036110ac5761108f90613eac565b346104fa575f3660031901126104fa576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346104fa575f3660031901126104fa57602060ff60035460a01c166040519015158152f35b346104fa575f3660031901126104fa576113e86141f3565b5f8051602061510283398151915280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346104fa5760403660031901126104fa576004356024356114578161086b565b61145f61307d565b60035461147c906001600160a01b03165b6001600160a01b031690565b33036116f75761148a612c63565b9061149481612c97565b90821515806116e6575b80156116dd575b6116cb57610630937ff9d090c096f71cd1659861a9ce5b6f384bceb4e2fa4e4a19edf6489a9b8d56c7926114d761439c565b946114f26114e4826126a5565b5f52600660205260405f2090565b54908281036115e5575061150681876126b3565b83811881851002811896878061159e575b50505050505b8361156a575b6040805191825265ffffffffffff929092166020820152908101839052606090a161155a60015f8051602061518283398151915255565b6040519081529081906020820190565b5f546115999085906115879060101c6001600160a01b0316611470565b6001546001600160a01b0316906142c2565b611523565b6115da93610cd183610d2e6115c46115bd6114e4986115d49888614235565b8096612685565b946115ce42613226565b92612685565b926126a5565b555f80808087611517565b91506115f9825f52600660205260405f2090565b549061160981610d91848a6126b3565b908482188286100282189788611624575b505050505061151d565b611699938361164c936116598c61165461164261168a998884614235565b9788958584614235565b948592612685565b612685565b938484106116a4575b610cd190610d2e6116789596976115ce42613226565b6116846114e4876126a5565b55612685565b915f52600660205260405f2090565b555f8080808061161a565b916116c0610cd1916116ba866116789798612685565b906126b3565b859450929050611662565b604051635e18d2a560e01b8152600490fd5b508282116114a5565b506116f083612677565b821061149e565b60405163dabc4ad960e01b8152600490fd5b346104fa575f3660031901126104fa5760015465ffffffffffff808260a01c1691611732612c63565b600181018091116107415761127d9160d01c90612692565b346104fa575f3660031901126104fa576020610a10612c63565b346104fa5760203660031901126104fa5760043561178181610572565b60018060a01b03165f526005602052602060ff60405f2054166040519015158152f35b346104fa5760203660031901126104fa576020610a106004356117c68161086b565b612c97565b346104fa5760403660031901126104fa576004356117e881610572565b6024356001600160401b038082116104fa57366023830112156104fa5781600401359081116104fa573660248260051b840101116104fa5761063092602461155a930190612cd2565b346104fa576020610a1061184436610f21565b90613361565b346104fa576106306112fd61185e3661129a565b90612e00565b346104fa576020806003193601126104fa57600480359061188482610572565b61188c61307d565b60025460a01c60ff16611a0e576040516302910f8b60e31b81526001600160a01b03838116838301908152909491908290829081906020010381887f0000000000000000000000000000000000000000000000000000000000000000165afa908115610e5d575f916119e1575b50156119d15760405163fbfa77cf60e01b8152838516949082818581895afa928315610e5d575f936119a2575b5050309116036119935750600280546001600160a01b03929092166001600160a81b031990921691909117600160a01b1790557fdb2160616f776a37b24808115554e79439bf26cccbbd4438190cc6d28e80ecd15f80a2610aa860015f8051602061518283398151915255565b60405163b9f0f17160e01b8152fd5b6119c2929350803d106119ca575b6119ba81836108e5565b810190612e57565b905f80611926565b503d6119b0565b506040516324e5af8d60e21b8152fd5b611a019150823d8411611a07575b6119f981836108e5565b810190612e37565b5f6118f9565b503d6119ef565b604051631380833b60e01b8152fd5b346104fa575f3660031901126104fa576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346104fa575f3660031901126104fa57611a79612c63565b611a8161439c565b90805f52600660205260405f205482018092116107415760018101809111610741575f52600660205260405f2054810180911161074157602090604051908152f35b346104fa575f3660031901126104fa575f80516020615102833981519152546040516001600160a01b039091168152602090f35b346104fa5760403660031901126104fa57602060ff611b49602435611b1b81610572565b6004355f525f80516020615162833981519152845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b346104fa5760203660031901126104fa57600435611b7281610572565b60018060a01b03165f52600e6020526020610a1060405f20614489565b346104fa5760403660031901126104fa57600435611bac81610572565b6024356001600160401b0381116104fa575f91611bce8392369060040161076e565b90816040519283928337810184815203915af4611c1b611bec612e6c565b91611c0d6040519384921515602084015260408084015260608301906112bf565b03601f1981018352826108e5565b805190602001fd5b346104fa575f3660031901126104fa57602060ff5f5460081c166040519015158152f35b346104fa575f3660031901126104fa5760206040515f8152f35b346104fa575f3660031901126104fa5760206040517f4a634bc14d77baf979756509ef4298c6f6318af357828612545267ee2eb792338152f35b346104fa5760403660031901126104fa57600435611cb881610572565b602435611cc481610b30565b611ccc61307d565b611cd4613596565b6001600160a01b038216918215611d7c575f8381526005602052604090205460ff16151582151514610bc3576001600160a01b03165f9081526005602052604090207ff991b1ecfb5115cbb36a2b2e2240c058406d2acc2fcc6e9e2dc99d845ff70a6291611d6391611d51908260ff801983541691151516179055565b60405190151581529081906020820190565b0390a2610aa860015f8051602061518283398151915255565b604051630da30f6560e31b8152600490fd5b346104fa5760403660031901126104fa576020611dd2602435611db081610572565b6004355f526008835260405f209060018060a01b03165f5260205260405f2090565b54604051908152f35b346104fa5760403660031901126104fa57602060ff611b49602435611dff81610572565b6004355f526009845260405f209060018060a01b03165f5260205260405f2090565b346104fa576020806003193601126104fa576004803590611e4182610572565b611e4961307d565b60035460a01c60ff16611fc9576001600160a01b03828116939084611eb7575b6003805460ff60a01b1916600160a01b179055847fe7e4c932e03abddfe20f83af42c33627e816115c7ec2b168441f65dc14bfc3ba5f80a2610aa860015f8051602061518283398151915255565b6040516302910f8b60e31b81526001600160a01b0385168482019081528390829081906020010381857f0000000000000000000000000000000000000000000000000000000000000000165afa908115610e5d575f91611fac575b5015611f9b5760405163fbfa77cf60e01b815282818581895afa928315610e5d575f93611f7c575b505030911603611f6d5750600380546001600160a01b0319166001600160a01b039092169190911790555f808080611e69565b604051633f3e089160e21b8152fd5b611f93929350803d106119ca576119ba81836108e5565b905f80611f3a565b60405163dabc4ad960e01b81528390fd5b611fc39150833d8511611a07576119f981836108e5565b5f611f12565b60405163703fe2e560e01b8152fd5b346104fa5760403660031901126104fa57600435611ff581610572565b6024359061200161307d565b6001600160a01b0391818316908115612087576120326106309461202483614300565b9485915f5460101c166142c2565b604080519182526020820184905233917f865ca08d59f5cb456e85cd2f7ef63664ea4f73327414e9d8152c4158b0e946459190a360015f80516020615182833981519152556040519081529081906020820190565b604051634e46966960e11b8152600490fd5b346104fa5760203660031901126104fa576004355f526007602052602060405f2054604051908152f35b346104fa575f3660031901126104fa576003546040516001600160a01b039091168152602090f35b346104fa575f3660031901126104fa576020610a1061439c565b346104fa5760203660031901126104fa5760043561212161307d565b335f9081527f2d4ccbfe9f7672a6f2537c1e5bce6adacb73706879154bbab6ce096012d6721660205260409020547f4a634bc14d77baf979756509ef4298c6f6318af357828612545267ee2eb792339060ff16156121c557508060045414610bc3576020817f854df3eb95564502c8bc871ebdd15310ee26270f955f6c6bd8cea68e75045bc092600455604051908152a160015f8051602061518283398151915255005b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b346104fa575f3660031901126104fa576020610a10614415565b346104fa5760203660031901126104fa5760043561221a81610572565b612222612c63565b61222b82612b1b565b916122368183612f56565b830180931161074157600182018092116107415761225391612f56565b810180911161074157602090604051908152f35b346104fa575f3660031901126104fa576002546040516001600160a01b039091168152602090f35b346104fa5760403660031901126104fa57610aa86024356004356122b282610572565b805f525f805160206151628339815191526020526122d6600160405f2001546135ed565b613923565b346104fa575f3660031901126104fa575f5460405160109190911c6001600160a01b03168152602090f35b346104fa575f3660031901126104fa5760206040517fbae4ee3de6c709ff9a002e774c5b78cb381560b219213c88ae0f1e207c03c0238152f35b60609060031901126104fa5760043561235881610572565b9060243561236581610572565b906044356109a18161086b565b346104fa576106306112fd61238636612340565b91612e9b565b346104fa5761239a3661129a565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811633036110ac5761108f92165f52600e60205260405f20613f72565b346104fa575f3660031901126104fa576020600454604051908152f35b346104fa5760603660031901126104fa5760043561241a81610572565b602435906124278261086b565b6001600160401b03916044358381116104fa5761244890369060040161076e565b909260409384516124588161088f565b606081526060602082015260608682015292806124b7575b610630866124a887876124a261248989848451916126c0565b9285612499602085015183613361565b9301519061328c565b916144cc565b90519081529081906020820190565b81019392506020818503126104fa578035908682116104fa5701926060848203126104fa578451956124e88761088f565b84358181116104fa57826124fd918701610986565b875260208501358181116104fa5782612517918701610986565b6020880152858501359081116104fa57610630966125406124a293612489936124a89801610986565b87820152939450612470565b346104fa5760203660031901126104fa57610aa860043561256c81610572565b6125746141f3565b612ee5565b346104fa5760403660031901126104fa5760043561259681610572565b6024356125a161307d565b6001600160a01b0382161561065b57801561260d576125d06125c1614415565b6125c961439c565b90836148d3565b335f908152600e602052604090209092906125ea90614489565b83116125fb576106089183916130ac565b6040516321727a3760e11b8152600490fd5b604051636c6c627d60e11b8152600490fd5b346104fa5760403660031901126104fa576020610a1060243561264181610572565b600435612f56565b346104fa576106306112fd61265d36612340565b91612fb4565b634e487b7160e01b5f52601160045260245ffd5b5f1981019190821161074157565b9190820391821161074157565b8181029291811591840414171561074157565b906001820180921161074157565b9190820180921161074157565b6001600160a01b03165f908152600e602052604090206109a1929190613416565b908160209103126104fa575190565b6040513d5f823e3d90fd5b9161274d9161273e9161270c614c2b565b612714614c2b565b60015f80516020615182833981519152556001600160a01b0394808616612b01575b503691610950565b6020808251830101910161405c565b805182166001600160a01b031615612aef57604080820165ffffffffffff61277b825165ffffffffffff1690565b1615612ade5760c08301805190929061279c906001600160a01b0316611470565b1561298f575b50916128db6101409261287a612855612939966127f06127c8875160018060a01b031690565b5f805462010000600160b01b03191660109290921b62010000600160b01b0316919091179055565b6020860151600180546001600160a01b0319166001600160a01b0390921691909117905561284961282042613226565b6001805465ffffffffffff60a01b191660a09290921b65ffffffffffff60a01b16919091179055565b5165ffffffffffff1690565b600180546001600160d01b031660d09290921b6001600160d01b031916919091179055565b61289a61288a6060850151151590565b60ff80195f541691151516175f55565b6128c16128aa6080850151151590565b61ff005f5491151560081b169061ff001916175f55565b6128ce60a0840151600455565b516001600160a01b031690565b84811661297f575b5060e08101516001600160a01b031684811661296f575b506101008101516001600160a01b031684811661295f575b506101208101516001600160a01b031684811661294f575b5001516001600160a01b031690565b9081166129435750565b61294c9061387e565b50565b6129589061380f565b505f61292a565b612968906137a0565b505f612912565b612978906136ca565b505f6128fa565b61298890613619565b505f6128e3565b60e08401516129a6906001600160a01b0316611470565b15612a7b575b6101208401516129c4906001600160a01b0316611470565b6127a257608084015115612a315760a08401511580612a12575b612a025750916128db6101409261287a612855612939965b949650505092506127a2565b5163183c854560e21b8152600490fd5b50610140840151612a2b906001600160a01b0316611470565b156129de565b60a084015115801590612a5b575b612a025750916128db6101409261287a612855612939966129f6565b50610140840151612a74906001600160a01b0316611470565b1515612a3f565b606084015115612ab157610100840151612a9d906001600160a01b0316611470565b6129ac575163183c854560e21b8152600490fd5b610100840151612ac9906001600160a01b0316611470565b156129ac575163183c854560e21b8152600490fd5b81516368f5f8f160e11b8152600490fd5b6040516368f7a67560e11b8152600490fd5b612b1590612b0d614c2b565b612574614c2b565b5f612736565b6001600160a01b03165f908152600e60205260409020612b3a90614489565b612b4261439c565b612b4a614415565b90600181018091116107415760018201809211610741576109a192614235565b519061093382610b30565b519063ffffffff821682036104fa57565b91908260409103126104fa576109a160208351612ba281610b30565b9301612b75565b9190612be5612bf49160609465ffffffffffff604051926367567add60e01b602085015216602483015260248252612be08261088f565b614125565b60208082518301019101612b86565b90612bfc5750565b90915063ffffffff60405191166020820152602081526109a1816108af565b65ffffffffffff918216908216039190821161074157565b634e487b7160e01b5f52601260045260245ffd5b9065ffffffffffff809116918215612c5e57160490565b612c33565b612c6c42613226565b612c93600154612c8965ffffffffffff93848360a01c1690612c1b565b9060d01c90612c47565b1690565b6001549065ffffffffffff91828160a01c16918284821610612cc057612c9392612c8991612c1b565b60405163b7d0949760e01b8152600490fd5b90612cdb61307d565b5f926001600160a01b038316928315612087578115612d93575f5b828110612d7157505f547f326b6aff1cd2fb1c8234de4f9dcfb9047c5c36eb9ef2eb34af5121e969a75d279286929091612d46918491612d419060101c6001600160a01b0316611470565b6142c2565b612d57604051928392339684612dce565b0390a39061093360015f8051602061518283398151915255565b94612d8c6001916116ba612d86898789612db9565b35614300565b9501612cf6565b60405163edf3b93360e01b8152600490fd5b634e487b7160e01b5f52603260045260245ffd5b9190811015612dc95760051b0190565b612da5565b604080825281018390529392916001600160fb1b0381116104fa5760209160609160051b809183880137850101930152565b9190612be5612bf49160609465ffffffffffff60405192632ad1633960e11b602085015216602483015260248252612be08261088f565b908160209103126104fa57516109a181610b30565b519061093382610572565b908160209103126104fa57516109a181610572565b3d15612e96573d90612e7d82610935565b91612e8b60405193846108e5565b82523d5f602084013e565b606090565b604051631d6aac4760e31b60208201526001600160a01b03909216602483015265ffffffffffff909216604480830191909152815260609291612bf491612be591612be0826108ca565b6001600160a01b03908116908115612f3e575f8051602061510283398151915280546001600160a01b031981168417909155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b604051631e4fbdf760e01b81525f6004820152602490fd5b90612f7c90825f52600860205260405f209060018060a01b03165f5260205260405f2090565b54905f52600660205260405f2054600760205260405f205490600181018091116107415760018201809211610741576109a192614235565b92919092612fd9612fc88360609684612e9b565b92612fd38184612ba9565b92612e00565b90825115801590613073575b8015613069575b612ff557505050565b6130429394506109a19291611c0d91604051936130118561088f565b84526020840190815260408401918252613058604051968795602080880152516060604088015260a08701906112bf565b915191603f1992838783030160608801526112bf565b9151908483030160808501526112bf565b5081511515612fec565b5080511515612fe5565b5f80516020615182833981519152600281541461309a5760029055565b604051633ee5aeb560e01b8152600490fd5b335f908152600e60205260409020939291906130c742613226565b335f908152600e602052604090206130de90614489565b91848303928311610741576131197febff2602b3f468259e1e99f613fed6691f3a6526effe6ef3e768ba7ae7a36c4f9385936131a499613cc5565b505061313361312742613226565b610d4387611654614415565b505061314d61314142613226565b610d2e8461165461439c565b50506131f2816131dd613166613161612c63565b6126a5565b6131bc61317b825f52600660205260405f2090565b5461318e835f52600760205260405f2090565b5461319a82828b6144cc565b9d8e998a936126b3565b6131b6855f52600660205260405f2090565b556126b3565b6131ce825f52600760205260405f2090565b555f52600860205260405f2090565b9060018060a01b03165f5260205260405f2090565b6131fd8382546126b3565b9055604080519485526020850195909552938301526001600160a01b03909216913391606090a3565b65ffffffffffff90818111613239571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b6104fa913691610950565b908160209103126104fa576109a190612b75565b90600163ffffffff8093160191821161074157565b9080511561335757806020806132a793518301019101613263565b6132b081614711565b906132c1825165ffffffffffff1690565b9065ffffffffffff808516921682811461334b57821191826132f7575b50506132ee57506109a1906144ed565b60209150015190565b909150613305600a54612677565b63ffffffff83161491821561331e575b50505f806132de565b61334391925061284961333361333892613277565b614711565b65ffffffffffff1690565b115f80613315565b50505060209150015190565b506109a1906144ed565b9080511561340c578060208061337c93518301019101613263565b61338581614796565b90613396825165ffffffffffff1690565b9065ffffffffffff808516921682811461334b57821191826133c3575b50506132ee57506109a19061459e565b9091506133d1600c54612677565b63ffffffff8316149182156133ea575b50505f806133b3565b6134049192506128496133ff61333892613277565b614796565b115f806133e1565b506109a19061459e565b918051156134d8578060208061343193518301019101613263565b9161343c8382614811565b9261344d845165ffffffffffff1690565b9065ffffffffffff80851692168281146134cc5782119182613483575b505061347a576109a19250614648565b50506020015190565b9091506134908354612677565b63ffffffff8316149182156134a9575b50505f8061346a565b6134c49192506128496134be61333892613277565b85614811565b115f806134a0565b50505050506020015190565b506109a191614648565b335f9081527f03b26b53c87faa1058f30bb5d2fee64f717719a0d9b7e4f4df027aa5e9b6ed69602052604090207fbae4ee3de6c709ff9a002e774c5b78cb381560b219213c88ae0f1e207c03c0239060ff905b5416156121c55750565b335f9081527fe41986b390c4ce6791b87f7423b5fab7a81a0e6d89660b6264f697d008b2243a602052604090207fc6aaadd7371d5e8f9ed6849dd66a66573a3ba37167d03f4352c9ba5693678fac9060ff90613535565b335f9081527f0287ab4cb376ea253d7b2ce0c2cbf458f7deae9458470d74afdfbbee484e9540602052604090207f9c56d972d63cbb4195b3c1484691dfc220fa96a4c47e7b6613bd82a022029e069060ff90613535565b5f8181525f8051602061516283398151915260209081526040808320338452909152902060ff90613535565b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260409020545f805160206151628339815191529060ff166136c4575f808052602091825260408082206001600160a01b038516835290925220805460ff1916600117905533906001600160a01b03165f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b50505f90565b6001600160a01b0381165f9081527f03b26b53c87faa1058f30bb5d2fee64f717719a0d9b7e4f4df027aa5e9b6ed69602052604090207fbae4ee3de6c709ff9a002e774c5b78cb381560b219213c88ae0f1e207c03c023905f805160206151628339815191529060ff905b5416613799575f828152602091825260408082206001600160a01b038616835290925220805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b5050505f90565b6001600160a01b0381165f9081527f0287ab4cb376ea253d7b2ce0c2cbf458f7deae9458470d74afdfbbee484e9540602052604090207f9c56d972d63cbb4195b3c1484691dfc220fa96a4c47e7b6613bd82a022029e06905f805160206151628339815191529060ff90613735565b6001600160a01b0381165f9081527fe41986b390c4ce6791b87f7423b5fab7a81a0e6d89660b6264f697d008b2243a602052604090207fc6aaadd7371d5e8f9ed6849dd66a66573a3ba37167d03f4352c9ba5693678fac905f805160206151628339815191529060ff90613735565b6001600160a01b0381165f9081527f2d4ccbfe9f7672a6f2537c1e5bce6adacb73706879154bbab6ce096012d67216602052604090207f4a634bc14d77baf979756509ef4298c6f6318af357828612545267ee2eb79233905f805160206151628339815191529060ff90613735565b5f8181525f80516020615162833981519152602081815260408084206001600160a01b038716855290915290912060ff90613735565b5f8181525f80516020615162833981519152602081815260408084206001600160a01b03871685529091529091205460ff1615613799575f828152602091825260408082206001600160a01b038616835290925220805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b6040516323b872dd60e01b60208201526001600160a01b03928316602482015292909116604483015260648083019390935291815260a08101918183106001600160401b038411176108aa5761093392604052614879565b600b54811015612dc957600b5f525f8051602061514283398151915201905f90565b600d54811015612dc957600d5f525f8051602061512283398151915201905f90565b8054821015612dc9575f5260205f2001905f90565b600d54600160401b8110156108aa576001810180600d55811015612dc957600d5f525f805160206151228339815191520155565b600b54600160401b8110156108aa576001810180600b55811015612dc957600b5f525f805160206151428339815191520155565b90815491600160401b8310156108aa5782613af191600161093395018155613a51565b90919082549060031b91821b915f19901b1916179055565b919091600d9081548015613bb4575b50613b2161490c565b50929091815492613b3061439c565b9481613b9f575b5015613b7c57505f1982018281116107415781541115612dc9575f527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb4018390559190565b613b90926001600160d01b03169150614d72565b5050613b9b83613a66565b9190565b65ffffffffffff83811691161490505f613b37565b600160401b8110156108aa5760018101808455811015612dc9575f908382525f8051602061512283398151915201555f613b18565b919091600b9081548015613c90575b50613c01614961565b50929091815492613c10614415565b9481613c7b575b5015613c5c57505f1982018281116107415781541115612dc9575f527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db8018390559190565b613c70926001600160d01b03169150614e42565b5050613b9b83613a9a565b65ffffffffffff83811691161490505f613c17565b600160401b8110156108aa5760018101808455811015612dc9575f908382525f8051602061514283398151915201555f613bf8565b90929192600182019081548015613d53575b5084613ce2846149b6565b50949092845493613cf283614489565b9681613d3e575b5015613d1b575050505f19810190811161074157613af18591613b9b93613a51565b613b9b949293613d37926001600160d01b039091169190614ee1565b5050613ace565b65ffffffffffff83811691161490505f613cf9565b600160401b8110156108aa57806001613d6f9201845583613a51565b8154905f199060031b1b191690555f613cd7565b90604051613d90816108af565b915465ffffffffffff8116835260301c6020830152565b600a54905f829160058411613e52575b613dc19350614b1a565b8015613e4757613df1613dec613dd683612677565b600a5f525f805160206150e28339815191520190565b613d83565b91613e40613e37613e31613e27613e226020613e13895165ffffffffffff1690565b9801516001600160d01b031690565b613a0d565b90549060031b1c90565b93612677565b63ffffffff1690565b6001939291565b505f905f905f905f90565b9192613e5d816149ef565b810390811161074157600a5f525f805160206150e2833981519152810154613dc1949065ffffffffffff9081169085161015613e9a575091613db7565b929150613ea6906126a5565b90613db7565b600c54905f829160058411613f18575b613ec69350614b77565b8015613e4757613ef1613dec613edb83612677565b600c5f525f805160206150c28339815191520190565b91613e40613e37613e31613e27613f136020613e13895165ffffffffffff1690565b613a2f565b9192613f23816149ef565b810390811161074157600c5f525f805160206150c2833981519152810154613ec6949065ffffffffffff9081169085161015613f60575091613ebc565b929150613f6c906126a5565b90613ebc565b91908254905f829160058411613ff5575b613f8e935085614bd4565b908115613fe957613e40613e37613e31613e27613fbb613dec613fb088612677565b895f5260205f200190565b966001613fe26020613fd38b5165ffffffffffff1690565b9a01516001600160d01b031690565b9101613a51565b5f925082915081908190565b9192614000816149ef565b810390811161074157613f8e93865f526140296133388360205f200165ffffffffffff90541690565b65ffffffffffff8516101561403f575091613f83565b92915061404b906126a5565b90613f83565b51906109338261086b565b90816101609103126104fa57614070610906565b9061407a81612e4c565b825261408860208201612e4c565b602083015261409960408201614051565b60408301526140aa60608201612b6a565b60608301526140bb60808201612b6a565b608083015260a081015160a08301526140d660c08201612e4c565b60c08301526140e760e08201612e4c565b60e08301526101006140fa818301612e4c565b9083015261012061410c818301612e4c565b9083015261411e610140809201612e4c565b9082015290565b905f8060409384519360209461415c81611c0d88820194639f86fd8560e01b86523060248401528a604484015260648301906112bf565b51915afa50614169612e6c565b805181019280828486019503126104fa57828201519161418883610b30565b81810151906001600160401b0382116104fa57019084603f830112156104fa57838201516141b581610935565b956141c2835197886108e5565b8187528282850101116104fa578085925f94018388015e85010152156141e6575090565b9080519182156104fa5701fd5b5f80516020615102833981519152546001600160a01b0316330361421357565b60405163118cdaa760e01b8152336004820152602490fd5b8115612c5e570490565b91818302915f19818509938380861095039480860395146142b557848311156142a85790829109815f038216809204600280826003021880830282030280830282030280830282030280830282030280830282030280920290030293600183805f03040190848311900302920304170290565b8215600302601118614c59565b5050906109a1925061422b565b60405163a9059cbb60e01b60208201526001600160a01b039092166024830152604480830193909352918152610933916142fb826108ca565b614879565b90614309612c63565b82101561438a575f82815260096020908152604080832033845290915290205460ff166143785761433a3383612f56565b918215614366575f9081526009602090815260408083203384529091529020805460ff19166001179055565b6040516366c0bcbf60e11b8152600490fd5b604051630c8d9eab60e31b8152600490fd5b60405163d5b25b6360e01b8152600490fd5b600c54806143dc57505f5b6001600160d01b038116156143d757600d54811015612dc957600d5f525f80516020615122833981519152015490565b505f90565b805f1981011161074157600c5f527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c6015460301c6143a7565b600a548061445057505f5b6001600160d01b038116156143d757600b54811015612dc957600b5f525f80516020615142833981519152015490565b805f1981011161074157600a5f527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a7015460301c614420565b8054806144ae57505f5b6001600160d01b038116156136c4576001613e279201613a51565b5f1990808281011161074157825f5260205f2001015460301c614493565b9190600181018091116107415760018201809211610741576109a192614235565b600a54905f829160058411614545575b6145079350614fb0565b8061452a57505f5b6001600160d01b038116156143d757613e276109a191613a0d565b614539613dd661454092612677565b5460301c90565b61450f565b9192614550816149ef565b81039081116107415761450793600a5f5265ffffffffffff80835f805160206150e2833981519152015416908516105f1461458c5750916144fd565b929150614598906126a5565b906144fd565b600c54905f8291600584116145ef575b6145b8935061500d565b806145db57505f5b6001600160d01b038116156143d757613e276109a191613a2f565b614539613edb6145ea92612677565b6145c0565b91926145fa816149ef565b8103908111610741576145b893600c5f5265ffffffffffff80835f805160206150c2833981519152015416908516105f146146365750916145ae565b929150614642906126a5565b906145ae565b908154905f8291600584116146ab575b61466393508461506a565b8061468b57505f905b6001600160d01b038216156136c4576109a1916001613e279201613a51565b61453961469a6146a592612677565b835f5260205f200190565b9061466c565b91926146b6816149ef565b81039081116107415761466393855f5265ffffffffffff808360205f20015416908516105f146146e7575091614658565b9291506146f3906126a5565b90614658565b60405190614706826108af565b5f6020838281520152565b6147196146f9565b506147226146f9565b50600a54811015612dc95761474990600a5f525f805160206150e283398151915201613d83565b65ffffffffffff81511690602060018060d01b0391015116600b54811015612dc957600b5f525f8051602061514283398151915201546040519161478c836108af565b8252602082015290565b61479e6146f9565b506147a76146f9565b50600c54811015612dc9576147ce90600c5f525f805160206150c283398151915201613d83565b65ffffffffffff81511690602060018060d01b0391015116600d54811015612dc957600d5f525f8051602061512283398151915201546040519161478c836108af565b9061483a61483461485b926148246146f9565b5061482d6146f9565b5084613a51565b50613d83565b91600165ffffffffffff845116936020828060d01b03910151169101613a51565b9054906040519261486b846108af565b835260031b1c602082015290565b905f602091828151910182855af1156126f0575f513d6148ca57506001600160a01b0381163b155b6148a85750565b604051635274afe760e01b81526001600160a01b039091166004820152602490fd5b600114156148a1565b9190600181018091116107415760018201809211610741576148f6828285614235565b928215612c5e5709151581018091116107415790565b600c548061491d57505f905f905f90565b805f1981011161074157600c5f527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c6015460019165ffffffffffff82169160301c90565b600a548061497257505f905f905f90565b805f1981011161074157600a5f527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a7015460019165ffffffffffff82169160301c90565b8054806149c75750505f905f905f90565b5f19918183810111610741575f5260205f2001015460019165ffffffffffff82169160301c90565b60018111156109a157600181600160801b811015614b08575b614ab0614aa6614a9c614a92614a88614a7e614abc97600488600160401b614ab79a1015614afb575b640100000000811015614aee575b62010000811015614ae1575b610100811015614ad5575b6010811015614ac9575b1015614ac1575b60030260011c614a77818b61422b565b0160011c90565b614a77818a61422b565b614a77818961422b565b614a77818861422b565b614a77818761422b565b614a77818661422b565b809361422b565b821190565b900390565b60011b614a67565b811c9160021b91614a60565b60081c91811b91614a56565b60101c9160081b91614a4b565b60201c9160101b91614a3f565b60401c9160201b91614a31565b50600160401b9050608082901c614a08565b828210614b2657505090565b9091614b328184614f9b565b90600a5f5265ffffffffffff80835f805160206150e2833981519152015416908416105f14614b645750915b90614b1a565b92506001810180911115614b5e57612663565b828210614b8357505090565b9091614b8f8184614f9b565b90600c5f5265ffffffffffff80835f805160206150c2833981519152015416908416105f14614bc15750915b90614b77565b92506001810180911115614bbb57612663565b905b838310614be35750505090565b909192614bf08185614f9b565b90835f5265ffffffffffff808360205f20015416908416105f14614c185750925b9190614bd6565b93506001810180911115614c1157612663565b60ff5f805160206151a28339815191525460401c1615614c4757565b604051631afcd79f60e31b8152600490fd5b634e487b715f526020526024601cfd5b600c5490600160401b8210156108aa576001820180600c55821015612dc957600c5f52805160209091015160301b65ffffffffffff191665ffffffffffff91909116175f805160206150c283398151915290910155565b600a5490600160401b8210156108aa576001820180600a55821015612dc957600a5f52805160209091015160301b65ffffffffffff191665ffffffffffff91909116175f805160206150e283398151915290910155565b8054600160401b8110156108aa57614d3491600182018155613a51565b614d5f57815160209092015160301b65ffffffffffff191665ffffffffffff92909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b600c549192918015614e1957613edb614d8a91612677565b9081549165ffffffffffff90818416918316808311614e0757869203614dcf57614dc892509065ffffffffffff82549181199060301b169116179055565b60301c9190565b5050614e0290614dee614de0610926565b65ffffffffffff9092168252565b6001600160d01b0385166020820152614c69565b614dc8565b604051632520601d60e01b8152600490fd5b50614e3d90614e29614de0610926565b6001600160d01b0384166020820152614c69565b5f9190565b600a549192918015614ebd57613dd6614e5a91612677565b9081549165ffffffffffff90818416918316808311614e0757869203614e9857614dc892509065ffffffffffff82549181199060301b169116179055565b5050614e0290614ea9614de0610926565b6001600160d01b0385166020820152614cc0565b50614e3d90614ecd614de0610926565b6001600160d01b0384166020820152614cc0565b80549293928015614f7657614ef8614f0391612677565b825f5260205f200190565b9182549265ffffffffffff91828516928116808411614e0757879303614f425750614dc892509065ffffffffffff82549181199060301b169116179055565b915050614e0291614f62614f54610926565b65ffffffffffff9093168352565b6001600160d01b0386166020830152614d17565b5090614e3d91614f87614f54610926565b6001600160d01b0385166020830152614d17565b90808216911860011c81018091116107415790565b828210614fbc57505090565b9091614fc88184614f9b565b90600a5f5265ffffffffffff80835f805160206150e2833981519152015416908416105f14614ffa5750915b90614fb0565b92506001810180911115614ff457612663565b82821061501957505090565b90916150258184614f9b565b90600c5f5265ffffffffffff80835f805160206150c2833981519152015416908416105f146150575750915b9061500d565b9250600181018091111561505157612663565b905b8383106150795750505090565b9091926150868185614f9b565b90835f5265ffffffffffff808360205f20015416908416105f146150ae5750925b919061506c565b935060018101809111156150a75761266356fedf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7c65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a89016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300d7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db902dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a264697066735822122096afd643cffc15a05e275ebcf57e554339f04ba03ab6025ec642ba4ec611894864736f6c63430008190033","sourceMap":"199:2819:92:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;-1:-1:-1;;199:2819:92;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3551:47:19;;;:87;;;;199:2819:92;;;;;;;;;;3551:87:19;-1:-1:-1;;;1134:40:28;;-1:-1:-1;3551:87:19;;;199:2819:92;-1:-1:-1;199:2819:92;;;;;;;;-1:-1:-1;;199:2819:92;;;;;;;966:38:103;199:2819:92;;;;;;;;;-1:-1:-1;;199:2819:92;;;;;;;821:37:103;199:2819:92;;;;-1:-1:-1;;;;;199:2819:92;;;;;:::o;:::-;;;;;;-1:-1:-1;;199:2819:92;;;;;;;;;:::i;:::-;;;3361:103:26;;;:::i;:::-;-1:-1:-1;;;;;199:2819:92;;5525:21:102;5521:75;;5634:10;199:2819:92;;;;5606:15:103;199:2819:92;;;;;5606:33:103;;;:::i;:24::-;:33;:::i;:::-;5610:35:102;;5606:88;;1057:70:94;5173:21:103;;:::i;:::-;4803:22;;:::i;:::-;1057:70:94;;;:::i;:::-;5801:20:102;;;5797:82;;5904:43;;;;:::i;:::-;3426:1:26;;1949;-1:-1:-1;;;;;;;;;;;199:2819:92;3860:283:26;3426:1;199:2819:92;;;;;;;;;;;;;;;;;;5797:82:102;199:2819:92;;-1:-1:-1;;;;;;5844:24:102;;199:2819:92;;5844:24:102;5606:88;199:2819:92;;-1:-1:-1;;;5668:15:102;;199:2819:92;;5668:15:102;5521:75;199:2819:92;;-1:-1:-1;;;5569:16:102;;199:2819:92;;5569:16:102;199:2819:92;;;;;;-1:-1:-1;;199:2819:92;;;;;;-1:-1:-1;199:2819:92;-1:-1:-1;;;;;;;;;;;199:2819:92;;;4919:24:19;199:2819:92;-1:-1:-1;199:2819:92;4919:24:19;199:2819:92;;;;;;;;;;;;;-1:-1:-1;;199:2819:92;;;;;;;;-1:-1:-1;;;;;199:2819:92;;;;;;;;;;;;;;-1:-1:-1;;199:2819:92;;;;4084:14:103;;:::i;:::-;4112:10;;4108:65;;4190:17;199:2819:92;;;;;;;;;;;;;;;;4210:27:103;199:2819:92;;;4210:27:103;;:::i;:::-;199:2819:92;;;;;;;4189:60:103;199:2819:92;4189:60:103;;:::i;:::-;199:2819:92;;;;;;;;;;;;;;;;;;:::i;4108:65:103:-;199:2819:92;;-1:-1:-1;;;4145:17:103;;199:2819:92;;4145:17:103;199:2819:92;;;;-1:-1:-1;;;;;199:2819:92;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;199:2819:92;;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;199:2819:92;;;;;;:::i;:::-;-1:-1:-1;;;;;199:2819:92;;;;;;;;;;;;;;:::i;:::-;3361:103:26;;;;;:::i;:::-;1673:7:78;-1:-1:-1;;;;;199:2819:92;1659:10:78;:21;1655:71;;-1:-1:-1;;;;;;;;;;;199:2819:92;;;;;;;6431:44:22;;;;;199:2819:92;6427:105:22;;;;1809:204:78;6427:105:22;;199:2819:92;;-1:-1:-1;;;6498:23:22;;199:2819:92;;6498:23:22;6431:44;199:2819:92;;;;6450:25:22;;;-1:-1:-1;6431:44:22;;;;;1655:71:78;199:2819:92;;-1:-1:-1;;;1703:12:78;;199:2819:92;;1703:12:78;199:2819:92;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;199:2819:92;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;-1:-1:-1;;;;;199:2819:92;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;199:2819:92;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;199:2819:92;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;199:2819:92;;;;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;:::-;-1:-1:-1;;;;;199:2819:92;;;;;;-1:-1:-1;;199:2819:92;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;199:2819:92;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;-1:-1:-1;;199:2819:92;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;199:2819:92;;;;;;;5383:59:103;199:2819:92;;;;;;:::i;:::-;-1:-1:-1;;;;;199:2819:92;;;-1:-1:-1;199:2819:92;;;5383:15:103;199:2819:92;;;;;5383:59:103;:::i;:::-;199:2819:92;;;;;;;;;;;;-1:-1:-1;;199:2819:92;;;;;;655:32:78;-1:-1:-1;;;;;199:2819:92;;;;;;;;;;;;-1:-1:-1;;199:2819:92;;;;5350:25:19;199:2819:92;;;;;;;:::i;:::-;;-1:-1:-1;199:2819:92;-1:-1:-1;;;;;;;;;;;199:2819:92;;3202:4:19;4919:24;199:2819:92;-1:-1:-1;199:2819:92;4919:24:19;199:2819:92;3202:4:19;:::i;:::-;5350:25;:::i;:::-;199:2819:92;;;;;;;-1:-1:-1;;199:2819:92;;;;;;;;;:::i;:::-;966:10:24;-1:-1:-1;;;;;199:2819:92;;6441:34:19;6437:102;;6549:37;199:2819:92;;;6549:37:19;:::i;6437:102::-;199:2819:92;;-1:-1:-1;;;6498:30:19;;199:2819:92;;6498:30:19;199:2819:92;;;;;;-1:-1:-1;;199:2819:92;;;;;1524:22:102;199:2819:92;;;;1524:46:102;;;199:2819:92;;;;;;;;;;;1524:46:102;-1:-1:-1;1550:20:102;199:2819:92;;;;;1524:46:102;;199:2819:92;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;199:2819:92;;;;;;;;;:::i;:::-;3361:103:26;;:::i;:::-;3202:4:19;;:::i;:::-;-1:-1:-1;199:2819:92;;;;;;;;;;;9542:26:102;9538:76;;-1:-1:-1;;199:2819:92;;;;;-1:-1:-1;199:2819:92;;;;;;9665:27:102;;199:2819:92;;9665:27:102;1949:1:26;-1:-1:-1;;;;;;;;;;;199:2819:92;;9538:76:102;199:2819:92;;-1:-1:-1;;;9591:12:102;;199:2819:92;;9591:12:102;199:2819:92;;;;;;-1:-1:-1;;199:2819:92;;;;;;1718:31:103;199:2819:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3361:103:26;;:::i;:::-;-1:-1:-1;;;;;199:2819:92;;;;;3474:24:102;;3470:81;;-1:-1:-1;199:2819:92;;;;3565:55:102;;;199:2819:92;3561:118:102;;199:2819:92;;-1:-1:-1;;;3713:43:102;;;3750:4;3713:43;;;199:2819:92;;;;;;;;;;;;;;;;;;;;;;;;;3713:43:102;;;;;;;;;;-1:-1:-1;3713:43:102;;;199:2819:92;;3829:6:102;199:2819:92;;;3750:4:102;;3802:10;;3829:6;;:::i;:::-;-1:-1:-1;199:2819:92;;;3864:43:102;;;3750:4;3864:43;;;199:2819:92;;;;;;;;;;3864:43:102;199:2819:92;;;;;;3864:43:102;199:2819:92;;;;;3864:43:102;;;;;;;:59;:43;-1:-1:-1;3864:43:102;;;199:2819:92;3864:59:102;;;:::i;:::-;3938:20;;;3934:79;;199:2819:92;;;;;4027:64:102;;199:2819:92;4023:123:102;;5173:21:103;;199:2819:92;5173:21:103;4502:93:102;5173:21:103;;:::i;:::-;4803:22;4426:66:102;4803:22:103;;:::i;:::-;4349:67:102;390:70:94;;;;;:::i;:::-;837:15:68;4385:30:102;837:15:68;819:34;837:15;819:34;:::i;:::-;4385:30:102;;:::i;:::-;4349:67;;:::i;:::-;837:15:68;;4463:28:102;837:15:68;819:34;837:15;819:34;:::i;4463:28:102:-;4426:66;;:::i;:::-;-1:-1:-1;;;;;;;199:2819:92;;;;;;5606:15:103;199:2819:92;;;;;837:15:68;4553:41:102;837:15:68;5606:33:103;:24;819:34:68;837:15;819:34;:::i;:::-;-1:-1:-1;;;;;199:2819:92;;;;;;;5606:15:103;199:2819:92;;;;;;;5606:33:103;4553:41:102;:::i;:::-;4502:93;;:::i;:::-;-1:-1:-1;;199:2819:92;;;;;;;;;;;3802:10:102;;4611:62;;199:2819:92;;4611:62:102;3426:1:26;1949;-1:-1:-1;;;;;;;;;;;199:2819:92;3860:283:26;3426:1;199:2819:92;;;;;;;;;;;;;;;;;;;4023:123:102;199:2819:92;;-1:-1:-1;;;4114:21:102;;;4027:64;5173:21:103;4045:31:102;5173:21:103;;;:::i;4045:31:102:-;199:2819:92;;-1:-1:-1;4027:64:102;;3934:79;-1:-1:-1;199:2819:92;;-1:-1:-1;;;3981:21:102;;;3864:43;;;;;;-1:-1:-1;3864:43:102;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;:::i;3713:::-;3829:6;3713:43;;;;;;;;;;;;;;;:::i;:::-;;;;;3561:118;-1:-1:-1;199:2819:92;;-1:-1:-1;;;3643:25:102;;;3565:55;-1:-1:-1;3609:10:102;199:2819:92;;;;3586:22:102;199:2819:92;;;;;;;;3585:35:102;3565:55;;3470:81;199:2819:92;;-1:-1:-1;;;3521:19:102;;;199:2819:92;;;;;;-1:-1:-1;;199:2819:92;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;199:2819:92;;;;;1805:27:103;199:2819:92;;;;;;;;;;;;;;;-1:-1:-1;;199:2819:92;;;;;;1968:34:103;199:2819:92;;;;;;;;;;;;;;;-1:-1:-1;;199:2819:92;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;199:2819:92;;;;;;;;;:::i;:::-;;;;;4622:48:103;199:2819:92;;;:::i;:::-;4622:48:103;;:::i;199:2819:92:-;;;;;;-1:-1:-1;;199:2819:92;;;;;;;;;:::i;:::-;3361:103:26;;:::i;:::-;3202:4:19;;:::i;:::-;-1:-1:-1;199:2819:92;;;;;;;;;;;;;10370:24:102;10366:74;;-1:-1:-1;;199:2819:92;;;;;;;;-1:-1:-1;199:2819:92;;;;;;10489:25:102;;199:2819:92;;10489:25:102;3426:1:26;1949;-1:-1:-1;;;;;;;;;;;199:2819:92;3860:283:26;199:2819:92;;;;;;-1:-1:-1;;199:2819:92;;;;;-1:-1:-1;;;;;;;;;;;;;;;;199:2819:92;;;;;;;;;;;;;;-1:-1:-1;;199:2819:92;;;;;;;;;:::i;:::-;449:5:89;-1:-1:-1;;;;;199:2819:92;435:10:89;:19;431:71;;1113:52:92;;;:::i;:::-;199:2819;;;;;;;;;;;;;;;;;;;-1:-1:-1;;199:2819:92;431:71:89;199:2819:92;;-1:-1:-1;;;477:14:89;;199:2819:92;;477:14:89;199:2819:92;;;;;;-1:-1:-1;;199:2819:92;;;;;;:::i;:::-;;;;;;:::i;:::-;-1:-1:-1;;;;;199:2819:92;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;8837:64:22;;199:2819:92;;;;;;734:29:78;730:87;;199:2819:92;;;;;6431:44:22;;;;;199:2819:92;6427:105:22;;;6656:20;199:2819:92;6656:20:22;199:2819:92;1167:340:78;199:2819:92;;;;-1:-1:-1;;;;;199:2819:92;;;;;6575:22:22;-1:-1:-1;;;;;;;;;;;;;;199:2819:92;;;;;;;;;6575:22:22;1167:340:78;:::i;:::-;-1:-1:-1;;;;;;;;;;;199:2819:92;;-1:-1:-1;;199:2819:92;;;;;-1:-1:-1;;;;;199:2819:92;;;;;;;;;;;;;6656:20:22;;;;199:2819:92;6431:44:22;199:2819:92;;;;;-1:-1:-1;6450:25:22;6431:44;;;730:87:78;199:2819:92;;-1:-1:-1;;;786:20:78;;199:2819:92;;786:20:78;199:2819:92;;;;;;-1:-1:-1;;199:2819:92;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;-1:-1:-1;;199:2819:92;;;;;;-1:-1:-1;199:2819:92;2431:59:103;199:2819:92;;;;-1:-1:-1;199:2819:92;;;;;;;;;;;;;;-1:-1:-1;;199:2819:92;;;;3875:17:103;199:2819:92;;3895:30:103;199:2819:92;;;;;3895:14:103;;;:::i;:::-;199:2819:92;;;3895:30:103;;:::i;:::-;199:2819:92;;;;;;;3874:63:103;199:2819:92;3874:63:103;;:::i;:::-;199:2819:92;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;199:2819:92;;;;;;;;-1:-1:-1;;199:2819:92;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;199:2819:92;;;;;;;;;:::i;:::-;449:5:89;-1:-1:-1;;;;;199:2819:92;435:10:89;:19;431:71;;514:51:92;;;:::i;199:2819::-;;;;;;-1:-1:-1;;199:2819:92;;;;;;1200:42:103;-1:-1:-1;;;;;199:2819:92;;;;;;;;;;;;-1:-1:-1;;199:2819:92;;;;;;2136:32:103;199:2819:92;;;;;;;;;;;;;;;;;;-1:-1:-1;;199:2819:92;;;;2303:62:20;;:::i;:::-;-1:-1:-1;;;;;;;;;;;199:2819:92;;-1:-1:-1;;;;;;199:2819:92;;;;;;;-1:-1:-1;;;;;199:2819:92;3975:40:20;199:2819:92;;3975:40:20;199:2819:92;;;;;;;-1:-1:-1;;199:2819:92;;;;;;;;;;;:::i;:::-;3361:103:26;;:::i;:::-;7131:7:102;199:2819:92;7117:21:102;;-1:-1:-1;;;;;199:2819:92;;-1:-1:-1;;;;;199:2819:92;;;7117:21:102;:10;:21;7113:71;;7218:14;;:::i;:::-;7265:25;;;;:::i;:::-;7305:17;;;;:53;;;199:2819:92;7304:87:102;;;;199:2819:92;7300:146:102;;199:2819:92;5173:21:103;9310:48:102;5173:21:103;;;:::i;:::-;7540:17:102;7528:30;7540:17;;;:::i;:::-;199:2819:92;;7528:11:102;199:2819:92;;;;;;;7528:30:102;199:2819:92;;7572:29:102;;;;;7642:30;;;;;:::i;:::-;3066:5:63;;;3463;;;199:2819:92;3060:42:63;;7752:17:102;;;7748:384;;7568:1615;;;;;;;9197:17;9193:102;;7568:1615;199:2819:92;;;;;;;;;;;;;;;;;;;;;;;9310:48:102;3426:1:26;1949;-1:-1:-1;;;;;;;;;;;199:2819:92;3860:283:26;3426:1;199:2819:92;;;;;;;;;;;;;9193:102:102;-1:-1:-1;199:2819:92;9270:13:102;;199:2819:92;;9230:18:102;;199:2819:92;;-1:-1:-1;;;;;199:2819:92;;;9230:18:102;7556:1;199:2819:92;-1:-1:-1;;;;;199:2819:92;9270:13:102;;:::i;:::-;9193:102;;7748:384;8045:29;7813:50;7962:65;7813:50;7998:28;7914:29;7813:50;8057:16;7813:50;8077:40;7813:50;;;:::i;:::-;7914:29;;;:::i;:::-;837:15:68;819:34;837:15;819:34;:::i;:::-;7998:28:102;;:::i;8077:40::-;8057:16;;:::i;8045:29::-;199:2819:92;7748:384:102;;;;;;;7568:1615;8185:26;;;;199:2819:92;;7528:11:102;199:2819:92;;;;;;;8185:26:102;199:2819:92;8250:27:102;:45;:27;;;;;:::i;:45::-;3463:5:63;3066;;;3463;;;199:2819:92;3060:42:63;;8375:17:102;;8371:802;;7568:1615;;;;;;;;8371:802;9096:26;8436:50;;8537:53;8436:50;8637:54;8436:50;8637:29;8436:50;9125:33;8436:50;;;;:::i;:::-;8537:53;;;;;;:::i;:::-;8637:29;;;;:::i;:::-;:54;:::i;:::-;8714:33;;;;8710:194;;8371:802;8922:65;837:15:68;8958:28:102;9038:40;837:15:68;;;819:34;837:15;819:34;:::i;9038:40:102:-;9005:30;9017:17;;;:::i;9005:30::-;199:2819:92;9125:33:102;:::i;:::-;9096:26;199:2819:92;;7528:11:102;199:2819:92;;;;;;;9096:26:102;199:2819:92;8371:802:102;;;;;;;8710:194;8797:33;8771:59;8922:65;8797:33;;;9038:40;8797:33;;;:::i;:::-;8771:59;;:::i;:::-;8852:33;;-1:-1:-1;8852:33:102;;-1:-1:-1;8710:194:102;;7300:146;199:2819:92;;-1:-1:-1;;;7414:21:102;;199:2819:92;;7414:21:102;7304:87;7363:28;;;;7304:87;;7305:53;7341:17;;;;:::i;:::-;7326:32;;7305:53;;7113:71;199:2819:92;;-1:-1:-1;;;7161:12:102;;199:2819:92;;7161:12:102;199:2819:92;;;;;;-1:-1:-1;;199:2819:92;;;;4384:17:103;199:2819:92;;;;;;;4405:14:103;;;:::i;:::-;4384:17;199:2819:92;;;;;;;4404:36:103;199:2819:92;;;4404:36:103;;:::i;199:2819:92:-;;;;;;-1:-1:-1;;199:2819:92;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;199:2819:92;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;199:2819:92;2307:68:103;199:2819:92;;;;;-1:-1:-1;199:2819:92;;;;;;;;;;;;;;;;;-1:-1:-1;;199:2819:92;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;-1:-1:-1;;199:2819:92;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;199:2819:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6491:14:102;199:2819:92;;6491:14:102;;:::i;199:2819:92:-;;;;;4994:47:103;199:2819:92;;;:::i;:::-;4994:47:103;;:::i;199:2819:92:-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;3361:103:26;;:::i;:::-;10932:22:102;199:2819:92;;;;;10928:89:102;;199:2819:92;;-1:-1:-1;;;11032:49:102;;-1:-1:-1;;;;;199:2819:92;;;11032:49:102;;;199:2819:92;;;;;;;;;;;;;;;11032:49:102;11042:17;;;199:2819:92;11032:49:102;;;;;;;-1:-1:-1;11032:49:102;;;199:2819:92;11031:50:102;;11027:102;;199:2819:92;;-1:-1:-1;;;11143:34:102;;199:2819:92;;;;;11143:34:102;199:2819:92;11143:34:102;199:2819:92;;11143:34:102;;;;;;;-1:-1:-1;11143:34:102;;;199:2819:92;11189:4:102;;;199:2819:92;;11143:51:102;11139:107;;-1:-1:-1;10932:22:102;199:2819:92;;-1:-1:-1;;;;;199:2819:92;;;;-1:-1:-1;;;;;;199:2819:92;;;;;;;-1:-1:-1;;;199:2819:92;;;11334:24:102;-1:-1:-1;;11334:24:102;3426:1:26;1949;-1:-1:-1;;;;;;;;;;;199:2819:92;3860:283:26;11139:107:102;199:2819:92;;-1:-1:-1;;;11217:18:102;;;11143:34;;;;;;;-1:-1:-1;11143:34:102;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;11027:102;-1:-1:-1;199:2819:92;;-1:-1:-1;;;11104:14:102;;;11032:49;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;10928:89;199:2819:92;;-1:-1:-1;;;10977:29:102;;;199:2819:92;;;;;;-1:-1:-1;;199:2819:92;;;;;;1298:40:103;-1:-1:-1;;;;;199:2819:92;;;;;;;;;;;;-1:-1:-1;;199:2819:92;;;;1703:14:102;;:::i;:::-;5173:21:103;;:::i;:::-;199:2819:92;;;;1750:11:102;199:2819:92;;;;;;;;;;;;;1791:1:102;199:2819:92;;;;;;;;;1750:11:102;199:2819:92;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;199:2819:92;;;;-1:-1:-1;;;;;;;;;;;199:2819:92;;;-1:-1:-1;;;;;199:2819:92;;;;;;;;;;;;;;-1:-1:-1;;199:2819:92;;;;;;3901:31:19;199:2819:92;;;;;:::i;:::-;;;-1:-1:-1;199:2819:92;-1:-1:-1;;;;;;;;;;;199:2819:92;;;-1:-1:-1;199:2819:92;;;;;;;;;;;;;;;;;3901:31:19;199:2819:92;;;;;;;;;;;;;;;;-1:-1:-1;;199:2819:92;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;199:2819:92;5606:15:103;199:2819:92;;;5606:33:103;199:2819:92;-1:-1:-1;199:2819:92;5606:33:103;:::i;199:2819:92:-;;;;;;-1:-1:-1;;199:2819:92;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;199:2819:92;;;;-1:-1:-1;199:2819:92;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;416:25:82;;;;477:31;416:25;;:::i;:::-;199:2819:92;;;;;;;;;;477:31:82;;199:2819:92;;;;;;;;;;;:::i;:::-;477:31:82;199:2819:92;;477:31:82;;;;;;:::i;:::-;518:79;;;199:2819:92;518:79:82;;199:2819:92;;;;;;-1:-1:-1;;199:2819:92;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;199:2819:92;;;;;;;;;;;;;;;;;-1:-1:-1;;199:2819:92;;;;;;;1109:35:103;199:2819:92;;;;;;;;;-1:-1:-1;;199:2819:92;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;3361:103:26;;:::i;:::-;3202:4:19;;:::i;:::-;-1:-1:-1;;;;;199:2819:92;;;9907:21:102;;9903:75;;-1:-1:-1;199:2819:92;;;9992:22:102;199:2819:92;;;;;;;;;;;;;9992:41:102;9988:91;;-1:-1:-1;;;;;199:2819:92;;;;;3586:22:102;199:2819:92;;;;;10145:44:102;;;;10089:40;;:31;199:2819:92;;;;;;;;;;;;;;10089:40:102;199:2819:92;;;;;;;;;;;;;;;10145:44:102;;;;3426:1:26;1949;-1:-1:-1;;;;;;;;;;;199:2819:92;3860:283:26;9903:75:102;199:2819:92;;-1:-1:-1;;;9951:16:102;;199:2819:92;;9951:16:102;199:2819:92;;;;;;-1:-1:-1;;199:2819:92;;;;;2666:94:103;199:2819:92;;;;;:::i;:::-;;;-1:-1:-1;199:2819:92;2666:94:103;199:2819:92;;;-1:-1:-1;199:2819:92;;;;;;;;;;;;;;;;;2666:94:103;199:2819:92;;;;;;;;;;;;;-1:-1:-1;;199:2819:92;;;;;;2816:92:103;199:2819:92;;;;;:::i;:::-;;;-1:-1:-1;199:2819:92;2816:92:103;199:2819:92;;;-1:-1:-1;199:2819:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3361:103:26;;:::i;:::-;11459:20:102;199:2819:92;;;;;11455:85:102;;-1:-1:-1;;;;;199:2819:92;;;;;;11550:312:102;;199:2819:92;11459:20:102;199:2819:92;;-1:-1:-1;;;;199:2819:92;-1:-1:-1;;;199:2819:92;;;11872:27:102;11915:20;-1:-1:-1;11915:20:102;;3426:1:26;1949;-1:-1:-1;;;;;;;;;;;199:2819:92;3860:283:26;11550:312:102;199:2819:92;;-1:-1:-1;;;11597:45:102;;-1:-1:-1;;;;;199:2819:92;;11597:45:102;;;199:2819:92;;;11597:45:102;;199:2819:92;;;;;;11597:45:102;11607:15;;;199:2819:92;11597:45:102;;;;;;;-1:-1:-1;11597:45:102;;;11550:312;11596:46;;11592:104;;199:2819:92;;-1:-1:-1;;;11714:30:102;;;199:2819:92;11714:30:102;199:2819:92;11714:30:102;;;;;;;;-1:-1:-1;11714:30:102;;;11550:312;11756:4;;;199:2819:92;;11714:47:102;11710:109;;-1:-1:-1;11459:20:102;199:2819:92;;-1:-1:-1;;;;;;199:2819:92;-1:-1:-1;;;;;199:2819:92;;;;;;;;;11550:312:102;;;;;;11710:109;199:2819:92;;-1:-1:-1;;;11788:16:102;;;11714:30;;;;;;;-1:-1:-1;11714:30:102;;;;;;:::i;:::-;;;;;;11592:104;199:2819:92;;-1:-1:-1;;;11669:12:102;;199:2819:92;;11669:12:102;11597:45;;;;;;;;;;;;;;:::i;:::-;;;;11455:85;199:2819:92;;-1:-1:-1;;;11502:27:102;;;199:2819:92;;;;;;-1:-1:-1;;199:2819:92;;;;;;;;;:::i;:::-;;;3361:103:26;;;:::i;:::-;-1:-1:-1;;;;;199:2819:92;;;;;6112:23:102;;6108:79;;6273:6;199:2819:92;6206:13:102;;;;:::i;:::-;199:2819:92;;;-1:-1:-1;199:2819:92;;;;6273:6:102;:::i;:::-;199:2819:92;;;;;;;;;;;;6302:10:102;;6296:43;;199:2819:92;6296:43:102;1949:1:26;-1:-1:-1;;;;;;;;;;;199:2819:92;;;;;;;;;;;;;;6108:79:102;199:2819:92;;-1:-1:-1;;;6158:18:102;;199:2819:92;;6158:18:102;199:2819:92;;;;;;-1:-1:-1;;199:2819:92;;;;;;-1:-1:-1;199:2819:92;2546:64:103;199:2819:92;;;;-1:-1:-1;199:2819:92;;;;;;;;;;;;;;-1:-1:-1;;199:2819:92;;;;2058:22:103;199:2819:92;;;-1:-1:-1;;;;;199:2819:92;;;;;;;;;;;;;;-1:-1:-1;;199:2819:92;;;;;5173:21:103;;:::i;199:2819:92:-;;;;;;-1:-1:-1;;199:2819:92;;;;;;3361:103:26;;:::i;:::-;966:10:24;-1:-1:-1;199:2819:92;;;;;;;;;;1109:35:103;;199:2819:92;;4468:23:19;4464:108;;199:2819:92;;;;10692:21:102;10688:71;;199:2819:92;;10805:22:102;199:2819:92;;;;;;;;10805:22:102;1949:1:26;-1:-1:-1;;;;;;;;;;;199:2819:92;;4464:108:19;199:2819:92;;;;4514:47:19;;;;;;966:10:24;199:2819:92;4514:47:19;;199:2819:92;;;;;4514:47:19;199:2819:92;;;;;;-1:-1:-1;;199:2819:92;;;;;4803:22:103;;:::i;199:2819:92:-;;;;;;-1:-1:-1;;199:2819:92;;;;;;;;;:::i;:::-;3123:14:102;;:::i;:::-;3154:24;;;:::i;:::-;3181:29;;;;;:::i;:::-;199:2819:92;;;;;;;3235:1:102;199:2819:92;;;;;;;3213:33:102;;;:::i;:::-;199:2819:92;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;199:2819:92;;;;1888:24:103;199:2819:92;;;-1:-1:-1;;;;;199:2819:92;;;;;;;;;;;;;;-1:-1:-1;;199:2819:92;;;;5767:26:19;199:2819:92;;;;;;;:::i;:::-;;-1:-1:-1;199:2819:92;-1:-1:-1;;;;;;;;;;;199:2819:92;;3202:4:19;4919:24;199:2819:92;-1:-1:-1;199:2819:92;4919:24:19;199:2819:92;3202:4:19;:::i;:::-;5767:26;:::i;199:2819:92:-;;;;;;-1:-1:-1;;199:2819:92;;;;;;;;;;;;;-1:-1:-1;;;;;199:2819:92;;;;;;;;;;;;-1:-1:-1;;199:2819:92;;;;;;;675:39:103;199:2819:92;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;:::i;:::-;-1:-1:-1;;;;;449:5:89;199:2819:92;;435:10:89;:19;431:71;;1742:63:92;199:2819;;-1:-1:-1;199:2819:92;1742:15;199:2819;;;-1:-1:-1;199:2819:92;1742:63;:::i;199:2819::-;;;;;;-1:-1:-1;;199:2819:92;;;;;;;;;;;;;;;;;;;-1:-1:-1;;199:2819:92;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;-1:-1:-1;;;;;199:2819:92;;;;;;;;;;;;;;;:::i;:::-;1972:48:102;;199:2819:92;;;;;;;:::i;:::-;;;;;;;;;;;;;;2034:16:102;;2030:111;;199:2819:92;;2233:39:102;1057:70:94;2233:39:102;;4622:48:103;2196:77:102;2233:39;;;;2196:77;;:::i;:::-;2312:36;;4994:47:103;199:2819:92;2312:36:102;;;4994:47:103;;:::i;:::-;2389:37:102;;;4622:48:103;;:::i;:::-;1057:70:94;;:::i;:::-;199:2819:92;;;;;;;;;;;;;2030:111:102;2089:41;;;;-1:-1:-1;199:2819:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;4622:48:103;199:2819:92;2196:77:102;199:2819:92;1057:70:94;199:2819:92;;;:::i;:::-;;;;;2030:111:102;;;;;199:2819:92;;;;;;-1:-1:-1;;199:2819:92;;;;2357:1:20;199:2819:92;;;;;:::i;:::-;2303:62:20;;:::i;:::-;2357:1;:::i;199:2819:92:-;;;;;;-1:-1:-1;;199:2819:92;;;;;;;;;:::i;:::-;;;3361:103:26;;:::i;:::-;-1:-1:-1;;;;;199:2819:92;;4890:21:102;4886:75;;4975:11;;4971:73;;845:69:94;4803:22:103;;:::i;:::-;5173:21;;:::i;:::-;845:69:94;;;:::i;:::-;5180:10:102;199:2819:92;;;;5606:15:103;199:2819:92;;;;;5180:10:102;;;5606:33:103;;;:::i;:::-;5150:41:102;;5146:96;;5267:40;;;;;:::i;5146:96::-;199:2819:92;;-1:-1:-1;;;5214:17:102;;199:2819:92;;5214:17:102;4971:73;199:2819:92;;-1:-1:-1;;;5009:24:102;;199:2819:92;;5009:24:102;199:2819:92;;;;;;-1:-1:-1;;199:2819:92;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;199:2819:92;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;7556:1:102;199:2819:92;;;;;;;:::o;:::-;;;;;;;;;;:::o;5256:193:103:-;-1:-1:-1;;;;;199:2819:92;-1:-1:-1;199:2819:92;;;5383:15:103;199:2819:92;;;;;5383:59:103;;5256:193;;5383:59;:::i;199:2819:92:-;;;;;;;;;;;:::o;:::-;;;;;;;;;;1167:340:78;;13510:30:102;1167:340:78;199:2819:92;1167:340:78;6893:76:22;;:::i;:::-;;;:::i;:::-;1949:1:26;-1:-1:-1;;;;;;;;;;;199:2819:92;-1:-1:-1;;;;;199:2819:92;;;;1376:73:78;;1167:340;199:2819:92;;;;:::i;:::-;13510:30:102;199:2819:92;;;13510:30:102;;;;;;:::i;:::-;199:2819:92;;;;-1:-1:-1;;;;;199:2819:92;13555:31:102;13551:88;;13653:20;;;;199:2819:92;;;;;;;;;;13653:25:102;13649:85;;13748:29;;;199:2819:92;;13748:29:102;;199:2819:92;13748:43:102;;-1:-1:-1;;;;;199:2819:92;;;13748:43:102;;13744:943;;1167:340:78;199:2819:92;;;15647:32:102;199:2819:92;14817:36:102;199:2819:92;;;14697:30:102;199:2819:92;;;;;;;;;;;;1398:1:78;199:2819:92;;-1:-1:-1;;;;;;199:2819:92;;;;;;-1:-1:-1;;;;;199:2819:92;;;;;;;;14697:30:102;13510;14747:13;;199:2819:92;;;;-1:-1:-1;;;;;;199:2819:92;-1:-1:-1;;;;;199:2819:92;;;;;;;;;14771:36:102;819:34:68;837:15;819:34;:::i;:::-;1949:1:26;199:2819:92;;-1:-1:-1;;;;199:2819:92;;;;;;-1:-1:-1;;;199:2819:92;;;;;;;;14771:36:102;199:2819:92;;;;;;1949:1:26;199:2819:92;;-1:-1:-1;;;;;199:2819:92;;;;;;-1:-1:-1;;;;;;199:2819:92;;;;;;;;14817:36:102;14864:42;199:2819:92;14883:23:102;;;199:2819:92;;;;;;;;;1398:1:78;199:2819:92;;;;;;;1398:1:78;199:2819:92;;14864:42:102;14917:38;199:2819:92;14934:21:102;;;199:2819:92;;;;;;;1398:1:78;199:2819:92;;;;;;;;;;;;1398:1:78;199:2819:92;;14917:38:102;14965:34;14980:19;;;199:2819:92;14965:34:102;199:2819:92;;14965:34:102;199:2819:92;-1:-1:-1;;;;;199:2819:92;;;;;;;15010:135:102;;1167:340:78;-1:-1:-1;15158:36:102;;;199:2819:92;-1:-1:-1;;;;;199:2819:92;;;;15154:157:102;;1167:340:78;-1:-1:-1;15324:35:102;;;199:2819:92;-1:-1:-1;;;;;199:2819:92;;;;15320:153:102;;1167:340:78;-1:-1:-1;15486:34:102;;;199:2819:92;-1:-1:-1;;;;;199:2819:92;;;;15482:152:102;;1167:340:78;-1:-1:-1;15647:32:102;199:2819:92;-1:-1:-1;;;;;199:2819:92;;;;;;;15643:145:102;;1167:340:78;:::o;15643:145:102:-;15709:68;;;:::i;:::-;;1167:340:78:o;15482:152:102:-;15550:73;;;:::i;:::-;;15482:152;;;15320:153;15389:73;;;:::i;:::-;;15320:153;;;15154:157;15224:76;;;:::i;:::-;;15154:157;;;15010:135;15073:61;;;:::i;:::-;;15010:135;;;13744:943;13811:36;;;199:2819:92;13811:50:102;;-1:-1:-1;;;;;199:2819:92;;;13811:50:102;;13807:405;;13744:943;14230:34;;;199:2819:92;14230:48:102;;-1:-1:-1;;;;;199:2819:92;;;14230:48:102;13744:943;14226:451;14302:21;;;199:2819:92;;14302:21:102;;14351:19;;;199:2819:92;14351:24:102;:74;;;14298:365;14347:150;;14298:365;;199:2819:92;15647:32:102;14298:365;14817:36;199:2819:92;;14298:365:102;;14226:451;;;;;;;13744:943;;14347:150;199:2819:92;-1:-1:-1;;;14460:14:102;;;;;14351:74;-1:-1:-1;14379:32:102;;;199:2819:92;14379:46:102;;-1:-1:-1;;;;;199:2819:92;;;14379:46:102;;14351:74;;14298:365;14525:19;;;199:2819:92;14525:24:102;;;:74;;;14298:365;14521:142;;14298:365;;199:2819:92;15647:32:102;14298:365;14817:36;199:2819:92;;14298:365:102;;;14525:74;-1:-1:-1;14553:32:102;;;199:2819:92;14553:46:102;;-1:-1:-1;;;;;199:2819:92;;;14553:46:102;;;14525:74;;13807:405;13885:23;;;199:2819:92;;13885:23:102;;13936:35;;;199:2819:92;13936:49:102;;-1:-1:-1;;;;;199:2819:92;;;13936:49:102;13807:405;13932:125;199:2819:92;-1:-1:-1;;;14020:14:102;;;;;13881:317;14085:35;;;199:2819:92;14085:49:102;;-1:-1:-1;;;;;199:2819:92;;;14085:49:102;14081:117;13807:405;14081:117;199:2819:92;-1:-1:-1;;;14165:14:102;;;;;13649:85;199:2819:92;;-1:-1:-1;;;13701:22:102;;;;;13551:88;199:2819:92;;-1:-1:-1;;;13609:19:102;;;;;1376:73:78;6961:1:22;6893:76;;;:::i;:::-;;;:::i;6961:1::-;1376:73:78;;;2492:191:102;-1:-1:-1;;;;;199:2819:92;-1:-1:-1;199:2819:92;;;5606:15:103;199:2819:92;;;;;5606:33:103;;;:::i;:::-;5173:21;;:::i;:::-;4803:22;;:::i;:::-;199:2819:92;1884:1:94;199:2819:92;;;;;;;1884:1:94;199:2819:92;;;;;;;9478:25:63;;;:::i;199:2819:92:-;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;578:368::-;;;735:95;711:157;578:368;199:2819;;;;;766:63;;;;;;;;199:2819;766:63;;;199:2819;766:63;;;;;;:::i;:::-;735:95;:::i;:::-;766:63;199:2819;;;711:157;;;;;;:::i;:::-;879:61;;;578:368;:::o;879:61::-;199:2819;;;;;;;;766:63;912:17;;199:2819;766:63;912:17;;;;;:::i;199:2819::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;3612:132:103:-;819:34:68;837:15;819:34;:::i;:::-;3683:54:103;3703:17;199:2819:92;3684:36:103;199:2819:92;;;;;;;3684:36:103;;:::i;:::-;199:2819:92;;;3683:54:103;;:::i;:::-;199:2819:92;3612:132:103;:::o;3313:244::-;3418:17;199:2819:92;;;;;;;;;;;;;;3406:29:103;3402:85;;3503:47;3504:29;;;;:::i;3402:85::-;199:2819:92;;-1:-1:-1;;;3458:18:103;;;;;3361:103:26;;;;:::i;:::-;199:2819:92;;-1:-1:-1;;;;;199:2819:92;;;6521:23:102;;6517:79;;6650:11;;6646:70;;199:2819:92;6742:10:102;;;;;;-1:-1:-1;199:2819:92;;6887:49:102;;199:2819:92;;;;6864:6:102;;199:2819:92;;6821:18:102;;199:2819:92;;-1:-1:-1;;;;;199:2819:92;;;6821:18:102;6864:6;:::i;:::-;6887:49;199:2819:92;;6898:10:102;;;;6887:49;;;:::i;:::-;;;;3426:1:26;;1949;-1:-1:-1;;;;;;;;;;;199:2819:92;3860:283:26;6754:3:102;6790:9;6773:27;199:2819:92;6790:9:102;6783:17;6790:9;;;;;:::i;:::-;199:2819:92;6783:17:102;:::i;6773:27::-;6754:3;199:2819:92;6731:9:102;;6646:70;199:2819:92;;-1:-1:-1;;;6684:21:102;;;;;199:2819:92;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;199:2819:92;;;;;;;;;;;;;;;;;;;;;;:::o;1178:370::-;;;1336:96;1312:158;1178:370;199:2819;;;;;1367:64;;;;;;;;199:2819;1367:64;;;199:2819;1367:64;;;;;;:::i;199:2819::-;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;199:2819:92;;;;:::o;:::-;;;:::o;1818:400::-;199:2819;;-1:-1:-1;;;2026:75:92;;;;-1:-1:-1;;;;;199:2819:92;;;2026:75;;;199:2819;;;;;;;;;;;;;2026:75;;199:2819;;1818:400;1971:169;;1995:107;;2026:75;199:2819;2026:75;:::i;3405:215:20:-;-1:-1:-1;;;;;199:2819:92;;;;3489:22:20;;3485:91;;-1:-1:-1;;;;;;;;;;;199:2819:92;;-1:-1:-1;;;;;;199:2819:92;;;;;;;;3975:40:20;-1:-1:-1;;3975:40:20;3405:215::o;3485:91::-;199:2819:92;;-1:-1:-1;;;3534:31:20;;3509:1;3534:31;;;199:2819:92;;;3534:31:20;2731:227:102;;2871:34;2731:227;199:2819:92;-1:-1:-1;199:2819:92;2871:18:102;199:2819:92;;;-1:-1:-1;199:2819:92;;;;;;;;;;;;;;;;;2871:34:102;199:2819:92;;-1:-1:-1;199:2819:92;2907:11:102;199:2819:92;;;-1:-1:-1;199:2819:92;;2927:16:102;199:2819:92;;;-1:-1:-1;199:2819:92;;;1884:1:94;199:2819:92;;;;;;;1884:1:94;199:2819:92;;;;;;;9478:25:63;;;:::i;2224:792:92:-;;;;;2579:34;2416:45;2357:12;199:2819;2416:45;;;:::i;:::-;2503:33;;;;;:::i;:::-;2579:34;;:::i;:::-;199:2819;;;2628:30;;;:61;;;2224:792;2628:93;;;;2224:792;2624:386;;2224:792;;;:::o;2624:386::-;199:2819;;;;2744:255;199:2819;;;;;;;;;;:::i;:::-;;;2772:213;;;199:2819;;;;2772:213;;199:2819;;;;;;2744:255;;;2772:213;2744:255;;;199:2819;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;2628:93::-;199:2819;;;2693:28;;2628:93;;:61;199:2819;;;2662:27;;2628:61;;3470:384:26;-1:-1:-1;;;;;;;;;;;1991:1:26;199:2819:92;;3670:20:26;3666:88;;1991:1;199:2819:92;;3470:384:26:o;3666:88::-;199:2819:92;;-1:-1:-1;;;3713:30:26;;;;;11948:968:102;12135:10;199:2819:92;;;;5606:15:103;199:2819:92;;;;;;11948:968:102;;;819:34:68;837:15;819:34;:::i;:::-;12135:10:102;199:2819:92;;;;5606:15:103;199:2819:92;;;;;5606:33:103;;;:::i;:::-;199:2819:92;;;;;;;;;12119:93:102;12835:74;12119:93;;;12660:30;12119:93;;:::i;:::-;837:15:68;;12222:67:102;819:34:68;837:15;819:34;:::i;:::-;12259:29:102;4803:22:103;;;:::i;12222:67:102:-;837:15:68;;12299:68:102;819:34:68;837:15;819:34;:::i;:::-;12335:31:102;5173:21:103;;;:::i;12299:68:102:-;12394:14;;12769:34;12394:14;12769:25;12394:18;:14;;:::i;:::-;:18;:::i;:::-;12726:33;12445:18;;199:2819:92;;7528:11:102;199:2819:92;;;;;;;12445:18:102;199:2819:92;12502:23:102;;199:2819:92;;12502:16:102;199:2819:92;;;;;;;12502:23:102;199:2819:92;390:70:94;;;;;:::i;:::-;12660:30:102;;;;;;:::i;:::-;12639:18;;199:2819:92;;7528:11:102;199:2819:92;;;;;;;12639:18:102;199:2819:92;12726:33:102;:::i;:::-;12700:23;;199:2819:92;;12502:16:102;199:2819:92;;;;;;;12700:23:102;199:2819:92;;;12769:18:102;199:2819:92;;;;;;;12769:25:102;199:2819:92;;;;;;;;;;;;;;;;12769:34:102;:50;199:2819:92;;;12769:50:102;:::i;:::-;199:2819:92;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;199:2819:92;;;;12135:10:102;;199:2819:92;;12835:74:102;11948:968::o;14296:213:64:-;199:2819:92;14374:24:64;;;;14370:103;;199:2819:92;14296:213:64;:::o;14370:103::-;199:2819:92;;;;14421:41:64;;;;;;14452:2;14421:41;;;199:2819:92;;;;;14421:41:64;1809:204:78;199:2819:92;1809:204:78;199:2819:92;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::o;7558:604:93:-;;199:2819:92;;7686:17:93;7682:83;;199:2819:92;7789:27:93;199:2819:92;7789:27:93;199:2819:92;;7789:27:93;;;;;;:::i;:::-;7860:14;;;:::i;:::-;199:2819:92;;;;;;;;;;;;;;;;7888:22:93;;;7884:77;;7975:21;-1:-1:-1;7975:84:93;;;;7558:604;7971:139;;;;8127:28;;;;:::i;7971:139::-;7789:27;8082:17;;;199:2819:92;8075:24:93;:::o;7975:84::-;199:2819:92;;;8009:16:93;4622:13:103;199:2819:92;8009:16:93;:::i;:::-;199:2819:92;;;8001:24:93;:57;;;;;7975:84;;;;;;;8001:57;8029:29;8038:8;;;8029:18;8038:8;8029:23;8038:8;;:::i;:::-;8029:18;:::i;:23::-;199:2819:92;;;;8029:29:93;;8001:57;;;;7884:77;7933:17;;;7789:27;7933:17;;;199:2819:92;7926:24:93;:::o;7682:83::-;7726:28;;;;:::i;7558:604::-;;199:2819:92;;7686:17:93;7682:83;;199:2819:92;7789:27:93;199:2819:92;7789:27:93;199:2819:92;;7789:27:93;;;;;;:::i;:::-;7860:14;;;:::i;:::-;199:2819:92;;;;;;;;;;;;;;;;7888:22:93;;;7884:77;;7975:21;-1:-1:-1;7975:84:93;;;;7558:604;7971:139;;;;8127:28;;;;:::i;7975:84::-;199:2819:92;;;8009:16:93;4994:12:103;199:2819:92;8009:16:93;:::i;:::-;199:2819:92;;;8001:24:93;:57;;;;;7975:84;;;;;;;8001:57;8029:29;8038:8;;;8029:18;8038:8;8029:23;8038:8;;:::i;:::-;8029:18;:::i;:29::-;;8001:57;;;;7682:83;7726:28;;;;:::i;7558:604::-;;199:2819:92;;7686:17:93;7682:83;;199:2819:92;7789:27:93;199:2819:92;7789:27:93;199:2819:92;;7789:27:93;;;;;;:::i;:::-;7860:14;;;;;:::i;:::-;199:2819:92;;;;;;;;;;;;;;;;7888:22:93;;;7884:77;;7975:21;-1:-1:-1;7975:84:93;;;;7558:604;7971:139;;;;8127:28;;;;:::i;7971:139::-;8082:17;;7789:27;8082:17;199:2819:92;8075:24:93;:::o;7975:84::-;199:2819:92;;;8009:16:93;199:2819:92;;8009:16:93;:::i;:::-;199:2819:92;;;8001:24:93;:57;;;;;7975:84;;;;;;;8001:57;8029:29;8038:8;;;8029:18;8038:8;8029:23;8038:8;;:::i;:::-;8029:18;;:::i;:29::-;;8001:57;;;;7884:77;7933:17;;;;;7789:27;7933:17;199:2819:92;7926:24:93;:::o;7682:83::-;7726:28;;;;:::i;4148:103:19:-;966:10:24;-1:-1:-1;199:2819:92;;;;;;;;;675:39:103;;199:2819:92;;3901:31:19;199:2819:92;;4468:23:19;4464:108;;4148:103;:::o;:::-;966:10:24;-1:-1:-1;199:2819:92;;;;;;;;;966:38:103;;199:2819:92;;3901:31:19;199:2819:92;4148:103:19;966:10:24;-1:-1:-1;199:2819:92;;;;;;;;;821:37:103;;199:2819:92;;3901:31:19;199:2819:92;4148:103:19;-1:-1:-1;199:2819:92;;;-1:-1:-1;;;;;;;;;;;199:2819:92;;;;;;;;966:10:24;199:2819:92;;;;;;;;;3901:31:19;199:2819:92;7270:387:19;-1:-1:-1;;;;;199:2819:92;;1398:1:78;199:2819:92;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2887:71:19;199:2819:92;;;;1398:1:78;199:2819:92;;;;;;;;;;;-1:-1:-1;;;;;199:2819:92;;;;;;;;;;-1:-1:-1;;199:2819:92;7509:4:19;199:2819:92;;;966:10:24;;-1:-1:-1;;;;;199:2819:92;-1:-1:-1;7532:40:19;-1:-1:-1;;7532:40:19;7509:4;7586:11;:::o;7432:219::-;7628:12;;1398:1:78;7628:12:19;:::o;7270:387::-;-1:-1:-1;;;;;199:2819:92;;-1:-1:-1;199:2819:92;;;;;;;;;675:39:103;;-1:-1:-1;;;;;;;;;;;2887:71:19;199:2819:92;;3901:31:19;199:2819:92;;;;-1:-1:-1;199:2819:92;;;;;;;;;;;-1:-1:-1;;;;;199:2819:92;;;;;;;;;;-1:-1:-1;;199:2819:92;7509:4:19;199:2819:92;;;966:10:24;;-1:-1:-1;;;;;199:2819:92;;7532:40:19;-1:-1:-1;;7532:40:19;7509:4;7586:11;:::o;7432:219::-;7628:12;;;-1:-1:-1;7628:12:19;:::o;7270:387::-;-1:-1:-1;;;;;199:2819:92;;-1:-1:-1;199:2819:92;;;;;;;;;821:37:103;;-1:-1:-1;;;;;;;;;;;2887:71:19;199:2819:92;;3901:31:19;199:2819:92;7270:387:19;-1:-1:-1;;;;;199:2819:92;;-1:-1:-1;199:2819:92;;;;;;;;;966:38:103;;-1:-1:-1;;;;;;;;;;;2887:71:19;199:2819:92;;3901:31:19;199:2819:92;7270:387:19;-1:-1:-1;;;;;199:2819:92;;-1:-1:-1;199:2819:92;;;;;;;;;1109:35:103;;-1:-1:-1;;;;;;;;;;;2887:71:19;199:2819:92;;3901:31:19;199:2819:92;7270:387:19;-1:-1:-1;199:2819:92;;;-1:-1:-1;;;;;;;;;;;199:2819:92;;;;;;;;-1:-1:-1;;;;;199:2819:92;;;;;;;;;;;;3901:31:19;199:2819:92;7892:388:19;-1:-1:-1;199:2819:92;;;-1:-1:-1;;;;;;;;;;;199:2819:92;;;;;;;;-1:-1:-1;;;;;199:2819:92;;;;;;;;;;;;;;;;-1:-1:-1;199:2819:92;;;;;;;;;;;-1:-1:-1;;;;;199:2819:92;;;;;;;;;;-1:-1:-1;;199:2819:92;;;966:10:24;;-1:-1:-1;;;;;199:2819:92;;8155:40:19;-1:-1:-1;;8155:40:19;199:2819:92;8209:11:19;:::o;1670:188:50:-;199:2819:92;;-1:-1:-1;;;1797:53:50;;;;-1:-1:-1;;;;;199:2819:92;;;1797:53:50;;;199:2819:92;;;;;;;;;;;;;;;;;1797:53:50;;;199:2819:92;;;;;;;-1:-1:-1;;;;;199:2819:92;;;;;1797:53:50;199:2819:92;;;1797:53:50;:::i;199:2819:92:-;9219:12:93;199:2819:92;;;;;;9219:12:93;-1:-1:-1;199:2819:92;-1:-1:-1;;;;;;;;;;;199:2819:92;;-1:-1:-1;199:2819:92;:::o;:::-;9219:12:93;199:2819:92;;;;;;9219:12:93;-1:-1:-1;199:2819:92;-1:-1:-1;;;;;;;;;;;199:2819:92;;-1:-1:-1;199:2819:92;:::o;:::-;;;;;;;;-1:-1:-1;199:2819:92;;-1:-1:-1;199:2819:92;;;-1:-1:-1;199:2819:92;:::o;:::-;6360:12:93;199:2819:92;-1:-1:-1;;;199:2819:92;;;;;;;;;6360:12:93;199:2819:92;;;;;;6360:12:93;-1:-1:-1;199:2819:92;-1:-1:-1;;;;;;;;;;;199:2819:92;;:::o;:::-;6360:12:93;199:2819:92;-1:-1:-1;;;199:2819:92;;;;;;;;;6360:12:93;199:2819:92;;;;;;6360:12:93;-1:-1:-1;199:2819:92;-1:-1:-1;;;;;;;;;;;199:2819:92;;:::o;:::-;;;;;-1:-1:-1;;;199:2819:92;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6246:584:93;;;;6360:12;199:2819:92;;;6360:24:93;;6356:75;;6246:584;6474:30;;;:::i;:::-;199:2819:92;;;;;;6578:12:93;;;:::i;:::-;6604:24;;;;6246:584;-1:-1:-1;6600:188:93;;;-1:-1:-1;;;199:2819:92;;;;;;;;;-1:-1:-1;199:2819:92;;;-1:-1:-1;199:2819:92;;;;;;6798:25:93;199:2819:92;6246:584:93:o;6600:188::-;8310:38:66;;-1:-1:-1;;;;;199:2819:92;;-1:-1:-1;8310:38:66;:::i;:::-;6753:24:93;;;;;:::i;:::-;6798:25;6246:584;:::o;6604:24::-;199:2819:92;;;;;;6614:14:93;;-1:-1:-1;6604:24:93;;;6356:75;-1:-1:-1;;;199:2819:92;;;;;;;;;;;;;;;;-1:-1:-1;199:2819:92;;;;-1:-1:-1;;;;;;;;;;;199:2819:92;;6356:75:93;;;6246:584;;;;6360:12;199:2819:92;;;6360:24:93;;6356:75;;6246:584;6474:30;;;:::i;:::-;199:2819:92;;;;;;6578:12:93;;;:::i;:::-;6604:24;;;;6246:584;-1:-1:-1;6600:188:93;;;-1:-1:-1;;;199:2819:92;;;;;;;;;-1:-1:-1;199:2819:92;;;-1:-1:-1;199:2819:92;;;;;;6798:25:93;199:2819:92;6246:584:93:o;6600:188::-;8310:38:66;;-1:-1:-1;;;;;199:2819:92;;-1:-1:-1;8310:38:66;:::i;:::-;6753:24:93;;;;;:::i;6604:::-;199:2819:92;;;;;;6614:14:93;;-1:-1:-1;6604:24:93;;;6356:75;-1:-1:-1;;;199:2819:92;;;;;;;;;;;;;;;;-1:-1:-1;199:2819:92;;;;-1:-1:-1;;;;;;;;;;;199:2819:92;;6356:75:93;;;6246:584;;;;;6360:12;;;199:2819:92;;;6360:24:93;;6356:75;;6246:584;6474:30;;;;;:::i;:::-;199:2819:92;;;;;;6578:12:93;;;;:::i;:::-;6604:24;;;;6246:584;-1:-1:-1;6600:188:93;;;-1:-1:-1;;;;;199:2819:92;;;;;;;6644:21:93;;;:29;:21;;:::i;6600:188::-;6753:24;;199:2819:92;;8310:38:66;;-1:-1:-1;;;;;199:2819:92;;;;;8310:38:66;:::i;:::-;6753:24:93;;;:::i;6604:::-;199:2819:92;;;;;;6614:14:93;;-1:-1:-1;6604:24:93;;;6356:75;-1:-1:-1;;;199:2819:92;;;;;;6360:12:93;199:2819:92;;;;;;;:::i;:::-;;;;;;;;;;;;;;6356:75:93;;;199:2819:92;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;8406:869:93:-;1113:13:92;199:2819;8620:15:93;8578:11;8645:18;8678:7;8684:1;8678:7;;8674:241;;8406:869;8939:60;;;;:::i;:::-;9014:8;;9010:62;;199:2819:92;9130:48:93;9170:7;;;:::i;:::-;1113:13:92;13267:109:93;;-1:-1:-1;;;;;;;;;;;13267:109:93;13089:293;;9130:48;199:2819:92;:::i;:::-;;9252:15:93;9259:7;199:2819:92;9219:31:93;199:2819:92;9232:17:93;199:2819:92;;;;;;;;9232:17:93;;199:2819:92;-1:-1:-1;;;;;199:2819:92;;;;9219:31:93;:::i;:::-;199:2819:92;;;;;;;;;9259:7:93;;:::i;:::-;199:2819:92;;;;9252:15:93;9176:1;;9188:80;;8406:869::o;9010:62::-;9038:23;8578:11;9038:23;8578:11;9038:23;8578:11;9038:23;8578:11;9038:23;:::o;8674:241::-;8721:14;;;;;:::i;:::-;199:2819:92;;;;;;;1113:13;8578:11:93;13267:109;-1:-1:-1;;;;;;;;;;;13267:109:93;;199:2819:92;8939:60:93;;13267:109;199:2819:92;;;;;;;8753:55:93;199:2819:92;;;8828:10:93;8749:156;8674:241;;8749:156;8883:7;;;;;;:::i;:::-;8749:156;8674:241;;8406:869;514:12:92;199:2819;8620:15:93;8578:11;8645:18;8678:7;8684:1;8678:7;;8674:241;;8406:869;8939:60;;;;:::i;:::-;9014:8;;9010:62;;199:2819:92;9130:48:93;9170:7;;;:::i;:::-;514:12:92;13267:109:93;;-1:-1:-1;;;;;;;;;;;13267:109:93;13089:293;;199:2819:92;;9252:15:93;9259:7;199:2819:92;9219:31:93;199:2819:92;9232:17:93;199:2819:92;;;;;;;;9219:31:93;:::i;8674:241::-;8721:14;;;;;:::i;:::-;199:2819:92;;;;;;;514:12;8578:11:93;13267:109;-1:-1:-1;;;;;;;;;;;13267:109:93;;199:2819:92;8939:60:93;;13267:109;199:2819:92;;;;;;;8753:55:93;199:2819:92;;;8828:10:93;8749:156;8674:241;;8749:156;8883:7;;;;;;:::i;:::-;8749:156;8674:241;;8406:869;;;199:2819:92;;8620:15:93;8578:11;8645:18;8678:7;8684:1;8678:7;;8674:241;;8406:869;8939:60;;;;;:::i;:::-;9014:8;;;9010:62;;9252:15;9259:7;199:2819:92;9219:31:93;199:2819:92;9130:48:93;9170:7;;;:::i;:::-;9130:48;13267:109;;;;;;13089:293;;199:2819:92;;9176:1:93;199:2819:92;9232:17:93;199:2819:92;;;;;;;;9232:17:93;;199:2819:92;-1:-1:-1;;;;;199:2819:92;;;;9219:12:93;;:31;:::i;9010:62::-;8578:11;;-1:-1:-1;8578:11:93;;-1:-1:-1;8578:11:93;;;;9038:23::o;8674:241::-;8721:14;;;;;:::i;:::-;199:2819:92;;;;;;;8939:60:93;13267:109;;8578:11;13267:109;8753:55;8759:49;13267:109;;8578:11;13267:109;;199:2819:92;;;;;;8753:55:93;199:2819:92;;;8753:55:93;13267:109;;;8828:10;8749:156;8674:241;;8749:156;8883:7;;;;;;:::i;:::-;8749:156;8674:241;;199:2819:92;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;:::o;525:595:89:-;;-1:-1:-1;199:2819:92;;;;;716:88:89;;;;;199:2819:92;716:88:89;;;;;;;;;783:4;716:88;;;199:2819:92;;;;;;;;;;;:::i;716:88:89:-;698:107;;;;;;;:::i;:::-;199:2819:92;;857:45:89;;;;;;;;199:2819:92;;;;;857:45:89;;;199:2819:92;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;199:2819:92;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;199:2819:92;;;;;;;;;;916:8:89;912:175;;1096:17;525:595;:::o;912:175::-;199:2819:92;;;944:22:89;;;940:36;;990:87;;2658:162:20;-1:-1:-1;;;;;;;;;;;199:2819:92;-1:-1:-1;;;;;199:2819:92;966:10:24;2717:23:20;2713:101;;2658:162::o;2713:101::-;199:2819:92;;-1:-1:-1;;;2763:40:20;;966:10:24;2763:40:20;;;199:2819:92;;;2763:40:20;199:2819:92;;;;;;;:::o;4996:4226:63:-;;199:2819:92;;;;-1:-1:-1;;199:2819:92;4996:4226:63;5584:131;;;;;;;;;;;;5796:10;;5792:368;;6270:20;;;;6266:143;;6695:300;;;;940:4:54;-1:-1:-1;940:4:54;7214:31:63;;7259:375;;;8094:1;199:2819:92;;8075:1:63;199:2819:92;8074:21:63;199:2819:92;;;940:4:54;;199:2819:92;;;;940:4:54;;199:2819:92;;;;940:4:54;;199:2819:92;;;;940:4:54;;199:2819:92;;;;940:4:54;;199:2819:92;;;;940:4:54;;199:2819:92;7259:375:63;;;;-1:-1:-1;7259:375:63;;;6695:300;;;;;;199:2819:92;6695:300:63;;7259:375;7700:21;199:2819:92;4996:4226:63;:::o;6266:143::-;6330:16;;3066:5;199:2819:92;940:4:54;3060:42:63;6322:71;:::i;5792:368::-;6126:19;;;;;;;:::i;1271:160:50:-;199:2819:92;;-1:-1:-1;;;1380:43:50;;;;-1:-1:-1;;;;;199:2819:92;;;1380:43:50;;;199:2819:92;;;;;;;;;1380:43:50;;;;;;199:2819:92;1380:43:50;:::i;:::-;;:::i;12922:460:102:-;;13024:14;;:::i;:::-;13015:23;;;13011:75;;-1:-1:-1;199:2819:92;;;13100:20:102;199:2819:92;;;;;;;;13128:10:102;199:2819:92;;;;;;;;;;13096:93:102;;13208:32;13128:10;13208:32;;:::i;:::-;13255:11;;;13251:68;;-1:-1:-1;199:2819:92;;;13100:20:102;199:2819:92;;;;;;;;13128:10:102;199:2819:92;;;;;;;;;-1:-1:-1;;199:2819:92;13371:4:102;199:2819:92;;;12922:460:102:o;13251:68::-;199:2819:92;;-1:-1:-1;;;13289:19:102;;;;;13096:93;199:2819:92;;-1:-1:-1;;;13162:16:102;;;;;13011:75;199:2819:92;;-1:-1:-1;;;13061:14:102;;;;;10580:184:93;5173:12:103;199:2819:92;10446:8:66;;;:63;-1:-1:-1;10446:63:66;-1:-1:-1;;;;;199:2819:92;;10726:7:93;199:2819:92;;10736:12:93;199:2819:92;;;;;;10736:12:93;-1:-1:-1;199:2819:92;-1:-1:-1;;;;;;;;;;;199:2819:92;;10580:184:93;:::o;10726:31::-;;-1:-1:-1;10580:184:93;:::o;10446:63:66:-;199:2819:92;;;;;;;;5173:12:103;-1:-1:-1;13267:109:93;;;199:2819:92;;;10446:63:66;;10580:184:93;4803:13:103;199:2819:92;10446:8:66;;;:63;-1:-1:-1;10446:63:66;-1:-1:-1;;;;;199:2819:92;;10726:7:93;199:2819:92;;10736:12:93;199:2819:92;;;;;;10736:12:93;-1:-1:-1;199:2819:92;-1:-1:-1;;;;;;;;;;;199:2819:92;;10580:184:93;:::o;10446:63:66:-;199:2819:92;;;;;;;;4803:13:103;-1:-1:-1;13267:109:93;;;199:2819:92;;;10446:63:66;;10580:184:93;199:2819:92;;10446:8:66;;;:63;-1:-1:-1;10446:63:66;-1:-1:-1;;;;;199:2819:92;;10726:7:93;199:2819:92;;10736:12:93;:17;:12;;:17;:::i;10446:63:66:-;199:2819:92;;;;;;;;;;13267:109:93;-1:-1:-1;13267:109:93;;-1:-1:-1;13267:109:93;;;199:2819:92;;;10446:63:66;;1662:280:94;;;1884:1;199:2819:92;;;;;;;1884:1:94;199:2819:92;;;;;;;9478:25:63;;;:::i;6999:207:93:-;4622:13:103;199:2819:92;9737:15:66;-1:-1:-1;9762:18:66;9795:7;9801:1;9795:7;;9791:234;;6999:207:93;10049:53:66;;;;:::i;:::-;10120:8;;;:63;-1:-1:-1;10120:63:66;-1:-1:-1;;;;;199:2819:92;;7168:7:93;199:2819:92;;7178:17:93;199:2819:92;7178:17:93;;:::i;10120:63:66:-;10135:41;10168:7;10135:48;10168:7;;:::i;10135:41::-;199:2819:92;;;;;10135:48:66;10120:63;;9791:234;9838:14;;;;;:::i;:::-;199:2819:92;;;;;;;10049:53:66;13267:109:93;4622:13:103;-1:-1:-1;13267:109:93;199:2819:92;13267:109:93;;-1:-1:-1;;;;;;;;;;;13267:109:93;199:2819:92;;;;;9870:48:66;9866:149;199:2819:92;;;9938:10:66;9866:149;9791:234;;9866:149;9993:7;;;;;;:::i;:::-;9866:149;9791:234;;6999:207:93;4994:12:103;199:2819:92;9737:15:66;-1:-1:-1;9762:18:66;9795:7;9801:1;9795:7;;9791:234;;6999:207:93;10049:53:66;;;;:::i;:::-;10120:8;;;:63;-1:-1:-1;10120:63:66;-1:-1:-1;;;;;199:2819:92;;7168:7:93;199:2819:92;;7178:17:93;199:2819:92;7178:17:93;;:::i;10120:63:66:-;10135:41;10168:7;10135:48;10168:7;;:::i;10135:48::-;10120:63;;9791:234;9838:14;;;;;:::i;:::-;199:2819:92;;;;;;;10049:53:66;13267:109:93;4994:12:103;-1:-1:-1;13267:109:93;199:2819:92;13267:109:93;;-1:-1:-1;;;;;;;;;;;13267:109:93;199:2819:92;;;;;9870:48:66;9866:149;199:2819:92;;;9938:10:66;9866:149;9791:234;;9866:149;9993:7;;;;;;:::i;:::-;9866:149;9791:234;;6999:207:93;;199:2819:92;;9737:15:66;-1:-1:-1;9762:18:66;9795:7;9801:1;9795:7;;9791:234;;6999:207:93;10049:53:66;;;;;:::i;:::-;10120:8;;;:63;-1:-1:-1;10120:63:66;;-1:-1:-1;;;;;199:2819:92;;7168:7:93;199:2819:92;;;7178:12:93;;:17;:12;;:17;:::i;10120:63:66:-;10135:41;10168:7;10135:48;10168:7;;:::i;:::-;10135:41;13267:109:93;;;;;;13089:293;;10135:48:66;10120:63;;;9791:234;9838:14;;;;;:::i;:::-;199:2819:92;;;;;;;10049:53:66;13267:109:93;;-1:-1:-1;13267:109:93;199:2819:92;13267:109:93;;;-1:-1:-1;13267:109:93;;199:2819:92;;;;;9870:48:66;9866:149;199:2819:92;;;9938:10:66;9866:149;9791:234;;9866:149;9993:7;;;;;;:::i;:::-;9866:149;9791:234;;199:2819:92;;;;;;;:::i;:::-;-1:-1:-1;199:2819:92;;;;;;;:::o;11486:272:93:-;199:2819:92;;:::i;:::-;;;;:::i;:::-;;4622:13:103;199:2819:92;;;;;;;;4622:13:103;-1:-1:-1;199:2819:92;-1:-1:-1;;;;;;;;;;;199:2819:92;;:::i;:::-;;;;;;;;;;;;11731:17:93;;199:2819:92;;11718:12:93;199:2819:92;;;;;;11718:12:93;-1:-1:-1;199:2819:92;-1:-1:-1;;;;;;;;;;;199:2819:92;;;;;;;;:::i;:::-;;;;11672:79:93;;199:2819:92;11486:272:93;:::o;:::-;199:2819:92;;:::i;:::-;;;;:::i;:::-;;4994:12:103;199:2819:92;;;;;;;;4994:12:103;-1:-1:-1;199:2819:92;-1:-1:-1;;;;;;;;;;;199:2819:92;;:::i;:::-;;;;;;;;;;;;11731:17:93;;199:2819:92;;11718:12:93;199:2819:92;;;;;;11718:12:93;-1:-1:-1;199:2819:92;-1:-1:-1;;;;;;;;;;;199:2819:92;;;;;;;;:::i;11486:272:93:-;;199:2819:92;11452:22:66;11718:31:93;11486:272;199:2819:92;;:::i;:::-;;;;:::i;:::-;;11452:22:66;;:::i;:::-;199:2819:92;;:::i;:::-;;11718:12:93;199:2819:92;;;;;11731:17:93;199:2819:92;;;;;11731:17:93;;199:2819:92;;11718:12:93;;:31;:::i;:::-;199:2819:92;;;;;;;;;:::i;:::-;;;;;;11731:17:93;11672:79;;199:2819:92;11486:272:93;:::o;7738:720:50:-;;-1:-1:-1;7875:421:50;7738:720;7875:421;;;;;;;;;;;;-1:-1:-1;7875:421:50;;8310:15;;-1:-1:-1;;;;;;199:2819:92;;8328:26:50;:31;8310:68;8306:146;;7738:720;:::o;8306:146::-;199:2819:92;;-1:-1:-1;;;8401:40:50;;-1:-1:-1;;;;;199:2819:92;;;8401:40:50;;;199:2819:92;;;8401:40:50;8310:68;8377:1;8362:16;;8310:68;;1258:280:94;;;199:2819:92;;;;;;;;;;;;;;;;9478:25:63;;;;;:::i;:::-;9552;;;;;;:29;;199:2819:92;;;;;;;1258:280:94;:::o;10695:389:66:-;5173:12:103;199:2819:92;10871:8:66;;;10895:20;10833:17;10895:20;10833:17;10895:20;10833:17;10895:20;:::o;10867:211::-;199:2819:92;;;;;;;;5173:12:103;10833:17:66;13267:109:93;;;199:2819:92;11014:1:66;;199:2819:92;;;;;;;11030:37:66:o;10695:389::-;4803:13:103;199:2819:92;10871:8:66;;;10895:20;10833:17;10895:20;10833:17;10895:20;10833:17;10895:20;:::o;10867:211::-;199:2819:92;;;;;;;;4803:13:103;10833:17:66;13267:109:93;;;199:2819:92;11014:1:66;;199:2819:92;;;;;;;11030:37:66:o;10695:389::-;199:2819:92;;10871:8:66;;;10895:20;;10833:17;10895:20;10833:17;10895:20;10833:17;10895:20;:::o;10867:211::-;199:2819:92;;;;;;;;;;10833:17:66;13267:109:93;;10833:17:66;13267:109:93;;;199:2819:92;11014:1:66;199:2819:92;;;;;;;11030:37:66;:::o;18080:5181:63:-;18246:1;18241:6;;;18237:53;;18246:1;19217:14;-1:-1:-1;;;19278:16:63;;;19274:92;;18080:5181;22827:18;22717;22607;22498;22387;22278;23216:28;19383:15;19898:6;19383:15;-1:-1:-1;;;23237:6:63;19383:15;;;19379:90;;18080:5181;19493:7;19486:15;;;19482:90;;18080:5181;19596:7;19589:15;;;19585:89;;18080:5181;19698:6;19691:14;;;19687:87;;18080:5181;19798:6;19791:14;;;19787:87;;18080:5181;19891:14;;19887:61;;18080:5181;20374:1;199:2819:92;18246:1:63;199:2819:92;22284:6:63;;;;:::i;:::-;199:2819:92;;;;;22278:18:63;22393:6;;;;:::i;22387:18::-;22504:6;;;;:::i;22498:18::-;22613:6;;;;:::i;22607:18::-;22723:6;;;;:::i;22717:18::-;22833:6;;;;:::i;22827:18::-;23237:6;;;:::i;:::-;23232:11;;;199:2819:92;23216:28:63;940:4:54;;18080:5181:63;:::o;19887:61::-;18246:1;199:2819:92;19887:61:63;;19787:87;199:2819:92;;;;;19787:87:63;;;19687;199:2819:92;;;;;19687:87:63;;;19585:89;199:2819:92;;;;;19585:89:63;;;19482:90;199:2819:92;;;;;19482:90:63;;;19379;199:2819:92;;;;;19379:90:63;;;19274:92;-1:-1:-1;;;;199:2819:92;-1:-1:-1;199:2819:92;;;;19274:92:63;;12497:447:93;12694:10;;;;;12926:11;;12497:447;:::o;12687:230::-;12734:23;;;;;;:::i;:::-;13267:109;1113:13:92;-1:-1:-1;13267:109:93;199:2819:92;13267:109:93;;-1:-1:-1;;;;;;;;;;;13267:109:93;199:2819:92;;;;;-1:-1:-1;12771:136:93;199:2819:92;;;12830:10:93;12771:136;;12687:230;;;12771:136;199:2819:92;;12891:1:93;199:2819:92;;;;;;12771:136:93;199:2819:92;;:::i;12497:447:93:-;12694:10;;;;;12926:11;;12497:447;:::o;12687:230::-;12734:23;;;;;;:::i;:::-;13267:109;514:12:92;-1:-1:-1;13267:109:93;199:2819:92;13267:109:93;;-1:-1:-1;;;;;;;;;;;13267:109:93;199:2819:92;;;;;-1:-1:-1;12771:136:93;199:2819:92;;;12830:10:93;12771:136;;12687:230;;;12771:136;199:2819:92;;12891:1:93;199:2819:92;;;;;;12771:136:93;199:2819:92;;:::i;12497:447:93:-;;12694:10;;;;;;12926:11;;;12497:447;:::o;12687:230::-;12734:23;;;;;;;:::i;:::-;13267:109;;-1:-1:-1;13267:109:93;199:2819:92;13267:109:93;;;-1:-1:-1;13267:109:93;;199:2819:92;;;;;-1:-1:-1;12771:136:93;199:2819:92;;;12830:10:93;12771:136;;12687:230;;;;12771:136;199:2819:92;;12891:1:93;199:2819:92;;;;;;12771:136:93;199:2819:92;;:::i;7084:141:22:-;199:2819:92;-1:-1:-1;;;;;;;;;;;199:2819:92;;;;7150:18:22;7146:73;;7084:141::o;7146:73::-;199:2819:92;;-1:-1:-1;;;7191:17:22;;;;;1776:194:54;1829:135;;;;;;;;199:2819:92;5173:12:103;199:2819:92;;-1:-1:-1;;;199:2819:92;;;;;;;;;5173:12:103;199:2819:92;;;;;;5173:12:103;-1:-1:-1;199:2819:92;;;;;;;;;;-1:-1:-1;;199:2819:92;;;;;;;-1:-1:-1;;;;;;;;;;;199:2819:92;;;;:::o;:::-;4803:13:103;199:2819:92;;-1:-1:-1;;;199:2819:92;;;;;;;;;4803:13:103;199:2819:92;;;;;;4803:13:103;-1:-1:-1;199:2819:92;;;;;;;;;;-1:-1:-1;;199:2819:92;;;;;;;-1:-1:-1;;;;;;;;;;;199:2819:92;;;;:::o;:::-;;;-1:-1:-1;;;199:2819:92;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;199:2819:92;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;11657:922:66;5173:12:103;199:2819:92;11657:922:66;;;11864:7;;;;11936;11916:28;11936:7;;:::i;11916:28::-;199:2819:92;;;;;;;;;;;;12103:13:66;;;12099:89;;12251:14;;;;;12285:19;;;199:2819:92;;;;;;;;;;;;;;;;;12285:19:66;199:2819:92;;12423:25:66;;:::o;12247:163::-;199:2819:92;;12343:52:66;199:2819:92;12353:41:66;199:2819:92;;:::i;:::-;;;;;;;;12353:41:66;-1:-1:-1;;;;;199:2819:92;;12353:41:66;;;199:2819:92;12343:52:66;:::i;:::-;12247:163;;12099:89;199:2819:92;;-1:-1:-1;;;12143:30:66;;;;;11860:713;199:2819:92;12479:52:66;199:2819:92;12489:41:66;199:2819:92;;:::i;12489:41:66:-;-1:-1:-1;;;;;199:2819:92;;12489:41:66;;;199:2819:92;12343:52:66;:::i;12479:::-;11870:1;12545:17;;:::o;11657:922::-;4803:13:103;199:2819:92;11657:922:66;;;11864:7;;;;11936;11916:28;11936:7;;:::i;11916:28::-;199:2819:92;;;;;;;;;;;;12103:13:66;;;12099:89;;12251:14;;;;;12285:19;;;199:2819:92;;;;;;;;;;;;;;;;;12247:163:66;199:2819:92;;12343:52:66;199:2819:92;12353:41:66;199:2819:92;;:::i;12353:41:66:-;-1:-1:-1;;;;;199:2819:92;;12353:41:66;;;199:2819:92;12343:52:66;:::i;11860:713::-;199:2819:92;12479:52:66;199:2819:92;12489:41:66;199:2819:92;;:::i;12489:41:66:-;-1:-1:-1;;;;;199:2819:92;;12489:41:66;;;199:2819:92;12343:52:66;:::i;11657:922::-;199:2819:92;;11657:922:66;;;11864:7;;;;11936;11916:28;11936:7;;:::i;:::-;11916:28;13267:109:93;;;;;;13089:293;;11916:28:66;199:2819:92;;;;;;;;;;;;12103:13:66;;;12099:89;;12251:14;;;;;12285:19;;;;199:2819:92;;;;;;;;;;;;;;;;;12247:163:66;199:2819:92;;;12343:52:66;199:2819:92;12353:41:66;199:2819:92;;:::i;:::-;;;;;;;;12353:41:66;-1:-1:-1;;;;;199:2819:92;;12353:41:66;;;199:2819:92;12343:52:66;:::i;11860:713::-;199:2819:92;;12479:52:66;199:2819:92;12489:41:66;199:2819:92;;:::i;12489:41:66:-;-1:-1:-1;;;;;199:2819:92;;12489:41:66;;;199:2819:92;12343:52:66;:::i;3595:153:63:-;;3721:5;;;3731;;199:2819:92;;;;;;;;;3595:153:63;:::o;12929:433:66:-;13112:10;;;;;13344:11;;12929:433;:::o;13105:230::-;13152:23;;;;;;:::i;:::-;13267:109:93;4622:13:103;-1:-1:-1;13267:109:93;199:2819:92;13267:109:93;;-1:-1:-1;;;;;;;;;;;13267:109:93;199:2819:92;;;;;-1:-1:-1;13189:136:66;199:2819:92;;;13248:10:66;13189:136;;13105:230;;;13189:136;199:2819:92;;13309:1:66;199:2819:92;;;;;;13189:136:66;199:2819:92;;:::i;12929:433:66:-;13112:10;;;;;13344:11;;12929:433;:::o;13105:230::-;13152:23;;;;;;:::i;:::-;13267:109:93;4994:12:103;-1:-1:-1;13267:109:93;199:2819:92;13267:109:93;;-1:-1:-1;;;;;;;;;;;13267:109:93;199:2819:92;;;;;-1:-1:-1;13189:136:66;199:2819:92;;;13248:10:66;13189:136;;13105:230;;;13189:136;199:2819:92;;13309:1:66;199:2819:92;;;;;;13189:136:66;199:2819:92;;:::i;12929:433:66:-;;13112:10;;;;;;13344:11;;;12929:433;:::o;13105:230::-;13152:23;;;;;;;:::i;:::-;13267:109:93;;-1:-1:-1;13267:109:93;199:2819:92;13267:109:93;;;-1:-1:-1;13267:109:93;;199:2819:92;;;;;-1:-1:-1;13189:136:66;199:2819:92;;;13248:10:66;13189:136;;13105:230;;;;13189:136;199:2819:92;;13309:1:66;199:2819:92;;;;;;13189:136:66;199:2819:92;;:::i","linkReferences":{},"immutableReferences":{"56865":[{"start":2017,"length":32},{"start":2605,"length":32}],"61158":[{"start":4184,"length":32},{"start":4912,"length":32},{"start":9124,"length":32}],"67505":[{"start":4988,"length":32},{"start":6345,"length":32}],"67508":[{"start":6706,"length":32},{"start":7906,"length":32}]}},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","DELEGATOR_FACTORY()":"6da3e06d","DEPOSITOR_WHITELIST_ROLE()":"1b66c9e1","DEPOSIT_LIMIT_SET_ROLE()":"a21a1df9","DEPOSIT_WHITELIST_SET_ROLE()":"db388715","FACTORY()":"2dd31000","IS_DEPOSIT_LIMIT_SET_ROLE()":"1415519b","SLASHER_FACTORY()":"87df0788","activeBalanceOf(address)":"59f769a9","activeBalanceOfAt(address,uint48,bytes)":"efb559d6","activeBalanceOfHints(address,address,uint48)":"f9e1bf6c","activeShares()":"bfefcd7b","activeSharesAt(uint48,bytes)":"50f22068","activeSharesHint(address,uint48)":"8326056f","activeSharesHintInternal(uint48)":"55a2c672","activeSharesOf(address)":"9d66201b","activeSharesOfAt(address,uint48,bytes)":"2d73c69c","activeSharesOfHint(address,address,uint48)":"de499716","activeSharesOfHintInternal(address,uint48)":"eb556238","activeStake()":"bd49c35f","activeStakeAt(uint48,bytes)":"810da75d","activeStakeHint(address,uint48)":"64b03fdc","activeStakeHintInternal(uint48)":"67567add","burner()":"27810b6e","claim(address,uint256)":"aad3ec96","claimBatch(address,uint256[])":"7c04c80a","collateral()":"d8dfeb45","currentEpoch()":"76671808","currentEpochStart()":"61a8c8c4","delegator()":"ce9b7930","deposit(address,uint256)":"47e7ef24","depositLimit()":"ecf70858","depositWhitelist()":"48d3b775","epochAt(uint48)":"7953b33b","epochDuration()":"4ff0876a","epochDurationInit()":"46361671","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","initialize(uint64,address,bytes)":"57ec83cc","isDelegatorInitialized()":"50861adc","isDepositLimit()":"a1b12202","isDepositorWhitelisted(address)":"794b15b7","isInitialized()":"392e53cd","isSlasherInitialized()":"6ec1e3f8","isWithdrawalsClaimed(uint256,address)":"a5d03223","migrate(uint64,bytes)":"2abe3048","nextEpochStart()":"73790ab3","onSlash(uint256,uint48)":"7278e31c","owner()":"8da5cb5b","previousEpochStart()":"281f5752","redeem(address,uint256)":"1e9a6950","renounceOwnership()":"715018a6","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","setDelegator(address)":"83cd9cc3","setDepositLimit(uint256)":"bdc8144b","setDepositWhitelist(bool)":"4105a7dd","setDepositorWhitelistStatus(address,bool)":"a2861466","setIsDepositLimit(bool)":"5346e34f","setSlasher(address)":"aabc2496","slashableBalanceOf(address)":"c31e8dd7","slasher()":"b1344271","staticDelegateCall(address,bytes)":"9f86fd85","supportsInterface(bytes4)":"01ffc9a7","totalStake()":"8b0e9f3f","transferOwnership(address)":"f2fde38b","version()":"54fd4d50","withdraw(address,uint256)":"f3fef3a3","withdrawalShares(uint256)":"afba70ad","withdrawalSharesOf(uint256,address)":"a3b54172","withdrawals(uint256)":"5cc07076","withdrawalsOf(uint256,address)":"f5e7ee0f"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadyClaimed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadySet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CheckpointUnorderedInsertion\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DelegatorAlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DepositLimitReached\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExternalCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientClaim\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientDeposit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientRedemption\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientWithdrawal\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCaptureEpoch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidClaimer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCollateral\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDelegator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEpoch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEpochDuration\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidLengthEpochs\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOnBehalfOf\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRecipient\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSlasher\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTimestamp\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingRoles\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoPreviousEpoch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotDelegator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotFactory\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotSlasher\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotWhitelistedDepositor\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SlasherAlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TooMuchRedeem\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TooMuchWithdraw\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"claimer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Claim\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"claimer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"epochs\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"ClaimBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"depositor\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slashedAmount\",\"type\":\"uint256\"}],\"name\":\"OnSlash\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"SetDelegator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"SetDepositLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"SetDepositWhitelist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"SetDepositorWhitelistStatus\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"SetIsDepositLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"slasher\",\"type\":\"address\"}],\"name\":\"SetSlasher\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"claimer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"burnedShares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"mintedShares\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DELEGATOR_FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEPOSITOR_WHITELIST_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEPOSIT_LIMIT_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEPOSIT_WHITELIST_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"IS_DEPOSIT_LIMIT_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SLASHER_FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"activeBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hints\",\"type\":\"bytes\"}],\"name\":\"activeBalanceOfAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"activeBalanceOfHints\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"activeShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"activeSharesAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"activeSharesHint\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"activeSharesHintInternal\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"exists\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"hint\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"activeSharesOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"activeSharesOfAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"activeSharesOfHint\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"activeSharesOfHintInternal\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"exists\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"hint\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"activeStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"activeStakeAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"activeStakeHint\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"activeStakeHintInternal\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"exists\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"hint\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"burner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"}],\"name\":\"claim\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"epochs\",\"type\":\"uint256[]\"}],\"name\":\"claimBatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"collateral\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentEpochStart\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"delegator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"depositedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mintedShares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"depositLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"depositWhitelist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"epochAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"epochDuration\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"epochDurationInit\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"initialVersion\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner_\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isDelegatorInitialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isDepositLimit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isDepositorWhitelisted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isInitialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isSlasherInitialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isWithdrawalsClaimed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newVersion\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"migrate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nextEpochStart\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"}],\"name\":\"onSlash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"slashedAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"previousEpochStart\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"claimer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"withdrawnAssets\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mintedShares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator_\",\"type\":\"address\"}],\"name\":\"setDelegator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"setDepositLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"setDepositWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"setDepositorWhitelistStatus\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"setIsDepositLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"slasher_\",\"type\":\"address\"}],\"name\":\"setSlasher\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"slashableBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slasher\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"staticDelegateCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"claimer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"burnedShares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mintedShares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"}],\"name\":\"withdrawalShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"withdrawalSharesOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"}],\"name\":\"withdrawals\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"withdrawalsOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"CheckpointUnorderedInsertion()\":[{\"details\":\"A value was attempted to be inserted on a past checkpoint.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}]},\"events\":{\"Claim(address,address,uint256,uint256)\":{\"params\":{\"amount\":\"amount of the collateral claimed\",\"claimer\":\"account that claimed\",\"epoch\":\"epoch the collateral was claimed for\",\"recipient\":\"account that received the collateral\"}},\"ClaimBatch(address,address,uint256[],uint256)\":{\"params\":{\"amount\":\"amount of the collateral claimed\",\"claimer\":\"account that claimed\",\"epochs\":\"epochs the collateral was claimed for\",\"recipient\":\"account that received the collateral\"}},\"Deposit(address,address,uint256,uint256)\":{\"params\":{\"amount\":\"amount of the collateral deposited\",\"depositor\":\"account that made the deposit\",\"onBehalfOf\":\"account the deposit was made on behalf of\",\"shares\":\"amount of the active shares minted\"}},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"OnSlash(uint256,uint48,uint256)\":{\"params\":{\"amount\":\"amount of the collateral to slash\",\"captureTimestamp\":\"time point when the stake was captured\",\"slashedAmount\":\"real amount of the collateral slashed\"}},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"SetDelegator(address)\":{\"details\":\"Can be set only once.\",\"params\":{\"delegator\":\"vault's delegator to delegate the stake to networks and operators\"}},\"SetDepositLimit(uint256)\":{\"params\":{\"limit\":\"deposit limit (maximum amount of the collateral that can be in the vault simultaneously)\"}},\"SetDepositWhitelist(bool)\":{\"params\":{\"status\":\"if enabled deposit whitelist\"}},\"SetDepositorWhitelistStatus(address,bool)\":{\"params\":{\"account\":\"account for which the whitelist status is set\",\"status\":\"if whitelisted the account\"}},\"SetIsDepositLimit(bool)\":{\"params\":{\"status\":\"if enabled deposit limit\"}},\"SetSlasher(address)\":{\"details\":\"Can be set only once.\",\"params\":{\"slasher\":\"vault's slasher to provide a slashing mechanism to networks\"}},\"Withdraw(address,address,uint256,uint256,uint256)\":{\"params\":{\"amount\":\"amount of the collateral withdrawn\",\"burnedShares\":\"amount of the active shares burned\",\"claimer\":\"account that needs to claim the withdrawal\",\"mintedShares\":\"amount of the epoch withdrawal shares minted\",\"withdrawer\":\"account that made the withdrawal\"}}},\"kind\":\"dev\",\"methods\":{\"activeBalanceOf(address)\":{\"params\":{\"account\":\"account to get the active balance for\"},\"returns\":{\"_0\":\"active balance for the account\"}},\"activeBalanceOfAt(address,uint48,bytes)\":{\"params\":{\"account\":\"account to get the active balance for\",\"hints\":\"hints for checkpoints' indexes\",\"timestamp\":\"time point to get the active balance for the account at\"},\"returns\":{\"_0\":\"active balance for the account at the timestamp\"}},\"activeShares()\":{\"returns\":{\"_0\":\"total number of active shares\"}},\"activeSharesAt(uint48,bytes)\":{\"params\":{\"hint\":\"hint for the checkpoint index\",\"timestamp\":\"time point to get the total number of active shares at\"},\"returns\":{\"_0\":\"total number of active shares at the timestamp\"}},\"activeSharesOf(address)\":{\"params\":{\"account\":\"account to get the number of active shares for\"},\"returns\":{\"_0\":\"number of active shares for the account\"}},\"activeSharesOfAt(address,uint48,bytes)\":{\"params\":{\"account\":\"account to get the number of active shares for\",\"hint\":\"hint for the checkpoint index\",\"timestamp\":\"time point to get the number of active shares for the account at\"},\"returns\":{\"_0\":\"number of active shares for the account at the timestamp\"}},\"activeStake()\":{\"returns\":{\"_0\":\"total amount of active stake\"}},\"activeStakeAt(uint48,bytes)\":{\"params\":{\"hint\":\"hint for the checkpoint index\",\"timestamp\":\"time point to get the total active stake at\"},\"returns\":{\"_0\":\"total amount of active stake at the timestamp\"}},\"claim(address,uint256)\":{\"params\":{\"epoch\":\"epoch to claim the collateral for\",\"recipient\":\"account that receives the collateral\"},\"returns\":{\"amount\":\"amount of the collateral claimed\"}},\"claimBatch(address,uint256[])\":{\"params\":{\"epochs\":\"epochs to claim the collateral for\",\"recipient\":\"account that receives the collateral\"},\"returns\":{\"amount\":\"amount of the collateral claimed\"}},\"currentEpoch()\":{\"returns\":{\"_0\":\"current epoch\"}},\"currentEpochStart()\":{\"returns\":{\"_0\":\"start of the current epoch\"}},\"deposit(address,uint256)\":{\"params\":{\"amount\":\"amount of the collateral to deposit\",\"onBehalfOf\":\"account the deposit is made on behalf of\"},\"returns\":{\"depositedAmount\":\"real amount of the collateral deposited\",\"mintedShares\":\"amount of the active shares minted\"}},\"epochAt(uint48)\":{\"details\":\"Reverts if the timestamp is less than the start of the epoch 0.\",\"params\":{\"timestamp\":\"time point to get the epoch at\"},\"returns\":{\"_0\":\"epoch at the timestamp\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize(uint64,address,bytes)\":{\"params\":{\"data\":\"some data to use\",\"initialVersion\":\"initial version of the entity\",\"owner\":\"initial owner of the entity\"}},\"isInitialized()\":{\"returns\":{\"_0\":\"if the vault is fully initialized\"}},\"migrate(uint64,bytes)\":{\"params\":{\"data\":\"some data to use\",\"newVersion\":\"new version of the entity\"}},\"nextEpochStart()\":{\"returns\":{\"_0\":\"start of the next epoch\"}},\"onSlash(uint256,uint48)\":{\"details\":\"Only the slasher can call this function.\",\"params\":{\"amount\":\"amount to slash\",\"captureTimestamp\":\"time point when the stake was captured\"},\"returns\":{\"slashedAmount\":\"real amount of the collateral slashed\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"previousEpochStart()\":{\"details\":\"Reverts if the current epoch is 0.\",\"returns\":{\"_0\":\"start of the previous epoch\"}},\"redeem(address,uint256)\":{\"params\":{\"claimer\":\"account that needs to claim the withdrawal\",\"shares\":\"amount of the active shares to redeem\"},\"returns\":{\"mintedShares\":\"amount of the epoch withdrawal shares minted\",\"withdrawnAssets\":\"amount of the collateral withdrawn\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"setDepositLimit(uint256)\":{\"details\":\"Only a DEPOSIT_LIMIT_SET_ROLE holder can call this function.\",\"params\":{\"limit\":\"deposit limit (maximum amount of the collateral that can be in the vault simultaneously)\"}},\"setDepositWhitelist(bool)\":{\"details\":\"Only a DEPOSIT_WHITELIST_SET_ROLE holder can call this function.\",\"params\":{\"status\":\"if enabling deposit whitelist\"}},\"setDepositorWhitelistStatus(address,bool)\":{\"details\":\"Only a DEPOSITOR_WHITELIST_ROLE holder can call this function.\",\"params\":{\"account\":\"account for which the whitelist status is set\",\"status\":\"if whitelisting the account\"}},\"setIsDepositLimit(bool)\":{\"details\":\"Only a IS_DEPOSIT_LIMIT_SET_ROLE holder can call this function.\",\"params\":{\"status\":\"if enabling deposit limit\"}},\"slashableBalanceOf(address)\":{\"params\":{\"account\":\"account to get the slashable collateral for\"},\"returns\":{\"_0\":\"total amount of the account's slashable collateral\"}},\"staticDelegateCall(address,bytes)\":{\"details\":\"It allows to use this contract's storage on-chain.\",\"params\":{\"data\":\"data to make a delegatecall with\",\"target\":\"address of the contract to make a delegatecall to\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"totalStake()\":{\"returns\":{\"_0\":\"total amount of the slashable collateral\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"version()\":{\"details\":\"Starts from 1.\",\"returns\":{\"_0\":\"version of the entity\"}},\"withdraw(address,uint256)\":{\"params\":{\"amount\":\"amount of the collateral to withdraw\",\"claimer\":\"account that needs to claim the withdrawal\"},\"returns\":{\"burnedShares\":\"amount of the active shares burned\",\"mintedShares\":\"amount of the epoch withdrawal shares minted\"}},\"withdrawalsOf(uint256,address)\":{\"params\":{\"account\":\"account to get the withdrawals for\",\"epoch\":\"epoch to get the withdrawals for the account at\"},\"returns\":{\"_0\":\"withdrawals for the account at the epoch\"}}},\"version\":1},\"userdoc\":{\"events\":{\"Claim(address,address,uint256,uint256)\":{\"notice\":\"Emitted when a claim is made.\"},\"ClaimBatch(address,address,uint256[],uint256)\":{\"notice\":\"Emitted when a batch claim is made.\"},\"Deposit(address,address,uint256,uint256)\":{\"notice\":\"Emitted when a deposit is made.\"},\"OnSlash(uint256,uint48,uint256)\":{\"notice\":\"Emitted when a slash happens.\"},\"SetDelegator(address)\":{\"notice\":\"Emitted when a delegator is set.\"},\"SetDepositLimit(uint256)\":{\"notice\":\"Emitted when a deposit limit is set.\"},\"SetDepositWhitelist(bool)\":{\"notice\":\"Emitted when a deposit whitelist status is enabled/disabled.\"},\"SetDepositorWhitelistStatus(address,bool)\":{\"notice\":\"Emitted when a depositor whitelist status is set.\"},\"SetIsDepositLimit(bool)\":{\"notice\":\"Emitted when a deposit limit status is enabled/disabled.\"},\"SetSlasher(address)\":{\"notice\":\"Emitted when a slasher is set.\"},\"Withdraw(address,address,uint256,uint256,uint256)\":{\"notice\":\"Emitted when a withdrawal is made.\"}},\"kind\":\"user\",\"methods\":{\"DELEGATOR_FACTORY()\":{\"notice\":\"Get the delegator factory's address.\"},\"DEPOSITOR_WHITELIST_ROLE()\":{\"notice\":\"Get a depositor whitelist status setter's role.\"},\"DEPOSIT_LIMIT_SET_ROLE()\":{\"notice\":\"Get a deposit limit setter's role.\"},\"DEPOSIT_WHITELIST_SET_ROLE()\":{\"notice\":\"Get a deposit whitelist enabler/disabler's role.\"},\"FACTORY()\":{\"notice\":\"Get the factory's address.\"},\"IS_DEPOSIT_LIMIT_SET_ROLE()\":{\"notice\":\"Get a deposit limit enabler/disabler's role.\"},\"SLASHER_FACTORY()\":{\"notice\":\"Get the slasher factory's address.\"},\"activeBalanceOf(address)\":{\"notice\":\"Get an active balance for a particular account.\"},\"activeBalanceOfAt(address,uint48,bytes)\":{\"notice\":\"Get an active balance for a particular account at a given timestamp using hints.\"},\"activeShares()\":{\"notice\":\"Get a total number of active shares in the vault.\"},\"activeSharesAt(uint48,bytes)\":{\"notice\":\"Get a total number of active shares in the vault at a given timestamp using a hint.\"},\"activeSharesOf(address)\":{\"notice\":\"Get a number of active shares for a particular account.\"},\"activeSharesOfAt(address,uint48,bytes)\":{\"notice\":\"Get a total number of active shares for a particular account at a given timestamp using a hint.\"},\"activeStake()\":{\"notice\":\"Get a total amount of active stake in the vault.\"},\"activeStakeAt(uint48,bytes)\":{\"notice\":\"Get a total amount of active stake in the vault at a given timestamp using a hint.\"},\"burner()\":{\"notice\":\"Get a burner to issue debt to (e.g., 0xdEaD or some unwrapper contract).\"},\"claim(address,uint256)\":{\"notice\":\"Claim collateral from the vault.\"},\"claimBatch(address,uint256[])\":{\"notice\":\"Claim collateral from the vault for multiple epochs.\"},\"collateral()\":{\"notice\":\"Get a vault collateral.\"},\"currentEpoch()\":{\"notice\":\"Get a current vault epoch.\"},\"currentEpochStart()\":{\"notice\":\"Get a start of the current vault epoch.\"},\"delegator()\":{\"notice\":\"Get a delegator (it delegates the vault's stake to networks and operators).\"},\"deposit(address,uint256)\":{\"notice\":\"Deposit collateral into the vault.\"},\"depositLimit()\":{\"notice\":\"Get a deposit limit (maximum amount of the active stake that can be in the vault simultaneously).\"},\"depositWhitelist()\":{\"notice\":\"Get if the deposit whitelist is enabled.\"},\"epochAt(uint48)\":{\"notice\":\"Get an epoch at a given timestamp.\"},\"epochDuration()\":{\"notice\":\"Get a duration of the vault epoch.\"},\"epochDurationInit()\":{\"notice\":\"Get a time point of the epoch duration set.\"},\"initialize(uint64,address,bytes)\":{\"notice\":\"Initialize this entity contract by using a given data and setting a particular version and owner.\"},\"isDelegatorInitialized()\":{\"notice\":\"Get if the delegator is initialized.\"},\"isDepositLimit()\":{\"notice\":\"Get if the deposit limit is set.\"},\"isDepositorWhitelisted(address)\":{\"notice\":\"Get if a given account is whitelisted as a depositor.\"},\"isInitialized()\":{\"notice\":\"Check if the vault is fully initialized (a delegator and a slasher are set).\"},\"isSlasherInitialized()\":{\"notice\":\"Get if the slasher is initialized.\"},\"isWithdrawalsClaimed(uint256,address)\":{\"notice\":\"Get if the withdrawals are claimed for a particular account at a given epoch.\"},\"migrate(uint64,bytes)\":{\"notice\":\"Migrate this entity to a particular newer version using a given data.\"},\"nextEpochStart()\":{\"notice\":\"Get a start of the next vault epoch.\"},\"onSlash(uint256,uint48)\":{\"notice\":\"Slash callback for burning collateral.\"},\"previousEpochStart()\":{\"notice\":\"Get a start of the previous vault epoch.\"},\"redeem(address,uint256)\":{\"notice\":\"Redeem collateral from the vault (it will be claimable after the next epoch).\"},\"setDepositLimit(uint256)\":{\"notice\":\"Set a deposit limit.\"},\"setDepositWhitelist(bool)\":{\"notice\":\"Enable/disable deposit whitelist.\"},\"setDepositorWhitelistStatus(address,bool)\":{\"notice\":\"Set a depositor whitelist status.\"},\"setIsDepositLimit(bool)\":{\"notice\":\"Enable/disable deposit limit.\"},\"slashableBalanceOf(address)\":{\"notice\":\"Get a total amount of the collateral that can be slashed for a given account.\"},\"slasher()\":{\"notice\":\"Get a slasher (it provides networks a slashing mechanism).\"},\"staticDelegateCall(address,bytes)\":{\"notice\":\"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data).\"},\"totalStake()\":{\"notice\":\"Get a total amount of the collateral that can be slashed.\"},\"version()\":{\"notice\":\"Get the entity's version.\"},\"withdraw(address,uint256)\":{\"notice\":\"Withdraw collateral from the vault (it will be claimable after the next epoch).\"},\"withdrawalShares(uint256)\":{\"notice\":\"Get a total number of withdrawal shares at a given epoch.\"},\"withdrawalSharesOf(uint256,address)\":{\"notice\":\"Get a number of withdrawal shares for a particular account at a given epoch (zero if claimed).\"},\"withdrawals(uint256)\":{\"notice\":\"Get a total amount of the withdrawals at a given epoch.\"},\"withdrawalsOf(uint256,address)\":{\"notice\":\"Get withdrawals for a particular account at a given epoch (zero if claimed).\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/hints/VaultHints.sol\":\"VaultHints\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf\",\"dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89\",\"dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1\",\"dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44\",\"dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6\",\"dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza\"]},\"src/contracts/common/MigratableEntity.sol\":{\"keccak256\":\"0x303ad40a3de8fa808cc30a6fbd5998633f6a89b982e6db1fa981e0566ab445e7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://fa8fb92995ead02798e013190b87b84b44cc68668262f045c9b0b4783940e2bf\",\"dweb:/ipfs/QmV1uKGVLKwWisc714R8fCt71gXUQJpaKvdc6LQ8WtvMpL\"]},\"src/contracts/common/StaticDelegateCallable.sol\":{\"keccak256\":\"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764\",\"dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD\"]},\"src/contracts/hints/Hints.sol\":{\"keccak256\":\"0x8b565df1ae35993c097a9e642002782a8f451f6fd01809cad6bcd345bdf1b99c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://99a19adb01e350a92f534095b3078229df1f2f83077992d75d58d8684be45971\",\"dweb:/ipfs/QmbmwcuswVbzvwHQFTtrJG86oV98GnfxqYTb8cV8u1acox\"]},\"src/contracts/hints/VaultHints.sol\":{\"keccak256\":\"0xccb505b7159b769cc114d67b87c2de6b106557f667fc8f3780114baad5c3c442\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6d0c80a908fc16e96a8b5605a0bd53f9e89ad0ef0a738fbbae80ba4d3160749b\",\"dweb:/ipfs/QmXo5UtWoR8YmunqcbBU8rQMm1nvmvjNPoXcVrDhh4pEwR\"]},\"src/contracts/libraries/Checkpoints.sol\":{\"keccak256\":\"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609\",\"dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE\"]},\"src/contracts/libraries/ERC4626Math.sol\":{\"keccak256\":\"0x8441160513c1cbeb1c3b9ee077bcc7e7ce20006b52a77c8dd39ff0ef89699939\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://943f8cc3e26ddf649f465f40c909819f5c864717c4baa339e9e403b9374a4653\",\"dweb:/ipfs/QmXPxi1sUDsrGprZdUgCzoPEosaZMv9ZhygWQ1vAi1phAB\"]},\"src/contracts/vault/Vault.sol\":{\"keccak256\":\"0x7ee6dbf060c45d6eba95315f4ac0b3b467dd9c4999b84c31d6f66d4d8b53a116\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://301948b8ea522db292aa2722ba42def3911dae95f0b376f7023c3fef470f8676\",\"dweb:/ipfs/QmSDbP2HdzhDAzstr8Zz5isEAcSkma8ABc5UwPsoazaumZ\"]},\"src/contracts/vault/VaultStorage.sol\":{\"keccak256\":\"0x57db25b127d77ea3472de53e3a4af3354399655b9268638b99ca5925fa364a56\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://aa763d9a6ec508ae3abfb8228b72b9fd9525279e5135d4962e79ff059feb1173\",\"dweb:/ipfs/QmcbDR6E9wyEpu6V2FkEC4hnWy47zXA9LSKJde6zSGd33Q\"]},\"src/interfaces/common/IEntity.sol\":{\"keccak256\":\"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b\",\"dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv\"]},\"src/interfaces/common/IMigratableEntity.sol\":{\"keccak256\":\"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c\",\"dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds\"]},\"src/interfaces/common/IRegistry.sol\":{\"keccak256\":\"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014\",\"dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK\"]},\"src/interfaces/common/IStaticDelegateCallable.sol\":{\"keccak256\":\"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516\",\"dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi\"]},\"src/interfaces/delegator/IBaseDelegator.sol\":{\"keccak256\":\"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2\",\"dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8\"]},\"src/interfaces/slasher/IBaseSlasher.sol\":{\"keccak256\":\"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf\",\"dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx\"]},\"src/interfaces/vault/IVault.sol\":{\"keccak256\":\"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9\",\"dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R\"]},\"src/interfaces/vault/IVaultStorage.sol\":{\"keccak256\":\"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e\",\"dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"inputs":[],"type":"error","name":"AlreadyClaimed"},{"inputs":[],"type":"error","name":"AlreadyInitialized"},{"inputs":[],"type":"error","name":"AlreadySet"},{"inputs":[],"type":"error","name":"CheckpointUnorderedInsertion"},{"inputs":[],"type":"error","name":"DelegatorAlreadyInitialized"},{"inputs":[],"type":"error","name":"DepositLimitReached"},{"inputs":[],"type":"error","name":"ExternalCall"},{"inputs":[],"type":"error","name":"InsufficientClaim"},{"inputs":[],"type":"error","name":"InsufficientDeposit"},{"inputs":[],"type":"error","name":"InsufficientRedemption"},{"inputs":[],"type":"error","name":"InsufficientWithdrawal"},{"inputs":[],"type":"error","name":"InvalidAccount"},{"inputs":[],"type":"error","name":"InvalidCaptureEpoch"},{"inputs":[],"type":"error","name":"InvalidClaimer"},{"inputs":[],"type":"error","name":"InvalidCollateral"},{"inputs":[],"type":"error","name":"InvalidDelegator"},{"inputs":[],"type":"error","name":"InvalidEpoch"},{"inputs":[],"type":"error","name":"InvalidEpochDuration"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"InvalidLengthEpochs"},{"inputs":[],"type":"error","name":"InvalidOnBehalfOf"},{"inputs":[],"type":"error","name":"InvalidRecipient"},{"inputs":[],"type":"error","name":"InvalidSlasher"},{"inputs":[],"type":"error","name":"InvalidTimestamp"},{"inputs":[],"type":"error","name":"MissingRoles"},{"inputs":[],"type":"error","name":"NoPreviousEpoch"},{"inputs":[],"type":"error","name":"NotDelegator"},{"inputs":[],"type":"error","name":"NotFactory"},{"inputs":[],"type":"error","name":"NotInitialized"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"NotSlasher"},{"inputs":[],"type":"error","name":"NotWhitelistedDepositor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintDowncast"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"type":"error","name":"SafeERC20FailedOperation"},{"inputs":[],"type":"error","name":"SlasherAlreadyInitialized"},{"inputs":[],"type":"error","name":"TooMuchRedeem"},{"inputs":[],"type":"error","name":"TooMuchWithdraw"},{"inputs":[{"internalType":"address","name":"claimer","type":"address","indexed":true},{"internalType":"address","name":"recipient","type":"address","indexed":true},{"internalType":"uint256","name":"epoch","type":"uint256","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Claim","anonymous":false},{"inputs":[{"internalType":"address","name":"claimer","type":"address","indexed":true},{"internalType":"address","name":"recipient","type":"address","indexed":true},{"internalType":"uint256[]","name":"epochs","type":"uint256[]","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"ClaimBatch","anonymous":false},{"inputs":[{"internalType":"address","name":"depositor","type":"address","indexed":true},{"internalType":"address","name":"onBehalfOf","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false}],"type":"event","name":"Deposit","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint48","name":"captureTimestamp","type":"uint48","indexed":false},{"internalType":"uint256","name":"slashedAmount","type":"uint256","indexed":false}],"type":"event","name":"OnSlash","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true}],"type":"event","name":"SetDelegator","anonymous":false},{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"SetDepositLimit","anonymous":false},{"inputs":[{"internalType":"bool","name":"status","type":"bool","indexed":false}],"type":"event","name":"SetDepositWhitelist","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"bool","name":"status","type":"bool","indexed":false}],"type":"event","name":"SetDepositorWhitelistStatus","anonymous":false},{"inputs":[{"internalType":"bool","name":"status","type":"bool","indexed":false}],"type":"event","name":"SetIsDepositLimit","anonymous":false},{"inputs":[{"internalType":"address","name":"slasher","type":"address","indexed":true}],"type":"event","name":"SetSlasher","anonymous":false},{"inputs":[{"internalType":"address","name":"withdrawer","type":"address","indexed":true},{"internalType":"address","name":"claimer","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"burnedShares","type":"uint256","indexed":false},{"internalType":"uint256","name":"mintedShares","type":"uint256","indexed":false}],"type":"event","name":"Withdraw","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DELEGATOR_FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEPOSITOR_WHITELIST_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEPOSIT_LIMIT_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEPOSIT_WHITELIST_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_DEPOSIT_LIMIT_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"SLASHER_FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"activeBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hints","type":"bytes"}],"stateMutability":"view","type":"function","name":"activeBalanceOfAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"vault","type":"address"},{"internalType":"address","name":"account","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"activeBalanceOfHints","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"activeShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"activeSharesAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"vault","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"activeSharesHint","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"activeSharesHintInternal","outputs":[{"internalType":"bool","name":"exists","type":"bool"},{"internalType":"uint32","name":"hint","type":"uint32"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"activeSharesOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"activeSharesOfAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"vault","type":"address"},{"internalType":"address","name":"account","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"activeSharesOfHint","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"activeSharesOfHintInternal","outputs":[{"internalType":"bool","name":"exists","type":"bool"},{"internalType":"uint32","name":"hint","type":"uint32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"activeStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"activeStakeAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"vault","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"activeStakeHint","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"activeStakeHintInternal","outputs":[{"internalType":"bool","name":"exists","type":"bool"},{"internalType":"uint32","name":"hint","type":"uint32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"burner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"epoch","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"claim","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256[]","name":"epochs","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"claimBatch","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"collateral","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"currentEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"currentEpochStart","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"delegator","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"onBehalfOf","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"deposit","outputs":[{"internalType":"uint256","name":"depositedAmount","type":"uint256"},{"internalType":"uint256","name":"mintedShares","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"depositLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"depositWhitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"epochAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"epochDuration","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"epochDurationInit","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"initialVersion","type":"uint64"},{"internalType":"address","name":"owner_","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"isDelegatorInitialized","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"isDepositLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"isDepositorWhitelisted","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"isInitialized","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"isSlasherInitialized","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"isWithdrawalsClaimed","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"newVersion","type":"uint64"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"migrate"},{"inputs":[],"stateMutability":"view","type":"function","name":"nextEpochStart","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint48","name":"captureTimestamp","type":"uint48"}],"stateMutability":"nonpayable","type":"function","name":"onSlash","outputs":[{"internalType":"uint256","name":"slashedAmount","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"previousEpochStart","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[{"internalType":"address","name":"claimer","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"redeem","outputs":[{"internalType":"uint256","name":"withdrawnAssets","type":"uint256"},{"internalType":"uint256","name":"mintedShares","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"address","name":"delegator_","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setDelegator"},{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setDepositLimit"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setDepositWhitelist"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setDepositorWhitelistStatus"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setIsDepositLimit"},{"inputs":[{"internalType":"address","name":"slasher_","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setSlasher"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"slashableBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"slasher","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"staticDelegateCall"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"version","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"claimer","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"withdraw","outputs":[{"internalType":"uint256","name":"burnedShares","type":"uint256"},{"internalType":"uint256","name":"mintedShares","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"}],"stateMutability":"view","type":"function","name":"withdrawalShares","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"withdrawalSharesOf","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"}],"stateMutability":"view","type":"function","name":"withdrawals","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"withdrawalsOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{"activeBalanceOf(address)":{"params":{"account":"account to get the active balance for"},"returns":{"_0":"active balance for the account"}},"activeBalanceOfAt(address,uint48,bytes)":{"params":{"account":"account to get the active balance for","hints":"hints for checkpoints' indexes","timestamp":"time point to get the active balance for the account at"},"returns":{"_0":"active balance for the account at the timestamp"}},"activeShares()":{"returns":{"_0":"total number of active shares"}},"activeSharesAt(uint48,bytes)":{"params":{"hint":"hint for the checkpoint index","timestamp":"time point to get the total number of active shares at"},"returns":{"_0":"total number of active shares at the timestamp"}},"activeSharesOf(address)":{"params":{"account":"account to get the number of active shares for"},"returns":{"_0":"number of active shares for the account"}},"activeSharesOfAt(address,uint48,bytes)":{"params":{"account":"account to get the number of active shares for","hint":"hint for the checkpoint index","timestamp":"time point to get the number of active shares for the account at"},"returns":{"_0":"number of active shares for the account at the timestamp"}},"activeStake()":{"returns":{"_0":"total amount of active stake"}},"activeStakeAt(uint48,bytes)":{"params":{"hint":"hint for the checkpoint index","timestamp":"time point to get the total active stake at"},"returns":{"_0":"total amount of active stake at the timestamp"}},"claim(address,uint256)":{"params":{"epoch":"epoch to claim the collateral for","recipient":"account that receives the collateral"},"returns":{"amount":"amount of the collateral claimed"}},"claimBatch(address,uint256[])":{"params":{"epochs":"epochs to claim the collateral for","recipient":"account that receives the collateral"},"returns":{"amount":"amount of the collateral claimed"}},"currentEpoch()":{"returns":{"_0":"current epoch"}},"currentEpochStart()":{"returns":{"_0":"start of the current epoch"}},"deposit(address,uint256)":{"params":{"amount":"amount of the collateral to deposit","onBehalfOf":"account the deposit is made on behalf of"},"returns":{"depositedAmount":"real amount of the collateral deposited","mintedShares":"amount of the active shares minted"}},"epochAt(uint48)":{"details":"Reverts if the timestamp is less than the start of the epoch 0.","params":{"timestamp":"time point to get the epoch at"},"returns":{"_0":"epoch at the timestamp"}},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"initialize(uint64,address,bytes)":{"params":{"data":"some data to use","initialVersion":"initial version of the entity","owner":"initial owner of the entity"}},"isInitialized()":{"returns":{"_0":"if the vault is fully initialized"}},"migrate(uint64,bytes)":{"params":{"data":"some data to use","newVersion":"new version of the entity"}},"nextEpochStart()":{"returns":{"_0":"start of the next epoch"}},"onSlash(uint256,uint48)":{"details":"Only the slasher can call this function.","params":{"amount":"amount to slash","captureTimestamp":"time point when the stake was captured"},"returns":{"slashedAmount":"real amount of the collateral slashed"}},"owner()":{"details":"Returns the address of the current owner."},"previousEpochStart()":{"details":"Reverts if the current epoch is 0.","returns":{"_0":"start of the previous epoch"}},"redeem(address,uint256)":{"params":{"claimer":"account that needs to claim the withdrawal","shares":"amount of the active shares to redeem"},"returns":{"mintedShares":"amount of the epoch withdrawal shares minted","withdrawnAssets":"amount of the collateral withdrawn"}},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"setDepositLimit(uint256)":{"details":"Only a DEPOSIT_LIMIT_SET_ROLE holder can call this function.","params":{"limit":"deposit limit (maximum amount of the collateral that can be in the vault simultaneously)"}},"setDepositWhitelist(bool)":{"details":"Only a DEPOSIT_WHITELIST_SET_ROLE holder can call this function.","params":{"status":"if enabling deposit whitelist"}},"setDepositorWhitelistStatus(address,bool)":{"details":"Only a DEPOSITOR_WHITELIST_ROLE holder can call this function.","params":{"account":"account for which the whitelist status is set","status":"if whitelisting the account"}},"setIsDepositLimit(bool)":{"details":"Only a IS_DEPOSIT_LIMIT_SET_ROLE holder can call this function.","params":{"status":"if enabling deposit limit"}},"slashableBalanceOf(address)":{"params":{"account":"account to get the slashable collateral for"},"returns":{"_0":"total amount of the account's slashable collateral"}},"staticDelegateCall(address,bytes)":{"details":"It allows to use this contract's storage on-chain.","params":{"data":"data to make a delegatecall with","target":"address of the contract to make a delegatecall to"}},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"totalStake()":{"returns":{"_0":"total amount of the slashable collateral"}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"version()":{"details":"Starts from 1.","returns":{"_0":"version of the entity"}},"withdraw(address,uint256)":{"params":{"amount":"amount of the collateral to withdraw","claimer":"account that needs to claim the withdrawal"},"returns":{"burnedShares":"amount of the active shares burned","mintedShares":"amount of the epoch withdrawal shares minted"}},"withdrawalsOf(uint256,address)":{"params":{"account":"account to get the withdrawals for","epoch":"epoch to get the withdrawals for the account at"},"returns":{"_0":"withdrawals for the account at the epoch"}}},"version":1},"userdoc":{"kind":"user","methods":{"DELEGATOR_FACTORY()":{"notice":"Get the delegator factory's address."},"DEPOSITOR_WHITELIST_ROLE()":{"notice":"Get a depositor whitelist status setter's role."},"DEPOSIT_LIMIT_SET_ROLE()":{"notice":"Get a deposit limit setter's role."},"DEPOSIT_WHITELIST_SET_ROLE()":{"notice":"Get a deposit whitelist enabler/disabler's role."},"FACTORY()":{"notice":"Get the factory's address."},"IS_DEPOSIT_LIMIT_SET_ROLE()":{"notice":"Get a deposit limit enabler/disabler's role."},"SLASHER_FACTORY()":{"notice":"Get the slasher factory's address."},"activeBalanceOf(address)":{"notice":"Get an active balance for a particular account."},"activeBalanceOfAt(address,uint48,bytes)":{"notice":"Get an active balance for a particular account at a given timestamp using hints."},"activeShares()":{"notice":"Get a total number of active shares in the vault."},"activeSharesAt(uint48,bytes)":{"notice":"Get a total number of active shares in the vault at a given timestamp using a hint."},"activeSharesOf(address)":{"notice":"Get a number of active shares for a particular account."},"activeSharesOfAt(address,uint48,bytes)":{"notice":"Get a total number of active shares for a particular account at a given timestamp using a hint."},"activeStake()":{"notice":"Get a total amount of active stake in the vault."},"activeStakeAt(uint48,bytes)":{"notice":"Get a total amount of active stake in the vault at a given timestamp using a hint."},"burner()":{"notice":"Get a burner to issue debt to (e.g., 0xdEaD or some unwrapper contract)."},"claim(address,uint256)":{"notice":"Claim collateral from the vault."},"claimBatch(address,uint256[])":{"notice":"Claim collateral from the vault for multiple epochs."},"collateral()":{"notice":"Get a vault collateral."},"currentEpoch()":{"notice":"Get a current vault epoch."},"currentEpochStart()":{"notice":"Get a start of the current vault epoch."},"delegator()":{"notice":"Get a delegator (it delegates the vault's stake to networks and operators)."},"deposit(address,uint256)":{"notice":"Deposit collateral into the vault."},"depositLimit()":{"notice":"Get a deposit limit (maximum amount of the active stake that can be in the vault simultaneously)."},"depositWhitelist()":{"notice":"Get if the deposit whitelist is enabled."},"epochAt(uint48)":{"notice":"Get an epoch at a given timestamp."},"epochDuration()":{"notice":"Get a duration of the vault epoch."},"epochDurationInit()":{"notice":"Get a time point of the epoch duration set."},"initialize(uint64,address,bytes)":{"notice":"Initialize this entity contract by using a given data and setting a particular version and owner."},"isDelegatorInitialized()":{"notice":"Get if the delegator is initialized."},"isDepositLimit()":{"notice":"Get if the deposit limit is set."},"isDepositorWhitelisted(address)":{"notice":"Get if a given account is whitelisted as a depositor."},"isInitialized()":{"notice":"Check if the vault is fully initialized (a delegator and a slasher are set)."},"isSlasherInitialized()":{"notice":"Get if the slasher is initialized."},"isWithdrawalsClaimed(uint256,address)":{"notice":"Get if the withdrawals are claimed for a particular account at a given epoch."},"migrate(uint64,bytes)":{"notice":"Migrate this entity to a particular newer version using a given data."},"nextEpochStart()":{"notice":"Get a start of the next vault epoch."},"onSlash(uint256,uint48)":{"notice":"Slash callback for burning collateral."},"previousEpochStart()":{"notice":"Get a start of the previous vault epoch."},"redeem(address,uint256)":{"notice":"Redeem collateral from the vault (it will be claimable after the next epoch)."},"setDepositLimit(uint256)":{"notice":"Set a deposit limit."},"setDepositWhitelist(bool)":{"notice":"Enable/disable deposit whitelist."},"setDepositorWhitelistStatus(address,bool)":{"notice":"Set a depositor whitelist status."},"setIsDepositLimit(bool)":{"notice":"Enable/disable deposit limit."},"slashableBalanceOf(address)":{"notice":"Get a total amount of the collateral that can be slashed for a given account."},"slasher()":{"notice":"Get a slasher (it provides networks a slashing mechanism)."},"staticDelegateCall(address,bytes)":{"notice":"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data)."},"totalStake()":{"notice":"Get a total amount of the collateral that can be slashed."},"version()":{"notice":"Get the entity's version."},"withdraw(address,uint256)":{"notice":"Withdraw collateral from the vault (it will be claimable after the next epoch)."},"withdrawalShares(uint256)":{"notice":"Get a total number of withdrawal shares at a given epoch."},"withdrawalSharesOf(uint256,address)":{"notice":"Get a number of withdrawal shares for a particular account at a given epoch (zero if claimed)."},"withdrawals(uint256)":{"notice":"Get a total amount of the withdrawals at a given epoch."},"withdrawalsOf(uint256,address)":{"notice":"Get withdrawals for a particular account at a given epoch (zero if claimed)."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/hints/VaultHints.sol":"VaultHints"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol":{"keccak256":"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866","urls":["bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf","dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab","urls":["bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89","dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606","urls":["bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1","dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310","urls":["bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862","dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol":{"keccak256":"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f","urls":["bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44","dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc","urls":["bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6","dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza"],"license":"MIT"},"src/contracts/common/MigratableEntity.sol":{"keccak256":"0x303ad40a3de8fa808cc30a6fbd5998633f6a89b982e6db1fa981e0566ab445e7","urls":["bzz-raw://fa8fb92995ead02798e013190b87b84b44cc68668262f045c9b0b4783940e2bf","dweb:/ipfs/QmV1uKGVLKwWisc714R8fCt71gXUQJpaKvdc6LQ8WtvMpL"],"license":"BUSL-1.1"},"src/contracts/common/StaticDelegateCallable.sol":{"keccak256":"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90","urls":["bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764","dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD"],"license":"BUSL-1.1"},"src/contracts/hints/Hints.sol":{"keccak256":"0x8b565df1ae35993c097a9e642002782a8f451f6fd01809cad6bcd345bdf1b99c","urls":["bzz-raw://99a19adb01e350a92f534095b3078229df1f2f83077992d75d58d8684be45971","dweb:/ipfs/QmbmwcuswVbzvwHQFTtrJG86oV98GnfxqYTb8cV8u1acox"],"license":"BUSL-1.1"},"src/contracts/hints/VaultHints.sol":{"keccak256":"0xccb505b7159b769cc114d67b87c2de6b106557f667fc8f3780114baad5c3c442","urls":["bzz-raw://6d0c80a908fc16e96a8b5605a0bd53f9e89ad0ef0a738fbbae80ba4d3160749b","dweb:/ipfs/QmXo5UtWoR8YmunqcbBU8rQMm1nvmvjNPoXcVrDhh4pEwR"],"license":"BUSL-1.1"},"src/contracts/libraries/Checkpoints.sol":{"keccak256":"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c","urls":["bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609","dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE"],"license":"MIT"},"src/contracts/libraries/ERC4626Math.sol":{"keccak256":"0x8441160513c1cbeb1c3b9ee077bcc7e7ce20006b52a77c8dd39ff0ef89699939","urls":["bzz-raw://943f8cc3e26ddf649f465f40c909819f5c864717c4baa339e9e403b9374a4653","dweb:/ipfs/QmXPxi1sUDsrGprZdUgCzoPEosaZMv9ZhygWQ1vAi1phAB"],"license":"MIT"},"src/contracts/vault/Vault.sol":{"keccak256":"0x7ee6dbf060c45d6eba95315f4ac0b3b467dd9c4999b84c31d6f66d4d8b53a116","urls":["bzz-raw://301948b8ea522db292aa2722ba42def3911dae95f0b376f7023c3fef470f8676","dweb:/ipfs/QmSDbP2HdzhDAzstr8Zz5isEAcSkma8ABc5UwPsoazaumZ"],"license":"BUSL-1.1"},"src/contracts/vault/VaultStorage.sol":{"keccak256":"0x57db25b127d77ea3472de53e3a4af3354399655b9268638b99ca5925fa364a56","urls":["bzz-raw://aa763d9a6ec508ae3abfb8228b72b9fd9525279e5135d4962e79ff059feb1173","dweb:/ipfs/QmcbDR6E9wyEpu6V2FkEC4hnWy47zXA9LSKJde6zSGd33Q"],"license":"BUSL-1.1"},"src/interfaces/common/IEntity.sol":{"keccak256":"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21","urls":["bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b","dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv"],"license":"MIT"},"src/interfaces/common/IMigratableEntity.sol":{"keccak256":"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4","urls":["bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c","dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds"],"license":"MIT"},"src/interfaces/common/IRegistry.sol":{"keccak256":"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb","urls":["bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014","dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK"],"license":"MIT"},"src/interfaces/common/IStaticDelegateCallable.sol":{"keccak256":"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5","urls":["bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516","dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi"],"license":"MIT"},"src/interfaces/delegator/IBaseDelegator.sol":{"keccak256":"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee","urls":["bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2","dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8"],"license":"MIT"},"src/interfaces/slasher/IBaseSlasher.sol":{"keccak256":"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404","urls":["bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf","dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx"],"license":"MIT"},"src/interfaces/vault/IVault.sol":{"keccak256":"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235","urls":["bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9","dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R"],"license":"MIT"},"src/interfaces/vault/IVaultStorage.sol":{"keccak256":"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22","urls":["bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e","dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6"],"license":"MIT"}},"version":1},"id":92} \ No newline at end of file diff --git a/out/VaultImplementation.sol/VaultImplementation.json b/out/VaultImplementation.sol/VaultImplementation.json new file mode 100644 index 00000000..2f23cf86 --- /dev/null +++ b/out/VaultImplementation.sol/VaultImplementation.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[{"name":"delegatorFactory","type":"address","internalType":"address"},{"name":"slasherFactory","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"DELEGATOR_FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"DEPOSITOR_WHITELIST_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"DEPOSIT_LIMIT_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"DEPOSIT_WHITELIST_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"EPOCH_DURATION_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"FLASH_FEE_BASE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"FLASH_FEE_RATE_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"FLASH_FEE_RECEIVER_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"FLASH_LOAN_ENABLED_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"IS_DEPOSIT_LIMIT_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"RETURN_VALUE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"SLASHER_FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"activeBalanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"activeBalanceOfAt","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hints","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"activeShares","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"activeSharesAt","inputs":[{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"activeSharesOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"activeSharesOfAt","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"activeStake","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"activeStakeAt","inputs":[{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"burner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"claim","inputs":[{"name":"recipient","type":"address","internalType":"address"},{"name":"epoch","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"claimBatch","inputs":[{"name":"recipient","type":"address","internalType":"address"},{"name":"epochs","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"collateral","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"currentEpoch","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"currentEpochStart","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"delegator","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"deposit","inputs":[{"name":"onBehalfOf","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"depositedAmount","type":"uint256","internalType":"uint256"},{"name":"mintedShares","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"depositLimit","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"depositWhitelist","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"epochAt","inputs":[{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"epochDuration","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"epochDurationInit","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"epochDurationSetEpochsDelay","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"epochStart","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"flashFee","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"flashFeeRate","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"flashFeeReceiver","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"flashLoan","inputs":[{"name":"receiver","type":"address","internalType":"contract IERC3156FlashBorrower"},{"name":"token","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"flashLoanEnabled","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isDelegatorInitialized","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isDepositLimit","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isDepositorWhitelisted","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isInitialized","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isSlasherInitialized","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isWithdrawalsClaimed","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"maxFlashLoan","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"nextEpochStart","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"onSlash","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"slashedAmount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"previousEpochStart","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"redeem","inputs":[{"name":"claimer","type":"address","internalType":"address"},{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"withdrawnAssets","type":"uint256","internalType":"uint256"},{"name":"mintedShares","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDelegator","inputs":[{"name":"delegator_","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDepositLimit","inputs":[{"name":"limit","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDepositWhitelist","inputs":[{"name":"status","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDepositorWhitelistStatus","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"status","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setEpochDuration","inputs":[{"name":"epochDuration_","type":"uint48","internalType":"uint48"},{"name":"epochDurationSetEpochsDelay_","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setFlashFeeRate","inputs":[{"name":"flashFeeRate_","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setFlashFeeReceiver","inputs":[{"name":"flashFeeReceiver_","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setFlashloanEnabled","inputs":[{"name":"status","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setIsDepositLimit","inputs":[{"name":"status","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSlasher","inputs":[{"name":"slasher_","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"slashableBalanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"slasher","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"staticDelegateCall","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"totalStake","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"withdraw","inputs":[{"name":"claimer","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"burnedShares","type":"uint256","internalType":"uint256"},{"name":"mintedShares","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawalShares","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"withdrawalSharesOf","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"withdrawals","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"withdrawalsOf","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"Claim","inputs":[{"name":"claimer","type":"address","indexed":true,"internalType":"address"},{"name":"recipient","type":"address","indexed":true,"internalType":"address"},{"name":"epoch","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ClaimBatch","inputs":[{"name":"claimer","type":"address","indexed":true,"internalType":"address"},{"name":"recipient","type":"address","indexed":true,"internalType":"address"},{"name":"epochs","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Deposit","inputs":[{"name":"depositor","type":"address","indexed":true,"internalType":"address"},{"name":"onBehalfOf","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OnSlash","inputs":[{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","indexed":false,"internalType":"uint48"},{"name":"slashedAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SetDelegator","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SetDepositLimit","inputs":[{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SetDepositWhitelist","inputs":[{"name":"status","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"SetDepositorWhitelistStatus","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"status","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"SetEpochDuration","inputs":[{"name":"epochDuration","type":"uint48","indexed":false,"internalType":"uint48"},{"name":"epochDurationSetEpochsDelay","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SetFlashFeeRate","inputs":[{"name":"flashFeeRate","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SetFlashFeeReceiver","inputs":[{"name":"flashFeeReceiver","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SetFlashloanEnabled","inputs":[{"name":"status","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"SetIsDepositLimit","inputs":[{"name":"status","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"SetSlasher","inputs":[{"name":"slasher","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Withdraw","inputs":[{"name":"withdrawer","type":"address","indexed":true,"internalType":"address"},{"name":"claimer","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"burnedShares","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"mintedShares","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"AlreadyClaimed","inputs":[]},{"type":"error","name":"AlreadySet","inputs":[]},{"type":"error","name":"CheckpointUnorderedInsertion","inputs":[]},{"type":"error","name":"DelegatorAlreadyInitialized","inputs":[]},{"type":"error","name":"DepositLimitReached","inputs":[]},{"type":"error","name":"InsufficientClaim","inputs":[]},{"type":"error","name":"InsufficientDeposit","inputs":[]},{"type":"error","name":"InsufficientExitWindow","inputs":[]},{"type":"error","name":"InsufficientRedemption","inputs":[]},{"type":"error","name":"InsufficientWithdrawal","inputs":[]},{"type":"error","name":"InvalidAccount","inputs":[]},{"type":"error","name":"InvalidCaptureEpoch","inputs":[]},{"type":"error","name":"InvalidClaimer","inputs":[]},{"type":"error","name":"InvalidCollateral","inputs":[]},{"type":"error","name":"InvalidDelegator","inputs":[]},{"type":"error","name":"InvalidEpoch","inputs":[]},{"type":"error","name":"InvalidEpochDuration","inputs":[]},{"type":"error","name":"InvalidEpochDurationSetEpochsDelay","inputs":[]},{"type":"error","name":"InvalidFlashParams","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"InvalidLengthEpochs","inputs":[]},{"type":"error","name":"InvalidNewEpochDuration","inputs":[]},{"type":"error","name":"InvalidOnBehalfOf","inputs":[]},{"type":"error","name":"InvalidOrigin","inputs":[]},{"type":"error","name":"InvalidReceiver","inputs":[]},{"type":"error","name":"InvalidRecipient","inputs":[]},{"type":"error","name":"InvalidReturnAmount","inputs":[]},{"type":"error","name":"InvalidSlasher","inputs":[]},{"type":"error","name":"InvalidTimestamp","inputs":[]},{"type":"error","name":"MaxLoanExceeded","inputs":[]},{"type":"error","name":"MissingRoles","inputs":[]},{"type":"error","name":"NewEpochDurationNotReady","inputs":[]},{"type":"error","name":"NoDepositWhitelist","inputs":[]},{"type":"error","name":"NoPreviousEpoch","inputs":[]},{"type":"error","name":"NotDelegator","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"NotSlasher","inputs":[]},{"type":"error","name":"NotWhitelistedDepositor","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]},{"type":"error","name":"SlasherAlreadyInitialized","inputs":[]},{"type":"error","name":"TooLowFlashLoanValue","inputs":[]},{"type":"error","name":"TooMuchRedeem","inputs":[]},{"type":"error","name":"TooMuchWithdraw","inputs":[]},{"type":"error","name":"UnsupportedToken","inputs":[]}],"bytecode":{"object":"0x60c034608157601f614c3638819003918201601f19168301916001600160401b038311848410176085578084926040948552833981010312608157604b60206045836099565b92016099565b9060805260a052604051614b8990816100ad82396080518181816113cf0152611870015260a051818181611d6901526122860152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b038216820360815756fe60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a7146104e45780631415519b146104df5780631b66c9e1146104da5780631e9a6950146104d5578063248a9ca3146104d057806327810b6e146104cb578063281f5752146104c65780632d73c69c146104c15780632f2ff15d146104bc57806331d9736c146104b757806336568abe146104b2578063392e53cd146104ad5780634105a7dd146104a857806346361671146104a357806347e7ef241461049e57806348d3b775146104995780634ff0876a1461049457806350861adc1461048f57806350f220681461048a57806352741a40146104855780635346e34f1461048057806359f769a91461047b5780635cc07076146104765780635cffe9de14610471578063613255ab1461046c57806361819dd81461046757806361a8c8c414610462578063653b04cd1461045d57806365d61c6c146104585780636da3e06d146104535780636ec1e3f81461044e5780637278e31c1461044957806373790ab314610444578063766718081461043f578063794b15b71461043a5780637953b33b146104355780637c04c80a14610430578063810da75d1461042b57806383cd9cc31461042657806383f46c2c14610421578063859b93441461041c57806387df0788146104175780638b0e9f3f1461041257806391d148541461040d5780639d66201b146104085780639f86fd8514610403578063a1b12202146103fe578063a217fddf146103f9578063a21a1df9146103f4578063a2861466146103ef578063a3b54172146103ea578063a5d03223146103e5578063a66b3a73146103e0578063a8b24f9a146103db578063aa9354a3146103d6578063aabc2496146103d1578063aad3ec96146103cc578063afba70ad146103c7578063b1344271146103c2578063bc46f722146103bd578063bd49c35f146103b8578063bdc8144b146103b3578063bfefcd7b146103ae578063c31e8dd7146103a9578063c642b050146103a4578063ce9b79301461039f578063d547741f1461039a578063d626811b14610395578063d8dfeb4514610390578063d9d98ce41461038b578063db38871514610386578063e945da7f14610381578063ecc98f051461037c578063ecf7085814610377578063efb559d614610372578063f3fef3a31461036d5763f5e7ee0f14610368575f80fd5b612a52565b6129ac565b612861565b612844565b612826565b612809565b6127cf565b6127a4565b612779565b6126b9565b61266d565b612645565b61262b565b6125bd565b6125a3565b6124e3565b6124c9565b61248f565b612467565b61243d565b61237c565b6121d3565b6121b5565b61218d565b612153565b61210d565b6120c0565b611fdb565b611fa1565b611f87565b611f63565b611e96565b611e5c565b611dfe565b611d98565b611d54565b611cc8565b6119b6565b61180b565b6117f2565b61178c565b61176e565b61172e565b611710565b6116de565b611423565b6113fe565b6113ba565b611395565b61135b565b611335565b6112fb565b6112d4565b61101a565b610fc3565b610f9c565b610f15565b610e14565b610dfb565b610d95565b610d7b565b610d5a565b610aaa565b610a90565b6109f5565b6109b0565b610965565b61092b565b6108dd565b61086d565b6106ff565b6106d7565b61069e565b6105c3565b610578565b61053e565b3461053a57602036600319011261053a5760043563ffffffff60e01b811680910361053a57602090637965db0b60e01b8114908115610529575b506040519015158152f35b6301ffc9a760e01b1490505f61051e565b5f80fd5b3461053a575f36600319011261053a5760206040517fc6aaadd7371d5e8f9ed6849dd66a66573a3ba37167d03f4352c9ba5693678fac8152f35b3461053a575f36600319011261053a5760206040517f9c56d972d63cbb4195b3c1484691dfc220fa96a4c47e7b6613bd82a022029e068152f35b6001600160a01b0381160361053a57565b3461053a57604036600319011261053a576004356105e0816105b2565b602435906105ec6130fe565b6001600160a01b0381161561068d57335f908152600e6020526040902061061790613f40565b613f40565b821161067b57610637610628613e58565b610630613ecc565b9084613f93565b918215610666578261064892613140565b9061065161312d565b604080519182526020820192909252f35b0390f35b60405160016245ddc760e11b03198152600490fd5b604051632418411f60e11b8152600490fd5b6040516208978560e71b8152600490fd5b3461053a57602036600319011261053a576004355f525f80516020614b148339815191526020526020600160405f200154604051908152f35b3461053a575f36600319011261053a576001546040516001600160a01b039091168152602090f35b3461053a575f36600319011261053a5761072061071b42613e26565b612ce4565b8015610751575f19810190811161074c5761073c602091612f2c565b65ffffffffffff60405191168152f35b612a7c565b604051639fa56a5b60e01b8152600490fd5b6024359065ffffffffffff8216820361053a57565b6004359065ffffffffffff8216820361053a57565b634e487b7160e01b5f52604160045260245ffd5b606081019081106001600160401b038211176107bc57604052565b61078d565b604081019081106001600160401b038211176107bc57604052565b90601f801991011681019081106001600160401b038211176107bc57604052565b6040519061080a826107c1565b565b6001600160401b0381116107bc57601f01601f191660200190565b81601f8201121561053a5780359061083e8261080c565b9261084c60405194856107dc565b8284526020838301011161053a57815f926020809301838601378301015290565b3461053a57606036600319011261053a5760043561088a816105b2565b610892610763565b90604435906001600160401b03821161053a576020926108b96108d5933690600401610827565b6001600160a01b039092165f908152600e85526040902061347a565b604051908152f35b3461053a57604036600319011261053a57610929602435600435610900826105b2565b805f525f80516020614b14833981519152602052610924600160405f2001546136ff565b61372b565b005b3461053a575f36600319011261053a5760206040517f5295aaaa27fdd659293eafacbfafbc634c1b96298957e87de5f59308cdbfdad18152f35b3461053a57604036600319011261053a57602435610982816105b2565b336001600160a01b0382160361099e57610929906004356137c6565b60405163334bd91960e11b8152600490fd5b3461053a575f36600319011261053a5760ff60025460a01c16806109dc575b6020906040519015158152f35b5060035460a01c60ff166109cf565b8015150361053a57565b3461053a57602036600319011261053a57600435610a12816109eb565b610a1a6130fe565b610a22613546565b5f54901515908160ff8216151514610a7e5760ff191660ff8216175f556040519081527f3e12b7b36c75ac9609a3f58609b331210428e1a85909132638955ba0301eec3390602090a160015f80516020614b3483398151915255005b60405163a741a04560e01b8152600490fd5b3461053a575f36600319011261053a57602061073c612acc565b3461053a5760408060031936011261053a576004803591610aca836105b2565b610ad26130fe565b6001600160a01b0391838316908115610d4c575f5460ff811680610d33575b610d245783516370a0823160e01b808252308483019081529096602093909160109190911c82169084908490819083010381845afa928315610cfc575f93610d01575b50610b46906024359030903390613858565b5f5486519788523085890190815290979184918391908290819060200103918b60101c165afa908115610cfc57610b85935f92610ccf575b5050612a9e565b938415610cc05760081c60ff1680610cab575b610c9d57509061066291610c49610bad613e58565b95610bf6610bb9613ecc565b610be1610bc78a838b613f93565b99610bdb8a610bd542613e26565b92612b34565b906139ac565b5050610bf089610bd542613e26565b90613a8c565b50506001600160a01b0381165f908152600e6020526040902090610c4388610c3e610612610c2342613e26565b6001600160a01b039095165f908152600e6020526040902090565b612b34565b91613b68565b505081518481526020810186905233907fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d790604090a3610c8761312d565b5191825260208201929092529081906040820190565b8251632484557960e01b8152fd5b50610cb884610c3e613e58565b815410610b98565b50825163070f6eed60e11b8152fd5b610cee9250803d10610cf5575b610ce681836107dc565b810190612b0c565b5f80610b7e565b503d610cdc565b612b1b565b610b46919350610d1d90853d8711610cf557610ce681836107dc565b9290610b34565b5082516304f63b8560e01b8152fd5b50335f9081526005602052604090205460ff1615610af1565b8251630d534ce360e11b8152fd5b3461053a575f36600319011261053a57602060ff5f54166040519015158152f35b3461053a575f36600319011261053a57602061073c612b41565b3461053a575f36600319011261053a57602060ff60025460a01c166040519015158152f35b90604060031983011261053a5760043565ffffffffffff8116810361053a5791602435906001600160401b03821161053a57610df891600401610827565b90565b3461053a5760206108d5610e0e36610dba565b906132ef565b3461053a57602036600319011261053a57600435610e31816105b2565b610e396130fe565b335f9081527f9aeaa4f1a9be826e331dea6728ca206744e0a34dccbc1d3da4a68acb8abf036360205260409020547f5295aaaa27fdd659293eafacbfafbc634c1b96298957e87de5f59308cdbfdad19060ff1615610ef757506016546001600160a01b039182169181168214610a7e576001600160a01b03191681176016556040519081527f08aacfdb137d688b12f67ef81735dede1ae18b0664f6b347ee9ef00ae94ff91990602090a160015f80516020614b3483398151915255005b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b3461053a57602036600319011261053a57600435610f32816109eb565b610f3a6130fe565b610f426135a3565b5f54901515908160ff8260081c16151514610a7e5761ff001916600882901b61ff0016175f556040519081527ffa7a25a0b611d4ba3c0ea990e90dc23d484a5dd7a1be4733fef2946ba74530c690602090a161092961312d565b3461053a57602036600319011261053a5760206108d5600435610fbe816105b2565b612b87565b3461053a57602036600319011261053a576004355f526006602052602060405f2054604051908152f35b9181601f8401121561053a578235916001600160401b03831161053a576020838186019501011161053a57565b3461053a57608036600319011261053a5760048035611038816105b2565b602435611044816105b2565b604435906064356001600160401b03811161053a576110669036908601610fed565b9190926110716130fe565b80156112c35761108082612c20565b81116112b25781611094826110f594613044565b5f549092906110b69060101c6001600160a01b03165b6001600160a01b031690565b604080516370a0823160e01b808252308c8301908152929a939991986020986001600160a01b03808d16989097939693959094918b918d918291840190565b03818b5afa9a8b15610cfc578c978f948f925f9e61126d575b50928b611142936111298f98968b9a98958b9116809e613c26565b516323e30c8b60e01b8152978896879633908801612bd6565b03815f885af18015610cfc577f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd9915f91611250575b500361124057859261118c8661119593612b34565b9030908a613858565b875190815230898201908152909283918290819060200103915afa928315610cfc575f93611221575b50506111ca8383612a9e565b1061121157906111d991612a9e565b806111f2575b826111e861312d565b5160018152602090f35b60165461120a92906001600160a01b03165b90613c26565b81806111df565b50505051637f28d71160e01b8152fd5b611238929350803d10610cf557610ce681836107dc565b905f806111be565b8851631e4ec46b60e01b81528a90fd5b6112679150883d8a11610cf557610ce681836107dc565b5f611177565b889e5088979592938e9795928e92893d8b116112ab575b61128e81836107dc565b810161129991612b0c565b9f509295979e9f50939295975061110e565b503d611284565b60405163347177ad60e21b81528690fd5b6040516391ba94bf60e01b81528690fd5b3461053a57602036600319011261053a5760206108d56004356112f6816105b2565b612c20565b3461053a575f36600319011261053a5760206040517f591f6a0113ada8aff67efadec8ae2fa585cb4ebf4e1f8fc1205ffbeff98d00ec8152f35b3461053a575f36600319011261053a57602061073c61135661071b42613e26565b612f2c565b3461053a575f36600319011261053a5760206040517f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd98152f35b3461053a575f36600319011261053a57602060ff60165460a01c166040519015158152f35b3461053a575f36600319011261053a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461053a575f36600319011261053a57602060ff60035460a01c166040519015158152f35b3461053a57604036600319011261053a5760043561143f610763565b6114476130fe565b60035461145c906001600160a01b03166110aa565b33036116cc5761146e61071b42613e26565b9061147881612ce4565b90821515806116bb575b80156116b2575b6116a057610662937ff9d090c096f71cd1659861a9ce5b6f384bceb4e2fa4e4a19edf6489a9b8d56c7926114bb613e58565b946114d66114c882612b26565b5f52600660205260405f2090565b54908281036115ba57506114ea8187612b34565b838118818510028118968780611573575b50505050505b83611540575b6040805191825265ffffffffffff929092166020820152908101839052606090a161153061312d565b6040519081529081906020820190565b5f5461156e90859061155d9060101c6001600160a01b03166110aa565b6001546001600160a01b0316611204565b611507565b6115af93610b7e83610bdb6115996115926114c8986115a99888613cfd565b8096612a9e565b946115a342613e26565b92612a9e565b92612b26565b555f808080876114fb565b91506115ce825f52600660205260405f2090565b54906115de81610c3e848a612b34565b9084821882861002821897886115f9575b5050505050611501565b61166e93836116219361162e8c61162961161761165f998884613cfd565b9788958584613cfd565b948592612a9e565b612a9e565b93848410611679575b610b7e90610bdb61164d9596976115a342613e26565b6116596114c887612b26565b55612a9e565b915f52600660205260405f2090565b555f808080806115ef565b91611695610b7e9161168f8661164d9798612a9e565b90612b34565b859450929050611637565b604051635e18d2a560e01b8152600490fd5b50828211611489565b506116c583612a90565b8210611482565b60405163dabc4ad960e01b8152600490fd5b3461053a575f36600319011261053a576116fa61071b42613e26565b6001810180911161074c5761073c602091612f2c565b3461053a575f36600319011261053a5760206108d561071b42613e26565b3461053a57602036600319011261053a5760043561174b816105b2565b60018060a01b03165f526005602052602060ff60405f2054166040519015158152f35b3461053a57602036600319011261053a5760206108d561071b610778565b3461053a57604036600319011261053a576004356117a9816105b2565b6024356001600160401b0380821161053a573660238301121561053a57816004013590811161053a573660248260051b8401011161053a57610662926024611530930190612dcf565b3461053a5760206108d561180536610dba565b906133c5565b3461053a5760208060031936011261053a57600480359061182b826105b2565b6118336130fe565b60025460a01c60ff166119a7576040516302910f8b60e31b81526001600160a01b03838116838301908152909491908290829081906020010381887f0000000000000000000000000000000000000000000000000000000000000000165afa908115610cfc575f9161197a575b501561196a5760405163fbfa77cf60e01b8152838516949082818581895afa928315610cfc575f9361193b575b50503091160361192c5750600280546001600160a01b03929092166001600160a81b031990921691909117600160a01b1790557fdb2160616f776a37b24808115554e79439bf26cccbbd4438190cc6d28e80ecd15f80a261092961312d565b60405163b9f0f17160e01b8152fd5b61195b929350803d10611963575b61195381836107dc565b810190612f04565b905f806118cd565b503d611949565b506040516324e5af8d60e21b8152fd5b61199a9150823d84116119a0575b61199281836107dc565b810190612eef565b5f6118a0565b503d611988565b604051631380833b60e01b8152fd5b3461053a57604036600319011261053a576119cf610778565b6024356119da6130fe565b6119e26135fa565b60038110611cb65765ffffffffffff9182611a0860135465ffffffffffff9060601c1690565b168015159081611ca0575b50611b7d575b60015460d01c8316818416808211611b6b57601354611a499060601c65ffffffffffff165b65ffffffffffff1690565b159182611b61575b505080611b56575b610a7e57611b2b611b02611afd7f1b3efab1b836932ce515e4748ca76335809d1d202c92ee86d594e43ce0039e8395611aa8611aa3611a9a61071b42613e26565b600f5490612b34565b601455565b6013805465ffffffffffff60901b1916609087901b65ffffffffffff60901b16179055611ada61135661071b42613e26565b90611af6600f54611af0611a3e60015460d01c90565b90612f19565b9116612b34565b613e26565b6013805465ffffffffffff60601b191660609290921b65ffffffffffff60601b16919091179055565b611b3482601055565b6040805165ffffffffffff9290921682526020820192909252a161092961312d565b5081600f5414611a59565b1490505f80611a51565b6040516359dcfd5560e11b8152600490fd5b611b88601154601255565b611bc2611b9760015460d01c90565b6bffffffffffff0000000000006013549160301b16906bffffffffffff000000000000191617601355565b600154611bee9060a01c65ffffffffffff1665ffffffffffff1665ffffffffffff196013541617601355565b611bf9601454601155565b601354611c309060901c65ffffffffffff16600180546001600160d01b031660d09290921b6001600160d01b031916919091179055565b601354611c6b9060601c65ffffffffffff166001805465ffffffffffff60a01b191660a09290921b65ffffffffffff60a01b16919091179055565b611c76601054600f55565b611c7f5f601455565b601380546bffffffffffffffffffffffff60601b191690555f601055611a19565b9050611cae611a3e42613e26565b10155f611a13565b6040516317a509b960e31b8152600490fd5b3461053a57602036600319011261053a57600435611ce5816109eb565b611ced6130fe565b611cf5613651565b601654901515908160ff8260a01c16151514610a7e5760ff60a01b191660a082901b60ff60a01b16176016556040519081527e4ea26b9681ba216ba307c9c0ee4edcef296c9af6506b16ad458a51431745d990602090a161092961312d565b3461053a575f36600319011261053a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461053a575f36600319011261053a57611db461071b42613e26565b611dbc613e58565b90805f52600660205260405f2054820180921161074c576001810180911161074c575f52600660205260405f2054810180911161074c57604051908152602090f35b3461053a57604036600319011261053a57602060ff611e50602435611e22816105b2565b6004355f525f80516020614b14833981519152845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b3461053a57602036600319011261053a57600435611e79816105b2565b60018060a01b03165f52600e60205260206108d560405f20613f40565b3461053a5760408060031936011261053a57600435611eb4816105b2565b6024356001600160401b03811161053a575f80611f5293611edb6080943690600401610fed565b908188519283928337810184815203915af43d15611f5a5760203d611eff8161080c565b90611f0c875192836107dc565b81523d5f8383013e5b8551958693151583850152808401528051918291826060860152018484015e5f838284010152601f801991011681010360608101845201826107dc565b805190602001fd5b60206060611f15565b3461053a575f36600319011261053a57602060ff5f5460081c166040519015158152f35b3461053a575f36600319011261053a5760206040515f8152f35b3461053a575f36600319011261053a5760206040517f4a634bc14d77baf979756509ef4298c6f6318af357828612545267ee2eb792338152f35b3461053a57604036600319011261053a57600435611ff8816105b2565b602435612004816109eb565b61200c6130fe565b6120146136a8565b6001600160a01b0382169182156120ae575f8381526005602052604090205460ff16151582151514610a7e576001600160a01b03165f9081526005602052604090207ff991b1ecfb5115cbb36a2b2e2240c058406d2acc2fcc6e9e2dc99d845ff70a62916120a391612091908260ff801983541691151516179055565b60405190151581529081906020820190565b0390a261092961312d565b604051630da30f6560e31b8152600490fd5b3461053a57604036600319011261053a5760206121046024356120e2816105b2565b6004355f526008835260405f209060018060a01b03165f5260205260405f2090565b54604051908152f35b3461053a57604036600319011261053a57602060ff611e50602435612131816105b2565b6004355f526009845260405f209060018060a01b03165f5260205260405f2090565b3461053a575f36600319011261053a5760206040517fc9feed28b4b1a1d11c6791da7bb7f6b8d33e831a4992a9383dead1ec2c82c35a8152f35b3461053a575f36600319011261053a576016546040516001600160a01b039091168152602090f35b3461053a57602036600319011261053a57602061073c600435612f2c565b3461053a5760208060031936011261053a5760048035906121f3826105b2565b6121fb6130fe565b60035460a01c60ff1661236d576001600160a01b0382811693908461225b575b6003805460ff60a01b1916600160a01b179055847fe7e4c932e03abddfe20f83af42c33627e816115c7ec2b168441f65dc14bfc3ba5f80a261092961312d565b6040516302910f8b60e31b81526001600160a01b0385168482019081528390829081906020010381857f0000000000000000000000000000000000000000000000000000000000000000165afa908115610cfc575f91612350575b501561233f5760405163fbfa77cf60e01b815282818581895afa928315610cfc575f93612320575b5050309116036123115750600380546001600160a01b0319166001600160a01b039092169190911790555f80808061221b565b604051633f3e089160e21b8152fd5b612337929350803d106119635761195381836107dc565b905f806122de565b60405163dabc4ad960e01b81528390fd5b6123679150833d85116119a05761199281836107dc565b5f6122b6565b60405163703fe2e560e01b8152fd5b3461053a57604036600319011261053a57600435612399816105b2565b602435906123a56130fe565b6001600160a01b039181831690811561242b576123d6610662946123c883613d8a565b9485915f5460101c16613c26565b604080519182526020820184905233917f865ca08d59f5cb456e85cd2f7ef63664ea4f73327414e9d8152c4158b0e946459190a360015f80516020614b34833981519152556040519081529081906020820190565b604051634e46966960e11b8152600490fd5b3461053a57602036600319011261053a576004355f526007602052602060405f2054604051908152f35b3461053a575f36600319011261053a576003546040516001600160a01b039091168152602090f35b3461053a575f36600319011261053a5760206040517fc9078c78bcaac2be1c77c160c539a489be2b72939771b1a6302fed3e2150c7458152f35b3461053a575f36600319011261053a5760206108d5613e58565b3461053a57602036600319011261053a576004356124ff6130fe565b335f9081527f2d4ccbfe9f7672a6f2537c1e5bce6adacb73706879154bbab6ce096012d6721660205260409020547f4a634bc14d77baf979756509ef4298c6f6318af357828612545267ee2eb792339060ff1615610ef757508060045414610a7e576020817f854df3eb95564502c8bc871ebdd15310ee26270f955f6c6bd8cea68e75045bc092600455604051908152a160015f80516020614b3483398151915255005b3461053a575f36600319011261053a5760206108d5613ecc565b3461053a57602036600319011261053a576004356125da816105b2565b6125e661071b42613e26565b6125ef82612b87565b916125fa81836130a0565b830180931161074c576001820180921161074c57612617916130a0565b810180911161074c57602090604051908152f35b3461053a575f36600319011261053a5760206108d5613004565b3461053a575f36600319011261053a576002546040516001600160a01b039091168152602090f35b3461053a57604036600319011261053a57610929602435600435612690826105b2565b805f525f80516020614b148339815191526020526126b4600160405f2001546136ff565b6137c6565b3461053a57602036600319011261053a576004356126d56130fe565b335f9081527f82a1dc868a49801aa31c5dd393dc0b9005735300cdcd4bbc1af68215effcd6f860205260409020547fc9078c78bcaac2be1c77c160c539a489be2b72939771b1a6302fed3e2150c7459060ff1615610ef757508060155414610a7e576020817f85370e46fb038a73f13e1c280ffc745e71ff72b4ea57b15c6eca3749d73c0cb892601555604051908152a160015f80516020614b3483398151915255005b3461053a575f36600319011261053a575f5460405160109190911c6001600160a01b03168152602090f35b3461053a57604036600319011261053a5760206108d56004356127c6816105b2565b60243590613044565b3461053a575f36600319011261053a5760206040517fbae4ee3de6c709ff9a002e774c5b78cb381560b219213c88ae0f1e207c03c0238152f35b3461053a575f36600319011261053a576020601554604051908152f35b3461053a575f36600319011261053a576020604051633b9aca008152f35b3461053a575f36600319011261053a576020600454604051908152f35b3461053a57606036600319011261053a5760043561287e816105b2565b612886610763565b6001600160401b03919060443583811161053a576128a8903690600401610fed565b909260409384516128b8816107a1565b60608152606060208201526060868201529280612917575b6106628661290887876129026128e98984845191612aab565b92856128f96020850151836133c5565b930151906132ef565b91613f93565b90519081529081906020820190565b810193925060208185031261053a5780359086821161053a57019260608482031261053a57845195612948876107a1565b843581811161053a578261295d918701610827565b8752602085013581811161053a5782612977918701610827565b60208801528585013590811161053a57610662966129a0612902936128e9936129089801610827565b878201529394506128d0565b3461053a57604036600319011261053a576004356129c9816105b2565b6024356129d46130fe565b6001600160a01b0382161561068d578015612a4057612a036129f4613ecc565b6129fc613e58565b90836143d6565b335f908152600e60205260409020909290612a1d90613f40565b8311612a2e57610648918391613140565b6040516321727a3760e11b8152600490fd5b604051636c6c627d60e11b8152600490fd5b3461053a57604036600319011261053a5760206108d5602435612a74816105b2565b6004356130a0565b634e487b7160e01b5f52601160045260245ffd5b5f1981019190821161074c57565b9190820391821161074c57565b6001600160a01b03165f908152600e60205260409020610df892919061347a565b65ffffffffffff8060135460601c169081158015612af9575b612aed575090565b905060015460a01c1690565b508181612b0542613e26565b1610612ae5565b9081602091031261053a575190565b6040513d5f823e3d90fd5b906001820180921161074c57565b9190820180921161074c57565b60135465ffffffffffff90818160601c168015908115612b73575b50612b685760901c1690565b505060015460d01c90565b905082612b7f42613e26565b16105f612b5c565b6001600160a01b03165f908152600e60205260409020612ba690613f40565b612bae613e58565b612bb6613ecc565b906001810180911161074c576001820180921161074c57610df892613cfd565b94919286949160c0979460018060a01b0380921688521660208701526040860152606085015260a060808501528160a0850152848401375f828201840152601f01601f1916010190565b601654612c319060a01c60ff161590565b612c97575f5460101c6001600160a01b0390811691168103612c97576040516370a0823160e01b815230600482015290602090829060249082905afa908115610cfc575f91612c7e575090565b610df8915060203d602011610cf557610ce681836107dc565b505f90565b65ffffffffffff918216908216039190821161074c57565b634e487b7160e01b5f52601260045260245ffd5b9065ffffffffffff809116918215612cdf57160490565b612cb4565b60015465ffffffffffff808316929160a081901c821680851015612d5c5750506013549281841690818015918215612d52575b5050612d4057610df89361168f92612d35611a3e9360125496612c9c565b9160301c1690612cc8565b60405163b7d0949760e01b8152600490fd5b109050815f612d17565b909160135490808260601c1695868015918215612dc5575b505015612da0575050610df8935061168f91612d96611a3e9260115495612c9c565b9060d01c90612cc8565b61168f9350611a3e9250612dba610df89660145496612c9c565b9160901c1690612cc8565b109050865f612d74565b90612dd86130fe565b5f926001600160a01b03831692831561242b578115612e82575f5b828110612e6057505f547f326b6aff1cd2fb1c8234de4f9dcfb9047c5c36eb9ef2eb34af5121e969a75d279286929091612e43918491612e3e9060101c6001600160a01b03166110aa565b613c26565b612e54604051928392339684612ebd565b0390a39061080a61312d565b94612e7b60019161168f612e75898789612ea8565b35613d8a565b9501612df3565b60405163edf3b93360e01b8152600490fd5b634e487b7160e01b5f52603260045260245ffd5b9190811015612eb85760051b0190565b612e94565b604080825281018390529392916001600160fb1b03811161053a5760209160609160051b809183880137850101930152565b9081602091031261053a5751610df8816109eb565b9081602091031261053a5751610df8816105b2565b8181029291811591840414171561074c57565b601254808210612ff25760115480831015612f6d5750611afd90610df892611af6612f616013549365ffffffffffff93612a9e565b828460301c1690612f19565b905060145480158015612fe9575b15612fb35750610df89165ffffffffffff612fa9612f9f611afd9460015494612a9e565b8360d01c90612f19565b9160a01c16612b34565b611afd9150610df892612fdf612fd36013549365ffffffffffff93612a9e565b828460901c1690612f19565b9160601c16612b34565b50808310612f7b565b60405163d5b25b6360e01b8152600490fd5b65ffffffffffff8060135460601c16801591821561302f575b50506130295760105490565b600f5490565b90915061303b42613e26565b16105f8061301d565b5f546001600160a01b039160109190911c82169082160361308e576016541661306c57505f90565b633b9aca0060155461307e8184613c7f565b92091515810180911161074c5790565b60405163350b944160e11b8152600490fd5b906130c690825f52600860205260405f209060018060a01b03165f5260205260405f2090565b54905f52600660205260405f2054600760205260405f2054906001810180911161074c576001820180921161074c57610df892613cfd565b5f80516020614b34833981519152600281541461311b5760029055565b604051633ee5aeb560e01b8152600490fd5b60015f80516020614b3483398151915255565b335f908152600e602052604090209392919061315b42613e26565b335f908152600e6020526040902061317290613f40565b9184830392831161074c576131ad7febff2602b3f468259e1e99f613fed6691f3a6526effe6ef3e768ba7ae7a36c4f93859361323c99613b68565b50506131c76131bb42613e26565b610bf087611629613ecc565b50506131e16131d542613e26565b610bdb84611629613e58565b505061328a816132756131fe6131f961071b42613e26565b612b26565b613254613213825f52600660205260405f2090565b54613226835f52600760205260405f2090565b5461323282828b613f93565b9d8e998a93612b34565b61324e855f52600660205260405f2090565b55612b34565b613266825f52600760205260405f2090565b555f52600860205260405f2090565b9060018060a01b03165f5260205260405f2090565b613295838254612b34565b9055604080519485526020850195909552938301526001600160a01b03909216913391606090a3565b9081602091031261053a575163ffffffff8116810361053a5790565b90600163ffffffff8093160191821161074c57565b908051156133bb578060208061330a935183010191016132be565b61331381614204565b90613324825165ffffffffffff1690565b9065ffffffffffff80851692168281146133af578211918261335a575b50506133515750610df890613fb4565b60209150015190565b909150613368600a54612a90565b63ffffffff831614918215613381575b50505f80613341565b6133a791925061339b613396611a3e926132da565b614204565b5165ffffffffffff1690565b115f80613378565b50505060209150015190565b50610df890613fb4565b9080511561347057806020806133e0935183010191016132be565b6133e98161428e565b906133fa825165ffffffffffff1690565b9065ffffffffffff80851692168281146133af5782119182613427575b50506133515750610df89061407b565b909150613435600c54612a90565b63ffffffff83161491821561344e575b50505f80613417565b61346891925061339b613463611a3e926132da565b61428e565b115f80613445565b50610df89061407b565b9180511561353c5780602080613495935183010191016132be565b916134a0838261430e565b926134b1845165ffffffffffff1690565b9065ffffffffffff808516921682811461353057821191826134e7575b50506134de57610df8925061413b565b50506020015190565b9091506134f48354612a90565b63ffffffff83161491821561350d575b50505f806134ce565b61352891925061339b613522611a3e926132da565b8561430e565b115f80613504565b50505050506020015190565b50610df89161413b565b335f9081527f03b26b53c87faa1058f30bb5d2fee64f717719a0d9b7e4f4df027aa5e9b6ed69602052604090207fbae4ee3de6c709ff9a002e774c5b78cb381560b219213c88ae0f1e207c03c0239060ff905b541615610ef75750565b335f9081527fe41986b390c4ce6791b87f7423b5fab7a81a0e6d89660b6264f697d008b2243a602052604090207fc6aaadd7371d5e8f9ed6849dd66a66573a3ba37167d03f4352c9ba5693678fac9060ff90613599565b335f9081527f99e47f2907af87dbb5c62e22bd8ea822f5011dfd1e243469ce26ebebf3ab93e3602052604090207f591f6a0113ada8aff67efadec8ae2fa585cb4ebf4e1f8fc1205ffbeff98d00ec9060ff90613599565b335f9081527f665296150f4083bfe5a58682f99690b24ea27a3f56243679fa9797c6a16217aa602052604090207fc9feed28b4b1a1d11c6791da7bb7f6b8d33e831a4992a9383dead1ec2c82c35a9060ff90613599565b335f9081527f0287ab4cb376ea253d7b2ce0c2cbf458f7deae9458470d74afdfbbee484e9540602052604090207f9c56d972d63cbb4195b3c1484691dfc220fa96a4c47e7b6613bd82a022029e069060ff90613599565b5f8181525f80516020614b1483398151915260209081526040808320338452909152902060ff90613599565b5f8181525f80516020614b14833981519152602081815260408084206001600160a01b03871685529091529091205460ff166137bf575f828152602091825260408082206001600160a01b038616835290925220805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b5050505f90565b5f8181525f80516020614b14833981519152602081815260408084206001600160a01b03871685529091529091205460ff16156137bf575f828152602091825260408082206001600160a01b038616835290925220805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b6040516323b872dd60e01b60208201526001600160a01b03928316602482015292909116604483015260648083019390935291815260a08101918183106001600160401b038411176107bc5761080a9260405261437c565b600b54811015612eb857600b5f525f80516020614af483398151915201905f90565b600d54811015612eb857600d5f525f80516020614ad483398151915201905f90565b8054821015612eb8575f5260205f2001905f90565b600d54600160401b8110156107bc576001810180600d55811015612eb857600d5f525f80516020614ad48339815191520155565b600b54600160401b8110156107bc576001810180600b55811015612eb857600b5f525f80516020614af48339815191520155565b90815491600160401b8310156107bc578261399491600161080a950181556138f4565b90919082549060031b91821b915f19901b1916179055565b919091600d9081548015613a57575b506139c461440f565b509290918154926139d3613e58565b9481613a42575b5015613a1f57505f19820182811161074c5781541115612eb8575f527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb4018390559190565b613a33926001600160d01b0316915061460b565b5050613a3e83613909565b9190565b65ffffffffffff83811691161490505f6139da565b600160401b8110156107bc5760018101808455811015612eb8575f908382525f80516020614ad483398151915201555f6139bb565b919091600b9081548015613b33575b50613aa4614464565b50929091815492613ab3613ecc565b9481613b1e575b5015613aff57505f19820182811161074c5781541115612eb8575f527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db8018390559190565b613b13926001600160d01b031691506146db565b5050613a3e8361393d565b65ffffffffffff83811691161490505f613aba565b600160401b8110156107bc5760018101808455811015612eb8575f908382525f80516020614af483398151915201555f613a9b565b90929192600182019081548015613bf6575b5084613b85846144b9565b50949092845493613b9583613f40565b9681613be1575b5015613bbe575050505f19810190811161074c576139948591613a3e936138f4565b613a3e949293613bda926001600160d01b03909116919061477a565b5050613971565b65ffffffffffff83811691161490505f613b9c565b600160401b8110156107bc57806001613c1292018455836138f4565b8154905f199060031b1b191690555f613b7a565b60405163a9059cbb60e01b60208201526001600160a01b03909216602483015260448083019390935291815260808101916001600160401b038311828410176107bc5761080a9260405261437c565b8115612cdf570490565b90808202905f1981840990828083109203918083039214613cf057633b9aca009082821115613cde577f88f2cfb83100cb4e69e7c79c58b316e597157d372fb9787e8e47ce423a2e9c6d940990828211900360f71b910360091c170290565b634e487b715f5260116020526024601cfd5b5050633b9aca0091500490565b91818302915f1981850993838086109503948086039514613d7d5784831115613d705790829109815f038216809204600280826003021880830282030280830282030280830282030280830282030280830282030280920290030293600183805f03040190848311900302920304170290565b82156003026011186144f2565b505090610df89250613c75565b90613d9761071b42613e26565b821015612ff25760ff613dc7613db5845f52600960205260405f2090565b335f9081526020919091526040902090565b5416613e1457613dd733836130a0565b918215613e0257613df59061327533915f52600960205260405f2090565b805460ff19166001179055565b6040516366c0bcbf60e11b8152600490fd5b604051630c8d9eab60e31b8152600490fd5b65ffffffffffff90818111613e39571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b600c5480613e9357505f5b6001600160d01b03811615612c9757600d54811015612eb857600d5f525f80516020614ad4833981519152015490565b805f1981011161074c57600c5f527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c6015460301c613e63565b600a5480613f0757505f5b6001600160d01b03811615612c9757600b54811015612eb857600b5f525f80516020614af4833981519152015490565b805f1981011161074c57600a5f527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a7015460301c613ed7565b805480613f7557505f5b6001600160d01b03811615613f6f576001613f6592016138f4565b90549060031b1c90565b50505f90565b5f1990808281011161074c57825f5260205f2001015460301c613f4a565b91906001810180911161074c576001820180921161074c57610df892613cfd565b600a54905f829160058411614022575b613fce935061495f565b80613ff157505f5b6001600160d01b03811615612c9757613f65610df8916138b0565b61401661400061401d92612a90565b600a5f525f80516020614ab48339815191520190565b5460301c90565b613fd6565b919261402d81614834565b810390811161074c57613fce93600a5f5265ffffffffffff80835f80516020614ab4833981519152015416908516105f14614069575091613fc4565b92915061407590612b26565b90613fc4565b600c54905f8291600584116140e2575b61409593506149c8565b806140b857505f5b6001600160d01b03811615612c9757613f65610df8916138d2565b6140166140c76140dd92612a90565b600c5f525f80516020614a948339815191520190565b61409d565b91926140ed81614834565b810390811161074c5761409593600c5f5265ffffffffffff80835f80516020614a94833981519152015416908516105f1461412957509161408b565b92915061413590612b26565b9061408b565b908154905f82916005841161419e575b614156935084614a31565b8061417e57505f905b6001600160d01b03821615613f6f57610df8916001613f6592016138f4565b61401661418d61419892612a90565b835f5260205f200190565b9061415f565b91926141a981614834565b810390811161074c5761415693855f5265ffffffffffff808360205f20015416908516105f146141da57509161414b565b9291506141e690612b26565b9061414b565b604051906141f9826107c1565b5f6020838281520152565b61420c6141ec565b506142156141ec565b50600a54811015612eb857600a5f52602060405191614233836107c1565b5f80516020614ab483398151915201549165ffffffffffff83169283825260301c9182910152600b54811015612eb857600b5f525f80516020614af4833981519152015460405191614284836107c1565b8252602082015290565b6142966141ec565b5061429f6141ec565b50600c54811015612eb857600c5f526020604051916142bd836107c1565b5f80516020614a9483398151915201549165ffffffffffff83169283825260301c9182910152600d54811015612eb857600d5f525f80516020614ad4833981519152015460405191614284836107c1565b906020600161433261435e936143226141ec565b5061432b6141ec565b50856138f4565b509360405194614341866107c1565b549465ffffffffffff86169586825260301c9384910152016138f4565b9054906040519261436e846107c1565b835260031b1c602082015290565b905f602091828151910182855af115612b1b575f513d6143cd57506001600160a01b0381163b155b6143ab5750565b604051635274afe760e01b81526001600160a01b039091166004820152602490fd5b600114156143a4565b91906001810180911161074c576001820180921161074c576143f9828285613cfd565b928215612cdf57091515810180911161074c5790565b600c548061442057505f905f905f90565b805f1981011161074c57600c5f527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c6015460019165ffffffffffff82169160301c90565b600a548061447557505f905f905f90565b805f1981011161074c57600a5f527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a7015460019165ffffffffffff82169160301c90565b8054806144ca5750505f905f905f90565b5f1991818381011161074c575f5260205f2001015460019165ffffffffffff82169160301c90565b634e487b715f526020526024601cfd5b600c5490600160401b8210156107bc576001820180600c55821015612eb857600c5f52805160209091015160301b65ffffffffffff191665ffffffffffff91909116175f80516020614a9483398151915290910155565b600a5490600160401b8210156107bc576001820180600a55821015612eb857600a5f52805160209091015160301b65ffffffffffff191665ffffffffffff91909116175f80516020614ab483398151915290910155565b8054600160401b8110156107bc576145cd916001820181556138f4565b6145f857815160209092015160301b65ffffffffffff191665ffffffffffff92909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b600c5491929180156146b2576140c761462391612a90565b9081549165ffffffffffff908184169183168083116146a0578692036146685761466192509065ffffffffffff82549181199060301b169116179055565b60301c9190565b505061469b906146876146796107fd565b65ffffffffffff9092168252565b6001600160d01b0385166020820152614502565b614661565b604051632520601d60e01b8152600490fd5b506146d6906146c26146796107fd565b6001600160d01b0384166020820152614502565b5f9190565b600a549192918015614756576140006146f391612a90565b9081549165ffffffffffff908184169183168083116146a0578692036147315761466192509065ffffffffffff82549181199060301b169116179055565b505061469b906147426146796107fd565b6001600160d01b0385166020820152614559565b506146d6906147666146796107fd565b6001600160d01b0384166020820152614559565b8054929392801561480f5761479161479c91612a90565b825f5260205f200190565b9182549265ffffffffffff918285169281168084116146a0578793036147db575061466192509065ffffffffffff82549181199060301b169116179055565b91505061469b916147fb6147ed6107fd565b65ffffffffffff9093168352565b6001600160d01b03861660208301526145b0565b50906146d6916148206147ed6107fd565b6001600160d01b03851660208301526145b0565b6001811115610df857600181600160801b81101561494d575b6148f56148eb6148e16148d76148cd6148c361490197600488600160401b6148fc9a1015614940575b640100000000811015614933575b62010000811015614926575b61010081101561491a575b601081101561490e575b1015614906575b60030260011c6148bc818b613c75565b0160011c90565b6148bc818a613c75565b6148bc8189613c75565b6148bc8188613c75565b6148bc8187613c75565b6148bc8186613c75565b8093613c75565b821190565b900390565b60011b6148ac565b811c9160021b916148a5565b60081c91811b9161489b565b60101c9160081b91614890565b60201c9160101b91614884565b60401c9160201b91614876565b50600160401b9050608082901c61484d565b905b82811061496d57505090565b9091808216906001818418811c830180931161074c57600a5f5265ffffffffffff80845f80516020614ab4833981519152015416908616105f146149b5575050915b90614961565b90939250810180911161074c57906149af565b905b8281106149d657505090565b9091808216906001818418811c830180931161074c57600c5f5265ffffffffffff80845f80516020614a94833981519152015416908616105f14614a1e575050915b906149ca565b90939250810180911161074c5790614a18565b91905b838210614a415750505090565b909192808316906001818518811c830180931161074c57855f5265ffffffffffff808460205f20015416908516105f14614a80575050925b9190614a34565b90949350810180911161074c5791614a7956fedf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7c65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8d7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db902dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a2646970667358221220ac823fce5da4c65530b4382f05d5e1620cd63891e7cada7b067ca18bfa5c908464736f6c63430008190033","sourceMap":"1252:21595:107:-:0;;;;;;;;;;;;;-1:-1:-1;;1252:21595:107;;;;-1:-1:-1;;;;;1252:21595:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;1785:36;;;1831:32;;1252:21595;;;;;;;;1785:36;1252:21595;;;;;;;;;;1831:32;1252:21595;;;;;;;;;;;;-1:-1:-1;1252:21595:107;;;;;;-1:-1:-1;1252:21595:107;;;;;-1:-1:-1;1252:21595:107;;;;-1:-1:-1;;;;;1252:21595:107;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a7146104e45780631415519b146104df5780631b66c9e1146104da5780631e9a6950146104d5578063248a9ca3146104d057806327810b6e146104cb578063281f5752146104c65780632d73c69c146104c15780632f2ff15d146104bc57806331d9736c146104b757806336568abe146104b2578063392e53cd146104ad5780634105a7dd146104a857806346361671146104a357806347e7ef241461049e57806348d3b775146104995780634ff0876a1461049457806350861adc1461048f57806350f220681461048a57806352741a40146104855780635346e34f1461048057806359f769a91461047b5780635cc07076146104765780635cffe9de14610471578063613255ab1461046c57806361819dd81461046757806361a8c8c414610462578063653b04cd1461045d57806365d61c6c146104585780636da3e06d146104535780636ec1e3f81461044e5780637278e31c1461044957806373790ab314610444578063766718081461043f578063794b15b71461043a5780637953b33b146104355780637c04c80a14610430578063810da75d1461042b57806383cd9cc31461042657806383f46c2c14610421578063859b93441461041c57806387df0788146104175780638b0e9f3f1461041257806391d148541461040d5780639d66201b146104085780639f86fd8514610403578063a1b12202146103fe578063a217fddf146103f9578063a21a1df9146103f4578063a2861466146103ef578063a3b54172146103ea578063a5d03223146103e5578063a66b3a73146103e0578063a8b24f9a146103db578063aa9354a3146103d6578063aabc2496146103d1578063aad3ec96146103cc578063afba70ad146103c7578063b1344271146103c2578063bc46f722146103bd578063bd49c35f146103b8578063bdc8144b146103b3578063bfefcd7b146103ae578063c31e8dd7146103a9578063c642b050146103a4578063ce9b79301461039f578063d547741f1461039a578063d626811b14610395578063d8dfeb4514610390578063d9d98ce41461038b578063db38871514610386578063e945da7f14610381578063ecc98f051461037c578063ecf7085814610377578063efb559d614610372578063f3fef3a31461036d5763f5e7ee0f14610368575f80fd5b612a52565b6129ac565b612861565b612844565b612826565b612809565b6127cf565b6127a4565b612779565b6126b9565b61266d565b612645565b61262b565b6125bd565b6125a3565b6124e3565b6124c9565b61248f565b612467565b61243d565b61237c565b6121d3565b6121b5565b61218d565b612153565b61210d565b6120c0565b611fdb565b611fa1565b611f87565b611f63565b611e96565b611e5c565b611dfe565b611d98565b611d54565b611cc8565b6119b6565b61180b565b6117f2565b61178c565b61176e565b61172e565b611710565b6116de565b611423565b6113fe565b6113ba565b611395565b61135b565b611335565b6112fb565b6112d4565b61101a565b610fc3565b610f9c565b610f15565b610e14565b610dfb565b610d95565b610d7b565b610d5a565b610aaa565b610a90565b6109f5565b6109b0565b610965565b61092b565b6108dd565b61086d565b6106ff565b6106d7565b61069e565b6105c3565b610578565b61053e565b3461053a57602036600319011261053a5760043563ffffffff60e01b811680910361053a57602090637965db0b60e01b8114908115610529575b506040519015158152f35b6301ffc9a760e01b1490505f61051e565b5f80fd5b3461053a575f36600319011261053a5760206040517fc6aaadd7371d5e8f9ed6849dd66a66573a3ba37167d03f4352c9ba5693678fac8152f35b3461053a575f36600319011261053a5760206040517f9c56d972d63cbb4195b3c1484691dfc220fa96a4c47e7b6613bd82a022029e068152f35b6001600160a01b0381160361053a57565b3461053a57604036600319011261053a576004356105e0816105b2565b602435906105ec6130fe565b6001600160a01b0381161561068d57335f908152600e6020526040902061061790613f40565b613f40565b821161067b57610637610628613e58565b610630613ecc565b9084613f93565b918215610666578261064892613140565b9061065161312d565b604080519182526020820192909252f35b0390f35b60405160016245ddc760e11b03198152600490fd5b604051632418411f60e11b8152600490fd5b6040516208978560e71b8152600490fd5b3461053a57602036600319011261053a576004355f525f80516020614b148339815191526020526020600160405f200154604051908152f35b3461053a575f36600319011261053a576001546040516001600160a01b039091168152602090f35b3461053a575f36600319011261053a5761072061071b42613e26565b612ce4565b8015610751575f19810190811161074c5761073c602091612f2c565b65ffffffffffff60405191168152f35b612a7c565b604051639fa56a5b60e01b8152600490fd5b6024359065ffffffffffff8216820361053a57565b6004359065ffffffffffff8216820361053a57565b634e487b7160e01b5f52604160045260245ffd5b606081019081106001600160401b038211176107bc57604052565b61078d565b604081019081106001600160401b038211176107bc57604052565b90601f801991011681019081106001600160401b038211176107bc57604052565b6040519061080a826107c1565b565b6001600160401b0381116107bc57601f01601f191660200190565b81601f8201121561053a5780359061083e8261080c565b9261084c60405194856107dc565b8284526020838301011161053a57815f926020809301838601378301015290565b3461053a57606036600319011261053a5760043561088a816105b2565b610892610763565b90604435906001600160401b03821161053a576020926108b96108d5933690600401610827565b6001600160a01b039092165f908152600e85526040902061347a565b604051908152f35b3461053a57604036600319011261053a57610929602435600435610900826105b2565b805f525f80516020614b14833981519152602052610924600160405f2001546136ff565b61372b565b005b3461053a575f36600319011261053a5760206040517f5295aaaa27fdd659293eafacbfafbc634c1b96298957e87de5f59308cdbfdad18152f35b3461053a57604036600319011261053a57602435610982816105b2565b336001600160a01b0382160361099e57610929906004356137c6565b60405163334bd91960e11b8152600490fd5b3461053a575f36600319011261053a5760ff60025460a01c16806109dc575b6020906040519015158152f35b5060035460a01c60ff166109cf565b8015150361053a57565b3461053a57602036600319011261053a57600435610a12816109eb565b610a1a6130fe565b610a22613546565b5f54901515908160ff8216151514610a7e5760ff191660ff8216175f556040519081527f3e12b7b36c75ac9609a3f58609b331210428e1a85909132638955ba0301eec3390602090a160015f80516020614b3483398151915255005b60405163a741a04560e01b8152600490fd5b3461053a575f36600319011261053a57602061073c612acc565b3461053a5760408060031936011261053a576004803591610aca836105b2565b610ad26130fe565b6001600160a01b0391838316908115610d4c575f5460ff811680610d33575b610d245783516370a0823160e01b808252308483019081529096602093909160109190911c82169084908490819083010381845afa928315610cfc575f93610d01575b50610b46906024359030903390613858565b5f5486519788523085890190815290979184918391908290819060200103918b60101c165afa908115610cfc57610b85935f92610ccf575b5050612a9e565b938415610cc05760081c60ff1680610cab575b610c9d57509061066291610c49610bad613e58565b95610bf6610bb9613ecc565b610be1610bc78a838b613f93565b99610bdb8a610bd542613e26565b92612b34565b906139ac565b5050610bf089610bd542613e26565b90613a8c565b50506001600160a01b0381165f908152600e6020526040902090610c4388610c3e610612610c2342613e26565b6001600160a01b039095165f908152600e6020526040902090565b612b34565b91613b68565b505081518481526020810186905233907fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d790604090a3610c8761312d565b5191825260208201929092529081906040820190565b8251632484557960e01b8152fd5b50610cb884610c3e613e58565b815410610b98565b50825163070f6eed60e11b8152fd5b610cee9250803d10610cf5575b610ce681836107dc565b810190612b0c565b5f80610b7e565b503d610cdc565b612b1b565b610b46919350610d1d90853d8711610cf557610ce681836107dc565b9290610b34565b5082516304f63b8560e01b8152fd5b50335f9081526005602052604090205460ff1615610af1565b8251630d534ce360e11b8152fd5b3461053a575f36600319011261053a57602060ff5f54166040519015158152f35b3461053a575f36600319011261053a57602061073c612b41565b3461053a575f36600319011261053a57602060ff60025460a01c166040519015158152f35b90604060031983011261053a5760043565ffffffffffff8116810361053a5791602435906001600160401b03821161053a57610df891600401610827565b90565b3461053a5760206108d5610e0e36610dba565b906132ef565b3461053a57602036600319011261053a57600435610e31816105b2565b610e396130fe565b335f9081527f9aeaa4f1a9be826e331dea6728ca206744e0a34dccbc1d3da4a68acb8abf036360205260409020547f5295aaaa27fdd659293eafacbfafbc634c1b96298957e87de5f59308cdbfdad19060ff1615610ef757506016546001600160a01b039182169181168214610a7e576001600160a01b03191681176016556040519081527f08aacfdb137d688b12f67ef81735dede1ae18b0664f6b347ee9ef00ae94ff91990602090a160015f80516020614b3483398151915255005b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b3461053a57602036600319011261053a57600435610f32816109eb565b610f3a6130fe565b610f426135a3565b5f54901515908160ff8260081c16151514610a7e5761ff001916600882901b61ff0016175f556040519081527ffa7a25a0b611d4ba3c0ea990e90dc23d484a5dd7a1be4733fef2946ba74530c690602090a161092961312d565b3461053a57602036600319011261053a5760206108d5600435610fbe816105b2565b612b87565b3461053a57602036600319011261053a576004355f526006602052602060405f2054604051908152f35b9181601f8401121561053a578235916001600160401b03831161053a576020838186019501011161053a57565b3461053a57608036600319011261053a5760048035611038816105b2565b602435611044816105b2565b604435906064356001600160401b03811161053a576110669036908601610fed565b9190926110716130fe565b80156112c35761108082612c20565b81116112b25781611094826110f594613044565b5f549092906110b69060101c6001600160a01b03165b6001600160a01b031690565b604080516370a0823160e01b808252308c8301908152929a939991986020986001600160a01b03808d16989097939693959094918b918d918291840190565b03818b5afa9a8b15610cfc578c978f948f925f9e61126d575b50928b611142936111298f98968b9a98958b9116809e613c26565b516323e30c8b60e01b8152978896879633908801612bd6565b03815f885af18015610cfc577f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd9915f91611250575b500361124057859261118c8661119593612b34565b9030908a613858565b875190815230898201908152909283918290819060200103915afa928315610cfc575f93611221575b50506111ca8383612a9e565b1061121157906111d991612a9e565b806111f2575b826111e861312d565b5160018152602090f35b60165461120a92906001600160a01b03165b90613c26565b81806111df565b50505051637f28d71160e01b8152fd5b611238929350803d10610cf557610ce681836107dc565b905f806111be565b8851631e4ec46b60e01b81528a90fd5b6112679150883d8a11610cf557610ce681836107dc565b5f611177565b889e5088979592938e9795928e92893d8b116112ab575b61128e81836107dc565b810161129991612b0c565b9f509295979e9f50939295975061110e565b503d611284565b60405163347177ad60e21b81528690fd5b6040516391ba94bf60e01b81528690fd5b3461053a57602036600319011261053a5760206108d56004356112f6816105b2565b612c20565b3461053a575f36600319011261053a5760206040517f591f6a0113ada8aff67efadec8ae2fa585cb4ebf4e1f8fc1205ffbeff98d00ec8152f35b3461053a575f36600319011261053a57602061073c61135661071b42613e26565b612f2c565b3461053a575f36600319011261053a5760206040517f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd98152f35b3461053a575f36600319011261053a57602060ff60165460a01c166040519015158152f35b3461053a575f36600319011261053a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461053a575f36600319011261053a57602060ff60035460a01c166040519015158152f35b3461053a57604036600319011261053a5760043561143f610763565b6114476130fe565b60035461145c906001600160a01b03166110aa565b33036116cc5761146e61071b42613e26565b9061147881612ce4565b90821515806116bb575b80156116b2575b6116a057610662937ff9d090c096f71cd1659861a9ce5b6f384bceb4e2fa4e4a19edf6489a9b8d56c7926114bb613e58565b946114d66114c882612b26565b5f52600660205260405f2090565b54908281036115ba57506114ea8187612b34565b838118818510028118968780611573575b50505050505b83611540575b6040805191825265ffffffffffff929092166020820152908101839052606090a161153061312d565b6040519081529081906020820190565b5f5461156e90859061155d9060101c6001600160a01b03166110aa565b6001546001600160a01b0316611204565b611507565b6115af93610b7e83610bdb6115996115926114c8986115a99888613cfd565b8096612a9e565b946115a342613e26565b92612a9e565b92612b26565b555f808080876114fb565b91506115ce825f52600660205260405f2090565b54906115de81610c3e848a612b34565b9084821882861002821897886115f9575b5050505050611501565b61166e93836116219361162e8c61162961161761165f998884613cfd565b9788958584613cfd565b948592612a9e565b612a9e565b93848410611679575b610b7e90610bdb61164d9596976115a342613e26565b6116596114c887612b26565b55612a9e565b915f52600660205260405f2090565b555f808080806115ef565b91611695610b7e9161168f8661164d9798612a9e565b90612b34565b859450929050611637565b604051635e18d2a560e01b8152600490fd5b50828211611489565b506116c583612a90565b8210611482565b60405163dabc4ad960e01b8152600490fd5b3461053a575f36600319011261053a576116fa61071b42613e26565b6001810180911161074c5761073c602091612f2c565b3461053a575f36600319011261053a5760206108d561071b42613e26565b3461053a57602036600319011261053a5760043561174b816105b2565b60018060a01b03165f526005602052602060ff60405f2054166040519015158152f35b3461053a57602036600319011261053a5760206108d561071b610778565b3461053a57604036600319011261053a576004356117a9816105b2565b6024356001600160401b0380821161053a573660238301121561053a57816004013590811161053a573660248260051b8401011161053a57610662926024611530930190612dcf565b3461053a5760206108d561180536610dba565b906133c5565b3461053a5760208060031936011261053a57600480359061182b826105b2565b6118336130fe565b60025460a01c60ff166119a7576040516302910f8b60e31b81526001600160a01b03838116838301908152909491908290829081906020010381887f0000000000000000000000000000000000000000000000000000000000000000165afa908115610cfc575f9161197a575b501561196a5760405163fbfa77cf60e01b8152838516949082818581895afa928315610cfc575f9361193b575b50503091160361192c5750600280546001600160a01b03929092166001600160a81b031990921691909117600160a01b1790557fdb2160616f776a37b24808115554e79439bf26cccbbd4438190cc6d28e80ecd15f80a261092961312d565b60405163b9f0f17160e01b8152fd5b61195b929350803d10611963575b61195381836107dc565b810190612f04565b905f806118cd565b503d611949565b506040516324e5af8d60e21b8152fd5b61199a9150823d84116119a0575b61199281836107dc565b810190612eef565b5f6118a0565b503d611988565b604051631380833b60e01b8152fd5b3461053a57604036600319011261053a576119cf610778565b6024356119da6130fe565b6119e26135fa565b60038110611cb65765ffffffffffff9182611a0860135465ffffffffffff9060601c1690565b168015159081611ca0575b50611b7d575b60015460d01c8316818416808211611b6b57601354611a499060601c65ffffffffffff165b65ffffffffffff1690565b159182611b61575b505080611b56575b610a7e57611b2b611b02611afd7f1b3efab1b836932ce515e4748ca76335809d1d202c92ee86d594e43ce0039e8395611aa8611aa3611a9a61071b42613e26565b600f5490612b34565b601455565b6013805465ffffffffffff60901b1916609087901b65ffffffffffff60901b16179055611ada61135661071b42613e26565b90611af6600f54611af0611a3e60015460d01c90565b90612f19565b9116612b34565b613e26565b6013805465ffffffffffff60601b191660609290921b65ffffffffffff60601b16919091179055565b611b3482601055565b6040805165ffffffffffff9290921682526020820192909252a161092961312d565b5081600f5414611a59565b1490505f80611a51565b6040516359dcfd5560e11b8152600490fd5b611b88601154601255565b611bc2611b9760015460d01c90565b6bffffffffffff0000000000006013549160301b16906bffffffffffff000000000000191617601355565b600154611bee9060a01c65ffffffffffff1665ffffffffffff1665ffffffffffff196013541617601355565b611bf9601454601155565b601354611c309060901c65ffffffffffff16600180546001600160d01b031660d09290921b6001600160d01b031916919091179055565b601354611c6b9060601c65ffffffffffff166001805465ffffffffffff60a01b191660a09290921b65ffffffffffff60a01b16919091179055565b611c76601054600f55565b611c7f5f601455565b601380546bffffffffffffffffffffffff60601b191690555f601055611a19565b9050611cae611a3e42613e26565b10155f611a13565b6040516317a509b960e31b8152600490fd5b3461053a57602036600319011261053a57600435611ce5816109eb565b611ced6130fe565b611cf5613651565b601654901515908160ff8260a01c16151514610a7e5760ff60a01b191660a082901b60ff60a01b16176016556040519081527e4ea26b9681ba216ba307c9c0ee4edcef296c9af6506b16ad458a51431745d990602090a161092961312d565b3461053a575f36600319011261053a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461053a575f36600319011261053a57611db461071b42613e26565b611dbc613e58565b90805f52600660205260405f2054820180921161074c576001810180911161074c575f52600660205260405f2054810180911161074c57604051908152602090f35b3461053a57604036600319011261053a57602060ff611e50602435611e22816105b2565b6004355f525f80516020614b14833981519152845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b3461053a57602036600319011261053a57600435611e79816105b2565b60018060a01b03165f52600e60205260206108d560405f20613f40565b3461053a5760408060031936011261053a57600435611eb4816105b2565b6024356001600160401b03811161053a575f80611f5293611edb6080943690600401610fed565b908188519283928337810184815203915af43d15611f5a5760203d611eff8161080c565b90611f0c875192836107dc565b81523d5f8383013e5b8551958693151583850152808401528051918291826060860152018484015e5f838284010152601f801991011681010360608101845201826107dc565b805190602001fd5b60206060611f15565b3461053a575f36600319011261053a57602060ff5f5460081c166040519015158152f35b3461053a575f36600319011261053a5760206040515f8152f35b3461053a575f36600319011261053a5760206040517f4a634bc14d77baf979756509ef4298c6f6318af357828612545267ee2eb792338152f35b3461053a57604036600319011261053a57600435611ff8816105b2565b602435612004816109eb565b61200c6130fe565b6120146136a8565b6001600160a01b0382169182156120ae575f8381526005602052604090205460ff16151582151514610a7e576001600160a01b03165f9081526005602052604090207ff991b1ecfb5115cbb36a2b2e2240c058406d2acc2fcc6e9e2dc99d845ff70a62916120a391612091908260ff801983541691151516179055565b60405190151581529081906020820190565b0390a261092961312d565b604051630da30f6560e31b8152600490fd5b3461053a57604036600319011261053a5760206121046024356120e2816105b2565b6004355f526008835260405f209060018060a01b03165f5260205260405f2090565b54604051908152f35b3461053a57604036600319011261053a57602060ff611e50602435612131816105b2565b6004355f526009845260405f209060018060a01b03165f5260205260405f2090565b3461053a575f36600319011261053a5760206040517fc9feed28b4b1a1d11c6791da7bb7f6b8d33e831a4992a9383dead1ec2c82c35a8152f35b3461053a575f36600319011261053a576016546040516001600160a01b039091168152602090f35b3461053a57602036600319011261053a57602061073c600435612f2c565b3461053a5760208060031936011261053a5760048035906121f3826105b2565b6121fb6130fe565b60035460a01c60ff1661236d576001600160a01b0382811693908461225b575b6003805460ff60a01b1916600160a01b179055847fe7e4c932e03abddfe20f83af42c33627e816115c7ec2b168441f65dc14bfc3ba5f80a261092961312d565b6040516302910f8b60e31b81526001600160a01b0385168482019081528390829081906020010381857f0000000000000000000000000000000000000000000000000000000000000000165afa908115610cfc575f91612350575b501561233f5760405163fbfa77cf60e01b815282818581895afa928315610cfc575f93612320575b5050309116036123115750600380546001600160a01b0319166001600160a01b039092169190911790555f80808061221b565b604051633f3e089160e21b8152fd5b612337929350803d106119635761195381836107dc565b905f806122de565b60405163dabc4ad960e01b81528390fd5b6123679150833d85116119a05761199281836107dc565b5f6122b6565b60405163703fe2e560e01b8152fd5b3461053a57604036600319011261053a57600435612399816105b2565b602435906123a56130fe565b6001600160a01b039181831690811561242b576123d6610662946123c883613d8a565b9485915f5460101c16613c26565b604080519182526020820184905233917f865ca08d59f5cb456e85cd2f7ef63664ea4f73327414e9d8152c4158b0e946459190a360015f80516020614b34833981519152556040519081529081906020820190565b604051634e46966960e11b8152600490fd5b3461053a57602036600319011261053a576004355f526007602052602060405f2054604051908152f35b3461053a575f36600319011261053a576003546040516001600160a01b039091168152602090f35b3461053a575f36600319011261053a5760206040517fc9078c78bcaac2be1c77c160c539a489be2b72939771b1a6302fed3e2150c7458152f35b3461053a575f36600319011261053a5760206108d5613e58565b3461053a57602036600319011261053a576004356124ff6130fe565b335f9081527f2d4ccbfe9f7672a6f2537c1e5bce6adacb73706879154bbab6ce096012d6721660205260409020547f4a634bc14d77baf979756509ef4298c6f6318af357828612545267ee2eb792339060ff1615610ef757508060045414610a7e576020817f854df3eb95564502c8bc871ebdd15310ee26270f955f6c6bd8cea68e75045bc092600455604051908152a160015f80516020614b3483398151915255005b3461053a575f36600319011261053a5760206108d5613ecc565b3461053a57602036600319011261053a576004356125da816105b2565b6125e661071b42613e26565b6125ef82612b87565b916125fa81836130a0565b830180931161074c576001820180921161074c57612617916130a0565b810180911161074c57602090604051908152f35b3461053a575f36600319011261053a5760206108d5613004565b3461053a575f36600319011261053a576002546040516001600160a01b039091168152602090f35b3461053a57604036600319011261053a57610929602435600435612690826105b2565b805f525f80516020614b148339815191526020526126b4600160405f2001546136ff565b6137c6565b3461053a57602036600319011261053a576004356126d56130fe565b335f9081527f82a1dc868a49801aa31c5dd393dc0b9005735300cdcd4bbc1af68215effcd6f860205260409020547fc9078c78bcaac2be1c77c160c539a489be2b72939771b1a6302fed3e2150c7459060ff1615610ef757508060155414610a7e576020817f85370e46fb038a73f13e1c280ffc745e71ff72b4ea57b15c6eca3749d73c0cb892601555604051908152a160015f80516020614b3483398151915255005b3461053a575f36600319011261053a575f5460405160109190911c6001600160a01b03168152602090f35b3461053a57604036600319011261053a5760206108d56004356127c6816105b2565b60243590613044565b3461053a575f36600319011261053a5760206040517fbae4ee3de6c709ff9a002e774c5b78cb381560b219213c88ae0f1e207c03c0238152f35b3461053a575f36600319011261053a576020601554604051908152f35b3461053a575f36600319011261053a576020604051633b9aca008152f35b3461053a575f36600319011261053a576020600454604051908152f35b3461053a57606036600319011261053a5760043561287e816105b2565b612886610763565b6001600160401b03919060443583811161053a576128a8903690600401610fed565b909260409384516128b8816107a1565b60608152606060208201526060868201529280612917575b6106628661290887876129026128e98984845191612aab565b92856128f96020850151836133c5565b930151906132ef565b91613f93565b90519081529081906020820190565b810193925060208185031261053a5780359086821161053a57019260608482031261053a57845195612948876107a1565b843581811161053a578261295d918701610827565b8752602085013581811161053a5782612977918701610827565b60208801528585013590811161053a57610662966129a0612902936128e9936129089801610827565b878201529394506128d0565b3461053a57604036600319011261053a576004356129c9816105b2565b6024356129d46130fe565b6001600160a01b0382161561068d578015612a4057612a036129f4613ecc565b6129fc613e58565b90836143d6565b335f908152600e60205260409020909290612a1d90613f40565b8311612a2e57610648918391613140565b6040516321727a3760e11b8152600490fd5b604051636c6c627d60e11b8152600490fd5b3461053a57604036600319011261053a5760206108d5602435612a74816105b2565b6004356130a0565b634e487b7160e01b5f52601160045260245ffd5b5f1981019190821161074c57565b9190820391821161074c57565b6001600160a01b03165f908152600e60205260409020610df892919061347a565b65ffffffffffff8060135460601c169081158015612af9575b612aed575090565b905060015460a01c1690565b508181612b0542613e26565b1610612ae5565b9081602091031261053a575190565b6040513d5f823e3d90fd5b906001820180921161074c57565b9190820180921161074c57565b60135465ffffffffffff90818160601c168015908115612b73575b50612b685760901c1690565b505060015460d01c90565b905082612b7f42613e26565b16105f612b5c565b6001600160a01b03165f908152600e60205260409020612ba690613f40565b612bae613e58565b612bb6613ecc565b906001810180911161074c576001820180921161074c57610df892613cfd565b94919286949160c0979460018060a01b0380921688521660208701526040860152606085015260a060808501528160a0850152848401375f828201840152601f01601f1916010190565b601654612c319060a01c60ff161590565b612c97575f5460101c6001600160a01b0390811691168103612c97576040516370a0823160e01b815230600482015290602090829060249082905afa908115610cfc575f91612c7e575090565b610df8915060203d602011610cf557610ce681836107dc565b505f90565b65ffffffffffff918216908216039190821161074c57565b634e487b7160e01b5f52601260045260245ffd5b9065ffffffffffff809116918215612cdf57160490565b612cb4565b60015465ffffffffffff808316929160a081901c821680851015612d5c5750506013549281841690818015918215612d52575b5050612d4057610df89361168f92612d35611a3e9360125496612c9c565b9160301c1690612cc8565b60405163b7d0949760e01b8152600490fd5b109050815f612d17565b909160135490808260601c1695868015918215612dc5575b505015612da0575050610df8935061168f91612d96611a3e9260115495612c9c565b9060d01c90612cc8565b61168f9350611a3e9250612dba610df89660145496612c9c565b9160901c1690612cc8565b109050865f612d74565b90612dd86130fe565b5f926001600160a01b03831692831561242b578115612e82575f5b828110612e6057505f547f326b6aff1cd2fb1c8234de4f9dcfb9047c5c36eb9ef2eb34af5121e969a75d279286929091612e43918491612e3e9060101c6001600160a01b03166110aa565b613c26565b612e54604051928392339684612ebd565b0390a39061080a61312d565b94612e7b60019161168f612e75898789612ea8565b35613d8a565b9501612df3565b60405163edf3b93360e01b8152600490fd5b634e487b7160e01b5f52603260045260245ffd5b9190811015612eb85760051b0190565b612e94565b604080825281018390529392916001600160fb1b03811161053a5760209160609160051b809183880137850101930152565b9081602091031261053a5751610df8816109eb565b9081602091031261053a5751610df8816105b2565b8181029291811591840414171561074c57565b601254808210612ff25760115480831015612f6d5750611afd90610df892611af6612f616013549365ffffffffffff93612a9e565b828460301c1690612f19565b905060145480158015612fe9575b15612fb35750610df89165ffffffffffff612fa9612f9f611afd9460015494612a9e565b8360d01c90612f19565b9160a01c16612b34565b611afd9150610df892612fdf612fd36013549365ffffffffffff93612a9e565b828460901c1690612f19565b9160601c16612b34565b50808310612f7b565b60405163d5b25b6360e01b8152600490fd5b65ffffffffffff8060135460601c16801591821561302f575b50506130295760105490565b600f5490565b90915061303b42613e26565b16105f8061301d565b5f546001600160a01b039160109190911c82169082160361308e576016541661306c57505f90565b633b9aca0060155461307e8184613c7f565b92091515810180911161074c5790565b60405163350b944160e11b8152600490fd5b906130c690825f52600860205260405f209060018060a01b03165f5260205260405f2090565b54905f52600660205260405f2054600760205260405f2054906001810180911161074c576001820180921161074c57610df892613cfd565b5f80516020614b34833981519152600281541461311b5760029055565b604051633ee5aeb560e01b8152600490fd5b60015f80516020614b3483398151915255565b335f908152600e602052604090209392919061315b42613e26565b335f908152600e6020526040902061317290613f40565b9184830392831161074c576131ad7febff2602b3f468259e1e99f613fed6691f3a6526effe6ef3e768ba7ae7a36c4f93859361323c99613b68565b50506131c76131bb42613e26565b610bf087611629613ecc565b50506131e16131d542613e26565b610bdb84611629613e58565b505061328a816132756131fe6131f961071b42613e26565b612b26565b613254613213825f52600660205260405f2090565b54613226835f52600760205260405f2090565b5461323282828b613f93565b9d8e998a93612b34565b61324e855f52600660205260405f2090565b55612b34565b613266825f52600760205260405f2090565b555f52600860205260405f2090565b9060018060a01b03165f5260205260405f2090565b613295838254612b34565b9055604080519485526020850195909552938301526001600160a01b03909216913391606090a3565b9081602091031261053a575163ffffffff8116810361053a5790565b90600163ffffffff8093160191821161074c57565b908051156133bb578060208061330a935183010191016132be565b61331381614204565b90613324825165ffffffffffff1690565b9065ffffffffffff80851692168281146133af578211918261335a575b50506133515750610df890613fb4565b60209150015190565b909150613368600a54612a90565b63ffffffff831614918215613381575b50505f80613341565b6133a791925061339b613396611a3e926132da565b614204565b5165ffffffffffff1690565b115f80613378565b50505060209150015190565b50610df890613fb4565b9080511561347057806020806133e0935183010191016132be565b6133e98161428e565b906133fa825165ffffffffffff1690565b9065ffffffffffff80851692168281146133af5782119182613427575b50506133515750610df89061407b565b909150613435600c54612a90565b63ffffffff83161491821561344e575b50505f80613417565b61346891925061339b613463611a3e926132da565b61428e565b115f80613445565b50610df89061407b565b9180511561353c5780602080613495935183010191016132be565b916134a0838261430e565b926134b1845165ffffffffffff1690565b9065ffffffffffff808516921682811461353057821191826134e7575b50506134de57610df8925061413b565b50506020015190565b9091506134f48354612a90565b63ffffffff83161491821561350d575b50505f806134ce565b61352891925061339b613522611a3e926132da565b8561430e565b115f80613504565b50505050506020015190565b50610df89161413b565b335f9081527f03b26b53c87faa1058f30bb5d2fee64f717719a0d9b7e4f4df027aa5e9b6ed69602052604090207fbae4ee3de6c709ff9a002e774c5b78cb381560b219213c88ae0f1e207c03c0239060ff905b541615610ef75750565b335f9081527fe41986b390c4ce6791b87f7423b5fab7a81a0e6d89660b6264f697d008b2243a602052604090207fc6aaadd7371d5e8f9ed6849dd66a66573a3ba37167d03f4352c9ba5693678fac9060ff90613599565b335f9081527f99e47f2907af87dbb5c62e22bd8ea822f5011dfd1e243469ce26ebebf3ab93e3602052604090207f591f6a0113ada8aff67efadec8ae2fa585cb4ebf4e1f8fc1205ffbeff98d00ec9060ff90613599565b335f9081527f665296150f4083bfe5a58682f99690b24ea27a3f56243679fa9797c6a16217aa602052604090207fc9feed28b4b1a1d11c6791da7bb7f6b8d33e831a4992a9383dead1ec2c82c35a9060ff90613599565b335f9081527f0287ab4cb376ea253d7b2ce0c2cbf458f7deae9458470d74afdfbbee484e9540602052604090207f9c56d972d63cbb4195b3c1484691dfc220fa96a4c47e7b6613bd82a022029e069060ff90613599565b5f8181525f80516020614b1483398151915260209081526040808320338452909152902060ff90613599565b5f8181525f80516020614b14833981519152602081815260408084206001600160a01b03871685529091529091205460ff166137bf575f828152602091825260408082206001600160a01b038616835290925220805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b5050505f90565b5f8181525f80516020614b14833981519152602081815260408084206001600160a01b03871685529091529091205460ff16156137bf575f828152602091825260408082206001600160a01b038616835290925220805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b6040516323b872dd60e01b60208201526001600160a01b03928316602482015292909116604483015260648083019390935291815260a08101918183106001600160401b038411176107bc5761080a9260405261437c565b600b54811015612eb857600b5f525f80516020614af483398151915201905f90565b600d54811015612eb857600d5f525f80516020614ad483398151915201905f90565b8054821015612eb8575f5260205f2001905f90565b600d54600160401b8110156107bc576001810180600d55811015612eb857600d5f525f80516020614ad48339815191520155565b600b54600160401b8110156107bc576001810180600b55811015612eb857600b5f525f80516020614af48339815191520155565b90815491600160401b8310156107bc578261399491600161080a950181556138f4565b90919082549060031b91821b915f19901b1916179055565b919091600d9081548015613a57575b506139c461440f565b509290918154926139d3613e58565b9481613a42575b5015613a1f57505f19820182811161074c5781541115612eb8575f527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb4018390559190565b613a33926001600160d01b0316915061460b565b5050613a3e83613909565b9190565b65ffffffffffff83811691161490505f6139da565b600160401b8110156107bc5760018101808455811015612eb8575f908382525f80516020614ad483398151915201555f6139bb565b919091600b9081548015613b33575b50613aa4614464565b50929091815492613ab3613ecc565b9481613b1e575b5015613aff57505f19820182811161074c5781541115612eb8575f527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db8018390559190565b613b13926001600160d01b031691506146db565b5050613a3e8361393d565b65ffffffffffff83811691161490505f613aba565b600160401b8110156107bc5760018101808455811015612eb8575f908382525f80516020614af483398151915201555f613a9b565b90929192600182019081548015613bf6575b5084613b85846144b9565b50949092845493613b9583613f40565b9681613be1575b5015613bbe575050505f19810190811161074c576139948591613a3e936138f4565b613a3e949293613bda926001600160d01b03909116919061477a565b5050613971565b65ffffffffffff83811691161490505f613b9c565b600160401b8110156107bc57806001613c1292018455836138f4565b8154905f199060031b1b191690555f613b7a565b60405163a9059cbb60e01b60208201526001600160a01b03909216602483015260448083019390935291815260808101916001600160401b038311828410176107bc5761080a9260405261437c565b8115612cdf570490565b90808202905f1981840990828083109203918083039214613cf057633b9aca009082821115613cde577f88f2cfb83100cb4e69e7c79c58b316e597157d372fb9787e8e47ce423a2e9c6d940990828211900360f71b910360091c170290565b634e487b715f5260116020526024601cfd5b5050633b9aca0091500490565b91818302915f1981850993838086109503948086039514613d7d5784831115613d705790829109815f038216809204600280826003021880830282030280830282030280830282030280830282030280830282030280920290030293600183805f03040190848311900302920304170290565b82156003026011186144f2565b505090610df89250613c75565b90613d9761071b42613e26565b821015612ff25760ff613dc7613db5845f52600960205260405f2090565b335f9081526020919091526040902090565b5416613e1457613dd733836130a0565b918215613e0257613df59061327533915f52600960205260405f2090565b805460ff19166001179055565b6040516366c0bcbf60e11b8152600490fd5b604051630c8d9eab60e31b8152600490fd5b65ffffffffffff90818111613e39571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b600c5480613e9357505f5b6001600160d01b03811615612c9757600d54811015612eb857600d5f525f80516020614ad4833981519152015490565b805f1981011161074c57600c5f527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c6015460301c613e63565b600a5480613f0757505f5b6001600160d01b03811615612c9757600b54811015612eb857600b5f525f80516020614af4833981519152015490565b805f1981011161074c57600a5f527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a7015460301c613ed7565b805480613f7557505f5b6001600160d01b03811615613f6f576001613f6592016138f4565b90549060031b1c90565b50505f90565b5f1990808281011161074c57825f5260205f2001015460301c613f4a565b91906001810180911161074c576001820180921161074c57610df892613cfd565b600a54905f829160058411614022575b613fce935061495f565b80613ff157505f5b6001600160d01b03811615612c9757613f65610df8916138b0565b61401661400061401d92612a90565b600a5f525f80516020614ab48339815191520190565b5460301c90565b613fd6565b919261402d81614834565b810390811161074c57613fce93600a5f5265ffffffffffff80835f80516020614ab4833981519152015416908516105f14614069575091613fc4565b92915061407590612b26565b90613fc4565b600c54905f8291600584116140e2575b61409593506149c8565b806140b857505f5b6001600160d01b03811615612c9757613f65610df8916138d2565b6140166140c76140dd92612a90565b600c5f525f80516020614a948339815191520190565b61409d565b91926140ed81614834565b810390811161074c5761409593600c5f5265ffffffffffff80835f80516020614a94833981519152015416908516105f1461412957509161408b565b92915061413590612b26565b9061408b565b908154905f82916005841161419e575b614156935084614a31565b8061417e57505f905b6001600160d01b03821615613f6f57610df8916001613f6592016138f4565b61401661418d61419892612a90565b835f5260205f200190565b9061415f565b91926141a981614834565b810390811161074c5761415693855f5265ffffffffffff808360205f20015416908516105f146141da57509161414b565b9291506141e690612b26565b9061414b565b604051906141f9826107c1565b5f6020838281520152565b61420c6141ec565b506142156141ec565b50600a54811015612eb857600a5f52602060405191614233836107c1565b5f80516020614ab483398151915201549165ffffffffffff83169283825260301c9182910152600b54811015612eb857600b5f525f80516020614af4833981519152015460405191614284836107c1565b8252602082015290565b6142966141ec565b5061429f6141ec565b50600c54811015612eb857600c5f526020604051916142bd836107c1565b5f80516020614a9483398151915201549165ffffffffffff83169283825260301c9182910152600d54811015612eb857600d5f525f80516020614ad4833981519152015460405191614284836107c1565b906020600161433261435e936143226141ec565b5061432b6141ec565b50856138f4565b509360405194614341866107c1565b549465ffffffffffff86169586825260301c9384910152016138f4565b9054906040519261436e846107c1565b835260031b1c602082015290565b905f602091828151910182855af115612b1b575f513d6143cd57506001600160a01b0381163b155b6143ab5750565b604051635274afe760e01b81526001600160a01b039091166004820152602490fd5b600114156143a4565b91906001810180911161074c576001820180921161074c576143f9828285613cfd565b928215612cdf57091515810180911161074c5790565b600c548061442057505f905f905f90565b805f1981011161074c57600c5f527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c6015460019165ffffffffffff82169160301c90565b600a548061447557505f905f905f90565b805f1981011161074c57600a5f527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a7015460019165ffffffffffff82169160301c90565b8054806144ca5750505f905f905f90565b5f1991818381011161074c575f5260205f2001015460019165ffffffffffff82169160301c90565b634e487b715f526020526024601cfd5b600c5490600160401b8210156107bc576001820180600c55821015612eb857600c5f52805160209091015160301b65ffffffffffff191665ffffffffffff91909116175f80516020614a9483398151915290910155565b600a5490600160401b8210156107bc576001820180600a55821015612eb857600a5f52805160209091015160301b65ffffffffffff191665ffffffffffff91909116175f80516020614ab483398151915290910155565b8054600160401b8110156107bc576145cd916001820181556138f4565b6145f857815160209092015160301b65ffffffffffff191665ffffffffffff92909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b600c5491929180156146b2576140c761462391612a90565b9081549165ffffffffffff908184169183168083116146a0578692036146685761466192509065ffffffffffff82549181199060301b169116179055565b60301c9190565b505061469b906146876146796107fd565b65ffffffffffff9092168252565b6001600160d01b0385166020820152614502565b614661565b604051632520601d60e01b8152600490fd5b506146d6906146c26146796107fd565b6001600160d01b0384166020820152614502565b5f9190565b600a549192918015614756576140006146f391612a90565b9081549165ffffffffffff908184169183168083116146a0578692036147315761466192509065ffffffffffff82549181199060301b169116179055565b505061469b906147426146796107fd565b6001600160d01b0385166020820152614559565b506146d6906147666146796107fd565b6001600160d01b0384166020820152614559565b8054929392801561480f5761479161479c91612a90565b825f5260205f200190565b9182549265ffffffffffff918285169281168084116146a0578793036147db575061466192509065ffffffffffff82549181199060301b169116179055565b91505061469b916147fb6147ed6107fd565b65ffffffffffff9093168352565b6001600160d01b03861660208301526145b0565b50906146d6916148206147ed6107fd565b6001600160d01b03851660208301526145b0565b6001811115610df857600181600160801b81101561494d575b6148f56148eb6148e16148d76148cd6148c361490197600488600160401b6148fc9a1015614940575b640100000000811015614933575b62010000811015614926575b61010081101561491a575b601081101561490e575b1015614906575b60030260011c6148bc818b613c75565b0160011c90565b6148bc818a613c75565b6148bc8189613c75565b6148bc8188613c75565b6148bc8187613c75565b6148bc8186613c75565b8093613c75565b821190565b900390565b60011b6148ac565b811c9160021b916148a5565b60081c91811b9161489b565b60101c9160081b91614890565b60201c9160101b91614884565b60401c9160201b91614876565b50600160401b9050608082901c61484d565b905b82811061496d57505090565b9091808216906001818418811c830180931161074c57600a5f5265ffffffffffff80845f80516020614ab4833981519152015416908616105f146149b5575050915b90614961565b90939250810180911161074c57906149af565b905b8281106149d657505090565b9091808216906001818418811c830180931161074c57600c5f5265ffffffffffff80845f80516020614a94833981519152015416908616105f14614a1e575050915b906149ca565b90939250810180911161074c5790614a18565b91905b838210614a415750505090565b909192808316906001818518811c830180931161074c57855f5265ffffffffffff808460205f20015416908516105f14614a80575050925b9190614a34565b90949350810180911161074c5791614a7956fedf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7c65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8d7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db902dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a2646970667358221220ac823fce5da4c65530b4382f05d5e1620cd63891e7cada7b067ca18bfa5c908464736f6c63430008190033","sourceMap":"1252:21595:107:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;-1:-1:-1;;1252:21595:107;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3551:47:23;;;:87;;;;1252:21595:107;;;;;;;;;;3551:87:23;-1:-1:-1;;;1134:40:32;;-1:-1:-1;3551:87:23;;;1252:21595:107;-1:-1:-1;1252:21595:107;;;;;;;;-1:-1:-1;;1252:21595:107;;;;;;;757:38:108;1252:21595:107;;;;;;;;;-1:-1:-1;;1252:21595:107;;;;;;;612:37:108;1252:21595:107;;;;-1:-1:-1;;;;;1252:21595:107;;;;;:::o;:::-;;;;;;-1:-1:-1;;1252:21595:107;;;;;;;;;:::i;:::-;;;3361:103:30;;;:::i;:::-;-1:-1:-1;;;;;1252:21595:107;;10891:21;10887:75;;11000:10;1252:21595;;;;6047:15;1252:21595;;;;;6047:33;;;:::i;:24::-;:33;:::i;:::-;10976:35;;10972:88;;1057:70:95;5628:21:107;;:::i;:::-;5272:22;;:::i;:::-;1057:70:95;;;:::i;:::-;11167:20:107;;;11163:82;;11270:43;;;;:::i;:::-;3426:1:30;;;:::i;:::-;1252:21595:107;;;;;;;;;;;;;;;;;;11163:82;1252:21595;;-1:-1:-1;;;;;;11210:24:107;;1252:21595;;11210:24;10972:88;1252:21595;;-1:-1:-1;;;11034:15:107;;1252:21595;;11034:15;10887:75;1252:21595;;-1:-1:-1;;;10935:16:107;;1252:21595;;10935:16;1252:21595;;;;;;-1:-1:-1;;1252:21595:107;;;;;;-1:-1:-1;1252:21595:107;-1:-1:-1;;;;;;;;;;;1252:21595:107;;;4919:24:23;1252:21595:107;-1:-1:-1;1252:21595:107;4919:24:23;1252:21595:107;;;;;;;;;;;;;-1:-1:-1;;1252:21595:107;;;;;;;;-1:-1:-1;;;;;1252:21595:107;;;;;;;;;;;;;;-1:-1:-1;;1252:21595:107;;;;4331:25;819:34:73;837:15;819:34;:::i;:::-;4331:25:107;:::i;:::-;4680:10;;4676:65;;-1:-1:-1;;1252:21595:107;;;;;;;4757:21;1252:21595;4757:21;;:::i;:::-;1252:21595;;;;;;;;;;:::i;4676:65::-;1252:21595;;-1:-1:-1;;;4713:17:107;;1252:21595;;4713:17;1252:21595;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1252:21595:107;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;-1:-1:-1;;;;;1252:21595:107;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;1252:21595:107;;;;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;:::-;-1:-1:-1;;;;;1252:21595:107;;;;;;-1:-1:-1;;1252:21595:107;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;1252:21595:107;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;1252:21595:107;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;-1:-1:-1;;;;;1252:21595:107;;;;;;;5831:59;1252:21595;;;;;;:::i;:::-;-1:-1:-1;;;;;1252:21595:107;;;-1:-1:-1;1252:21595:107;;;5831:15;1252:21595;;;;;5831:59;:::i;:::-;1252:21595;;;;;;;;;;;;-1:-1:-1;;1252:21595:107;;;;5350:25:23;1252:21595:107;;;;;;;:::i;:::-;;-1:-1:-1;1252:21595:107;-1:-1:-1;;;;;;;;;;;1252:21595:107;;3202:4:23;4919:24;1252:21595:107;-1:-1:-1;1252:21595:107;4919:24:23;1252:21595:107;3202:4:23;:::i;:::-;5350:25;:::i;:::-;1252:21595:107;;;;;;;-1:-1:-1;;1252:21595:107;;;;;;;1479:40:108;1252:21595:107;;;;;;;;;-1:-1:-1;;1252:21595:107;;;;;;;;;:::i;:::-;966:10:28;-1:-1:-1;;;;;1252:21595:107;;6441:34:23;6437:102;;6549:37;1252:21595:107;;;6549:37:23;:::i;6437:102::-;1252:21595:107;;-1:-1:-1;;;6498:30:23;;1252:21595:107;;6498:30:23;1252:21595:107;;;;;;-1:-1:-1;;1252:21595:107;;;;;6206:22;1252:21595;;;;6206:46;;;1252:21595;;;;;;;;;;;6206:46;-1:-1:-1;6232:20:107;1252:21595;;;;;6206:46;;1252:21595;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;1252:21595:107;;;;;;;;;:::i;:::-;3361:103:30;;:::i;:::-;3202:4:23;;:::i;:::-;-1:-1:-1;1252:21595:107;;;;;;;;;;;16137:26;16133:76;;-1:-1:-1;;1252:21595:107;;;;;-1:-1:-1;1252:21595:107;;;;;;16260:27;;1252:21595;;16260:27;1949:1:30;-1:-1:-1;;;;;;;;;;;1252:21595:107;;16133:76;1252:21595;;-1:-1:-1;;;16186:12:107;;1252:21595;;16186:12;1252:21595;;;;;;-1:-1:-1;;1252:21595:107;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;3361:103:30;;:::i;:::-;-1:-1:-1;;;;;1252:21595:107;;;;;8840:24;;8836:81;;-1:-1:-1;1252:21595:107;;;;8931:55;;;1252:21595;8927:118;;1252:21595;;-1:-1:-1;;;9079:43:107;;;9116:4;9079:43;;;1252:21595;;;;;;;;;;;;;;;;;;;;;;;;;9079:43;;;;;;;;;;-1:-1:-1;9079:43:107;;;1252:21595;;9195:6;1252:21595;;;9116:4;;9168:10;;9195:6;;:::i;:::-;-1:-1:-1;1252:21595:107;;;9230:43;;;9116:4;9230:43;;;1252:21595;;;;;;;;;;9230:43;1252:21595;;;;;;9230:43;1252:21595;;;;;9230:43;;;;;;;:59;:43;-1:-1:-1;9230:43:107;;;1252:21595;9230:59;;;:::i;:::-;9304:20;;;9300:79;;1252:21595;;;;;9393:64;;1252:21595;9389:123;;5628:21;;1252:21595;5628:21;9868:93;5628:21;;:::i;:::-;5272:22;9792:66;5272:22;;:::i;:::-;9715:67;390:70:95;;;;;:::i;:::-;837:15:73;9751:30:107;837:15:73;819:34;837:15;819:34;:::i;:::-;9751:30:107;;:::i;:::-;9715:67;;:::i;:::-;837:15:73;;9829:28:107;837:15:73;819:34;837:15;819:34;:::i;9829:28:107:-;9792:66;;:::i;:::-;-1:-1:-1;;;;;;;1252:21595:107;;;;;;6047:15;1252:21595;;;;;837:15:73;9919:41:107;837:15:73;6047:33:107;:24;819:34:73;837:15;819:34;:::i;:::-;-1:-1:-1;;;;;1252:21595:107;;;;;;;6047:15;1252:21595;;;;;;;6047:33;9919:41;:::i;:::-;9868:93;;:::i;:::-;-1:-1:-1;;1252:21595:107;;;;;;;;;;;9168:10;;9977:62;;1252:21595;;9977:62;3426:1:30;;:::i;:::-;1252:21595:107;;;;;;;;;;;;;;;;;;;9389:123;1252:21595;;-1:-1:-1;;;9480:21:107;;;9393:64;5628:21;9411:31;5628:21;;;:::i;9411:31::-;1252:21595;;-1:-1:-1;9393:64:107;;9300:79;-1:-1:-1;1252:21595:107;;-1:-1:-1;;;9347:21:107;;;9230:43;;;;;;-1:-1:-1;9230:43:107;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;:::i;9079:::-;9195:6;9079:43;;;;;;;;;;;;;;;:::i;:::-;;;;;8927:118;-1:-1:-1;1252:21595:107;;-1:-1:-1;;;9009:25:107;;;8931:55;-1:-1:-1;8975:10:107;1252:21595;;;;8952:22;1252:21595;;;;;;;;8951:35;8931:55;;8836:81;1252:21595;;-1:-1:-1;;;8887:19:107;;;1252:21595;;;;;;-1:-1:-1;;1252:21595:107;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1252:21595:107;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;1252:21595:107;;;;;;2297:34:108;1252:21595:107;;;;;;;;;;;;;;;-1:-1:-1;;1252:21595:107;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1252:21595:107;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;5098:48;1252:21595;;;:::i;:::-;5098:48;;:::i;1252:21595::-;;;;;;-1:-1:-1;;1252:21595:107;;;;;;;;;:::i;:::-;3361:103:30;;:::i;:::-;966:10:28;-1:-1:-1;1252:21595:107;;;;;;;;;;1479:40:108;;1252:21595:107;;4468:23:23;4464:108;;-1:-1:-1;20032:16:107;1252:21595;-1:-1:-1;;;;;1252:21595:107;;;;;;20032:37;;20028:87;;-1:-1:-1;;;;;;1252:21595:107;;;20032:16;1252:21595;;;;;;20176:38;;1252:21595;;20176:38;1949:1:30;-1:-1:-1;;;;;;;;;;;1252:21595:107;;4464:108:23;1252:21595:107;;;;4514:47:23;;;;;;966:10:28;1252:21595:107;4514:47:23;;1252:21595:107;;;;;4514:47:23;1252:21595:107;;;;;;-1:-1:-1;;1252:21595:107;;;;;;;;;:::i;:::-;3361:103:30;;:::i;:::-;3202:4:23;;:::i;:::-;-1:-1:-1;1252:21595:107;;;;;;;;;;;;;16965:24;16961:74;;-1:-1:-1;;1252:21595:107;;;;;;;;-1:-1:-1;1252:21595:107;;;;;;17084:25;;1252:21595;;17084:25;3426:1:30;;:::i;1252:21595:107:-;;;;;;-1:-1:-1;;1252:21595:107;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;-1:-1:-1;;1252:21595:107;;;;;;-1:-1:-1;1252:21595:107;2760:59:108;1252:21595:107;;;;-1:-1:-1;1252:21595:107;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1252:21595:107;;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;1252:21595:107;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;1252:21595:107;;;;;;;;;;;:::i;:::-;3361:103:30;;;;;:::i;:::-;12559:10:107;;12555:70;;12646:19;;;:::i;:::-;12638:27;;12634:82;;12739:22;;;12837:44;12739:22;;:::i;:::-;-1:-1:-1;1252:21595:107;;;;12837:19;;1252:21595;;-1:-1:-1;;;;;1252:21595:107;;-1:-1:-1;;;;;1252:21595:107;;;12837:19;1252:21595;;;-1:-1:-1;;;12837:44:107;;;12875:4;12837:44;;;1252:21595;;;;;;;;;;;-1:-1:-1;;;;;1252:21595:107;;;;;;;;;;;;;;;;;;;;;;;12837:44;;;;;;;;;;;;;;;;;-1:-1:-1;12837:44:107;;;1252:21595;;;;12965:57;1252:21595;12944:5;1252:21595;;;;;;;;;;12944:5;;;:::i;:::-;1252:21595;-1:-1:-1;;;12965:57:107;;1252:21595;;;;;12986:10;;12965:57;;;:::i;:::-;;;-1:-1:-1;12965:57:107;;;;;;;1714:45:108;12965:57:107;-1:-1:-1;12965:57:107;;;1252:21595;12965:73;;12961:128;;13170:11;;;;;;;:::i;:::-;12875:4;;13170:11;;;:::i;:::-;1252:21595;;13216:44;;;12875:4;13216:44;;;1252:21595;;;;;;;;;;;;;13216:44;;;;;;;;;-1:-1:-1;13216:44:107;;;1252:21595;13274:28;;;;;;:::i;:::-;:34;13270:93;;13378:28;;;;:::i;:::-;13421:7;13417:93;;1252:21595;3426:1:30;;;:::i;:::-;1252:21595:107;13527:4;1252:21595;;;;;13417:93;13477:16;1252:21595;13495:3;;1252:21595;-1:-1:-1;;;;;1252:21595:107;;13495:3;;:::i;:::-;13417:93;;;;13270;1252:21595;;;;13331:21;;;;;;13216:44;;;;;;;-1:-1:-1;13216:44:107;;;;;;:::i;:::-;;;;;;12961:128;1252:21595;;-1:-1:-1;;;13061:17:107;;1252:21595;;13061:17;12965:57;;;;;;;;;;;;;;:::i;:::-;;;;12837:44;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12634:82;1252:21595;;-1:-1:-1;;;12688:17:107;;1252:21595;;12688:17;12555:70;1252:21595;;-1:-1:-1;;;12592:22:107;;1252:21595;;12592:22;1252:21595;;;;;;-1:-1:-1;;1252:21595:107;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;-1:-1:-1;;1252:21595:107;;;;;;;1041:36:108;1252:21595:107;;;;;;;;;-1:-1:-1;;1252:21595:107;;;;;4486:26;4331:25;819:34:73;837:15;819:34;:::i;4331:25:107:-;4486:26;:::i;1252:21595::-;;;;;;-1:-1:-1;;1252:21595:107;;;;;;;1714:45:108;1252:21595:107;;;;;;;;;-1:-1:-1;;1252:21595:107;;;;;;4070:28:108;1252:21595:107;;;;;;;;;;;;;;;;;;-1:-1:-1;;1252:21595:107;;;;;;1575:42;-1:-1:-1;;;;;1252:21595:107;;;;;;;;;;;;-1:-1:-1;;1252:21595:107;;;;;;2465:32:108;1252:21595:107;;;;;;;;;;;;;;;;;;-1:-1:-1;;1252:21595:107;;;;;;;;:::i;:::-;3361:103:30;;:::i;:::-;13726:7:107;1252:21595;13712:21;;-1:-1:-1;;;;;1252:21595:107;;;13712:21;:10;:21;13708:71;;4331:25;819:34:73;837:15;819:34;:::i;4331:25:107:-;13860;;;;:::i;:::-;13900:17;;;;:53;;;1252:21595;13899:87;;;;1252:21595;13895:146;;1252:21595;5628:21;15905:48;5628:21;;;:::i;:::-;14135:17;14123:30;14135:17;;;:::i;:::-;1252:21595;;14123:11;1252:21595;;;;;;;14123:30;1252:21595;;14167:29;;;;;14237:30;;;;;:::i;:::-;3066:5:68;;;3463;;;1252:21595:107;3060:42:68;;14347:17:107;;;14343:384;;14163:1615;;;;;;;15792:17;15788:102;;14163:1615;1252:21595;;;;;;;;;;;;;;;;;;;;;;;15905:48;3426:1:30;;:::i;:::-;1252:21595:107;;;;;;;;;;;;;15788:102;-1:-1:-1;1252:21595:107;15865:13;;1252:21595;;15825:18;;1252:21595;;-1:-1:-1;;;;;1252:21595:107;;;15825:18;14151:1;1252:21595;-1:-1:-1;;;;;1252:21595:107;;;15865:13;15788:102;;14343:384;14640:29;14408:50;14557:65;14408:50;14593:28;14509:29;14408:50;14652:16;14408:50;14672:40;14408:50;;;:::i;:::-;14509:29;;;:::i;:::-;837:15:73;819:34;837:15;819:34;:::i;:::-;14593:28:107;;:::i;14672:40::-;14652:16;;:::i;14640:29::-;1252:21595;14343:384;;;;;;;14163:1615;14780:26;;;;1252:21595;;14123:11;1252:21595;;;;;;;14780:26;1252:21595;14845:27;:45;:27;;;;;:::i;:45::-;3463:5:68;3066;;;3463;;;1252:21595:107;3060:42:68;;14970:17:107;;14966:802;;14163:1615;;;;;;;;14966:802;15691:26;15031:50;;15132:53;15031:50;15232:54;15031:50;15232:29;15031:50;15720:33;15031:50;;;;:::i;:::-;15132:53;;;;;;:::i;:::-;15232:29;;;;:::i;:::-;:54;:::i;:::-;15309:33;;;;15305:194;;14966:802;15517:65;837:15:73;15553:28:107;15633:40;837:15:73;;;819:34;837:15;819:34;:::i;15633:40:107:-;15600:30;15612:17;;;:::i;15600:30::-;1252:21595;15720:33;:::i;:::-;15691:26;1252:21595;;14123:11;1252:21595;;;;;;;15691:26;1252:21595;14966:802;;;;;;;15305:194;15392:33;15366:59;15517:65;15392:33;;;15633:40;15392:33;;;:::i;:::-;15366:59;;:::i;:::-;15447:33;;-1:-1:-1;15447:33:107;;-1:-1:-1;15305:194:107;;13895:146;1252:21595;;-1:-1:-1;;;14009:21:107;;1252:21595;;14009:21;13899:87;13958:28;;;;13899:87;;13900:53;13936:17;;;;:::i;:::-;13921:32;;13900:53;;13708:71;1252:21595;;-1:-1:-1;;;13756:12:107;;1252:21595;;13756:12;1252:21595;;;;;;-1:-1:-1;;1252:21595:107;;;;4331:25;819:34:73;837:15;819:34;:::i;4331:25:107:-;4933:1;1252:21595;;;;;;;4905:30;1252:21595;4905:30;;:::i;1252:21595::-;;;;;;-1:-1:-1;;1252:21595:107;;;;;4331:25;819:34:73;837:15;819:34;:::i;1252:21595:107:-;;;;;;-1:-1:-1;;1252:21595:107;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;1252:21595:107;2636:68:108;1252:21595:107;;;;;-1:-1:-1;1252:21595:107;;;;;;;;;;;;;;;;;-1:-1:-1;;1252:21595:107;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;1252:21595:107;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1252:21595:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11857:14;1252:21595;;11857:14;;:::i;1252:21595::-;;;;;5456:47;1252:21595;;;:::i;:::-;5456:47;;:::i;1252:21595::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;3361:103:30;;:::i;:::-;20361:22:107;1252:21595;;;;;20357:89;;1252:21595;;-1:-1:-1;;;20461:49:107;;-1:-1:-1;;;;;1252:21595:107;;;20461:49;;;1252:21595;;;;;;;;;;;;;;;20461:49;20471:17;;;1252:21595;20461:49;;;;;;;-1:-1:-1;20461:49:107;;;1252:21595;20460:50;;20456:102;;1252:21595;;-1:-1:-1;;;20572:34:107;;1252:21595;;;;;20572:34;1252:21595;20572:34;1252:21595;;20572:34;;;;;;;-1:-1:-1;20572:34:107;;;1252:21595;20618:4;;;1252:21595;;20572:51;20568:107;;-1:-1:-1;20361:22:107;1252:21595;;-1:-1:-1;;;;;1252:21595:107;;;;-1:-1:-1;;;;;;1252:21595:107;;;;;;;-1:-1:-1;;;1252:21595:107;;;20763:24;-1:-1:-1;;20763:24:107;3426:1:30;;:::i;20568:107:107:-;1252:21595;;-1:-1:-1;;;20646:18:107;;;20572:34;;;;;;;-1:-1:-1;20572:34:107;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;20456:102;-1:-1:-1;1252:21595:107;;-1:-1:-1;;;20533:14:107;;;20461:49;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;20357:89;1252:21595;;-1:-1:-1;;;20406:29:107;;;1252:21595;;;;;;-1:-1:-1;;1252:21595:107;;;;;;:::i;:::-;;;3361:103:30;;:::i;:::-;3202:4:23;;:::i;:::-;17687:1:107;17656:32;;17652:106;;1252:21595;;;;17772:22;1252:21595;;;;;;;;;;17772:27;;;:73;;;;1252:21595;17768:668;;;1252:21595;18450:14;1252:21595;;;;;;;;18450:31;;;18446:94;;17772:22;1252:21595;18567:27;;1252:21595;;;;;;;;;18567:27;;:63;;;;1252:21595;18567:143;;;;;1252:21595;18550:215;;18897:105;18922:80;18923:67;19091:62;837:15:73;18775:67:107;18797:45;4331:25;819:34:73;837:15;819:34;:::i;4331:25:107:-;18814:28;1252:21595;18797:45;;:::i;:::-;18775:67;1252:21595;;18775:67;17772:22;1252:21595;;-1:-1:-1;;;;1252:21595:107;;;;;-1:-1:-1;;;1252:21595:107;;;;4486:26;4331:25;819:34:73;837:15;819:34;:::i;4486:26:107:-;1252:21595;18945:45;18814:28;1252:21595;18945:45;1252:21595;18450:14;1252:21595;;;;;18945:45;;;:::i;:::-;1252:21595;;18923:67;:::i;:::-;18922:80;:::i;:::-;17772:22;1252:21595;;-1:-1:-1;;;;1252:21595:107;;;;;;-1:-1:-1;;;1252:21595:107;;;;;;;;18897:105;19012:63;;;1252:21595;;19012:63;1252:21595;;;;;;;;;;;;;;;;;19091:62;3426:1:30;;:::i;18567:143:107:-;1252:21595;;18650:28;1252:21595;18650:60;18567:143;;:63;18598:32;;-1:-1:-1;18567:63:107;;;;18446:94;1252:21595;;-1:-1:-1;;;18504:25:107;;1252:21595;;18504:25;17768:668;17861:53;17891:23;1252:21595;17861:53;1252:21595;;17861:53;17928:35;1252:21595;17949:14;1252:21595;;;;;;;17772:22;1252:21595;;;;;;;;;;17772:22;1252:21595;;17928:35;17949:14;1252:21595;17977:43;;1252:21595;;;;;;;;17772:22;1252:21595;;;17772:22;1252:21595;;17977:43;18034:45;18060:19;1252:21595;17891:23;1252:21595;;18034:45;17772:22;1252:21595;18093:35;;1252:21595;;;;17949:14;1252:21595;;-1:-1:-1;;;;;1252:21595:107;;;;;;-1:-1:-1;;;;;;1252:21595:107;;;;;;;;18093:35;17772:22;1252:21595;18142:43;;1252:21595;;;;17949:14;1252:21595;;-1:-1:-1;;;;1252:21595:107;;;;;;-1:-1:-1;;;1252:21595:107;;;;;;;;18142:43;18199:63;18230:32;1252:21595;18199:63;1252:21595;;18199:63;18276:23;17798:1;18060:19;1252:21595;;18276:23;17772:22;1252:21595;;-1:-1:-1;;;;1252:21595:107;;;-1:-1:-1;18230:32:107;1252:21595;17768:668;;17772:73;837:15:73;;17803:42:107;819:34:73;837:15;819:34;:::i;17803:42:107:-;-1:-1:-1;17803:42:107;17772:73;;;17652:106;1252:21595;;-1:-1:-1;;;17711:36:107;;1252:21595;;17711:36;1252:21595;;;;;;-1:-1:-1;;1252:21595:107;;;;;;;;;:::i;:::-;3361:103:30;;:::i;:::-;3202:4:23;;:::i;:::-;19338:16:107;1252:21595;;;;;;;;;;;;;19338:26;19334:76;;-1:-1:-1;;;;1252:21595:107;;;;;-1:-1:-1;;;1252:21595:107;;19338:16;1252:21595;;;;;;19461:27;;1252:21595;;19461:27;3426:1:30;;:::i;1252:21595:107:-;;;;;;-1:-1:-1;;1252:21595:107;;;;;;1666:40;-1:-1:-1;;;;;1252:21595:107;;;;;;;;;;;;-1:-1:-1;;1252:21595:107;;;;4331:25;819:34:73;837:15;819:34;:::i;4331:25:107:-;5628:21;;:::i;:::-;1252:21595;;;;6432:11;1252:21595;;;;;;;;;;;;;6473:1;1252:21595;;;;;;;;;6432:11;1252:21595;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1252:21595:107;;;;;;3901:31:23;1252:21595:107;;;;;:::i;:::-;;;-1:-1:-1;1252:21595:107;-1:-1:-1;;;;;;;;;;;1252:21595:107;;;-1:-1:-1;1252:21595:107;;;;;;;;;;;;;;;;;3901:31:23;1252:21595:107;;;;;;;;;;;;;;;;-1:-1:-1;;1252:21595:107;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;1252:21595:107;6047:15;1252:21595;;;6047:33;1252:21595;-1:-1:-1;1252:21595:107;6047:33;:::i;1252:21595::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1252:21595:107;;;;-1:-1:-1;1252:21595:107;477:31:86;1252:21595:107;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;416:25:86;;;;1252:21595:107;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;1252:21595:107;;;;;;;;;;;;477:31:86;;;1252:21595:107;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1252:21595:107;;;;;;;;;;;;;;477:31:86;1252:21595:107;477:31:86;;;;;;;:::i;:::-;518:79;;;1252:21595:107;518:79:86;;1252:21595:107;;;;;;;;;;;-1:-1:-1;;1252:21595:107;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1252:21595:107;;;;;;;;;;;;;;;;;-1:-1:-1;;1252:21595:107;;;;;;;900:35:108;1252:21595:107;;;;;;;;;-1:-1:-1;;1252:21595:107;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;3361:103:30;;:::i;:::-;3202:4:23;;:::i;:::-;-1:-1:-1;;;;;1252:21595:107;;;16502:21;;16498:75;;-1:-1:-1;1252:21595:107;;;16587:22;1252:21595;;;;;;;;;;;;;16587:41;16583:91;;-1:-1:-1;;;;;1252:21595:107;;;;;8952:22;1252:21595;;;;;16740:44;;;;16684:40;;:31;1252:21595;;;;;;;;;;;;;;16684:40;1252:21595;;;;;;;;;;;;;;;16740:44;;;;3426:1:30;;:::i;16498:75:107:-;1252:21595;;-1:-1:-1;;;16546:16:107;;1252:21595;;16546:16;1252:21595;;;;;;-1:-1:-1;;1252:21595:107;;;;;2995:94:108;1252:21595:107;;;;;:::i;:::-;;;-1:-1:-1;1252:21595:107;2995:94:108;1252:21595:107;;;-1:-1:-1;1252:21595:107;;;;;;;;;;;;;;;;;2995:94:108;1252:21595:107;;;;;;;;;;;;;-1:-1:-1;;1252:21595:107;;;;;;3145:92:108;1252:21595:107;;;;;:::i;:::-;;;-1:-1:-1;1252:21595:107;3145:92:108;1252:21595:107;;;-1:-1:-1;1252:21595:107;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1252:21595:107;;;;;;;1187:40:108;1252:21595:107;;;;;;;;;-1:-1:-1;;1252:21595:107;;;;3983:31:108;1252:21595:107;;;-1:-1:-1;;;;;1252:21595:107;;;;;;;;;;;;;;-1:-1:-1;;1252:21595:107;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;3361:103:30;;:::i;:::-;20930:20:107;1252:21595;;;;;20926:85;;-1:-1:-1;;;;;1252:21595:107;;;;;;21021:312;;1252:21595;20930:20;1252:21595;;-1:-1:-1;;;;1252:21595:107;-1:-1:-1;;;1252:21595:107;;;21343:27;21386:20;-1:-1:-1;21386:20:107;;3426:1:30;;:::i;21021:312:107:-;1252:21595;;-1:-1:-1;;;21068:45:107;;-1:-1:-1;;;;;1252:21595:107;;21068:45;;;1252:21595;;;21068:45;;1252:21595;;;;;;21068:45;21078:15;;;1252:21595;21068:45;;;;;;;-1:-1:-1;21068:45:107;;;21021:312;21067:46;;21063:104;;1252:21595;;-1:-1:-1;;;21185:30:107;;;1252:21595;21185:30;1252:21595;21185:30;;;;;;;;-1:-1:-1;21185:30:107;;;21021:312;21227:4;;;1252:21595;;21185:47;21181:109;;-1:-1:-1;20930:20:107;1252:21595;;-1:-1:-1;;;;;;1252:21595:107;-1:-1:-1;;;;;1252:21595:107;;;;;;;;;21021:312;;;;;;21181:109;1252:21595;;-1:-1:-1;;;21259:16:107;;;21185:30;;;;;;;-1:-1:-1;21185:30:107;;;;;;:::i;:::-;;;;;;21063:104;1252:21595;;-1:-1:-1;;;21140:12:107;;1252:21595;;21140:12;21068:45;;;;;;;;;;;;;;:::i;:::-;;;;20926:85;1252:21595;;-1:-1:-1;;;20973:27:107;;;1252:21595;;;;;;-1:-1:-1;;1252:21595:107;;;;;;;;;:::i;:::-;;;3361:103:30;;;:::i;:::-;-1:-1:-1;;;;;1252:21595:107;;;;;11478:23;;11474:79;;11639:6;1252:21595;11572:13;;;;:::i;:::-;1252:21595;;;-1:-1:-1;1252:21595:107;;;;11639:6;:::i;:::-;1252:21595;;;;;;;;;;;;11668:10;;11662:43;;1252:21595;11662:43;1949:1:30;-1:-1:-1;;;;;;;;;;;1252:21595:107;;;;;;;;;;;;;;11474:79;1252:21595;;-1:-1:-1;;;11524:18:107;;1252:21595;;11524:18;1252:21595;;;;;;-1:-1:-1;;1252:21595:107;;;;;;-1:-1:-1;1252:21595:107;2875:64:108;1252:21595:107;;;;-1:-1:-1;1252:21595:107;;;;;;;;;;;;;;-1:-1:-1;;1252:21595:107;;;;2387:22:108;1252:21595:107;;;-1:-1:-1;;;;;1252:21595:107;;;;;;;;;;;;;;-1:-1:-1;;1252:21595:107;;;;;;;1333:36:108;1252:21595:107;;;;;;;;;-1:-1:-1;;1252:21595:107;;;;;5628:21;;:::i;1252:21595::-;;;;;;-1:-1:-1;;1252:21595:107;;;;;;3361:103:30;;:::i;:::-;966:10:28;-1:-1:-1;1252:21595:107;;;;;;;;;;900:35:108;;1252:21595:107;;4468:23:23;4464:108;;1252:21595:107;;;;17287:21;17283:71;;1252:21595;;17400:22;1252:21595;;;;;;;;17400:22;1949:1:30;-1:-1:-1;;;;;;;;;;;1252:21595:107;;;;;;;;-1:-1:-1;;1252:21595:107;;;;;5272:22;;:::i;1252:21595::-;;;;;;-1:-1:-1;;1252:21595:107;;;;;;;;;:::i;:::-;4331:25;819:34:73;837:15;819:34;:::i;4331:25:107:-;7836:24;;;:::i;:::-;7863:29;;;;;:::i;:::-;1252:21595;;;;;;;7917:1;1252:21595;;;;;;;7895:33;;;:::i;:::-;1252:21595;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1252:21595:107;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;1252:21595:107;;;;2217:24:108;1252:21595:107;;;-1:-1:-1;;;;;1252:21595:107;;;;;;;;;;;;;;-1:-1:-1;;1252:21595:107;;;;5767:26:23;1252:21595:107;;;;;;;:::i;:::-;;-1:-1:-1;1252:21595:107;-1:-1:-1;;;;;;;;;;;1252:21595:107;;3202:4:23;4919:24;1252:21595:107;-1:-1:-1;1252:21595:107;4919:24:23;1252:21595:107;3202:4:23;:::i;:::-;5767:26;:::i;1252:21595:107:-;;;;;;-1:-1:-1;;1252:21595:107;;;;;;3361:103:30;;:::i;:::-;966:10:28;-1:-1:-1;1252:21595:107;;;;;;;;;;1333:36:108;;1252:21595:107;;4468:23:23;4464:108;;1252:21595:107;;19675:12;1252:21595;19675:29;19671:79;;1252:21595;;19803:30;1252:21595;19675:12;1252:21595;;;;;;19803:30;1949:1:30;-1:-1:-1;;;;;;;;;;;1252:21595:107;;;;;;;;-1:-1:-1;;1252:21595:107;;;;;;;;;;;;;-1:-1:-1;;;;;1252:21595:107;;;;;;;;;;;;-1:-1:-1;;1252:21595:107;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;-1:-1:-1;;1252:21595:107;;;;;;;466:39:108;1252:21595:107;;;;;;;;;-1:-1:-1;;1252:21595:107;;;;;3900:27:108;1252:21595:107;;;;;;;;;;;;;-1:-1:-1;;1252:21595:107;;;;;;;1616:3:108;1252:21595:107;;;;;;;;;-1:-1:-1;;1252:21595:107;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1252:21595:107;;;;;;;;;:::i;:::-;;;:::i;:::-;-1:-1:-1;;;;;1252:21595:107;;;;;;;;;;;;;;;;:::i;:::-;6654:48;;1252:21595;;;;;;;:::i;:::-;;;;;;;;;;;;;;6716:16;;6712:111;;1252:21595;;6915:39;1057:70:95;6915:39:107;;5098:48;6878:77;6915:39;;;;6878:77;;:::i;:::-;6994:36;;5456:47;1252:21595;6994:36;;;5456:47;;:::i;:::-;7071:37;;;5098:48;;:::i;:::-;1057:70:95;;:::i;:::-;1252:21595:107;;;;;;;;;;;;;6712:111;6771:41;;;;-1:-1:-1;1252:21595:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;5098:48;1252:21595;6878:77;1252:21595;1057:70:95;1252:21595:107;;;:::i;:::-;;;;;6712:111;;;;;1252:21595;;;;;;-1:-1:-1;;1252:21595:107;;;;;;;;;:::i;:::-;;;3361:103:30;;:::i;:::-;-1:-1:-1;;;;;1252:21595:107;;10256:21;10252:75;;10341:11;;10337:73;;845:69:95;5272:22:107;;:::i;:::-;5628:21;;:::i;:::-;845:69:95;;;:::i;:::-;10546:10:107;1252:21595;;;;6047:15;1252:21595;;;;;10546:10;;;6047:33;;;:::i;:::-;10516:41;;10512:96;;10633:40;;;;;:::i;10512:96::-;1252:21595;;-1:-1:-1;;;10580:17:107;;1252:21595;;10580:17;10337:73;1252:21595;;-1:-1:-1;;;10375:24:107;;1252:21595;;10375:24;1252:21595;;;;;;-1:-1:-1;;1252:21595:107;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;1252:21595:107;;;;;;;;:::o;:::-;;;;;;;;;;:::o;5704:193::-;-1:-1:-1;;;;;1252:21595:107;-1:-1:-1;1252:21595:107;;;5831:15;1252:21595;;;;;5831:59;;5704:193;;5831:59;:::i;2517:241::-;1252:21595;;2589:22;1252:21595;;;;2589:27;;;:72;;;;2517:241;2585:128;;2722:29;2517:241;:::o;2585:128::-;1252:21595;;2684:18;1252:21595;;;;2677:25;:::o;2589:72::-;837:15:73;;;819:34;837:15;819:34;:::i;:::-;1252:21595:107;2620:41;2589:72;;1252:21595;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;14151:1;1252:21595;;;;;;;:::o;:::-;;;;;;;;;;:::o;2240:229::-;2308:22;1252:21595;;;;;;;;2308:27;;:72;;;;;2240:229;2304:124;;;1252:21595;;;2240:229;:::o;2304:124::-;1252:21595;;2403:14;1252:21595;;;2396:21;:::o;2308:72::-;837:15:73;;;819:34;837:15;819:34;:::i;:::-;1252:21595:107;2339:41;2308:72;;;7174:191;-1:-1:-1;;;;;1252:21595:107;-1:-1:-1;1252:21595:107;;;6047:15;1252:21595;;;;;6047:33;;;:::i;:::-;5628:21;;:::i;:::-;5272:22;;:::i;:::-;1252:21595;1884:1:95;1252:21595:107;;;;;;;1884:1:95;1252:21595:107;;;;;;;9478:25:68;;;:::i;1252:21595:107:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1252:21595:107;;;;:::o;7996:283::-;8092:16;1252:21595;8091:17;;1252:21595;;;;8951:35;;1252:21595;8091:17;8087:56;;8174:10;1252:21595;;;-1:-1:-1;;;;;1252:21595:107;;;;;8201:20;;1252:21595;;;;-1:-1:-1;;;8224:44:107;;8262:4;8224:44;;;1252:21595;;8224:44;;1252:21595;;;;;;8224:44;;;;;;;8174:10;8224:44;;;8201:71;7996:283;:::o;8224:44::-;;;;;;;;;;;;;;:::i;8201:71::-;;8174:10;7996:283;:::o;1252:21595::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;2806:693::-;2911:18;1252:21595;;;;;;;;;;;;;2899:30;;;;;;1252:21595;;2949:22;1252:21595;;;;;2949:27;;;;:65;;;;;2895:598;2945:129;;;;3094:87;1252:21595;3094:87;1252:21595;3125:34;3124:57;1252:21595;3094:27;1252:21595;3125:34;;:::i;:::-;1252:21595;;;;3124:57;;:::i;2945:129::-;1252:21595;;-1:-1:-1;;;3041:18:107;;;;;2949:65;2980:34;;-1:-1:-1;2949:65:107;;;;2895:598;1252:21595;;3202:22;1252:21595;;;;;;;3202:27;;;;:65;;;;;2895:598;-1:-1:-1;;3198:295:107;;;1252:21595;;3290:75;1252:21595;;3290:75;1252:21595;3317:30;3316:49;1252:21595;3290:23;1252:21595;3317:30;;:::i;:::-;1252:21595;;;3316:49;;:::i;3198:295::-;3403:79;1252:21595;;3425:57;1252:21595;;3426:34;3403:79;1252:21595;3403:19;1252:21595;3426:34;;:::i;:::-;1252:21595;;;;3425:57;;:::i;3202:65::-;3233:34;;-1:-1:-1;3202:65:107;;;;3361:103:30;;;;:::i;:::-;1252:21595:107;;-1:-1:-1;;;;;1252:21595:107;;;11887:23;;11883:79;;12016:11;;12012:70;;1252:21595;12108:10;;;;;;-1:-1:-1;1252:21595:107;;12253:49;;1252:21595;;;;12230:6;;1252:21595;;12187:18;;1252:21595;;-1:-1:-1;;;;;1252:21595:107;;;12187:18;12230:6;:::i;:::-;12253:49;1252:21595;;12264:10;;;;12253:49;;;:::i;:::-;;;;3426:1:30;;;:::i;12120:3:107:-;12156:9;12139:27;1252:21595;12156:9;12149:17;12156:9;;;;;:::i;:::-;1252:21595;12149:17;:::i;12139:27::-;12120:3;1252:21595;12097:9;;12012:70;1252:21595;;-1:-1:-1;;;12050:21:107;;;;;1252:21595;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;1252:21595:107;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;3547:665::-;3647:27;1252:21595;3639:35;;;3635:87;;3744:23;1252:21595;3736:31;;;;;;1252:21595;3791:83;1252:21595;3790:96;1252:21595;3816:58;3817:35;3791:22;1252:21595;;;3817:35;;:::i;:::-;1252:21595;;;;;3816:58;;:::i;3732:474::-;1252:21595;;3907:19;1252:21595;3907:24;;:55;;;;3732:474;3903:303;;;1252:21595;3985:84;1252:21595;;4007:50;4008:31;3986:71;1252:21595;3986:18;1252:21595;4008:31;;:::i;:::-;1252:21595;;;4007:50;;:::i;:::-;1252:21595;;;;3986:71;:::i;3903:303::-;4108:75;1252:21595;;4107:88;1252:21595;4133:50;4134:27;4108:22;1252:21595;;;4134:27;;:::i;:::-;1252:21595;;;;;4133:50;;:::i;:::-;1252:21595;;;;4108:75;:::i;3907:55::-;3935:27;;;;3907:55;;3635:87;1252:21595;;-1:-1:-1;;;3697:14:107;;;;;1918:274;1252:21595;;2003:22;1252:21595;;;;2003:27;;:72;;;;;1918:274;1999:138;;;;2153:32;1252:21595;1918:274;:::o;1999:138::-;2098:28;1252:21595;2091:35;:::o;2003:72::-;837:15:73;;;819:34;837:15;819:34;:::i;:::-;1252:21595:107;2034:41;2003:72;;;;8340:285;8441:10;1252:21595;-1:-1:-1;;;;;1252:21595:107;;;;;;;;;;;8432:19;8428:75;;8519:16;1252:21595;;8519:99;;;8441:10;8340:285;:::o;8519:99::-;1616:3:108;8569:12:107;1252:21595;9478:25:68;;;;:::i;:::-;9552;;:29;;1252:21595:107;;;;;;;8340:285;:::o;8428:75::-;1252:21595;;-1:-1:-1;;;8474:18:107;;;;;7413:227;;7553:34;7413:227;1252:21595;-1:-1:-1;1252:21595:107;7553:18;1252:21595;;;-1:-1:-1;1252:21595:107;;;;;;;;;;;;;;;;;7553:34;1252:21595;;-1:-1:-1;1252:21595:107;7589:11;1252:21595;;;-1:-1:-1;1252:21595:107;;7609:16;1252:21595;;;-1:-1:-1;1252:21595:107;;;1884:1:95;1252:21595:107;;;;;;;1884:1:95;1252:21595:107;;;;;;;9478:25:68;;;:::i;3470:384:30:-;-1:-1:-1;;;;;;;;;;;1991:1:30;1252:21595:107;;3670:20:30;3666:88;;1991:1;1252:21595:107;;3470:384:30:o;3666:88::-;1252:21595:107;;-1:-1:-1;;;3713:30:30;;;;;3860:283;1949:1;-1:-1:-1;;;;;;;;;;;1252:21595:107;3860:283:30:o;21419:960:107:-;21598:10;1252:21595;;;;6047:15;1252:21595;;;;;;21419:960;;;819:34:73;837:15;819:34;:::i;:::-;21598:10:107;1252:21595;;;;6047:15;1252:21595;;;;;6047:33;;;:::i;:::-;1252:21595;;;;;;;;;21582:93;22298:74;21582:93;;;22123:30;21582:93;;:::i;:::-;837:15:73;;21685:67:107;819:34:73;837:15;819:34;:::i;:::-;21722:29:107;5272:22;;;:::i;21685:67::-;837:15:73;;21762:68:107;819:34:73;837:15;819:34;:::i;:::-;21798:31:107;5628:21;;;:::i;21762:68::-;837:15:73;;22232:34:107;837:15:73;22232:25:107;21857:18;4331:25;819:34:73;837:15;819:34;:::i;4331:25:107:-;21857:18;:::i;:::-;22189:33;21908:18;;1252:21595;;14123:11;1252:21595;;;;;;;21908:18;1252:21595;21965:23;;1252:21595;;21965:16;1252:21595;;;;;;;21965:23;1252:21595;390:70:95;;;;;:::i;:::-;22123:30:107;;;;;;:::i;:::-;22102:18;;1252:21595;;14123:11;1252:21595;;;;;;;22102:18;1252:21595;22189:33;:::i;:::-;22163:23;;1252:21595;;21965:16;1252:21595;;;;;;;22163:23;1252:21595;;;22232:18;1252:21595;;;;;;;22232:25;1252:21595;;;;;;;;;;;;;;;;22232:34;:50;1252:21595;;;22232:50;:::i;:::-;1252:21595;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1252:21595:107;;;;21598:10;;1252:21595;;22298:74;21419:960::o;1252:21595::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::o;7558:604:94:-;;1252:21595:107;;7686:17:94;7682:83;;1252:21595:107;7789:27:94;1252:21595:107;7789:27:94;1252:21595:107;;7789:27:94;;;;;;:::i;:::-;7860:14;;;:::i;:::-;1252:21595:107;;;;;;;;;;;;;;;;7888:22:94;;;7884:77;;7975:21;-1:-1:-1;7975:84:94;;;;7558:604;7971:139;;;;8127:28;;;;:::i;7971:139::-;7789:27;8082:17;;;1252:21595:107;8075:24:94;:::o;7975:84::-;1252:21595:107;;;8009:16:94;5098:13:107;1252:21595;8009:16:94;:::i;:::-;1252:21595:107;;;8001:24:94;:57;;;;;7975:84;;;;;;;8001:57;8029:29;8038:8;;;8029:18;8038:8;8029:23;8038:8;;:::i;:::-;8029:18;:::i;:::-;1252:21595:107;;;;;8029:29:94;;8001:57;;;;7884:77;7933:17;;;7789:27;7933:17;;;1252:21595:107;7926:24:94;:::o;7682:83::-;7726:28;;;;:::i;7558:604::-;;1252:21595:107;;7686:17:94;7682:83;;1252:21595:107;7789:27:94;1252:21595:107;7789:27:94;1252:21595:107;;7789:27:94;;;;;;:::i;:::-;7860:14;;;:::i;:::-;1252:21595:107;;;;;;;;;;;;;;;;7888:22:94;;;7884:77;;7975:21;-1:-1:-1;7975:84:94;;;;7558:604;7971:139;;;;8127:28;;;;:::i;7975:84::-;1252:21595:107;;;8009:16:94;5456:12:107;1252:21595;8009:16:94;:::i;:::-;1252:21595:107;;;8001:24:94;:57;;;;;7975:84;;;;;;;8001:57;8029:29;8038:8;;;8029:18;8038:8;8029:23;8038:8;;:::i;:::-;8029:18;:::i;:29::-;;8001:57;;;;7682:83;7726:28;;;;:::i;7558:604::-;;1252:21595:107;;7686:17:94;7682:83;;1252:21595:107;7789:27:94;1252:21595:107;7789:27:94;1252:21595:107;;7789:27:94;;;;;;:::i;:::-;7860:14;;;;;:::i;:::-;1252:21595:107;;;;;;;;;;;;;;;;7888:22:94;;;7884:77;;7975:21;-1:-1:-1;7975:84:94;;;;7558:604;7971:139;;;;8127:28;;;;:::i;7971:139::-;8082:17;;7789:27;8082:17;1252:21595:107;8075:24:94;:::o;7975:84::-;1252:21595:107;;;8009:16:94;1252:21595:107;;8009:16:94;:::i;:::-;1252:21595:107;;;8001:24:94;:57;;;;;7975:84;;;;;;;8001:57;8029:29;8038:8;;;8029:18;8038:8;8029:23;8038:8;;:::i;:::-;8029:18;;:::i;:29::-;;8001:57;;;;7884:77;7933:17;;;;;7789:27;7933:17;1252:21595:107;7926:24:94;:::o;7682:83::-;7726:28;;;;:::i;4148:103:23:-;966:10:28;-1:-1:-1;1252:21595:107;;;;;;;;;466:39:108;;1252:21595:107;;3901:31:23;1252:21595:107;;4468:23:23;4464:108;;4148:103;:::o;:::-;966:10:28;-1:-1:-1;1252:21595:107;;;;;;;;;757:38:108;;1252:21595:107;;3901:31:23;1252:21595:107;4148:103:23;966:10:28;-1:-1:-1;1252:21595:107;;;;;;;;;1041:36:108;;1252:21595:107;;3901:31:23;1252:21595:107;4148:103:23;966:10:28;-1:-1:-1;1252:21595:107;;;;;;;;;1187:40:108;;1252:21595:107;;3901:31:23;1252:21595:107;4148:103:23;966:10:28;-1:-1:-1;1252:21595:107;;;;;;;;;612:37:108;;1252:21595:107;;3901:31:23;1252:21595:107;4148:103:23;-1:-1:-1;1252:21595:107;;;-1:-1:-1;;;;;;;;;;;1252:21595:107;;;;;;;;966:10:28;1252:21595:107;;;;;;;;;3901:31:23;1252:21595:107;7270:387:23;-1:-1:-1;1252:21595:107;;;-1:-1:-1;;;;;;;;;;;1252:21595:107;;;;;;;;-1:-1:-1;;;;;1252:21595:107;;;;;;;;;;;;;;;-1:-1:-1;1252:21595:107;;;;;;;;;;;-1:-1:-1;;;;;1252:21595:107;;;;;;;;;;-1:-1:-1;;1252:21595:107;7509:4:23;1252:21595:107;;;966:10:28;;-1:-1:-1;;;;;1252:21595:107;;7532:40:23;-1:-1:-1;;7532:40:23;7509:4;7586:11;:::o;7432:219::-;7628:12;;;-1:-1:-1;7628:12:23;:::o;7892:388::-;-1:-1:-1;1252:21595:107;;;-1:-1:-1;;;;;;;;;;;1252:21595:107;;;;;;;;-1:-1:-1;;;;;1252:21595:107;;;;;;;;;;;;;;;;-1:-1:-1;1252:21595:107;;;;;;;;;;;-1:-1:-1;;;;;1252:21595:107;;;;;;;;;;-1:-1:-1;;1252:21595:107;;;966:10:28;;-1:-1:-1;;;;;1252:21595:107;;8155:40:23;-1:-1:-1;;8155:40:23;1252:21595:107;8209:11:23;:::o;1670:188:55:-;1252:21595:107;;-1:-1:-1;;;1797:53:55;;;;-1:-1:-1;;;;;1252:21595:107;;;1797:53:55;;;1252:21595:107;;;;;;;;;;;;;;;;;1797:53:55;;;1252:21595:107;;;;;;;-1:-1:-1;;;;;1252:21595:107;;;;;1797:53:55;1252:21595:107;;;1797:53:55;:::i;1252:21595:107:-;7178:12:94;1252:21595:107;;;;;;7178:12:94;-1:-1:-1;1252:21595:107;-1:-1:-1;;;;;;;;;;;1252:21595:107;;-1:-1:-1;1252:21595:107;:::o;:::-;7178:12:94;1252:21595:107;;;;;;7178:12:94;-1:-1:-1;1252:21595:107;-1:-1:-1;;;;;;;;;;;1252:21595:107;;-1:-1:-1;1252:21595:107;:::o;:::-;;;;;;;;-1:-1:-1;1252:21595:107;;-1:-1:-1;1252:21595:107;;;-1:-1:-1;1252:21595:107;:::o;:::-;6360:12:94;1252:21595:107;-1:-1:-1;;;1252:21595:107;;;;;;;;;6360:12:94;1252:21595:107;;;;;;6360:12:94;-1:-1:-1;1252:21595:107;-1:-1:-1;;;;;;;;;;;1252:21595:107;;:::o;:::-;6360:12:94;1252:21595:107;-1:-1:-1;;;1252:21595:107;;;;;;;;;6360:12:94;1252:21595:107;;;;;;6360:12:94;-1:-1:-1;1252:21595:107;-1:-1:-1;;;;;;;;;;;1252:21595:107;;:::o;:::-;;;;;-1:-1:-1;;;1252:21595:107;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6246:584:94;;;;6360:12;1252:21595:107;;;6360:24:94;;6356:75;;6246:584;6474:30;;;:::i;:::-;1252:21595:107;;;;;;6578:12:94;;;:::i;:::-;6604:24;;;;6246:584;-1:-1:-1;6600:188:94;;;-1:-1:-1;;;1252:21595:107;;;;;;;;;-1:-1:-1;1252:21595:107;;;-1:-1:-1;1252:21595:107;;;;;;6798:25:94;1252:21595:107;6246:584:94:o;6600:188::-;8310:38:71;;-1:-1:-1;;;;;1252:21595:107;;-1:-1:-1;8310:38:71;:::i;:::-;6753:24:94;;;;;:::i;:::-;6798:25;6246:584;:::o;6604:24::-;1252:21595:107;;;;;;6614:14:94;;-1:-1:-1;6604:24:94;;;6356:75;-1:-1:-1;;;1252:21595:107;;;;;;;;;;;;;;;;-1:-1:-1;1252:21595:107;;;;-1:-1:-1;;;;;;;;;;;1252:21595:107;;6356:75:94;;;6246:584;;;;6360:12;1252:21595:107;;;6360:24:94;;6356:75;;6246:584;6474:30;;;:::i;:::-;1252:21595:107;;;;;;6578:12:94;;;:::i;:::-;6604:24;;;;6246:584;-1:-1:-1;6600:188:94;;;-1:-1:-1;;;1252:21595:107;;;;;;;;;-1:-1:-1;1252:21595:107;;;-1:-1:-1;1252:21595:107;;;;;;6798:25:94;1252:21595:107;6246:584:94:o;6600:188::-;8310:38:71;;-1:-1:-1;;;;;1252:21595:107;;-1:-1:-1;8310:38:71;:::i;:::-;6753:24:94;;;;;:::i;6604:::-;1252:21595:107;;;;;;6614:14:94;;-1:-1:-1;6604:24:94;;;6356:75;-1:-1:-1;;;1252:21595:107;;;;;;;;;;;;;;;;-1:-1:-1;1252:21595:107;;;;-1:-1:-1;;;;;;;;;;;1252:21595:107;;6356:75:94;;;6246:584;;;;;6360:12;;;1252:21595:107;;;6360:24:94;;6356:75;;6246:584;6474:30;;;;;:::i;:::-;1252:21595:107;;;;;;6578:12:94;;;;:::i;:::-;6604:24;;;;6246:584;-1:-1:-1;6600:188:94;;;-1:-1:-1;;;;;1252:21595:107;;;;;;;6644:21:94;;;:29;:21;;:::i;6600:188::-;6753:24;;1252:21595:107;;8310:38:71;;-1:-1:-1;;;;;1252:21595:107;;;;;8310:38:71;:::i;:::-;6753:24:94;;;:::i;6604:::-;1252:21595:107;;;;;;6614:14:94;;-1:-1:-1;6604:24:94;;;6356:75;-1:-1:-1;;;1252:21595:107;;;;;;6360:12:94;1252:21595:107;;;;;;;:::i;:::-;;;;;;;;;;;;;;6356:75:94;;;1271:160:55;1252:21595:107;;-1:-1:-1;;;1380:43:55;;;;-1:-1:-1;;;;;1252:21595:107;;;1380:43:55;;;1252:21595:107;;;;;;;;;1380:43:55;;;1252:21595:107;;;;-1:-1:-1;;;;;1252:21595:107;;;;;;;;1380:43:55;1252:21595:107;;;1380:43:55;:::i;1252:21595:107:-;;;;;;;:::o;4996:4226:68:-;;1252:21595:107;;;;-1:-1:-1;;4996:4226:68;;5584:131;;;;;;;;;;;;5796:10;;5792:368;;1616:3:108;6270:20:68;;;;;6266:143;;1252:21595:107;6695:300:68;;;;;;;;1252:21595:107;;6695:300:68;;7259:375;;7700:21;1252:21595:107;4996:4226:68;:::o;6266:143::-;1829:135:59;;;940:4;1829:135;;;;;5792:368:68;1252:21595:107;;1616:3:108;1252:21595:107;;;6119:26:68;:::o;4996:4226::-;;1252:21595:107;;;;-1:-1:-1;;1252:21595:107;4996:4226:68;5584:131;;;;;;;;;;;;5796:10;;5792:368;;6270:20;;;;6266:143;;6695:300;;;;940:4:59;-1:-1:-1;940:4:59;7214:31:68;;7259:375;;;8094:1;1252:21595:107;;8075:1:68;1252:21595:107;8074:21:68;1252:21595:107;;;940:4:59;;1252:21595:107;;;;940:4:59;;1252:21595:107;;;;940:4:59;;1252:21595:107;;;;940:4:59;;1252:21595:107;;;;940:4:59;;1252:21595:107;;;;940:4:59;;1252:21595:107;7259:375:68;;;;-1:-1:-1;7259:375:68;;;6695:300;;;;;;1252:21595:107;6695:300:68;;7259:375;7700:21;1252:21595:107;4996:4226:68;:::o;6266:143::-;6330:16;;3066:5;1252:21595:107;940:4:59;3060:42:68;6322:71;:::i;5792:368::-;6126:19;;;;;;;:::i;22385:460:107:-;;4331:25;819:34:73;837:15;819:34;:::i;4331:25:107:-;22478:23;;;22474:75;;1252:21595;22563:39;:27;;1252:21595;;22563:20;1252:21595;;;;;;;22563:27;22591:10;1252:21595;;;;;;;;;;;;;;22563:39;1252:21595;;22559:93;;22671:32;22591:10;22671:32;;:::i;:::-;22718:11;;;22714:68;;22792:39;22591:10;22792:27;22591:10;22792:27;1252:21595;;22563:20;1252:21595;;;;;;;22792:39;1252:21595;;-1:-1:-1;;1252:21595:107;22834:4;1252:21595;;;22385:460::o;22714:68::-;1252:21595;;-1:-1:-1;;;22752:19:107;;;;;22559:93;1252:21595;;-1:-1:-1;;;22625:16:107;;;;;14296:213:69;1252:21595:107;14374:24:69;;;;14370:103;;1252:21595:107;14296:213:69;:::o;14370:103::-;1252:21595:107;;;;14421:41:69;;;;;;14452:2;14421:41;;;1252:21595:107;;;;;14421:41:69;10580:184:94;5628:12:107;1252:21595;10446:8:71;;;:63;-1:-1:-1;10446:63:71;-1:-1:-1;;;;;1252:21595:107;;10726:7:94;1252:21595:107;;10736:12:94;1252:21595:107;;;;;;10736:12:94;-1:-1:-1;1252:21595:107;-1:-1:-1;;;;;;;;;;;1252:21595:107;;10580:184:94;:::o;10446:63:71:-;1252:21595:107;;;;;;;;5628:12;-1:-1:-1;14439:109:71;;;1252:21595:107;;;10446:63:71;;10580:184:94;5272:13:107;1252:21595;10446:8:71;;;:63;-1:-1:-1;10446:63:71;-1:-1:-1;;;;;1252:21595:107;;10726:7:94;1252:21595:107;;10736:12:94;1252:21595:107;;;;;;10736:12:94;-1:-1:-1;1252:21595:107;-1:-1:-1;;;;;;;;;;;1252:21595:107;;10580:184:94;:::o;10446:63:71:-;1252:21595:107;;;;;;;;5272:13;-1:-1:-1;14439:109:71;;;1252:21595:107;;;10446:63:71;;10580:184:94;1252:21595:107;;10446:8:71;;;:63;-1:-1:-1;10446:63:71;-1:-1:-1;;;;;1252:21595:107;;10726:7:94;1252:21595:107;;10736:12:94;:17;:12;;:17;:::i;:::-;1252:21595:107;;;;;;10580:184:94;:::o;10726:31::-;;;-1:-1:-1;10580:184:94;:::o;10446:63:71:-;1252:21595:107;;;;;;;;;;14439:109:71;-1:-1:-1;14439:109:71;;-1:-1:-1;14439:109:71;;;1252:21595:107;;;10446:63:71;;1662:280:95;;;1884:1;1252:21595:107;;;;;;;1884:1:95;1252:21595:107;;;;;;;9478:25:68;;;:::i;6999:207:94:-;5098:13:107;1252:21595;9737:15:71;-1:-1:-1;9762:18:71;9795:7;9801:1;9795:7;;9791:234;;6999:207:94;10049:53:71;;;;:::i;:::-;10120:8;;;:63;-1:-1:-1;10120:63:71;-1:-1:-1;;;;;1252:21595:107;;7168:7:94;1252:21595:107;;7178:17:94;1252:21595:107;7178:17:94;;:::i;10120:63:71:-;10135:41;10168:7;10135:48;10168:7;;:::i;:::-;5098:13:107;14439:109:71;;-1:-1:-1;;;;;;;;;;;14439:109:71;14289:265;;10135:41;1252:21595:107;;;;;10135:48:71;10120:63;;9791:234;9838:14;;;;;:::i;:::-;1252:21595:107;;;;;;;10049:53:71;14439:109;5098:13:107;-1:-1:-1;14439:109:71;1252:21595:107;14439:109:71;;-1:-1:-1;;;;;;;;;;;14439:109:71;1252:21595:107;;;;;9870:48:71;9866:149;1252:21595:107;;;9938:10:71;9866:149;9791:234;;9866:149;9993:7;;;;;;:::i;:::-;9866:149;9791:234;;6999:207:94;5456:12:107;1252:21595;9737:15:71;-1:-1:-1;9762:18:71;9795:7;9801:1;9795:7;;9791:234;;6999:207:94;10049:53:71;;;;:::i;:::-;10120:8;;;:63;-1:-1:-1;10120:63:71;-1:-1:-1;;;;;1252:21595:107;;7168:7:94;1252:21595:107;;7178:17:94;1252:21595:107;7178:17:94;;:::i;10120:63:71:-;10135:41;10168:7;10135:48;10168:7;;:::i;:::-;5456:12:107;14439:109:71;;-1:-1:-1;;;;;;;;;;;14439:109:71;14289:265;;10135:48;10120:63;;9791:234;9838:14;;;;;:::i;:::-;1252:21595:107;;;;;;;10049:53:71;14439:109;5456:12:107;-1:-1:-1;14439:109:71;1252:21595:107;14439:109:71;;-1:-1:-1;;;;;;;;;;;14439:109:71;1252:21595:107;;;;;9870:48:71;9866:149;1252:21595:107;;;9938:10:71;9866:149;9791:234;;9866:149;9993:7;;;;;;:::i;:::-;9866:149;9791:234;;6999:207:94;;1252:21595:107;;9737:15:71;-1:-1:-1;9762:18:71;9795:7;9801:1;9795:7;;9791:234;;6999:207:94;10049:53:71;;;;;:::i;:::-;10120:8;;;:63;-1:-1:-1;10120:63:71;;-1:-1:-1;;;;;1252:21595:107;;7168:7:94;1252:21595:107;;;7178:12:94;;:17;:12;;:17;:::i;10120:63:71:-;10135:41;10168:7;10135:48;10168:7;;:::i;:::-;10135:41;14439:109;;;;;;14289:265;;10135:48;10120:63;;;9791:234;9838:14;;;;;:::i;:::-;1252:21595:107;;;;;;;10049:53:71;14439:109;;-1:-1:-1;14439:109:71;1252:21595:107;14439:109:71;;;-1:-1:-1;14439:109:71;;1252:21595:107;;;;;9870:48:71;9866:149;1252:21595:107;;;9938:10:71;9866:149;9791:234;;9866:149;9993:7;;;;;;:::i;:::-;9866:149;9791:234;;1252:21595:107;;;;;;;:::i;:::-;-1:-1:-1;1252:21595:107;;;;;;;:::o;11486:272:94:-;1252:21595:107;;:::i;:::-;;;;:::i;:::-;;5098:13;1252:21595;;;;;;5098:13;-1:-1:-1;1252:21595:107;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1252:21595:107;;;;;;;;;;;;;;;;;11718:12:94;1252:21595:107;;;;;;11718:12:94;-1:-1:-1;1252:21595:107;-1:-1:-1;;;;;;;;;;;1252:21595:107;;;;;;;;:::i;:::-;;;;11672:79:94;;1252:21595:107;11486:272:94;:::o;:::-;1252:21595:107;;:::i;:::-;;;;:::i;:::-;;5456:12;1252:21595;;;;;;5456:12;-1:-1:-1;1252:21595:107;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1252:21595:107;;;;;;;;;;;;;;;;;11718:12:94;1252:21595:107;;;;;;11718:12:94;-1:-1:-1;1252:21595:107;-1:-1:-1;;;;;;;;;;;1252:21595:107;;;;;;;;:::i;11486:272:94:-;;1252:21595:107;11718:12:94;11452:22:71;11718:31:94;11486:272;1252:21595:107;;:::i;:::-;;;;:::i;:::-;;11452:22:71;;:::i;:::-;1252:21595:107;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;11718:12:94;:31;:::i;:::-;1252:21595:107;;;;;;;;;:::i;:::-;;;;;;;11672:79:94;;1252:21595:107;11486:272:94;:::o;7738:720:55:-;;-1:-1:-1;7875:421:55;7738:720;7875:421;;;;;;;;;;;;-1:-1:-1;7875:421:55;;8310:15;;-1:-1:-1;;;;;;1252:21595:107;;8328:26:55;:31;8310:68;8306:146;;7738:720;:::o;8306:146::-;1252:21595:107;;-1:-1:-1;;;8401:40:55;;-1:-1:-1;;;;;1252:21595:107;;;8401:40:55;;;1252:21595:107;;;8401:40:55;8310:68;8377:1;8362:16;;8310:68;;1258:280:95;;;1252:21595:107;;;;;;;;;;;;;;;;9478:25:68;;;;;:::i;:::-;9552;;;;;;:29;;1252:21595:107;;;;;;;1258:280:95;:::o;10695:389:71:-;5628:12:107;1252:21595;10871:8:71;;;10895:20;10833:17;10895:20;10833:17;10895:20;10833:17;10895:20;:::o;10867:211::-;1252:21595:107;;;;;;;;5628:12;10833:17:71;14439:109;;;1252:21595:107;11014:1:71;;1252:21595:107;;;;;;;11030:37:71:o;10695:389::-;5272:13:107;1252:21595;10871:8:71;;;10895:20;10833:17;10895:20;10833:17;10895:20;10833:17;10895:20;:::o;10867:211::-;1252:21595:107;;;;;;;;5272:13;10833:17:71;14439:109;;;1252:21595:107;11014:1:71;;1252:21595:107;;;;;;;11030:37:71:o;10695:389::-;1252:21595:107;;10871:8:71;;;10895:20;;10833:17;10895:20;10833:17;10895:20;10833:17;10895:20;:::o;10867:211::-;1252:21595:107;;;;;;;;;;10833:17:71;14439:109;;10833:17;14439:109;;;1252:21595:107;11014:1:71;1252:21595:107;;;;;;;11030:37:71;:::o;1776:194:59:-;1829:135;;;;;;;;1252:21595:107;5628:12;1252:21595;;-1:-1:-1;;;1252:21595:107;;;;;;;;;5628:12;1252:21595;;;;;;5628:12;-1:-1:-1;1252:21595:107;;;;;;;;;;-1:-1:-1;;1252:21595:107;;;;;;;-1:-1:-1;;;;;;;;;;;1252:21595:107;;;;:::o;:::-;5272:13;1252:21595;;-1:-1:-1;;;1252:21595:107;;;;;;;;;5272:13;1252:21595;;;;;;5272:13;-1:-1:-1;1252:21595:107;;;;;;;;;;-1:-1:-1;;1252:21595:107;;;;;;;-1:-1:-1;;;;;;;;;;;1252:21595:107;;;;:::o;:::-;;;-1:-1:-1;;;1252:21595:107;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;1252:21595:107;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;11657:922:71;5628:12:107;1252:21595;11657:922:71;;;11864:7;;;;11936;11916:28;11936:7;;:::i;11916:28::-;1252:21595:107;;;;;;;;;;;;12103:13:71;;;12099:89;;12251:14;;;;;12285:19;;;1252:21595:107;;;;;;;;;;;;;;;;;12285:19:71;1252:21595:107;;12423:25:71;;:::o;12247:163::-;1252:21595:107;;12343:52:71;1252:21595:107;12353:41:71;1252:21595:107;;:::i;:::-;;;;;;;;12353:41:71;-1:-1:-1;;;;;1252:21595:107;;12353:41:71;;;1252:21595:107;12343:52:71;:::i;:::-;12247:163;;12099:89;1252:21595:107;;-1:-1:-1;;;12143:30:71;;;;;11860:713;1252:21595:107;12479:52:71;1252:21595:107;12489:41:71;1252:21595:107;;:::i;12489:41:71:-;-1:-1:-1;;;;;1252:21595:107;;12489:41:71;;;1252:21595:107;12343:52:71;:::i;12479:::-;11870:1;12545:17;;:::o;11657:922::-;5272:13:107;1252:21595;11657:922:71;;;11864:7;;;;11936;11916:28;11936:7;;:::i;11916:28::-;1252:21595:107;;;;;;;;;;;;12103:13:71;;;12099:89;;12251:14;;;;;12285:19;;;1252:21595:107;;;;;;;;;;;;;;;;;12247:163:71;1252:21595:107;;12343:52:71;1252:21595:107;12353:41:71;1252:21595:107;;:::i;12353:41:71:-;-1:-1:-1;;;;;1252:21595:107;;12353:41:71;;;1252:21595:107;12343:52:71;:::i;11860:713::-;1252:21595:107;12479:52:71;1252:21595:107;12489:41:71;1252:21595:107;;:::i;12489:41:71:-;-1:-1:-1;;;;;1252:21595:107;;12489:41:71;;;1252:21595:107;12343:52:71;:::i;11657:922::-;1252:21595:107;;11657:922:71;;;11864:7;;;;11936;11916:28;11936:7;;:::i;:::-;11916:28;14439:109;;;;;;14289:265;;11916:28;1252:21595:107;;;;;;;;;;;;12103:13:71;;;12099:89;;12251:14;;;;;12285:19;;;;1252:21595:107;;;;;;;;;;;;;;;;;12247:163:71;1252:21595:107;;;12343:52:71;1252:21595:107;12353:41:71;1252:21595:107;;:::i;:::-;;;;;;;;12353:41:71;-1:-1:-1;;;;;1252:21595:107;;12353:41:71;;;1252:21595:107;12343:52:71;:::i;11860:713::-;1252:21595:107;;12479:52:71;1252:21595:107;12489:41:71;1252:21595:107;;:::i;12489:41:71:-;-1:-1:-1;;;;;1252:21595:107;;12489:41:71;;;1252:21595:107;12343:52:71;:::i;18080:5181:68:-;18246:1;18241:6;;;18237:53;;18246:1;19217:14;-1:-1:-1;;;19278:16:68;;;19274:92;;18080:5181;22827:18;22717;22607;22498;22387;22278;23216:28;19383:15;19898:6;19383:15;-1:-1:-1;;;23237:6:68;19383:15;;;19379:90;;18080:5181;19493:7;19486:15;;;19482:90;;18080:5181;19596:7;19589:15;;;19585:89;;18080:5181;19698:6;19691:14;;;19687:87;;18080:5181;19798:6;19791:14;;;19787:87;;18080:5181;19891:14;;19887:61;;18080:5181;20374:1;1252:21595:107;18246:1:68;1252:21595:107;22284:6:68;;;;:::i;:::-;1252:21595:107;;;;;22278:18:68;22393:6;;;;:::i;22387:18::-;22504:6;;;;:::i;22498:18::-;22613:6;;;;:::i;22607:18::-;22723:6;;;;:::i;22717:18::-;22833:6;;;;:::i;22827:18::-;23237:6;;;:::i;:::-;23232:11;;;1252:21595:107;23216:28:68;940:4:59;;18080:5181:68;:::o;19887:61::-;18246:1;1252:21595:107;19887:61:68;;19787:87;1252:21595:107;;;;;19787:87:68;;;19687;1252:21595:107;;;;;19687:87:68;;;19585:89;1252:21595:107;;;;;19585:89:68;;;19482:90;1252:21595:107;;;;;19482:90:68;;;19379;1252:21595:107;;;;;19379:90:68;;;19274:92;-1:-1:-1;;;;1252:21595:107;-1:-1:-1;1252:21595:107;;;;19274:92:68;;12929:433:71;;13112:10;;;;;;13344:11;;12929:433;:::o;13105:230::-;3721:5:68;;;;;1252:21595:107;;3731:5:68;;;1252:21595:107;;;;;;;;;5098:13;-1:-1:-1;14439:109:71;1252:21595:107;14439:109:71;;-1:-1:-1;;;;;;;;;;;14439:109:71;1252:21595:107;;;;;-1:-1:-1;13189:136:71;1252:21595:107;;;13248:10:71;;13189:136;;13105:230;;;13189:136;1252:21595:107;;;;;;;;;;;13189:136:71;;;12929:433;;13112:10;;;;;;13344:11;;12929:433;:::o;13105:230::-;3721:5:68;;;;;1252:21595:107;;3731:5:68;;;1252:21595:107;;;;;;;;;5456:12;-1:-1:-1;14439:109:71;1252:21595:107;14439:109:71;;-1:-1:-1;;;;;;;;;;;14439:109:71;1252:21595:107;;;;;-1:-1:-1;13189:136:71;1252:21595:107;;;13248:10:71;;13189:136;;13105:230;;;13189:136;1252:21595:107;;;;;;;;;;;13189:136:71;;;12929:433;;;13112:10;;;;;;13344:11;;;12929:433;:::o;13105:230::-;3721:5:68;;;;;;1252:21595:107;;3731:5:68;;;1252:21595:107;;;;;;;;;14439:109:71;-1:-1:-1;14439:109:71;1252:21595:107;14439:109:71;;;-1:-1:-1;14439:109:71;;1252:21595:107;;;;;-1:-1:-1;13189:136:71;1252:21595:107;;;13248:10:71;;13189:136;;13105:230;;;;13189:136;1252:21595:107;;;;;;;;;;;13189:136:71;;","linkReferences":{},"immutableReferences":{"70056":[{"start":5071,"length":32},{"start":6256,"length":32}],"70059":[{"start":7529,"length":32},{"start":8838,"length":32}]}},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","DELEGATOR_FACTORY()":"6da3e06d","DEPOSITOR_WHITELIST_ROLE()":"1b66c9e1","DEPOSIT_LIMIT_SET_ROLE()":"a21a1df9","DEPOSIT_WHITELIST_SET_ROLE()":"db388715","EPOCH_DURATION_SET_ROLE()":"61819dd8","FLASH_FEE_BASE()":"ecc98f05","FLASH_FEE_RATE_SET_ROLE()":"bc46f722","FLASH_FEE_RECEIVER_SET_ROLE()":"31d9736c","FLASH_LOAN_ENABLED_SET_ROLE()":"a66b3a73","IS_DEPOSIT_LIMIT_SET_ROLE()":"1415519b","RETURN_VALUE()":"653b04cd","SLASHER_FACTORY()":"87df0788","activeBalanceOf(address)":"59f769a9","activeBalanceOfAt(address,uint48,bytes)":"efb559d6","activeShares()":"bfefcd7b","activeSharesAt(uint48,bytes)":"50f22068","activeSharesOf(address)":"9d66201b","activeSharesOfAt(address,uint48,bytes)":"2d73c69c","activeStake()":"bd49c35f","activeStakeAt(uint48,bytes)":"810da75d","burner()":"27810b6e","claim(address,uint256)":"aad3ec96","claimBatch(address,uint256[])":"7c04c80a","collateral()":"d8dfeb45","currentEpoch()":"76671808","currentEpochStart()":"61a8c8c4","delegator()":"ce9b7930","deposit(address,uint256)":"47e7ef24","depositLimit()":"ecf70858","depositWhitelist()":"48d3b775","epochAt(uint48)":"7953b33b","epochDuration()":"4ff0876a","epochDurationInit()":"46361671","epochDurationSetEpochsDelay()":"c642b050","epochStart(uint256)":"aa9354a3","flashFee(address,uint256)":"d9d98ce4","flashFeeRate()":"e945da7f","flashFeeReceiver()":"a8b24f9a","flashLoan(address,address,uint256,bytes)":"5cffe9de","flashLoanEnabled()":"65d61c6c","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","isDelegatorInitialized()":"50861adc","isDepositLimit()":"a1b12202","isDepositorWhitelisted(address)":"794b15b7","isInitialized()":"392e53cd","isSlasherInitialized()":"6ec1e3f8","isWithdrawalsClaimed(uint256,address)":"a5d03223","maxFlashLoan(address)":"613255ab","nextEpochStart()":"73790ab3","onSlash(uint256,uint48)":"7278e31c","previousEpochStart()":"281f5752","redeem(address,uint256)":"1e9a6950","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","setDelegator(address)":"83cd9cc3","setDepositLimit(uint256)":"bdc8144b","setDepositWhitelist(bool)":"4105a7dd","setDepositorWhitelistStatus(address,bool)":"a2861466","setEpochDuration(uint48,uint256)":"83f46c2c","setFlashFeeRate(uint256)":"d626811b","setFlashFeeReceiver(address)":"52741a40","setFlashloanEnabled(bool)":"859b9344","setIsDepositLimit(bool)":"5346e34f","setSlasher(address)":"aabc2496","slashableBalanceOf(address)":"c31e8dd7","slasher()":"b1344271","staticDelegateCall(address,bytes)":"9f86fd85","supportsInterface(bytes4)":"01ffc9a7","totalStake()":"8b0e9f3f","withdraw(address,uint256)":"f3fef3a3","withdrawalShares(uint256)":"afba70ad","withdrawalSharesOf(uint256,address)":"a3b54172","withdrawals(uint256)":"5cc07076","withdrawalsOf(uint256,address)":"f5e7ee0f"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatorFactory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"slasherFactory\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadyClaimed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadySet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CheckpointUnorderedInsertion\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DelegatorAlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DepositLimitReached\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientClaim\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientDeposit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientExitWindow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientRedemption\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientWithdrawal\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCaptureEpoch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidClaimer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCollateral\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDelegator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEpoch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEpochDuration\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEpochDurationSetEpochsDelay\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidFlashParams\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidLengthEpochs\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidNewEpochDuration\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOnBehalfOf\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOrigin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRecipient\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidReturnAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSlasher\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTimestamp\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxLoanExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingRoles\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewEpochDurationNotReady\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoDepositWhitelist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoPreviousEpoch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotDelegator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotSlasher\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotWhitelistedDepositor\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SlasherAlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TooLowFlashLoanValue\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TooMuchRedeem\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TooMuchWithdraw\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsupportedToken\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"claimer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Claim\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"claimer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"epochs\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"ClaimBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"depositor\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slashedAmount\",\"type\":\"uint256\"}],\"name\":\"OnSlash\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"SetDelegator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"SetDepositLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"SetDepositWhitelist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"SetDepositorWhitelistStatus\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"epochDuration\",\"type\":\"uint48\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"epochDurationSetEpochsDelay\",\"type\":\"uint256\"}],\"name\":\"SetEpochDuration\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"flashFeeRate\",\"type\":\"uint256\"}],\"name\":\"SetFlashFeeRate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"flashFeeReceiver\",\"type\":\"address\"}],\"name\":\"SetFlashFeeReceiver\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"SetFlashloanEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"SetIsDepositLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"slasher\",\"type\":\"address\"}],\"name\":\"SetSlasher\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"claimer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"burnedShares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"mintedShares\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DELEGATOR_FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEPOSITOR_WHITELIST_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEPOSIT_LIMIT_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEPOSIT_WHITELIST_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"EPOCH_DURATION_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FLASH_FEE_BASE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FLASH_FEE_RATE_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FLASH_FEE_RECEIVER_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FLASH_LOAN_ENABLED_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"IS_DEPOSIT_LIMIT_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RETURN_VALUE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SLASHER_FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"activeBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hints\",\"type\":\"bytes\"}],\"name\":\"activeBalanceOfAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"activeShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"activeSharesAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"activeSharesOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"activeSharesOfAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"activeStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"activeStakeAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"burner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"}],\"name\":\"claim\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"epochs\",\"type\":\"uint256[]\"}],\"name\":\"claimBatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"collateral\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentEpochStart\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"delegator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"depositedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mintedShares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"depositLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"depositWhitelist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"epochAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"epochDuration\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"epochDurationInit\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"epochDurationSetEpochsDelay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"}],\"name\":\"epochStart\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"flashFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"flashFeeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"flashFeeReceiver\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC3156FlashBorrower\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"flashLoan\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"flashLoanEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isDelegatorInitialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isDepositLimit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isDepositorWhitelisted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isInitialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isSlasherInitialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isWithdrawalsClaimed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"maxFlashLoan\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nextEpochStart\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"}],\"name\":\"onSlash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"slashedAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"previousEpochStart\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"claimer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"withdrawnAssets\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mintedShares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator_\",\"type\":\"address\"}],\"name\":\"setDelegator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"setDepositLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"setDepositWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"setDepositorWhitelistStatus\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"epochDuration_\",\"type\":\"uint48\"},{\"internalType\":\"uint256\",\"name\":\"epochDurationSetEpochsDelay_\",\"type\":\"uint256\"}],\"name\":\"setEpochDuration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"flashFeeRate_\",\"type\":\"uint256\"}],\"name\":\"setFlashFeeRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"flashFeeReceiver_\",\"type\":\"address\"}],\"name\":\"setFlashFeeReceiver\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"setFlashloanEnabled\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"setIsDepositLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"slasher_\",\"type\":\"address\"}],\"name\":\"setSlasher\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"slashableBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slasher\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"staticDelegateCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"claimer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"burnedShares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mintedShares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"}],\"name\":\"withdrawalShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"withdrawalSharesOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"}],\"name\":\"withdrawals\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"withdrawalsOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"CheckpointUnorderedInsertion()\":[{\"details\":\"A value was attempted to be inserted on a past checkpoint.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}]},\"events\":{\"Claim(address,address,uint256,uint256)\":{\"params\":{\"amount\":\"amount of the collateral claimed\",\"claimer\":\"account that claimed\",\"epoch\":\"epoch the collateral was claimed for\",\"recipient\":\"account that received the collateral\"}},\"ClaimBatch(address,address,uint256[],uint256)\":{\"params\":{\"amount\":\"amount of the collateral claimed\",\"claimer\":\"account that claimed\",\"epochs\":\"epochs the collateral was claimed for\",\"recipient\":\"account that received the collateral\"}},\"Deposit(address,address,uint256,uint256)\":{\"params\":{\"amount\":\"amount of the collateral deposited\",\"depositor\":\"account that made the deposit\",\"onBehalfOf\":\"account the deposit was made on behalf of\",\"shares\":\"amount of the active shares minted\"}},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"OnSlash(uint256,uint48,uint256)\":{\"params\":{\"amount\":\"amount of the collateral to slash\",\"captureTimestamp\":\"time point when the stake was captured\",\"slashedAmount\":\"real amount of the collateral slashed\"}},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"SetDelegator(address)\":{\"details\":\"Can be set only once.\",\"params\":{\"delegator\":\"vault's delegator to delegate the stake to networks and operators\"}},\"SetDepositLimit(uint256)\":{\"params\":{\"limit\":\"deposit limit (maximum amount of the collateral that can be in the vault simultaneously)\"}},\"SetDepositWhitelist(bool)\":{\"params\":{\"status\":\"if enabled deposit whitelist\"}},\"SetDepositorWhitelistStatus(address,bool)\":{\"params\":{\"account\":\"account for which the whitelist status is set\",\"status\":\"if whitelisted the account\"}},\"SetEpochDuration(uint48,uint256)\":{\"params\":{\"epochDuration\":\"epoch duration\",\"epochDurationSetEpochsDelay\":\"delay for the epoch duration set in epochs\"}},\"SetFlashFeeRate(uint256)\":{\"params\":{\"flashFeeRate\":\"flash fee rate\"}},\"SetFlashFeeReceiver(address)\":{\"params\":{\"flashFeeReceiver\":\"flash fee receiver\"}},\"SetFlashloanEnabled(bool)\":{\"params\":{\"status\":\"if enabled flash loan\"}},\"SetIsDepositLimit(bool)\":{\"params\":{\"status\":\"if enabled deposit limit\"}},\"SetSlasher(address)\":{\"details\":\"Can be set only once.\",\"params\":{\"slasher\":\"vault's slasher to provide a slashing mechanism to networks\"}},\"Withdraw(address,address,uint256,uint256,uint256)\":{\"params\":{\"amount\":\"amount of the collateral withdrawn\",\"burnedShares\":\"amount of the active shares burned\",\"claimer\":\"account that needs to claim the withdrawal\",\"mintedShares\":\"amount of the epoch withdrawal shares minted\",\"withdrawer\":\"account that made the withdrawal\"}}},\"kind\":\"dev\",\"methods\":{\"activeBalanceOf(address)\":{\"params\":{\"account\":\"account to get the active balance for\"},\"returns\":{\"_0\":\"active balance for the account\"}},\"activeBalanceOfAt(address,uint48,bytes)\":{\"params\":{\"account\":\"account to get the active balance for\",\"hints\":\"hints for checkpoints' indexes\",\"timestamp\":\"time point to get the active balance for the account at\"},\"returns\":{\"_0\":\"active balance for the account at the timestamp\"}},\"activeShares()\":{\"returns\":{\"_0\":\"total number of active shares\"}},\"activeSharesAt(uint48,bytes)\":{\"params\":{\"hint\":\"hint for the checkpoint index\",\"timestamp\":\"time point to get the total number of active shares at\"},\"returns\":{\"_0\":\"total number of active shares at the timestamp\"}},\"activeSharesOf(address)\":{\"params\":{\"account\":\"account to get the number of active shares for\"},\"returns\":{\"_0\":\"number of active shares for the account\"}},\"activeSharesOfAt(address,uint48,bytes)\":{\"params\":{\"account\":\"account to get the number of active shares for\",\"hint\":\"hint for the checkpoint index\",\"timestamp\":\"time point to get the number of active shares for the account at\"},\"returns\":{\"_0\":\"number of active shares for the account at the timestamp\"}},\"activeStake()\":{\"returns\":{\"_0\":\"total amount of active stake\"}},\"activeStakeAt(uint48,bytes)\":{\"params\":{\"hint\":\"hint for the checkpoint index\",\"timestamp\":\"time point to get the total active stake at\"},\"returns\":{\"_0\":\"total amount of active stake at the timestamp\"}},\"claim(address,uint256)\":{\"params\":{\"epoch\":\"epoch to claim the collateral for\",\"recipient\":\"account that receives the collateral\"},\"returns\":{\"amount\":\"amount of the collateral claimed\"}},\"claimBatch(address,uint256[])\":{\"params\":{\"epochs\":\"epochs to claim the collateral for\",\"recipient\":\"account that receives the collateral\"},\"returns\":{\"amount\":\"amount of the collateral claimed\"}},\"currentEpoch()\":{\"returns\":{\"_0\":\"current epoch\"}},\"currentEpochStart()\":{\"returns\":{\"_0\":\"start of the current epoch\"}},\"deposit(address,uint256)\":{\"params\":{\"amount\":\"amount of the collateral to deposit\",\"onBehalfOf\":\"account the deposit is made on behalf of\"},\"returns\":{\"depositedAmount\":\"real amount of the collateral deposited\",\"mintedShares\":\"amount of the active shares minted\"}},\"epochAt(uint48)\":{\"details\":\"Reverts if the timestamp is less than the start of the previous epoch duration initial timestamp. Using a future timestamp may result in an unreliable epoch number because of possible changes in epoch duration.\",\"params\":{\"timestamp\":\"time point to get the epoch at\"},\"returns\":{\"_0\":\"epoch at the timestamp\"}},\"epochDuration()\":{\"returns\":{\"_0\":\"duration of the epoch\"}},\"epochDurationInit()\":{\"returns\":{\"_0\":\"time point of the epoch duration set\"}},\"epochDurationSetEpochsDelay()\":{\"returns\":{\"_0\":\"delay for the epoch duration set\"}},\"epochStart(uint256)\":{\"details\":\"Reverts if the epoch is less than the previous epoch duration initial epoch. Using a future epoch may result in an unreliable start timestamp because of possible changes in epoch duration.\",\"params\":{\"epoch\":\"epoch to get the start of\"},\"returns\":{\"_0\":\"start of the epoch\"}},\"flashFee(address,uint256)\":{\"details\":\"The fee to be charged for a given loan.\",\"params\":{\"amount\":\"The amount of tokens lent.\",\"token\":\"The loan currency.\"},\"returns\":{\"_0\":\"The amount of `token` to be charged for the loan, on top of the returned principal.\"}},\"flashLoan(address,address,uint256,bytes)\":{\"details\":\"Initiate a flash loan.\",\"params\":{\"amount\":\"The amount of tokens lent.\",\"data\":\"Arbitrary data structure, intended to contain user-defined parameters.\",\"receiver\":\"The receiver of the tokens in the loan, and the receiver of the callback.\",\"token\":\"The loan currency.\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"isInitialized()\":{\"returns\":{\"_0\":\"if the vault is fully initialized\"}},\"maxFlashLoan(address)\":{\"details\":\"The amount of currency available to be lended.\",\"params\":{\"token\":\"The loan currency.\"},\"returns\":{\"_0\":\"The amount of `token` that can be borrowed.\"}},\"nextEpochStart()\":{\"details\":\"It may result in an unreliable start timestamp because of possible changes in epoch duration.\",\"returns\":{\"_0\":\"start of the next epoch\"}},\"onSlash(uint256,uint48)\":{\"details\":\"Only the slasher can call this function.\",\"params\":{\"amount\":\"amount to slash\",\"captureTimestamp\":\"time point when the stake was captured\"},\"returns\":{\"slashedAmount\":\"real amount of the collateral slashed\"}},\"previousEpochStart()\":{\"details\":\"Reverts if the current epoch is 0.\",\"returns\":{\"_0\":\"start of the previous epoch\"}},\"redeem(address,uint256)\":{\"params\":{\"claimer\":\"account that needs to claim the withdrawal\",\"shares\":\"amount of the active shares to redeem\"},\"returns\":{\"mintedShares\":\"amount of the epoch withdrawal shares minted\",\"withdrawnAssets\":\"amount of the collateral withdrawn\"}},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"setDelegator(address)\":{\"details\":\"Can be set only once.\",\"params\":{\"delegator\":\"vault's delegator to delegate the stake to networks and operators\"}},\"setDepositLimit(uint256)\":{\"details\":\"Only a DEPOSIT_LIMIT_SET_ROLE holder can call this function.\",\"params\":{\"limit\":\"deposit limit (maximum amount of the collateral that can be in the vault simultaneously)\"}},\"setDepositWhitelist(bool)\":{\"details\":\"Only a DEPOSIT_WHITELIST_SET_ROLE holder can call this function.\",\"params\":{\"status\":\"if enabling deposit whitelist\"}},\"setDepositorWhitelistStatus(address,bool)\":{\"details\":\"Only a DEPOSITOR_WHITELIST_ROLE holder can call this function.\",\"params\":{\"account\":\"account for which the whitelist status is set\",\"status\":\"if whitelisting the account\"}},\"setEpochDuration(uint48,uint256)\":{\"details\":\"Only a EPOCH_DURATION_SET_ROLE holder can call this function. Can be accepted after `epochDurationSetEpochsDelay` epochs.\",\"params\":{\"epochDurationSetEpochsDelay_\":\"delay for the epoch duration set in epochs\",\"epochDuration_\":\"epoch duration\"}},\"setFlashFeeRate(uint256)\":{\"details\":\"Only a FLASH_FEE_RATE_SET_ROLE holder can call this function.\",\"params\":{\"flashFeeRate_\":\"flash fee rate\"}},\"setFlashFeeReceiver(address)\":{\"details\":\"Only a FLASH_FEE_RECEIVER_SET_ROLE holder can call this function.\",\"params\":{\"flashFeeReceiver_\":\"flash fee receiver\"}},\"setFlashloanEnabled(bool)\":{\"details\":\"Only a FLASH_LOAN_ENABLED_SET_ROLE holder can call this function.\",\"params\":{\"status\":\"if enabled flash loan\"}},\"setIsDepositLimit(bool)\":{\"details\":\"Only a IS_DEPOSIT_LIMIT_SET_ROLE holder can call this function.\",\"params\":{\"status\":\"if enabling deposit limit\"}},\"setSlasher(address)\":{\"details\":\"Can be set only once.\",\"params\":{\"slasher\":\"vault's slasher to provide a slashing mechanism to networks\"}},\"slashableBalanceOf(address)\":{\"params\":{\"account\":\"account to get the slashable collateral for\"},\"returns\":{\"_0\":\"total amount of the account's slashable collateral\"}},\"staticDelegateCall(address,bytes)\":{\"details\":\"It allows to use this contract's storage on-chain.\",\"params\":{\"data\":\"data to make a delegatecall with\",\"target\":\"address of the contract to make a delegatecall to\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"totalStake()\":{\"returns\":{\"_0\":\"total amount of the slashable collateral\"}},\"withdraw(address,uint256)\":{\"params\":{\"amount\":\"amount of the collateral to withdraw\",\"claimer\":\"account that needs to claim the withdrawal\"},\"returns\":{\"burnedShares\":\"amount of the active shares burned\",\"mintedShares\":\"amount of the epoch withdrawal shares minted\"}},\"withdrawalsOf(uint256,address)\":{\"params\":{\"account\":\"account to get the withdrawals for\",\"epoch\":\"epoch to get the withdrawals for the account at\"},\"returns\":{\"_0\":\"withdrawals for the account at the epoch\"}}},\"stateVariables\":{\"DELEGATOR_FACTORY\":{\"return\":\"address of the delegator factory\",\"returns\":{\"_0\":\"address of the delegator factory\"}},\"SLASHER_FACTORY\":{\"return\":\"address of the slasher factory\",\"returns\":{\"_0\":\"address of the slasher factory\"}}},\"version\":1},\"userdoc\":{\"events\":{\"Claim(address,address,uint256,uint256)\":{\"notice\":\"Emitted when a claim is made.\"},\"ClaimBatch(address,address,uint256[],uint256)\":{\"notice\":\"Emitted when a batch claim is made.\"},\"Deposit(address,address,uint256,uint256)\":{\"notice\":\"Emitted when a deposit is made.\"},\"OnSlash(uint256,uint48,uint256)\":{\"notice\":\"Emitted when a slash happens.\"},\"SetDelegator(address)\":{\"notice\":\"Emitted when a delegator is set.\"},\"SetDepositLimit(uint256)\":{\"notice\":\"Emitted when a deposit limit is set.\"},\"SetDepositWhitelist(bool)\":{\"notice\":\"Emitted when a deposit whitelist status is enabled/disabled.\"},\"SetDepositorWhitelistStatus(address,bool)\":{\"notice\":\"Emitted when a depositor whitelist status is set.\"},\"SetEpochDuration(uint48,uint256)\":{\"notice\":\"Emitted when a epoch duration is set (can be accepted after `epochDurationSetEpochsDelay` epochs).\"},\"SetFlashFeeRate(uint256)\":{\"notice\":\"Emitted when a flash fee rate is set.\"},\"SetFlashFeeReceiver(address)\":{\"notice\":\"Emitted when a flash fee receiver is set.\"},\"SetFlashloanEnabled(bool)\":{\"notice\":\"Emitted when a flash loan enabled status is set.\"},\"SetIsDepositLimit(bool)\":{\"notice\":\"Emitted when a deposit limit status is enabled/disabled.\"},\"SetSlasher(address)\":{\"notice\":\"Emitted when a slasher is set.\"},\"Withdraw(address,address,uint256,uint256,uint256)\":{\"notice\":\"Emitted when a withdrawal is made.\"}},\"kind\":\"user\",\"methods\":{\"DELEGATOR_FACTORY()\":{\"notice\":\"Get the delegator factory's address.\"},\"DEPOSITOR_WHITELIST_ROLE()\":{\"notice\":\"Get a depositor whitelist status setter's role.\"},\"DEPOSIT_LIMIT_SET_ROLE()\":{\"notice\":\"Get a deposit limit setter's role.\"},\"DEPOSIT_WHITELIST_SET_ROLE()\":{\"notice\":\"Get a deposit whitelist enabler/disabler's role.\"},\"EPOCH_DURATION_SET_ROLE()\":{\"notice\":\"Get a epoch duration setter's role.\"},\"FLASH_FEE_BASE()\":{\"notice\":\"Get a flash fee base.\"},\"FLASH_FEE_RATE_SET_ROLE()\":{\"notice\":\"Get a flash fee rate setter's role.\"},\"FLASH_FEE_RECEIVER_SET_ROLE()\":{\"notice\":\"Get a flash fee receiver setter's role.\"},\"FLASH_LOAN_ENABLED_SET_ROLE()\":{\"notice\":\"Get a flash loan enabled setter's role.\"},\"IS_DEPOSIT_LIMIT_SET_ROLE()\":{\"notice\":\"Get a deposit limit enabler/disabler's role.\"},\"RETURN_VALUE()\":{\"notice\":\"Get a value that must be returned by the flash loan borrower.\"},\"SLASHER_FACTORY()\":{\"notice\":\"Get the slasher factory's address.\"},\"activeBalanceOf(address)\":{\"notice\":\"Get an active balance for a particular account.\"},\"activeBalanceOfAt(address,uint48,bytes)\":{\"notice\":\"Get an active balance for a particular account at a given timestamp using hints.\"},\"activeShares()\":{\"notice\":\"Get a total number of active shares in the vault.\"},\"activeSharesAt(uint48,bytes)\":{\"notice\":\"Get a total number of active shares in the vault at a given timestamp using a hint.\"},\"activeSharesOf(address)\":{\"notice\":\"Get a number of active shares for a particular account.\"},\"activeSharesOfAt(address,uint48,bytes)\":{\"notice\":\"Get a total number of active shares for a particular account at a given timestamp using a hint.\"},\"activeStake()\":{\"notice\":\"Get a total amount of active stake in the vault.\"},\"activeStakeAt(uint48,bytes)\":{\"notice\":\"Get a total amount of active stake in the vault at a given timestamp using a hint.\"},\"burner()\":{\"notice\":\"Get a burner to issue debt to (e.g., 0xdEaD or some unwrapper contract).\"},\"claim(address,uint256)\":{\"notice\":\"Claim collateral from the vault.\"},\"claimBatch(address,uint256[])\":{\"notice\":\"Claim collateral from the vault for multiple epochs.\"},\"collateral()\":{\"notice\":\"Get a vault collateral.\"},\"currentEpoch()\":{\"notice\":\"Get a current vault epoch.\"},\"currentEpochStart()\":{\"notice\":\"Get a start of the current vault epoch.\"},\"delegator()\":{\"notice\":\"Get a delegator (it delegates the vault's stake to networks and operators).\"},\"deposit(address,uint256)\":{\"notice\":\"Deposit collateral into the vault.\"},\"depositLimit()\":{\"notice\":\"Get a deposit limit (maximum amount of the active stake that can be in the vault simultaneously).\"},\"depositWhitelist()\":{\"notice\":\"Get if the deposit whitelist is enabled.\"},\"epochAt(uint48)\":{\"notice\":\"Get an epoch at a given timestamp.\"},\"epochDuration()\":{\"notice\":\"Get a duration of the vault epoch.\"},\"epochDurationInit()\":{\"notice\":\"Get a time point of the epoch duration set.\"},\"epochDurationSetEpochsDelay()\":{\"notice\":\"Get a delay for the epoch duration set in epochs.\"},\"epochStart(uint256)\":{\"notice\":\"Get a start of the epoch.\"},\"flashFeeRate()\":{\"notice\":\"Get a flash fee rate (100% = 1_000_000_000; 0.03% = 300_000).\"},\"flashFeeReceiver()\":{\"notice\":\"Get a flash fee receiver.\"},\"flashLoanEnabled()\":{\"notice\":\"Get if a flash loan mechanic is enabled.\"},\"isDelegatorInitialized()\":{\"notice\":\"Get if the delegator is initialized.\"},\"isDepositLimit()\":{\"notice\":\"Get if the deposit limit is set.\"},\"isDepositorWhitelisted(address)\":{\"notice\":\"Get if a given account is whitelisted as a depositor.\"},\"isInitialized()\":{\"notice\":\"Check if the vault is fully initialized (a delegator and a slasher are set).\"},\"isSlasherInitialized()\":{\"notice\":\"Get if the slasher is initialized.\"},\"isWithdrawalsClaimed(uint256,address)\":{\"notice\":\"Get if the withdrawals are claimed for a particular account at a given epoch.\"},\"nextEpochStart()\":{\"notice\":\"Get a start of the next vault epoch.\"},\"onSlash(uint256,uint48)\":{\"notice\":\"Slash callback for burning collateral.\"},\"previousEpochStart()\":{\"notice\":\"Get a start of the previous vault epoch.\"},\"redeem(address,uint256)\":{\"notice\":\"Redeem collateral from the vault (it will be claimable after the next epoch).\"},\"setDelegator(address)\":{\"notice\":\"Set a delegator.\"},\"setDepositLimit(uint256)\":{\"notice\":\"Set a deposit limit.\"},\"setDepositWhitelist(bool)\":{\"notice\":\"Enable/disable deposit whitelist.\"},\"setDepositorWhitelistStatus(address,bool)\":{\"notice\":\"Set a depositor whitelist status.\"},\"setEpochDuration(uint48,uint256)\":{\"notice\":\"Set an epoch duration (can be only greater than the current one).\"},\"setFlashFeeRate(uint256)\":{\"notice\":\"Set a flash fee rate (100% = 1_000_000_000; 0.03% = 300_000).\"},\"setFlashFeeReceiver(address)\":{\"notice\":\"Set a flash fee receiver.\"},\"setFlashloanEnabled(bool)\":{\"notice\":\"Set a flash loan enabled status.\"},\"setIsDepositLimit(bool)\":{\"notice\":\"Enable/disable deposit limit.\"},\"setSlasher(address)\":{\"notice\":\"Set a slasher.\"},\"slashableBalanceOf(address)\":{\"notice\":\"Get a total amount of the collateral that can be slashed for a given account.\"},\"slasher()\":{\"notice\":\"Get a slasher (it provides networks a slashing mechanism).\"},\"staticDelegateCall(address,bytes)\":{\"notice\":\"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data).\"},\"totalStake()\":{\"notice\":\"Get a total amount of the collateral that can be slashed.\"},\"withdraw(address,uint256)\":{\"notice\":\"Withdraw collateral from the vault (it will be claimable after the next epoch).\"},\"withdrawalShares(uint256)\":{\"notice\":\"Get a total number of withdrawal shares at a given epoch.\"},\"withdrawalSharesOf(uint256,address)\":{\"notice\":\"Get a number of withdrawal shares for a particular account at a given epoch (zero if claimed).\"},\"withdrawals(uint256)\":{\"notice\":\"Get a total amount of the withdrawals at a given epoch.\"},\"withdrawalsOf(uint256,address)\":{\"notice\":\"Get withdrawals for a particular account at a given epoch (zero if claimed).\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/vault/v1.1/VaultImplementation.sol\":\"VaultImplementation\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf\",\"dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89\",\"dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1\",\"dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol\":{\"keccak256\":\"0x0b1459615b9b47c2a4eec8e72f23ccc601f1d711f679a1c06b3390459021a341\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aaf6209fb90f02ebd1c9603568f5e6da5fa2f896820ba66b5041eeed993dc4ce\",\"dweb:/ipfs/QmYsSH2PSGbTXMVXXxhh9AXzfHPSz2j42REvds6xjU7WmR\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashLender.sol\":{\"keccak256\":\"0x5d19ea24c555cf6a5dbafea9fac57887cc3e72154f3ee8e0a2bf67971811c14b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3af1364c971d94bccf3efcc509b2c5c03fe1c69ea9945ba29a96998bfd6c593e\",\"dweb:/ipfs/Qmczq52prNGX5tHuk8aENZsuYgxTeA6YVMHV7yMTKeFjbr\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44\",\"dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6\",\"dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza\"]},\"src/contracts/common/StaticDelegateCallable.sol\":{\"keccak256\":\"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764\",\"dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD\"]},\"src/contracts/libraries/Checkpoints.sol\":{\"keccak256\":\"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609\",\"dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE\"]},\"src/contracts/libraries/ERC4626Math.sol\":{\"keccak256\":\"0x8441160513c1cbeb1c3b9ee077bcc7e7ce20006b52a77c8dd39ff0ef89699939\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://943f8cc3e26ddf649f465f40c909819f5c864717c4baa339e9e403b9374a4653\",\"dweb:/ipfs/QmXPxi1sUDsrGprZdUgCzoPEosaZMv9ZhygWQ1vAi1phAB\"]},\"src/contracts/vault/v1.1/VaultImplementation.sol\":{\"keccak256\":\"0x8a6243e7b213528ac90a67abb5bfe5a238c8f98ad16082d2225899f882b1ce36\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://251b57f014b4e8e881a798ddbe99ed9cdf52f82303a6a818e3aa1a317e36be57\",\"dweb:/ipfs/QmQTXSQVeewpASvJ7QRadMG4iaswGix9UYRt9xouGRvShy\"]},\"src/contracts/vault/v1.1/VaultStorage.sol\":{\"keccak256\":\"0x510c83437bb493d66c299aec31ccd9d741e1348299b4170d891d476218231d19\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://8879b6b1ad9ecc8ffa5d7725b03158dc2f65e30ac65fe3af9c654277740039e0\",\"dweb:/ipfs/QmdC4DkajUbGuRzaCsqegJWGTxXvooWFCVkU7EdXG9mou2\"]},\"src/interfaces/common/IEntity.sol\":{\"keccak256\":\"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b\",\"dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv\"]},\"src/interfaces/common/IRegistry.sol\":{\"keccak256\":\"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014\",\"dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK\"]},\"src/interfaces/common/IStaticDelegateCallable.sol\":{\"keccak256\":\"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516\",\"dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi\"]},\"src/interfaces/delegator/IBaseDelegator.sol\":{\"keccak256\":\"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2\",\"dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8\"]},\"src/interfaces/slasher/IBaseSlasher.sol\":{\"keccak256\":\"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf\",\"dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx\"]},\"src/interfaces/vault/v1.1/IVault.sol\":{\"keccak256\":\"0x41c3b7c7955923f29d7a913dcd49a2f7c4c40339eda1cdf675d04bf15168fbd4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7f26841febf819da87037e7f285fb4e9c3a3191d2cc9284d4679bd5f3d5eb79\",\"dweb:/ipfs/QmejKi1svukhK2bwGPvSXLzG4oMKUZo7xEm1gNvuYWNbDK\"]},\"src/interfaces/vault/v1.1/IVaultStorage.sol\":{\"keccak256\":\"0x762053f3cc4cb5809c48b846a77b36e697323b2011118c2df8ea2692a02ece5b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282252083722ebdb1e8977ba1fd4860e15acb49bb4ec337632dd14304863b1d\",\"dweb:/ipfs/QmNNBo5HaWBenQZLgnjF3NbxVRupfgYeUMztYYQMpD9VoB\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"delegatorFactory","type":"address"},{"internalType":"address","name":"slasherFactory","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"inputs":[],"type":"error","name":"AlreadyClaimed"},{"inputs":[],"type":"error","name":"AlreadySet"},{"inputs":[],"type":"error","name":"CheckpointUnorderedInsertion"},{"inputs":[],"type":"error","name":"DelegatorAlreadyInitialized"},{"inputs":[],"type":"error","name":"DepositLimitReached"},{"inputs":[],"type":"error","name":"InsufficientClaim"},{"inputs":[],"type":"error","name":"InsufficientDeposit"},{"inputs":[],"type":"error","name":"InsufficientExitWindow"},{"inputs":[],"type":"error","name":"InsufficientRedemption"},{"inputs":[],"type":"error","name":"InsufficientWithdrawal"},{"inputs":[],"type":"error","name":"InvalidAccount"},{"inputs":[],"type":"error","name":"InvalidCaptureEpoch"},{"inputs":[],"type":"error","name":"InvalidClaimer"},{"inputs":[],"type":"error","name":"InvalidCollateral"},{"inputs":[],"type":"error","name":"InvalidDelegator"},{"inputs":[],"type":"error","name":"InvalidEpoch"},{"inputs":[],"type":"error","name":"InvalidEpochDuration"},{"inputs":[],"type":"error","name":"InvalidEpochDurationSetEpochsDelay"},{"inputs":[],"type":"error","name":"InvalidFlashParams"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"InvalidLengthEpochs"},{"inputs":[],"type":"error","name":"InvalidNewEpochDuration"},{"inputs":[],"type":"error","name":"InvalidOnBehalfOf"},{"inputs":[],"type":"error","name":"InvalidOrigin"},{"inputs":[],"type":"error","name":"InvalidReceiver"},{"inputs":[],"type":"error","name":"InvalidRecipient"},{"inputs":[],"type":"error","name":"InvalidReturnAmount"},{"inputs":[],"type":"error","name":"InvalidSlasher"},{"inputs":[],"type":"error","name":"InvalidTimestamp"},{"inputs":[],"type":"error","name":"MaxLoanExceeded"},{"inputs":[],"type":"error","name":"MissingRoles"},{"inputs":[],"type":"error","name":"NewEpochDurationNotReady"},{"inputs":[],"type":"error","name":"NoDepositWhitelist"},{"inputs":[],"type":"error","name":"NoPreviousEpoch"},{"inputs":[],"type":"error","name":"NotDelegator"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"NotSlasher"},{"inputs":[],"type":"error","name":"NotWhitelistedDepositor"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintDowncast"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"type":"error","name":"SafeERC20FailedOperation"},{"inputs":[],"type":"error","name":"SlasherAlreadyInitialized"},{"inputs":[],"type":"error","name":"TooLowFlashLoanValue"},{"inputs":[],"type":"error","name":"TooMuchRedeem"},{"inputs":[],"type":"error","name":"TooMuchWithdraw"},{"inputs":[],"type":"error","name":"UnsupportedToken"},{"inputs":[{"internalType":"address","name":"claimer","type":"address","indexed":true},{"internalType":"address","name":"recipient","type":"address","indexed":true},{"internalType":"uint256","name":"epoch","type":"uint256","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Claim","anonymous":false},{"inputs":[{"internalType":"address","name":"claimer","type":"address","indexed":true},{"internalType":"address","name":"recipient","type":"address","indexed":true},{"internalType":"uint256[]","name":"epochs","type":"uint256[]","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"ClaimBatch","anonymous":false},{"inputs":[{"internalType":"address","name":"depositor","type":"address","indexed":true},{"internalType":"address","name":"onBehalfOf","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false}],"type":"event","name":"Deposit","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint48","name":"captureTimestamp","type":"uint48","indexed":false},{"internalType":"uint256","name":"slashedAmount","type":"uint256","indexed":false}],"type":"event","name":"OnSlash","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true}],"type":"event","name":"SetDelegator","anonymous":false},{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"SetDepositLimit","anonymous":false},{"inputs":[{"internalType":"bool","name":"status","type":"bool","indexed":false}],"type":"event","name":"SetDepositWhitelist","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"bool","name":"status","type":"bool","indexed":false}],"type":"event","name":"SetDepositorWhitelistStatus","anonymous":false},{"inputs":[{"internalType":"uint48","name":"epochDuration","type":"uint48","indexed":false},{"internalType":"uint256","name":"epochDurationSetEpochsDelay","type":"uint256","indexed":false}],"type":"event","name":"SetEpochDuration","anonymous":false},{"inputs":[{"internalType":"uint256","name":"flashFeeRate","type":"uint256","indexed":false}],"type":"event","name":"SetFlashFeeRate","anonymous":false},{"inputs":[{"internalType":"address","name":"flashFeeReceiver","type":"address","indexed":false}],"type":"event","name":"SetFlashFeeReceiver","anonymous":false},{"inputs":[{"internalType":"bool","name":"status","type":"bool","indexed":false}],"type":"event","name":"SetFlashloanEnabled","anonymous":false},{"inputs":[{"internalType":"bool","name":"status","type":"bool","indexed":false}],"type":"event","name":"SetIsDepositLimit","anonymous":false},{"inputs":[{"internalType":"address","name":"slasher","type":"address","indexed":true}],"type":"event","name":"SetSlasher","anonymous":false},{"inputs":[{"internalType":"address","name":"withdrawer","type":"address","indexed":true},{"internalType":"address","name":"claimer","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"burnedShares","type":"uint256","indexed":false},{"internalType":"uint256","name":"mintedShares","type":"uint256","indexed":false}],"type":"event","name":"Withdraw","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DELEGATOR_FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEPOSITOR_WHITELIST_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEPOSIT_LIMIT_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEPOSIT_WHITELIST_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"EPOCH_DURATION_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FLASH_FEE_BASE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FLASH_FEE_RATE_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FLASH_FEE_RECEIVER_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FLASH_LOAN_ENABLED_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_DEPOSIT_LIMIT_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"RETURN_VALUE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"SLASHER_FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"activeBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hints","type":"bytes"}],"stateMutability":"view","type":"function","name":"activeBalanceOfAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"activeShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"activeSharesAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"activeSharesOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"activeSharesOfAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"activeStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"activeStakeAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"burner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"epoch","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"claim","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256[]","name":"epochs","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"claimBatch","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"collateral","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"currentEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"currentEpochStart","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"delegator","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"onBehalfOf","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"deposit","outputs":[{"internalType":"uint256","name":"depositedAmount","type":"uint256"},{"internalType":"uint256","name":"mintedShares","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"depositLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"depositWhitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"epochAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"epochDuration","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"epochDurationInit","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"epochDurationSetEpochsDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"}],"stateMutability":"view","type":"function","name":"epochStart","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"view","type":"function","name":"flashFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"flashFeeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"flashFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"contract IERC3156FlashBorrower","name":"receiver","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"flashLoan","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"flashLoanEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"isDelegatorInitialized","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"isDepositLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"isDepositorWhitelisted","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"isInitialized","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"isSlasherInitialized","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"isWithdrawalsClaimed","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"maxFlashLoan","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"nextEpochStart","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint48","name":"captureTimestamp","type":"uint48"}],"stateMutability":"nonpayable","type":"function","name":"onSlash","outputs":[{"internalType":"uint256","name":"slashedAmount","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"previousEpochStart","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[{"internalType":"address","name":"claimer","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"redeem","outputs":[{"internalType":"uint256","name":"withdrawnAssets","type":"uint256"},{"internalType":"uint256","name":"mintedShares","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"address","name":"delegator_","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setDelegator"},{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setDepositLimit"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setDepositWhitelist"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setDepositorWhitelistStatus"},{"inputs":[{"internalType":"uint48","name":"epochDuration_","type":"uint48"},{"internalType":"uint256","name":"epochDurationSetEpochsDelay_","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setEpochDuration"},{"inputs":[{"internalType":"uint256","name":"flashFeeRate_","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setFlashFeeRate"},{"inputs":[{"internalType":"address","name":"flashFeeReceiver_","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setFlashFeeReceiver"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setFlashloanEnabled"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setIsDepositLimit"},{"inputs":[{"internalType":"address","name":"slasher_","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setSlasher"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"slashableBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"slasher","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"staticDelegateCall"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"claimer","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"withdraw","outputs":[{"internalType":"uint256","name":"burnedShares","type":"uint256"},{"internalType":"uint256","name":"mintedShares","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"}],"stateMutability":"view","type":"function","name":"withdrawalShares","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"withdrawalSharesOf","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"}],"stateMutability":"view","type":"function","name":"withdrawals","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"withdrawalsOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{"activeBalanceOf(address)":{"params":{"account":"account to get the active balance for"},"returns":{"_0":"active balance for the account"}},"activeBalanceOfAt(address,uint48,bytes)":{"params":{"account":"account to get the active balance for","hints":"hints for checkpoints' indexes","timestamp":"time point to get the active balance for the account at"},"returns":{"_0":"active balance for the account at the timestamp"}},"activeShares()":{"returns":{"_0":"total number of active shares"}},"activeSharesAt(uint48,bytes)":{"params":{"hint":"hint for the checkpoint index","timestamp":"time point to get the total number of active shares at"},"returns":{"_0":"total number of active shares at the timestamp"}},"activeSharesOf(address)":{"params":{"account":"account to get the number of active shares for"},"returns":{"_0":"number of active shares for the account"}},"activeSharesOfAt(address,uint48,bytes)":{"params":{"account":"account to get the number of active shares for","hint":"hint for the checkpoint index","timestamp":"time point to get the number of active shares for the account at"},"returns":{"_0":"number of active shares for the account at the timestamp"}},"activeStake()":{"returns":{"_0":"total amount of active stake"}},"activeStakeAt(uint48,bytes)":{"params":{"hint":"hint for the checkpoint index","timestamp":"time point to get the total active stake at"},"returns":{"_0":"total amount of active stake at the timestamp"}},"claim(address,uint256)":{"params":{"epoch":"epoch to claim the collateral for","recipient":"account that receives the collateral"},"returns":{"amount":"amount of the collateral claimed"}},"claimBatch(address,uint256[])":{"params":{"epochs":"epochs to claim the collateral for","recipient":"account that receives the collateral"},"returns":{"amount":"amount of the collateral claimed"}},"currentEpoch()":{"returns":{"_0":"current epoch"}},"currentEpochStart()":{"returns":{"_0":"start of the current epoch"}},"deposit(address,uint256)":{"params":{"amount":"amount of the collateral to deposit","onBehalfOf":"account the deposit is made on behalf of"},"returns":{"depositedAmount":"real amount of the collateral deposited","mintedShares":"amount of the active shares minted"}},"epochAt(uint48)":{"details":"Reverts if the timestamp is less than the start of the previous epoch duration initial timestamp. Using a future timestamp may result in an unreliable epoch number because of possible changes in epoch duration.","params":{"timestamp":"time point to get the epoch at"},"returns":{"_0":"epoch at the timestamp"}},"epochDuration()":{"returns":{"_0":"duration of the epoch"}},"epochDurationInit()":{"returns":{"_0":"time point of the epoch duration set"}},"epochDurationSetEpochsDelay()":{"returns":{"_0":"delay for the epoch duration set"}},"epochStart(uint256)":{"details":"Reverts if the epoch is less than the previous epoch duration initial epoch. Using a future epoch may result in an unreliable start timestamp because of possible changes in epoch duration.","params":{"epoch":"epoch to get the start of"},"returns":{"_0":"start of the epoch"}},"flashFee(address,uint256)":{"details":"The fee to be charged for a given loan.","params":{"amount":"The amount of tokens lent.","token":"The loan currency."},"returns":{"_0":"The amount of `token` to be charged for the loan, on top of the returned principal."}},"flashLoan(address,address,uint256,bytes)":{"details":"Initiate a flash loan.","params":{"amount":"The amount of tokens lent.","data":"Arbitrary data structure, intended to contain user-defined parameters.","receiver":"The receiver of the tokens in the loan, and the receiver of the callback.","token":"The loan currency."}},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"isInitialized()":{"returns":{"_0":"if the vault is fully initialized"}},"maxFlashLoan(address)":{"details":"The amount of currency available to be lended.","params":{"token":"The loan currency."},"returns":{"_0":"The amount of `token` that can be borrowed."}},"nextEpochStart()":{"details":"It may result in an unreliable start timestamp because of possible changes in epoch duration.","returns":{"_0":"start of the next epoch"}},"onSlash(uint256,uint48)":{"details":"Only the slasher can call this function.","params":{"amount":"amount to slash","captureTimestamp":"time point when the stake was captured"},"returns":{"slashedAmount":"real amount of the collateral slashed"}},"previousEpochStart()":{"details":"Reverts if the current epoch is 0.","returns":{"_0":"start of the previous epoch"}},"redeem(address,uint256)":{"params":{"claimer":"account that needs to claim the withdrawal","shares":"amount of the active shares to redeem"},"returns":{"mintedShares":"amount of the epoch withdrawal shares minted","withdrawnAssets":"amount of the collateral withdrawn"}},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"setDelegator(address)":{"details":"Can be set only once.","params":{"delegator":"vault's delegator to delegate the stake to networks and operators"}},"setDepositLimit(uint256)":{"details":"Only a DEPOSIT_LIMIT_SET_ROLE holder can call this function.","params":{"limit":"deposit limit (maximum amount of the collateral that can be in the vault simultaneously)"}},"setDepositWhitelist(bool)":{"details":"Only a DEPOSIT_WHITELIST_SET_ROLE holder can call this function.","params":{"status":"if enabling deposit whitelist"}},"setDepositorWhitelistStatus(address,bool)":{"details":"Only a DEPOSITOR_WHITELIST_ROLE holder can call this function.","params":{"account":"account for which the whitelist status is set","status":"if whitelisting the account"}},"setEpochDuration(uint48,uint256)":{"details":"Only a EPOCH_DURATION_SET_ROLE holder can call this function. Can be accepted after `epochDurationSetEpochsDelay` epochs.","params":{"epochDurationSetEpochsDelay_":"delay for the epoch duration set in epochs","epochDuration_":"epoch duration"}},"setFlashFeeRate(uint256)":{"details":"Only a FLASH_FEE_RATE_SET_ROLE holder can call this function.","params":{"flashFeeRate_":"flash fee rate"}},"setFlashFeeReceiver(address)":{"details":"Only a FLASH_FEE_RECEIVER_SET_ROLE holder can call this function.","params":{"flashFeeReceiver_":"flash fee receiver"}},"setFlashloanEnabled(bool)":{"details":"Only a FLASH_LOAN_ENABLED_SET_ROLE holder can call this function.","params":{"status":"if enabled flash loan"}},"setIsDepositLimit(bool)":{"details":"Only a IS_DEPOSIT_LIMIT_SET_ROLE holder can call this function.","params":{"status":"if enabling deposit limit"}},"setSlasher(address)":{"details":"Can be set only once.","params":{"slasher":"vault's slasher to provide a slashing mechanism to networks"}},"slashableBalanceOf(address)":{"params":{"account":"account to get the slashable collateral for"},"returns":{"_0":"total amount of the account's slashable collateral"}},"staticDelegateCall(address,bytes)":{"details":"It allows to use this contract's storage on-chain.","params":{"data":"data to make a delegatecall with","target":"address of the contract to make a delegatecall to"}},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"totalStake()":{"returns":{"_0":"total amount of the slashable collateral"}},"withdraw(address,uint256)":{"params":{"amount":"amount of the collateral to withdraw","claimer":"account that needs to claim the withdrawal"},"returns":{"burnedShares":"amount of the active shares burned","mintedShares":"amount of the epoch withdrawal shares minted"}},"withdrawalsOf(uint256,address)":{"params":{"account":"account to get the withdrawals for","epoch":"epoch to get the withdrawals for the account at"},"returns":{"_0":"withdrawals for the account at the epoch"}}},"version":1},"userdoc":{"kind":"user","methods":{"DELEGATOR_FACTORY()":{"notice":"Get the delegator factory's address."},"DEPOSITOR_WHITELIST_ROLE()":{"notice":"Get a depositor whitelist status setter's role."},"DEPOSIT_LIMIT_SET_ROLE()":{"notice":"Get a deposit limit setter's role."},"DEPOSIT_WHITELIST_SET_ROLE()":{"notice":"Get a deposit whitelist enabler/disabler's role."},"EPOCH_DURATION_SET_ROLE()":{"notice":"Get a epoch duration setter's role."},"FLASH_FEE_BASE()":{"notice":"Get a flash fee base."},"FLASH_FEE_RATE_SET_ROLE()":{"notice":"Get a flash fee rate setter's role."},"FLASH_FEE_RECEIVER_SET_ROLE()":{"notice":"Get a flash fee receiver setter's role."},"FLASH_LOAN_ENABLED_SET_ROLE()":{"notice":"Get a flash loan enabled setter's role."},"IS_DEPOSIT_LIMIT_SET_ROLE()":{"notice":"Get a deposit limit enabler/disabler's role."},"RETURN_VALUE()":{"notice":"Get a value that must be returned by the flash loan borrower."},"SLASHER_FACTORY()":{"notice":"Get the slasher factory's address."},"activeBalanceOf(address)":{"notice":"Get an active balance for a particular account."},"activeBalanceOfAt(address,uint48,bytes)":{"notice":"Get an active balance for a particular account at a given timestamp using hints."},"activeShares()":{"notice":"Get a total number of active shares in the vault."},"activeSharesAt(uint48,bytes)":{"notice":"Get a total number of active shares in the vault at a given timestamp using a hint."},"activeSharesOf(address)":{"notice":"Get a number of active shares for a particular account."},"activeSharesOfAt(address,uint48,bytes)":{"notice":"Get a total number of active shares for a particular account at a given timestamp using a hint."},"activeStake()":{"notice":"Get a total amount of active stake in the vault."},"activeStakeAt(uint48,bytes)":{"notice":"Get a total amount of active stake in the vault at a given timestamp using a hint."},"burner()":{"notice":"Get a burner to issue debt to (e.g., 0xdEaD or some unwrapper contract)."},"claim(address,uint256)":{"notice":"Claim collateral from the vault."},"claimBatch(address,uint256[])":{"notice":"Claim collateral from the vault for multiple epochs."},"collateral()":{"notice":"Get a vault collateral."},"currentEpoch()":{"notice":"Get a current vault epoch."},"currentEpochStart()":{"notice":"Get a start of the current vault epoch."},"delegator()":{"notice":"Get a delegator (it delegates the vault's stake to networks and operators)."},"deposit(address,uint256)":{"notice":"Deposit collateral into the vault."},"depositLimit()":{"notice":"Get a deposit limit (maximum amount of the active stake that can be in the vault simultaneously)."},"depositWhitelist()":{"notice":"Get if the deposit whitelist is enabled."},"epochAt(uint48)":{"notice":"Get an epoch at a given timestamp."},"epochDuration()":{"notice":"Get a duration of the vault epoch."},"epochDurationInit()":{"notice":"Get a time point of the epoch duration set."},"epochDurationSetEpochsDelay()":{"notice":"Get a delay for the epoch duration set in epochs."},"epochStart(uint256)":{"notice":"Get a start of the epoch."},"flashFeeRate()":{"notice":"Get a flash fee rate (100% = 1_000_000_000; 0.03% = 300_000)."},"flashFeeReceiver()":{"notice":"Get a flash fee receiver."},"flashLoanEnabled()":{"notice":"Get if a flash loan mechanic is enabled."},"isDelegatorInitialized()":{"notice":"Get if the delegator is initialized."},"isDepositLimit()":{"notice":"Get if the deposit limit is set."},"isDepositorWhitelisted(address)":{"notice":"Get if a given account is whitelisted as a depositor."},"isInitialized()":{"notice":"Check if the vault is fully initialized (a delegator and a slasher are set)."},"isSlasherInitialized()":{"notice":"Get if the slasher is initialized."},"isWithdrawalsClaimed(uint256,address)":{"notice":"Get if the withdrawals are claimed for a particular account at a given epoch."},"nextEpochStart()":{"notice":"Get a start of the next vault epoch."},"onSlash(uint256,uint48)":{"notice":"Slash callback for burning collateral."},"previousEpochStart()":{"notice":"Get a start of the previous vault epoch."},"redeem(address,uint256)":{"notice":"Redeem collateral from the vault (it will be claimable after the next epoch)."},"setDelegator(address)":{"notice":"Set a delegator."},"setDepositLimit(uint256)":{"notice":"Set a deposit limit."},"setDepositWhitelist(bool)":{"notice":"Enable/disable deposit whitelist."},"setDepositorWhitelistStatus(address,bool)":{"notice":"Set a depositor whitelist status."},"setEpochDuration(uint48,uint256)":{"notice":"Set an epoch duration (can be only greater than the current one)."},"setFlashFeeRate(uint256)":{"notice":"Set a flash fee rate (100% = 1_000_000_000; 0.03% = 300_000)."},"setFlashFeeReceiver(address)":{"notice":"Set a flash fee receiver."},"setFlashloanEnabled(bool)":{"notice":"Set a flash loan enabled status."},"setIsDepositLimit(bool)":{"notice":"Enable/disable deposit limit."},"setSlasher(address)":{"notice":"Set a slasher."},"slashableBalanceOf(address)":{"notice":"Get a total amount of the collateral that can be slashed for a given account."},"slasher()":{"notice":"Get a slasher (it provides networks a slashing mechanism)."},"staticDelegateCall(address,bytes)":{"notice":"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data)."},"totalStake()":{"notice":"Get a total amount of the collateral that can be slashed."},"withdraw(address,uint256)":{"notice":"Withdraw collateral from the vault (it will be claimable after the next epoch)."},"withdrawalShares(uint256)":{"notice":"Get a total number of withdrawal shares at a given epoch."},"withdrawalSharesOf(uint256,address)":{"notice":"Get a number of withdrawal shares for a particular account at a given epoch (zero if claimed)."},"withdrawals(uint256)":{"notice":"Get a total amount of the withdrawals at a given epoch."},"withdrawalsOf(uint256,address)":{"notice":"Get withdrawals for a particular account at a given epoch (zero if claimed)."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/vault/v1.1/VaultImplementation.sol":"VaultImplementation"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol":{"keccak256":"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866","urls":["bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf","dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab","urls":["bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89","dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606","urls":["bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1","dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol":{"keccak256":"0x0b1459615b9b47c2a4eec8e72f23ccc601f1d711f679a1c06b3390459021a341","urls":["bzz-raw://aaf6209fb90f02ebd1c9603568f5e6da5fa2f896820ba66b5041eeed993dc4ce","dweb:/ipfs/QmYsSH2PSGbTXMVXXxhh9AXzfHPSz2j42REvds6xjU7WmR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashLender.sol":{"keccak256":"0x5d19ea24c555cf6a5dbafea9fac57887cc3e72154f3ee8e0a2bf67971811c14b","urls":["bzz-raw://3af1364c971d94bccf3efcc509b2c5c03fe1c69ea9945ba29a96998bfd6c593e","dweb:/ipfs/Qmczq52prNGX5tHuk8aENZsuYgxTeA6YVMHV7yMTKeFjbr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310","urls":["bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862","dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol":{"keccak256":"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f","urls":["bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44","dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc","urls":["bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6","dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza"],"license":"MIT"},"src/contracts/common/StaticDelegateCallable.sol":{"keccak256":"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90","urls":["bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764","dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD"],"license":"BUSL-1.1"},"src/contracts/libraries/Checkpoints.sol":{"keccak256":"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c","urls":["bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609","dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE"],"license":"MIT"},"src/contracts/libraries/ERC4626Math.sol":{"keccak256":"0x8441160513c1cbeb1c3b9ee077bcc7e7ce20006b52a77c8dd39ff0ef89699939","urls":["bzz-raw://943f8cc3e26ddf649f465f40c909819f5c864717c4baa339e9e403b9374a4653","dweb:/ipfs/QmXPxi1sUDsrGprZdUgCzoPEosaZMv9ZhygWQ1vAi1phAB"],"license":"MIT"},"src/contracts/vault/v1.1/VaultImplementation.sol":{"keccak256":"0x8a6243e7b213528ac90a67abb5bfe5a238c8f98ad16082d2225899f882b1ce36","urls":["bzz-raw://251b57f014b4e8e881a798ddbe99ed9cdf52f82303a6a818e3aa1a317e36be57","dweb:/ipfs/QmQTXSQVeewpASvJ7QRadMG4iaswGix9UYRt9xouGRvShy"],"license":"BUSL-1.1"},"src/contracts/vault/v1.1/VaultStorage.sol":{"keccak256":"0x510c83437bb493d66c299aec31ccd9d741e1348299b4170d891d476218231d19","urls":["bzz-raw://8879b6b1ad9ecc8ffa5d7725b03158dc2f65e30ac65fe3af9c654277740039e0","dweb:/ipfs/QmdC4DkajUbGuRzaCsqegJWGTxXvooWFCVkU7EdXG9mou2"],"license":"BUSL-1.1"},"src/interfaces/common/IEntity.sol":{"keccak256":"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21","urls":["bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b","dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv"],"license":"MIT"},"src/interfaces/common/IRegistry.sol":{"keccak256":"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb","urls":["bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014","dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK"],"license":"MIT"},"src/interfaces/common/IStaticDelegateCallable.sol":{"keccak256":"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5","urls":["bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516","dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi"],"license":"MIT"},"src/interfaces/delegator/IBaseDelegator.sol":{"keccak256":"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee","urls":["bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2","dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8"],"license":"MIT"},"src/interfaces/slasher/IBaseSlasher.sol":{"keccak256":"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404","urls":["bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf","dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx"],"license":"MIT"},"src/interfaces/vault/v1.1/IVault.sol":{"keccak256":"0x41c3b7c7955923f29d7a913dcd49a2f7c4c40339eda1cdf675d04bf15168fbd4","urls":["bzz-raw://b7f26841febf819da87037e7f285fb4e9c3a3191d2cc9284d4679bd5f3d5eb79","dweb:/ipfs/QmejKi1svukhK2bwGPvSXLzG4oMKUZo7xEm1gNvuYWNbDK"],"license":"MIT"},"src/interfaces/vault/v1.1/IVaultStorage.sol":{"keccak256":"0x762053f3cc4cb5809c48b846a77b36e697323b2011118c2df8ea2692a02ece5b","urls":["bzz-raw://5282252083722ebdb1e8977ba1fd4860e15acb49bb4ec337632dd14304863b1d","dweb:/ipfs/QmNNBo5HaWBenQZLgnjF3NbxVRupfgYeUMztYYQMpD9VoB"],"license":"MIT"}},"version":1},"id":107} \ No newline at end of file diff --git a/out/VaultTokenized.sol/VaultTokenized.json b/out/VaultTokenized.sol/VaultTokenized.json index 0f7be1f1..3e33936a 100644 --- a/out/VaultTokenized.sol/VaultTokenized.json +++ b/out/VaultTokenized.sol/VaultTokenized.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"delegatorFactory","type":"address","internalType":"address"},{"name":"slasherFactory","type":"address","internalType":"address"},{"name":"vaultFactory","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"DELEGATOR_FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"DEPOSITOR_WHITELIST_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"DEPOSIT_LIMIT_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"DEPOSIT_WHITELIST_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"IS_DEPOSIT_LIMIT_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"SLASHER_FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"activeBalanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"activeBalanceOfAt","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hints","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"activeShares","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"activeSharesAt","inputs":[{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"activeSharesOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"activeSharesOfAt","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"activeStake","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"activeStakeAt","inputs":[{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"burner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"claim","inputs":[{"name":"recipient","type":"address","internalType":"address"},{"name":"epoch","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"claimBatch","inputs":[{"name":"recipient","type":"address","internalType":"address"},{"name":"epochs","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"collateral","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"currentEpoch","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"currentEpochStart","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"delegator","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"deposit","inputs":[{"name":"onBehalfOf","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"depositedAmount","type":"uint256","internalType":"uint256"},{"name":"mintedShares","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"depositLimit","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"depositWhitelist","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"epochAt","inputs":[{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"epochDuration","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"epochDurationInit","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"initialVersion","type":"uint64","internalType":"uint64"},{"name":"owner_","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isDelegatorInitialized","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isDepositLimit","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isDepositorWhitelisted","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isInitialized","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isSlasherInitialized","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isWithdrawalsClaimed","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"migrate","inputs":[{"name":"newVersion","type":"uint64","internalType":"uint64"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"nextEpochStart","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"onSlash","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"slashedAmount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"previousEpochStart","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"redeem","inputs":[{"name":"claimer","type":"address","internalType":"address"},{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"withdrawnAssets","type":"uint256","internalType":"uint256"},{"name":"mintedShares","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDelegator","inputs":[{"name":"delegator_","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDepositLimit","inputs":[{"name":"limit","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDepositWhitelist","inputs":[{"name":"status","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDepositorWhitelistStatus","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"status","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setIsDepositLimit","inputs":[{"name":"status","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSlasher","inputs":[{"name":"slasher_","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"slashableBalanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"slasher","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"staticDelegateCall","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalStake","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"version","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"withdraw","inputs":[{"name":"claimer","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"burnedShares","type":"uint256","internalType":"uint256"},{"name":"mintedShares","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawalShares","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"withdrawalSharesOf","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"withdrawals","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"withdrawalsOf","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Claim","inputs":[{"name":"claimer","type":"address","indexed":true,"internalType":"address"},{"name":"recipient","type":"address","indexed":true,"internalType":"address"},{"name":"epoch","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ClaimBatch","inputs":[{"name":"claimer","type":"address","indexed":true,"internalType":"address"},{"name":"recipient","type":"address","indexed":true,"internalType":"address"},{"name":"epochs","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Deposit","inputs":[{"name":"depositor","type":"address","indexed":true,"internalType":"address"},{"name":"onBehalfOf","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OnSlash","inputs":[{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","indexed":false,"internalType":"uint48"},{"name":"slashedAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SetDelegator","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SetDepositLimit","inputs":[{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SetDepositWhitelist","inputs":[{"name":"status","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"SetDepositorWhitelistStatus","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"status","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"SetIsDepositLimit","inputs":[{"name":"status","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"SetSlasher","inputs":[{"name":"slasher","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Withdraw","inputs":[{"name":"withdrawer","type":"address","indexed":true,"internalType":"address"},{"name":"claimer","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"burnedShares","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"mintedShares","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"AddressInsufficientBalance","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"AlreadyClaimed","inputs":[]},{"type":"error","name":"AlreadyInitialized","inputs":[]},{"type":"error","name":"AlreadySet","inputs":[]},{"type":"error","name":"CheckpointUnorderedInsertion","inputs":[]},{"type":"error","name":"DelegatorAlreadyInitialized","inputs":[]},{"type":"error","name":"DepositLimitReached","inputs":[]},{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]},{"type":"error","name":"FailedInnerCall","inputs":[]},{"type":"error","name":"InsufficientClaim","inputs":[]},{"type":"error","name":"InsufficientDeposit","inputs":[]},{"type":"error","name":"InsufficientRedemption","inputs":[]},{"type":"error","name":"InsufficientWithdrawal","inputs":[]},{"type":"error","name":"InvalidAccount","inputs":[]},{"type":"error","name":"InvalidCaptureEpoch","inputs":[]},{"type":"error","name":"InvalidClaimer","inputs":[]},{"type":"error","name":"InvalidCollateral","inputs":[]},{"type":"error","name":"InvalidDelegator","inputs":[]},{"type":"error","name":"InvalidEpoch","inputs":[]},{"type":"error","name":"InvalidEpochDuration","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"InvalidLengthEpochs","inputs":[]},{"type":"error","name":"InvalidOnBehalfOf","inputs":[]},{"type":"error","name":"InvalidRecipient","inputs":[]},{"type":"error","name":"InvalidSlasher","inputs":[]},{"type":"error","name":"InvalidTimestamp","inputs":[]},{"type":"error","name":"MathOverflowedMulDiv","inputs":[]},{"type":"error","name":"MissingRoles","inputs":[]},{"type":"error","name":"NoPreviousEpoch","inputs":[]},{"type":"error","name":"NotDelegator","inputs":[]},{"type":"error","name":"NotFactory","inputs":[]},{"type":"error","name":"NotInitialized","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"NotSlasher","inputs":[]},{"type":"error","name":"NotWhitelistedDepositor","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]},{"type":"error","name":"SlasherAlreadyInitialized","inputs":[]},{"type":"error","name":"TooMuchRedeem","inputs":[]},{"type":"error","name":"TooMuchWithdraw","inputs":[]}],"bytecode":{"object":"0x60e03461013c57601f61579138819003918201601f1916830192916001600160401b03918285118486101761014057816060928592604097885283398101031261013c5761004c82610154565b916100648461005d60208401610154565b9201610154565b9260805260a0527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff82861c1661012b5780808316036100e7575b50505060c05251615628908161016982396080518181816115820152611b29015260a051818181611c9201526121ef015260c051818181610a9b0152610cc30152f35b6001600160401b0319909116811790915582519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80806100a4565b845163f92ee8a960e01b8152600490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b038216820361013c5756fe60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a7146104ba57806306fdde03146104b5578063095ea7b3146104b05780631415519b146104ab57806318160ddd146103895780631b66c9e1146104a65780631e9a6950146104a157806323b872dd1461049c578063248a9ca31461049757806327810b6e14610492578063281f57521461048d5780632abe3048146104885780632d73c69c146104835780632dd310001461047e5780632f2ff15d14610479578063313ce5671461047457806336568abe1461046f578063392e53cd1461046a5780634105a7dd14610465578063463616711461046057806347e7ef241461045b57806348d3b775146104565780634ff0876a1461045157806350861adc1461044c57806350f22068146104475780635346e34f1461044257806354fd4d501461043d57806357ec83cc1461043857806359f769a9146104335780635cc070761461042e57806361a8c8c4146104295780636da3e06d146104245780636ec1e3f81461041f57806370a08231146103d4578063715018a61461041a5780637278e31c1461041557806373790ab314610410578063766718081461040b578063794b15b7146104065780637953b33b146104015780637c04c80a146103fc578063810da75d146103f757806383cd9cc3146103f257806387df0788146103ed5780638b0e9f3f146103e85780638da5cb5b146103e357806391d14854146103de57806395d89b41146103d95780639d66201b146103d45780639f86fd85146103cf578063a1b12202146103ca578063a217fddf146103c5578063a21a1df9146103c0578063a2861466146103bb578063a3b54172146103b6578063a5d03223146103b1578063a9059cbb146103ac578063aabc2496146103a7578063aad3ec96146103a2578063afba70ad1461039d578063b134427114610398578063bd49c35f14610393578063bdc8144b1461038e578063bfefcd7b14610389578063c31e8dd714610384578063ce9b79301461037f578063d547741f1461037a578063d8dfeb4514610375578063db38871514610370578063dd62ed3e1461036b578063ecf7085814610366578063efb559d614610361578063f2fde38b1461035c578063f3fef3a3146103575763f5e7ee0f14610352575f80fd5b6128a9565b612803565b6127d6565b612687565b61266a565b612633565b6125f9565b6125ce565b612582565b61255a565b6124f0565b610749565b612412565b6123f8565b6123d0565b6123a6565b6122e5565b61212e565b6120f9565b6120b3565b612066565b611f73565b611f39565b611f1f565b611efb565b611e67565b6115d6565b611db5565b611d57565b611d23565b611cc1565b611c7d565b611ac4565b611aab565b611a45565b611a1e565b6119de565b61198c565b61194b565b611677565b611610565b6115b1565b61156d565b61151a565b6114f0565b6114c9565b611391565b61135f565b6112ca565b6112b1565b611254565b611234565b611213565b610f2b565b610f03565b610e68565b610e23565b610dd8565b610d40565b610cf2565b610cae565b610c42565b610a56565b610988565b610960565b610927565b61088a565b6107a5565b61076b565b61070f565b61064d565b61054c565b346105105760203660031901126105105760043563ffffffff60e01b811680910361051057602090637965db0b60e01b81149081156104ff575b506040519015158152f35b6301ffc9a760e01b1490505f6104f4565b5f80fd5b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b906020610549928181520190610514565b90565b34610510575f366003190112610510576040515f5f805160206154d383398151915280549061057a826128d3565b8085529160209160019182811690811561060f57506001146105b7575b6105b3866105a781880382610b86565b60405191829182610538565b0390f35b5f90815293507f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab05b8385106105fc575050505081016020016105a7826105b35f610597565b80548686018401529382019381016105df565b90508695506105b3969350602092506105a794915060ff191682840152151560051b82010192935f610597565b6001600160a01b0381160361051057565b346105105760403660031901126105105760043561066a8161063c565b60243533156106f7576001600160a01b0382169182156106df576106a78291610692336119a6565b9060018060a01b03165f5260205260405f2090565b556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b604051634a1406b160e11b81525f6004820152602490fd5b60405163e602df0560e01b81525f6004820152602490fd5b34610510575f3660031901126105105760206040517fc6aaadd7371d5e8f9ed6849dd66a66573a3ba37167d03f4352c9ba5693678fac8152f35b34610510575f366003190112610510576020610763614003565b604051908152f35b34610510575f3660031901126105105760206040517f9c56d972d63cbb4195b3c1484691dfc220fa96a4c47e7b6613bd82a022029e068152f35b34610510576040366003190112610510576004356107c28161063c565b602435906107ce612e1a565b6001600160a01b0381161561087957335f908152600e602052604090206107f9906140f0565b6140f0565b82116108675761081961080a61407c565b610812614003565b9084614164565b918215610852578261082a92612e49565b9061084160015f805160206155b383398151915255565b604080519182526020820192909252f35b60405160016245ddc760e11b03198152600490fd5b604051632418411f60e11b8152600490fd5b6040516208978560e71b8152600490fd5b34610510576060366003190112610510576004356108a78161063c565b6024356108b38161063c565b604435906108c433610692856119a6565b5492600184016108e5575b6108d99350612fd9565b60405160018152602090f35b828410610901576108fc836108d99503338361413d565b6108cf565b604051637dc7a0d960e11b81523360048201526024810185905260448101849052606490fd5b34610510576020366003190112610510576004355f525f805160206155938339815191526020526020600160405f200154604051908152f35b34610510575f366003190112610510576001546040516001600160a01b039091168152602090f35b34610510575f366003190112610510576109a0612b3f565b8015610a015760015465ffffffffffff8160a01c16915f1981019081116109fc576109ce9160d01c9061293a565b81018091116109fc576109e36105b391613138565b60405165ffffffffffff90911681529081906020820190565b61290b565b604051639fa56a5b60e01b8152600490fd5b600435906001600160401b038216820361051057565b9181601f84011215610510578235916001600160401b038311610510576020838186019501011161051057565b3461051057604036600319011261051057610a6f610a13565b6001600160401b0360243581811161051057610a8f903690600401610a29565b5050610a99612e1a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610b15575f805160206155d3833981519152549060ff8260401c16928315610b05575b505050610af3575f80fd5b60405163f92ee8a960e01b8152600490fd5b81169116101590505f8080610ae8565b604051631966391b60e11b8152600490fd5b65ffffffffffff81160361051057565b634e487b7160e01b5f52604160045260245ffd5b606081019081106001600160401b03821117610b6657604052565b610b37565b604081019081106001600160401b03821117610b6657604052565b90601f801991011681019081106001600160401b03821117610b6657604052565b6040519061016082018281106001600160401b03821117610b6657604052565b60405190610bd482610b6b565b565b6001600160401b038111610b6657601f01601f191660200190565b929192610bfd82610bd6565b91610c0b6040519384610b86565b829481845281830111610510578281602093845f960137010152565b9080601f830112156105105781602061054993359101610bf1565b3461051057606036600319011261051057600435610c5f8161063c565b60243590610c6c82610b27565b604435906001600160401b03821161051057602092610c92610763933690600401610c27565b6001600160a01b039092165f908152600e855260409020613331565b34610510575f366003190112610510576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461051057604036600319011261051057610d3e602435600435610d158261063c565b805f525f80516020615593833981519152602052610d39600160405f200154613508565b613808565b005b34610510575f366003190112610510575f5460405163313ce56760e01b8152906020908290600490829060101c6001600160a01b03165afa8015610dd3575f90610d95575b60405160ff919091168152602090f35b506020813d602011610dcb575b81610daf60209383610b86565b81010312610510575160ff81168103610510576105b390610d85565b3d9150610da2565b612989565b3461051057604036600319011261051057602435610df58161063c565b336001600160a01b03821603610e1157610d3e9060043561383e565b60405163334bd91960e11b8152600490fd5b34610510575f3660031901126105105760ff60025460a01c1680610e4f575b6020906040519015158152f35b5060035460a01c60ff16610e42565b8015150361051057565b3461051057602036600319011261051057600435610e8581610e5e565b610e8d612e1a565b610e956133fd565b5f54901515908160ff8216151514610ef15760ff191660ff8216175f556040519081527f3e12b7b36c75ac9609a3f58609b331210428e1a85909132638955ba0301eec3390602090a160015f805160206155b383398151915255005b60405163a741a04560e01b8152600490fd5b34610510575f36600319011261051057602065ffffffffffff60015460a01c16604051908152f35b3461051057604080600319360112610510576004803591610f4b8361063c565b610f53612e1a565b6001600160a01b0391838316908115611205575f5460ff8116806111ec575b6111dd5783516370a0823160e01b808252308483019081529096602093909160109190911c82169084908490819083010381845afa928315610dd3575f936111ba575b50610fc790602435903090339061453d565b5f5486519788523085890190815290979184918391908290819060200103918b60101c165afa908115610dd357611006935f9261118d575b505061292d565b93841561117e5760081c60ff1680611169575b61115b5750906105b3916110ca61102e61407c565b9561107761103a614003565b6110626110488a838b614164565b9961105c8a61105642613138565b9261295b565b90613c9e565b50506110718961105642613138565b90613d7e565b50506001600160a01b0381165f908152600e60205260409020906110c4886110bf6107f46110a442613138565b6001600160a01b039095165f908152600e6020526040902090565b61295b565b91613e5a565b5050815184815260208101869052819033907fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d790604090a361111860015f805160206155b383398151915255565b81518581525f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602090a35191825260208201929092529081906040820190565b8251632484557960e01b8152fd5b50611176846110bf61407c565b815410611019565b50825163070f6eed60e11b8152fd5b6111ac9250803d106111b3575b6111a48183610b86565b8101906138d0565b5f80610fff565b503d61119a565b610fc79193506111d690853d87116111b3576111a48183610b86565b9290610fb5565b5082516304f63b8560e01b8152fd5b50335f9081526005602052604090205460ff1615610f72565b8251630d534ce360e11b8152fd5b34610510575f36600319011261051057602060ff5f54166040519015158152f35b34610510575f36600319011261051057602060015460d01c604051908152f35b34610510575f36600319011261051057602060ff60025460a01c166040519015158152f35b9060406003198301126105105760043561129281610b27565b91602435906001600160401b0382116105105761054991600401610c27565b346105105760206107636112c436611279565b9061319b565b34610510576020366003190112610510576004356112e781610e5e565b6112ef612e1a565b6112f761345a565b5f54901515908160ff8260081c16151514610ef15761ff001916600882901b61ff0016175f556040519081527ffa7a25a0b611d4ba3c0ea990e90dc23d484a5dd7a1be4733fef2946ba74530c690602090a1610d3e60015f805160206155b383398151915255565b34610510575f3660031901126105105760206001600160401b035f805160206155d38339815191525416604051908152f35b34610510576060366003190112610510576113aa610a13565b6024356113b68161063c565b6001600160401b0391604435838111610510576113d7903690600401610a29565b5f805160206155d38339815191529491855494838616806114b85760ff8760401c169081156114ab575b50610af3577fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2966114a69661146e958716906001600160401b0319161790556114695f805160206155d3833981519152600160401b68ff000000000000000019825416179055565b612994565b5f805160206155d3833981519152805468ff0000000000000000191690556040516001600160401b0390911681529081906020820190565b0390a1005b905084861611155f611401565b60405162dc149f60e41b8152600490fd5b346105105760203660031901126105105760206107636004356114eb8161063c565b612aa8565b34610510576020366003190112610510576004355f526006602052602060405f2054604051908152f35b34610510575f3660031901126105105760015465ffffffffffff611550818360a01c1692611546612b3f565b9060d01c9061293a565b82018092116109fc57611564602092613138565b60405191168152f35b34610510575f366003190112610510576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610510575f36600319011261051057602060ff60035460a01c166040519015158152f35b34610510576020366003190112610510576004356115f38161063c565b60018060a01b03165f52600e602052602061076360405f206140f0565b34610510575f36600319011261051057611628613abc565b5f8051602061553383398151915280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346105105760403660031901126105105760043560243561169781610b27565b61169f612e1a565b6003546116bc906001600160a01b03165b6001600160a01b031690565b3303611939576116ca612b3f565b906116d481612b73565b9082151580611928575b801561191f575b61190d576105b3937ff9d090c096f71cd1659861a9ce5b6f384bceb4e2fa4e4a19edf6489a9b8d56c79261171761407c565b946117326117248261294d565b5f52600660205260405f2090565b54908281036118265750611746818761295b565b6117508185613af4565b9687806117df575b50505050505b836117ab575b6040805191825265ffffffffffff929092166020820152908101839052606090a161179b60015f805160206155b383398151915255565b6040519081529081906020820190565b5f546117da9085906117c89060101c6001600160a01b03166116b0565b6001546001600160a01b031690613f18565b611764565b61181b93610fff8361105c6118056117fe611724986118159888613b10565b809661292d565b9461180f42613138565b9261292d565b9261294d565b555f80808087611758565b915061183a825f52600660205260405f2090565b549061184a816110bf848a61295b565b906118558286613af4565b9788611866575b505050505061175e565b6118db938361188e9361189b8c6118966118846118cc998884613b10565b9788958584613b10565b94859261292d565b61292d565b938484106118e6575b610fff9061105c6118ba95969761180f42613138565b6118c66117248761294d565b5561292d565b915f52600660205260405f2090565b555f8080808061185c565b91611902610fff916118fc866118ba979861292d565b9061295b565b8594509290506118a4565b604051635e18d2a560e01b8152600490fd5b508282116116e5565b506119328361291f565b82106116de565b60405163dabc4ad960e01b8152600490fd5b34610510575f3660031901126105105760015465ffffffffffff808260a01c1691611974612b3f565b600181018091116109fc576115509160d01c9061293a565b34610510575f366003190112610510576020610763612b3f565b6001600160a01b03165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020526040902090565b34610510576020366003190112610510576004356119fb8161063c565b60018060a01b03165f526005602052602060ff60405f2054166040519015158152f35b34610510576020366003190112610510576020610763600435611a4081610b27565b612b73565b3461051057604036600319011261051057600435611a628161063c565b6024356001600160401b038082116105105736602383011215610510578160040135908111610510573660248260051b84010111610510576105b392602461179b930190612bae565b34610510576020610763611abe36611279565b9061327c565b3461051057602080600319360112610510576004803590611ae48261063c565b611aec612e1a565b60025460a01c60ff16611c6e576040516302910f8b60e31b81526001600160a01b03838116838301908152909491908290829081906020010381887f0000000000000000000000000000000000000000000000000000000000000000165afa908115610dd3575f91611c41575b5015611c315760405163fbfa77cf60e01b8152838516949082818581895afa928315610dd3575f93611c02575b505030911603611bf35750600280546001600160a01b03929092166001600160a81b031990921691909117600160a01b1790557fdb2160616f776a37b24808115554e79439bf26cccbbd4438190cc6d28e80ecd15f80a2610d3e60015f805160206155b383398151915255565b60405163b9f0f17160e01b8152fd5b611c22929350803d10611c2a575b611c1a8183610b86565b810190612d07565b905f80611b86565b503d611c10565b506040516324e5af8d60e21b8152fd5b611c619150823d8411611c67575b611c598183610b86565b810190612ce7565b5f611b59565b503d611c4f565b604051631380833b60e01b8152fd5b34610510575f366003190112610510576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610510575f36600319011261051057611cd9612b3f565b611ce161407c565b90805f52600660205260405f205482018092116109fc57600181018091116109fc575f52600660205260405f205481018091116109fc57602090604051908152f35b34610510575f366003190112610510575f80516020615533833981519152546040516001600160a01b039091168152602090f35b3461051057604036600319011261051057602060ff611da9602435611d7b8161063c565b6004355f525f80516020615593833981519152845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b34610510575f366003190112610510576040515f5f80516020615513833981519152805490611de3826128d3565b8085529160209160019182811690811561060f5750600114611e0f576105b3866105a781880382610b86565b5f90815293507f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa5b838510611e54575050505081016020016105a7826105b35f610597565b8054868601840152938201938101611e37565b3461051057604036600319011261051057600435611e848161063c565b6024356001600160401b038111610510575f91611ea683923690600401610a29565b90816040519283928337810184815203915af4611ef3611ec4612d1c565b91611ee5604051938492151560208401526040808401526060830190610514565b03601f198101835282610b86565b805190602001fd5b34610510575f36600319011261051057602060ff5f5460081c166040519015158152f35b34610510575f3660031901126105105760206040515f8152f35b34610510575f3660031901126105105760206040517f4a634bc14d77baf979756509ef4298c6f6318af357828612545267ee2eb792338152f35b3461051057604036600319011261051057600435611f908161063c565b602435611f9c81610e5e565b611fa4612e1a565b611fac6134b1565b6001600160a01b038216918215612054575f8381526005602052604090205460ff16151582151514610ef1576001600160a01b03165f9081526005602052604090207ff991b1ecfb5115cbb36a2b2e2240c058406d2acc2fcc6e9e2dc99d845ff70a629161203b91612029908260ff801983541691151516179055565b60405190151581529081906020820190565b0390a2610d3e60015f805160206155b383398151915255565b604051630da30f6560e31b8152600490fd5b346105105760403660031901126105105760206120aa6024356120888161063c565b6004355f526008835260405f209060018060a01b03165f5260205260405f2090565b54604051908152f35b3461051057604036600319011261051057602060ff611da96024356120d78161063c565b6004355f526009845260405f209060018060a01b03165f5260205260405f2090565b34610510576040366003190112610510576121236004356121198161063c565b6024359033612fd9565b602060405160018152f35b346105105760208060031936011261051057600480359061214e8261063c565b612156612e1a565b60035460a01c60ff166122d6576001600160a01b038281169390846121c4575b6003805460ff60a01b1916600160a01b179055847fe7e4c932e03abddfe20f83af42c33627e816115c7ec2b168441f65dc14bfc3ba5f80a2610d3e60015f805160206155b383398151915255565b6040516302910f8b60e31b81526001600160a01b0385168482019081528390829081906020010381857f0000000000000000000000000000000000000000000000000000000000000000165afa908115610dd3575f916122b9575b50156122a85760405163fbfa77cf60e01b815282818581895afa928315610dd3575f93612289575b50503091160361227a5750600380546001600160a01b0319166001600160a01b039092169190911790555f808080612176565b604051633f3e089160e21b8152fd5b6122a0929350803d10611c2a57611c1a8183610b86565b905f80612247565b60405163dabc4ad960e01b81528390fd5b6122d09150833d8511611c6757611c598183610b86565b5f61221f565b60405163703fe2e560e01b8152fd5b34610510576040366003190112610510576004356123028161063c565b6024359061230e612e1a565b6001600160a01b03918183169081156123945761233f6105b39461233183613f67565b9485915f5460101c16613f18565b604080519182526020820184905233917f865ca08d59f5cb456e85cd2f7ef63664ea4f73327414e9d8152c4158b0e946459190a360015f805160206155b3833981519152556040519081529081906020820190565b604051634e46966960e11b8152600490fd5b34610510576020366003190112610510576004355f526007602052602060405f2054604051908152f35b34610510575f366003190112610510576003546040516001600160a01b039091168152602090f35b34610510575f36600319011261051057602061076361407c565b346105105760203660031901126105105760043561242e612e1a565b335f9081527f2d4ccbfe9f7672a6f2537c1e5bce6adacb73706879154bbab6ce096012d6721660205260409020547f4a634bc14d77baf979756509ef4298c6f6318af357828612545267ee2eb792339060ff16156124d257508060045414610ef1576020817f854df3eb95564502c8bc871ebdd15310ee26270f955f6c6bd8cea68e75045bc092600455604051908152a160015f805160206155b383398151915255005b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b346105105760203660031901126105105760043561250d8161063c565b612515612b3f565b61251e82612aa8565b916125298183612dbc565b83018093116109fc57600182018092116109fc5761254691612dbc565b81018091116109fc57602090604051908152f35b34610510575f366003190112610510576002546040516001600160a01b039091168152602090f35b3461051057604036600319011261051057610d3e6024356004356125a58261063c565b805f525f805160206155938339815191526020526125c9600160405f200154613508565b61383e565b34610510575f366003190112610510575f5460405160109190911c6001600160a01b03168152602090f35b34610510575f3660031901126105105760206040517fbae4ee3de6c709ff9a002e774c5b78cb381560b219213c88ae0f1e207c03c0238152f35b346105105760403660031901126105105760206120aa6004356126558161063c565b610692602435916126658361063c565b6119a6565b34610510575f366003190112610510576020600454604051908152f35b34610510576060366003190112610510576004356126a48161063c565b602435906126b182610b27565b6001600160401b0391604435838111610510576126d2903690600401610a29565b909260409384516126e281610b4b565b60608152606060208201526060868201529280612741575b6105b386612732878761272c6127138984845191612968565b928561272360208501518361327c565b9301519061319b565b91614164565b90519081529081906020820190565b8101939250602081850312610510578035908682116105105701926060848203126105105784519561277287610b4b565b84358181116105105782612787918701610c27565b8752602085013581811161051057826127a1918701610c27565b602088015285850135908111610510576105b3966127ca61272c93612713936127329801610c27565b878201529394506126fa565b3461051057602036600319011261051057610d3e6004356127f68161063c565b6127fe613abc565b612d4b565b34610510576040366003190112610510576004356128208161063c565b60243561282b612e1a565b6001600160a01b038216156108795780156128975761285a61284b614003565b61285361407c565b9083614c31565b335f908152600e60205260409020909290612874906140f0565b83116128855761082a918391612e49565b6040516321727a3760e11b8152600490fd5b604051636c6c627d60e11b8152600490fd5b346105105760403660031901126105105760206107636024356128cb8161063c565b600435612dbc565b90600182811c92168015612901575b60208310146128ed57565b634e487b7160e01b5f52602260045260245ffd5b91607f16916128e2565b634e487b7160e01b5f52601160045260245ffd5b5f198101919082116109fc57565b919082039182116109fc57565b818102929181159184041417156109fc57565b90600182018092116109fc57565b919082018092116109fc57565b6001600160a01b03165f908152600e60205260409020610549929190613331565b6040513d5f823e3d90fd5b916129d1926129a1614595565b6129a9614595565b60015f805160206155b3833981519152556001600160a01b038116612a8e575b503691610bf1565b80516020908201818101828483031261051057828401516001600160401b039485821161051057019283926101a093849103126105105760405193612a1585610b4b565b612a21838383016138ea565b8552610180810151868111610510578383612a3e928401016139b3565b9382860194855281015195861161051057612a66612a859383610bd498612a809401016139b3565b94604081019586525191611ee560405193849283016139f9565b6145d8565b51905190614994565b612aa290612a9a614595565b6127fe614595565b5f6129c9565b6001600160a01b03165f908152600e60205260409020612ac7906140f0565b612acf61407c565b612ad7614003565b90600181018091116109fc57600182018092116109fc5761054992613b10565b65ffffffffffff91821690821603919082116109fc57565b634e487b7160e01b5f52601260045260245ffd5b9065ffffffffffff809116918215612b3a57160490565b612b0f565b612b4842613138565b612b6f600154612b6565ffffffffffff93848360a01c1690612af7565b9060d01c90612b23565b1690565b6001549065ffffffffffff91828160a01c16918284821610612b9c57612b6f92612b6591612af7565b60405163b7d0949760e01b8152600490fd5b90612bb7612e1a565b5f926001600160a01b038316928315612394578115612c6f575f5b828110612c4d57505f547f326b6aff1cd2fb1c8234de4f9dcfb9047c5c36eb9ef2eb34af5121e969a75d279286929091612c22918491612c1d9060101c6001600160a01b03166116b0565b613f18565b612c33604051928392339684612caa565b0390a390610bd460015f805160206155b383398151915255565b94612c686001916118fc612c62898789612c95565b35613f67565b9501612bd2565b60405163edf3b93360e01b8152600490fd5b634e487b7160e01b5f52603260045260245ffd5b9190811015612ca55760051b0190565b612c81565b604080825281018390529392916001600160fb1b0381116105105760209160609160051b809183880137850101930152565b5190610bd482610e5e565b90816020910312610510575161054981610e5e565b5190610bd48261063c565b9081602091031261051057516105498161063c565b3d15612d46573d90612d2d82610bd6565b91612d3b6040519384610b86565b82523d5f602084013e565b606090565b6001600160a01b03908116908115612da4575f8051602061553383398151915280546001600160a01b031981168417909155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b604051631e4fbdf760e01b81525f6004820152602490fd5b90612de290825f52600860205260405f209060018060a01b03165f5260205260405f2090565b54905f52600660205260405f2054600760205260405f205490600181018091116109fc57600182018092116109fc5761054992613b10565b5f805160206155b38339815191526002815414612e375760029055565b604051633ee5aeb560e01b8152600490fd5b335f908152600e6020526040812093949390929190612e8890612e6b42613138565b335f908152600e602052604090206110c4908990611896906140f0565b5050612ea2612e9642613138565b61107187611896614003565b5050612ebc612eb042613138565b61105c8461189661407c565b505081612f4e82610692612ed6612ed1612b3f565b61294d565b612f2d612eeb825f52600660205260405f2090565b54612efe835f52600760205260405f2090565b54612f15612f0d83838b614164565b9a8b9361295b565b612f27855f52600660205260405f2090565b5561295b565b612f3f825f52600760205260405f2090565b555f52600860205260405f2090565b612f5984825461295b565b9055604080519182526020820187905281018390526001600160a01b03919091169033907febff2602b3f468259e1e99f613fed6691f3a6526effe6ef3e768ba7ae7a36c4f90606090a36040519384529233907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9080602081015b0390a3565b916001600160a01b0380841692908315613120578116938415613108576001600160a01b0381165f908152600e60205260409020613016906140f0565b908382106130d657612fd4926130787fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef95936130656130c49460018060a01b03165f52600e60205260405f2090565b908561307042613138565b910391613e5a565b50506001600160a01b0381165f908152600e6020526040902090836130bd6107f46130a242613138565b6001600160a01b039094165f908152600e6020526040902090565b0191613e5a565b50506040519081529081906020820190565b60405163391434e360e21b81526001600160a01b03919091166004820152602481019190915260448101839052606490fd5b60405163ec442f0560e01b81525f6004820152602490fd5b604051634b637e8f60e11b81525f6004820152602490fd5b65ffffffffffff9081811161314b571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b90816020910312610510575163ffffffff811681036105105790565b90600163ffffffff809316019182116109fc57565b9080511561327257806020806131b69351830101910161316a565b6131bf816143d5565b906131d0825165ffffffffffff1690565b9065ffffffffffff80851692168281146132665782119182613206575b50506131fd575061054990614185565b60209150015190565b909150613214600a5461291f565b63ffffffff83161491821561322d575b50505f806131ed565b61325e91925061324761324261325392613186565b6143d5565b5165ffffffffffff1690565b65ffffffffffff1690565b115f80613224565b50505060209150015190565b5061054990614185565b9080511561332757806020806132979351830101910161316a565b6132a08161445a565b906132b1825165ffffffffffff1690565b9065ffffffffffff808516921682811461326657821191826132de575b50506131fd57506105499061424c565b9091506132ec600c5461291f565b63ffffffff831614918215613305575b50505f806132ce565b61331f91925061324761331a61325392613186565b61445a565b115f806132fc565b506105499061424c565b918051156133f3578060208061334c9351830101910161316a565b9161335783826144d5565b92613368845165ffffffffffff1690565b9065ffffffffffff80851692168281146133e7578211918261339e575b505061339557610549925061430c565b50506020015190565b9091506133ab835461291f565b63ffffffff8316149182156133c4575b50505f80613385565b6133df9192506132476133d961325392613186565b856144d5565b115f806133bb565b50505050506020015190565b506105499161430c565b335f9081527f03b26b53c87faa1058f30bb5d2fee64f717719a0d9b7e4f4df027aa5e9b6ed69602052604090207fbae4ee3de6c709ff9a002e774c5b78cb381560b219213c88ae0f1e207c03c0239060ff905b5416156124d25750565b335f9081527fe41986b390c4ce6791b87f7423b5fab7a81a0e6d89660b6264f697d008b2243a602052604090207fc6aaadd7371d5e8f9ed6849dd66a66573a3ba37167d03f4352c9ba5693678fac9060ff90613450565b335f9081527f0287ab4cb376ea253d7b2ce0c2cbf458f7deae9458470d74afdfbbee484e9540602052604090207f9c56d972d63cbb4195b3c1484691dfc220fa96a4c47e7b6613bd82a022029e069060ff90613450565b5f8181525f8051602061559383398151915260209081526040808320338452909152902060ff90613450565b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260409020545f805160206155938339815191529060ff166135df575f808052602091825260408082206001600160a01b038516835290925220805460ff1916600117905533906001600160a01b03165f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b50505f90565b6001600160a01b0381165f9081527f03b26b53c87faa1058f30bb5d2fee64f717719a0d9b7e4f4df027aa5e9b6ed69602052604090207fbae4ee3de6c709ff9a002e774c5b78cb381560b219213c88ae0f1e207c03c023905f805160206155938339815191529060ff905b54166136b4575f828152602091825260408082206001600160a01b038616835290925220805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b5050505f90565b6001600160a01b0381165f9081527f0287ab4cb376ea253d7b2ce0c2cbf458f7deae9458470d74afdfbbee484e9540602052604090207f9c56d972d63cbb4195b3c1484691dfc220fa96a4c47e7b6613bd82a022029e06905f805160206155938339815191529060ff90613650565b6001600160a01b0381165f9081527fe41986b390c4ce6791b87f7423b5fab7a81a0e6d89660b6264f697d008b2243a602052604090207fc6aaadd7371d5e8f9ed6849dd66a66573a3ba37167d03f4352c9ba5693678fac905f805160206155938339815191529060ff90613650565b6001600160a01b0381165f9081527f2d4ccbfe9f7672a6f2537c1e5bce6adacb73706879154bbab6ce096012d67216602052604090207f4a634bc14d77baf979756509ef4298c6f6318af357828612545267ee2eb79233905f805160206155938339815191529060ff90613650565b5f8181525f80516020615593833981519152602081815260408084206001600160a01b038716855290915290912060ff90613650565b5f8181525f80516020615593833981519152602081815260408084206001600160a01b03871685529091529091205460ff16156136b4575f828152602091825260408082206001600160a01b038616835290925220805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b90816020910312610510575190565b5190610bd482610b27565b919082610160910312610510576138ff610ba7565b9161390981612cfc565b835261391760208201612cfc565b6020840152613928604082016138df565b604084015261393960608201612cdc565b606084015261394a60808201612cdc565b608084015260a081015160a084015261396560c08201612cfc565b60c084015261397660e08201612cfc565b60e0840152610100613989818301612cfc565b9084015261012061399b818301612cfc565b908401526139ad610140809201612cfc565b90830152565b81601f82011215610510578051906139ca82610bd6565b926139d86040519485610b86565b8284526020838301011161051057815f9260208093018386015e8301015290565b81516001600160a01b0316815261016081019291610bd491906020818101516001600160a01b03169083015260408181015165ffffffffffff169083015260608181015115159083015260808181015115159083015260a0818101519083015260c0808201516001600160a01b03169083015260e0818101516001600160a01b031690830152610100818101516001600160a01b031690830152610120818101516001600160a01b031690830152610140908101516001600160a01b0316910152565b5f80516020615533833981519152546001600160a01b03163303613adc57565b60405163118cdaa760e01b8152336004820152602490fd5b9080821015613b01575090565b905090565b8115612b3a570490565b9091828202915f1984820993838086109503948086039514613b955784831115613b8357829109815f038216809204600280826003021880830282030280830282030280830282030280830282030280830282030280920290030293600183805f03040190848311900302920304170290565b60405163227bc15360e01b8152600490fd5b5050906105499250613b06565b600b54811015612ca557600b5f525f8051602061557383398151915201905f90565b600d54811015612ca557600d5f525f8051602061555383398151915201905f90565b8054821015612ca5575f5260205f2001905f90565b600d54600160401b811015610b66576001810180600d55811015612ca557600d5f525f805160206155538339815191520155565b600b54600160401b811015610b66576001810180600b55811015612ca557600b5f525f805160206155738339815191520155565b90815491600160401b831015610b665782613c86916001610bd495018155613be6565b90919082549060031b91821b915f19901b1916179055565b919091600d9081548015613d49575b50613cb6614add565b50929091815492613cc561407c565b9481613d34575b5015613d1157505f1982018281116109fc5781541115612ca5575f527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb4018390559190565b613d25926001600160d01b03169150614f65565b5050613d3083613bfb565b9190565b65ffffffffffff83811691161490505f613ccc565b600160401b811015610b665760018101808455811015612ca5575f908382525f8051602061555383398151915201555f613cad565b919091600b9081548015613e25575b50613d96614b48565b50929091815492613da5614003565b9481613e10575b5015613df157505f1982018281116109fc5781541115612ca5575f527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db8018390559190565b613e05926001600160d01b03169150615065565b5050613d3083613c2f565b65ffffffffffff83811691161490505f613dac565b600160401b811015610b665760018101808455811015612ca5575f908382525f8051602061557383398151915201555f613d8d565b90929192600182019081548015613ee8575b5084613e7784614b92565b50949092845493613e87836140f0565b9681613ed3575b5015613eb0575050505f1981019081116109fc57613c868591613d3093613be6565b613d30949293613ecc926001600160d01b03909116919061510f565b5050613c63565b65ffffffffffff83811691161490505f613e8e565b600160401b811015610b6657806001613f049201845583613be6565b8154905f199060031b1b191690555f613e6c565b60405163a9059cbb60e01b60208201526001600160a01b03909216602483015260448083019390935291815260808101916001600160401b03831182841017610b6657610bd492604052614bc0565b90613f70612b3f565b821015613ff1575f82815260096020908152604080832033845290915290205460ff16613fdf57613fa13383612dbc565b918215613fcd575f9081526009602090815260408083203384529091529020805460ff19166001179055565b6040516366c0bcbf60e11b8152600490fd5b604051630c8d9eab60e31b8152600490fd5b60405163d5b25b6360e01b8152600490fd5b600a548061404357505f5b6001600160d01b0381161561403e57600b54811015612ca557600b5f525f80516020615573833981519152015490565b505f90565b805f198101116109fc57600a5f527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a7015460301c61400e565b600c54806140b757505f5b6001600160d01b0381161561403e57600d54811015612ca557600d5f525f80516020615553833981519152015490565b805f198101116109fc57600c5f527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c6015460301c614087565b80548061411f57505f5b6001600160d01b038116156135df5760016141159201613be6565b90549060031b1c90565b5f199080828101116109fc57825f5260205f2001015460301c6140fa565b906001600160a01b03808316156106f7578116156106df57610692614161926119a6565b55565b9190600181018091116109fc57600182018092116109fc5761054992613b10565b600a54905f8291600584116141f3575b61419f935061531b565b806141c257505f5b6001600160d01b0381161561403e5761411561054991613ba2565b6141e76141d16141ee9261291f565b600a5f525f805160206154f38339815191520190565b5460301c90565b6141a7565b91926141fe816151e2565b81039081116109fc5761419f93600a5f5265ffffffffffff80835f805160206154f3833981519152015416908516105f1461423a575091614195565b9291506142469061294d565b90614195565b600c54905f8291600584116142b3575b6142669350615384565b8061428957505f5b6001600160d01b0381161561403e5761411561054991613bc4565b6141e76142986142ae9261291f565b600c5f525f805160206154b38339815191520190565b61426e565b91926142be816151e2565b81039081116109fc5761426693600c5f5265ffffffffffff80835f805160206154b3833981519152015416908516105f146142fa57509161425c565b9291506143069061294d565b9061425c565b908154905f82916005841161436f575b6143279350846153ed565b8061434f57505f905b6001600160d01b038216156135df576105499160016141159201613be6565b6141e761435e6143699261291f565b835f5260205f200190565b90614330565b919261437a816151e2565b81039081116109fc5761432793855f5265ffffffffffff808360205f20015416908516105f146143ab57509161431c565b9291506143b79061294d565b9061431c565b604051906143ca82610b6b565b5f6020838281520152565b6143dd6143bd565b506143e66143bd565b50600a54811015612ca55761440d90600a5f525f805160206154f383398151915201614ab9565b65ffffffffffff81511690602060018060d01b0391015116600b54811015612ca557600b5f525f8051602061557383398151915201546040519161445083610b6b565b8252602082015290565b6144626143bd565b5061446b6143bd565b50600c54811015612ca55761449290600c5f525f805160206154b383398151915201614ab9565b65ffffffffffff81511690602060018060d01b0391015116600d54811015612ca557600d5f525f8051602061555383398151915201546040519161445083610b6b565b906144fe6144f861451f926144e86143bd565b506144f16143bd565b5084613be6565b50614ab9565b91600165ffffffffffff845116936020828060d01b03910151169101613be6565b9054906040519261452f84610b6b565b835260031b1c602082015290565b6040516323b872dd60e01b60208201526001600160a01b03928316602482015292909116604483015260648083019390935291815260a08101918183106001600160401b03841117610b6657610bd492604052614bc0565b60ff5f805160206155d38339815191525460401c16156145b157565b604051631afcd79f60e31b8152600490fd5b906101608282031261051057610549916138ea565b6145eb90602080825183010191016145c3565b80516001600160a01b03919082161561498257604080820165ffffffffffff61461a825165ffffffffffff1690565b16156149715760c08301805190929061463b906001600160a01b03166116b0565b15614822575b509161476e6101409261470d6146e86147cc9661468f614667875160018060a01b031690565b5f805462010000600160b01b03191660109290921b62010000600160b01b0316919091179055565b6020860151600180546001600160a01b0319166001600160a01b039092169190911790556132476146bf42613138565b6001805465ffffffffffff60a01b191660a09290921b65ffffffffffff60a01b16919091179055565b600180546001600160d01b031660d09290921b6001600160d01b031916919091179055565b61472d61471d6060850151151590565b60ff80195f541691151516175f55565b61475461473d6080850151151590565b61ff005f5491151560081b169061ff001916175f55565b61476160a0840151600455565b516001600160a01b031690565b848116614812575b5060e08101516001600160a01b0316848116614802575b506101008101516001600160a01b03168481166147f2575b506101208101516001600160a01b03168481166147e2575b5001516001600160a01b031690565b9081166147d65750565b6147df90613799565b50565b6147eb9061372a565b505f6147bd565b6147fb906136bb565b505f6147a5565b61480b906135e5565b505f61478d565b61481b90613534565b505f614776565b60e0840151614839906001600160a01b03166116b0565b1561490e575b610120840151614857906001600160a01b03166116b0565b614641576080840151156148c45760a084015115806148a5575b61489557509161476e6101409261470d6146e86147cc965b94965050509250614641565b5163183c854560e21b8152600490fd5b506101408401516148be906001600160a01b03166116b0565b15614871565b60a0840151158015906148ee575b61489557509161476e6101409261470d6146e86147cc96614889565b50610140840151614907906001600160a01b03166116b0565b15156148d2565b60608401511561494457610100840151614930906001600160a01b03166116b0565b61483f575163183c854560e21b8152600490fd5b61010084015161495c906001600160a01b03166116b0565b1561483f575163183c854560e21b8152600490fd5b81516368f5f8f160e11b8152600490fd5b6040516368f7a67560e11b8152600490fd5b919061499e614595565b6149a6614595565b82516001600160401b038111610b66575f805160206154d3833981519152906149d8816149d384546128d3565b614c71565b602080601f8311600114614a1f57509080614a0d92610bd496975f92614a14575b50508160011b915f199060031b1c19161790565b9055614d63565b015190505f806149f9565b90601f19831696614a5d5f805160206154d38339815191525f527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab090565b925f905b898210614aa157505090839291600194610bd4989910614a89575b505050811b019055614d63565b01515f1960f88460031b161c191690555f8080614a7c565b80600185968294968601518155019501930190614a61565b90604051614ac681610b6b565b915465ffffffffffff8116835260301c6020830152565b600c5480614aee57505f905f905f90565b805f198101116109fc577fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c6614b2791600c5f5201614ab9565b9065ffffffffffff82511691602060018060d01b0391015116906001929190565b600a5480614b5957505f905f905f90565b805f198101116109fc577fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a7614b2791600a5f5201614ab9565b805480614ba35750505f905f905f90565b5f199080828101116109fc57614b27925f5260205f200101614ab9565b5f80614be89260018060a01b03169360208151910182865af1614be1612d1c565b908361544f565b8051908115159182614c16575b5050614bfe5750565b60249060405190635274afe760e01b82526004820152fd5b614c299250602080918301019101612ce7565b155f80614bf5565b9190600181018091116109fc57600182018092116109fc57614c54828285613b10565b928215612b3a5709614c635790565b600181018091116109fc5790565b601f8111614c7d575050565b5f805160206154d38339815191525f527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0906020601f840160051c83019310614ce0575b601f0160051c01905b818110614cd5575050565b5f8155600101614cca565b9091508190614cc1565b601f8111614cf6575050565b5f805160206155138339815191525f527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa906020601f840160051c83019310614d59575b601f0160051c01905b818110614d4e575050565b5f8155600101614d43565b9091508190614d3a565b9081516001600160401b038111610b66575f8051602061551383398151915290614d9681614d9184546128d3565b614cea565b602080601f8311600114614dcb57508190614dc79394955f92614a145750508160011b915f199060031b1c19161790565b9055565b90601f19831695614e095f805160206155138339815191525f527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa90565b925f905b888210614e4457505083600195969710614e2c575b505050811b019055565b01515f1960f88460031b161c191690555f8080614e22565b80600185968294968601518155019501930190614e0d565b600c5490600160401b821015610b66576001820180600c55821015612ca557600c5f52805160209091015160301b65ffffffffffff191665ffffffffffff91909116175f805160206154b383398151915290910155565b600a5490600160401b821015610b66576001820180600a55821015612ca557600a5f52805160209091015160301b65ffffffffffff191665ffffffffffff91909116175f805160206154f383398151915290910155565b8054600160401b811015610b6657614f2791600182018155613be6565b614f5257815160209092015160301b65ffffffffffff191665ffffffffffff92909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b600c5491929190811561503c57614f86614f816142988461291f565b614ab9565b805165ffffffffffff838116949116841061502a5785602093613d3095614fb6613253865165ffffffffffff1690565b03614ff25750614fcb614298614fe49361291f565b9065ffffffffffff82549181199060301b169116179055565b01516001600160d01b031690565b90506150259150615012615004610bc7565b65ffffffffffff9092168252565b6001600160d01b03871681850152614e5c565b614fe4565b604051632520601d60e01b8152600490fd5b615060915061504c615004610bc7565b6001600160d01b0384166020820152614e5c565b5f9190565b600a549192919081156150eb57615081614f816141d18461291f565b805165ffffffffffff838116949116841061502a5785602093613d30956150b1613253865165ffffffffffff1690565b036150c65750614fcb6141d1614fe49361291f565b905061502591506150d8615004610bc7565b6001600160d01b03871681850152614eb3565b61506091506150fb615004610bc7565b6001600160d01b0384166020820152614eb3565b8054929392919082156151be5761512b614f8161435e8561291f565b9061513c825165ffffffffffff1690565b65ffffffffffff8481169116811061502a57613d3094602094889261516a613253875165ffffffffffff1690565b0361518b5750614fe492615180614fcb9261291f565b905f5260205f200190565b915050615025916151ab61519d610bc7565b65ffffffffffff9093168352565b6001600160d01b03881682860152614f0a565b61506092506151ce61519d610bc7565b6001600160d01b0385166020830152614f0a565b801561403e57806152b46152ad6152a361529961528f61528561527b61527160016105499a5f908b60801c8061530f575b508060401c80615302575b508060201c806152f5575b508060101c806152e8575b508060081c806152db575b508060041c806152ce575b508060021c806152c1575b50821c6152ba575b811c1b61526a818b613b06565b0160011c90565b61526a818a613b06565b61526a8189613b06565b61526a8188613b06565b61526a8187613b06565b61526a8186613b06565b61526a8185613b06565b8092613b06565b90613af4565b810161525d565b600291509101905f615255565b600491509101905f61524a565b600891509101905f61523f565b601091509101905f615234565b602091509101905f615229565b604091509101905f61521e565b9150506080905f615213565b905b82811061532957505090565b9091808216906001818418811c83018093116109fc57600a5f5265ffffffffffff80845f805160206154f3833981519152015416908616105f14615371575050915b9061531d565b9093925081018091116109fc579061536b565b905b82811061539257505090565b9091808216906001818418811c83018093116109fc57600c5f5265ffffffffffff80845f805160206154b3833981519152015416908616105f146153da575050915b90615386565b9093925081018091116109fc57906153d4565b91905b8382106153fd5750505090565b909192808316906001818518811c83018093116109fc57855f5265ffffffffffff808460205f20015416908516105f1461543c575050925b91906153f0565b9094935081018091116109fc5791615435565b90615476575080511561546457805190602001fd5b604051630a12f52160e11b8152600490fd5b815115806154a9575b615487575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b1561547f56fedf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c752c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace03c65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a852c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace049016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300d7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db902dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a264697066735822122061d21157d87e9623ddeb51ba19f8345edd1a00f8105d70e5232e62df8a9f97ed64736f6c63430008190033","sourceMap":"652:3172:97:-:0;;;;;;;;;;;;;-1:-1:-1;;652:3172:97;;;;;-1:-1:-1;;;;;652:3172:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;3173:36:96;;;3219:32;;8837:64:25;652:3172:97;;;;;;;;;7896:76:25;;652:3172:97;;;;7985:34:25;7981:146;;-1:-1:-1;927:17:71;;;;;652:3172:97;;;;;;;3173:36:96;652:3172:97;;;;;;;;;;3219:32:96;652:3172:97;;;;;;;;;;927:17:71;652:3172:97;;;;;;;;;;;7981:146:25;-1:-1:-1;;;;;;652:3172:97;;;;;;;;;;;;;8087:29:25;;652:3172:97;;8087:29:25;7981:146;;;;;7896:76;652:3172:97;;-1:-1:-1;;;7938:23:25;;;;;652:3172:97;-1:-1:-1;652:3172:97;;;;;;-1:-1:-1;652:3172:97;;;;;-1:-1:-1;652:3172:97;;;;-1:-1:-1;;;;;652:3172:97;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a7146104ba57806306fdde03146104b5578063095ea7b3146104b05780631415519b146104ab57806318160ddd146103895780631b66c9e1146104a65780631e9a6950146104a157806323b872dd1461049c578063248a9ca31461049757806327810b6e14610492578063281f57521461048d5780632abe3048146104885780632d73c69c146104835780632dd310001461047e5780632f2ff15d14610479578063313ce5671461047457806336568abe1461046f578063392e53cd1461046a5780634105a7dd14610465578063463616711461046057806347e7ef241461045b57806348d3b775146104565780634ff0876a1461045157806350861adc1461044c57806350f22068146104475780635346e34f1461044257806354fd4d501461043d57806357ec83cc1461043857806359f769a9146104335780635cc070761461042e57806361a8c8c4146104295780636da3e06d146104245780636ec1e3f81461041f57806370a08231146103d4578063715018a61461041a5780637278e31c1461041557806373790ab314610410578063766718081461040b578063794b15b7146104065780637953b33b146104015780637c04c80a146103fc578063810da75d146103f757806383cd9cc3146103f257806387df0788146103ed5780638b0e9f3f146103e85780638da5cb5b146103e357806391d14854146103de57806395d89b41146103d95780639d66201b146103d45780639f86fd85146103cf578063a1b12202146103ca578063a217fddf146103c5578063a21a1df9146103c0578063a2861466146103bb578063a3b54172146103b6578063a5d03223146103b1578063a9059cbb146103ac578063aabc2496146103a7578063aad3ec96146103a2578063afba70ad1461039d578063b134427114610398578063bd49c35f14610393578063bdc8144b1461038e578063bfefcd7b14610389578063c31e8dd714610384578063ce9b79301461037f578063d547741f1461037a578063d8dfeb4514610375578063db38871514610370578063dd62ed3e1461036b578063ecf7085814610366578063efb559d614610361578063f2fde38b1461035c578063f3fef3a3146103575763f5e7ee0f14610352575f80fd5b6128a9565b612803565b6127d6565b612687565b61266a565b612633565b6125f9565b6125ce565b612582565b61255a565b6124f0565b610749565b612412565b6123f8565b6123d0565b6123a6565b6122e5565b61212e565b6120f9565b6120b3565b612066565b611f73565b611f39565b611f1f565b611efb565b611e67565b6115d6565b611db5565b611d57565b611d23565b611cc1565b611c7d565b611ac4565b611aab565b611a45565b611a1e565b6119de565b61198c565b61194b565b611677565b611610565b6115b1565b61156d565b61151a565b6114f0565b6114c9565b611391565b61135f565b6112ca565b6112b1565b611254565b611234565b611213565b610f2b565b610f03565b610e68565b610e23565b610dd8565b610d40565b610cf2565b610cae565b610c42565b610a56565b610988565b610960565b610927565b61088a565b6107a5565b61076b565b61070f565b61064d565b61054c565b346105105760203660031901126105105760043563ffffffff60e01b811680910361051057602090637965db0b60e01b81149081156104ff575b506040519015158152f35b6301ffc9a760e01b1490505f6104f4565b5f80fd5b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b906020610549928181520190610514565b90565b34610510575f366003190112610510576040515f5f805160206154d383398151915280549061057a826128d3565b8085529160209160019182811690811561060f57506001146105b7575b6105b3866105a781880382610b86565b60405191829182610538565b0390f35b5f90815293507f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab05b8385106105fc575050505081016020016105a7826105b35f610597565b80548686018401529382019381016105df565b90508695506105b3969350602092506105a794915060ff191682840152151560051b82010192935f610597565b6001600160a01b0381160361051057565b346105105760403660031901126105105760043561066a8161063c565b60243533156106f7576001600160a01b0382169182156106df576106a78291610692336119a6565b9060018060a01b03165f5260205260405f2090565b556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b604051634a1406b160e11b81525f6004820152602490fd5b60405163e602df0560e01b81525f6004820152602490fd5b34610510575f3660031901126105105760206040517fc6aaadd7371d5e8f9ed6849dd66a66573a3ba37167d03f4352c9ba5693678fac8152f35b34610510575f366003190112610510576020610763614003565b604051908152f35b34610510575f3660031901126105105760206040517f9c56d972d63cbb4195b3c1484691dfc220fa96a4c47e7b6613bd82a022029e068152f35b34610510576040366003190112610510576004356107c28161063c565b602435906107ce612e1a565b6001600160a01b0381161561087957335f908152600e602052604090206107f9906140f0565b6140f0565b82116108675761081961080a61407c565b610812614003565b9084614164565b918215610852578261082a92612e49565b9061084160015f805160206155b383398151915255565b604080519182526020820192909252f35b60405160016245ddc760e11b03198152600490fd5b604051632418411f60e11b8152600490fd5b6040516208978560e71b8152600490fd5b34610510576060366003190112610510576004356108a78161063c565b6024356108b38161063c565b604435906108c433610692856119a6565b5492600184016108e5575b6108d99350612fd9565b60405160018152602090f35b828410610901576108fc836108d99503338361413d565b6108cf565b604051637dc7a0d960e11b81523360048201526024810185905260448101849052606490fd5b34610510576020366003190112610510576004355f525f805160206155938339815191526020526020600160405f200154604051908152f35b34610510575f366003190112610510576001546040516001600160a01b039091168152602090f35b34610510575f366003190112610510576109a0612b3f565b8015610a015760015465ffffffffffff8160a01c16915f1981019081116109fc576109ce9160d01c9061293a565b81018091116109fc576109e36105b391613138565b60405165ffffffffffff90911681529081906020820190565b61290b565b604051639fa56a5b60e01b8152600490fd5b600435906001600160401b038216820361051057565b9181601f84011215610510578235916001600160401b038311610510576020838186019501011161051057565b3461051057604036600319011261051057610a6f610a13565b6001600160401b0360243581811161051057610a8f903690600401610a29565b5050610a99612e1a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610b15575f805160206155d3833981519152549060ff8260401c16928315610b05575b505050610af3575f80fd5b60405163f92ee8a960e01b8152600490fd5b81169116101590505f8080610ae8565b604051631966391b60e11b8152600490fd5b65ffffffffffff81160361051057565b634e487b7160e01b5f52604160045260245ffd5b606081019081106001600160401b03821117610b6657604052565b610b37565b604081019081106001600160401b03821117610b6657604052565b90601f801991011681019081106001600160401b03821117610b6657604052565b6040519061016082018281106001600160401b03821117610b6657604052565b60405190610bd482610b6b565b565b6001600160401b038111610b6657601f01601f191660200190565b929192610bfd82610bd6565b91610c0b6040519384610b86565b829481845281830111610510578281602093845f960137010152565b9080601f830112156105105781602061054993359101610bf1565b3461051057606036600319011261051057600435610c5f8161063c565b60243590610c6c82610b27565b604435906001600160401b03821161051057602092610c92610763933690600401610c27565b6001600160a01b039092165f908152600e855260409020613331565b34610510575f366003190112610510576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461051057604036600319011261051057610d3e602435600435610d158261063c565b805f525f80516020615593833981519152602052610d39600160405f200154613508565b613808565b005b34610510575f366003190112610510575f5460405163313ce56760e01b8152906020908290600490829060101c6001600160a01b03165afa8015610dd3575f90610d95575b60405160ff919091168152602090f35b506020813d602011610dcb575b81610daf60209383610b86565b81010312610510575160ff81168103610510576105b390610d85565b3d9150610da2565b612989565b3461051057604036600319011261051057602435610df58161063c565b336001600160a01b03821603610e1157610d3e9060043561383e565b60405163334bd91960e11b8152600490fd5b34610510575f3660031901126105105760ff60025460a01c1680610e4f575b6020906040519015158152f35b5060035460a01c60ff16610e42565b8015150361051057565b3461051057602036600319011261051057600435610e8581610e5e565b610e8d612e1a565b610e956133fd565b5f54901515908160ff8216151514610ef15760ff191660ff8216175f556040519081527f3e12b7b36c75ac9609a3f58609b331210428e1a85909132638955ba0301eec3390602090a160015f805160206155b383398151915255005b60405163a741a04560e01b8152600490fd5b34610510575f36600319011261051057602065ffffffffffff60015460a01c16604051908152f35b3461051057604080600319360112610510576004803591610f4b8361063c565b610f53612e1a565b6001600160a01b0391838316908115611205575f5460ff8116806111ec575b6111dd5783516370a0823160e01b808252308483019081529096602093909160109190911c82169084908490819083010381845afa928315610dd3575f936111ba575b50610fc790602435903090339061453d565b5f5486519788523085890190815290979184918391908290819060200103918b60101c165afa908115610dd357611006935f9261118d575b505061292d565b93841561117e5760081c60ff1680611169575b61115b5750906105b3916110ca61102e61407c565b9561107761103a614003565b6110626110488a838b614164565b9961105c8a61105642613138565b9261295b565b90613c9e565b50506110718961105642613138565b90613d7e565b50506001600160a01b0381165f908152600e60205260409020906110c4886110bf6107f46110a442613138565b6001600160a01b039095165f908152600e6020526040902090565b61295b565b91613e5a565b5050815184815260208101869052819033907fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d790604090a361111860015f805160206155b383398151915255565b81518581525f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602090a35191825260208201929092529081906040820190565b8251632484557960e01b8152fd5b50611176846110bf61407c565b815410611019565b50825163070f6eed60e11b8152fd5b6111ac9250803d106111b3575b6111a48183610b86565b8101906138d0565b5f80610fff565b503d61119a565b610fc79193506111d690853d87116111b3576111a48183610b86565b9290610fb5565b5082516304f63b8560e01b8152fd5b50335f9081526005602052604090205460ff1615610f72565b8251630d534ce360e11b8152fd5b34610510575f36600319011261051057602060ff5f54166040519015158152f35b34610510575f36600319011261051057602060015460d01c604051908152f35b34610510575f36600319011261051057602060ff60025460a01c166040519015158152f35b9060406003198301126105105760043561129281610b27565b91602435906001600160401b0382116105105761054991600401610c27565b346105105760206107636112c436611279565b9061319b565b34610510576020366003190112610510576004356112e781610e5e565b6112ef612e1a565b6112f761345a565b5f54901515908160ff8260081c16151514610ef15761ff001916600882901b61ff0016175f556040519081527ffa7a25a0b611d4ba3c0ea990e90dc23d484a5dd7a1be4733fef2946ba74530c690602090a1610d3e60015f805160206155b383398151915255565b34610510575f3660031901126105105760206001600160401b035f805160206155d38339815191525416604051908152f35b34610510576060366003190112610510576113aa610a13565b6024356113b68161063c565b6001600160401b0391604435838111610510576113d7903690600401610a29565b5f805160206155d38339815191529491855494838616806114b85760ff8760401c169081156114ab575b50610af3577fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2966114a69661146e958716906001600160401b0319161790556114695f805160206155d3833981519152600160401b68ff000000000000000019825416179055565b612994565b5f805160206155d3833981519152805468ff0000000000000000191690556040516001600160401b0390911681529081906020820190565b0390a1005b905084861611155f611401565b60405162dc149f60e41b8152600490fd5b346105105760203660031901126105105760206107636004356114eb8161063c565b612aa8565b34610510576020366003190112610510576004355f526006602052602060405f2054604051908152f35b34610510575f3660031901126105105760015465ffffffffffff611550818360a01c1692611546612b3f565b9060d01c9061293a565b82018092116109fc57611564602092613138565b60405191168152f35b34610510575f366003190112610510576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610510575f36600319011261051057602060ff60035460a01c166040519015158152f35b34610510576020366003190112610510576004356115f38161063c565b60018060a01b03165f52600e602052602061076360405f206140f0565b34610510575f36600319011261051057611628613abc565b5f8051602061553383398151915280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346105105760403660031901126105105760043560243561169781610b27565b61169f612e1a565b6003546116bc906001600160a01b03165b6001600160a01b031690565b3303611939576116ca612b3f565b906116d481612b73565b9082151580611928575b801561191f575b61190d576105b3937ff9d090c096f71cd1659861a9ce5b6f384bceb4e2fa4e4a19edf6489a9b8d56c79261171761407c565b946117326117248261294d565b5f52600660205260405f2090565b54908281036118265750611746818761295b565b6117508185613af4565b9687806117df575b50505050505b836117ab575b6040805191825265ffffffffffff929092166020820152908101839052606090a161179b60015f805160206155b383398151915255565b6040519081529081906020820190565b5f546117da9085906117c89060101c6001600160a01b03166116b0565b6001546001600160a01b031690613f18565b611764565b61181b93610fff8361105c6118056117fe611724986118159888613b10565b809661292d565b9461180f42613138565b9261292d565b9261294d565b555f80808087611758565b915061183a825f52600660205260405f2090565b549061184a816110bf848a61295b565b906118558286613af4565b9788611866575b505050505061175e565b6118db938361188e9361189b8c6118966118846118cc998884613b10565b9788958584613b10565b94859261292d565b61292d565b938484106118e6575b610fff9061105c6118ba95969761180f42613138565b6118c66117248761294d565b5561292d565b915f52600660205260405f2090565b555f8080808061185c565b91611902610fff916118fc866118ba979861292d565b9061295b565b8594509290506118a4565b604051635e18d2a560e01b8152600490fd5b508282116116e5565b506119328361291f565b82106116de565b60405163dabc4ad960e01b8152600490fd5b34610510575f3660031901126105105760015465ffffffffffff808260a01c1691611974612b3f565b600181018091116109fc576115509160d01c9061293a565b34610510575f366003190112610510576020610763612b3f565b6001600160a01b03165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020526040902090565b34610510576020366003190112610510576004356119fb8161063c565b60018060a01b03165f526005602052602060ff60405f2054166040519015158152f35b34610510576020366003190112610510576020610763600435611a4081610b27565b612b73565b3461051057604036600319011261051057600435611a628161063c565b6024356001600160401b038082116105105736602383011215610510578160040135908111610510573660248260051b84010111610510576105b392602461179b930190612bae565b34610510576020610763611abe36611279565b9061327c565b3461051057602080600319360112610510576004803590611ae48261063c565b611aec612e1a565b60025460a01c60ff16611c6e576040516302910f8b60e31b81526001600160a01b03838116838301908152909491908290829081906020010381887f0000000000000000000000000000000000000000000000000000000000000000165afa908115610dd3575f91611c41575b5015611c315760405163fbfa77cf60e01b8152838516949082818581895afa928315610dd3575f93611c02575b505030911603611bf35750600280546001600160a01b03929092166001600160a81b031990921691909117600160a01b1790557fdb2160616f776a37b24808115554e79439bf26cccbbd4438190cc6d28e80ecd15f80a2610d3e60015f805160206155b383398151915255565b60405163b9f0f17160e01b8152fd5b611c22929350803d10611c2a575b611c1a8183610b86565b810190612d07565b905f80611b86565b503d611c10565b506040516324e5af8d60e21b8152fd5b611c619150823d8411611c67575b611c598183610b86565b810190612ce7565b5f611b59565b503d611c4f565b604051631380833b60e01b8152fd5b34610510575f366003190112610510576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610510575f36600319011261051057611cd9612b3f565b611ce161407c565b90805f52600660205260405f205482018092116109fc57600181018091116109fc575f52600660205260405f205481018091116109fc57602090604051908152f35b34610510575f366003190112610510575f80516020615533833981519152546040516001600160a01b039091168152602090f35b3461051057604036600319011261051057602060ff611da9602435611d7b8161063c565b6004355f525f80516020615593833981519152845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b34610510575f366003190112610510576040515f5f80516020615513833981519152805490611de3826128d3565b8085529160209160019182811690811561060f5750600114611e0f576105b3866105a781880382610b86565b5f90815293507f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa5b838510611e54575050505081016020016105a7826105b35f610597565b8054868601840152938201938101611e37565b3461051057604036600319011261051057600435611e848161063c565b6024356001600160401b038111610510575f91611ea683923690600401610a29565b90816040519283928337810184815203915af4611ef3611ec4612d1c565b91611ee5604051938492151560208401526040808401526060830190610514565b03601f198101835282610b86565b805190602001fd5b34610510575f36600319011261051057602060ff5f5460081c166040519015158152f35b34610510575f3660031901126105105760206040515f8152f35b34610510575f3660031901126105105760206040517f4a634bc14d77baf979756509ef4298c6f6318af357828612545267ee2eb792338152f35b3461051057604036600319011261051057600435611f908161063c565b602435611f9c81610e5e565b611fa4612e1a565b611fac6134b1565b6001600160a01b038216918215612054575f8381526005602052604090205460ff16151582151514610ef1576001600160a01b03165f9081526005602052604090207ff991b1ecfb5115cbb36a2b2e2240c058406d2acc2fcc6e9e2dc99d845ff70a629161203b91612029908260ff801983541691151516179055565b60405190151581529081906020820190565b0390a2610d3e60015f805160206155b383398151915255565b604051630da30f6560e31b8152600490fd5b346105105760403660031901126105105760206120aa6024356120888161063c565b6004355f526008835260405f209060018060a01b03165f5260205260405f2090565b54604051908152f35b3461051057604036600319011261051057602060ff611da96024356120d78161063c565b6004355f526009845260405f209060018060a01b03165f5260205260405f2090565b34610510576040366003190112610510576121236004356121198161063c565b6024359033612fd9565b602060405160018152f35b346105105760208060031936011261051057600480359061214e8261063c565b612156612e1a565b60035460a01c60ff166122d6576001600160a01b038281169390846121c4575b6003805460ff60a01b1916600160a01b179055847fe7e4c932e03abddfe20f83af42c33627e816115c7ec2b168441f65dc14bfc3ba5f80a2610d3e60015f805160206155b383398151915255565b6040516302910f8b60e31b81526001600160a01b0385168482019081528390829081906020010381857f0000000000000000000000000000000000000000000000000000000000000000165afa908115610dd3575f916122b9575b50156122a85760405163fbfa77cf60e01b815282818581895afa928315610dd3575f93612289575b50503091160361227a5750600380546001600160a01b0319166001600160a01b039092169190911790555f808080612176565b604051633f3e089160e21b8152fd5b6122a0929350803d10611c2a57611c1a8183610b86565b905f80612247565b60405163dabc4ad960e01b81528390fd5b6122d09150833d8511611c6757611c598183610b86565b5f61221f565b60405163703fe2e560e01b8152fd5b34610510576040366003190112610510576004356123028161063c565b6024359061230e612e1a565b6001600160a01b03918183169081156123945761233f6105b39461233183613f67565b9485915f5460101c16613f18565b604080519182526020820184905233917f865ca08d59f5cb456e85cd2f7ef63664ea4f73327414e9d8152c4158b0e946459190a360015f805160206155b3833981519152556040519081529081906020820190565b604051634e46966960e11b8152600490fd5b34610510576020366003190112610510576004355f526007602052602060405f2054604051908152f35b34610510575f366003190112610510576003546040516001600160a01b039091168152602090f35b34610510575f36600319011261051057602061076361407c565b346105105760203660031901126105105760043561242e612e1a565b335f9081527f2d4ccbfe9f7672a6f2537c1e5bce6adacb73706879154bbab6ce096012d6721660205260409020547f4a634bc14d77baf979756509ef4298c6f6318af357828612545267ee2eb792339060ff16156124d257508060045414610ef1576020817f854df3eb95564502c8bc871ebdd15310ee26270f955f6c6bd8cea68e75045bc092600455604051908152a160015f805160206155b383398151915255005b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b346105105760203660031901126105105760043561250d8161063c565b612515612b3f565b61251e82612aa8565b916125298183612dbc565b83018093116109fc57600182018092116109fc5761254691612dbc565b81018091116109fc57602090604051908152f35b34610510575f366003190112610510576002546040516001600160a01b039091168152602090f35b3461051057604036600319011261051057610d3e6024356004356125a58261063c565b805f525f805160206155938339815191526020526125c9600160405f200154613508565b61383e565b34610510575f366003190112610510575f5460405160109190911c6001600160a01b03168152602090f35b34610510575f3660031901126105105760206040517fbae4ee3de6c709ff9a002e774c5b78cb381560b219213c88ae0f1e207c03c0238152f35b346105105760403660031901126105105760206120aa6004356126558161063c565b610692602435916126658361063c565b6119a6565b34610510575f366003190112610510576020600454604051908152f35b34610510576060366003190112610510576004356126a48161063c565b602435906126b182610b27565b6001600160401b0391604435838111610510576126d2903690600401610a29565b909260409384516126e281610b4b565b60608152606060208201526060868201529280612741575b6105b386612732878761272c6127138984845191612968565b928561272360208501518361327c565b9301519061319b565b91614164565b90519081529081906020820190565b8101939250602081850312610510578035908682116105105701926060848203126105105784519561277287610b4b565b84358181116105105782612787918701610c27565b8752602085013581811161051057826127a1918701610c27565b602088015285850135908111610510576105b3966127ca61272c93612713936127329801610c27565b878201529394506126fa565b3461051057602036600319011261051057610d3e6004356127f68161063c565b6127fe613abc565b612d4b565b34610510576040366003190112610510576004356128208161063c565b60243561282b612e1a565b6001600160a01b038216156108795780156128975761285a61284b614003565b61285361407c565b9083614c31565b335f908152600e60205260409020909290612874906140f0565b83116128855761082a918391612e49565b6040516321727a3760e11b8152600490fd5b604051636c6c627d60e11b8152600490fd5b346105105760403660031901126105105760206107636024356128cb8161063c565b600435612dbc565b90600182811c92168015612901575b60208310146128ed57565b634e487b7160e01b5f52602260045260245ffd5b91607f16916128e2565b634e487b7160e01b5f52601160045260245ffd5b5f198101919082116109fc57565b919082039182116109fc57565b818102929181159184041417156109fc57565b90600182018092116109fc57565b919082018092116109fc57565b6001600160a01b03165f908152600e60205260409020610549929190613331565b6040513d5f823e3d90fd5b916129d1926129a1614595565b6129a9614595565b60015f805160206155b3833981519152556001600160a01b038116612a8e575b503691610bf1565b80516020908201818101828483031261051057828401516001600160401b039485821161051057019283926101a093849103126105105760405193612a1585610b4b565b612a21838383016138ea565b8552610180810151868111610510578383612a3e928401016139b3565b9382860194855281015195861161051057612a66612a859383610bd498612a809401016139b3565b94604081019586525191611ee560405193849283016139f9565b6145d8565b51905190614994565b612aa290612a9a614595565b6127fe614595565b5f6129c9565b6001600160a01b03165f908152600e60205260409020612ac7906140f0565b612acf61407c565b612ad7614003565b90600181018091116109fc57600182018092116109fc5761054992613b10565b65ffffffffffff91821690821603919082116109fc57565b634e487b7160e01b5f52601260045260245ffd5b9065ffffffffffff809116918215612b3a57160490565b612b0f565b612b4842613138565b612b6f600154612b6565ffffffffffff93848360a01c1690612af7565b9060d01c90612b23565b1690565b6001549065ffffffffffff91828160a01c16918284821610612b9c57612b6f92612b6591612af7565b60405163b7d0949760e01b8152600490fd5b90612bb7612e1a565b5f926001600160a01b038316928315612394578115612c6f575f5b828110612c4d57505f547f326b6aff1cd2fb1c8234de4f9dcfb9047c5c36eb9ef2eb34af5121e969a75d279286929091612c22918491612c1d9060101c6001600160a01b03166116b0565b613f18565b612c33604051928392339684612caa565b0390a390610bd460015f805160206155b383398151915255565b94612c686001916118fc612c62898789612c95565b35613f67565b9501612bd2565b60405163edf3b93360e01b8152600490fd5b634e487b7160e01b5f52603260045260245ffd5b9190811015612ca55760051b0190565b612c81565b604080825281018390529392916001600160fb1b0381116105105760209160609160051b809183880137850101930152565b5190610bd482610e5e565b90816020910312610510575161054981610e5e565b5190610bd48261063c565b9081602091031261051057516105498161063c565b3d15612d46573d90612d2d82610bd6565b91612d3b6040519384610b86565b82523d5f602084013e565b606090565b6001600160a01b03908116908115612da4575f8051602061553383398151915280546001600160a01b031981168417909155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b604051631e4fbdf760e01b81525f6004820152602490fd5b90612de290825f52600860205260405f209060018060a01b03165f5260205260405f2090565b54905f52600660205260405f2054600760205260405f205490600181018091116109fc57600182018092116109fc5761054992613b10565b5f805160206155b38339815191526002815414612e375760029055565b604051633ee5aeb560e01b8152600490fd5b335f908152600e6020526040812093949390929190612e8890612e6b42613138565b335f908152600e602052604090206110c4908990611896906140f0565b5050612ea2612e9642613138565b61107187611896614003565b5050612ebc612eb042613138565b61105c8461189661407c565b505081612f4e82610692612ed6612ed1612b3f565b61294d565b612f2d612eeb825f52600660205260405f2090565b54612efe835f52600760205260405f2090565b54612f15612f0d83838b614164565b9a8b9361295b565b612f27855f52600660205260405f2090565b5561295b565b612f3f825f52600760205260405f2090565b555f52600860205260405f2090565b612f5984825461295b565b9055604080519182526020820187905281018390526001600160a01b03919091169033907febff2602b3f468259e1e99f613fed6691f3a6526effe6ef3e768ba7ae7a36c4f90606090a36040519384529233907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9080602081015b0390a3565b916001600160a01b0380841692908315613120578116938415613108576001600160a01b0381165f908152600e60205260409020613016906140f0565b908382106130d657612fd4926130787fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef95936130656130c49460018060a01b03165f52600e60205260405f2090565b908561307042613138565b910391613e5a565b50506001600160a01b0381165f908152600e6020526040902090836130bd6107f46130a242613138565b6001600160a01b039094165f908152600e6020526040902090565b0191613e5a565b50506040519081529081906020820190565b60405163391434e360e21b81526001600160a01b03919091166004820152602481019190915260448101839052606490fd5b60405163ec442f0560e01b81525f6004820152602490fd5b604051634b637e8f60e11b81525f6004820152602490fd5b65ffffffffffff9081811161314b571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b90816020910312610510575163ffffffff811681036105105790565b90600163ffffffff809316019182116109fc57565b9080511561327257806020806131b69351830101910161316a565b6131bf816143d5565b906131d0825165ffffffffffff1690565b9065ffffffffffff80851692168281146132665782119182613206575b50506131fd575061054990614185565b60209150015190565b909150613214600a5461291f565b63ffffffff83161491821561322d575b50505f806131ed565b61325e91925061324761324261325392613186565b6143d5565b5165ffffffffffff1690565b65ffffffffffff1690565b115f80613224565b50505060209150015190565b5061054990614185565b9080511561332757806020806132979351830101910161316a565b6132a08161445a565b906132b1825165ffffffffffff1690565b9065ffffffffffff808516921682811461326657821191826132de575b50506131fd57506105499061424c565b9091506132ec600c5461291f565b63ffffffff831614918215613305575b50505f806132ce565b61331f91925061324761331a61325392613186565b61445a565b115f806132fc565b506105499061424c565b918051156133f3578060208061334c9351830101910161316a565b9161335783826144d5565b92613368845165ffffffffffff1690565b9065ffffffffffff80851692168281146133e7578211918261339e575b505061339557610549925061430c565b50506020015190565b9091506133ab835461291f565b63ffffffff8316149182156133c4575b50505f80613385565b6133df9192506132476133d961325392613186565b856144d5565b115f806133bb565b50505050506020015190565b506105499161430c565b335f9081527f03b26b53c87faa1058f30bb5d2fee64f717719a0d9b7e4f4df027aa5e9b6ed69602052604090207fbae4ee3de6c709ff9a002e774c5b78cb381560b219213c88ae0f1e207c03c0239060ff905b5416156124d25750565b335f9081527fe41986b390c4ce6791b87f7423b5fab7a81a0e6d89660b6264f697d008b2243a602052604090207fc6aaadd7371d5e8f9ed6849dd66a66573a3ba37167d03f4352c9ba5693678fac9060ff90613450565b335f9081527f0287ab4cb376ea253d7b2ce0c2cbf458f7deae9458470d74afdfbbee484e9540602052604090207f9c56d972d63cbb4195b3c1484691dfc220fa96a4c47e7b6613bd82a022029e069060ff90613450565b5f8181525f8051602061559383398151915260209081526040808320338452909152902060ff90613450565b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260409020545f805160206155938339815191529060ff166135df575f808052602091825260408082206001600160a01b038516835290925220805460ff1916600117905533906001600160a01b03165f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b50505f90565b6001600160a01b0381165f9081527f03b26b53c87faa1058f30bb5d2fee64f717719a0d9b7e4f4df027aa5e9b6ed69602052604090207fbae4ee3de6c709ff9a002e774c5b78cb381560b219213c88ae0f1e207c03c023905f805160206155938339815191529060ff905b54166136b4575f828152602091825260408082206001600160a01b038616835290925220805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b5050505f90565b6001600160a01b0381165f9081527f0287ab4cb376ea253d7b2ce0c2cbf458f7deae9458470d74afdfbbee484e9540602052604090207f9c56d972d63cbb4195b3c1484691dfc220fa96a4c47e7b6613bd82a022029e06905f805160206155938339815191529060ff90613650565b6001600160a01b0381165f9081527fe41986b390c4ce6791b87f7423b5fab7a81a0e6d89660b6264f697d008b2243a602052604090207fc6aaadd7371d5e8f9ed6849dd66a66573a3ba37167d03f4352c9ba5693678fac905f805160206155938339815191529060ff90613650565b6001600160a01b0381165f9081527f2d4ccbfe9f7672a6f2537c1e5bce6adacb73706879154bbab6ce096012d67216602052604090207f4a634bc14d77baf979756509ef4298c6f6318af357828612545267ee2eb79233905f805160206155938339815191529060ff90613650565b5f8181525f80516020615593833981519152602081815260408084206001600160a01b038716855290915290912060ff90613650565b5f8181525f80516020615593833981519152602081815260408084206001600160a01b03871685529091529091205460ff16156136b4575f828152602091825260408082206001600160a01b038616835290925220805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b90816020910312610510575190565b5190610bd482610b27565b919082610160910312610510576138ff610ba7565b9161390981612cfc565b835261391760208201612cfc565b6020840152613928604082016138df565b604084015261393960608201612cdc565b606084015261394a60808201612cdc565b608084015260a081015160a084015261396560c08201612cfc565b60c084015261397660e08201612cfc565b60e0840152610100613989818301612cfc565b9084015261012061399b818301612cfc565b908401526139ad610140809201612cfc565b90830152565b81601f82011215610510578051906139ca82610bd6565b926139d86040519485610b86565b8284526020838301011161051057815f9260208093018386015e8301015290565b81516001600160a01b0316815261016081019291610bd491906020818101516001600160a01b03169083015260408181015165ffffffffffff169083015260608181015115159083015260808181015115159083015260a0818101519083015260c0808201516001600160a01b03169083015260e0818101516001600160a01b031690830152610100818101516001600160a01b031690830152610120818101516001600160a01b031690830152610140908101516001600160a01b0316910152565b5f80516020615533833981519152546001600160a01b03163303613adc57565b60405163118cdaa760e01b8152336004820152602490fd5b9080821015613b01575090565b905090565b8115612b3a570490565b9091828202915f1984820993838086109503948086039514613b955784831115613b8357829109815f038216809204600280826003021880830282030280830282030280830282030280830282030280830282030280920290030293600183805f03040190848311900302920304170290565b60405163227bc15360e01b8152600490fd5b5050906105499250613b06565b600b54811015612ca557600b5f525f8051602061557383398151915201905f90565b600d54811015612ca557600d5f525f8051602061555383398151915201905f90565b8054821015612ca5575f5260205f2001905f90565b600d54600160401b811015610b66576001810180600d55811015612ca557600d5f525f805160206155538339815191520155565b600b54600160401b811015610b66576001810180600b55811015612ca557600b5f525f805160206155738339815191520155565b90815491600160401b831015610b665782613c86916001610bd495018155613be6565b90919082549060031b91821b915f19901b1916179055565b919091600d9081548015613d49575b50613cb6614add565b50929091815492613cc561407c565b9481613d34575b5015613d1157505f1982018281116109fc5781541115612ca5575f527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb4018390559190565b613d25926001600160d01b03169150614f65565b5050613d3083613bfb565b9190565b65ffffffffffff83811691161490505f613ccc565b600160401b811015610b665760018101808455811015612ca5575f908382525f8051602061555383398151915201555f613cad565b919091600b9081548015613e25575b50613d96614b48565b50929091815492613da5614003565b9481613e10575b5015613df157505f1982018281116109fc5781541115612ca5575f527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db8018390559190565b613e05926001600160d01b03169150615065565b5050613d3083613c2f565b65ffffffffffff83811691161490505f613dac565b600160401b811015610b665760018101808455811015612ca5575f908382525f8051602061557383398151915201555f613d8d565b90929192600182019081548015613ee8575b5084613e7784614b92565b50949092845493613e87836140f0565b9681613ed3575b5015613eb0575050505f1981019081116109fc57613c868591613d3093613be6565b613d30949293613ecc926001600160d01b03909116919061510f565b5050613c63565b65ffffffffffff83811691161490505f613e8e565b600160401b811015610b6657806001613f049201845583613be6565b8154905f199060031b1b191690555f613e6c565b60405163a9059cbb60e01b60208201526001600160a01b03909216602483015260448083019390935291815260808101916001600160401b03831182841017610b6657610bd492604052614bc0565b90613f70612b3f565b821015613ff1575f82815260096020908152604080832033845290915290205460ff16613fdf57613fa13383612dbc565b918215613fcd575f9081526009602090815260408083203384529091529020805460ff19166001179055565b6040516366c0bcbf60e11b8152600490fd5b604051630c8d9eab60e31b8152600490fd5b60405163d5b25b6360e01b8152600490fd5b600a548061404357505f5b6001600160d01b0381161561403e57600b54811015612ca557600b5f525f80516020615573833981519152015490565b505f90565b805f198101116109fc57600a5f527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a7015460301c61400e565b600c54806140b757505f5b6001600160d01b0381161561403e57600d54811015612ca557600d5f525f80516020615553833981519152015490565b805f198101116109fc57600c5f527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c6015460301c614087565b80548061411f57505f5b6001600160d01b038116156135df5760016141159201613be6565b90549060031b1c90565b5f199080828101116109fc57825f5260205f2001015460301c6140fa565b906001600160a01b03808316156106f7578116156106df57610692614161926119a6565b55565b9190600181018091116109fc57600182018092116109fc5761054992613b10565b600a54905f8291600584116141f3575b61419f935061531b565b806141c257505f5b6001600160d01b0381161561403e5761411561054991613ba2565b6141e76141d16141ee9261291f565b600a5f525f805160206154f38339815191520190565b5460301c90565b6141a7565b91926141fe816151e2565b81039081116109fc5761419f93600a5f5265ffffffffffff80835f805160206154f3833981519152015416908516105f1461423a575091614195565b9291506142469061294d565b90614195565b600c54905f8291600584116142b3575b6142669350615384565b8061428957505f5b6001600160d01b0381161561403e5761411561054991613bc4565b6141e76142986142ae9261291f565b600c5f525f805160206154b38339815191520190565b61426e565b91926142be816151e2565b81039081116109fc5761426693600c5f5265ffffffffffff80835f805160206154b3833981519152015416908516105f146142fa57509161425c565b9291506143069061294d565b9061425c565b908154905f82916005841161436f575b6143279350846153ed565b8061434f57505f905b6001600160d01b038216156135df576105499160016141159201613be6565b6141e761435e6143699261291f565b835f5260205f200190565b90614330565b919261437a816151e2565b81039081116109fc5761432793855f5265ffffffffffff808360205f20015416908516105f146143ab57509161431c565b9291506143b79061294d565b9061431c565b604051906143ca82610b6b565b5f6020838281520152565b6143dd6143bd565b506143e66143bd565b50600a54811015612ca55761440d90600a5f525f805160206154f383398151915201614ab9565b65ffffffffffff81511690602060018060d01b0391015116600b54811015612ca557600b5f525f8051602061557383398151915201546040519161445083610b6b565b8252602082015290565b6144626143bd565b5061446b6143bd565b50600c54811015612ca55761449290600c5f525f805160206154b383398151915201614ab9565b65ffffffffffff81511690602060018060d01b0391015116600d54811015612ca557600d5f525f8051602061555383398151915201546040519161445083610b6b565b906144fe6144f861451f926144e86143bd565b506144f16143bd565b5084613be6565b50614ab9565b91600165ffffffffffff845116936020828060d01b03910151169101613be6565b9054906040519261452f84610b6b565b835260031b1c602082015290565b6040516323b872dd60e01b60208201526001600160a01b03928316602482015292909116604483015260648083019390935291815260a08101918183106001600160401b03841117610b6657610bd492604052614bc0565b60ff5f805160206155d38339815191525460401c16156145b157565b604051631afcd79f60e31b8152600490fd5b906101608282031261051057610549916138ea565b6145eb90602080825183010191016145c3565b80516001600160a01b03919082161561498257604080820165ffffffffffff61461a825165ffffffffffff1690565b16156149715760c08301805190929061463b906001600160a01b03166116b0565b15614822575b509161476e6101409261470d6146e86147cc9661468f614667875160018060a01b031690565b5f805462010000600160b01b03191660109290921b62010000600160b01b0316919091179055565b6020860151600180546001600160a01b0319166001600160a01b039092169190911790556132476146bf42613138565b6001805465ffffffffffff60a01b191660a09290921b65ffffffffffff60a01b16919091179055565b600180546001600160d01b031660d09290921b6001600160d01b031916919091179055565b61472d61471d6060850151151590565b60ff80195f541691151516175f55565b61475461473d6080850151151590565b61ff005f5491151560081b169061ff001916175f55565b61476160a0840151600455565b516001600160a01b031690565b848116614812575b5060e08101516001600160a01b0316848116614802575b506101008101516001600160a01b03168481166147f2575b506101208101516001600160a01b03168481166147e2575b5001516001600160a01b031690565b9081166147d65750565b6147df90613799565b50565b6147eb9061372a565b505f6147bd565b6147fb906136bb565b505f6147a5565b61480b906135e5565b505f61478d565b61481b90613534565b505f614776565b60e0840151614839906001600160a01b03166116b0565b1561490e575b610120840151614857906001600160a01b03166116b0565b614641576080840151156148c45760a084015115806148a5575b61489557509161476e6101409261470d6146e86147cc965b94965050509250614641565b5163183c854560e21b8152600490fd5b506101408401516148be906001600160a01b03166116b0565b15614871565b60a0840151158015906148ee575b61489557509161476e6101409261470d6146e86147cc96614889565b50610140840151614907906001600160a01b03166116b0565b15156148d2565b60608401511561494457610100840151614930906001600160a01b03166116b0565b61483f575163183c854560e21b8152600490fd5b61010084015161495c906001600160a01b03166116b0565b1561483f575163183c854560e21b8152600490fd5b81516368f5f8f160e11b8152600490fd5b6040516368f7a67560e11b8152600490fd5b919061499e614595565b6149a6614595565b82516001600160401b038111610b66575f805160206154d3833981519152906149d8816149d384546128d3565b614c71565b602080601f8311600114614a1f57509080614a0d92610bd496975f92614a14575b50508160011b915f199060031b1c19161790565b9055614d63565b015190505f806149f9565b90601f19831696614a5d5f805160206154d38339815191525f527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab090565b925f905b898210614aa157505090839291600194610bd4989910614a89575b505050811b019055614d63565b01515f1960f88460031b161c191690555f8080614a7c565b80600185968294968601518155019501930190614a61565b90604051614ac681610b6b565b915465ffffffffffff8116835260301c6020830152565b600c5480614aee57505f905f905f90565b805f198101116109fc577fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c6614b2791600c5f5201614ab9565b9065ffffffffffff82511691602060018060d01b0391015116906001929190565b600a5480614b5957505f905f905f90565b805f198101116109fc577fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a7614b2791600a5f5201614ab9565b805480614ba35750505f905f905f90565b5f199080828101116109fc57614b27925f5260205f200101614ab9565b5f80614be89260018060a01b03169360208151910182865af1614be1612d1c565b908361544f565b8051908115159182614c16575b5050614bfe5750565b60249060405190635274afe760e01b82526004820152fd5b614c299250602080918301019101612ce7565b155f80614bf5565b9190600181018091116109fc57600182018092116109fc57614c54828285613b10565b928215612b3a5709614c635790565b600181018091116109fc5790565b601f8111614c7d575050565b5f805160206154d38339815191525f527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0906020601f840160051c83019310614ce0575b601f0160051c01905b818110614cd5575050565b5f8155600101614cca565b9091508190614cc1565b601f8111614cf6575050565b5f805160206155138339815191525f527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa906020601f840160051c83019310614d59575b601f0160051c01905b818110614d4e575050565b5f8155600101614d43565b9091508190614d3a565b9081516001600160401b038111610b66575f8051602061551383398151915290614d9681614d9184546128d3565b614cea565b602080601f8311600114614dcb57508190614dc79394955f92614a145750508160011b915f199060031b1c19161790565b9055565b90601f19831695614e095f805160206155138339815191525f527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa90565b925f905b888210614e4457505083600195969710614e2c575b505050811b019055565b01515f1960f88460031b161c191690555f8080614e22565b80600185968294968601518155019501930190614e0d565b600c5490600160401b821015610b66576001820180600c55821015612ca557600c5f52805160209091015160301b65ffffffffffff191665ffffffffffff91909116175f805160206154b383398151915290910155565b600a5490600160401b821015610b66576001820180600a55821015612ca557600a5f52805160209091015160301b65ffffffffffff191665ffffffffffff91909116175f805160206154f383398151915290910155565b8054600160401b811015610b6657614f2791600182018155613be6565b614f5257815160209092015160301b65ffffffffffff191665ffffffffffff92909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b600c5491929190811561503c57614f86614f816142988461291f565b614ab9565b805165ffffffffffff838116949116841061502a5785602093613d3095614fb6613253865165ffffffffffff1690565b03614ff25750614fcb614298614fe49361291f565b9065ffffffffffff82549181199060301b169116179055565b01516001600160d01b031690565b90506150259150615012615004610bc7565b65ffffffffffff9092168252565b6001600160d01b03871681850152614e5c565b614fe4565b604051632520601d60e01b8152600490fd5b615060915061504c615004610bc7565b6001600160d01b0384166020820152614e5c565b5f9190565b600a549192919081156150eb57615081614f816141d18461291f565b805165ffffffffffff838116949116841061502a5785602093613d30956150b1613253865165ffffffffffff1690565b036150c65750614fcb6141d1614fe49361291f565b905061502591506150d8615004610bc7565b6001600160d01b03871681850152614eb3565b61506091506150fb615004610bc7565b6001600160d01b0384166020820152614eb3565b8054929392919082156151be5761512b614f8161435e8561291f565b9061513c825165ffffffffffff1690565b65ffffffffffff8481169116811061502a57613d3094602094889261516a613253875165ffffffffffff1690565b0361518b5750614fe492615180614fcb9261291f565b905f5260205f200190565b915050615025916151ab61519d610bc7565b65ffffffffffff9093168352565b6001600160d01b03881682860152614f0a565b61506092506151ce61519d610bc7565b6001600160d01b0385166020830152614f0a565b801561403e57806152b46152ad6152a361529961528f61528561527b61527160016105499a5f908b60801c8061530f575b508060401c80615302575b508060201c806152f5575b508060101c806152e8575b508060081c806152db575b508060041c806152ce575b508060021c806152c1575b50821c6152ba575b811c1b61526a818b613b06565b0160011c90565b61526a818a613b06565b61526a8189613b06565b61526a8188613b06565b61526a8187613b06565b61526a8186613b06565b61526a8185613b06565b8092613b06565b90613af4565b810161525d565b600291509101905f615255565b600491509101905f61524a565b600891509101905f61523f565b601091509101905f615234565b602091509101905f615229565b604091509101905f61521e565b9150506080905f615213565b905b82811061532957505090565b9091808216906001818418811c83018093116109fc57600a5f5265ffffffffffff80845f805160206154f3833981519152015416908616105f14615371575050915b9061531d565b9093925081018091116109fc579061536b565b905b82811061539257505090565b9091808216906001818418811c83018093116109fc57600c5f5265ffffffffffff80845f805160206154b3833981519152015416908616105f146153da575050915b90615386565b9093925081018091116109fc57906153d4565b91905b8382106153fd5750505090565b909192808316906001818518811c83018093116109fc57855f5265ffffffffffff808460205f20015416908516105f1461543c575050925b91906153f0565b9094935081018091116109fc5791615435565b90615476575080511561546457805190602001fd5b604051630a12f52160e11b8152600490fd5b815115806154a9575b615487575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b1561547f56fedf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c752c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace03c65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a852c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace049016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300d7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db902dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a264697066735822122061d21157d87e9623ddeb51ba19f8345edd1a00f8105d70e5232e62df8a9f97ed64736f6c63430008190033","sourceMap":"652:3172:97:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;-1:-1:-1;;652:3172:97;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3551:47:23;;;:87;;;;652:3172:97;;;;;;;;;;3551:87:23;-1:-1:-1;;;1133:40:29;;-1:-1:-1;3551:87:23;;;652:3172:97;-1:-1:-1;652:3172:97;;;;;;;;;;;;;;;;;;;-1:-1:-1;652:3172:97;;;;;;;;-1:-1:-1;;652:3172:97;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;-1:-1:-1;;652:3172:97;;;;;;;-1:-1:-1;;;;;;;;;;;652:3172:97;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;652:3172:97;;;;;;;-1:-1:-1;;;;652:3172:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;652:3172:97;;;;;:::o;:::-;;;;;;-1:-1:-1;;652:3172:97;;;;;;;;;:::i;:::-;;;966:10:27;11389:19:26;11385:89;;-1:-1:-1;;;;;652:3172:97;;;11487:21:26;;11483:90;;11582:29;966:10:27;;11582:20:26;966:10:27;11582:20:26;:::i;:::-;652:3172:97;;;;;;;;;;;;;;;;11582:29:26;652:3172:97;;;;;;11663:31:26;652:3172:97;966:10:27;11663:31:26;;652:3172:97;;;10380:4:26;652:3172:97;;;11483:90:26;652:3172:97;;-1:-1:-1;;;11531:31:26;;-1:-1:-1;652:3172:97;11531:31:26;;652:3172:97;;;11531:31:26;11385:89;652:3172:97;;-1:-1:-1;;;11431:32:26;;11406:1;652:3172:97;11431:32:26;;652:3172:97;;;11431:32:26;652:3172:97;;;;;;-1:-1:-1;;652:3172:97;;;;;;;966:38:96;652:3172:97;;;;;;;;;-1:-1:-1;;652:3172:97;;;;;4803:22:96;;:::i;:::-;652:3172:97;;;;;;;;;;;;-1:-1:-1;;652:3172:97;;;;;;;821:37:96;652:3172:97;;;;;;;;;-1:-1:-1;;652:3172:97;;;;;;;;;:::i;:::-;;;3217:103:28;;;:::i;:::-;-1:-1:-1;;;;;652:3172:97;;5525:21:95;5521:75;;5634:10;652:3172:97;;;;5606:15:96;652:3172:97;;;;;5606:33:96;;;:::i;:24::-;:33;:::i;:::-;5610:35:95;;5606:88;;1057:70:87;5173:21:96;;:::i;:::-;4803:22;;:::i;:::-;1057:70:87;;;:::i;:::-;5801:20:95;;;5797:82;;5904:43;;;;:::i;:::-;3282:1:28;;1805;-1:-1:-1;;;;;;;;;;;652:3172:97;3716:283:28;3282:1;652:3172:97;;;;;;;;;;;;;;5797:82:95;652:3172:97;;-1:-1:-1;;;;;;5844:24:95;;652:3172:97;;5844:24:95;5606:88;652:3172:97;;-1:-1:-1;;;5668:15:95;;652:3172:97;;5668:15:95;5521:75;652:3172:97;;-1:-1:-1;;;5569:16:95;;652:3172:97;;5569:16:95;652:3172:97;;;;;;-1:-1:-1;;652:3172:97;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;966:10:27;5162:29:26;966:10:27;5162:20:26;;;:::i;:29::-;652:3172:97;;12158:37:26;;;12154:310;;652:3172:97;6461:5:26;;;;:::i;:::-;652:3172:97;;5162:13:26;652:3172:97;;;;;12154:310:26;12215:24;;;12211:130;;12433:5;652:3172:97;6461:5:26;652:3172:97;;966:10:27;12433:5:26;;:::i;:::-;12154:310;;12211:130;652:3172:97;;-1:-1:-1;;;12266:60:26;;966:10:27;652:3172:97;12266:60:26;;652:3172:97;;;;;;;;;;;;;;;12266:60:26;652:3172:97;;;;;;-1:-1:-1;;652:3172:97;;;;;;-1:-1:-1;652:3172:97;-1:-1:-1;;;;;;;;;;;652:3172:97;;;4919:24:23;652:3172:97;-1:-1:-1;652:3172:97;4919:24:23;652:3172:97;;;;;;;;;;;;;-1:-1:-1;;652:3172:97;;;;;;;;-1:-1:-1;;;;;652:3172:97;;;;;;;;;;;;;;-1:-1:-1;;652:3172:97;;;;4084:14:96;;:::i;:::-;4112:10;;4108:65;;4190:17;652:3172:97;;;;;;12178:17:26;;;652:3172:97;;;;;;;4210:27:96;652:3172:97;;;4210:27:96;;:::i;:::-;652:3172:97;;;;;;;4189:60:96;652:3172:97;4189:60:96;;:::i;:::-;652:3172:97;;;;;;;;;;;;;;;;;;:::i;4108:65:96:-;652:3172:97;;-1:-1:-1;;;4145:17:96;;652:3172:97;;4145:17:96;652:3172:97;;;;-1:-1:-1;;;;;652:3172:97;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;652:3172:97;;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;652:3172:97;;;;;;:::i;:::-;-1:-1:-1;;;;;652:3172:97;;;;;;;;;;;;;;:::i;:::-;3217:103:28;;;;:::i;:::-;1673:7:71;-1:-1:-1;;;;;652:3172:97;1659:10:71;:21;1655:71;;-1:-1:-1;;;;;;;;;;;652:3172:97;;;;;;;6431:44:25;;;;;652:3172:97;6427:105:25;;;;;-1:-1:-1;15924:8:95;;6427:105:25;652:3172:97;;-1:-1:-1;;;6498:23:25;;652:3172:97;;6498:23:25;6431:44;652:3172:97;;;;6450:25:25;;;-1:-1:-1;6431:44:25;;;;;1655:71:71;652:3172:97;;-1:-1:-1;;;1703:12:71;;652:3172:97;;1703:12:71;652:3172:97;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;652:3172:97;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;-1:-1:-1;;;;;652:3172:97;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;652:3172:97;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;652:3172:97;;;;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;:::-;-1:-1:-1;;;;;652:3172:97;;;;;;-1:-1:-1;;652:3172:97;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;652:3172:97;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;652:3172:97;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;652:3172:97;;;;;;;5383:59:96;652:3172:97;;;;;;:::i;:::-;-1:-1:-1;;;;;652:3172:97;;;-1:-1:-1;652:3172:97;;;5383:15:96;652:3172:97;;;;;5383:59:96;:::i;652:3172:97:-;;;;;;-1:-1:-1;;652:3172:97;;;;;;655:32:71;-1:-1:-1;;;;;652:3172:97;;;;;;;;;;;;-1:-1:-1;;652:3172:97;;;;5350:25:23;652:3172:97;;;;;;;:::i;:::-;;-1:-1:-1;652:3172:97;-1:-1:-1;;;;;;;;;;;652:3172:97;;3202:4:23;4919:24;652:3172:97;-1:-1:-1;652:3172:97;4919:24:23;652:3172:97;3202:4:23;:::i;:::-;5350:25;:::i;:::-;652:3172:97;;;;;;;-1:-1:-1;;652:3172:97;;;;;;;;-1:-1:-1;;;1109:37:97;;652:3172;1109:37;;652:3172;;;;;;;;-1:-1:-1;;;;;652:3172:97;1109:37;;;;;;652:3172;1109:37;;;652:3172;;;;;;;;;;;;;1109:37;;;;;;;;;;;;;;;;:::i;:::-;;;652:3172;;;;;;;;;;;;;1109:37;;;;;;-1:-1:-1;1109:37:97;;;;:::i;652:3172::-;;;;;;-1:-1:-1;;652:3172:97;;;;;;;;;:::i;:::-;966:10:27;-1:-1:-1;;;;;652:3172:97;;6441:34:23;6437:102;;6549:37;652:3172:97;;;6549:37:23;:::i;6437:102::-;652:3172:97;;-1:-1:-1;;;6498:30:23;;652:3172:97;;6498:30:23;652:3172:97;;;;;;-1:-1:-1;;652:3172:97;;;;;1524:22:95;652:3172:97;;;;1524:46:95;;;652:3172:97;;;;;;;;;;;1524:46:95;-1:-1:-1;1550:20:95;652:3172:97;;;;;1524:46:95;;652:3172:97;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;652:3172:97;;;;;;;;;:::i;:::-;3217:103:28;;:::i;:::-;3202:4:23;;:::i;:::-;-1:-1:-1;652:3172:97;;;;;;;;;;;9542:26:95;9538:76;;-1:-1:-1;;652:3172:97;;;;;-1:-1:-1;652:3172:97;;;;;;9665:27:95;;652:3172:97;;9665:27:95;1805:1:28;-1:-1:-1;;;;;;;;;;;652:3172:97;;9538:76:95;652:3172:97;;-1:-1:-1;;;9591:12:95;;652:3172:97;;9591:12:95;652:3172:97;;;;;;-1:-1:-1;;652:3172:97;;;;;;1718:31:96;652:3172:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3217:103:28;;:::i;:::-;-1:-1:-1;;;;;652:3172:97;;;;;3474:24:95;;3470:81;;-1:-1:-1;652:3172:97;;;;3565:55:95;;;652:3172:97;3561:118:95;;652:3172:97;;-1:-1:-1;;;3713:43:95;;;3750:4;3713:43;;;652:3172:97;;;;;;;;;;;;;;;;;;;;;;;;;3713:43:95;;;;;;;;;;-1:-1:-1;3713:43:95;;;652:3172:97;;3829:6:95;652:3172:97;;;3750:4:95;;3802:10;;3829:6;;:::i;:::-;-1:-1:-1;652:3172:97;;;3864:43:95;;;3750:4;3864:43;;;652:3172:97;;;;;;;;;;3864:43:95;652:3172:97;;;;;;3864:43:95;652:3172:97;;;;;3864:43:95;;;;;;;:59;:43;-1:-1:-1;3864:43:95;;;652:3172:97;3864:59:95;;;:::i;:::-;3938:20;;;3934:79;;652:3172:97;;;;;4027:64:95;;652:3172:97;4023:123:95;;5173:21:96;;652:3172:97;5173:21:96;4502:93:95;5173:21:96;;:::i;:::-;4803:22;4426:66:95;4803:22:96;;:::i;:::-;4349:67:95;390:70:87;;;;;:::i;:::-;837:15:62;4385:30:95;837:15:62;819:34;837:15;819:34;:::i;:::-;4385:30:95;;:::i;:::-;4349:67;;:::i;:::-;837:15:62;;4463:28:95;837:15:62;819:34;837:15;819:34;:::i;4463:28:95:-;4426:66;;:::i;:::-;-1:-1:-1;;;;;;;652:3172:97;;;;;;5606:15:96;652:3172:97;;;;;837:15:62;4553:41:95;837:15:62;5606:33:96;:24;819:34:62;837:15;819:34;:::i;:::-;-1:-1:-1;;;;;652:3172:97;;;;;;;5606:15:96;652:3172:97;;;;;;;5606:33:96;4553:41:95;:::i;:::-;4502:93;;:::i;:::-;-1:-1:-1;;652:3172:97;;;;;;;;;;;;;3802:10:95;;4611:62;;652:3172:97;;4611:62:95;3282:1:28;1805;-1:-1:-1;;;;;;;;;;;652:3172:97;3716:283:28;3282:1;652:3172:97;;;;;-1:-1:-1;;1808:46:97;;652:3172;;1808:46;652:3172;;;;;;;;;;;;;;;;;;;4023:123:95;652:3172:97;;-1:-1:-1;;;4114:21:95;;;4027:64;5173:21:96;4045:31:95;5173:21:96;;;:::i;4045:31:95:-;652:3172:97;;-1:-1:-1;4027:64:95;;3934:79;-1:-1:-1;652:3172:97;;-1:-1:-1;;;3981:21:95;;;3864:43;;;;;;-1:-1:-1;3864:43:95;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;3713;3829:6;3713:43;;;;;;;;;;;;;;;:::i;:::-;;;;;3561:118;-1:-1:-1;652:3172:97;;-1:-1:-1;;;3643:25:95;;;3565:55;-1:-1:-1;3609:10:95;652:3172:97;;;;3586:22:95;652:3172:97;;;;;;;;3585:35:95;3565:55;;3470:81;652:3172:97;;-1:-1:-1;;;3521:19:95;;;652:3172:97;;;;;;-1:-1:-1;;652:3172:97;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;652:3172:97;;;;;1805:27:96;652:3172:97;;;;;;;;;;;;;;;-1:-1:-1;;652:3172:97;;;;;;1968:34:96;652:3172:97;;;;;;;;;;;;;;;-1:-1:-1;;652:3172:97;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;652:3172:97;;;;;;;;;:::i;:::-;;;;;4622:48:96;652:3172:97;;;:::i;:::-;4622:48:96;;:::i;652:3172:97:-;;;;;;-1:-1:-1;;652:3172:97;;;;;;;;;:::i;:::-;3217:103:28;;:::i;:::-;3202:4:23;;:::i;:::-;-1:-1:-1;652:3172:97;;;;;;;;;;;;;10370:24:95;10366:74;;-1:-1:-1;;652:3172:97;;;;;;;;-1:-1:-1;652:3172:97;;;;;;10489:25:95;;652:3172:97;;10489:25:95;3282:1:28;1805;-1:-1:-1;;;;;;;;;;;652:3172:97;3716:283:28;652:3172:97;;;;;;-1:-1:-1;;652:3172:97;;;;;-1:-1:-1;;;;;;;;;;;;;;;;652:3172:97;;;;;;;;;;;;;;-1:-1:-1;;652:3172:97;;;;;;:::i;:::-;;;;;;:::i;:::-;-1:-1:-1;;;;;652:3172:97;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;8837:64:25;;652:3172:97;;;;;;734:29:71;730:87;;652:3172:97;;;;;6431:44:25;;;;;652:3172:97;6427:105:25;;;6656:20;652:3172:97;6656:20:25;652:3172:97;1167:340:71;652:3172:97;;;;-1:-1:-1;;;;;652:3172:97;;;;;6575:22:25;-1:-1:-1;;;;;;;;;;;;;;652:3172:97;;;;;;;;;6575:22:25;1167:340:71;:::i;:::-;-1:-1:-1;;;;;;;;;;;652:3172:97;;-1:-1:-1;;652:3172:97;;;;;-1:-1:-1;;;;;652:3172:97;;;;;;;;;;;;;6656:20:25;;;;652:3172:97;6431:44:25;652:3172:97;;;;;-1:-1:-1;6450:25:25;6431:44;;;730:87:71;652:3172:97;;-1:-1:-1;;;786:20:71;;652:3172:97;;786:20:71;652:3172:97;;;;;;-1:-1:-1;;652:3172:97;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;-1:-1:-1;;652:3172:97;;;;;;-1:-1:-1;652:3172:97;2431:59:96;652:3172:97;;;;-1:-1:-1;652:3172:97;;;;;;;;;;;;;;-1:-1:-1;;652:3172:97;;;;3875:17:96;652:3172:97;;3895:30:96;652:3172:97;;;;;3895:14:96;;;:::i;:::-;652:3172:97;;;3895:30:96;;:::i;:::-;652:3172:97;;;;;;;3874:63:96;652:3172:97;3874:63:96;;:::i;:::-;652:3172:97;;;;;;;;;;;;;-1:-1:-1;;652:3172:97;;;;;;1200:42:96;-1:-1:-1;;;;;652:3172:97;;;;;;;;;;;;-1:-1:-1;;652:3172:97;;;;;;2136:32:96;652:3172:97;;;;;;;;;;;;;;;;;;-1:-1:-1;;652:3172:97;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;652:3172:97;5606:15:96;652:3172:97;;;5606:33:96;652:3172:97;-1:-1:-1;652:3172:97;5606:33:96;:::i;652:3172:97:-;;;;;;-1:-1:-1;;652:3172:97;;;;2303:62:24;;:::i;:::-;-1:-1:-1;;;;;;;;;;;652:3172:97;;-1:-1:-1;;;;;;652:3172:97;;;;;;;-1:-1:-1;;;;;652:3172:97;3975:40:24;652:3172:97;;3975:40:24;652:3172:97;;;;;;;-1:-1:-1;;652:3172:97;;;;;;;;;;;:::i;:::-;3217:103:28;;:::i;:::-;7131:7:95;652:3172:97;7117:21:95;;-1:-1:-1;;;;;652:3172:97;;-1:-1:-1;;;;;652:3172:97;;;7117:21:95;:10;:21;7113:71;;7218:14;;:::i;:::-;7265:25;;;;:::i;:::-;7305:17;;;;:53;;;652:3172:97;7304:87:95;;;;652:3172:97;7300:146:95;;652:3172:97;5173:21:96;9310:48:95;5173:21:96;;;:::i;:::-;7540:17:95;7528:30;7540:17;;;:::i;:::-;652:3172:97;;7528:11:95;652:3172:97;;;;;;;7528:30:95;652:3172:97;;7572:29:95;;;;;7642:30;;;;;:::i;:::-;7702:32;;;;:::i;:::-;7752:17;;;7748:384;;7568:1615;;;;;;;9197:17;9193:102;;7568:1615;652:3172:97;;;;;;;;;;;;;;;;;;;;;;;9310:48:95;3282:1:28;1805;-1:-1:-1;;;;;;;;;;;652:3172:97;3716:283:28;3282:1;652:3172:97;;;;;;;;;;;;;9193:102:95;-1:-1:-1;652:3172:97;9270:13:95;;652:3172:97;;9230:18:95;;652:3172:97;;-1:-1:-1;;;;;652:3172:97;;;9230:18:95;7556:1;652:3172:97;-1:-1:-1;;;;;652:3172:97;9270:13:95;;:::i;:::-;9193:102;;7748:384;8045:29;7813:50;7962:65;7813:50;7998:28;7914:29;7813:50;8057:16;7813:50;8077:40;7813:50;;;:::i;:::-;7914:29;;;:::i;:::-;837:15:62;819:34;837:15;819:34;:::i;:::-;7998:28:95;;:::i;8077:40::-;8057:16;;:::i;8045:29::-;652:3172:97;7748:384:95;;;;;;;7568:1615;8185:26;;;;652:3172:97;;7528:11:95;652:3172:97;;;;;;;8185:26:95;652:3172:97;8250:27:95;:45;:27;;;;;:::i;:45::-;8325:32;;;;;:::i;:::-;8375:17;;8371:802;;7568:1615;;;;;;;;8371:802;9096:26;8436:50;;8537:53;8436:50;8637:54;8436:50;8637:29;8436:50;9125:33;8436:50;;;;:::i;:::-;8537:53;;;;;;:::i;:::-;8637:29;;;;:::i;:::-;:54;:::i;:::-;8714:33;;;;8710:194;;8371:802;8922:65;837:15:62;8958:28:95;9038:40;837:15:62;;;819:34;837:15;819:34;:::i;9038:40:95:-;9005:30;9017:17;;;:::i;9005:30::-;652:3172:97;9125:33:95;:::i;:::-;9096:26;652:3172:97;;7528:11:95;652:3172:97;;;;;;;9096:26:95;652:3172:97;8371:802:95;;;;;;;8710:194;8797:33;8771:59;8922:65;8797:33;;;9038:40;8797:33;;;:::i;:::-;8771:59;;:::i;:::-;8852:33;;-1:-1:-1;8852:33:95;;-1:-1:-1;8710:194:95;;7300:146;652:3172:97;;-1:-1:-1;;;7414:21:95;;652:3172:97;;7414:21:95;7304:87;7363:28;;;;7304:87;;7305:53;7341:17;;;;:::i;:::-;7326:32;;7305:53;;7113:71;652:3172:97;;-1:-1:-1;;;7161:12:95;;652:3172:97;;7161:12:95;652:3172:97;;;;;;-1:-1:-1;;652:3172:97;;;;4384:17:96;652:3172:97;;;;;;;4405:14:96;;;:::i;:::-;4384:17;652:3172:97;;;;;;;4404:36:96;652:3172:97;;;4404:36:96;;:::i;652:3172:97:-;;;;;;-1:-1:-1;;652:3172:97;;;;;;;:::i;:::-;-1:-1:-1;;;;;652:3172:97;;;;;5162:13:26;652:3172:97;;;;;;:::o;:::-;;;;;;-1:-1:-1;;652:3172:97;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;652:3172:97;2307:68:96;652:3172:97;;;;;-1:-1:-1;652:3172:97;;;;;;;;;;;;;;;;;-1:-1:-1;;652:3172:97;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;-1:-1:-1;;652:3172:97;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;652:3172:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6491:14:95;652:3172:97;;6491:14:95;;:::i;652:3172:97:-;;;;;4994:47:96;652:3172:97;;;:::i;:::-;4994:47:96;;:::i;652:3172:97:-;;;;;;;;;;;;;;;;;;;;:::i;:::-;3217:103:28;;:::i;:::-;10932:22:95;652:3172:97;;;;;10928:89:95;;652:3172:97;;-1:-1:-1;;;11032:49:95;;-1:-1:-1;;;;;652:3172:97;;;11032:49:95;;;652:3172:97;;;;;;;;;;;;;;;11032:49:95;11042:17;;;652:3172:97;11032:49:95;;;;;;;-1:-1:-1;11032:49:95;;;652:3172:97;11031:50:95;;11027:102;;652:3172:97;;-1:-1:-1;;;11143:34:95;;652:3172:97;;;;;11143:34:95;652:3172:97;11143:34:95;652:3172:97;;11143:34:95;;;;;;;-1:-1:-1;11143:34:95;;;652:3172:97;11189:4:95;;;652:3172:97;;11143:51:95;11139:107;;-1:-1:-1;10932:22:95;652:3172:97;;-1:-1:-1;;;;;652:3172:97;;;;-1:-1:-1;;;;;;652:3172:97;;;;;;;-1:-1:-1;;;652:3172:97;;;11334:24:95;-1:-1:-1;;11334:24:95;3282:1:28;1805;-1:-1:-1;;;;;;;;;;;652:3172:97;3716:283:28;11139:107:95;652:3172:97;;-1:-1:-1;;;11217:18:95;;;11143:34;;;;;;;-1:-1:-1;11143:34:95;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;11027:102;-1:-1:-1;652:3172:97;;-1:-1:-1;;;11104:14:95;;;11032:49;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;10928:89;652:3172:97;;-1:-1:-1;;;10977:29:95;;;652:3172:97;;;;;;-1:-1:-1;;652:3172:97;;;;;;1298:40:96;-1:-1:-1;;;;;652:3172:97;;;;;;;;;;;;-1:-1:-1;;652:3172:97;;;;1703:14:95;;:::i;:::-;5173:21:96;;:::i;:::-;652:3172:97;;;;1750:11:95;652:3172:97;;;;;;;;;;;;;1791:1:95;652:3172:97;;;;;;;;;1750:11:95;652:3172:97;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;652:3172:97;;;;-1:-1:-1;;;;;;;;;;;652:3172:97;;;-1:-1:-1;;;;;652:3172:97;;;;;;;;;;;;;;-1:-1:-1;;652:3172:97;;;;;;3901:31:23;652:3172:97;;;;;:::i;:::-;;;-1:-1:-1;652:3172:97;-1:-1:-1;;;;;;;;;;;652:3172:97;;;-1:-1:-1;652:3172:97;;;;;;;;;;;;;;;;;3901:31:23;652:3172:97;;;;;;;;;;;;;;;;-1:-1:-1;;652:3172:97;;;;;;;-1:-1:-1;;;;;;;;;;;652:3172:97;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;652:3172:97;;;;;;;-1:-1:-1;;;;652:3172:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;652:3172:97;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;652:3172:97;;;;-1:-1:-1;652:3172:97;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;416:25:75;;;;477:31;416:25;;:::i;:::-;652:3172:97;;;;;;;;;;477:31:75;;652:3172:97;;;;;;;;;;;:::i;:::-;477:31:75;652:3172:97;;477:31:75;;;;;;:::i;:::-;518:79;;;652:3172:97;518:79:75;;652:3172:97;;;;;;-1:-1:-1;;652:3172:97;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;652:3172:97;;;;;;;;;;;;;;;;;-1:-1:-1;;652:3172:97;;;;;;;1109:35:96;652:3172:97;;;;;;;;;-1:-1:-1;;652:3172:97;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;3217:103:28;;:::i;:::-;3202:4:23;;:::i;:::-;-1:-1:-1;;;;;652:3172:97;;;9907:21:95;;9903:75;;-1:-1:-1;652:3172:97;;;9992:22:95;652:3172:97;;;;;;;;;;;;;9992:41:95;9988:91;;-1:-1:-1;;;;;652:3172:97;;;;;3586:22:95;652:3172:97;;;;;10145:44:95;;;;10089:40;;:31;652:3172:97;;;;;;;;;;;;;;10089:40:95;652:3172:97;;;;;;;;;;;;;;;10145:44:95;;;;3282:1:28;1805;-1:-1:-1;;;;;;;;;;;652:3172:97;3716:283:28;9903:75:95;652:3172:97;;-1:-1:-1;;;9951:16:95;;652:3172:97;;9951:16:95;652:3172:97;;;;;;-1:-1:-1;;652:3172:97;;;;;2666:94:96;652:3172:97;;;;;:::i;:::-;;;-1:-1:-1;652:3172:97;2666:94:96;652:3172:97;;;-1:-1:-1;652:3172:97;;;;;;;;;;;;;;;;;2666:94:96;652:3172:97;;;;;;;;;;;;;-1:-1:-1;;652:3172:97;;;;;;2816:92:96;652:3172:97;;;;;:::i;:::-;;;-1:-1:-1;652:3172:97;2816:92:96;652:3172:97;;;-1:-1:-1;652:3172:97;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;652:3172:97;;;;4911:5:26;652:3172:97;;;;;:::i;:::-;;;966:10:27;;4911:5:26;:::i;:::-;652:3172:97;;;4934:4:26;652:3172:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3217:103:28;;:::i;:::-;11459:20:95;652:3172:97;;;;;11455:85:95;;-1:-1:-1;;;;;652:3172:97;;;;;;11550:312:95;;652:3172:97;11459:20:95;652:3172:97;;-1:-1:-1;;;;652:3172:97;-1:-1:-1;;;652:3172:97;;;11872:27:95;11915:20;-1:-1:-1;11915:20:95;;3282:1:28;1805;-1:-1:-1;;;;;;;;;;;652:3172:97;3716:283:28;11550:312:95;652:3172:97;;-1:-1:-1;;;11597:45:95;;-1:-1:-1;;;;;652:3172:97;;11597:45:95;;;652:3172:97;;;11597:45:95;;652:3172:97;;;;;;11597:45:95;11607:15;;;652:3172:97;11597:45:95;;;;;;;-1:-1:-1;11597:45:95;;;11550:312;11596:46;;11592:104;;652:3172:97;;-1:-1:-1;;;11714:30:95;;;652:3172:97;11714:30:95;652:3172:97;11714:30:95;;;;;;;;-1:-1:-1;11714:30:95;;;11550:312;11756:4;;;652:3172:97;;11714:47:95;11710:109;;-1:-1:-1;11459:20:95;652:3172:97;;-1:-1:-1;;;;;;652:3172:97;-1:-1:-1;;;;;652:3172:97;;;;;;;;;11550:312:95;;;;;;11710:109;652:3172:97;;-1:-1:-1;;;11788:16:95;;;11714:30;;;;;;;-1:-1:-1;11714:30:95;;;;;;:::i;:::-;;;;;;11592:104;652:3172:97;;-1:-1:-1;;;11669:12:95;;652:3172:97;;11669:12:95;11597:45;;;;;;;;;;;;;;:::i;:::-;;;;11455:85;652:3172:97;;-1:-1:-1;;;11502:27:95;;;652:3172:97;;;;;;-1:-1:-1;;652:3172:97;;;;;;;;;:::i;:::-;;;3217:103:28;;;:::i;:::-;-1:-1:-1;;;;;652:3172:97;;;;;6112:23:95;;6108:79;;6273:6;652:3172:97;6206:13:95;;;;:::i;:::-;652:3172:97;;;-1:-1:-1;652:3172:97;;;;6273:6:95;:::i;:::-;652:3172:97;;;;;;;;;;;;6302:10:95;;6296:43;;652:3172:97;6296:43:95;1805:1:28;-1:-1:-1;;;;;;;;;;;652:3172:97;;;;;;;;;;;;;;6108:79:95;652:3172:97;;-1:-1:-1;;;6158:18:95;;652:3172:97;;6158:18:95;652:3172:97;;;;;;-1:-1:-1;;652:3172:97;;;;;;-1:-1:-1;652:3172:97;2546:64:96;652:3172:97;;;;-1:-1:-1;652:3172:97;;;;;;;;;;;;;;-1:-1:-1;;652:3172:97;;;;2058:22:96;652:3172:97;;;-1:-1:-1;;;;;652:3172:97;;;;;;;;;;;;;;-1:-1:-1;;652:3172:97;;;;;5173:21:96;;:::i;652:3172:97:-;;;;;;-1:-1:-1;;652:3172:97;;;;;;3217:103:28;;:::i;:::-;966:10:27;-1:-1:-1;652:3172:97;;;;;;;;;;1109:35:96;;652:3172:97;;4468:23:23;4464:108;;652:3172:97;;;;10692:21:95;10688:71;;652:3172:97;;10805:22:95;652:3172:97;;;;;;;;10805:22:95;1805:1:28;-1:-1:-1;;;;;;;;;;;652:3172:97;;4464:108:23;652:3172:97;;;;4514:47:23;;;;;;966:10:27;652:3172:97;4514:47:23;;652:3172:97;;;;;4514:47:23;652:3172:97;;;;;;-1:-1:-1;;652:3172:97;;;;;;;;;:::i;:::-;3123:14:95;;:::i;:::-;3154:24;;;:::i;:::-;3181:29;;;;;:::i;:::-;652:3172:97;;;;;;;3235:1:95;652:3172:97;;;;;;;3213:33:95;;;:::i;:::-;652:3172:97;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;652:3172:97;;;;1888:24:96;652:3172:97;;;-1:-1:-1;;;;;652:3172:97;;;;;;;;;;;;;;-1:-1:-1;;652:3172:97;;;;5767:26:23;652:3172:97;;;;;;;:::i;:::-;;-1:-1:-1;652:3172:97;-1:-1:-1;;;;;;;;;;;652:3172:97;;3202:4:23;4919:24;652:3172:97;-1:-1:-1;652:3172:97;4919:24:23;652:3172:97;3202:4:23;:::i;:::-;5767:26;:::i;652:3172:97:-;;;;;;-1:-1:-1;;652:3172:97;;;;;;;;;;;;;-1:-1:-1;;;;;652:3172:97;;;;;;;;;;;;-1:-1:-1;;652:3172:97;;;;;;;675:39:96;652:3172:97;;;;;;;;;-1:-1:-1;;652:3172:97;;;;;5162:29:26;652:3172:97;;;;;:::i;:::-;5162:20:26;652:3172:97;;;;;;:::i;:::-;5162:20:26;:::i;652:3172:97:-;;;;;;-1:-1:-1;;652:3172:97;;;;;;;;;;;;;;;;;;;-1:-1:-1;;652:3172:97;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;-1:-1:-1;;;;;652:3172:97;;;;;;;;;;;;;;;:::i;:::-;1972:48:95;;652:3172:97;;;;;;;:::i;:::-;;;;;;;;;;;;;;2034:16:95;;2030:111;;652:3172:97;;2233:39:95;1057:70:87;2233:39:95;;4622:48:96;2196:77:95;2233:39;;;;2196:77;;:::i;:::-;2312:36;;4994:47:96;652:3172:97;2312:36:95;;;4994:47:96;;:::i;:::-;2389:37:95;;;4622:48:96;;:::i;:::-;1057:70:87;;:::i;:::-;652:3172:97;;;;;;;;;;;;;2030:111:95;2089:41;;;;-1:-1:-1;652:3172:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;4622:48:96;652:3172:97;2196:77:95;652:3172:97;1057:70:87;652:3172:97;;;:::i;:::-;;;;;2030:111:95;;;;;652:3172:97;;;;;;-1:-1:-1;;652:3172:97;;;;2357:1:24;652:3172:97;;;;;:::i;:::-;2303:62:24;;:::i;:::-;2357:1;:::i;652:3172:97:-;;;;;;-1:-1:-1;;652:3172:97;;;;;;;;;:::i;:::-;;;3217:103:28;;:::i;:::-;-1:-1:-1;;;;;652:3172:97;;4890:21:95;4886:75;;4975:11;;4971:73;;845:69:87;4803:22:96;;:::i;:::-;5173:21;;:::i;:::-;845:69:87;;;:::i;:::-;5180:10:95;652:3172:97;;;;5606:15:96;652:3172:97;;;;;5180:10:95;;;5606:33:96;;;:::i;:::-;5150:41:95;;5146:96;;5267:40;;;;;:::i;5146:96::-;652:3172:97;;-1:-1:-1;;;5214:17:95;;652:3172:97;;5214:17:95;4971:73;652:3172:97;;-1:-1:-1;;;5009:24:95;;652:3172:97;;5009:24:95;652:3172:97;;;;;;-1:-1:-1;;652:3172:97;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;652:3172:97;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;7556:1:95;652:3172:97;;;;;;;:::o;:::-;;;;;;;;;;:::o;5256:193:96:-;-1:-1:-1;;;;;652:3172:97;-1:-1:-1;652:3172:97;;;5383:15:96;652:3172:97;;;;;5383:59:96;;5256:193;;5383:59;:::i;652:3172:97:-;;;;;;;;;;1167:340:71;;652:3172:97;1167:340:71;6893:76:25;;:::i;:::-;;;:::i;:::-;1805:1:28;-1:-1:-1;;;;;;;;;;;652:3172:97;-1:-1:-1;;;;;652:3172:97;;1376:73:71;;1167:340;652:3172:97;;;;:::i;:::-;;;3642:39;;;;;;;652:3172;;;;;;;3642:39;;;652:3172;-1:-1:-1;;;;;652:3172:97;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;3734:29;652:3172;;2577:147:26;652:3172:97;3734:29;652:3172;;;;:::i;:::-;;;;;;;;3745:17;652:3172;3734:29;652:3172;;3734:29;;;;;;:::i;:::-;;:::i;:::-;3788:11;3801:13;;2577:147:26;;:::i;1376:73:71:-;6961:1:25;6893:76;;;:::i;:::-;;;:::i;6961:1::-;1376:73:71;;;2492:191:95;-1:-1:-1;;;;;652:3172:97;-1:-1:-1;652:3172:97;;;5606:15:96;652:3172:97;;;;;5606:33:96;;;:::i;:::-;5173:21;;:::i;:::-;4803:22;;:::i;:::-;652:3172:97;1884:1:87;652:3172:97;;;;;;;1884:1:87;652:3172:97;;;;;;;8188:25:57;;;:::i;652:3172:97:-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;3612:132:96:-;819:34:62;837:15;819:34;:::i;:::-;3683:54:96;3703:17;652:3172:97;3684:36:96;652:3172:97;;;;;;;3684:36:96;;:::i;:::-;652:3172:97;;;3683:54:96;;:::i;:::-;652:3172:97;3612:132:96;:::o;3313:244::-;3418:17;652:3172:97;;;;;;;;;;;;;;3406:29:96;3402:85;;3503:47;3504:29;;;;:::i;3402:85::-;652:3172:97;;-1:-1:-1;;;3458:18:96;;;;;3217:103:28;;;;:::i;:::-;652:3172:97;;-1:-1:-1;;;;;652:3172:97;;;6521:23:95;;6517:79;;6650:11;;6646:70;;652:3172:97;6742:10:95;;;;;;-1:-1:-1;652:3172:97;;6887:49:95;;652:3172:97;;;;6864:6:95;;652:3172:97;;6821:18:95;;652:3172:97;;-1:-1:-1;;;;;652:3172:97;;;6821:18:95;6864:6;:::i;:::-;6887:49;652:3172:97;;6898:10:95;;;;6887:49;;;:::i;:::-;;;;3282:1:28;;1805;-1:-1:-1;;;;;;;;;;;652:3172:97;3716:283:28;6754:3:95;6790:9;6773:27;652:3172:97;6790:9:95;6783:17;6790:9;;;;;:::i;:::-;652:3172:97;6783:17:95;:::i;6773:27::-;6754:3;652:3172:97;6731:9:95;;6646:70;652:3172:97;;-1:-1:-1;;;6684:21:95;;;;;652:3172:97;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;652:3172:97;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;652:3172:97;;;;:::o;:::-;;;:::o;3405:215:24:-;-1:-1:-1;;;;;652:3172:97;;;;3489:22:24;;3485:91;;-1:-1:-1;;;;;;;;;;;652:3172:97;;-1:-1:-1;;;;;;652:3172:97;;;;;;;;3975:40:24;-1:-1:-1;;3975:40:24;3405:215::o;3485:91::-;652:3172:97;;-1:-1:-1;;;3534:31:24;;3509:1;3534:31;;;652:3172:97;;;3534:31:24;2731:227:95;;2871:34;2731:227;652:3172:97;-1:-1:-1;652:3172:97;2871:18:95;652:3172:97;;;-1:-1:-1;652:3172:97;;;;;;;;;;;;;;;;;2871:34:95;652:3172:97;;-1:-1:-1;652:3172:97;2907:11:95;652:3172:97;;;-1:-1:-1;652:3172:97;;2927:16:95;652:3172:97;;;-1:-1:-1;652:3172:97;;;1884:1:87;652:3172:97;;;;;;;1884:1:87;652:3172:97;;;;;;;8188:25:57;;;:::i;3326:384:28:-;-1:-1:-1;;;;;;;;;;;1847:1:28;652:3172:97;;3526:20:28;3522:88;;1847:1;652:3172:97;;3326:384:28:o;3522:88::-;652:3172:97;;-1:-1:-1;;;3569:30:28;;;;;1867:311:97;12135:10:95;-1:-1:-1;652:3172:97;;;5606:15:96;652:3172:97;;;;;1867:311;;;-1:-1:-1;;1867:311:97;;12119:93:95;;819:34:62;837:15;819:34;:::i;:::-;12135:10:95;652:3172:97;;;;5606:15:96;652:3172:97;;;;;12170:41:95;;12135:10;;5606:33:96;;;:::i;12119:93:95:-;837:15:62;;12222:67:95;819:34:62;837:15;819:34;:::i;:::-;12259:29:95;4803:22:96;;;:::i;12222:67:95:-;837:15:62;;12299:68:95;819:34:62;837:15;819:34;:::i;:::-;12335:31:95;5173:21:96;;;:::i;12299:68:95:-;12394:14;;;12769:34;12394:14;12769:25;12394:18;:14;;:::i;:::-;:18;:::i;:::-;12726:33;12445:18;;652:3172:97;;7528:11:95;652:3172:97;;;;;;;12445:18:95;652:3172:97;12502:23:95;;652:3172:97;;12502:16:95;652:3172:97;;;;;;;12502:23:95;652:3172:97;12660:30:95;390:70:87;;;;;:::i;:::-;12660:30:95;;;;:::i;:::-;12639:18;;652:3172:97;;7528:11:95;652:3172:97;;;;;;;12639:18:95;652:3172:97;12726:33:95;:::i;:::-;12700:23;;652:3172:97;;12502:16:95;652:3172:97;;;;;;;12700:23:95;652:3172:97;;;12769:18:95;652:3172:97;;;;;;;12769:34:95;:50;652:3172:97;;;12769:50:95;:::i;:::-;652:3172:97;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;652:3172:97;;;;;12135:10:95;;12835:74;;652:3172:97;;12835:74:95;652:3172:97;;;;;;12135:10:95;;2125:46:97;;652:3172;;;;2125:46;;;;1867:311::o;6868:300:26:-;;-1:-1:-1;;;;;652:3172:97;;;;;6951:18:26;;6947:86;;652:3172:97;;7046:16:26;;;7042:86;;-1:-1:-1;;;;;652:3172:97;;;;;;5606:15:96;652:3172:97;;;;;5606:33:96;;;:::i;:::-;2607:19:97;;;;2603:115;;3459:25;2838:21;:65;3459:25;2838:21;;;3354:65;2838:21;652:3172;;;;;;;;5606:15:96;652:3172:97;;;;;;;2838:21;837:15:62;;819:34;837:15;819:34;:::i;:::-;652:3172:97;;2838:65;;:::i;:::-;-1:-1:-1;;;;;;;652:3172:97;;;;;;5606:15:96;652:3172:97;;;;;837:15:62;;5606:33:96;:24;819:34:62;837:15;819:34;:::i;:::-;-1:-1:-1;;;;;652:3172:97;;;;;;;5606:15:96;652:3172:97;;;;;;;5606:33:96;652:3172:97;3354:65;;:::i;:::-;-1:-1:-1;;652:3172:97;;;;;;;;;;;;;2603:115;652:3172;;-1:-1:-1;;;2653:50:97;;-1:-1:-1;;;;;652:3172:97;;;;2653:50;;;652:3172;;;;;;;;;;;;;;;;12266:60:26;7042:86;652:3172:97;;-1:-1:-1;;;7085:32:26;;6967:1;7085:32;;;652:3172:97;;;7085:32:26;6947:86;652:3172:97;;-1:-1:-1;;;6992:30:26;;6967:1;6992:30;;;652:3172:97;;;6992:30:26;14291:213:58;652:3172:97;14369:24:58;;;;14365:103;;652:3172:97;14291:213:58;:::o;14365:103::-;652:3172:97;;;;14416:41:58;;;;;;14447:2;14416:41;;;652:3172:97;;;;;14416:41:58;652:3172:97;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::o;7558:604:86:-;;652:3172:97;;7686:17:86;7682:83;;652:3172:97;7789:27:86;652:3172:97;7789:27:86;652:3172:97;;7789:27:86;;;;;;:::i;:::-;7860:14;;;:::i;:::-;652:3172:97;;;;;;;;;;;;;;;;7888:22:86;;;7884:77;;7975:21;-1:-1:-1;7975:84:86;;;;7558:604;7971:139;;;;8127:28;;;;:::i;7971:139::-;7789:27;8082:17;;;652:3172:97;8075:24:86;:::o;7975:84::-;652:3172:97;;;8009:16:86;4622:13:96;652:3172:97;8009:16:86;:::i;:::-;652:3172:97;;;8001:24:86;:57;;;;;7975:84;;;;;;;8001:57;8029:29;8038:8;;;8029:18;8038:8;8029:23;8038:8;;:::i;:::-;8029:18;:::i;:::-;652:3172:97;;;;;8029:23:86;652:3172:97;;;;8029:29:86;;8001:57;;;;7884:77;7933:17;;;7789:27;7933:17;;;652:3172:97;7926:24:86;:::o;7682:83::-;7726:28;;;;:::i;7558:604::-;;652:3172:97;;7686:17:86;7682:83;;652:3172:97;7789:27:86;652:3172:97;7789:27:86;652:3172:97;;7789:27:86;;;;;;:::i;:::-;7860:14;;;:::i;:::-;652:3172:97;;;;;;;;;;;;;;;;7888:22:86;;;7884:77;;7975:21;-1:-1:-1;7975:84:86;;;;7558:604;7971:139;;;;8127:28;;;;:::i;7975:84::-;652:3172:97;;;8009:16:86;4994:12:96;652:3172:97;8009:16:86;:::i;:::-;652:3172:97;;;8001:24:86;:57;;;;;7975:84;;;;;;;8001:57;8029:29;8038:8;;;8029:18;8038:8;8029:23;8038:8;;:::i;:::-;8029:18;:::i;:29::-;;8001:57;;;;7682:83;7726:28;;;;:::i;7558:604::-;;652:3172:97;;7686:17:86;7682:83;;652:3172:97;7789:27:86;652:3172:97;7789:27:86;652:3172:97;;7789:27:86;;;;;;:::i;:::-;7860:14;;;;;:::i;:::-;652:3172:97;;;;;;;;;;;;;;;;7888:22:86;;;7884:77;;7975:21;-1:-1:-1;7975:84:86;;;;7558:604;7971:139;;;;8127:28;;;;:::i;7971:139::-;8082:17;;7789:27;8082:17;652:3172:97;8075:24:86;:::o;7975:84::-;652:3172:97;;;8009:16:86;652:3172:97;;8009:16:86;:::i;:::-;652:3172:97;;;8001:24:86;:57;;;;;7975:84;;;;;;;8001:57;8029:29;8038:8;;;8029:18;8038:8;8029:23;8038:8;;:::i;:::-;8029:18;;:::i;:29::-;;8001:57;;;;7884:77;7933:17;;;;;7789:27;7933:17;652:3172:97;7926:24:86;:::o;7682:83::-;7726:28;;;;:::i;4148:103:23:-;966:10:27;-1:-1:-1;652:3172:97;;;;;;;;;675:39:96;;652:3172:97;;3901:31:23;652:3172:97;;4468:23:23;4464:108;;4148:103;:::o;:::-;966:10:27;-1:-1:-1;652:3172:97;;;;;;;;;966:38:96;;652:3172:97;;3901:31:23;652:3172:97;4148:103:23;966:10:27;-1:-1:-1;652:3172:97;;;;;;;;;821:37:96;;652:3172:97;;3901:31:23;652:3172:97;4148:103:23;-1:-1:-1;652:3172:97;;;-1:-1:-1;;;;;;;;;;;652:3172:97;;;;;;;;966:10:27;652:3172:97;;;;;;;;;3901:31:23;652:3172:97;7270:387:23;-1:-1:-1;;;;;652:3172:97;;13555:17:95;652:3172:97;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2887:71:23;652:3172:97;;;;13555:17:95;652:3172:97;;;;;;;;;;;-1:-1:-1;;;;;652:3172:97;;;;;;;;;;-1:-1:-1;;652:3172:97;7509:4:23;652:3172:97;;;966:10:27;;-1:-1:-1;;;;;652:3172:97;-1:-1:-1;7532:40:23;-1:-1:-1;;7532:40:23;7509:4;7586:11;:::o;7432:219::-;7628:12;;13555:17:95;7628:12:23;:::o;7270:387::-;-1:-1:-1;;;;;652:3172:97;;-1:-1:-1;652:3172:97;;;;;;;;;675:39:96;;-1:-1:-1;;;;;;;;;;;2887:71:23;652:3172:97;;3901:31:23;652:3172:97;;;;-1:-1:-1;652:3172:97;;;;;;;;;;;-1:-1:-1;;;;;652:3172:97;;;;;;;;;;-1:-1:-1;;652:3172:97;7509:4:23;652:3172:97;;;966:10:27;;-1:-1:-1;;;;;652:3172:97;;7532:40:23;-1:-1:-1;;7532:40:23;7509:4;7586:11;:::o;7432:219::-;7628:12;;;-1:-1:-1;7628:12:23;:::o;7270:387::-;-1:-1:-1;;;;;652:3172:97;;-1:-1:-1;652:3172:97;;;;;;;;;821:37:96;;-1:-1:-1;;;;;;;;;;;2887:71:23;652:3172:97;;3901:31:23;652:3172:97;7270:387:23;-1:-1:-1;;;;;652:3172:97;;-1:-1:-1;652:3172:97;;;;;;;;;966:38:96;;-1:-1:-1;;;;;;;;;;;2887:71:23;652:3172:97;;3901:31:23;652:3172:97;7270:387:23;-1:-1:-1;;;;;652:3172:97;;-1:-1:-1;652:3172:97;;;;;;;;;1109:35:96;;-1:-1:-1;;;;;;;;;;;2887:71:23;652:3172:97;;3901:31:23;652:3172:97;7270:387:23;-1:-1:-1;652:3172:97;;;-1:-1:-1;;;;;;;;;;;652:3172:97;;;;;;;;-1:-1:-1;;;;;652:3172:97;;;;;;;;;;;;3901:31:23;652:3172:97;7892:388:23;-1:-1:-1;652:3172:97;;;-1:-1:-1;;;;;;;;;;;652:3172:97;;;;;;;;-1:-1:-1;;;;;652:3172:97;;;;;;;;;;;;;;;;-1:-1:-1;652:3172:97;;;;;;;;;;;-1:-1:-1;;;;;652:3172:97;;;;;;;;;;-1:-1:-1;;652:3172:97;;;966:10:27;;-1:-1:-1;;;;;652:3172:97;;8155:40:23;-1:-1:-1;;8155:40:23;652:3172:97;8209:11:23;:::o;652:3172:97:-;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;652:3172:97;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;652:3172:97;;;;;;;;;;;;;;;;-1:-1:-1;;;;;652:3172:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;652:3172:97;;;;;;;;;;-1:-1:-1;;;;;652:3172:97;;;;;;;;;;-1:-1:-1;;;;;652:3172:97;;;;;;;;;;-1:-1:-1;;;;;652:3172:97;;;;;;;;;;-1:-1:-1;;;;;652:3172:97;;;;;2658:162:24;-1:-1:-1;;;;;;;;;;;652:3172:97;-1:-1:-1;;;;;652:3172:97;966:10:27;2717:23:24;2713:101;;2658:162::o;2713:101::-;652:3172:97;;-1:-1:-1;;;2763:40:24;;966:10:27;2763:40:24;;;652:3172:97;;;2763:40:24;2557:104:57;;2641:5;;;;;;:13;2557:104;:::o;2641:13::-;;;2557:104;:::o;652:3172:97:-;;;;;;;:::o;3803:4116:57:-;;;652:3172:97;;;;-1:-1:-1;;3803:4116:57;;4383:131;;;;;;;;;;;;4595:10;;4591:368;;5065:20;;;;5061:88;;5435:300;;;652:3172:97;-1:-1:-1;652:3172:97;5954:31:57;;5999:371;;;6813:1;652:3172:97;;6794:1:57;652:3172:97;6793:21:57;652:3172:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5999:371:57;;;;-1:-1:-1;5999:371:57;;;5435:300;;;;;;652:3172:97;5435:300:57;;5999:371;6436:21;652:3172:97;3803:4116:57;:::o;5061:88::-;652:3172:97;;-1:-1:-1;;;5112:22:57;;;;;4591:368;4925:19;;;;;;;:::i;652:3172:97:-;7178:12:86;652:3172:97;;;;;;7178:12:86;-1:-1:-1;652:3172:97;-1:-1:-1;;;;;;;;;;;652:3172:97;;-1:-1:-1;652:3172:97;:::o;:::-;7178:12:86;652:3172:97;;;;;;7178:12:86;-1:-1:-1;652:3172:97;-1:-1:-1;;;;;;;;;;;652:3172:97;;-1:-1:-1;652:3172:97;:::o;:::-;;;;;;;;-1:-1:-1;652:3172:97;;-1:-1:-1;652:3172:97;;;-1:-1:-1;652:3172:97;:::o;:::-;6360:12:86;652:3172:97;-1:-1:-1;;;652:3172:97;;;;;;;;;6360:12:86;652:3172:97;;;;;;6360:12:86;-1:-1:-1;652:3172:97;-1:-1:-1;;;;;;;;;;;652:3172:97;;:::o;:::-;6360:12:86;652:3172:97;-1:-1:-1;;;652:3172:97;;;;;;;;;6360:12:86;652:3172:97;;;;;;6360:12:86;-1:-1:-1;652:3172:97;-1:-1:-1;;;;;;;;;;;652:3172:97;;:::o;:::-;;;;;-1:-1:-1;;;652:3172:97;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;12178:17:26;;;652:3172:97;;;;;;;;6246:584:86;;;;6360:12;652:3172:97;;;6360:24:86;;6356:75;;6246:584;6474:30;;;:::i;:::-;652:3172:97;;;;;;6578:12:86;;;:::i;:::-;6604:24;;;;6246:584;-1:-1:-1;6600:188:86;;;-1:-1:-1;;;652:3172:97;;;;;;;;;-1:-1:-1;652:3172:97;;;-1:-1:-1;652:3172:97;;;;;;6798:25:86;652:3172:97;6246:584:86:o;6600:188::-;8167:38:60;;-1:-1:-1;;;;;652:3172:97;;-1:-1:-1;8167:38:60;:::i;:::-;6753:24:86;;;;;:::i;:::-;6798:25;6246:584;:::o;6604:24::-;652:3172:97;;;;;;6614:14:86;;-1:-1:-1;6604:24:86;;;6356:75;-1:-1:-1;;;652:3172:97;;;;;;;;;;;;;;;;-1:-1:-1;652:3172:97;;;;-1:-1:-1;;;;;;;;;;;652:3172:97;;6356:75:86;;;6246:584;;;;6360:12;652:3172:97;;;6360:24:86;;6356:75;;6246:584;6474:30;;;:::i;:::-;652:3172:97;;;;;;6578:12:86;;;:::i;:::-;6604:24;;;;6246:584;-1:-1:-1;6600:188:86;;;-1:-1:-1;;;652:3172:97;;;;;;;;;-1:-1:-1;652:3172:97;;;-1:-1:-1;652:3172:97;;;;;;6798:25:86;652:3172:97;6246:584:86:o;6600:188::-;8167:38:60;;-1:-1:-1;;;;;652:3172:97;;-1:-1:-1;8167:38:60;:::i;:::-;6753:24:86;;;;;:::i;6604:::-;652:3172:97;;;;;;6614:14:86;;-1:-1:-1;6604:24:86;;;6356:75;-1:-1:-1;;;652:3172:97;;;;;;;;;;;;;;;;-1:-1:-1;652:3172:97;;;;-1:-1:-1;;;;;;;;;;;652:3172:97;;6356:75:86;;;6246:584;;;;;6360:12;;;652:3172:97;;;6360:24:86;;6356:75;;6246:584;6474:30;;;;;:::i;:::-;652:3172:97;;;;;;6578:12:86;;;;:::i;:::-;6604:24;;;;6246:584;-1:-1:-1;6600:188:86;;;-1:-1:-1;;;;;652:3172:97;;;;;;;6644:21:86;;;:29;:21;;:::i;6600:188::-;6753:24;;652:3172:97;;8167:38:60;;-1:-1:-1;;;;;652:3172:97;;;;;8167:38:60;:::i;:::-;6753:24:86;;;:::i;6604:::-;652:3172:97;;;;;;6614:14:86;;-1:-1:-1;6604:24:86;;;6356:75;-1:-1:-1;;;652:3172:97;;;;;;6360:12:86;652:3172:97;;;;;;;:::i;:::-;;;12178:17:26;;;652:3172:97;;;;;;;;6356:75:86;;;1303:160:45;652:3172:97;;-1:-1:-1;;;1412:43:45;;;;-1:-1:-1;;;;;652:3172:97;;;1412:43:45;;;652:3172:97;;;;;;;;;1412:43:45;;;652:3172:97;;;;-1:-1:-1;;;;;652:3172:97;;;;;;;;1412:43:45;652:3172:97;;;1412:43:45;:::i;12922:460:95:-;;13024:14;;:::i;:::-;13015:23;;;13011:75;;-1:-1:-1;652:3172:97;;;13100:20:95;652:3172:97;;;;;;;;13128:10:95;652:3172:97;;;;;;;;;;13096:93:95;;13208:32;13128:10;13208:32;;:::i;:::-;13255:11;;;13251:68;;-1:-1:-1;652:3172:97;;;13100:20:95;652:3172:97;;;;;;;;13128:10:95;652:3172:97;;;;;;;;;-1:-1:-1;;652:3172:97;13371:4:95;652:3172:97;;;12922:460:95:o;13251:68::-;652:3172:97;;-1:-1:-1;;;13289:19:95;;;;;13096:93;652:3172:97;;-1:-1:-1;;;13162:16:95;;;;;13011:75;652:3172:97;;-1:-1:-1;;;13061:14:95;;;;;10580:184:86;4803:13:96;652:3172:97;10303:8:60;;;:63;-1:-1:-1;10303:63:60;-1:-1:-1;;;;;652:3172:97;;10726:7:86;652:3172:97;;10736:12:86;652:3172:97;;;;;;10736:12:86;-1:-1:-1;652:3172:97;-1:-1:-1;;;;;;;;;;;652:3172:97;;10580:184:86;:::o;10726:31::-;;-1:-1:-1;10580:184:86;:::o;10303:63:60:-;12178:17:26;;;652:3172:97;;;;;4803:13:96;-1:-1:-1;14249:109:60;;;652:3172:97;;;10303:63:60;;10580:184:86;5173:12:96;652:3172:97;10303:8:60;;;:63;-1:-1:-1;10303:63:60;-1:-1:-1;;;;;652:3172:97;;10726:7:86;652:3172:97;;10736:12:86;652:3172:97;;;;;;10736:12:86;-1:-1:-1;652:3172:97;-1:-1:-1;;;;;;;;;;;652:3172:97;;10580:184:86;:::o;10303:63:60:-;12178:17:26;;;652:3172:97;;;;;5173:12:96;-1:-1:-1;14249:109:60;;;652:3172:97;;;10303:63:60;;10580:184:86;652:3172:97;;10303:8:60;;;:63;-1:-1:-1;10303:63:60;-1:-1:-1;;;;;652:3172:97;;10726:7:86;652:3172:97;;10736:12:86;:17;:12;;:17;:::i;:::-;652:3172:97;;;;;;10580:184:86;:::o;10303:63:60:-;12178:17:26;;652:3172:97;;;;;;;;14249:109:60;-1:-1:-1;14249:109:60;;-1:-1:-1;14249:109:60;;;652:3172:97;;;10303:63:60;;11224:487:26;;-1:-1:-1;;;;;652:3172:97;;;11389:19:26;11385:89;;652:3172:97;;11487:21:26;11483:90;;11582:20;:29;:20;;:::i;:29::-;652:3172:97;11224:487:26:o;1662:280:87:-;;;1884:1;652:3172:97;;;;;;;1884:1:87;652:3172:97;;;;;;;8188:25:57;;;:::i;6999:207:86:-;4622:13:96;652:3172:97;9594:15:60;-1:-1:-1;9619:18:60;9652:7;9658:1;9652:7;;9648:234;;6999:207:86;9906:53:60;;;;:::i;:::-;9977:8;;;:63;-1:-1:-1;9977:63:60;-1:-1:-1;;;;;652:3172:97;;7168:7:86;652:3172:97;;7178:17:86;652:3172:97;7178:17:86;;:::i;9977:63:60:-;9992:41;10025:7;9992:48;10025:7;;:::i;:::-;4622:13:96;14249:109:60;;-1:-1:-1;;;;;;;;;;;14249:109:60;14099:265;;9992:41;652:3172:97;;;;;9992:48:60;9977:63;;9648:234;9695:14;;;;;:::i;:::-;652:3172:97;;;;;;;9906:53:60;14249:109;4622:13:96;-1:-1:-1;14249:109:60;652:3172:97;14249:109:60;;-1:-1:-1;;;;;;;;;;;14249:109:60;652:3172:97;;;;;9727:48:60;9723:149;652:3172:97;;;9795:10:60;9723:149;9648:234;;9723:149;9850:7;;;;;;:::i;:::-;9723:149;9648:234;;6999:207:86;4994:12:96;652:3172:97;9594:15:60;-1:-1:-1;9619:18:60;9652:7;9658:1;9652:7;;9648:234;;6999:207:86;9906:53:60;;;;:::i;:::-;9977:8;;;:63;-1:-1:-1;9977:63:60;-1:-1:-1;;;;;652:3172:97;;7168:7:86;652:3172:97;;7178:17:86;652:3172:97;7178:17:86;;:::i;9977:63:60:-;9992:41;10025:7;9992:48;10025:7;;:::i;:::-;4994:12:96;14249:109:60;;-1:-1:-1;;;;;;;;;;;14249:109:60;14099:265;;9992:48;9977:63;;9648:234;9695:14;;;;;:::i;:::-;652:3172:97;;;;;;;9906:53:60;14249:109;4994:12:96;-1:-1:-1;14249:109:60;652:3172:97;14249:109:60;;-1:-1:-1;;;;;;;;;;;14249:109:60;652:3172:97;;;;;9727:48:60;9723:149;652:3172:97;;;9795:10:60;9723:149;9648:234;;9723:149;9850:7;;;;;;:::i;:::-;9723:149;9648:234;;6999:207:86;;652:3172:97;;9594:15:60;-1:-1:-1;9619:18:60;9652:7;9658:1;9652:7;;9648:234;;6999:207:86;9906:53:60;;;;;:::i;:::-;9977:8;;;:63;-1:-1:-1;9977:63:60;;-1:-1:-1;;;;;652:3172:97;;7168:7:86;652:3172:97;;;7178:12:86;;:17;:12;;:17;:::i;9977:63:60:-;9992:41;10025:7;9992:48;10025:7;;:::i;:::-;9992:41;14249:109;;;;;;14099:265;;9992:48;9977:63;;;9648:234;9695:14;;;;;:::i;:::-;652:3172:97;;;;;;;9906:53:60;14249:109;;-1:-1:-1;14249:109:60;652:3172:97;14249:109:60;;;-1:-1:-1;14249:109:60;;652:3172:97;;;;;9727:48:60;9723:149;652:3172:97;;;9795:10:60;9723:149;9648:234;;9723:149;9850:7;;;;;;:::i;:::-;9723:149;9648:234;;652:3172:97;;;;;;;:::i;:::-;-1:-1:-1;652:3172:97;;;;;;;:::o;11486:272:86:-;652:3172:97;;:::i;:::-;;;;:::i;:::-;;4622:13:96;652:3172:97;;;;;;;;4622:13:96;-1:-1:-1;652:3172:97;-1:-1:-1;;;;;;;;;;;652:3172:97;;:::i;:::-;;;;;;;;;;;;11731:17:86;;652:3172:97;;11718:12:86;652:3172:97;;;;;;11718:12:86;-1:-1:-1;652:3172:97;-1:-1:-1;;;;;;;;;;;652:3172:97;;;;;;;;:::i;:::-;;;;11672:79:86;;652:3172:97;11486:272:86;:::o;:::-;652:3172:97;;:::i;:::-;;;;:::i;:::-;;4994:12:96;652:3172:97;;;;;;;;4994:12:96;-1:-1:-1;652:3172:97;-1:-1:-1;;;;;;;;;;;652:3172:97;;:::i;:::-;;;;;;;;;;;;11731:17:86;;652:3172:97;;11718:12:86;652:3172:97;;;;;;11718:12:86;-1:-1:-1;652:3172:97;-1:-1:-1;;;;;;;;;;;652:3172:97;;;;;;;;:::i;11486:272:86:-;;652:3172:97;11308:22:60;11718:31:86;11486:272;652:3172:97;;:::i;:::-;;;;:::i;:::-;;11308:22:60;;:::i;:::-;652:3172:97;;:::i;:::-;;11718:12:86;652:3172:97;;;;;11731:17:86;652:3172:97;;;;;11731:17:86;;652:3172:97;;11718:12:86;;:31;:::i;:::-;652:3172:97;;;;;;;;;:::i;:::-;;;;;;11731:17:86;11672:79;;652:3172:97;11486:272:86;:::o;1702:188:45:-;652:3172:97;;-1:-1:-1;;;1829:53:45;;;;-1:-1:-1;;;;;652:3172:97;;;1829:53:45;;;652:3172:97;;;;;;;;;;;;;;;;;1829:53:45;;;652:3172:97;;;;;;;-1:-1:-1;;;;;652:3172:97;;;;;1829:53:45;652:3172:97;;;1829:53:45;:::i;7084:141:25:-;652:3172:97;-1:-1:-1;;;;;;;;;;;652:3172:97;;;;7150:18:25;7146:73;;7084:141::o;7146:73::-;652:3172:97;;-1:-1:-1;;;7191:17:25;;;;;652:3172:97;;;;;;;;;;;;:::i;13388:2406:95:-;13510:30;13388:2406;13510:30;652:3172:97;;;13510:30:95;;;;;;:::i;:::-;652:3172:97;;-1:-1:-1;;;;;652:3172:97;;;;13555:31:95;13551:88;;13653:20;;;;652:3172:97;;;;;;;;;;13653:25:95;13649:85;;13748:29;;;652:3172:97;;13748:29:95;;652:3172:97;13748:43:95;;-1:-1:-1;;;;;652:3172:97;;;13748:43:95;;13744:943;;13388:2406;652:3172:97;;;15647:32:95;652:3172:97;14817:36:95;652:3172:97;;;14697:30:95;652:3172:97;;;;;;;;;;;;13555:17:95;652:3172:97;;-1:-1:-1;;;;;;652:3172:97;;;;;;-1:-1:-1;;;;;652:3172:97;;;;;;;;14697:30:95;13510;14747:13;;652:3172:97;;;;-1:-1:-1;;;;;;652:3172:97;-1:-1:-1;;;;;652:3172:97;;;;;;;;;14771:36:95;819:34:62;837:15;819:34;:::i;:::-;14738:22:95;652:3172:97;;-1:-1:-1;;;;652:3172:97;;;;;;-1:-1:-1;;;652:3172:97;;;;;;;;;14738:22:95;652:3172:97;;-1:-1:-1;;;;;652:3172:97;;;;;;-1:-1:-1;;;;;;652:3172:97;;;;;;;;14817:36:95;14864:42;652:3172:97;14883:23:95;;;652:3172:97;;;;;;;;;13555:17:95;652:3172:97;;;;;;;13555:17:95;652:3172:97;;14864:42:95;14917:38;652:3172:97;14934:21:95;;;652:3172:97;;;;;;;13555:17:95;652:3172:97;;;;;;;;;;;;13555:17:95;652:3172:97;;14917:38:95;14965:34;14980:19;;;652:3172:97;14965:34:95;652:3172:97;;14965:34:95;652:3172:97;-1:-1:-1;;;;;652:3172:97;;;;;;;15010:135:95;;13388:2406;-1:-1:-1;15158:36:95;;;652:3172:97;-1:-1:-1;;;;;652:3172:97;;;;15154:157:95;;13388:2406;-1:-1:-1;15324:35:95;;;652:3172:97;-1:-1:-1;;;;;652:3172:97;;;;15320:153:95;;13388:2406;-1:-1:-1;15486:34:95;;;652:3172:97;-1:-1:-1;;;;;652:3172:97;;;;15482:152:95;;13388:2406;-1:-1:-1;15647:32:95;652:3172:97;-1:-1:-1;;;;;652:3172:97;;;;;;;15643:145:95;;13388:2406;:::o;15643:145::-;15709:68;;;:::i;:::-;;13388:2406::o;15482:152::-;15550:73;;;:::i;:::-;;15482:152;;;15320:153;15389:73;;;:::i;:::-;;15320:153;;;15154:157;15224:76;;;:::i;:::-;;15154:157;;;15010:135;15073:61;;;:::i;:::-;;15010:135;;;13744:943;13811:36;;;652:3172:97;13811:50:95;;-1:-1:-1;;;;;652:3172:97;;;13811:50:95;;13807:405;;13744:943;14230:34;;;652:3172:97;14230:48:95;;-1:-1:-1;;;;;652:3172:97;;;14230:48:95;13744:943;14226:451;14302:21;;;652:3172:97;;14302:21:95;;14351:19;;;652:3172:97;14351:24:95;:74;;;14298:365;14347:150;;14298:365;;652:3172:97;15647:32:95;14298:365;14817:36;652:3172:97;;14298:365:95;;14226:451;;;;;;;13744:943;;14347:150;652:3172:97;-1:-1:-1;;;14460:14:95;;;;;14351:74;-1:-1:-1;14379:32:95;;;652:3172:97;14379:46:95;;-1:-1:-1;;;;;652:3172:97;;;14379:46:95;;14351:74;;14298:365;14525:19;;;652:3172:97;14525:24:95;;;:74;;;14298:365;14521:142;;14298:365;;652:3172:97;15647:32:95;14298:365;14817:36;652:3172:97;;14298:365:95;;;14525:74;-1:-1:-1;14553:32:95;;;652:3172:97;14553:46:95;;-1:-1:-1;;;;;652:3172:97;;;14553:46:95;;;14525:74;;13807:405;13885:23;;;652:3172:97;;13885:23:95;;13936:35;;;652:3172:97;13936:49:95;;-1:-1:-1;;;;;652:3172:97;;;13936:49:95;13807:405;13932:125;652:3172:97;-1:-1:-1;;;14020:14:95;;;;;13881:317;14085:35;;;652:3172:97;14085:49:95;;-1:-1:-1;;;;;652:3172:97;;;14085:49:95;14081:117;13807:405;14081:117;652:3172:97;-1:-1:-1;;;14165:14:95;;;;;13649:85;652:3172:97;;-1:-1:-1;;;13701:22:95;;;;;13551:88;652:3172:97;;-1:-1:-1;;;13609:19:95;;;;;6893:76:25;;;;;:::i;:::-;;;:::i;:::-;652:3172:97;;-1:-1:-1;;;;;652:3172:97;;;;-1:-1:-1;;;;;;;;;;;652:3172:97;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;12178:17:26;;;652:3172:97;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;652:3172:97;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;652:3172:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;12178:17:26;;652:3172:97;;2895:7:26;652:3172:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;10552:388:60:-;5173:12:96;652:3172:97;10728:8:60;;;10752:20;10690:17;10752:20;10690:17;10752:20;10690:17;10752:20;:::o;10724:210::-;12178:17:26;;;652:3172:97;;;;;14249:109:60;652:3172:97;14249:109:60;5173:12:96;10690:17:60;14249:109;;652:3172:97;:::i;:::-;;;;;;;14249:109:60;652:3172:97;;;;;10911:11:60;;652:3172:97;;10886:37:60;10870:1;10886:37;;;:::o;10552:388::-;4803:13:96;652:3172:97;10728:8:60;;;10752:20;10690:17;10752:20;10690:17;10752:20;10690:17;10752:20;:::o;10724:210::-;12178:17:26;;;652:3172:97;;;;;14249:109:60;652:3172:97;14249:109:60;4803:13:96;10690:17:60;14249:109;;652:3172:97;:::i;10552:388:60:-;652:3172:97;;10728:8:60;;;10752:20;;10690:17;10752:20;10690:17;10752:20;10690:17;10752:20;:::o;10724:210::-;12178:17:26;;652:3172:97;;;;;;;;;14249:109:60;10690:17;14249:109;;10690:17;14249:109;;;652:3172:97;:::i;4059:629:45:-;2847:1:46;4059:629:45;3510:55:46;4059:629:45;652:3172:97;;;;;;3462:31:46;;;;;;;;;;;;:::i;:::-;3510:55;;;:::i;:::-;652:3172:97;;4551:22:45;;;;:57;;;;4059:629;4547:135;;;;4059:629;:::o;4547:135::-;652:3172:97;;;;4631:40:45;;;;;;;;;652:3172:97;4631:40:45;4551:57;4578:30;;;3462:31:46;4578:30:45;;;;;;;;:::i;:::-;4577:31;4551:57;;;;1258:280:87;;;652:3172:97;;;;;;;;;;;;;;;;8188:25:57;;;;;:::i;:::-;8257;;;;;;8223:101;;1258:280:87;:::o;8223:101:57:-;652:3172:97;;;;;;;;1258:280:87;:::o;652:3172:97:-;;;;;;;;:::o;:::-;-1:-1:-1;;;;;;;;;;;;652:3172:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;652:3172:97;;;;;;;;;-1:-1:-1;652:3172:97;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;;;;;;;;652:3172:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;652:3172:97;;;;;;;;;-1:-1:-1;652:3172:97;;;;;;;;-1:-1:-1;;;;;652:3172:97;;;;-1:-1:-1;;;;;;;;;;;652:3172:97;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;12178:17:26;;;652:3172:97;;;;;;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;;;;;;;;;;652:3172:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;12178:17:26;;652:3172:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5173:12:96;652:3172:97;;-1:-1:-1;;;652:3172:97;;;;;;;;;5173:12:96;652:3172:97;;;;;;5173:12:96;-1:-1:-1;652:3172:97;;;;;;;;;;-1:-1:-1;;652:3172:97;;;;;;;-1:-1:-1;;;;;;;;;;;652:3172:97;;;;:::o;:::-;4803:13:96;652:3172:97;;-1:-1:-1;;;652:3172:97;;;;;;;;;4803:13:96;652:3172:97;;;;;;4803:13:96;-1:-1:-1;652:3172:97;;;;;;;;;;-1:-1:-1;;652:3172:97;;;;;;;-1:-1:-1;;;;;;;;;;;652:3172:97;;;;:::o;:::-;;;-1:-1:-1;;;652:3172:97;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;652:3172:97;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;11513:870:60;5173:12:96;652:3172:97;11513:870:60;;;652:3172:97;11672:7:60;;;;652:3172:97;11775:28:60;11795:7;;;:::i;11775:28::-;652:3172:97;:::i;:::-;;;;;;;;;;-1:-1:-1;;11873:91:60;;652:3172:97;12233:11:60;652:3172:97;;;12027:16:60;652:3172:97;;;;;;;12027:16:60;;;;12083:7;12063:28;12083:7;12063:43;12083:7;;:::i;12063:28::-;652:3172:97;;;;;;;;;;;;;;;;;12063:43:60;12233:11;652:3172:97;-1:-1:-1;;;;;652:3172:97;;;12023:189:60;652:3172:97;;12145:52:60;652:3172:97;;12155:41:60;652:3172:97;;:::i;:::-;;;;;;;;12155:41:60;-1:-1:-1;;;;;652:3172:97;;12155:41:60;;;652:3172:97;12145:52:60;:::i;:::-;12023:189;;11873:91;652:3172:97;;-1:-1:-1;;;11919:30:60;;;;;11668:709;12283:52;652:3172:97;;12293:41:60;652:3172:97;;:::i;12293:41:60:-;-1:-1:-1;;;;;652:3172:97;;12293:41:60;;;652:3172:97;12145:52:60;:::i;12283:::-;11678:1;12349:17;;:::o;11513:870::-;4803:13:96;652:3172:97;11513:870:60;;;652:3172:97;11672:7:60;;;;652:3172:97;11775:28:60;11795:7;;;:::i;652:3172:97:-;;;;;;;;;;-1:-1:-1;;11873:91:60;;652:3172:97;12233:11:60;652:3172:97;;;12027:16:60;652:3172:97;;;;;;;12027:16:60;;;;12083:7;12063:28;12083:7;12063:43;12083:7;;:::i;12023:189::-;652:3172:97;;12145:52:60;652:3172:97;;12155:41:60;652:3172:97;;:::i;12155:41:60:-;-1:-1:-1;;;;;652:3172:97;;12155:41:60;;;652:3172:97;12145:52:60;:::i;11668:709::-;12283:52;652:3172:97;;12293:41:60;652:3172:97;;:::i;12293:41:60:-;-1:-1:-1;;;;;652:3172:97;;12293:41:60;;;652:3172:97;12145:52:60;:::i;11513:870::-;652:3172:97;;11513:870:60;;;652:3172:97;11513:870:60;11672:7;;;;652:3172:97;11775:28:60;11795:7;;;:::i;652:3172:97:-;;;;;;;;;;;;;;;;11877:15:60;-1:-1:-1;11873:91:60;;652:3172:97;;12233:11:60;652:3172:97;;;12027:16:60;652:3172:97;;;;;;;12027:16:60;;;;12083:7;12063:43;12083:7;;12063:28;12083:7;;:::i;:::-;12063:28;14249:109;;;;;;14099:265;;12023:189;652:3172:97;;;12145:52:60;652:3172:97;12155:41:60;652:3172:97;;:::i;:::-;;;;;;;;12155:41:60;-1:-1:-1;;;;;652:3172:97;;12155:41:60;;;652:3172:97;12145:52:60;:::i;11668:709::-;12283:52;652:3172:97;;12293:41:60;652:3172:97;;:::i;12293:41:60:-;-1:-1:-1;;;;;652:3172:97;;12293:41:60;;;652:3172:97;12145:52:60;:::i;8587:1642:57:-;8658:6;;8654:45;;9401:7;10201:10;10142:26;10093;10044;9995;9946;9897;9848;652:3172:97;10189:23:57;9401:7;8663:1;652:3172:97;;;;10826:16:57;10822:99;;8587:1642;652:3172:97;;;;10938:15:57;10934:96;;8587:1642;652:3172:97;;;;11047:15:57;11043:96;;8587:1642;652:3172:97;;;;11156:15:57;11152:96;;8587:1642;652:3172:97;;;;11265:14:57;11261:93;;8587:1642;652:3172:97;;;;11371:14:57;11367:93;;8587:1642;652:3172:97;;;;11477:14:57;11473:93;;8587:1642;652:3172:97;;;11579:64:57;;8587:1642;652:3172:97;;;9858:10:57;;;;:::i;:::-;652:3172:97;;;;;9848:26:57;9907:10;;;;:::i;9897:26::-;9956:10;;;;:::i;9946:26::-;10005:10;;;;:::i;9995:26::-;10054:10;;;;:::i;10044:26::-;10103:10;;;;:::i;10093:26::-;10152:10;;;;:::i;10142:26::-;10201:10;;;:::i;:::-;10189:23;;:::i;11579:64::-;652:3172:97;;11579:64:57;;11473:93;652:3172:97;11511:11:57;;652:3172:97;;11473:93:57;;;;11367;652:3172:97;11405:11:57;;652:3172:97;;11367:93:57;;;;11261;652:3172:97;11299:11:57;;652:3172:97;;11261:93:57;;;;11152:96;652:3172:97;11191:12:57;;652:3172:97;;11152:96:57;;;;11043;652:3172:97;11082:12:57;;652:3172:97;;11043:96:57;;;;10934;652:3172:97;10973:12:57;;652:3172:97;;10934:96:57;;;;10822:99;10862:13;;;652:3172:97;10822:99:57;;;;12736:433:60;;12919:10;;;;;;13151:11;;12736:433;:::o;12912:230::-;2900:5:57;;;;;652:3172:97;;2910:5:57;;;652:3172:97;;;;;;;;;4622:13:96;-1:-1:-1;14249:109:60;652:3172:97;14249:109:60;;-1:-1:-1;;;;;;;;;;;14249:109:60;652:3172:97;;;;;-1:-1:-1;12996:136:60;652:3172:97;;;13055:10:60;;12996:136;;12912:230;;;12996:136;652:3172:97;;;;;;;;;;;12996:136:60;;;12736:433;;12919:10;;;;;;13151:11;;12736:433;:::o;12912:230::-;2900:5:57;;;;;652:3172:97;;2910:5:57;;;652:3172:97;;;;;;;;;4994:12:96;-1:-1:-1;14249:109:60;652:3172:97;14249:109:60;;-1:-1:-1;;;;;;;;;;;14249:109:60;652:3172:97;;;;;-1:-1:-1;12996:136:60;652:3172:97;;;13055:10:60;;12996:136;;12912:230;;;12996:136;652:3172:97;;;;;;;;;;;12996:136:60;;;12736:433;;;12919:10;;;;;;13151:11;;;12736:433;:::o;12912:230::-;2900:5:57;;;;;;652:3172:97;;2910:5:57;;;652:3172:97;;;;;;;;;14249:109:60;-1:-1:-1;14249:109:60;652:3172:97;14249:109:60;;;-1:-1:-1;14249:109:60;;652:3172:97;;;;;-1:-1:-1;12996:136:60;652:3172:97;;;13055:10:60;;12996:136;;12912:230;;;;12996:136;652:3172:97;;;;;;;;;;;12996:136:60;;;4625:582:46;;4797:8;;-1:-1:-1;652:3172:97;;5874:21:46;:17;;6046:142;;;;;;5870:383;652:3172:97;;-1:-1:-1;;;6225:17:46;;;;;4793:408;652:3172:97;;5045:22:46;:49;;;4793:408;5041:119;;5173:17;;:::o;5041:119::-;652:3172:97;;-1:-1:-1;;;5121:24:46;;-1:-1:-1;;;;;652:3172:97;;;5121:24:46;;;652:3172:97;;;5121:24:46;5045:49;5071:18;;;:23;5045:49;","linkReferences":{},"immutableReferences":{"58075":[{"start":2715,"length":32},{"start":3267,"length":32}],"68715":[{"start":5506,"length":32},{"start":6953,"length":32}],"68718":[{"start":7314,"length":32},{"start":8687,"length":32}]}},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","DELEGATOR_FACTORY()":"6da3e06d","DEPOSITOR_WHITELIST_ROLE()":"1b66c9e1","DEPOSIT_LIMIT_SET_ROLE()":"a21a1df9","DEPOSIT_WHITELIST_SET_ROLE()":"db388715","FACTORY()":"2dd31000","IS_DEPOSIT_LIMIT_SET_ROLE()":"1415519b","SLASHER_FACTORY()":"87df0788","activeBalanceOf(address)":"59f769a9","activeBalanceOfAt(address,uint48,bytes)":"efb559d6","activeShares()":"bfefcd7b","activeSharesAt(uint48,bytes)":"50f22068","activeSharesOf(address)":"9d66201b","activeSharesOfAt(address,uint48,bytes)":"2d73c69c","activeStake()":"bd49c35f","activeStakeAt(uint48,bytes)":"810da75d","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burner()":"27810b6e","claim(address,uint256)":"aad3ec96","claimBatch(address,uint256[])":"7c04c80a","collateral()":"d8dfeb45","currentEpoch()":"76671808","currentEpochStart()":"61a8c8c4","decimals()":"313ce567","delegator()":"ce9b7930","deposit(address,uint256)":"47e7ef24","depositLimit()":"ecf70858","depositWhitelist()":"48d3b775","epochAt(uint48)":"7953b33b","epochDuration()":"4ff0876a","epochDurationInit()":"46361671","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","initialize(uint64,address,bytes)":"57ec83cc","isDelegatorInitialized()":"50861adc","isDepositLimit()":"a1b12202","isDepositorWhitelisted(address)":"794b15b7","isInitialized()":"392e53cd","isSlasherInitialized()":"6ec1e3f8","isWithdrawalsClaimed(uint256,address)":"a5d03223","migrate(uint64,bytes)":"2abe3048","name()":"06fdde03","nextEpochStart()":"73790ab3","onSlash(uint256,uint48)":"7278e31c","owner()":"8da5cb5b","previousEpochStart()":"281f5752","redeem(address,uint256)":"1e9a6950","renounceOwnership()":"715018a6","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","setDelegator(address)":"83cd9cc3","setDepositLimit(uint256)":"bdc8144b","setDepositWhitelist(bool)":"4105a7dd","setDepositorWhitelistStatus(address,bool)":"a2861466","setIsDepositLimit(bool)":"5346e34f","setSlasher(address)":"aabc2496","slashableBalanceOf(address)":"c31e8dd7","slasher()":"b1344271","staticDelegateCall(address,bytes)":"9f86fd85","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","totalStake()":"8b0e9f3f","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","transferOwnership(address)":"f2fde38b","version()":"54fd4d50","withdraw(address,uint256)":"f3fef3a3","withdrawalShares(uint256)":"afba70ad","withdrawalSharesOf(uint256,address)":"a3b54172","withdrawals(uint256)":"5cc07076","withdrawalsOf(uint256,address)":"f5e7ee0f"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatorFactory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"slasherFactory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"vaultFactory\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadyClaimed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadySet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CheckpointUnorderedInsertion\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DelegatorAlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DepositLimitReached\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientClaim\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientDeposit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientRedemption\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientWithdrawal\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCaptureEpoch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidClaimer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCollateral\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDelegator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEpoch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEpochDuration\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidLengthEpochs\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOnBehalfOf\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRecipient\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSlasher\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTimestamp\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MathOverflowedMulDiv\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingRoles\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoPreviousEpoch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotDelegator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotFactory\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotSlasher\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotWhitelistedDepositor\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SlasherAlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TooMuchRedeem\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TooMuchWithdraw\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"claimer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Claim\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"claimer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"epochs\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"ClaimBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"depositor\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slashedAmount\",\"type\":\"uint256\"}],\"name\":\"OnSlash\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"SetDelegator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"SetDepositLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"SetDepositWhitelist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"SetDepositorWhitelistStatus\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"SetIsDepositLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"slasher\",\"type\":\"address\"}],\"name\":\"SetSlasher\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"claimer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"burnedShares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"mintedShares\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DELEGATOR_FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEPOSITOR_WHITELIST_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEPOSIT_LIMIT_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEPOSIT_WHITELIST_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"IS_DEPOSIT_LIMIT_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SLASHER_FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"activeBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hints\",\"type\":\"bytes\"}],\"name\":\"activeBalanceOfAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"activeShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"activeSharesAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"activeSharesOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"activeSharesOfAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"activeStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"activeStakeAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"burner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"}],\"name\":\"claim\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"epochs\",\"type\":\"uint256[]\"}],\"name\":\"claimBatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"collateral\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentEpochStart\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"delegator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"depositedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mintedShares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"depositLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"depositWhitelist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"epochAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"epochDuration\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"epochDurationInit\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"initialVersion\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner_\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isDelegatorInitialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isDepositLimit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isDepositorWhitelisted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isInitialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isSlasherInitialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isWithdrawalsClaimed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newVersion\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"migrate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nextEpochStart\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"}],\"name\":\"onSlash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"slashedAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"previousEpochStart\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"claimer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"withdrawnAssets\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mintedShares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator_\",\"type\":\"address\"}],\"name\":\"setDelegator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"setDepositLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"setDepositWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"setDepositorWhitelistStatus\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"setIsDepositLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"slasher_\",\"type\":\"address\"}],\"name\":\"setSlasher\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"slashableBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slasher\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"staticDelegateCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"claimer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"burnedShares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mintedShares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"}],\"name\":\"withdrawalShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"withdrawalSharesOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"}],\"name\":\"withdrawals\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"withdrawalsOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"AddressInsufficientBalance(address)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"CheckpointUnorderedInsertion()\":[{\"details\":\"A value was attempted to be inserted on a past checkpoint.\"}],\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"MathOverflowedMulDiv()\":[{\"details\":\"Muldiv operation overflow.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC20 token failed.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Claim(address,address,uint256,uint256)\":{\"params\":{\"amount\":\"amount of the collateral claimed\",\"claimer\":\"account that claimed\",\"epoch\":\"epoch the collateral was claimed for\",\"recipient\":\"account that received the collateral\"}},\"ClaimBatch(address,address,uint256[],uint256)\":{\"params\":{\"amount\":\"amount of the collateral claimed\",\"claimer\":\"account that claimed\",\"epochs\":\"epochs the collateral was claimed for\",\"recipient\":\"account that received the collateral\"}},\"Deposit(address,address,uint256,uint256)\":{\"params\":{\"amount\":\"amount of the collateral deposited\",\"depositor\":\"account that made the deposit\",\"onBehalfOf\":\"account the deposit was made on behalf of\",\"shares\":\"amount of the active shares minted\"}},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"OnSlash(uint256,uint48,uint256)\":{\"params\":{\"amount\":\"amount of the collateral to slash\",\"captureTimestamp\":\"time point when the stake was captured\",\"slashedAmount\":\"real amount of the collateral slashed\"}},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"SetDelegator(address)\":{\"details\":\"Can be set only once.\",\"params\":{\"delegator\":\"vault's delegator to delegate the stake to networks and operators\"}},\"SetDepositLimit(uint256)\":{\"params\":{\"limit\":\"deposit limit (maximum amount of the collateral that can be in the vault simultaneously)\"}},\"SetDepositWhitelist(bool)\":{\"params\":{\"status\":\"if enabled deposit whitelist\"}},\"SetDepositorWhitelistStatus(address,bool)\":{\"params\":{\"account\":\"account for which the whitelist status is set\",\"status\":\"if whitelisted the account\"}},\"SetIsDepositLimit(bool)\":{\"params\":{\"status\":\"if enabled deposit limit\"}},\"SetSlasher(address)\":{\"details\":\"Can be set only once.\",\"params\":{\"slasher\":\"vault's slasher to provide a slashing mechanism to networks\"}},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"},\"Withdraw(address,address,uint256,uint256,uint256)\":{\"params\":{\"amount\":\"amount of the collateral withdrawn\",\"burnedShares\":\"amount of the active shares burned\",\"claimer\":\"account that needs to claim the withdrawal\",\"mintedShares\":\"amount of the epoch withdrawal shares minted\",\"withdrawer\":\"account that made the withdrawal\"}}},\"kind\":\"dev\",\"methods\":{\"activeBalanceOf(address)\":{\"params\":{\"account\":\"account to get the active balance for\"},\"returns\":{\"_0\":\"active balance for the account\"}},\"activeBalanceOfAt(address,uint48,bytes)\":{\"params\":{\"account\":\"account to get the active balance for\",\"hints\":\"hints for checkpoints' indexes\",\"timestamp\":\"time point to get the active balance for the account at\"},\"returns\":{\"_0\":\"active balance for the account at the timestamp\"}},\"activeShares()\":{\"returns\":{\"_0\":\"total number of active shares\"}},\"activeSharesAt(uint48,bytes)\":{\"params\":{\"hint\":\"hint for the checkpoint index\",\"timestamp\":\"time point to get the total number of active shares at\"},\"returns\":{\"_0\":\"total number of active shares at the timestamp\"}},\"activeSharesOf(address)\":{\"params\":{\"account\":\"account to get the number of active shares for\"},\"returns\":{\"_0\":\"number of active shares for the account\"}},\"activeSharesOfAt(address,uint48,bytes)\":{\"params\":{\"account\":\"account to get the number of active shares for\",\"hint\":\"hint for the checkpoint index\",\"timestamp\":\"time point to get the number of active shares for the account at\"},\"returns\":{\"_0\":\"number of active shares for the account at the timestamp\"}},\"activeStake()\":{\"returns\":{\"_0\":\"total amount of active stake\"}},\"activeStakeAt(uint48,bytes)\":{\"params\":{\"hint\":\"hint for the checkpoint index\",\"timestamp\":\"time point to get the total active stake at\"},\"returns\":{\"_0\":\"total amount of active stake at the timestamp\"}},\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"claim(address,uint256)\":{\"params\":{\"epoch\":\"epoch to claim the collateral for\",\"recipient\":\"account that receives the collateral\"},\"returns\":{\"amount\":\"amount of the collateral claimed\"}},\"claimBatch(address,uint256[])\":{\"params\":{\"epochs\":\"epochs to claim the collateral for\",\"recipient\":\"account that receives the collateral\"},\"returns\":{\"amount\":\"amount of the collateral claimed\"}},\"currentEpoch()\":{\"returns\":{\"_0\":\"current epoch\"}},\"currentEpochStart()\":{\"returns\":{\"_0\":\"start of the current epoch\"}},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"deposit(address,uint256)\":{\"params\":{\"amount\":\"amount of the collateral to deposit\",\"onBehalfOf\":\"account the deposit is made on behalf of\"},\"returns\":{\"depositedAmount\":\"real amount of the collateral deposited\",\"mintedShares\":\"amount of the active shares minted\"}},\"epochAt(uint48)\":{\"details\":\"Reverts if the timestamp is less than the start of the epoch 0.\",\"params\":{\"timestamp\":\"time point to get the epoch at\"},\"returns\":{\"_0\":\"epoch at the timestamp\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize(uint64,address,bytes)\":{\"params\":{\"data\":\"some data to use\",\"initialVersion\":\"initial version of the entity\",\"owner\":\"initial owner of the entity\"}},\"isInitialized()\":{\"returns\":{\"_0\":\"if the vault is fully initialized\"}},\"migrate(uint64,bytes)\":{\"params\":{\"data\":\"some data to use\",\"newVersion\":\"new version of the entity\"}},\"name()\":{\"details\":\"Returns the name of the token.\"},\"nextEpochStart()\":{\"returns\":{\"_0\":\"start of the next epoch\"}},\"onSlash(uint256,uint48)\":{\"details\":\"Only the slasher can call this function.\",\"params\":{\"amount\":\"amount to slash\",\"captureTimestamp\":\"time point when the stake was captured\"},\"returns\":{\"slashedAmount\":\"real amount of the collateral slashed\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"previousEpochStart()\":{\"details\":\"Reverts if the current epoch is 0.\",\"returns\":{\"_0\":\"start of the previous epoch\"}},\"redeem(address,uint256)\":{\"params\":{\"claimer\":\"account that needs to claim the withdrawal\",\"shares\":\"amount of the active shares to redeem\"},\"returns\":{\"mintedShares\":\"amount of the epoch withdrawal shares minted\",\"withdrawnAssets\":\"amount of the collateral withdrawn\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"setDepositLimit(uint256)\":{\"details\":\"Only a DEPOSIT_LIMIT_SET_ROLE holder can call this function.\",\"params\":{\"limit\":\"deposit limit (maximum amount of the collateral that can be in the vault simultaneously)\"}},\"setDepositWhitelist(bool)\":{\"details\":\"Only a DEPOSIT_WHITELIST_SET_ROLE holder can call this function.\",\"params\":{\"status\":\"if enabling deposit whitelist\"}},\"setDepositorWhitelistStatus(address,bool)\":{\"details\":\"Only a DEPOSITOR_WHITELIST_ROLE holder can call this function.\",\"params\":{\"account\":\"account for which the whitelist status is set\",\"status\":\"if whitelisting the account\"}},\"setIsDepositLimit(bool)\":{\"details\":\"Only a IS_DEPOSIT_LIMIT_SET_ROLE holder can call this function.\",\"params\":{\"status\":\"if enabling deposit limit\"}},\"slashableBalanceOf(address)\":{\"params\":{\"account\":\"account to get the slashable collateral for\"},\"returns\":{\"_0\":\"total amount of the account's slashable collateral\"}},\"staticDelegateCall(address,bytes)\":{\"details\":\"It allows to use this contract's storage on-chain.\",\"params\":{\"data\":\"data to make a delegatecall with\",\"target\":\"address of the contract to make a delegatecall to\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalStake()\":{\"returns\":{\"_0\":\"total amount of the slashable collateral\"}},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"version()\":{\"details\":\"Starts from 1.\",\"returns\":{\"_0\":\"version of the entity\"}},\"withdraw(address,uint256)\":{\"params\":{\"amount\":\"amount of the collateral to withdraw\",\"claimer\":\"account that needs to claim the withdrawal\"},\"returns\":{\"burnedShares\":\"amount of the active shares burned\",\"mintedShares\":\"amount of the epoch withdrawal shares minted\"}},\"withdrawalsOf(uint256,address)\":{\"params\":{\"account\":\"account to get the withdrawals for\",\"epoch\":\"epoch to get the withdrawals for the account at\"},\"returns\":{\"_0\":\"withdrawals for the account at the epoch\"}}},\"version\":1},\"userdoc\":{\"events\":{\"Claim(address,address,uint256,uint256)\":{\"notice\":\"Emitted when a claim is made.\"},\"ClaimBatch(address,address,uint256[],uint256)\":{\"notice\":\"Emitted when a batch claim is made.\"},\"Deposit(address,address,uint256,uint256)\":{\"notice\":\"Emitted when a deposit is made.\"},\"OnSlash(uint256,uint48,uint256)\":{\"notice\":\"Emitted when a slash happens.\"},\"SetDelegator(address)\":{\"notice\":\"Emitted when a delegator is set.\"},\"SetDepositLimit(uint256)\":{\"notice\":\"Emitted when a deposit limit is set.\"},\"SetDepositWhitelist(bool)\":{\"notice\":\"Emitted when a deposit whitelist status is enabled/disabled.\"},\"SetDepositorWhitelistStatus(address,bool)\":{\"notice\":\"Emitted when a depositor whitelist status is set.\"},\"SetIsDepositLimit(bool)\":{\"notice\":\"Emitted when a deposit limit status is enabled/disabled.\"},\"SetSlasher(address)\":{\"notice\":\"Emitted when a slasher is set.\"},\"Withdraw(address,address,uint256,uint256,uint256)\":{\"notice\":\"Emitted when a withdrawal is made.\"}},\"kind\":\"user\",\"methods\":{\"DELEGATOR_FACTORY()\":{\"notice\":\"Get the delegator factory's address.\"},\"DEPOSITOR_WHITELIST_ROLE()\":{\"notice\":\"Get a depositor whitelist status setter's role.\"},\"DEPOSIT_LIMIT_SET_ROLE()\":{\"notice\":\"Get a deposit limit setter's role.\"},\"DEPOSIT_WHITELIST_SET_ROLE()\":{\"notice\":\"Get a deposit whitelist enabler/disabler's role.\"},\"FACTORY()\":{\"notice\":\"Get the factory's address.\"},\"IS_DEPOSIT_LIMIT_SET_ROLE()\":{\"notice\":\"Get a deposit limit enabler/disabler's role.\"},\"SLASHER_FACTORY()\":{\"notice\":\"Get the slasher factory's address.\"},\"activeBalanceOf(address)\":{\"notice\":\"Get an active balance for a particular account.\"},\"activeBalanceOfAt(address,uint48,bytes)\":{\"notice\":\"Get an active balance for a particular account at a given timestamp using hints.\"},\"activeShares()\":{\"notice\":\"Get a total number of active shares in the vault.\"},\"activeSharesAt(uint48,bytes)\":{\"notice\":\"Get a total number of active shares in the vault at a given timestamp using a hint.\"},\"activeSharesOf(address)\":{\"notice\":\"Get a number of active shares for a particular account.\"},\"activeSharesOfAt(address,uint48,bytes)\":{\"notice\":\"Get a total number of active shares for a particular account at a given timestamp using a hint.\"},\"activeStake()\":{\"notice\":\"Get a total amount of active stake in the vault.\"},\"activeStakeAt(uint48,bytes)\":{\"notice\":\"Get a total amount of active stake in the vault at a given timestamp using a hint.\"},\"burner()\":{\"notice\":\"Get a burner to issue debt to (e.g., 0xdEaD or some unwrapper contract).\"},\"claim(address,uint256)\":{\"notice\":\"Claim collateral from the vault.\"},\"claimBatch(address,uint256[])\":{\"notice\":\"Claim collateral from the vault for multiple epochs.\"},\"collateral()\":{\"notice\":\"Get a vault collateral.\"},\"currentEpoch()\":{\"notice\":\"Get a current vault epoch.\"},\"currentEpochStart()\":{\"notice\":\"Get a start of the current vault epoch.\"},\"delegator()\":{\"notice\":\"Get a delegator (it delegates the vault's stake to networks and operators).\"},\"deposit(address,uint256)\":{\"notice\":\"Deposit collateral into the vault.\"},\"depositLimit()\":{\"notice\":\"Get a deposit limit (maximum amount of the active stake that can be in the vault simultaneously).\"},\"depositWhitelist()\":{\"notice\":\"Get if the deposit whitelist is enabled.\"},\"epochAt(uint48)\":{\"notice\":\"Get an epoch at a given timestamp.\"},\"epochDuration()\":{\"notice\":\"Get a duration of the vault epoch.\"},\"epochDurationInit()\":{\"notice\":\"Get a time point of the epoch duration set.\"},\"initialize(uint64,address,bytes)\":{\"notice\":\"Initialize this entity contract by using a given data and setting a particular version and owner.\"},\"isDelegatorInitialized()\":{\"notice\":\"Get if the delegator is initialized.\"},\"isDepositLimit()\":{\"notice\":\"Get if the deposit limit is set.\"},\"isDepositorWhitelisted(address)\":{\"notice\":\"Get if a given account is whitelisted as a depositor.\"},\"isInitialized()\":{\"notice\":\"Check if the vault is fully initialized (a delegator and a slasher are set).\"},\"isSlasherInitialized()\":{\"notice\":\"Get if the slasher is initialized.\"},\"isWithdrawalsClaimed(uint256,address)\":{\"notice\":\"Get if the withdrawals are claimed for a particular account at a given epoch.\"},\"migrate(uint64,bytes)\":{\"notice\":\"Migrate this entity to a particular newer version using a given data.\"},\"nextEpochStart()\":{\"notice\":\"Get a start of the next vault epoch.\"},\"onSlash(uint256,uint48)\":{\"notice\":\"Slash callback for burning collateral.\"},\"previousEpochStart()\":{\"notice\":\"Get a start of the previous vault epoch.\"},\"redeem(address,uint256)\":{\"notice\":\"Redeem collateral from the vault (it will be claimable after the next epoch).\"},\"setDepositLimit(uint256)\":{\"notice\":\"Set a deposit limit.\"},\"setDepositWhitelist(bool)\":{\"notice\":\"Enable/disable deposit whitelist.\"},\"setDepositorWhitelistStatus(address,bool)\":{\"notice\":\"Set a depositor whitelist status.\"},\"setIsDepositLimit(bool)\":{\"notice\":\"Enable/disable deposit limit.\"},\"slashableBalanceOf(address)\":{\"notice\":\"Get a total amount of the collateral that can be slashed for a given account.\"},\"slasher()\":{\"notice\":\"Get a slasher (it provides networks a slashing mechanism).\"},\"staticDelegateCall(address,bytes)\":{\"notice\":\"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data).\"},\"totalStake()\":{\"notice\":\"Get a total amount of the collateral that can be slashed.\"},\"version()\":{\"notice\":\"Get the entity's version.\"},\"withdraw(address,uint256)\":{\"notice\":\"Withdraw collateral from the vault (it will be claimable after the next epoch).\"},\"withdrawalShares(uint256)\":{\"notice\":\"Get a total number of withdrawal shares at a given epoch.\"},\"withdrawalSharesOf(uint256,address)\":{\"notice\":\"Get a number of withdrawal shares for a particular account at a given epoch (zero if claimed).\"},\"withdrawals(uint256)\":{\"notice\":\"Get a total amount of the withdrawals at a given epoch.\"},\"withdrawalsOf(uint256,address)\":{\"notice\":\"Get withdrawals for a particular account at a given epoch (zero if claimed).\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/vault/VaultTokenized.sol\":\"VaultTokenized\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol\":{\"keccak256\":\"0x9a1766b1921bf91b3e61eb53c7a6e70725254befd4bdcbbcd3af40bd9f66856f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29bf2fa41a172086a665c9738377b93655aa4b1ffda9fe839c8bdf646f185040\",\"dweb:/ipfs/QmeB21qDuo8WPQSrqXJbQmWHKsdeocGNSUWLhCwniVejrt\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://942dad22fbdc1669f025540ba63aa3ccfad5f8458fc5d4525b31ebf272e7af45\",\"dweb:/ipfs/Qmdo4X2M82aM3AMoW2kf2jhYkSCyC4T1pHNd6obdsDFnAB\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45\",\"dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26\",\"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c\",\"dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0xbdc5e074d7dd6678f67e92b1a51a20226801a407b0e1af3da367c5d1ff4519ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a36cca6b22fff3db16fc789ff6c60eea71d4b156065d4d0c83a0bc5e91a77a8b\",\"dweb:/ipfs/QmYN3exd5AemxjBrN8XMB1p5LbbE16uC3sjbYjwi8AjcGR\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0xc7755af115020049e4140f224f9ee88d7e1799ffb0646f37bf0df24bf6213f58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f09bf94d5274334ec021f61a04659db303f31e60460e14b709c9bf187740111\",\"dweb:/ipfs/QmNvgomZYUwFAt4cZbPWAiTeSZQreGehY9BK5xyVJsUttb\"]},\"src/contracts/common/MigratableEntity.sol\":{\"keccak256\":\"0x2d736f4dacd5d7e7697503bc426c78b8250fe1694ca157965ec178da6807de58\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f1237acf96b4b9f9b69156e068eddd726a6e15bd8e87a18dc999cd4ba4da069c\",\"dweb:/ipfs/QmS6M8fiFFSeuJ4ZKKq1z8W7w4ybeHQSy5TLASGoc1LVic\"]},\"src/contracts/common/StaticDelegateCallable.sol\":{\"keccak256\":\"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764\",\"dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD\"]},\"src/contracts/libraries/Checkpoints.sol\":{\"keccak256\":\"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609\",\"dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE\"]},\"src/contracts/libraries/ERC4626Math.sol\":{\"keccak256\":\"0x8441160513c1cbeb1c3b9ee077bcc7e7ce20006b52a77c8dd39ff0ef89699939\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://943f8cc3e26ddf649f465f40c909819f5c864717c4baa339e9e403b9374a4653\",\"dweb:/ipfs/QmXPxi1sUDsrGprZdUgCzoPEosaZMv9ZhygWQ1vAi1phAB\"]},\"src/contracts/vault/Vault.sol\":{\"keccak256\":\"0x2ceff6ed3298c4cad144c99fcc79b51cb9397d6ebef00285b915848b476f8c2e\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://11f2fb3581854f3ab6e82e8d4935d9eb510c903a13c3f022346c2956a58f5307\",\"dweb:/ipfs/QmdUnoXoyYoG9SGWyQZCFyLDRUUX3eXyXetkRvw6jxqqBz\"]},\"src/contracts/vault/VaultStorage.sol\":{\"keccak256\":\"0x57db25b127d77ea3472de53e3a4af3354399655b9268638b99ca5925fa364a56\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://aa763d9a6ec508ae3abfb8228b72b9fd9525279e5135d4962e79ff059feb1173\",\"dweb:/ipfs/QmcbDR6E9wyEpu6V2FkEC4hnWy47zXA9LSKJde6zSGd33Q\"]},\"src/contracts/vault/VaultTokenized.sol\":{\"keccak256\":\"0xa9475a46a3e32b35e48bc37fdaf08e1a586fb7c9667ac5e014b716a08873c46d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://0a292a4f35bc43ce7174b36e2d016bc44d6737e94b41e48cb5dd1bb1e4821e48\",\"dweb:/ipfs/QmduHZe2REPnygiWvQRV82yD4tYHdwX33FkYRFm1UZoXBA\"]},\"src/interfaces/common/IEntity.sol\":{\"keccak256\":\"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b\",\"dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv\"]},\"src/interfaces/common/IMigratableEntity.sol\":{\"keccak256\":\"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c\",\"dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds\"]},\"src/interfaces/common/IRegistry.sol\":{\"keccak256\":\"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014\",\"dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK\"]},\"src/interfaces/common/IStaticDelegateCallable.sol\":{\"keccak256\":\"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516\",\"dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi\"]},\"src/interfaces/delegator/IBaseDelegator.sol\":{\"keccak256\":\"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2\",\"dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8\"]},\"src/interfaces/slasher/IBaseSlasher.sol\":{\"keccak256\":\"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf\",\"dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx\"]},\"src/interfaces/vault/IVault.sol\":{\"keccak256\":\"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9\",\"dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R\"]},\"src/interfaces/vault/IVaultStorage.sol\":{\"keccak256\":\"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e\",\"dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6\"]},\"src/interfaces/vault/IVaultTokenized.sol\":{\"keccak256\":\"0xb723560b49c30b38130634388a0550c9e07596f92a58edbfa2415e690024e0c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dc9dde973a0bbf0adbc305462a796fa3b2e5be9daa1984e4f3e4f48e3c254f39\",\"dweb:/ipfs/QmQydZsr7ESw7ZSe9mqaxZ3dycvru8ZFVwrL9pmVnpyd7c\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"delegatorFactory","type":"address"},{"internalType":"address","name":"slasherFactory","type":"address"},{"internalType":"address","name":"vaultFactory","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"AddressInsufficientBalance"},{"inputs":[],"type":"error","name":"AlreadyClaimed"},{"inputs":[],"type":"error","name":"AlreadyInitialized"},{"inputs":[],"type":"error","name":"AlreadySet"},{"inputs":[],"type":"error","name":"CheckpointUnorderedInsertion"},{"inputs":[],"type":"error","name":"DelegatorAlreadyInitialized"},{"inputs":[],"type":"error","name":"DepositLimitReached"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientAllowance"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC20InvalidApprover"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC20InvalidSender"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"ERC20InvalidSpender"},{"inputs":[],"type":"error","name":"FailedInnerCall"},{"inputs":[],"type":"error","name":"InsufficientClaim"},{"inputs":[],"type":"error","name":"InsufficientDeposit"},{"inputs":[],"type":"error","name":"InsufficientRedemption"},{"inputs":[],"type":"error","name":"InsufficientWithdrawal"},{"inputs":[],"type":"error","name":"InvalidAccount"},{"inputs":[],"type":"error","name":"InvalidCaptureEpoch"},{"inputs":[],"type":"error","name":"InvalidClaimer"},{"inputs":[],"type":"error","name":"InvalidCollateral"},{"inputs":[],"type":"error","name":"InvalidDelegator"},{"inputs":[],"type":"error","name":"InvalidEpoch"},{"inputs":[],"type":"error","name":"InvalidEpochDuration"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"InvalidLengthEpochs"},{"inputs":[],"type":"error","name":"InvalidOnBehalfOf"},{"inputs":[],"type":"error","name":"InvalidRecipient"},{"inputs":[],"type":"error","name":"InvalidSlasher"},{"inputs":[],"type":"error","name":"InvalidTimestamp"},{"inputs":[],"type":"error","name":"MathOverflowedMulDiv"},{"inputs":[],"type":"error","name":"MissingRoles"},{"inputs":[],"type":"error","name":"NoPreviousEpoch"},{"inputs":[],"type":"error","name":"NotDelegator"},{"inputs":[],"type":"error","name":"NotFactory"},{"inputs":[],"type":"error","name":"NotInitialized"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"NotSlasher"},{"inputs":[],"type":"error","name":"NotWhitelistedDepositor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintDowncast"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"type":"error","name":"SafeERC20FailedOperation"},{"inputs":[],"type":"error","name":"SlasherAlreadyInitialized"},{"inputs":[],"type":"error","name":"TooMuchRedeem"},{"inputs":[],"type":"error","name":"TooMuchWithdraw"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"claimer","type":"address","indexed":true},{"internalType":"address","name":"recipient","type":"address","indexed":true},{"internalType":"uint256","name":"epoch","type":"uint256","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Claim","anonymous":false},{"inputs":[{"internalType":"address","name":"claimer","type":"address","indexed":true},{"internalType":"address","name":"recipient","type":"address","indexed":true},{"internalType":"uint256[]","name":"epochs","type":"uint256[]","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"ClaimBatch","anonymous":false},{"inputs":[{"internalType":"address","name":"depositor","type":"address","indexed":true},{"internalType":"address","name":"onBehalfOf","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false}],"type":"event","name":"Deposit","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint48","name":"captureTimestamp","type":"uint48","indexed":false},{"internalType":"uint256","name":"slashedAmount","type":"uint256","indexed":false}],"type":"event","name":"OnSlash","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true}],"type":"event","name":"SetDelegator","anonymous":false},{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"SetDepositLimit","anonymous":false},{"inputs":[{"internalType":"bool","name":"status","type":"bool","indexed":false}],"type":"event","name":"SetDepositWhitelist","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"bool","name":"status","type":"bool","indexed":false}],"type":"event","name":"SetDepositorWhitelistStatus","anonymous":false},{"inputs":[{"internalType":"bool","name":"status","type":"bool","indexed":false}],"type":"event","name":"SetIsDepositLimit","anonymous":false},{"inputs":[{"internalType":"address","name":"slasher","type":"address","indexed":true}],"type":"event","name":"SetSlasher","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"withdrawer","type":"address","indexed":true},{"internalType":"address","name":"claimer","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"burnedShares","type":"uint256","indexed":false},{"internalType":"uint256","name":"mintedShares","type":"uint256","indexed":false}],"type":"event","name":"Withdraw","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DELEGATOR_FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEPOSITOR_WHITELIST_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEPOSIT_LIMIT_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEPOSIT_WHITELIST_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_DEPOSIT_LIMIT_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"SLASHER_FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"activeBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hints","type":"bytes"}],"stateMutability":"view","type":"function","name":"activeBalanceOfAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"activeShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"activeSharesAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"activeSharesOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"activeSharesOfAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"activeStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"activeStakeAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"burner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"epoch","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"claim","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256[]","name":"epochs","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"claimBatch","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"collateral","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"currentEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"currentEpochStart","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"delegator","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"onBehalfOf","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"deposit","outputs":[{"internalType":"uint256","name":"depositedAmount","type":"uint256"},{"internalType":"uint256","name":"mintedShares","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"depositLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"depositWhitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"epochAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"epochDuration","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"epochDurationInit","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"initialVersion","type":"uint64"},{"internalType":"address","name":"owner_","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"isDelegatorInitialized","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"isDepositLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"isDepositorWhitelisted","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"isInitialized","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"isSlasherInitialized","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"isWithdrawalsClaimed","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"newVersion","type":"uint64"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"migrate"},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"nextEpochStart","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint48","name":"captureTimestamp","type":"uint48"}],"stateMutability":"nonpayable","type":"function","name":"onSlash","outputs":[{"internalType":"uint256","name":"slashedAmount","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"previousEpochStart","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[{"internalType":"address","name":"claimer","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"redeem","outputs":[{"internalType":"uint256","name":"withdrawnAssets","type":"uint256"},{"internalType":"uint256","name":"mintedShares","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"address","name":"delegator_","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setDelegator"},{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setDepositLimit"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setDepositWhitelist"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setDepositorWhitelistStatus"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setIsDepositLimit"},{"inputs":[{"internalType":"address","name":"slasher_","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setSlasher"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"slashableBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"slasher","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"staticDelegateCall"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"version","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"claimer","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"withdraw","outputs":[{"internalType":"uint256","name":"burnedShares","type":"uint256"},{"internalType":"uint256","name":"mintedShares","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"}],"stateMutability":"view","type":"function","name":"withdrawalShares","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"withdrawalSharesOf","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"}],"stateMutability":"view","type":"function","name":"withdrawals","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"withdrawalsOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{"activeBalanceOf(address)":{"params":{"account":"account to get the active balance for"},"returns":{"_0":"active balance for the account"}},"activeBalanceOfAt(address,uint48,bytes)":{"params":{"account":"account to get the active balance for","hints":"hints for checkpoints' indexes","timestamp":"time point to get the active balance for the account at"},"returns":{"_0":"active balance for the account at the timestamp"}},"activeShares()":{"returns":{"_0":"total number of active shares"}},"activeSharesAt(uint48,bytes)":{"params":{"hint":"hint for the checkpoint index","timestamp":"time point to get the total number of active shares at"},"returns":{"_0":"total number of active shares at the timestamp"}},"activeSharesOf(address)":{"params":{"account":"account to get the number of active shares for"},"returns":{"_0":"number of active shares for the account"}},"activeSharesOfAt(address,uint48,bytes)":{"params":{"account":"account to get the number of active shares for","hint":"hint for the checkpoint index","timestamp":"time point to get the number of active shares for the account at"},"returns":{"_0":"number of active shares for the account at the timestamp"}},"activeStake()":{"returns":{"_0":"total amount of active stake"}},"activeStakeAt(uint48,bytes)":{"params":{"hint":"hint for the checkpoint index","timestamp":"time point to get the total active stake at"},"returns":{"_0":"total amount of active stake at the timestamp"}},"allowance(address,address)":{"details":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"claim(address,uint256)":{"params":{"epoch":"epoch to claim the collateral for","recipient":"account that receives the collateral"},"returns":{"amount":"amount of the collateral claimed"}},"claimBatch(address,uint256[])":{"params":{"epochs":"epochs to claim the collateral for","recipient":"account that receives the collateral"},"returns":{"amount":"amount of the collateral claimed"}},"currentEpoch()":{"returns":{"_0":"current epoch"}},"currentEpochStart()":{"returns":{"_0":"start of the current epoch"}},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"deposit(address,uint256)":{"params":{"amount":"amount of the collateral to deposit","onBehalfOf":"account the deposit is made on behalf of"},"returns":{"depositedAmount":"real amount of the collateral deposited","mintedShares":"amount of the active shares minted"}},"epochAt(uint48)":{"details":"Reverts if the timestamp is less than the start of the epoch 0.","params":{"timestamp":"time point to get the epoch at"},"returns":{"_0":"epoch at the timestamp"}},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"initialize(uint64,address,bytes)":{"params":{"data":"some data to use","initialVersion":"initial version of the entity","owner":"initial owner of the entity"}},"isInitialized()":{"returns":{"_0":"if the vault is fully initialized"}},"migrate(uint64,bytes)":{"params":{"data":"some data to use","newVersion":"new version of the entity"}},"name()":{"details":"Returns the name of the token."},"nextEpochStart()":{"returns":{"_0":"start of the next epoch"}},"onSlash(uint256,uint48)":{"details":"Only the slasher can call this function.","params":{"amount":"amount to slash","captureTimestamp":"time point when the stake was captured"},"returns":{"slashedAmount":"real amount of the collateral slashed"}},"owner()":{"details":"Returns the address of the current owner."},"previousEpochStart()":{"details":"Reverts if the current epoch is 0.","returns":{"_0":"start of the previous epoch"}},"redeem(address,uint256)":{"params":{"claimer":"account that needs to claim the withdrawal","shares":"amount of the active shares to redeem"},"returns":{"mintedShares":"amount of the epoch withdrawal shares minted","withdrawnAssets":"amount of the collateral withdrawn"}},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"setDepositLimit(uint256)":{"details":"Only a DEPOSIT_LIMIT_SET_ROLE holder can call this function.","params":{"limit":"deposit limit (maximum amount of the collateral that can be in the vault simultaneously)"}},"setDepositWhitelist(bool)":{"details":"Only a DEPOSIT_WHITELIST_SET_ROLE holder can call this function.","params":{"status":"if enabling deposit whitelist"}},"setDepositorWhitelistStatus(address,bool)":{"details":"Only a DEPOSITOR_WHITELIST_ROLE holder can call this function.","params":{"account":"account for which the whitelist status is set","status":"if whitelisting the account"}},"setIsDepositLimit(bool)":{"details":"Only a IS_DEPOSIT_LIMIT_SET_ROLE holder can call this function.","params":{"status":"if enabling deposit limit"}},"slashableBalanceOf(address)":{"params":{"account":"account to get the slashable collateral for"},"returns":{"_0":"total amount of the account's slashable collateral"}},"staticDelegateCall(address,bytes)":{"details":"It allows to use this contract's storage on-chain.","params":{"data":"data to make a delegatecall with","target":"address of the contract to make a delegatecall to"}},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalStake()":{"returns":{"_0":"total amount of the slashable collateral"}},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"version()":{"details":"Starts from 1.","returns":{"_0":"version of the entity"}},"withdraw(address,uint256)":{"params":{"amount":"amount of the collateral to withdraw","claimer":"account that needs to claim the withdrawal"},"returns":{"burnedShares":"amount of the active shares burned","mintedShares":"amount of the epoch withdrawal shares minted"}},"withdrawalsOf(uint256,address)":{"params":{"account":"account to get the withdrawals for","epoch":"epoch to get the withdrawals for the account at"},"returns":{"_0":"withdrawals for the account at the epoch"}}},"version":1},"userdoc":{"kind":"user","methods":{"DELEGATOR_FACTORY()":{"notice":"Get the delegator factory's address."},"DEPOSITOR_WHITELIST_ROLE()":{"notice":"Get a depositor whitelist status setter's role."},"DEPOSIT_LIMIT_SET_ROLE()":{"notice":"Get a deposit limit setter's role."},"DEPOSIT_WHITELIST_SET_ROLE()":{"notice":"Get a deposit whitelist enabler/disabler's role."},"FACTORY()":{"notice":"Get the factory's address."},"IS_DEPOSIT_LIMIT_SET_ROLE()":{"notice":"Get a deposit limit enabler/disabler's role."},"SLASHER_FACTORY()":{"notice":"Get the slasher factory's address."},"activeBalanceOf(address)":{"notice":"Get an active balance for a particular account."},"activeBalanceOfAt(address,uint48,bytes)":{"notice":"Get an active balance for a particular account at a given timestamp using hints."},"activeShares()":{"notice":"Get a total number of active shares in the vault."},"activeSharesAt(uint48,bytes)":{"notice":"Get a total number of active shares in the vault at a given timestamp using a hint."},"activeSharesOf(address)":{"notice":"Get a number of active shares for a particular account."},"activeSharesOfAt(address,uint48,bytes)":{"notice":"Get a total number of active shares for a particular account at a given timestamp using a hint."},"activeStake()":{"notice":"Get a total amount of active stake in the vault."},"activeStakeAt(uint48,bytes)":{"notice":"Get a total amount of active stake in the vault at a given timestamp using a hint."},"burner()":{"notice":"Get a burner to issue debt to (e.g., 0xdEaD or some unwrapper contract)."},"claim(address,uint256)":{"notice":"Claim collateral from the vault."},"claimBatch(address,uint256[])":{"notice":"Claim collateral from the vault for multiple epochs."},"collateral()":{"notice":"Get a vault collateral."},"currentEpoch()":{"notice":"Get a current vault epoch."},"currentEpochStart()":{"notice":"Get a start of the current vault epoch."},"delegator()":{"notice":"Get a delegator (it delegates the vault's stake to networks and operators)."},"deposit(address,uint256)":{"notice":"Deposit collateral into the vault."},"depositLimit()":{"notice":"Get a deposit limit (maximum amount of the active stake that can be in the vault simultaneously)."},"depositWhitelist()":{"notice":"Get if the deposit whitelist is enabled."},"epochAt(uint48)":{"notice":"Get an epoch at a given timestamp."},"epochDuration()":{"notice":"Get a duration of the vault epoch."},"epochDurationInit()":{"notice":"Get a time point of the epoch duration set."},"initialize(uint64,address,bytes)":{"notice":"Initialize this entity contract by using a given data and setting a particular version and owner."},"isDelegatorInitialized()":{"notice":"Get if the delegator is initialized."},"isDepositLimit()":{"notice":"Get if the deposit limit is set."},"isDepositorWhitelisted(address)":{"notice":"Get if a given account is whitelisted as a depositor."},"isInitialized()":{"notice":"Check if the vault is fully initialized (a delegator and a slasher are set)."},"isSlasherInitialized()":{"notice":"Get if the slasher is initialized."},"isWithdrawalsClaimed(uint256,address)":{"notice":"Get if the withdrawals are claimed for a particular account at a given epoch."},"migrate(uint64,bytes)":{"notice":"Migrate this entity to a particular newer version using a given data."},"nextEpochStart()":{"notice":"Get a start of the next vault epoch."},"onSlash(uint256,uint48)":{"notice":"Slash callback for burning collateral."},"previousEpochStart()":{"notice":"Get a start of the previous vault epoch."},"redeem(address,uint256)":{"notice":"Redeem collateral from the vault (it will be claimable after the next epoch)."},"setDepositLimit(uint256)":{"notice":"Set a deposit limit."},"setDepositWhitelist(bool)":{"notice":"Enable/disable deposit whitelist."},"setDepositorWhitelistStatus(address,bool)":{"notice":"Set a depositor whitelist status."},"setIsDepositLimit(bool)":{"notice":"Enable/disable deposit limit."},"slashableBalanceOf(address)":{"notice":"Get a total amount of the collateral that can be slashed for a given account."},"slasher()":{"notice":"Get a slasher (it provides networks a slashing mechanism)."},"staticDelegateCall(address,bytes)":{"notice":"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data)."},"totalStake()":{"notice":"Get a total amount of the collateral that can be slashed."},"version()":{"notice":"Get the entity's version."},"withdraw(address,uint256)":{"notice":"Withdraw collateral from the vault (it will be claimable after the next epoch)."},"withdrawalShares(uint256)":{"notice":"Get a total number of withdrawal shares at a given epoch."},"withdrawalSharesOf(uint256,address)":{"notice":"Get a number of withdrawal shares for a particular account at a given epoch (zero if claimed)."},"withdrawals(uint256)":{"notice":"Get a total amount of the withdrawals at a given epoch."},"withdrawalsOf(uint256,address)":{"notice":"Get withdrawals for a particular account at a given epoch (zero if claimed)."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/vault/VaultTokenized.sol":"VaultTokenized"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol":{"keccak256":"0x9a1766b1921bf91b3e61eb53c7a6e70725254befd4bdcbbcd3af40bd9f66856f","urls":["bzz-raw://29bf2fa41a172086a665c9738377b93655aa4b1ffda9fe839c8bdf646f185040","dweb:/ipfs/QmeB21qDuo8WPQSrqXJbQmWHKsdeocGNSUWLhCwniVejrt"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol":{"keccak256":"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74","urls":["bzz-raw://942dad22fbdc1669f025540ba63aa3ccfad5f8458fc5d4525b31ebf272e7af45","dweb:/ipfs/Qmdo4X2M82aM3AMoW2kf2jhYkSCyC4T1pHNd6obdsDFnAB"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8","urls":["bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45","dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41","urls":["bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26","dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7","urls":["bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f","dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70","urls":["bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c","dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2","urls":["bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850","dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff","urls":["bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d","dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386","urls":["bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0","dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721","urls":["bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245","dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe","urls":["bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c","dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol":{"keccak256":"0xbdc5e074d7dd6678f67e92b1a51a20226801a407b0e1af3da367c5d1ff4519ad","urls":["bzz-raw://a36cca6b22fff3db16fc789ff6c60eea71d4b156065d4d0c83a0bc5e91a77a8b","dweb:/ipfs/QmYN3exd5AemxjBrN8XMB1p5LbbE16uC3sjbYjwi8AjcGR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0xc7755af115020049e4140f224f9ee88d7e1799ffb0646f37bf0df24bf6213f58","urls":["bzz-raw://7f09bf94d5274334ec021f61a04659db303f31e60460e14b709c9bf187740111","dweb:/ipfs/QmNvgomZYUwFAt4cZbPWAiTeSZQreGehY9BK5xyVJsUttb"],"license":"MIT"},"src/contracts/common/MigratableEntity.sol":{"keccak256":"0x2d736f4dacd5d7e7697503bc426c78b8250fe1694ca157965ec178da6807de58","urls":["bzz-raw://f1237acf96b4b9f9b69156e068eddd726a6e15bd8e87a18dc999cd4ba4da069c","dweb:/ipfs/QmS6M8fiFFSeuJ4ZKKq1z8W7w4ybeHQSy5TLASGoc1LVic"],"license":"BUSL-1.1"},"src/contracts/common/StaticDelegateCallable.sol":{"keccak256":"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90","urls":["bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764","dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD"],"license":"BUSL-1.1"},"src/contracts/libraries/Checkpoints.sol":{"keccak256":"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c","urls":["bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609","dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE"],"license":"MIT"},"src/contracts/libraries/ERC4626Math.sol":{"keccak256":"0x8441160513c1cbeb1c3b9ee077bcc7e7ce20006b52a77c8dd39ff0ef89699939","urls":["bzz-raw://943f8cc3e26ddf649f465f40c909819f5c864717c4baa339e9e403b9374a4653","dweb:/ipfs/QmXPxi1sUDsrGprZdUgCzoPEosaZMv9ZhygWQ1vAi1phAB"],"license":"MIT"},"src/contracts/vault/Vault.sol":{"keccak256":"0x2ceff6ed3298c4cad144c99fcc79b51cb9397d6ebef00285b915848b476f8c2e","urls":["bzz-raw://11f2fb3581854f3ab6e82e8d4935d9eb510c903a13c3f022346c2956a58f5307","dweb:/ipfs/QmdUnoXoyYoG9SGWyQZCFyLDRUUX3eXyXetkRvw6jxqqBz"],"license":"BUSL-1.1"},"src/contracts/vault/VaultStorage.sol":{"keccak256":"0x57db25b127d77ea3472de53e3a4af3354399655b9268638b99ca5925fa364a56","urls":["bzz-raw://aa763d9a6ec508ae3abfb8228b72b9fd9525279e5135d4962e79ff059feb1173","dweb:/ipfs/QmcbDR6E9wyEpu6V2FkEC4hnWy47zXA9LSKJde6zSGd33Q"],"license":"BUSL-1.1"},"src/contracts/vault/VaultTokenized.sol":{"keccak256":"0xa9475a46a3e32b35e48bc37fdaf08e1a586fb7c9667ac5e014b716a08873c46d","urls":["bzz-raw://0a292a4f35bc43ce7174b36e2d016bc44d6737e94b41e48cb5dd1bb1e4821e48","dweb:/ipfs/QmduHZe2REPnygiWvQRV82yD4tYHdwX33FkYRFm1UZoXBA"],"license":"BUSL-1.1"},"src/interfaces/common/IEntity.sol":{"keccak256":"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21","urls":["bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b","dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv"],"license":"MIT"},"src/interfaces/common/IMigratableEntity.sol":{"keccak256":"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4","urls":["bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c","dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds"],"license":"MIT"},"src/interfaces/common/IRegistry.sol":{"keccak256":"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb","urls":["bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014","dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK"],"license":"MIT"},"src/interfaces/common/IStaticDelegateCallable.sol":{"keccak256":"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5","urls":["bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516","dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi"],"license":"MIT"},"src/interfaces/delegator/IBaseDelegator.sol":{"keccak256":"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee","urls":["bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2","dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8"],"license":"MIT"},"src/interfaces/slasher/IBaseSlasher.sol":{"keccak256":"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404","urls":["bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf","dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx"],"license":"MIT"},"src/interfaces/vault/IVault.sol":{"keccak256":"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235","urls":["bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9","dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R"],"license":"MIT"},"src/interfaces/vault/IVaultStorage.sol":{"keccak256":"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22","urls":["bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e","dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6"],"license":"MIT"},"src/interfaces/vault/IVaultTokenized.sol":{"keccak256":"0xb723560b49c30b38130634388a0550c9e07596f92a58edbfa2415e690024e0c4","urls":["bzz-raw://dc9dde973a0bbf0adbc305462a796fa3b2e5be9daa1984e4f3e4f48e3c254f39","dweb:/ipfs/QmQydZsr7ESw7ZSe9mqaxZ3dycvru8ZFVwrL9pmVnpyd7c"],"license":"MIT"}},"version":1},"id":97} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[{"name":"delegatorFactory","type":"address","internalType":"address"},{"name":"slasherFactory","type":"address","internalType":"address"},{"name":"vaultFactory","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"DELEGATOR_FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"DEPOSITOR_WHITELIST_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"DEPOSIT_LIMIT_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"DEPOSIT_WHITELIST_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"IS_DEPOSIT_LIMIT_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"SLASHER_FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"activeBalanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"activeBalanceOfAt","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hints","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"activeShares","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"activeSharesAt","inputs":[{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"activeSharesOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"activeSharesOfAt","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"activeStake","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"activeStakeAt","inputs":[{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"burner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"claim","inputs":[{"name":"recipient","type":"address","internalType":"address"},{"name":"epoch","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"claimBatch","inputs":[{"name":"recipient","type":"address","internalType":"address"},{"name":"epochs","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"collateral","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"currentEpoch","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"currentEpochStart","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"delegator","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"deposit","inputs":[{"name":"onBehalfOf","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"depositedAmount","type":"uint256","internalType":"uint256"},{"name":"mintedShares","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"depositLimit","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"depositWhitelist","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"epochAt","inputs":[{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"epochDuration","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"epochDurationInit","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"initialVersion","type":"uint64","internalType":"uint64"},{"name":"owner_","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isDelegatorInitialized","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isDepositLimit","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isDepositorWhitelisted","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isInitialized","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isSlasherInitialized","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isWithdrawalsClaimed","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"migrate","inputs":[{"name":"newVersion","type":"uint64","internalType":"uint64"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"nextEpochStart","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"onSlash","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"slashedAmount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"previousEpochStart","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"redeem","inputs":[{"name":"claimer","type":"address","internalType":"address"},{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"withdrawnAssets","type":"uint256","internalType":"uint256"},{"name":"mintedShares","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDelegator","inputs":[{"name":"delegator_","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDepositLimit","inputs":[{"name":"limit","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDepositWhitelist","inputs":[{"name":"status","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDepositorWhitelistStatus","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"status","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setIsDepositLimit","inputs":[{"name":"status","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSlasher","inputs":[{"name":"slasher_","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"slashableBalanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"slasher","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"staticDelegateCall","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalStake","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"version","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"withdraw","inputs":[{"name":"claimer","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"burnedShares","type":"uint256","internalType":"uint256"},{"name":"mintedShares","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawalShares","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"withdrawalSharesOf","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"withdrawals","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"withdrawalsOf","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Claim","inputs":[{"name":"claimer","type":"address","indexed":true,"internalType":"address"},{"name":"recipient","type":"address","indexed":true,"internalType":"address"},{"name":"epoch","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ClaimBatch","inputs":[{"name":"claimer","type":"address","indexed":true,"internalType":"address"},{"name":"recipient","type":"address","indexed":true,"internalType":"address"},{"name":"epochs","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Deposit","inputs":[{"name":"depositor","type":"address","indexed":true,"internalType":"address"},{"name":"onBehalfOf","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OnSlash","inputs":[{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","indexed":false,"internalType":"uint48"},{"name":"slashedAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SetDelegator","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SetDepositLimit","inputs":[{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SetDepositWhitelist","inputs":[{"name":"status","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"SetDepositorWhitelistStatus","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"status","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"SetIsDepositLimit","inputs":[{"name":"status","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"SetSlasher","inputs":[{"name":"slasher","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Withdraw","inputs":[{"name":"withdrawer","type":"address","indexed":true,"internalType":"address"},{"name":"claimer","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"burnedShares","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"mintedShares","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"AlreadyClaimed","inputs":[]},{"type":"error","name":"AlreadyInitialized","inputs":[]},{"type":"error","name":"AlreadySet","inputs":[]},{"type":"error","name":"CheckpointUnorderedInsertion","inputs":[]},{"type":"error","name":"DelegatorAlreadyInitialized","inputs":[]},{"type":"error","name":"DepositLimitReached","inputs":[]},{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]},{"type":"error","name":"InsufficientClaim","inputs":[]},{"type":"error","name":"InsufficientDeposit","inputs":[]},{"type":"error","name":"InsufficientRedemption","inputs":[]},{"type":"error","name":"InsufficientWithdrawal","inputs":[]},{"type":"error","name":"InvalidAccount","inputs":[]},{"type":"error","name":"InvalidCaptureEpoch","inputs":[]},{"type":"error","name":"InvalidClaimer","inputs":[]},{"type":"error","name":"InvalidCollateral","inputs":[]},{"type":"error","name":"InvalidDelegator","inputs":[]},{"type":"error","name":"InvalidEpoch","inputs":[]},{"type":"error","name":"InvalidEpochDuration","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"InvalidLengthEpochs","inputs":[]},{"type":"error","name":"InvalidOnBehalfOf","inputs":[]},{"type":"error","name":"InvalidRecipient","inputs":[]},{"type":"error","name":"InvalidSlasher","inputs":[]},{"type":"error","name":"InvalidTimestamp","inputs":[]},{"type":"error","name":"MissingRoles","inputs":[]},{"type":"error","name":"NoPreviousEpoch","inputs":[]},{"type":"error","name":"NotDelegator","inputs":[]},{"type":"error","name":"NotFactory","inputs":[]},{"type":"error","name":"NotInitialized","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"NotSlasher","inputs":[]},{"type":"error","name":"NotWhitelistedDepositor","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]},{"type":"error","name":"SlasherAlreadyInitialized","inputs":[]},{"type":"error","name":"TooMuchRedeem","inputs":[]},{"type":"error","name":"TooMuchWithdraw","inputs":[]}],"bytecode":{"object":"0x60e03461013c57601f61569238819003918201601f1916830192916001600160401b03918285118486101761014057816060928592604097885283398101031261013c5761004c82610154565b916100648461005d60208401610154565b9201610154565b9260805260a0527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff82861c1661012b5780808316036100e7575b50505060c05251615529908161016982396080518181816115810152611b26015260a051818181611c8f0152612212015260c051818181610a9c0152610cc20152f35b6001600160401b0319909116811790915582519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80806100a4565b845163f92ee8a960e01b8152600490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b038216820361013c5756fe60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a7146104ba57806306fdde03146104b5578063095ea7b3146104b05780631415519b146104ab57806318160ddd146103895780631b66c9e1146104a65780631e9a6950146104a157806323b872dd1461049c578063248a9ca31461049757806327810b6e14610492578063281f57521461048d5780632abe3048146104885780632d73c69c146104835780632dd310001461047e5780632f2ff15d14610479578063313ce5671461047457806336568abe1461046f578063392e53cd1461046a5780634105a7dd14610465578063463616711461046057806347e7ef241461045b57806348d3b775146104565780634ff0876a1461045157806350861adc1461044c57806350f22068146104475780635346e34f1461044257806354fd4d501461043d57806357ec83cc1461043857806359f769a9146104335780635cc070761461042e57806361a8c8c4146104295780636da3e06d146104245780636ec1e3f81461041f57806370a08231146103d4578063715018a61461041a5780637278e31c1461041557806373790ab314610410578063766718081461040b578063794b15b7146104065780637953b33b146104015780637c04c80a146103fc578063810da75d146103f757806383cd9cc3146103f257806387df0788146103ed5780638b0e9f3f146103e85780638da5cb5b146103e357806391d14854146103de57806395d89b41146103d95780639d66201b146103d45780639f86fd85146103cf578063a1b12202146103ca578063a217fddf146103c5578063a21a1df9146103c0578063a2861466146103bb578063a3b54172146103b6578063a5d03223146103b1578063a9059cbb146103ac578063aabc2496146103a7578063aad3ec96146103a2578063afba70ad1461039d578063b134427114610398578063bd49c35f14610393578063bdc8144b1461038e578063bfefcd7b14610389578063c31e8dd714610384578063ce9b79301461037f578063d547741f1461037a578063d8dfeb4514610375578063db38871514610370578063dd62ed3e1461036b578063ecf7085814610366578063efb559d614610361578063f2fde38b1461035c578063f3fef3a3146103575763f5e7ee0f14610352575f80fd5b6128cc565b612826565b6127f9565b6126aa565b61268d565b612656565b61261c565b6125f1565b6125a5565b61257d565b612513565b610749565b612435565b61241b565b6123f3565b6123c9565b612308565b612151565b61211c565b6120d6565b612089565b611f96565b611f5c565b611f42565b611f1e565b611e64565b6115d5565b611db2565b611d54565b611d20565b611cbe565b611c7a565b611ac1565b611aa8565b611a42565b611a1b565b6119db565b611989565b611948565b611676565b61160f565b6115b0565b61156c565b611519565b6114ef565b6114c8565b611390565b61135e565b6112c9565b6112b0565b611253565b611233565b611212565b610f2a565b610f02565b610e67565b610e22565b610dd7565b610d3f565b610cf1565b610cad565b610c41565b610a56565b610988565b610960565b610927565b61088a565b6107a5565b61076b565b61070f565b61064d565b61054c565b346105105760203660031901126105105760043563ffffffff60e01b811680910361051057602090637965db0b60e01b81149081156104ff575b506040519015158152f35b6301ffc9a760e01b1490505f6104f4565b5f80fd5b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b906020610549928181520190610514565b90565b34610510575f366003190112610510576040515f5f805160206153d483398151915280549061057a826128f6565b8085529160209160019182811690811561060f57506001146105b7575b6105b3866105a781880382610b85565b60405191829182610538565b0390f35b5f90815293507f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab05b8385106105fc575050505081016020016105a7826105b35f610597565b80548686018401529382019381016105df565b90508695506105b3969350602092506105a794915060ff191682840152151560051b82010192935f610597565b6001600160a01b0381160361051057565b346105105760403660031901126105105760043561066a8161063c565b60243533156106f7576001600160a01b0382169182156106df576106a78291610692336119a3565b9060018060a01b03165f5260205260405f2090565b556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b604051634a1406b160e11b81525f6004820152602490fd5b60405163e602df0560e01b81525f6004820152602490fd5b34610510575f3660031901126105105760206040517fc6aaadd7371d5e8f9ed6849dd66a66573a3ba37167d03f4352c9ba5693678fac8152f35b34610510575f366003190112610510576020610763613feb565b604051908152f35b34610510575f3660031901126105105760206040517f9c56d972d63cbb4195b3c1484691dfc220fa96a4c47e7b6613bd82a022029e068152f35b34610510576040366003190112610510576004356107c28161063c565b602435906107ce612e0e565b6001600160a01b0381161561087957335f908152600e602052604090206107f9906140d8565b6140d8565b82116108675761081961080a614064565b610812613feb565b908461414c565b918215610852578261082a92612e3d565b9061084160015f805160206154b483398151915255565b604080519182526020820192909252f35b60405160016245ddc760e11b03198152600490fd5b604051632418411f60e11b8152600490fd5b6040516208978560e71b8152600490fd5b34610510576060366003190112610510576004356108a78161063c565b6024356108b38161063c565b604435906108c433610692856119a3565b5492600184016108e5575b6108d99350612fcd565b60405160018152602090f35b828410610901576108fc836108d995033383614125565b6108cf565b604051637dc7a0d960e11b81523360048201526024810185905260448101849052606490fd5b34610510576020366003190112610510576004355f525f805160206154948339815191526020526020600160405f200154604051908152f35b34610510575f366003190112610510576001546040516001600160a01b039091168152602090f35b34610510575f366003190112610510576109a0612b62565b8015610a015760015465ffffffffffff8160a01c16915f1981019081116109fc576109ce9160d01c9061295d565b81018091116109fc576109e36105b39161312c565b60405165ffffffffffff90911681529081906020820190565b61292e565b604051639fa56a5b60e01b8152600490fd5b600435906001600160401b038216820361051057565b9181601f84011215610510578235916001600160401b038311610510576020838186019501011161051057565b3461051057604036600319011261051057610a6f610a13565b6001600160401b0360243581811161051057610a8f903690600401610a29565b929091610a9a612e0e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610b14575f805160206154d4833981519152549060ff8260401c16928315610b04575b5050501561315e575b60405163f92ee8a960e01b8152600490fd5b81169116101590505f8080610ae9565b604051631966391b60e11b8152600490fd5b65ffffffffffff81160361051057565b634e487b7160e01b5f52604160045260245ffd5b606081019081106001600160401b03821117610b6557604052565b610b36565b604081019081106001600160401b03821117610b6557604052565b90601f801991011681019081106001600160401b03821117610b6557604052565b6040519061016082018281106001600160401b03821117610b6557604052565b60405190610bd382610b6a565b565b6001600160401b038111610b6557601f01601f191660200190565b929192610bfc82610bd5565b91610c0a6040519384610b85565b829481845281830111610510578281602093845f960137010152565b9080601f830112156105105781602061054993359101610bf0565b3461051057606036600319011261051057600435610c5e8161063c565b60243590610c6b82610b26565b604435906001600160401b03821161051057602092610c91610763933690600401610c26565b6001600160a01b039092165f908152600e855260409020613330565b34610510575f366003190112610510576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461051057604036600319011261051057610d3d602435600435610d148261063c565b805f525f80516020615494833981519152602052610d38600160405f200154613507565b613807565b005b34610510575f366003190112610510575f5460405163313ce56760e01b8152906020908290600490829060101c6001600160a01b03165afa8015610dd2575f90610d94575b60405160ff919091168152602090f35b506020813d602011610dca575b81610dae60209383610b85565b81010312610510575160ff81168103610510576105b390610d84565b3d9150610da1565b6129ac565b3461051057604036600319011261051057602435610df48161063c565b336001600160a01b03821603610e1057610d3d9060043561383d565b60405163334bd91960e11b8152600490fd5b34610510575f3660031901126105105760ff60025460a01c1680610e4e575b6020906040519015158152f35b5060035460a01c60ff16610e41565b8015150361051057565b3461051057602036600319011261051057600435610e8481610e5d565b610e8c612e0e565b610e946133fc565b5f54901515908160ff8216151514610ef05760ff191660ff8216175f556040519081527f3e12b7b36c75ac9609a3f58609b331210428e1a85909132638955ba0301eec3390602090a160015f805160206154b483398151915255005b60405163a741a04560e01b8152600490fd5b34610510575f36600319011261051057602065ffffffffffff60015460a01c16604051908152f35b3461051057604080600319360112610510576004803591610f4a8361063c565b610f52612e0e565b6001600160a01b0391838316908115611204575f5460ff8116806111eb575b6111dc5783516370a0823160e01b808252308483019081529096602093909160109190911c82169084908490819083010381845afa928315610dd2575f936111b9575b50610fc6906024359030903390614535565b5f5486519788523085890190815290979184918391908290819060200103918b60101c165afa908115610dd257611005935f9261118c575b5050612950565b93841561117d5760081c60ff1680611168575b61115a5750906105b3916110c961102d614064565b95611076611039613feb565b6110616110478a838b61414c565b9961105b8a6110554261312c565b9261297e565b90613c86565b5050611070896110554261312c565b90613d66565b50506001600160a01b0381165f908152600e60205260409020906110c3886110be6107f46110a34261312c565b6001600160a01b039095165f908152600e6020526040902090565b61297e565b91613e42565b5050815184815260208101869052819033907fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d790604090a361111760015f805160206154b483398151915255565b81518581525f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602090a35191825260208201929092529081906040820190565b8251632484557960e01b8152fd5b50611175846110be614064565b815410611018565b50825163070f6eed60e11b8152fd5b6111ab9250803d106111b2575b6111a38183610b85565b8101906138cf565b5f80610ffe565b503d611199565b610fc69193506111d590853d87116111b2576111a38183610b85565b9290610fb4565b5082516304f63b8560e01b8152fd5b50335f9081526005602052604090205460ff1615610f71565b8251630d534ce360e11b8152fd5b34610510575f36600319011261051057602060ff5f54166040519015158152f35b34610510575f36600319011261051057602060015460d01c604051908152f35b34610510575f36600319011261051057602060ff60025460a01c166040519015158152f35b9060406003198301126105105760043561129181610b26565b91602435906001600160401b0382116105105761054991600401610c26565b346105105760206107636112c336611278565b9061319a565b34610510576020366003190112610510576004356112e681610e5d565b6112ee612e0e565b6112f6613459565b5f54901515908160ff8260081c16151514610ef05761ff001916600882901b61ff0016175f556040519081527ffa7a25a0b611d4ba3c0ea990e90dc23d484a5dd7a1be4733fef2946ba74530c690602090a1610d3d60015f805160206154b483398151915255565b34610510575f3660031901126105105760206001600160401b035f805160206154d48339815191525416604051908152f35b34610510576060366003190112610510576113a9610a13565b6024356113b58161063c565b6001600160401b0391604435838111610510576113d6903690600401610a29565b5f805160206154d48339815191529491855494838616806114b75760ff8760401c169081156114aa575b50610af2577fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2966114a59661146d958716906001600160401b0319161790556114685f805160206154d4833981519152600160401b68ff000000000000000019825416179055565b6129b7565b5f805160206154d4833981519152805468ff0000000000000000191690556040516001600160401b0390911681529081906020820190565b0390a1005b905084861611155f611400565b60405162dc149f60e41b8152600490fd5b346105105760203660031901126105105760206107636004356114ea8161063c565b612acb565b34610510576020366003190112610510576004355f526006602052602060405f2054604051908152f35b34610510575f3660031901126105105760015465ffffffffffff61154f818360a01c1692611545612b62565b9060d01c9061295d565b82018092116109fc5761156360209261312c565b60405191168152f35b34610510575f366003190112610510576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610510575f36600319011261051057602060ff60035460a01c166040519015158152f35b34610510576020366003190112610510576004356115f28161063c565b60018060a01b03165f52600e602052602061076360405f206140d8565b34610510575f36600319011261051057611627613abb565b5f8051602061543483398151915280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346105105760403660031901126105105760043560243561169681610b26565b61169e612e0e565b6003546116bb906001600160a01b03165b6001600160a01b031690565b3303611936576116c9612b62565b906116d381612b96565b9082151580611925575b801561191c575b61190a576105b3937ff9d090c096f71cd1659861a9ce5b6f384bceb4e2fa4e4a19edf6489a9b8d56c792611716614064565b9461173161172382612970565b5f52600660205260405f2090565b54908281036118245750611745818761297e565b8381188185100281189687806117dd575b50505050505b836117a9575b6040805191825265ffffffffffff929092166020820152908101839052606090a161179960015f805160206154b483398151915255565b6040519081529081906020820190565b5f546117d89085906117c69060101c6001600160a01b03166116af565b6001546001600160a01b031690613f00565b611762565b61181993610ffe8361105b6118036117fc611723986118139888613afd565b8096612950565b9461180d4261312c565b92612950565b92612970565b555f80808087611756565b9150611838825f52600660205260405f2090565b5490611848816110be848a61297e565b908482188286100282189788611863575b505050505061175c565b6118d8938361188b936118988c6118936118816118c9998884613afd565b9788958584613afd565b948592612950565b612950565b938484106118e3575b610ffe9061105b6118b795969761180d4261312c565b6118c361172387612970565b55612950565b915f52600660205260405f2090565b555f80808080611859565b916118ff610ffe916118f9866118b79798612950565b9061297e565b8594509290506118a1565b604051635e18d2a560e01b8152600490fd5b508282116116e4565b5061192f83612942565b82106116dd565b60405163dabc4ad960e01b8152600490fd5b34610510575f3660031901126105105760015465ffffffffffff808260a01c1691611971612b62565b600181018091116109fc5761154f9160d01c9061295d565b34610510575f366003190112610510576020610763612b62565b6001600160a01b03165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020526040902090565b34610510576020366003190112610510576004356119f88161063c565b60018060a01b03165f526005602052602060ff60405f2054166040519015158152f35b34610510576020366003190112610510576020610763600435611a3d81610b26565b612b96565b3461051057604036600319011261051057600435611a5f8161063c565b6024356001600160401b038082116105105736602383011215610510578160040135908111610510573660248260051b84010111610510576105b3926024611799930190612bd1565b34610510576020610763611abb36611278565b9061327b565b3461051057602080600319360112610510576004803590611ae18261063c565b611ae9612e0e565b60025460a01c60ff16611c6b576040516302910f8b60e31b81526001600160a01b03838116838301908152909491908290829081906020010381887f0000000000000000000000000000000000000000000000000000000000000000165afa908115610dd2575f91611c3e575b5015611c2e5760405163fbfa77cf60e01b8152838516949082818581895afa928315610dd2575f93611bff575b505030911603611bf05750600280546001600160a01b03929092166001600160a81b031990921691909117600160a01b1790557fdb2160616f776a37b24808115554e79439bf26cccbbd4438190cc6d28e80ecd15f80a2610d3d60015f805160206154b483398151915255565b60405163b9f0f17160e01b8152fd5b611c1f929350803d10611c27575b611c178183610b85565b810190612d2a565b905f80611b83565b503d611c0d565b506040516324e5af8d60e21b8152fd5b611c5e9150823d8411611c64575b611c568183610b85565b810190612d0a565b5f611b56565b503d611c4c565b604051631380833b60e01b8152fd5b34610510575f366003190112610510576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610510575f36600319011261051057611cd6612b62565b611cde614064565b90805f52600660205260405f205482018092116109fc57600181018091116109fc575f52600660205260405f205481018091116109fc57602090604051908152f35b34610510575f366003190112610510575f80516020615434833981519152546040516001600160a01b039091168152602090f35b3461051057604036600319011261051057602060ff611da6602435611d788161063c565b6004355f525f80516020615494833981519152845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b34610510575f366003190112610510576040515f5f80516020615414833981519152805490611de0826128f6565b8085529160209160019182811690811561060f5750600114611e0c576105b3866105a781880382610b85565b5f90815293507f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa5b838510611e51575050505081016020016105a7826105b35f610597565b8054868601840152938201938101611e34565b346105105760408060031936011261051057600435611e828161063c565b602435906001600160401b038211610510575f8091611ea8611f0c943690600401610a29565b908187519283928337810184815203915af43d15611f1457611efe3d611ecd81610bd5565b90611eda86519283610b85565b81523d5f602083013e5b845194859315156020850152808401526060830190610514565b03601f198101835282610b85565b805190602001fd5b611efe6060611ee4565b34610510575f36600319011261051057602060ff5f5460081c166040519015158152f35b34610510575f3660031901126105105760206040515f8152f35b34610510575f3660031901126105105760206040517f4a634bc14d77baf979756509ef4298c6f6318af357828612545267ee2eb792338152f35b3461051057604036600319011261051057600435611fb38161063c565b602435611fbf81610e5d565b611fc7612e0e565b611fcf6134b0565b6001600160a01b038216918215612077575f8381526005602052604090205460ff16151582151514610ef0576001600160a01b03165f9081526005602052604090207ff991b1ecfb5115cbb36a2b2e2240c058406d2acc2fcc6e9e2dc99d845ff70a629161205e9161204c908260ff801983541691151516179055565b60405190151581529081906020820190565b0390a2610d3d60015f805160206154b483398151915255565b604051630da30f6560e31b8152600490fd5b346105105760403660031901126105105760206120cd6024356120ab8161063c565b6004355f526008835260405f209060018060a01b03165f5260205260405f2090565b54604051908152f35b3461051057604036600319011261051057602060ff611da66024356120fa8161063c565b6004355f526009845260405f209060018060a01b03165f5260205260405f2090565b346105105760403660031901126105105761214660043561213c8161063c565b6024359033612fcd565b602060405160018152f35b34610510576020806003193601126105105760048035906121718261063c565b612179612e0e565b60035460a01c60ff166122f9576001600160a01b038281169390846121e7575b6003805460ff60a01b1916600160a01b179055847fe7e4c932e03abddfe20f83af42c33627e816115c7ec2b168441f65dc14bfc3ba5f80a2610d3d60015f805160206154b483398151915255565b6040516302910f8b60e31b81526001600160a01b0385168482019081528390829081906020010381857f0000000000000000000000000000000000000000000000000000000000000000165afa908115610dd2575f916122dc575b50156122cb5760405163fbfa77cf60e01b815282818581895afa928315610dd2575f936122ac575b50503091160361229d5750600380546001600160a01b0319166001600160a01b039092169190911790555f808080612199565b604051633f3e089160e21b8152fd5b6122c3929350803d10611c2757611c178183610b85565b905f8061226a565b60405163dabc4ad960e01b81528390fd5b6122f39150833d8511611c6457611c568183610b85565b5f612242565b60405163703fe2e560e01b8152fd5b34610510576040366003190112610510576004356123258161063c565b60243590612331612e0e565b6001600160a01b03918183169081156123b7576123626105b39461235483613f4f565b9485915f5460101c16613f00565b604080519182526020820184905233917f865ca08d59f5cb456e85cd2f7ef63664ea4f73327414e9d8152c4158b0e946459190a360015f805160206154b4833981519152556040519081529081906020820190565b604051634e46966960e11b8152600490fd5b34610510576020366003190112610510576004355f526007602052602060405f2054604051908152f35b34610510575f366003190112610510576003546040516001600160a01b039091168152602090f35b34610510575f366003190112610510576020610763614064565b3461051057602036600319011261051057600435612451612e0e565b335f9081527f2d4ccbfe9f7672a6f2537c1e5bce6adacb73706879154bbab6ce096012d6721660205260409020547f4a634bc14d77baf979756509ef4298c6f6318af357828612545267ee2eb792339060ff16156124f557508060045414610ef0576020817f854df3eb95564502c8bc871ebdd15310ee26270f955f6c6bd8cea68e75045bc092600455604051908152a160015f805160206154b483398151915255005b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b34610510576020366003190112610510576004356125308161063c565b612538612b62565b61254182612acb565b9161254c8183612db0565b83018093116109fc57600182018092116109fc5761256991612db0565b81018091116109fc57602090604051908152f35b34610510575f366003190112610510576002546040516001600160a01b039091168152602090f35b3461051057604036600319011261051057610d3d6024356004356125c88261063c565b805f525f805160206154948339815191526020526125ec600160405f200154613507565b61383d565b34610510575f366003190112610510575f5460405160109190911c6001600160a01b03168152602090f35b34610510575f3660031901126105105760206040517fbae4ee3de6c709ff9a002e774c5b78cb381560b219213c88ae0f1e207c03c0238152f35b346105105760403660031901126105105760206120cd6004356126788161063c565b610692602435916126888361063c565b6119a3565b34610510575f366003190112610510576020600454604051908152f35b34610510576060366003190112610510576004356126c78161063c565b602435906126d482610b26565b6001600160401b0391604435838111610510576126f5903690600401610a29565b9092604093845161270581610b4a565b60608152606060208201526060868201529280612764575b6105b386612755878761274f612736898484519161298b565b928561274660208501518361327b565b9301519061319a565b9161414c565b90519081529081906020820190565b8101939250602081850312610510578035908682116105105701926060848203126105105784519561279587610b4a565b843581811161051057826127aa918701610c26565b8752602085013581811161051057826127c4918701610c26565b602088015285850135908111610510576105b3966127ed61274f93612736936127559801610c26565b8782015293945061271d565b3461051057602036600319011261051057610d3d6004356128198161063c565b612821613abb565b612d3f565b34610510576040366003190112610510576004356128438161063c565b60243561284e612e0e565b6001600160a01b038216156108795780156128ba5761287d61286e613feb565b612876614064565b9083614bfe565b335f908152600e60205260409020909290612897906140d8565b83116128a85761082a918391612e3d565b6040516321727a3760e11b8152600490fd5b604051636c6c627d60e11b8152600490fd5b346105105760403660031901126105105760206107636024356128ee8161063c565b600435612db0565b90600182811c92168015612924575b602083101461291057565b634e487b7160e01b5f52602260045260245ffd5b91607f1691612905565b634e487b7160e01b5f52601160045260245ffd5b5f198101919082116109fc57565b919082039182116109fc57565b818102929181159184041417156109fc57565b90600182018092116109fc57565b919082018092116109fc57565b6001600160a01b03165f908152600e60205260409020610549929190613330565b6040513d5f823e3d90fd5b916129f4926129c461458d565b6129cc61458d565b60015f805160206154b4833981519152556001600160a01b038116612ab1575b503691610bf0565b80516020908201818101828483031261051057828401516001600160401b039485821161051057019283926101a093849103126105105760405193612a3885610b4a565b612a44838383016138e9565b8552610180810151868111610510578383612a61928401016139b2565b9382860194855281015195861161051057612a89612aa89383610bd398612aa39401016139b2565b94604081019586525191611efe60405193849283016139f8565b6145d0565b5190519061498c565b612ac590612abd61458d565b61282161458d565b5f6129ec565b6001600160a01b03165f908152600e60205260409020612aea906140d8565b612af2614064565b612afa613feb565b90600181018091116109fc57600182018092116109fc5761054992613afd565b65ffffffffffff91821690821603919082116109fc57565b634e487b7160e01b5f52601260045260245ffd5b9065ffffffffffff809116918215612b5d57160490565b612b32565b612b6b4261312c565b612b92600154612b8865ffffffffffff93848360a01c1690612b1a565b9060d01c90612b46565b1690565b6001549065ffffffffffff91828160a01c16918284821610612bbf57612b9292612b8891612b1a565b60405163b7d0949760e01b8152600490fd5b90612bda612e0e565b5f926001600160a01b0383169283156123b7578115612c92575f5b828110612c7057505f547f326b6aff1cd2fb1c8234de4f9dcfb9047c5c36eb9ef2eb34af5121e969a75d279286929091612c45918491612c409060101c6001600160a01b03166116af565b613f00565b612c56604051928392339684612ccd565b0390a390610bd360015f805160206154b483398151915255565b94612c8b6001916118f9612c85898789612cb8565b35613f4f565b9501612bf5565b60405163edf3b93360e01b8152600490fd5b634e487b7160e01b5f52603260045260245ffd5b9190811015612cc85760051b0190565b612ca4565b604080825281018390529392916001600160fb1b0381116105105760209160609160051b809183880137850101930152565b5190610bd382610e5d565b90816020910312610510575161054981610e5d565b5190610bd38261063c565b9081602091031261051057516105498161063c565b6001600160a01b03908116908115612d98575f8051602061543483398151915280546001600160a01b031981168417909155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b604051631e4fbdf760e01b81525f6004820152602490fd5b90612dd690825f52600860205260405f209060018060a01b03165f5260205260405f2090565b54905f52600660205260405f2054600760205260405f205490600181018091116109fc57600182018092116109fc5761054992613afd565b5f805160206154b48339815191526002815414612e2b5760029055565b604051633ee5aeb560e01b8152600490fd5b335f908152600e6020526040812093949390929190612e7c90612e5f4261312c565b335f908152600e602052604090206110c3908990611893906140d8565b5050612e96612e8a4261312c565b61107087611893613feb565b5050612eb0612ea44261312c565b61105b84611893614064565b505081612f4282610692612eca612ec5612b62565b612970565b612f21612edf825f52600660205260405f2090565b54612ef2835f52600760205260405f2090565b54612f09612f0183838b61414c565b9a8b9361297e565b612f1b855f52600660205260405f2090565b5561297e565b612f33825f52600760205260405f2090565b555f52600860205260405f2090565b612f4d84825461297e565b9055604080519182526020820187905281018390526001600160a01b03919091169033907febff2602b3f468259e1e99f613fed6691f3a6526effe6ef3e768ba7ae7a36c4f90606090a36040519384529233907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9080602081015b0390a3565b916001600160a01b03808416929083156131145781169384156130fc576001600160a01b0381165f908152600e6020526040902061300a906140d8565b908382106130ca57612fc89261306c7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef95936130596130b89460018060a01b03165f52600e60205260405f2090565b90856130644261312c565b910391613e42565b50506001600160a01b0381165f908152600e6020526040902090836130b16107f46130964261312c565b6001600160a01b039094165f908152600e6020526040902090565b0191613e42565b50506040519081529081906020820190565b60405163391434e360e21b81526001600160a01b03919091166004820152602481019190915260448101839052606490fd5b60405163ec442f0560e01b81525f6004820152602490fd5b604051634b637e8f60e11b81525f6004820152602490fd5b65ffffffffffff9081811161313f571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b610510913691610bf0565b90816020910312610510575163ffffffff811681036105105790565b90600163ffffffff809316019182116109fc57565b9080511561327157806020806131b593518301019101613169565b6131be816143bd565b906131cf825165ffffffffffff1690565b9065ffffffffffff80851692168281146132655782119182613205575b50506131fc57506105499061416d565b60209150015190565b909150613213600a54612942565b63ffffffff83161491821561322c575b50505f806131ec565b61325d91925061324661324161325292613185565b6143bd565b5165ffffffffffff1690565b65ffffffffffff1690565b115f80613223565b50505060209150015190565b506105499061416d565b90805115613326578060208061329693518301019101613169565b61329f81614447565b906132b0825165ffffffffffff1690565b9065ffffffffffff808516921682811461326557821191826132dd575b50506131fc575061054990614234565b9091506132eb600c54612942565b63ffffffff831614918215613304575b50505f806132cd565b61331e91925061324661331961325292613185565b614447565b115f806132fb565b5061054990614234565b918051156133f2578060208061334b93518301019101613169565b9161335683826144c7565b92613367845165ffffffffffff1690565b9065ffffffffffff80851692168281146133e6578211918261339d575b50506133945761054992506142f4565b50506020015190565b9091506133aa8354612942565b63ffffffff8316149182156133c3575b50505f80613384565b6133de9192506132466133d861325292613185565b856144c7565b115f806133ba565b50505050506020015190565b50610549916142f4565b335f9081527f03b26b53c87faa1058f30bb5d2fee64f717719a0d9b7e4f4df027aa5e9b6ed69602052604090207fbae4ee3de6c709ff9a002e774c5b78cb381560b219213c88ae0f1e207c03c0239060ff905b5416156124f55750565b335f9081527fe41986b390c4ce6791b87f7423b5fab7a81a0e6d89660b6264f697d008b2243a602052604090207fc6aaadd7371d5e8f9ed6849dd66a66573a3ba37167d03f4352c9ba5693678fac9060ff9061344f565b335f9081527f0287ab4cb376ea253d7b2ce0c2cbf458f7deae9458470d74afdfbbee484e9540602052604090207f9c56d972d63cbb4195b3c1484691dfc220fa96a4c47e7b6613bd82a022029e069060ff9061344f565b5f8181525f8051602061549483398151915260209081526040808320338452909152902060ff9061344f565b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260409020545f805160206154948339815191529060ff166135de575f808052602091825260408082206001600160a01b038516835290925220805460ff1916600117905533906001600160a01b03165f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b50505f90565b6001600160a01b0381165f9081527f03b26b53c87faa1058f30bb5d2fee64f717719a0d9b7e4f4df027aa5e9b6ed69602052604090207fbae4ee3de6c709ff9a002e774c5b78cb381560b219213c88ae0f1e207c03c023905f805160206154948339815191529060ff905b54166136b3575f828152602091825260408082206001600160a01b038616835290925220805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b5050505f90565b6001600160a01b0381165f9081527f0287ab4cb376ea253d7b2ce0c2cbf458f7deae9458470d74afdfbbee484e9540602052604090207f9c56d972d63cbb4195b3c1484691dfc220fa96a4c47e7b6613bd82a022029e06905f805160206154948339815191529060ff9061364f565b6001600160a01b0381165f9081527fe41986b390c4ce6791b87f7423b5fab7a81a0e6d89660b6264f697d008b2243a602052604090207fc6aaadd7371d5e8f9ed6849dd66a66573a3ba37167d03f4352c9ba5693678fac905f805160206154948339815191529060ff9061364f565b6001600160a01b0381165f9081527f2d4ccbfe9f7672a6f2537c1e5bce6adacb73706879154bbab6ce096012d67216602052604090207f4a634bc14d77baf979756509ef4298c6f6318af357828612545267ee2eb79233905f805160206154948339815191529060ff9061364f565b5f8181525f80516020615494833981519152602081815260408084206001600160a01b038716855290915290912060ff9061364f565b5f8181525f80516020615494833981519152602081815260408084206001600160a01b03871685529091529091205460ff16156136b3575f828152602091825260408082206001600160a01b038616835290925220805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b90816020910312610510575190565b5190610bd382610b26565b919082610160910312610510576138fe610ba6565b9161390881612d1f565b835261391660208201612d1f565b6020840152613927604082016138de565b604084015261393860608201612cff565b606084015261394960808201612cff565b608084015260a081015160a084015261396460c08201612d1f565b60c084015261397560e08201612d1f565b60e0840152610100613988818301612d1f565b9084015261012061399a818301612d1f565b908401526139ac610140809201612d1f565b90830152565b81601f82011215610510578051906139c982610bd5565b926139d76040519485610b85565b8284526020838301011161051057815f9260208093018386015e8301015290565b81516001600160a01b0316815261016081019291610bd391906020818101516001600160a01b03169083015260408181015165ffffffffffff169083015260608181015115159083015260808181015115159083015260a0818101519083015260c0808201516001600160a01b03169083015260e0818101516001600160a01b031690830152610100818101516001600160a01b031690830152610120818101516001600160a01b031690830152610140908101516001600160a01b0316910152565b5f80516020615434833981519152546001600160a01b03163303613adb57565b60405163118cdaa760e01b8152336004820152602490fd5b8115612b5d570490565b91818302915f1981850993838086109503948086039514613b7d5784831115613b705790829109815f038216809204600280826003021880830282030280830282030280830282030280830282030280830282030280920290030293600183805f03040190848311900302920304170290565b8215600302601118614ab1565b5050906105499250613af3565b600b54811015612cc857600b5f525f8051602061547483398151915201905f90565b600d54811015612cc857600d5f525f8051602061545483398151915201905f90565b8054821015612cc8575f5260205f2001905f90565b600d54600160401b811015610b65576001810180600d55811015612cc857600d5f525f805160206154548339815191520155565b600b54600160401b811015610b65576001810180600b55811015612cc857600b5f525f805160206154748339815191520155565b90815491600160401b831015610b655782613c6e916001610bd395018155613bce565b90919082549060031b91821b915f19901b1916179055565b919091600d9081548015613d31575b50613c9e614ac1565b50929091815492613cad614064565b9481613d1c575b5015613cf957505f1982018281116109fc5781541115612cc8575f527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb4018390559190565b613d0d926001600160d01b03169150614f2b565b5050613d1883613be3565b9190565b65ffffffffffff83811691161490505f613cb4565b600160401b811015610b655760018101808455811015612cc8575f908382525f8051602061545483398151915201555f613c95565b919091600b9081548015613e0d575b50613d7e614b16565b50929091815492613d8d613feb565b9481613df8575b5015613dd957505f1982018281116109fc5781541115612cc8575f527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db8018390559190565b613ded926001600160d01b03169150614ffb565b5050613d1883613c17565b65ffffffffffff83811691161490505f613d94565b600160401b811015610b655760018101808455811015612cc8575f908382525f8051602061547483398151915201555f613d75565b90929192600182019081548015613ed0575b5084613e5f84614b6b565b50949092845493613e6f836140d8565b9681613ebb575b5015613e98575050505f1981019081116109fc57613c6e8591613d1893613bce565b613d18949293613eb4926001600160d01b03909116919061509a565b5050613c4b565b65ffffffffffff83811691161490505f613e76565b600160401b811015610b6557806001613eec9201845583613bce565b8154905f199060031b1b191690555f613e54565b60405163a9059cbb60e01b60208201526001600160a01b03909216602483015260448083019390935291815260808101916001600160401b03831182841017610b6557610bd392604052614ba4565b90613f58612b62565b821015613fd9575f82815260096020908152604080832033845290915290205460ff16613fc757613f893383612db0565b918215613fb5575f9081526009602090815260408083203384529091529020805460ff19166001179055565b6040516366c0bcbf60e11b8152600490fd5b604051630c8d9eab60e31b8152600490fd5b60405163d5b25b6360e01b8152600490fd5b600a548061402b57505f5b6001600160d01b0381161561402657600b54811015612cc857600b5f525f80516020615474833981519152015490565b505f90565b805f198101116109fc57600a5f527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a7015460301c613ff6565b600c548061409f57505f5b6001600160d01b0381161561402657600d54811015612cc857600d5f525f80516020615454833981519152015490565b805f198101116109fc57600c5f527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c6015460301c61406f565b80548061410757505f5b6001600160d01b038116156135de5760016140fd9201613bce565b90549060031b1c90565b5f199080828101116109fc57825f5260205f2001015460301c6140e2565b906001600160a01b03808316156106f7578116156106df57610692614149926119a3565b55565b9190600181018091116109fc57600182018092116109fc5761054992613afd565b600a54905f8291600584116141db575b614187935061527f565b806141aa57505f5b6001600160d01b03811615614026576140fd61054991613b8a565b6141cf6141b96141d692612942565b600a5f525f805160206153f48339815191520190565b5460301c90565b61418f565b91926141e681615154565b81039081116109fc5761418793600a5f5265ffffffffffff80835f805160206153f4833981519152015416908516105f1461422257509161417d565b92915061422e90612970565b9061417d565b600c54905f82916005841161429b575b61424e93506152e8565b8061427157505f5b6001600160d01b03811615614026576140fd61054991613bac565b6141cf61428061429692612942565b600c5f525f805160206153b48339815191520190565b614256565b91926142a681615154565b81039081116109fc5761424e93600c5f5265ffffffffffff80835f805160206153b4833981519152015416908516105f146142e2575091614244565b9291506142ee90612970565b90614244565b908154905f829160058411614357575b61430f935084615351565b8061433757505f905b6001600160d01b038216156135de576105499160016140fd9201613bce565b6141cf61434661435192612942565b835f5260205f200190565b90614318565b919261436281615154565b81039081116109fc5761430f93855f5265ffffffffffff808360205f20015416908516105f14614393575091614304565b92915061439f90612970565b90614304565b604051906143b282610b6a565b5f6020838281520152565b6143c56143a5565b506143ce6143a5565b50600a54811015612cc857600a5f526020604051916143ec83610b6a565b5f805160206153f483398151915201549165ffffffffffff83169283825260301c9182910152600b54811015612cc857600b5f525f8051602061547483398151915201546040519161443d83610b6a565b8252602082015290565b61444f6143a5565b506144586143a5565b50600c54811015612cc857600c5f5260206040519161447683610b6a565b5f805160206153b483398151915201549165ffffffffffff83169283825260301c9182910152600d54811015612cc857600d5f525f8051602061545483398151915201546040519161443d83610b6a565b90602060016144eb614517936144db6143a5565b506144e46143a5565b5085613bce565b5093604051946144fa86610b6a565b549465ffffffffffff86169586825260301c938491015201613bce565b9054906040519261452784610b6a565b835260031b1c602082015290565b6040516323b872dd60e01b60208201526001600160a01b03928316602482015292909116604483015260648083019390935291815260a08101918183106001600160401b03841117610b6557610bd392604052614ba4565b60ff5f805160206154d48339815191525460401c16156145a957565b604051631afcd79f60e31b8152600490fd5b906101608282031261051057610549916138e9565b6145e390602080825183010191016145bb565b80516001600160a01b03919082161561497a57604080820165ffffffffffff614612825165ffffffffffff1690565b16156149695760c083018051909290614633906001600160a01b03166116af565b1561481a575b5091614766610140926147056146e06147c49661468761465f875160018060a01b031690565b5f805462010000600160b01b03191660109290921b62010000600160b01b0316919091179055565b6020860151600180546001600160a01b0319166001600160a01b039092169190911790556132466146b74261312c565b6001805465ffffffffffff60a01b191660a09290921b65ffffffffffff60a01b16919091179055565b600180546001600160d01b031660d09290921b6001600160d01b031916919091179055565b6147256147156060850151151590565b60ff80195f541691151516175f55565b61474c6147356080850151151590565b61ff005f5491151560081b169061ff001916175f55565b61475960a0840151600455565b516001600160a01b031690565b84811661480a575b5060e08101516001600160a01b03168481166147fa575b506101008101516001600160a01b03168481166147ea575b506101208101516001600160a01b03168481166147da575b5001516001600160a01b031690565b9081166147ce5750565b6147d790613798565b50565b6147e390613729565b505f6147b5565b6147f3906136ba565b505f61479d565b614803906135e4565b505f614785565b61481390613533565b505f61476e565b60e0840151614831906001600160a01b03166116af565b15614906575b61012084015161484f906001600160a01b03166116af565b614639576080840151156148bc5760a0840151158061489d575b61488d575091614766610140926147056146e06147c4965b94965050509250614639565b5163183c854560e21b8152600490fd5b506101408401516148b6906001600160a01b03166116af565b15614869565b60a0840151158015906148e6575b61488d575091614766610140926147056146e06147c496614881565b506101408401516148ff906001600160a01b03166116af565b15156148ca565b60608401511561493c57610100840151614928906001600160a01b03166116af565b614837575163183c854560e21b8152600490fd5b610100840151614954906001600160a01b03166116af565b15614837575163183c854560e21b8152600490fd5b81516368f5f8f160e11b8152600490fd5b6040516368f7a67560e11b8152600490fd5b919061499661458d565b61499e61458d565b82516001600160401b038111610b65575f805160206153d4833981519152906149d0816149cb84546128f6565b614c37565b602080601f8311600114614a1757509080614a0592610bd396975f92614a0c575b50508160011b915f199060031b1c19161790565b9055614d29565b015190505f806149f1565b90601f19831696614a555f805160206153d48339815191525f527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab090565b925f905b898210614a9957505090839291600194610bd3989910614a81575b505050811b019055614d29565b01515f1960f88460031b161c191690555f8080614a74565b80600185968294968601518155019501930190614a59565b634e487b715f526020526024601cfd5b600c5480614ad257505f905f905f90565b805f198101116109fc57600c5f527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c6015460019165ffffffffffff82169160301c90565b600a5480614b2757505f905f905f90565b805f198101116109fc57600a5f527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a7015460019165ffffffffffff82169160301c90565b805480614b7c5750505f905f905f90565b5f199181838101116109fc575f5260205f2001015460019165ffffffffffff82169160301c90565b905f602091828151910182855af1156129ac575f513d614bf557506001600160a01b0381163b155b614bd35750565b604051635274afe760e01b81526001600160a01b039091166004820152602490fd5b60011415614bcc565b9190600181018091116109fc57600182018092116109fc57614c21828285613afd565b928215612b5d5709151581018091116109fc5790565b601f8111614c43575050565b5f805160206153d48339815191525f527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0906020601f840160051c83019310614ca6575b601f0160051c01905b818110614c9b575050565b5f8155600101614c90565b9091508190614c87565b601f8111614cbc575050565b5f805160206154148339815191525f527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa906020601f840160051c83019310614d1f575b601f0160051c01905b818110614d14575050565b5f8155600101614d09565b9091508190614d00565b9081516001600160401b038111610b65575f8051602061541483398151915290614d5c81614d5784546128f6565b614cb0565b602080601f8311600114614d9157508190614d8d9394955f92614a0c5750508160011b915f199060031b1c19161790565b9055565b90601f19831695614dcf5f805160206154148339815191525f527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa90565b925f905b888210614e0a57505083600195969710614df2575b505050811b019055565b01515f1960f88460031b161c191690555f8080614de8565b80600185968294968601518155019501930190614dd3565b600c5490600160401b821015610b65576001820180600c55821015612cc857600c5f52805160209091015160301b65ffffffffffff191665ffffffffffff91909116175f805160206153b483398151915290910155565b600a5490600160401b821015610b65576001820180600a55821015612cc857600a5f52805160209091015160301b65ffffffffffff191665ffffffffffff91909116175f805160206153f483398151915290910155565b8054600160401b811015610b6557614eed91600182018155613bce565b614f1857815160209092015160301b65ffffffffffff191665ffffffffffff92909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b600c549192918015614fd257614280614f4391612942565b9081549165ffffffffffff90818416918316808311614fc057869203614f8857614f8192509065ffffffffffff82549181199060301b169116179055565b60301c9190565b5050614fbb90614fa7614f99610bc6565b65ffffffffffff9092168252565b6001600160d01b0385166020820152614e22565b614f81565b604051632520601d60e01b8152600490fd5b50614ff690614fe2614f99610bc6565b6001600160d01b0384166020820152614e22565b5f9190565b600a549192918015615076576141b961501391612942565b9081549165ffffffffffff90818416918316808311614fc05786920361505157614f8192509065ffffffffffff82549181199060301b169116179055565b5050614fbb90615062614f99610bc6565b6001600160d01b0385166020820152614e79565b50614ff690615086614f99610bc6565b6001600160d01b0384166020820152614e79565b8054929392801561512f576150b16150bc91612942565b825f5260205f200190565b9182549265ffffffffffff91828516928116808411614fc0578793036150fb5750614f8192509065ffffffffffff82549181199060301b169116179055565b915050614fbb9161511b61510d610bc6565b65ffffffffffff9093168352565b6001600160d01b0386166020830152614ed0565b5090614ff69161514061510d610bc6565b6001600160d01b0385166020830152614ed0565b600181111561054957600181600160801b81101561526d575b61521561520b6152016151f76151ed6151e361522197600488600160401b61521c9a1015615260575b640100000000811015615253575b62010000811015615246575b61010081101561523a575b601081101561522e575b1015615226575b60030260011c6151dc818b613af3565b0160011c90565b6151dc818a613af3565b6151dc8189613af3565b6151dc8188613af3565b6151dc8187613af3565b6151dc8186613af3565b8093613af3565b821190565b900390565b60011b6151cc565b811c9160021b916151c5565b60081c91811b916151bb565b60101c9160081b916151b0565b60201c9160101b916151a4565b60401c9160201b91615196565b50600160401b9050608082901c61516d565b905b82811061528d57505090565b9091808216906001818418811c83018093116109fc57600a5f5265ffffffffffff80845f805160206153f4833981519152015416908616105f146152d5575050915b90615281565b9093925081018091116109fc57906152cf565b905b8281106152f657505090565b9091808216906001818418811c83018093116109fc57600c5f5265ffffffffffff80845f805160206153b4833981519152015416908616105f1461533e575050915b906152ea565b9093925081018091116109fc5790615338565b91905b8382106153615750505090565b909192808316906001818518811c83018093116109fc57855f5265ffffffffffff808460205f20015416908516105f146153a0575050925b9190615354565b9094935081018091116109fc579161539956fedf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c752c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace03c65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a852c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace049016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300d7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db902dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220b9bc961cf9d9c9c89aa268126ef0b84208d178b706ef9625b4f4a0a71d8201c864736f6c63430008190033","sourceMap":"652:3172:104:-:0;;;;;;;;;;;;;-1:-1:-1;;652:3172:104;;;;;-1:-1:-1;;;;;652:3172:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;3173:36:103;;;3219:32;;8837:64:22;652:3172:104;;;;;;;;;7896:76:22;;652:3172:104;;;;7985:34:22;7981:146;;-1:-1:-1;927:17:78;;;;;652:3172:104;;;;;;;3173:36:103;652:3172:104;;;;;;;;;;3219:32:103;652:3172:104;;;;;;;;;;927:17:78;652:3172:104;;;;;;;;;;;7981:146:22;-1:-1:-1;;;;;;652:3172:104;;;;;;;;;;;;;8087:29:22;;652:3172:104;;8087:29:22;7981:146;;;;;7896:76;652:3172:104;;-1:-1:-1;;;7938:23:22;;;;;652:3172:104;-1:-1:-1;652:3172:104;;;;;;-1:-1:-1;652:3172:104;;;;;-1:-1:-1;652:3172:104;;;;-1:-1:-1;;;;;652:3172:104;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a7146104ba57806306fdde03146104b5578063095ea7b3146104b05780631415519b146104ab57806318160ddd146103895780631b66c9e1146104a65780631e9a6950146104a157806323b872dd1461049c578063248a9ca31461049757806327810b6e14610492578063281f57521461048d5780632abe3048146104885780632d73c69c146104835780632dd310001461047e5780632f2ff15d14610479578063313ce5671461047457806336568abe1461046f578063392e53cd1461046a5780634105a7dd14610465578063463616711461046057806347e7ef241461045b57806348d3b775146104565780634ff0876a1461045157806350861adc1461044c57806350f22068146104475780635346e34f1461044257806354fd4d501461043d57806357ec83cc1461043857806359f769a9146104335780635cc070761461042e57806361a8c8c4146104295780636da3e06d146104245780636ec1e3f81461041f57806370a08231146103d4578063715018a61461041a5780637278e31c1461041557806373790ab314610410578063766718081461040b578063794b15b7146104065780637953b33b146104015780637c04c80a146103fc578063810da75d146103f757806383cd9cc3146103f257806387df0788146103ed5780638b0e9f3f146103e85780638da5cb5b146103e357806391d14854146103de57806395d89b41146103d95780639d66201b146103d45780639f86fd85146103cf578063a1b12202146103ca578063a217fddf146103c5578063a21a1df9146103c0578063a2861466146103bb578063a3b54172146103b6578063a5d03223146103b1578063a9059cbb146103ac578063aabc2496146103a7578063aad3ec96146103a2578063afba70ad1461039d578063b134427114610398578063bd49c35f14610393578063bdc8144b1461038e578063bfefcd7b14610389578063c31e8dd714610384578063ce9b79301461037f578063d547741f1461037a578063d8dfeb4514610375578063db38871514610370578063dd62ed3e1461036b578063ecf7085814610366578063efb559d614610361578063f2fde38b1461035c578063f3fef3a3146103575763f5e7ee0f14610352575f80fd5b6128cc565b612826565b6127f9565b6126aa565b61268d565b612656565b61261c565b6125f1565b6125a5565b61257d565b612513565b610749565b612435565b61241b565b6123f3565b6123c9565b612308565b612151565b61211c565b6120d6565b612089565b611f96565b611f5c565b611f42565b611f1e565b611e64565b6115d5565b611db2565b611d54565b611d20565b611cbe565b611c7a565b611ac1565b611aa8565b611a42565b611a1b565b6119db565b611989565b611948565b611676565b61160f565b6115b0565b61156c565b611519565b6114ef565b6114c8565b611390565b61135e565b6112c9565b6112b0565b611253565b611233565b611212565b610f2a565b610f02565b610e67565b610e22565b610dd7565b610d3f565b610cf1565b610cad565b610c41565b610a56565b610988565b610960565b610927565b61088a565b6107a5565b61076b565b61070f565b61064d565b61054c565b346105105760203660031901126105105760043563ffffffff60e01b811680910361051057602090637965db0b60e01b81149081156104ff575b506040519015158152f35b6301ffc9a760e01b1490505f6104f4565b5f80fd5b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b906020610549928181520190610514565b90565b34610510575f366003190112610510576040515f5f805160206153d483398151915280549061057a826128f6565b8085529160209160019182811690811561060f57506001146105b7575b6105b3866105a781880382610b85565b60405191829182610538565b0390f35b5f90815293507f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab05b8385106105fc575050505081016020016105a7826105b35f610597565b80548686018401529382019381016105df565b90508695506105b3969350602092506105a794915060ff191682840152151560051b82010192935f610597565b6001600160a01b0381160361051057565b346105105760403660031901126105105760043561066a8161063c565b60243533156106f7576001600160a01b0382169182156106df576106a78291610692336119a3565b9060018060a01b03165f5260205260405f2090565b556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b604051634a1406b160e11b81525f6004820152602490fd5b60405163e602df0560e01b81525f6004820152602490fd5b34610510575f3660031901126105105760206040517fc6aaadd7371d5e8f9ed6849dd66a66573a3ba37167d03f4352c9ba5693678fac8152f35b34610510575f366003190112610510576020610763613feb565b604051908152f35b34610510575f3660031901126105105760206040517f9c56d972d63cbb4195b3c1484691dfc220fa96a4c47e7b6613bd82a022029e068152f35b34610510576040366003190112610510576004356107c28161063c565b602435906107ce612e0e565b6001600160a01b0381161561087957335f908152600e602052604090206107f9906140d8565b6140d8565b82116108675761081961080a614064565b610812613feb565b908461414c565b918215610852578261082a92612e3d565b9061084160015f805160206154b483398151915255565b604080519182526020820192909252f35b60405160016245ddc760e11b03198152600490fd5b604051632418411f60e11b8152600490fd5b6040516208978560e71b8152600490fd5b34610510576060366003190112610510576004356108a78161063c565b6024356108b38161063c565b604435906108c433610692856119a3565b5492600184016108e5575b6108d99350612fcd565b60405160018152602090f35b828410610901576108fc836108d995033383614125565b6108cf565b604051637dc7a0d960e11b81523360048201526024810185905260448101849052606490fd5b34610510576020366003190112610510576004355f525f805160206154948339815191526020526020600160405f200154604051908152f35b34610510575f366003190112610510576001546040516001600160a01b039091168152602090f35b34610510575f366003190112610510576109a0612b62565b8015610a015760015465ffffffffffff8160a01c16915f1981019081116109fc576109ce9160d01c9061295d565b81018091116109fc576109e36105b39161312c565b60405165ffffffffffff90911681529081906020820190565b61292e565b604051639fa56a5b60e01b8152600490fd5b600435906001600160401b038216820361051057565b9181601f84011215610510578235916001600160401b038311610510576020838186019501011161051057565b3461051057604036600319011261051057610a6f610a13565b6001600160401b0360243581811161051057610a8f903690600401610a29565b929091610a9a612e0e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610b14575f805160206154d4833981519152549060ff8260401c16928315610b04575b5050501561315e575b60405163f92ee8a960e01b8152600490fd5b81169116101590505f8080610ae9565b604051631966391b60e11b8152600490fd5b65ffffffffffff81160361051057565b634e487b7160e01b5f52604160045260245ffd5b606081019081106001600160401b03821117610b6557604052565b610b36565b604081019081106001600160401b03821117610b6557604052565b90601f801991011681019081106001600160401b03821117610b6557604052565b6040519061016082018281106001600160401b03821117610b6557604052565b60405190610bd382610b6a565b565b6001600160401b038111610b6557601f01601f191660200190565b929192610bfc82610bd5565b91610c0a6040519384610b85565b829481845281830111610510578281602093845f960137010152565b9080601f830112156105105781602061054993359101610bf0565b3461051057606036600319011261051057600435610c5e8161063c565b60243590610c6b82610b26565b604435906001600160401b03821161051057602092610c91610763933690600401610c26565b6001600160a01b039092165f908152600e855260409020613330565b34610510575f366003190112610510576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461051057604036600319011261051057610d3d602435600435610d148261063c565b805f525f80516020615494833981519152602052610d38600160405f200154613507565b613807565b005b34610510575f366003190112610510575f5460405163313ce56760e01b8152906020908290600490829060101c6001600160a01b03165afa8015610dd2575f90610d94575b60405160ff919091168152602090f35b506020813d602011610dca575b81610dae60209383610b85565b81010312610510575160ff81168103610510576105b390610d84565b3d9150610da1565b6129ac565b3461051057604036600319011261051057602435610df48161063c565b336001600160a01b03821603610e1057610d3d9060043561383d565b60405163334bd91960e11b8152600490fd5b34610510575f3660031901126105105760ff60025460a01c1680610e4e575b6020906040519015158152f35b5060035460a01c60ff16610e41565b8015150361051057565b3461051057602036600319011261051057600435610e8481610e5d565b610e8c612e0e565b610e946133fc565b5f54901515908160ff8216151514610ef05760ff191660ff8216175f556040519081527f3e12b7b36c75ac9609a3f58609b331210428e1a85909132638955ba0301eec3390602090a160015f805160206154b483398151915255005b60405163a741a04560e01b8152600490fd5b34610510575f36600319011261051057602065ffffffffffff60015460a01c16604051908152f35b3461051057604080600319360112610510576004803591610f4a8361063c565b610f52612e0e565b6001600160a01b0391838316908115611204575f5460ff8116806111eb575b6111dc5783516370a0823160e01b808252308483019081529096602093909160109190911c82169084908490819083010381845afa928315610dd2575f936111b9575b50610fc6906024359030903390614535565b5f5486519788523085890190815290979184918391908290819060200103918b60101c165afa908115610dd257611005935f9261118c575b5050612950565b93841561117d5760081c60ff1680611168575b61115a5750906105b3916110c961102d614064565b95611076611039613feb565b6110616110478a838b61414c565b9961105b8a6110554261312c565b9261297e565b90613c86565b5050611070896110554261312c565b90613d66565b50506001600160a01b0381165f908152600e60205260409020906110c3886110be6107f46110a34261312c565b6001600160a01b039095165f908152600e6020526040902090565b61297e565b91613e42565b5050815184815260208101869052819033907fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d790604090a361111760015f805160206154b483398151915255565b81518581525f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602090a35191825260208201929092529081906040820190565b8251632484557960e01b8152fd5b50611175846110be614064565b815410611018565b50825163070f6eed60e11b8152fd5b6111ab9250803d106111b2575b6111a38183610b85565b8101906138cf565b5f80610ffe565b503d611199565b610fc69193506111d590853d87116111b2576111a38183610b85565b9290610fb4565b5082516304f63b8560e01b8152fd5b50335f9081526005602052604090205460ff1615610f71565b8251630d534ce360e11b8152fd5b34610510575f36600319011261051057602060ff5f54166040519015158152f35b34610510575f36600319011261051057602060015460d01c604051908152f35b34610510575f36600319011261051057602060ff60025460a01c166040519015158152f35b9060406003198301126105105760043561129181610b26565b91602435906001600160401b0382116105105761054991600401610c26565b346105105760206107636112c336611278565b9061319a565b34610510576020366003190112610510576004356112e681610e5d565b6112ee612e0e565b6112f6613459565b5f54901515908160ff8260081c16151514610ef05761ff001916600882901b61ff0016175f556040519081527ffa7a25a0b611d4ba3c0ea990e90dc23d484a5dd7a1be4733fef2946ba74530c690602090a1610d3d60015f805160206154b483398151915255565b34610510575f3660031901126105105760206001600160401b035f805160206154d48339815191525416604051908152f35b34610510576060366003190112610510576113a9610a13565b6024356113b58161063c565b6001600160401b0391604435838111610510576113d6903690600401610a29565b5f805160206154d48339815191529491855494838616806114b75760ff8760401c169081156114aa575b50610af2577fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2966114a59661146d958716906001600160401b0319161790556114685f805160206154d4833981519152600160401b68ff000000000000000019825416179055565b6129b7565b5f805160206154d4833981519152805468ff0000000000000000191690556040516001600160401b0390911681529081906020820190565b0390a1005b905084861611155f611400565b60405162dc149f60e41b8152600490fd5b346105105760203660031901126105105760206107636004356114ea8161063c565b612acb565b34610510576020366003190112610510576004355f526006602052602060405f2054604051908152f35b34610510575f3660031901126105105760015465ffffffffffff61154f818360a01c1692611545612b62565b9060d01c9061295d565b82018092116109fc5761156360209261312c565b60405191168152f35b34610510575f366003190112610510576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610510575f36600319011261051057602060ff60035460a01c166040519015158152f35b34610510576020366003190112610510576004356115f28161063c565b60018060a01b03165f52600e602052602061076360405f206140d8565b34610510575f36600319011261051057611627613abb565b5f8051602061543483398151915280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346105105760403660031901126105105760043560243561169681610b26565b61169e612e0e565b6003546116bb906001600160a01b03165b6001600160a01b031690565b3303611936576116c9612b62565b906116d381612b96565b9082151580611925575b801561191c575b61190a576105b3937ff9d090c096f71cd1659861a9ce5b6f384bceb4e2fa4e4a19edf6489a9b8d56c792611716614064565b9461173161172382612970565b5f52600660205260405f2090565b54908281036118245750611745818761297e565b8381188185100281189687806117dd575b50505050505b836117a9575b6040805191825265ffffffffffff929092166020820152908101839052606090a161179960015f805160206154b483398151915255565b6040519081529081906020820190565b5f546117d89085906117c69060101c6001600160a01b03166116af565b6001546001600160a01b031690613f00565b611762565b61181993610ffe8361105b6118036117fc611723986118139888613afd565b8096612950565b9461180d4261312c565b92612950565b92612970565b555f80808087611756565b9150611838825f52600660205260405f2090565b5490611848816110be848a61297e565b908482188286100282189788611863575b505050505061175c565b6118d8938361188b936118988c6118936118816118c9998884613afd565b9788958584613afd565b948592612950565b612950565b938484106118e3575b610ffe9061105b6118b795969761180d4261312c565b6118c361172387612970565b55612950565b915f52600660205260405f2090565b555f80808080611859565b916118ff610ffe916118f9866118b79798612950565b9061297e565b8594509290506118a1565b604051635e18d2a560e01b8152600490fd5b508282116116e4565b5061192f83612942565b82106116dd565b60405163dabc4ad960e01b8152600490fd5b34610510575f3660031901126105105760015465ffffffffffff808260a01c1691611971612b62565b600181018091116109fc5761154f9160d01c9061295d565b34610510575f366003190112610510576020610763612b62565b6001600160a01b03165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020526040902090565b34610510576020366003190112610510576004356119f88161063c565b60018060a01b03165f526005602052602060ff60405f2054166040519015158152f35b34610510576020366003190112610510576020610763600435611a3d81610b26565b612b96565b3461051057604036600319011261051057600435611a5f8161063c565b6024356001600160401b038082116105105736602383011215610510578160040135908111610510573660248260051b84010111610510576105b3926024611799930190612bd1565b34610510576020610763611abb36611278565b9061327b565b3461051057602080600319360112610510576004803590611ae18261063c565b611ae9612e0e565b60025460a01c60ff16611c6b576040516302910f8b60e31b81526001600160a01b03838116838301908152909491908290829081906020010381887f0000000000000000000000000000000000000000000000000000000000000000165afa908115610dd2575f91611c3e575b5015611c2e5760405163fbfa77cf60e01b8152838516949082818581895afa928315610dd2575f93611bff575b505030911603611bf05750600280546001600160a01b03929092166001600160a81b031990921691909117600160a01b1790557fdb2160616f776a37b24808115554e79439bf26cccbbd4438190cc6d28e80ecd15f80a2610d3d60015f805160206154b483398151915255565b60405163b9f0f17160e01b8152fd5b611c1f929350803d10611c27575b611c178183610b85565b810190612d2a565b905f80611b83565b503d611c0d565b506040516324e5af8d60e21b8152fd5b611c5e9150823d8411611c64575b611c568183610b85565b810190612d0a565b5f611b56565b503d611c4c565b604051631380833b60e01b8152fd5b34610510575f366003190112610510576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610510575f36600319011261051057611cd6612b62565b611cde614064565b90805f52600660205260405f205482018092116109fc57600181018091116109fc575f52600660205260405f205481018091116109fc57602090604051908152f35b34610510575f366003190112610510575f80516020615434833981519152546040516001600160a01b039091168152602090f35b3461051057604036600319011261051057602060ff611da6602435611d788161063c565b6004355f525f80516020615494833981519152845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b34610510575f366003190112610510576040515f5f80516020615414833981519152805490611de0826128f6565b8085529160209160019182811690811561060f5750600114611e0c576105b3866105a781880382610b85565b5f90815293507f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa5b838510611e51575050505081016020016105a7826105b35f610597565b8054868601840152938201938101611e34565b346105105760408060031936011261051057600435611e828161063c565b602435906001600160401b038211610510575f8091611ea8611f0c943690600401610a29565b908187519283928337810184815203915af43d15611f1457611efe3d611ecd81610bd5565b90611eda86519283610b85565b81523d5f602083013e5b845194859315156020850152808401526060830190610514565b03601f198101835282610b85565b805190602001fd5b611efe6060611ee4565b34610510575f36600319011261051057602060ff5f5460081c166040519015158152f35b34610510575f3660031901126105105760206040515f8152f35b34610510575f3660031901126105105760206040517f4a634bc14d77baf979756509ef4298c6f6318af357828612545267ee2eb792338152f35b3461051057604036600319011261051057600435611fb38161063c565b602435611fbf81610e5d565b611fc7612e0e565b611fcf6134b0565b6001600160a01b038216918215612077575f8381526005602052604090205460ff16151582151514610ef0576001600160a01b03165f9081526005602052604090207ff991b1ecfb5115cbb36a2b2e2240c058406d2acc2fcc6e9e2dc99d845ff70a629161205e9161204c908260ff801983541691151516179055565b60405190151581529081906020820190565b0390a2610d3d60015f805160206154b483398151915255565b604051630da30f6560e31b8152600490fd5b346105105760403660031901126105105760206120cd6024356120ab8161063c565b6004355f526008835260405f209060018060a01b03165f5260205260405f2090565b54604051908152f35b3461051057604036600319011261051057602060ff611da66024356120fa8161063c565b6004355f526009845260405f209060018060a01b03165f5260205260405f2090565b346105105760403660031901126105105761214660043561213c8161063c565b6024359033612fcd565b602060405160018152f35b34610510576020806003193601126105105760048035906121718261063c565b612179612e0e565b60035460a01c60ff166122f9576001600160a01b038281169390846121e7575b6003805460ff60a01b1916600160a01b179055847fe7e4c932e03abddfe20f83af42c33627e816115c7ec2b168441f65dc14bfc3ba5f80a2610d3d60015f805160206154b483398151915255565b6040516302910f8b60e31b81526001600160a01b0385168482019081528390829081906020010381857f0000000000000000000000000000000000000000000000000000000000000000165afa908115610dd2575f916122dc575b50156122cb5760405163fbfa77cf60e01b815282818581895afa928315610dd2575f936122ac575b50503091160361229d5750600380546001600160a01b0319166001600160a01b039092169190911790555f808080612199565b604051633f3e089160e21b8152fd5b6122c3929350803d10611c2757611c178183610b85565b905f8061226a565b60405163dabc4ad960e01b81528390fd5b6122f39150833d8511611c6457611c568183610b85565b5f612242565b60405163703fe2e560e01b8152fd5b34610510576040366003190112610510576004356123258161063c565b60243590612331612e0e565b6001600160a01b03918183169081156123b7576123626105b39461235483613f4f565b9485915f5460101c16613f00565b604080519182526020820184905233917f865ca08d59f5cb456e85cd2f7ef63664ea4f73327414e9d8152c4158b0e946459190a360015f805160206154b4833981519152556040519081529081906020820190565b604051634e46966960e11b8152600490fd5b34610510576020366003190112610510576004355f526007602052602060405f2054604051908152f35b34610510575f366003190112610510576003546040516001600160a01b039091168152602090f35b34610510575f366003190112610510576020610763614064565b3461051057602036600319011261051057600435612451612e0e565b335f9081527f2d4ccbfe9f7672a6f2537c1e5bce6adacb73706879154bbab6ce096012d6721660205260409020547f4a634bc14d77baf979756509ef4298c6f6318af357828612545267ee2eb792339060ff16156124f557508060045414610ef0576020817f854df3eb95564502c8bc871ebdd15310ee26270f955f6c6bd8cea68e75045bc092600455604051908152a160015f805160206154b483398151915255005b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b34610510576020366003190112610510576004356125308161063c565b612538612b62565b61254182612acb565b9161254c8183612db0565b83018093116109fc57600182018092116109fc5761256991612db0565b81018091116109fc57602090604051908152f35b34610510575f366003190112610510576002546040516001600160a01b039091168152602090f35b3461051057604036600319011261051057610d3d6024356004356125c88261063c565b805f525f805160206154948339815191526020526125ec600160405f200154613507565b61383d565b34610510575f366003190112610510575f5460405160109190911c6001600160a01b03168152602090f35b34610510575f3660031901126105105760206040517fbae4ee3de6c709ff9a002e774c5b78cb381560b219213c88ae0f1e207c03c0238152f35b346105105760403660031901126105105760206120cd6004356126788161063c565b610692602435916126888361063c565b6119a3565b34610510575f366003190112610510576020600454604051908152f35b34610510576060366003190112610510576004356126c78161063c565b602435906126d482610b26565b6001600160401b0391604435838111610510576126f5903690600401610a29565b9092604093845161270581610b4a565b60608152606060208201526060868201529280612764575b6105b386612755878761274f612736898484519161298b565b928561274660208501518361327b565b9301519061319a565b9161414c565b90519081529081906020820190565b8101939250602081850312610510578035908682116105105701926060848203126105105784519561279587610b4a565b843581811161051057826127aa918701610c26565b8752602085013581811161051057826127c4918701610c26565b602088015285850135908111610510576105b3966127ed61274f93612736936127559801610c26565b8782015293945061271d565b3461051057602036600319011261051057610d3d6004356128198161063c565b612821613abb565b612d3f565b34610510576040366003190112610510576004356128438161063c565b60243561284e612e0e565b6001600160a01b038216156108795780156128ba5761287d61286e613feb565b612876614064565b9083614bfe565b335f908152600e60205260409020909290612897906140d8565b83116128a85761082a918391612e3d565b6040516321727a3760e11b8152600490fd5b604051636c6c627d60e11b8152600490fd5b346105105760403660031901126105105760206107636024356128ee8161063c565b600435612db0565b90600182811c92168015612924575b602083101461291057565b634e487b7160e01b5f52602260045260245ffd5b91607f1691612905565b634e487b7160e01b5f52601160045260245ffd5b5f198101919082116109fc57565b919082039182116109fc57565b818102929181159184041417156109fc57565b90600182018092116109fc57565b919082018092116109fc57565b6001600160a01b03165f908152600e60205260409020610549929190613330565b6040513d5f823e3d90fd5b916129f4926129c461458d565b6129cc61458d565b60015f805160206154b4833981519152556001600160a01b038116612ab1575b503691610bf0565b80516020908201818101828483031261051057828401516001600160401b039485821161051057019283926101a093849103126105105760405193612a3885610b4a565b612a44838383016138e9565b8552610180810151868111610510578383612a61928401016139b2565b9382860194855281015195861161051057612a89612aa89383610bd398612aa39401016139b2565b94604081019586525191611efe60405193849283016139f8565b6145d0565b5190519061498c565b612ac590612abd61458d565b61282161458d565b5f6129ec565b6001600160a01b03165f908152600e60205260409020612aea906140d8565b612af2614064565b612afa613feb565b90600181018091116109fc57600182018092116109fc5761054992613afd565b65ffffffffffff91821690821603919082116109fc57565b634e487b7160e01b5f52601260045260245ffd5b9065ffffffffffff809116918215612b5d57160490565b612b32565b612b6b4261312c565b612b92600154612b8865ffffffffffff93848360a01c1690612b1a565b9060d01c90612b46565b1690565b6001549065ffffffffffff91828160a01c16918284821610612bbf57612b9292612b8891612b1a565b60405163b7d0949760e01b8152600490fd5b90612bda612e0e565b5f926001600160a01b0383169283156123b7578115612c92575f5b828110612c7057505f547f326b6aff1cd2fb1c8234de4f9dcfb9047c5c36eb9ef2eb34af5121e969a75d279286929091612c45918491612c409060101c6001600160a01b03166116af565b613f00565b612c56604051928392339684612ccd565b0390a390610bd360015f805160206154b483398151915255565b94612c8b6001916118f9612c85898789612cb8565b35613f4f565b9501612bf5565b60405163edf3b93360e01b8152600490fd5b634e487b7160e01b5f52603260045260245ffd5b9190811015612cc85760051b0190565b612ca4565b604080825281018390529392916001600160fb1b0381116105105760209160609160051b809183880137850101930152565b5190610bd382610e5d565b90816020910312610510575161054981610e5d565b5190610bd38261063c565b9081602091031261051057516105498161063c565b6001600160a01b03908116908115612d98575f8051602061543483398151915280546001600160a01b031981168417909155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b604051631e4fbdf760e01b81525f6004820152602490fd5b90612dd690825f52600860205260405f209060018060a01b03165f5260205260405f2090565b54905f52600660205260405f2054600760205260405f205490600181018091116109fc57600182018092116109fc5761054992613afd565b5f805160206154b48339815191526002815414612e2b5760029055565b604051633ee5aeb560e01b8152600490fd5b335f908152600e6020526040812093949390929190612e7c90612e5f4261312c565b335f908152600e602052604090206110c3908990611893906140d8565b5050612e96612e8a4261312c565b61107087611893613feb565b5050612eb0612ea44261312c565b61105b84611893614064565b505081612f4282610692612eca612ec5612b62565b612970565b612f21612edf825f52600660205260405f2090565b54612ef2835f52600760205260405f2090565b54612f09612f0183838b61414c565b9a8b9361297e565b612f1b855f52600660205260405f2090565b5561297e565b612f33825f52600760205260405f2090565b555f52600860205260405f2090565b612f4d84825461297e565b9055604080519182526020820187905281018390526001600160a01b03919091169033907febff2602b3f468259e1e99f613fed6691f3a6526effe6ef3e768ba7ae7a36c4f90606090a36040519384529233907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9080602081015b0390a3565b916001600160a01b03808416929083156131145781169384156130fc576001600160a01b0381165f908152600e6020526040902061300a906140d8565b908382106130ca57612fc89261306c7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef95936130596130b89460018060a01b03165f52600e60205260405f2090565b90856130644261312c565b910391613e42565b50506001600160a01b0381165f908152600e6020526040902090836130b16107f46130964261312c565b6001600160a01b039094165f908152600e6020526040902090565b0191613e42565b50506040519081529081906020820190565b60405163391434e360e21b81526001600160a01b03919091166004820152602481019190915260448101839052606490fd5b60405163ec442f0560e01b81525f6004820152602490fd5b604051634b637e8f60e11b81525f6004820152602490fd5b65ffffffffffff9081811161313f571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b610510913691610bf0565b90816020910312610510575163ffffffff811681036105105790565b90600163ffffffff809316019182116109fc57565b9080511561327157806020806131b593518301019101613169565b6131be816143bd565b906131cf825165ffffffffffff1690565b9065ffffffffffff80851692168281146132655782119182613205575b50506131fc57506105499061416d565b60209150015190565b909150613213600a54612942565b63ffffffff83161491821561322c575b50505f806131ec565b61325d91925061324661324161325292613185565b6143bd565b5165ffffffffffff1690565b65ffffffffffff1690565b115f80613223565b50505060209150015190565b506105499061416d565b90805115613326578060208061329693518301019101613169565b61329f81614447565b906132b0825165ffffffffffff1690565b9065ffffffffffff808516921682811461326557821191826132dd575b50506131fc575061054990614234565b9091506132eb600c54612942565b63ffffffff831614918215613304575b50505f806132cd565b61331e91925061324661331961325292613185565b614447565b115f806132fb565b5061054990614234565b918051156133f2578060208061334b93518301019101613169565b9161335683826144c7565b92613367845165ffffffffffff1690565b9065ffffffffffff80851692168281146133e6578211918261339d575b50506133945761054992506142f4565b50506020015190565b9091506133aa8354612942565b63ffffffff8316149182156133c3575b50505f80613384565b6133de9192506132466133d861325292613185565b856144c7565b115f806133ba565b50505050506020015190565b50610549916142f4565b335f9081527f03b26b53c87faa1058f30bb5d2fee64f717719a0d9b7e4f4df027aa5e9b6ed69602052604090207fbae4ee3de6c709ff9a002e774c5b78cb381560b219213c88ae0f1e207c03c0239060ff905b5416156124f55750565b335f9081527fe41986b390c4ce6791b87f7423b5fab7a81a0e6d89660b6264f697d008b2243a602052604090207fc6aaadd7371d5e8f9ed6849dd66a66573a3ba37167d03f4352c9ba5693678fac9060ff9061344f565b335f9081527f0287ab4cb376ea253d7b2ce0c2cbf458f7deae9458470d74afdfbbee484e9540602052604090207f9c56d972d63cbb4195b3c1484691dfc220fa96a4c47e7b6613bd82a022029e069060ff9061344f565b5f8181525f8051602061549483398151915260209081526040808320338452909152902060ff9061344f565b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260409020545f805160206154948339815191529060ff166135de575f808052602091825260408082206001600160a01b038516835290925220805460ff1916600117905533906001600160a01b03165f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b50505f90565b6001600160a01b0381165f9081527f03b26b53c87faa1058f30bb5d2fee64f717719a0d9b7e4f4df027aa5e9b6ed69602052604090207fbae4ee3de6c709ff9a002e774c5b78cb381560b219213c88ae0f1e207c03c023905f805160206154948339815191529060ff905b54166136b3575f828152602091825260408082206001600160a01b038616835290925220805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b5050505f90565b6001600160a01b0381165f9081527f0287ab4cb376ea253d7b2ce0c2cbf458f7deae9458470d74afdfbbee484e9540602052604090207f9c56d972d63cbb4195b3c1484691dfc220fa96a4c47e7b6613bd82a022029e06905f805160206154948339815191529060ff9061364f565b6001600160a01b0381165f9081527fe41986b390c4ce6791b87f7423b5fab7a81a0e6d89660b6264f697d008b2243a602052604090207fc6aaadd7371d5e8f9ed6849dd66a66573a3ba37167d03f4352c9ba5693678fac905f805160206154948339815191529060ff9061364f565b6001600160a01b0381165f9081527f2d4ccbfe9f7672a6f2537c1e5bce6adacb73706879154bbab6ce096012d67216602052604090207f4a634bc14d77baf979756509ef4298c6f6318af357828612545267ee2eb79233905f805160206154948339815191529060ff9061364f565b5f8181525f80516020615494833981519152602081815260408084206001600160a01b038716855290915290912060ff9061364f565b5f8181525f80516020615494833981519152602081815260408084206001600160a01b03871685529091529091205460ff16156136b3575f828152602091825260408082206001600160a01b038616835290925220805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b90816020910312610510575190565b5190610bd382610b26565b919082610160910312610510576138fe610ba6565b9161390881612d1f565b835261391660208201612d1f565b6020840152613927604082016138de565b604084015261393860608201612cff565b606084015261394960808201612cff565b608084015260a081015160a084015261396460c08201612d1f565b60c084015261397560e08201612d1f565b60e0840152610100613988818301612d1f565b9084015261012061399a818301612d1f565b908401526139ac610140809201612d1f565b90830152565b81601f82011215610510578051906139c982610bd5565b926139d76040519485610b85565b8284526020838301011161051057815f9260208093018386015e8301015290565b81516001600160a01b0316815261016081019291610bd391906020818101516001600160a01b03169083015260408181015165ffffffffffff169083015260608181015115159083015260808181015115159083015260a0818101519083015260c0808201516001600160a01b03169083015260e0818101516001600160a01b031690830152610100818101516001600160a01b031690830152610120818101516001600160a01b031690830152610140908101516001600160a01b0316910152565b5f80516020615434833981519152546001600160a01b03163303613adb57565b60405163118cdaa760e01b8152336004820152602490fd5b8115612b5d570490565b91818302915f1981850993838086109503948086039514613b7d5784831115613b705790829109815f038216809204600280826003021880830282030280830282030280830282030280830282030280830282030280920290030293600183805f03040190848311900302920304170290565b8215600302601118614ab1565b5050906105499250613af3565b600b54811015612cc857600b5f525f8051602061547483398151915201905f90565b600d54811015612cc857600d5f525f8051602061545483398151915201905f90565b8054821015612cc8575f5260205f2001905f90565b600d54600160401b811015610b65576001810180600d55811015612cc857600d5f525f805160206154548339815191520155565b600b54600160401b811015610b65576001810180600b55811015612cc857600b5f525f805160206154748339815191520155565b90815491600160401b831015610b655782613c6e916001610bd395018155613bce565b90919082549060031b91821b915f19901b1916179055565b919091600d9081548015613d31575b50613c9e614ac1565b50929091815492613cad614064565b9481613d1c575b5015613cf957505f1982018281116109fc5781541115612cc8575f527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb4018390559190565b613d0d926001600160d01b03169150614f2b565b5050613d1883613be3565b9190565b65ffffffffffff83811691161490505f613cb4565b600160401b811015610b655760018101808455811015612cc8575f908382525f8051602061545483398151915201555f613c95565b919091600b9081548015613e0d575b50613d7e614b16565b50929091815492613d8d613feb565b9481613df8575b5015613dd957505f1982018281116109fc5781541115612cc8575f527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db8018390559190565b613ded926001600160d01b03169150614ffb565b5050613d1883613c17565b65ffffffffffff83811691161490505f613d94565b600160401b811015610b655760018101808455811015612cc8575f908382525f8051602061547483398151915201555f613d75565b90929192600182019081548015613ed0575b5084613e5f84614b6b565b50949092845493613e6f836140d8565b9681613ebb575b5015613e98575050505f1981019081116109fc57613c6e8591613d1893613bce565b613d18949293613eb4926001600160d01b03909116919061509a565b5050613c4b565b65ffffffffffff83811691161490505f613e76565b600160401b811015610b6557806001613eec9201845583613bce565b8154905f199060031b1b191690555f613e54565b60405163a9059cbb60e01b60208201526001600160a01b03909216602483015260448083019390935291815260808101916001600160401b03831182841017610b6557610bd392604052614ba4565b90613f58612b62565b821015613fd9575f82815260096020908152604080832033845290915290205460ff16613fc757613f893383612db0565b918215613fb5575f9081526009602090815260408083203384529091529020805460ff19166001179055565b6040516366c0bcbf60e11b8152600490fd5b604051630c8d9eab60e31b8152600490fd5b60405163d5b25b6360e01b8152600490fd5b600a548061402b57505f5b6001600160d01b0381161561402657600b54811015612cc857600b5f525f80516020615474833981519152015490565b505f90565b805f198101116109fc57600a5f527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a7015460301c613ff6565b600c548061409f57505f5b6001600160d01b0381161561402657600d54811015612cc857600d5f525f80516020615454833981519152015490565b805f198101116109fc57600c5f527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c6015460301c61406f565b80548061410757505f5b6001600160d01b038116156135de5760016140fd9201613bce565b90549060031b1c90565b5f199080828101116109fc57825f5260205f2001015460301c6140e2565b906001600160a01b03808316156106f7578116156106df57610692614149926119a3565b55565b9190600181018091116109fc57600182018092116109fc5761054992613afd565b600a54905f8291600584116141db575b614187935061527f565b806141aa57505f5b6001600160d01b03811615614026576140fd61054991613b8a565b6141cf6141b96141d692612942565b600a5f525f805160206153f48339815191520190565b5460301c90565b61418f565b91926141e681615154565b81039081116109fc5761418793600a5f5265ffffffffffff80835f805160206153f4833981519152015416908516105f1461422257509161417d565b92915061422e90612970565b9061417d565b600c54905f82916005841161429b575b61424e93506152e8565b8061427157505f5b6001600160d01b03811615614026576140fd61054991613bac565b6141cf61428061429692612942565b600c5f525f805160206153b48339815191520190565b614256565b91926142a681615154565b81039081116109fc5761424e93600c5f5265ffffffffffff80835f805160206153b4833981519152015416908516105f146142e2575091614244565b9291506142ee90612970565b90614244565b908154905f829160058411614357575b61430f935084615351565b8061433757505f905b6001600160d01b038216156135de576105499160016140fd9201613bce565b6141cf61434661435192612942565b835f5260205f200190565b90614318565b919261436281615154565b81039081116109fc5761430f93855f5265ffffffffffff808360205f20015416908516105f14614393575091614304565b92915061439f90612970565b90614304565b604051906143b282610b6a565b5f6020838281520152565b6143c56143a5565b506143ce6143a5565b50600a54811015612cc857600a5f526020604051916143ec83610b6a565b5f805160206153f483398151915201549165ffffffffffff83169283825260301c9182910152600b54811015612cc857600b5f525f8051602061547483398151915201546040519161443d83610b6a565b8252602082015290565b61444f6143a5565b506144586143a5565b50600c54811015612cc857600c5f5260206040519161447683610b6a565b5f805160206153b483398151915201549165ffffffffffff83169283825260301c9182910152600d54811015612cc857600d5f525f8051602061545483398151915201546040519161443d83610b6a565b90602060016144eb614517936144db6143a5565b506144e46143a5565b5085613bce565b5093604051946144fa86610b6a565b549465ffffffffffff86169586825260301c938491015201613bce565b9054906040519261452784610b6a565b835260031b1c602082015290565b6040516323b872dd60e01b60208201526001600160a01b03928316602482015292909116604483015260648083019390935291815260a08101918183106001600160401b03841117610b6557610bd392604052614ba4565b60ff5f805160206154d48339815191525460401c16156145a957565b604051631afcd79f60e31b8152600490fd5b906101608282031261051057610549916138e9565b6145e390602080825183010191016145bb565b80516001600160a01b03919082161561497a57604080820165ffffffffffff614612825165ffffffffffff1690565b16156149695760c083018051909290614633906001600160a01b03166116af565b1561481a575b5091614766610140926147056146e06147c49661468761465f875160018060a01b031690565b5f805462010000600160b01b03191660109290921b62010000600160b01b0316919091179055565b6020860151600180546001600160a01b0319166001600160a01b039092169190911790556132466146b74261312c565b6001805465ffffffffffff60a01b191660a09290921b65ffffffffffff60a01b16919091179055565b600180546001600160d01b031660d09290921b6001600160d01b031916919091179055565b6147256147156060850151151590565b60ff80195f541691151516175f55565b61474c6147356080850151151590565b61ff005f5491151560081b169061ff001916175f55565b61475960a0840151600455565b516001600160a01b031690565b84811661480a575b5060e08101516001600160a01b03168481166147fa575b506101008101516001600160a01b03168481166147ea575b506101208101516001600160a01b03168481166147da575b5001516001600160a01b031690565b9081166147ce5750565b6147d790613798565b50565b6147e390613729565b505f6147b5565b6147f3906136ba565b505f61479d565b614803906135e4565b505f614785565b61481390613533565b505f61476e565b60e0840151614831906001600160a01b03166116af565b15614906575b61012084015161484f906001600160a01b03166116af565b614639576080840151156148bc5760a0840151158061489d575b61488d575091614766610140926147056146e06147c4965b94965050509250614639565b5163183c854560e21b8152600490fd5b506101408401516148b6906001600160a01b03166116af565b15614869565b60a0840151158015906148e6575b61488d575091614766610140926147056146e06147c496614881565b506101408401516148ff906001600160a01b03166116af565b15156148ca565b60608401511561493c57610100840151614928906001600160a01b03166116af565b614837575163183c854560e21b8152600490fd5b610100840151614954906001600160a01b03166116af565b15614837575163183c854560e21b8152600490fd5b81516368f5f8f160e11b8152600490fd5b6040516368f7a67560e11b8152600490fd5b919061499661458d565b61499e61458d565b82516001600160401b038111610b65575f805160206153d4833981519152906149d0816149cb84546128f6565b614c37565b602080601f8311600114614a1757509080614a0592610bd396975f92614a0c575b50508160011b915f199060031b1c19161790565b9055614d29565b015190505f806149f1565b90601f19831696614a555f805160206153d48339815191525f527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab090565b925f905b898210614a9957505090839291600194610bd3989910614a81575b505050811b019055614d29565b01515f1960f88460031b161c191690555f8080614a74565b80600185968294968601518155019501930190614a59565b634e487b715f526020526024601cfd5b600c5480614ad257505f905f905f90565b805f198101116109fc57600c5f527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c6015460019165ffffffffffff82169160301c90565b600a5480614b2757505f905f905f90565b805f198101116109fc57600a5f527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a7015460019165ffffffffffff82169160301c90565b805480614b7c5750505f905f905f90565b5f199181838101116109fc575f5260205f2001015460019165ffffffffffff82169160301c90565b905f602091828151910182855af1156129ac575f513d614bf557506001600160a01b0381163b155b614bd35750565b604051635274afe760e01b81526001600160a01b039091166004820152602490fd5b60011415614bcc565b9190600181018091116109fc57600182018092116109fc57614c21828285613afd565b928215612b5d5709151581018091116109fc5790565b601f8111614c43575050565b5f805160206153d48339815191525f527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0906020601f840160051c83019310614ca6575b601f0160051c01905b818110614c9b575050565b5f8155600101614c90565b9091508190614c87565b601f8111614cbc575050565b5f805160206154148339815191525f527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa906020601f840160051c83019310614d1f575b601f0160051c01905b818110614d14575050565b5f8155600101614d09565b9091508190614d00565b9081516001600160401b038111610b65575f8051602061541483398151915290614d5c81614d5784546128f6565b614cb0565b602080601f8311600114614d9157508190614d8d9394955f92614a0c5750508160011b915f199060031b1c19161790565b9055565b90601f19831695614dcf5f805160206154148339815191525f527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa90565b925f905b888210614e0a57505083600195969710614df2575b505050811b019055565b01515f1960f88460031b161c191690555f8080614de8565b80600185968294968601518155019501930190614dd3565b600c5490600160401b821015610b65576001820180600c55821015612cc857600c5f52805160209091015160301b65ffffffffffff191665ffffffffffff91909116175f805160206153b483398151915290910155565b600a5490600160401b821015610b65576001820180600a55821015612cc857600a5f52805160209091015160301b65ffffffffffff191665ffffffffffff91909116175f805160206153f483398151915290910155565b8054600160401b811015610b6557614eed91600182018155613bce565b614f1857815160209092015160301b65ffffffffffff191665ffffffffffff92909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b600c549192918015614fd257614280614f4391612942565b9081549165ffffffffffff90818416918316808311614fc057869203614f8857614f8192509065ffffffffffff82549181199060301b169116179055565b60301c9190565b5050614fbb90614fa7614f99610bc6565b65ffffffffffff9092168252565b6001600160d01b0385166020820152614e22565b614f81565b604051632520601d60e01b8152600490fd5b50614ff690614fe2614f99610bc6565b6001600160d01b0384166020820152614e22565b5f9190565b600a549192918015615076576141b961501391612942565b9081549165ffffffffffff90818416918316808311614fc05786920361505157614f8192509065ffffffffffff82549181199060301b169116179055565b5050614fbb90615062614f99610bc6565b6001600160d01b0385166020820152614e79565b50614ff690615086614f99610bc6565b6001600160d01b0384166020820152614e79565b8054929392801561512f576150b16150bc91612942565b825f5260205f200190565b9182549265ffffffffffff91828516928116808411614fc0578793036150fb5750614f8192509065ffffffffffff82549181199060301b169116179055565b915050614fbb9161511b61510d610bc6565b65ffffffffffff9093168352565b6001600160d01b0386166020830152614ed0565b5090614ff69161514061510d610bc6565b6001600160d01b0385166020830152614ed0565b600181111561054957600181600160801b81101561526d575b61521561520b6152016151f76151ed6151e361522197600488600160401b61521c9a1015615260575b640100000000811015615253575b62010000811015615246575b61010081101561523a575b601081101561522e575b1015615226575b60030260011c6151dc818b613af3565b0160011c90565b6151dc818a613af3565b6151dc8189613af3565b6151dc8188613af3565b6151dc8187613af3565b6151dc8186613af3565b8093613af3565b821190565b900390565b60011b6151cc565b811c9160021b916151c5565b60081c91811b916151bb565b60101c9160081b916151b0565b60201c9160101b916151a4565b60401c9160201b91615196565b50600160401b9050608082901c61516d565b905b82811061528d57505090565b9091808216906001818418811c83018093116109fc57600a5f5265ffffffffffff80845f805160206153f4833981519152015416908616105f146152d5575050915b90615281565b9093925081018091116109fc57906152cf565b905b8281106152f657505090565b9091808216906001818418811c83018093116109fc57600c5f5265ffffffffffff80845f805160206153b4833981519152015416908616105f1461533e575050915b906152ea565b9093925081018091116109fc5790615338565b91905b8382106153615750505090565b909192808316906001818518811c83018093116109fc57855f5265ffffffffffff808460205f20015416908516105f146153a0575050925b9190615354565b9094935081018091116109fc579161539956fedf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c752c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace03c65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a852c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace049016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300d7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db902dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220b9bc961cf9d9c9c89aa268126ef0b84208d178b706ef9625b4f4a0a71d8201c864736f6c63430008190033","sourceMap":"652:3172:104:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;-1:-1:-1;;652:3172:104;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3551:47:19;;;:87;;;;652:3172:104;;;;;;;;;;3551:87:19;-1:-1:-1;;;1134:40:28;;-1:-1:-1;3551:87:19;;;652:3172:104;-1:-1:-1;652:3172:104;;;;;;;;;;;;;;;;;;;-1:-1:-1;652:3172:104;;;;;;;;-1:-1:-1;;652:3172:104;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;-1:-1:-1;;652:3172:104;;;;;;;-1:-1:-1;;;;;;;;;;;652:3172:104;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;652:3172:104;;;;;;;-1:-1:-1;;;;652:3172:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;652:3172:104;;;;;:::o;:::-;;;;;;-1:-1:-1;;652:3172:104;;;;;;;;;:::i;:::-;;;966:10:24;11141:19:23;11137:89;;-1:-1:-1;;;;;652:3172:104;;;11239:21:23;;11235:90;;11334:29;966:10:24;;11334:20:23;966:10:24;11334:20:23;:::i;:::-;652:3172:104;;;;;;;;;;;;;;;;11334:29:23;652:3172:104;;;;;;11415:31:23;652:3172:104;966:10:24;11415:31:23;;652:3172:104;;;10117:4:23;652:3172:104;;;11235:90:23;652:3172:104;;-1:-1:-1;;;11283:31:23;;-1:-1:-1;652:3172:104;11283:31:23;;652:3172:104;;;11283:31:23;11137:89;652:3172:104;;-1:-1:-1;;;11183:32:23;;11158:1;652:3172:104;11183:32:23;;652:3172:104;;;11183:32:23;652:3172:104;;;;;;-1:-1:-1;;652:3172:104;;;;;;;966:38:103;652:3172:104;;;;;;;;;-1:-1:-1;;652:3172:104;;;;;4803:22:103;;:::i;:::-;652:3172:104;;;;;;;;;;;;-1:-1:-1;;652:3172:104;;;;;;;821:37:103;652:3172:104;;;;;;;;;-1:-1:-1;;652:3172:104;;;;;;;;;:::i;:::-;;;3361:103:26;;;:::i;:::-;-1:-1:-1;;;;;652:3172:104;;5525:21:102;5521:75;;5634:10;652:3172:104;;;;5606:15:103;652:3172:104;;;;;5606:33:103;;;:::i;:24::-;:33;:::i;:::-;5610:35:102;;5606:88;;1057:70:94;5173:21:103;;:::i;:::-;4803:22;;:::i;:::-;1057:70:94;;;:::i;:::-;5801:20:102;;;5797:82;;5904:43;;;;:::i;:::-;3426:1:26;;1949;-1:-1:-1;;;;;;;;;;;652:3172:104;3860:283:26;3426:1;652:3172:104;;;;;;;;;;;;;;5797:82:102;652:3172:104;;-1:-1:-1;;;;;;5844:24:102;;652:3172:104;;5844:24:102;5606:88;652:3172:104;;-1:-1:-1;;;5668:15:102;;652:3172:104;;5668:15:102;5521:75;652:3172:104;;-1:-1:-1;;;5569:16:102;;652:3172:104;;5569:16:102;652:3172:104;;;;;;-1:-1:-1;;652:3172:104;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;966:10:24;4867:29:23;966:10:24;4867:20:23;;;:::i;:29::-;652:3172:104;;11910:37:23;;;11906:310;;652:3172:104;6198:5:23;;;;:::i;:::-;652:3172:104;;4867:13:23;652:3172:104;;;;;11906:310:23;11967:24;;;11963:130;;12185:5;652:3172:104;6198:5:23;652:3172:104;;966:10:24;12185:5:23;;:::i;:::-;11906:310;;11963:130;652:3172:104;;-1:-1:-1;;;12018:60:23;;966:10:24;652:3172:104;12018:60:23;;652:3172:104;;;;;;;;;;;;;;;12018:60:23;652:3172:104;;;;;;-1:-1:-1;;652:3172:104;;;;;;-1:-1:-1;652:3172:104;-1:-1:-1;;;;;;;;;;;652:3172:104;;;4919:24:19;652:3172:104;-1:-1:-1;652:3172:104;4919:24:19;652:3172:104;;;;;;;;;;;;;-1:-1:-1;;652:3172:104;;;;;;;;-1:-1:-1;;;;;652:3172:104;;;;;;;;;;;;;;-1:-1:-1;;652:3172:104;;;;4084:14:103;;:::i;:::-;4112:10;;4108:65;;4190:17;652:3172:104;;;;;;11930:17:23;;;652:3172:104;;;;;;;4210:27:103;652:3172:104;;;4210:27:103;;:::i;:::-;652:3172:104;;;;;;;4189:60:103;652:3172:104;4189:60:103;;:::i;:::-;652:3172:104;;;;;;;;;;;;;;;;;;:::i;4108:65:103:-;652:3172:104;;-1:-1:-1;;;4145:17:103;;652:3172:104;;4145:17:103;652:3172:104;;;;-1:-1:-1;;;;;652:3172:104;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;652:3172:104;;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;652:3172:104;;;;;;:::i;:::-;-1:-1:-1;;;;;652:3172:104;;;;;;;;;;;;;;:::i;:::-;3361:103:26;;;;;:::i;:::-;1673:7:78;-1:-1:-1;;;;;652:3172:104;1659:10:78;:21;1655:71;;-1:-1:-1;;;;;;;;;;;652:3172:104;;;;;;;6431:44:22;;;;;652:3172:104;6427:105:22;;;;1809:204:78;6427:105:22;;652:3172:104;;-1:-1:-1;;;6498:23:22;;652:3172:104;;6498:23:22;6431:44;652:3172:104;;;;6450:25:22;;;-1:-1:-1;6431:44:22;;;;;1655:71:78;652:3172:104;;-1:-1:-1;;;1703:12:78;;652:3172:104;;1703:12:78;652:3172:104;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;652:3172:104;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;-1:-1:-1;;;;;652:3172:104;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;652:3172:104;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;652:3172:104;;;;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;:::-;-1:-1:-1;;;;;652:3172:104;;;;;;-1:-1:-1;;652:3172:104;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;652:3172:104;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;652:3172:104;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;652:3172:104;;;;;;;5383:59:103;652:3172:104;;;;;;:::i;:::-;-1:-1:-1;;;;;652:3172:104;;;-1:-1:-1;652:3172:104;;;5383:15:103;652:3172:104;;;;;5383:59:103;:::i;652:3172:104:-;;;;;;-1:-1:-1;;652:3172:104;;;;;;655:32:78;-1:-1:-1;;;;;652:3172:104;;;;;;;;;;;;-1:-1:-1;;652:3172:104;;;;5350:25:19;652:3172:104;;;;;;;:::i;:::-;;-1:-1:-1;652:3172:104;-1:-1:-1;;;;;;;;;;;652:3172:104;;3202:4:19;4919:24;652:3172:104;-1:-1:-1;652:3172:104;4919:24:19;652:3172:104;3202:4:19;:::i;:::-;5350:25;:::i;:::-;652:3172:104;;;;;;;-1:-1:-1;;652:3172:104;;;;;;;;-1:-1:-1;;;1109:37:104;;652:3172;1109:37;;652:3172;;;;;;;;-1:-1:-1;;;;;652:3172:104;1109:37;;;;;;652:3172;1109:37;;;652:3172;;;;;;;;;;;;;1109:37;;;;;;;;;;;;;;;;:::i;:::-;;;652:3172;;;;;;;;;;;;;1109:37;;;;;;-1:-1:-1;1109:37:104;;;;:::i;652:3172::-;;;;;;-1:-1:-1;;652:3172:104;;;;;;;;;:::i;:::-;966:10:24;-1:-1:-1;;;;;652:3172:104;;6441:34:19;6437:102;;6549:37;652:3172:104;;;6549:37:19;:::i;6437:102::-;652:3172:104;;-1:-1:-1;;;6498:30:19;;652:3172:104;;6498:30:19;652:3172:104;;;;;;-1:-1:-1;;652:3172:104;;;;;1524:22:102;652:3172:104;;;;1524:46:102;;;652:3172:104;;;;;;;;;;;1524:46:102;-1:-1:-1;1550:20:102;652:3172:104;;;;;1524:46:102;;652:3172:104;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;652:3172:104;;;;;;;;;:::i;:::-;3361:103:26;;:::i;:::-;3202:4:19;;:::i;:::-;-1:-1:-1;652:3172:104;;;;;;;;;;;9542:26:102;9538:76;;-1:-1:-1;;652:3172:104;;;;;-1:-1:-1;652:3172:104;;;;;;9665:27:102;;652:3172:104;;9665:27:102;1949:1:26;-1:-1:-1;;;;;;;;;;;652:3172:104;;9538:76:102;652:3172:104;;-1:-1:-1;;;9591:12:102;;652:3172:104;;9591:12:102;652:3172:104;;;;;;-1:-1:-1;;652:3172:104;;;;;;1718:31:103;652:3172:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3361:103:26;;:::i;:::-;-1:-1:-1;;;;;652:3172:104;;;;;3474:24:102;;3470:81;;-1:-1:-1;652:3172:104;;;;3565:55:102;;;652:3172:104;3561:118:102;;652:3172:104;;-1:-1:-1;;;3713:43:102;;;3750:4;3713:43;;;652:3172:104;;;;;;;;;;;;;;;;;;;;;;;;;3713:43:102;;;;;;;;;;-1:-1:-1;3713:43:102;;;652:3172:104;;3829:6:102;652:3172:104;;;3750:4:102;;3802:10;;3829:6;;:::i;:::-;-1:-1:-1;652:3172:104;;;3864:43:102;;;3750:4;3864:43;;;652:3172:104;;;;;;;;;;3864:43:102;652:3172:104;;;;;;3864:43:102;652:3172:104;;;;;3864:43:102;;;;;;;:59;:43;-1:-1:-1;3864:43:102;;;652:3172:104;3864:59:102;;;:::i;:::-;3938:20;;;3934:79;;652:3172:104;;;;;4027:64:102;;652:3172:104;4023:123:102;;5173:21:103;;652:3172:104;5173:21:103;4502:93:102;5173:21:103;;:::i;:::-;4803:22;4426:66:102;4803:22:103;;:::i;:::-;4349:67:102;390:70:94;;;;;:::i;:::-;837:15:68;4385:30:102;837:15:68;819:34;837:15;819:34;:::i;:::-;4385:30:102;;:::i;:::-;4349:67;;:::i;:::-;837:15:68;;4463:28:102;837:15:68;819:34;837:15;819:34;:::i;4463:28:102:-;4426:66;;:::i;:::-;-1:-1:-1;;;;;;;652:3172:104;;;;;;5606:15:103;652:3172:104;;;;;837:15:68;4553:41:102;837:15:68;5606:33:103;:24;819:34:68;837:15;819:34;:::i;:::-;-1:-1:-1;;;;;652:3172:104;;;;;;;5606:15:103;652:3172:104;;;;;;;5606:33:103;4553:41:102;:::i;:::-;4502:93;;:::i;:::-;-1:-1:-1;;652:3172:104;;;;;;;;;;;;;3802:10:102;;4611:62;;652:3172:104;;4611:62:102;3426:1:26;1949;-1:-1:-1;;;;;;;;;;;652:3172:104;3860:283:26;3426:1;652:3172:104;;;;;-1:-1:-1;;1808:46:104;;652:3172;;1808:46;652:3172;;;;;;;;;;;;;;;;;;;4023:123:102;652:3172:104;;-1:-1:-1;;;4114:21:102;;;4027:64;5173:21:103;4045:31:102;5173:21:103;;;:::i;4045:31:102:-;652:3172:104;;-1:-1:-1;4027:64:102;;3934:79;-1:-1:-1;652:3172:104;;-1:-1:-1;;;3981:21:102;;;3864:43;;;;;;-1:-1:-1;3864:43:102;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;3713;3829:6;3713:43;;;;;;;;;;;;;;;:::i;:::-;;;;;3561:118;-1:-1:-1;652:3172:104;;-1:-1:-1;;;3643:25:102;;;3565:55;-1:-1:-1;3609:10:102;652:3172:104;;;;3586:22:102;652:3172:104;;;;;;;;3585:35:102;3565:55;;3470:81;652:3172:104;;-1:-1:-1;;;3521:19:102;;;652:3172:104;;;;;;-1:-1:-1;;652:3172:104;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;652:3172:104;;;;;1805:27:103;652:3172:104;;;;;;;;;;;;;;;-1:-1:-1;;652:3172:104;;;;;;1968:34:103;652:3172:104;;;;;;;;;;;;;;;-1:-1:-1;;652:3172:104;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;652:3172:104;;;;;;;;;:::i;:::-;;;;;4622:48:103;652:3172:104;;;:::i;:::-;4622:48:103;;:::i;652:3172:104:-;;;;;;-1:-1:-1;;652:3172:104;;;;;;;;;:::i;:::-;3361:103:26;;:::i;:::-;3202:4:19;;:::i;:::-;-1:-1:-1;652:3172:104;;;;;;;;;;;;;10370:24:102;10366:74;;-1:-1:-1;;652:3172:104;;;;;;;;-1:-1:-1;652:3172:104;;;;;;10489:25:102;;652:3172:104;;10489:25:102;3426:1:26;1949;-1:-1:-1;;;;;;;;;;;652:3172:104;3860:283:26;652:3172:104;;;;;;-1:-1:-1;;652:3172:104;;;;;-1:-1:-1;;;;;;;;;;;;;;;;652:3172:104;;;;;;;;;;;;;;-1:-1:-1;;652:3172:104;;;;;;:::i;:::-;;;;;;:::i;:::-;-1:-1:-1;;;;;652:3172:104;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;8837:64:22;;652:3172:104;;;;;;734:29:78;730:87;;652:3172:104;;;;;6431:44:22;;;;;652:3172:104;6427:105:22;;;6656:20;652:3172:104;6656:20:22;652:3172:104;1167:340:78;652:3172:104;;;;-1:-1:-1;;;;;652:3172:104;;;;;6575:22:22;-1:-1:-1;;;;;;;;;;;;;;652:3172:104;;;;;;;;;6575:22:22;1167:340:78;:::i;:::-;-1:-1:-1;;;;;;;;;;;652:3172:104;;-1:-1:-1;;652:3172:104;;;;;-1:-1:-1;;;;;652:3172:104;;;;;;;;;;;;;6656:20:22;;;;652:3172:104;6431:44:22;652:3172:104;;;;;-1:-1:-1;6450:25:22;6431:44;;;730:87:78;652:3172:104;;-1:-1:-1;;;786:20:78;;652:3172:104;;786:20:78;652:3172:104;;;;;;-1:-1:-1;;652:3172:104;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;-1:-1:-1;;652:3172:104;;;;;;-1:-1:-1;652:3172:104;2431:59:103;652:3172:104;;;;-1:-1:-1;652:3172:104;;;;;;;;;;;;;;-1:-1:-1;;652:3172:104;;;;3875:17:103;652:3172:104;;3895:30:103;652:3172:104;;;;;3895:14:103;;;:::i;:::-;652:3172:104;;;3895:30:103;;:::i;:::-;652:3172:104;;;;;;;3874:63:103;652:3172:104;3874:63:103;;:::i;:::-;652:3172:104;;;;;;;;;;;;;-1:-1:-1;;652:3172:104;;;;;;1200:42:103;-1:-1:-1;;;;;652:3172:104;;;;;;;;;;;;-1:-1:-1;;652:3172:104;;;;;;2136:32:103;652:3172:104;;;;;;;;;;;;;;;;;;-1:-1:-1;;652:3172:104;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;652:3172:104;5606:15:103;652:3172:104;;;5606:33:103;652:3172:104;-1:-1:-1;652:3172:104;5606:33:103;:::i;652:3172:104:-;;;;;;-1:-1:-1;;652:3172:104;;;;2303:62:20;;:::i;:::-;-1:-1:-1;;;;;;;;;;;652:3172:104;;-1:-1:-1;;;;;;652:3172:104;;;;;;;-1:-1:-1;;;;;652:3172:104;3975:40:20;652:3172:104;;3975:40:20;652:3172:104;;;;;;;-1:-1:-1;;652:3172:104;;;;;;;;;;;:::i;:::-;3361:103:26;;:::i;:::-;7131:7:102;652:3172:104;7117:21:102;;-1:-1:-1;;;;;652:3172:104;;-1:-1:-1;;;;;652:3172:104;;;7117:21:102;:10;:21;7113:71;;7218:14;;:::i;:::-;7265:25;;;;:::i;:::-;7305:17;;;;:53;;;652:3172:104;7304:87:102;;;;652:3172:104;7300:146:102;;652:3172:104;5173:21:103;9310:48:102;5173:21:103;;;:::i;:::-;7540:17:102;7528:30;7540:17;;;:::i;:::-;652:3172:104;;7528:11:102;652:3172:104;;;;;;;7528:30:102;652:3172:104;;7572:29:102;;;;;7642:30;;;;;:::i;:::-;3066:5:63;;;3463;;;652:3172:104;3060:42:63;;7752:17:102;;;7748:384;;7568:1615;;;;;;;9197:17;9193:102;;7568:1615;652:3172:104;;;;;;;;;;;;;;;;;;;;;;;9310:48:102;3426:1:26;1949;-1:-1:-1;;;;;;;;;;;652:3172:104;3860:283:26;3426:1;652:3172:104;;;;;;;;;;;;;9193:102:102;-1:-1:-1;652:3172:104;9270:13:102;;652:3172:104;;9230:18:102;;652:3172:104;;-1:-1:-1;;;;;652:3172:104;;;9230:18:102;7556:1;652:3172:104;-1:-1:-1;;;;;652:3172:104;9270:13:102;;:::i;:::-;9193:102;;7748:384;8045:29;7813:50;7962:65;7813:50;7998:28;7914:29;7813:50;8057:16;7813:50;8077:40;7813:50;;;:::i;:::-;7914:29;;;:::i;:::-;837:15:68;819:34;837:15;819:34;:::i;:::-;7998:28:102;;:::i;8077:40::-;8057:16;;:::i;8045:29::-;652:3172:104;7748:384:102;;;;;;;7568:1615;8185:26;;;;652:3172:104;;7528:11:102;652:3172:104;;;;;;;8185:26:102;652:3172:104;8250:27:102;:45;:27;;;;;:::i;:45::-;3463:5:63;3066;;;3463;;;652:3172:104;3060:42:63;;8375:17:102;;8371:802;;7568:1615;;;;;;;;8371:802;9096:26;8436:50;;8537:53;8436:50;8637:54;8436:50;8637:29;8436:50;9125:33;8436:50;;;;:::i;:::-;8537:53;;;;;;:::i;:::-;8637:29;;;;:::i;:::-;:54;:::i;:::-;8714:33;;;;8710:194;;8371:802;8922:65;837:15:68;8958:28:102;9038:40;837:15:68;;;819:34;837:15;819:34;:::i;9038:40:102:-;9005:30;9017:17;;;:::i;9005:30::-;652:3172:104;9125:33:102;:::i;:::-;9096:26;652:3172:104;;7528:11:102;652:3172:104;;;;;;;9096:26:102;652:3172:104;8371:802:102;;;;;;;8710:194;8797:33;8771:59;8922:65;8797:33;;;9038:40;8797:33;;;:::i;:::-;8771:59;;:::i;:::-;8852:33;;-1:-1:-1;8852:33:102;;-1:-1:-1;8710:194:102;;7300:146;652:3172:104;;-1:-1:-1;;;7414:21:102;;652:3172:104;;7414:21:102;7304:87;7363:28;;;;7304:87;;7305:53;7341:17;;;;:::i;:::-;7326:32;;7305:53;;7113:71;652:3172:104;;-1:-1:-1;;;7161:12:102;;652:3172:104;;7161:12:102;652:3172:104;;;;;;-1:-1:-1;;652:3172:104;;;;4384:17:103;652:3172:104;;;;;;;4405:14:103;;;:::i;:::-;4384:17;652:3172:104;;;;;;;4404:36:103;652:3172:104;;;4404:36:103;;:::i;652:3172:104:-;;;;;;-1:-1:-1;;652:3172:104;;;;;;;:::i;:::-;-1:-1:-1;;;;;652:3172:104;;;;;4867:13:23;652:3172:104;;;;;;:::o;:::-;;;;;;-1:-1:-1;;652:3172:104;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;652:3172:104;2307:68:103;652:3172:104;;;;;-1:-1:-1;652:3172:104;;;;;;;;;;;;;;;;;-1:-1:-1;;652:3172:104;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;-1:-1:-1;;652:3172:104;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;652:3172:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6491:14:102;652:3172:104;;6491:14:102;;:::i;652:3172:104:-;;;;;4994:47:103;652:3172:104;;;:::i;:::-;4994:47:103;;:::i;652:3172:104:-;;;;;;;;;;;;;;;;;;;;:::i;:::-;3361:103:26;;:::i;:::-;10932:22:102;652:3172:104;;;;;10928:89:102;;652:3172:104;;-1:-1:-1;;;11032:49:102;;-1:-1:-1;;;;;652:3172:104;;;11032:49:102;;;652:3172:104;;;;;;;;;;;;;;;11032:49:102;11042:17;;;652:3172:104;11032:49:102;;;;;;;-1:-1:-1;11032:49:102;;;652:3172:104;11031:50:102;;11027:102;;652:3172:104;;-1:-1:-1;;;11143:34:102;;652:3172:104;;;;;11143:34:102;652:3172:104;11143:34:102;652:3172:104;;11143:34:102;;;;;;;-1:-1:-1;11143:34:102;;;652:3172:104;11189:4:102;;;652:3172:104;;11143:51:102;11139:107;;-1:-1:-1;10932:22:102;652:3172:104;;-1:-1:-1;;;;;652:3172:104;;;;-1:-1:-1;;;;;;652:3172:104;;;;;;;-1:-1:-1;;;652:3172:104;;;11334:24:102;-1:-1:-1;;11334:24:102;3426:1:26;1949;-1:-1:-1;;;;;;;;;;;652:3172:104;3860:283:26;11139:107:102;652:3172:104;;-1:-1:-1;;;11217:18:102;;;11143:34;;;;;;;-1:-1:-1;11143:34:102;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;11027:102;-1:-1:-1;652:3172:104;;-1:-1:-1;;;11104:14:102;;;11032:49;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;10928:89;652:3172:104;;-1:-1:-1;;;10977:29:102;;;652:3172:104;;;;;;-1:-1:-1;;652:3172:104;;;;;;1298:40:103;-1:-1:-1;;;;;652:3172:104;;;;;;;;;;;;-1:-1:-1;;652:3172:104;;;;1703:14:102;;:::i;:::-;5173:21:103;;:::i;:::-;652:3172:104;;;;1750:11:102;652:3172:104;;;;;;;;;;;;;1791:1:102;652:3172:104;;;;;;;;;1750:11:102;652:3172:104;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;652:3172:104;;;;-1:-1:-1;;;;;;;;;;;652:3172:104;;;-1:-1:-1;;;;;652:3172:104;;;;;;;;;;;;;;-1:-1:-1;;652:3172:104;;;;;;3901:31:19;652:3172:104;;;;;:::i;:::-;;;-1:-1:-1;652:3172:104;-1:-1:-1;;;;;;;;;;;652:3172:104;;;-1:-1:-1;652:3172:104;;;;;;;;;;;;;;;;;3901:31:19;652:3172:104;;;;;;;;;;;;;;;;-1:-1:-1;;652:3172:104;;;;;;;-1:-1:-1;;;;;;;;;;;652:3172:104;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;652:3172:104;;;;;;;-1:-1:-1;;;;652:3172:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;652:3172:104;;;;-1:-1:-1;652:3172:104;;;477:31:82;652:3172:104;;;;;;:::i;:::-;;;;;;;;;;;;;;;416:25:82;;;;652:3172:104;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;652:3172:104;;;;;;;;;;;;;477:31:82;;652:3172:104;;;;;;;;;;:::i;:::-;477:31:82;652:3172:104;;477:31:82;;;;;;:::i;:::-;518:79;;;652:3172:104;518:79:82;;652:3172:104;;;;;;;;;;;-1:-1:-1;;652:3172:104;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;652:3172:104;;;;;;;;;;;;;;;;;-1:-1:-1;;652:3172:104;;;;;;;1109:35:103;652:3172:104;;;;;;;;;-1:-1:-1;;652:3172:104;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;3361:103:26;;:::i;:::-;3202:4:19;;:::i;:::-;-1:-1:-1;;;;;652:3172:104;;;9907:21:102;;9903:75;;-1:-1:-1;652:3172:104;;;9992:22:102;652:3172:104;;;;;;;;;;;;;9992:41:102;9988:91;;-1:-1:-1;;;;;652:3172:104;;;;;3586:22:102;652:3172:104;;;;;10145:44:102;;;;10089:40;;:31;652:3172:104;;;;;;;;;;;;;;10089:40:102;652:3172:104;;;;;;;;;;;;;;;10145:44:102;;;;3426:1:26;1949;-1:-1:-1;;;;;;;;;;;652:3172:104;3860:283:26;9903:75:102;652:3172:104;;-1:-1:-1;;;9951:16:102;;652:3172:104;;9951:16:102;652:3172:104;;;;;;-1:-1:-1;;652:3172:104;;;;;2666:94:103;652:3172:104;;;;;:::i;:::-;;;-1:-1:-1;652:3172:104;2666:94:103;652:3172:104;;;-1:-1:-1;652:3172:104;;;;;;;;;;;;;;;;;2666:94:103;652:3172:104;;;;;;;;;;;;;-1:-1:-1;;652:3172:104;;;;;;2816:92:103;652:3172:104;;;;;:::i;:::-;;;-1:-1:-1;652:3172:104;2816:92:103;652:3172:104;;;-1:-1:-1;652:3172:104;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;652:3172:104;;;;4616:5:23;652:3172:104;;;;;:::i;:::-;;;966:10:24;;4616:5:23;:::i;:::-;652:3172:104;;;4639:4:23;652:3172:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3361:103:26;;:::i;:::-;11459:20:102;652:3172:104;;;;;11455:85:102;;-1:-1:-1;;;;;652:3172:104;;;;;;11550:312:102;;652:3172:104;11459:20:102;652:3172:104;;-1:-1:-1;;;;652:3172:104;-1:-1:-1;;;652:3172:104;;;11872:27:102;11915:20;-1:-1:-1;11915:20:102;;3426:1:26;1949;-1:-1:-1;;;;;;;;;;;652:3172:104;3860:283:26;11550:312:102;652:3172:104;;-1:-1:-1;;;11597:45:102;;-1:-1:-1;;;;;652:3172:104;;11597:45:102;;;652:3172:104;;;11597:45:102;;652:3172:104;;;;;;11597:45:102;11607:15;;;652:3172:104;11597:45:102;;;;;;;-1:-1:-1;11597:45:102;;;11550:312;11596:46;;11592:104;;652:3172:104;;-1:-1:-1;;;11714:30:102;;;652:3172:104;11714:30:102;652:3172:104;11714:30:102;;;;;;;;-1:-1:-1;11714:30:102;;;11550:312;11756:4;;;652:3172:104;;11714:47:102;11710:109;;-1:-1:-1;11459:20:102;652:3172:104;;-1:-1:-1;;;;;;652:3172:104;-1:-1:-1;;;;;652:3172:104;;;;;;;;;11550:312:102;;;;;;11710:109;652:3172:104;;-1:-1:-1;;;11788:16:102;;;11714:30;;;;;;;-1:-1:-1;11714:30:102;;;;;;:::i;:::-;;;;;;11592:104;652:3172:104;;-1:-1:-1;;;11669:12:102;;652:3172:104;;11669:12:102;11597:45;;;;;;;;;;;;;;:::i;:::-;;;;11455:85;652:3172:104;;-1:-1:-1;;;11502:27:102;;;652:3172:104;;;;;;-1:-1:-1;;652:3172:104;;;;;;;;;:::i;:::-;;;3361:103:26;;;:::i;:::-;-1:-1:-1;;;;;652:3172:104;;;;;6112:23:102;;6108:79;;6273:6;652:3172:104;6206:13:102;;;;:::i;:::-;652:3172:104;;;-1:-1:-1;652:3172:104;;;;6273:6:102;:::i;:::-;652:3172:104;;;;;;;;;;;;6302:10:102;;6296:43;;652:3172:104;6296:43:102;1949:1:26;-1:-1:-1;;;;;;;;;;;652:3172:104;;;;;;;;;;;;;;6108:79:102;652:3172:104;;-1:-1:-1;;;6158:18:102;;652:3172:104;;6158:18:102;652:3172:104;;;;;;-1:-1:-1;;652:3172:104;;;;;;-1:-1:-1;652:3172:104;2546:64:103;652:3172:104;;;;-1:-1:-1;652:3172:104;;;;;;;;;;;;;;-1:-1:-1;;652:3172:104;;;;2058:22:103;652:3172:104;;;-1:-1:-1;;;;;652:3172:104;;;;;;;;;;;;;;-1:-1:-1;;652:3172:104;;;;;5173:21:103;;:::i;652:3172:104:-;;;;;;-1:-1:-1;;652:3172:104;;;;;;3361:103:26;;:::i;:::-;966:10:24;-1:-1:-1;652:3172:104;;;;;;;;;;1109:35:103;;652:3172:104;;4468:23:19;4464:108;;652:3172:104;;;;10692:21:102;10688:71;;652:3172:104;;10805:22:102;652:3172:104;;;;;;;;10805:22:102;1949:1:26;-1:-1:-1;;;;;;;;;;;652:3172:104;;4464:108:19;652:3172:104;;;;4514:47:19;;;;;;966:10:24;652:3172:104;4514:47:19;;652:3172:104;;;;;4514:47:19;652:3172:104;;;;;;-1:-1:-1;;652:3172:104;;;;;;;;;:::i;:::-;3123:14:102;;:::i;:::-;3154:24;;;:::i;:::-;3181:29;;;;;:::i;:::-;652:3172:104;;;;;;;3235:1:102;652:3172:104;;;;;;;3213:33:102;;;:::i;:::-;652:3172:104;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;652:3172:104;;;;1888:24:103;652:3172:104;;;-1:-1:-1;;;;;652:3172:104;;;;;;;;;;;;;;-1:-1:-1;;652:3172:104;;;;5767:26:19;652:3172:104;;;;;;;:::i;:::-;;-1:-1:-1;652:3172:104;-1:-1:-1;;;;;;;;;;;652:3172:104;;3202:4:19;4919:24;652:3172:104;-1:-1:-1;652:3172:104;4919:24:19;652:3172:104;3202:4:19;:::i;:::-;5767:26;:::i;652:3172:104:-;;;;;;-1:-1:-1;;652:3172:104;;;;;;;;;;;;;-1:-1:-1;;;;;652:3172:104;;;;;;;;;;;;-1:-1:-1;;652:3172:104;;;;;;;675:39:103;652:3172:104;;;;;;;;;-1:-1:-1;;652:3172:104;;;;;4867:29:23;652:3172:104;;;;;:::i;:::-;4867:20:23;652:3172:104;;;;;;:::i;:::-;4867:20:23;:::i;652:3172:104:-;;;;;;-1:-1:-1;;652:3172:104;;;;;;;;;;;;;;;;;;;-1:-1:-1;;652:3172:104;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;-1:-1:-1;;;;;652:3172:104;;;;;;;;;;;;;;;:::i;:::-;1972:48:102;;652:3172:104;;;;;;;:::i;:::-;;;;;;;;;;;;;;2034:16:102;;2030:111;;652:3172:104;;2233:39:102;1057:70:94;2233:39:102;;4622:48:103;2196:77:102;2233:39;;;;2196:77;;:::i;:::-;2312:36;;4994:47:103;652:3172:104;2312:36:102;;;4994:47:103;;:::i;:::-;2389:37:102;;;4622:48:103;;:::i;:::-;1057:70:94;;:::i;:::-;652:3172:104;;;;;;;;;;;;;2030:111:102;2089:41;;;;-1:-1:-1;652:3172:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;4622:48:103;652:3172:104;2196:77:102;652:3172:104;1057:70:94;652:3172:104;;;:::i;:::-;;;;;2030:111:102;;;;;652:3172:104;;;;;;-1:-1:-1;;652:3172:104;;;;2357:1:20;652:3172:104;;;;;:::i;:::-;2303:62:20;;:::i;:::-;2357:1;:::i;652:3172:104:-;;;;;;-1:-1:-1;;652:3172:104;;;;;;;;;:::i;:::-;;;3361:103:26;;:::i;:::-;-1:-1:-1;;;;;652:3172:104;;4890:21:102;4886:75;;4975:11;;4971:73;;845:69:94;4803:22:103;;:::i;:::-;5173:21;;:::i;:::-;845:69:94;;;:::i;:::-;5180:10:102;652:3172:104;;;;5606:15:103;652:3172:104;;;;;5180:10:102;;;5606:33:103;;;:::i;:::-;5150:41:102;;5146:96;;5267:40;;;;;:::i;5146:96::-;652:3172:104;;-1:-1:-1;;;5214:17:102;;652:3172:104;;5214:17:102;4971:73;652:3172:104;;-1:-1:-1;;;5009:24:102;;652:3172:104;;5009:24:102;652:3172:104;;;;;;-1:-1:-1;;652:3172:104;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;652:3172:104;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;7556:1:102;652:3172:104;;;;;;;:::o;:::-;;;;;;;;;;:::o;5256:193:103:-;-1:-1:-1;;;;;652:3172:104;-1:-1:-1;652:3172:104;;;5383:15:103;652:3172:104;;;;;5383:59:103;;5256:193;;5383:59;:::i;652:3172:104:-;;;;;;;;;;1167:340:78;;652:3172:104;1167:340:78;6893:76:22;;:::i;:::-;;;:::i;:::-;1949:1:26;-1:-1:-1;;;;;;;;;;;652:3172:104;-1:-1:-1;;;;;652:3172:104;;1376:73:78;;1167:340;652:3172:104;;;;:::i;:::-;;;3642:39;;;;;;;652:3172;;;;;;;3642:39;;;652:3172;-1:-1:-1;;;;;652:3172:104;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;3734:29;652:3172;;2282:147:23;652:3172:104;3734:29;652:3172;;;;:::i;:::-;;;;;;;;3745:17;652:3172;3734:29;652:3172;;3734:29;;;;;;:::i;:::-;;:::i;:::-;3788:11;3801:13;;2282:147:23;;:::i;1376:73:78:-;6961:1:22;6893:76;;;:::i;:::-;;;:::i;6961:1::-;1376:73:78;;;2492:191:102;-1:-1:-1;;;;;652:3172:104;-1:-1:-1;652:3172:104;;;5606:15:103;652:3172:104;;;;;5606:33:103;;;:::i;:::-;5173:21;;:::i;:::-;4803:22;;:::i;:::-;652:3172:104;1884:1:94;652:3172:104;;;;;;;1884:1:94;652:3172:104;;;;;;;9478:25:63;;;:::i;652:3172:104:-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;3612:132:103:-;819:34:68;837:15;819:34;:::i;:::-;3683:54:103;3703:17;652:3172:104;3684:36:103;652:3172:104;;;;;;;3684:36:103;;:::i;:::-;652:3172:104;;;3683:54:103;;:::i;:::-;652:3172:104;3612:132:103;:::o;3313:244::-;3418:17;652:3172:104;;;;;;;;;;;;;;3406:29:103;3402:85;;3503:47;3504:29;;;;:::i;3402:85::-;652:3172:104;;-1:-1:-1;;;3458:18:103;;;;;3361:103:26;;;;:::i;:::-;652:3172:104;;-1:-1:-1;;;;;652:3172:104;;;6521:23:102;;6517:79;;6650:11;;6646:70;;652:3172:104;6742:10:102;;;;;;-1:-1:-1;652:3172:104;;6887:49:102;;652:3172:104;;;;6864:6:102;;652:3172:104;;6821:18:102;;652:3172:104;;-1:-1:-1;;;;;652:3172:104;;;6821:18:102;6864:6;:::i;:::-;6887:49;652:3172:104;;6898:10:102;;;;6887:49;;;:::i;:::-;;;;3426:1:26;;1949;-1:-1:-1;;;;;;;;;;;652:3172:104;3860:283:26;6754:3:102;6790:9;6773:27;652:3172:104;6790:9:102;6783:17;6790:9;;;;;:::i;:::-;652:3172:104;6783:17:102;:::i;6773:27::-;6754:3;652:3172:104;6731:9:102;;6646:70;652:3172:104;;-1:-1:-1;;;6684:21:102;;;;;652:3172:104;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;652:3172:104;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;3405:215:20:-;-1:-1:-1;;;;;652:3172:104;;;;3489:22:20;;3485:91;;-1:-1:-1;;;;;;;;;;;652:3172:104;;-1:-1:-1;;;;;;652:3172:104;;;;;;;;3975:40:20;-1:-1:-1;;3975:40:20;3405:215::o;3485:91::-;652:3172:104;;-1:-1:-1;;;3534:31:20;;3509:1;3534:31;;;652:3172:104;;;3534:31:20;2731:227:102;;2871:34;2731:227;652:3172:104;-1:-1:-1;652:3172:104;2871:18:102;652:3172:104;;;-1:-1:-1;652:3172:104;;;;;;;;;;;;;;;;;2871:34:102;652:3172:104;;-1:-1:-1;652:3172:104;2907:11:102;652:3172:104;;;-1:-1:-1;652:3172:104;;2927:16:102;652:3172:104;;;-1:-1:-1;652:3172:104;;;1884:1:94;652:3172:104;;;;;;;1884:1:94;652:3172:104;;;;;;;9478:25:63;;;:::i;3470:384:26:-;-1:-1:-1;;;;;;;;;;;1991:1:26;652:3172:104;;3670:20:26;3666:88;;1991:1;652:3172:104;;3470:384:26:o;3666:88::-;652:3172:104;;-1:-1:-1;;;3713:30:26;;;;;1867:311:104;12135:10:102;-1:-1:-1;652:3172:104;;;5606:15:103;652:3172:104;;;;;1867:311;;;-1:-1:-1;;1867:311:104;;12119:93:102;;819:34:68;837:15;819:34;:::i;:::-;12135:10:102;652:3172:104;;;;5606:15:103;652:3172:104;;;;;12170:41:102;;12135:10;;5606:33:103;;;:::i;12119:93:102:-;837:15:68;;12222:67:102;819:34:68;837:15;819:34;:::i;:::-;12259:29:102;4803:22:103;;;:::i;12222:67:102:-;837:15:68;;12299:68:102;819:34:68;837:15;819:34;:::i;:::-;12335:31:102;5173:21:103;;;:::i;12299:68:102:-;12394:14;;;12769:34;12394:14;12769:25;12394:18;:14;;:::i;:::-;:18;:::i;:::-;12726:33;12445:18;;652:3172:104;;7528:11:102;652:3172:104;;;;;;;12445:18:102;652:3172:104;12502:23:102;;652:3172:104;;12502:16:102;652:3172:104;;;;;;;12502:23:102;652:3172:104;12660:30:102;390:70:94;;;;;:::i;:::-;12660:30:102;;;;:::i;:::-;12639:18;;652:3172:104;;7528:11:102;652:3172:104;;;;;;;12639:18:102;652:3172:104;12726:33:102;:::i;:::-;12700:23;;652:3172:104;;12502:16:102;652:3172:104;;;;;;;12700:23:102;652:3172:104;;;12769:18:102;652:3172:104;;;;;;;12769:34:102;:50;652:3172:104;;;12769:50:102;:::i;:::-;652:3172:104;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;652:3172:104;;;;;12135:10:102;;12835:74;;652:3172:104;;12835:74:102;652:3172:104;;;;;;12135:10:102;;2125:46:104;;652:3172;;;;2125:46;;;;1867:311::o;6605:300:23:-;;-1:-1:-1;;;;;652:3172:104;;;;;6688:18:23;;6684:86;;652:3172:104;;6783:16:23;;;6779:86;;-1:-1:-1;;;;;652:3172:104;;;;;;5606:15:103;652:3172:104;;;;;5606:33:103;;;:::i;:::-;2607:19:104;;;;2603:115;;3459:25;2838:21;:65;3459:25;2838:21;;;3354:65;2838:21;652:3172;;;;;;;;5606:15:103;652:3172:104;;;;;;;2838:21;837:15:68;;819:34;837:15;819:34;:::i;:::-;652:3172:104;;2838:65;;:::i;:::-;-1:-1:-1;;;;;;;652:3172:104;;;;;;5606:15:103;652:3172:104;;;;;837:15:68;;5606:33:103;:24;819:34:68;837:15;819:34;:::i;:::-;-1:-1:-1;;;;;652:3172:104;;;;;;;5606:15:103;652:3172:104;;;;;;;5606:33:103;652:3172:104;3354:65;;:::i;:::-;-1:-1:-1;;652:3172:104;;;;;;;;;;;;;2603:115;652:3172;;-1:-1:-1;;;2653:50:104;;-1:-1:-1;;;;;652:3172:104;;;;2653:50;;;652:3172;;;;;;;;;;;;;;;;12018:60:23;6779:86;652:3172:104;;-1:-1:-1;;;6822:32:23;;6704:1;6822:32;;;652:3172:104;;;6822:32:23;6684:86;652:3172:104;;-1:-1:-1;;;6729:30:23;;6704:1;6729:30;;;652:3172:104;;;6729:30:23;14296:213:64;652:3172:104;14374:24:64;;;;14370:103;;652:3172:104;14296:213:64;:::o;14370:103::-;652:3172:104;;;;14421:41:64;;;;;;14452:2;14421:41;;;652:3172:104;;;;;14421:41:64;1809:204:78;652:3172:104;1809:204:78;652:3172:104;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::o;7558:604:93:-;;652:3172:104;;7686:17:93;7682:83;;652:3172:104;7789:27:93;652:3172:104;7789:27:93;652:3172:104;;7789:27:93;;;;;;:::i;:::-;7860:14;;;:::i;:::-;652:3172:104;;;;;;;;;;;;;;;;7888:22:93;;;7884:77;;7975:21;-1:-1:-1;7975:84:93;;;;7558:604;7971:139;;;;8127:28;;;;:::i;7971:139::-;7789:27;8082:17;;;652:3172:104;8075:24:93;:::o;7975:84::-;652:3172:104;;;8009:16:93;4622:13:103;652:3172:104;8009:16:93;:::i;:::-;652:3172:104;;;8001:24:93;:57;;;;;7975:84;;;;;;;8001:57;8029:29;8038:8;;;8029:18;8038:8;8029:23;8038:8;;:::i;:::-;8029:18;:::i;:::-;652:3172:104;;;;;8029:23:93;652:3172:104;;;;8029:29:93;;8001:57;;;;7884:77;7933:17;;;7789:27;7933:17;;;652:3172:104;7926:24:93;:::o;7682:83::-;7726:28;;;;:::i;7558:604::-;;652:3172:104;;7686:17:93;7682:83;;652:3172:104;7789:27:93;652:3172:104;7789:27:93;652:3172:104;;7789:27:93;;;;;;:::i;:::-;7860:14;;;:::i;:::-;652:3172:104;;;;;;;;;;;;;;;;7888:22:93;;;7884:77;;7975:21;-1:-1:-1;7975:84:93;;;;7558:604;7971:139;;;;8127:28;;;;:::i;7975:84::-;652:3172:104;;;8009:16:93;4994:12:103;652:3172:104;8009:16:93;:::i;:::-;652:3172:104;;;8001:24:93;:57;;;;;7975:84;;;;;;;8001:57;8029:29;8038:8;;;8029:18;8038:8;8029:23;8038:8;;:::i;:::-;8029:18;:::i;:29::-;;8001:57;;;;7682:83;7726:28;;;;:::i;7558:604::-;;652:3172:104;;7686:17:93;7682:83;;652:3172:104;7789:27:93;652:3172:104;7789:27:93;652:3172:104;;7789:27:93;;;;;;:::i;:::-;7860:14;;;;;:::i;:::-;652:3172:104;;;;;;;;;;;;;;;;7888:22:93;;;7884:77;;7975:21;-1:-1:-1;7975:84:93;;;;7558:604;7971:139;;;;8127:28;;;;:::i;7971:139::-;8082:17;;7789:27;8082:17;652:3172:104;8075:24:93;:::o;7975:84::-;652:3172:104;;;8009:16:93;652:3172:104;;8009:16:93;:::i;:::-;652:3172:104;;;8001:24:93;:57;;;;;7975:84;;;;;;;8001:57;8029:29;8038:8;;;8029:18;8038:8;8029:23;8038:8;;:::i;:::-;8029:18;;:::i;:29::-;;8001:57;;;;7884:77;7933:17;;;;;7789:27;7933:17;652:3172:104;7926:24:93;:::o;7682:83::-;7726:28;;;;:::i;4148:103:19:-;966:10:24;-1:-1:-1;652:3172:104;;;;;;;;;675:39:103;;652:3172:104;;3901:31:19;652:3172:104;;4468:23:19;4464:108;;4148:103;:::o;:::-;966:10:24;-1:-1:-1;652:3172:104;;;;;;;;;966:38:103;;652:3172:104;;3901:31:19;652:3172:104;4148:103:19;966:10:24;-1:-1:-1;652:3172:104;;;;;;;;;821:37:103;;652:3172:104;;3901:31:19;652:3172:104;4148:103:19;-1:-1:-1;652:3172:104;;;-1:-1:-1;;;;;;;;;;;652:3172:104;;;;;;;;966:10:24;652:3172:104;;;;;;;;;3901:31:19;652:3172:104;7270:387:19;-1:-1:-1;;;;;652:3172:104;;13555:17:102;652:3172:104;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2887:71:19;652:3172:104;;;;13555:17:102;652:3172:104;;;;;;;;;;;-1:-1:-1;;;;;652:3172:104;;;;;;;;;;-1:-1:-1;;652:3172:104;7509:4:19;652:3172:104;;;966:10:24;;-1:-1:-1;;;;;652:3172:104;-1:-1:-1;7532:40:19;-1:-1:-1;;7532:40:19;7509:4;7586:11;:::o;7432:219::-;7628:12;;13555:17:102;7628:12:19;:::o;7270:387::-;-1:-1:-1;;;;;652:3172:104;;-1:-1:-1;652:3172:104;;;;;;;;;675:39:103;;-1:-1:-1;;;;;;;;;;;2887:71:19;652:3172:104;;3901:31:19;652:3172:104;;;;-1:-1:-1;652:3172:104;;;;;;;;;;;-1:-1:-1;;;;;652:3172:104;;;;;;;;;;-1:-1:-1;;652:3172:104;7509:4:19;652:3172:104;;;966:10:24;;-1:-1:-1;;;;;652:3172:104;;7532:40:19;-1:-1:-1;;7532:40:19;7509:4;7586:11;:::o;7432:219::-;7628:12;;;-1:-1:-1;7628:12:19;:::o;7270:387::-;-1:-1:-1;;;;;652:3172:104;;-1:-1:-1;652:3172:104;;;;;;;;;821:37:103;;-1:-1:-1;;;;;;;;;;;2887:71:19;652:3172:104;;3901:31:19;652:3172:104;7270:387:19;-1:-1:-1;;;;;652:3172:104;;-1:-1:-1;652:3172:104;;;;;;;;;966:38:103;;-1:-1:-1;;;;;;;;;;;2887:71:19;652:3172:104;;3901:31:19;652:3172:104;7270:387:19;-1:-1:-1;;;;;652:3172:104;;-1:-1:-1;652:3172:104;;;;;;;;;1109:35:103;;-1:-1:-1;;;;;;;;;;;2887:71:19;652:3172:104;;3901:31:19;652:3172:104;7270:387:19;-1:-1:-1;652:3172:104;;;-1:-1:-1;;;;;;;;;;;652:3172:104;;;;;;;;-1:-1:-1;;;;;652:3172:104;;;;;;;;;;;;3901:31:19;652:3172:104;7892:388:19;-1:-1:-1;652:3172:104;;;-1:-1:-1;;;;;;;;;;;652:3172:104;;;;;;;;-1:-1:-1;;;;;652:3172:104;;;;;;;;;;;;;;;;-1:-1:-1;652:3172:104;;;;;;;;;;;-1:-1:-1;;;;;652:3172:104;;;;;;;;;;-1:-1:-1;;652:3172:104;;;966:10:24;;-1:-1:-1;;;;;652:3172:104;;8155:40:19;-1:-1:-1;;8155:40:19;652:3172:104;8209:11:19;:::o;652:3172:104:-;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;652:3172:104;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;652:3172:104;;;;;;;;;;;;;;;;-1:-1:-1;;;;;652:3172:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;652:3172:104;;;;;;;;;;-1:-1:-1;;;;;652:3172:104;;;;;;;;;;-1:-1:-1;;;;;652:3172:104;;;;;;;;;;-1:-1:-1;;;;;652:3172:104;;;;;;;;;;-1:-1:-1;;;;;652:3172:104;;;;;2658:162:20;-1:-1:-1;;;;;;;;;;;652:3172:104;-1:-1:-1;;;;;652:3172:104;966:10:24;2717:23:20;2713:101;;2658:162::o;2713:101::-;652:3172:104;;-1:-1:-1;;;2763:40:20;;966:10:24;2763:40:20;;;652:3172:104;;;2763:40:20;652:3172:104;;;;;;;:::o;4996:4226:63:-;;652:3172:104;;;;-1:-1:-1;;652:3172:104;4996:4226:63;5584:131;;;;;;;;;;;;5796:10;;5792:368;;6270:20;;;;6266:143;;6695:300;;;;652:3172:104;-1:-1:-1;652:3172:104;7214:31:63;;7259:375;;;8094:1;652:3172:104;;8075:1:63;652:3172:104;8074:21:63;652:3172:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7259:375:63;;;;-1:-1:-1;7259:375:63;;;6695:300;;;;;;652:3172:104;6695:300:63;;7259:375;7700:21;652:3172:104;4996:4226:63;:::o;6266:143::-;6330:16;;3066:5;652:3172:104;940:4:54;3060:42:63;6322:71;:::i;5792:368::-;6126:19;;;;;;;:::i;652:3172:104:-;7178:12:93;652:3172:104;;;;;;7178:12:93;-1:-1:-1;652:3172:104;-1:-1:-1;;;;;;;;;;;652:3172:104;;-1:-1:-1;652:3172:104;:::o;:::-;7178:12:93;652:3172:104;;;;;;7178:12:93;-1:-1:-1;652:3172:104;-1:-1:-1;;;;;;;;;;;652:3172:104;;-1:-1:-1;652:3172:104;:::o;:::-;;;;;;;;-1:-1:-1;652:3172:104;;-1:-1:-1;652:3172:104;;;-1:-1:-1;652:3172:104;:::o;:::-;6360:12:93;652:3172:104;-1:-1:-1;;;652:3172:104;;;;;;;;;6360:12:93;652:3172:104;;;;;;6360:12:93;-1:-1:-1;652:3172:104;-1:-1:-1;;;;;;;;;;;652:3172:104;;:::o;:::-;6360:12:93;652:3172:104;-1:-1:-1;;;652:3172:104;;;;;;;;;6360:12:93;652:3172:104;;;;;;6360:12:93;-1:-1:-1;652:3172:104;-1:-1:-1;;;;;;;;;;;652:3172:104;;:::o;:::-;;;;;-1:-1:-1;;;652:3172:104;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;11930:17:23;;;652:3172:104;;;;;;;;6246:584:93;;;;6360:12;652:3172:104;;;6360:24:93;;6356:75;;6246:584;6474:30;;;:::i;:::-;652:3172:104;;;;;;6578:12:93;;;:::i;:::-;6604:24;;;;6246:584;-1:-1:-1;6600:188:93;;;-1:-1:-1;;;652:3172:104;;;;;;;;;-1:-1:-1;652:3172:104;;;-1:-1:-1;652:3172:104;;;;;;6798:25:93;652:3172:104;6246:584:93:o;6600:188::-;8310:38:66;;-1:-1:-1;;;;;652:3172:104;;-1:-1:-1;8310:38:66;:::i;:::-;6753:24:93;;;;;:::i;:::-;6798:25;6246:584;:::o;6604:24::-;652:3172:104;;;;;;6614:14:93;;-1:-1:-1;6604:24:93;;;6356:75;-1:-1:-1;;;652:3172:104;;;;;;;;;;;;;;;;-1:-1:-1;652:3172:104;;;;-1:-1:-1;;;;;;;;;;;652:3172:104;;6356:75:93;;;6246:584;;;;6360:12;652:3172:104;;;6360:24:93;;6356:75;;6246:584;6474:30;;;:::i;:::-;652:3172:104;;;;;;6578:12:93;;;:::i;:::-;6604:24;;;;6246:584;-1:-1:-1;6600:188:93;;;-1:-1:-1;;;652:3172:104;;;;;;;;;-1:-1:-1;652:3172:104;;;-1:-1:-1;652:3172:104;;;;;;6798:25:93;652:3172:104;6246:584:93:o;6600:188::-;8310:38:66;;-1:-1:-1;;;;;652:3172:104;;-1:-1:-1;8310:38:66;:::i;:::-;6753:24:93;;;;;:::i;6604:::-;652:3172:104;;;;;;6614:14:93;;-1:-1:-1;6604:24:93;;;6356:75;-1:-1:-1;;;652:3172:104;;;;;;;;;;;;;;;;-1:-1:-1;652:3172:104;;;;-1:-1:-1;;;;;;;;;;;652:3172:104;;6356:75:93;;;6246:584;;;;;6360:12;;;652:3172:104;;;6360:24:93;;6356:75;;6246:584;6474:30;;;;;:::i;:::-;652:3172:104;;;;;;6578:12:93;;;;:::i;:::-;6604:24;;;;6246:584;-1:-1:-1;6600:188:93;;;-1:-1:-1;;;;;652:3172:104;;;;;;;6644:21:93;;;:29;:21;;:::i;6600:188::-;6753:24;;652:3172:104;;8310:38:66;;-1:-1:-1;;;;;652:3172:104;;;;;8310:38:66;:::i;:::-;6753:24:93;;;:::i;6604:::-;652:3172:104;;;;;;6614:14:93;;-1:-1:-1;6604:24:93;;;6356:75;-1:-1:-1;;;652:3172:104;;;;;;6360:12:93;652:3172:104;;;;;;;:::i;:::-;;;11930:17:23;;;652:3172:104;;;;;;;;6356:75:93;;;1271:160:50;652:3172:104;;-1:-1:-1;;;1380:43:50;;;;-1:-1:-1;;;;;652:3172:104;;;1380:43:50;;;652:3172:104;;;;;;;;;1380:43:50;;;652:3172:104;;;;-1:-1:-1;;;;;652:3172:104;;;;;;;;1380:43:50;652:3172:104;;;1380:43:50;:::i;12922:460:102:-;;13024:14;;:::i;:::-;13015:23;;;13011:75;;-1:-1:-1;652:3172:104;;;13100:20:102;652:3172:104;;;;;;;;13128:10:102;652:3172:104;;;;;;;;;;13096:93:102;;13208:32;13128:10;13208:32;;:::i;:::-;13255:11;;;13251:68;;-1:-1:-1;652:3172:104;;;13100:20:102;652:3172:104;;;;;;;;13128:10:102;652:3172:104;;;;;;;;;-1:-1:-1;;652:3172:104;13371:4:102;652:3172:104;;;12922:460:102:o;13251:68::-;652:3172:104;;-1:-1:-1;;;13289:19:102;;;;;13096:93;652:3172:104;;-1:-1:-1;;;13162:16:102;;;;;13011:75;652:3172:104;;-1:-1:-1;;;13061:14:102;;;;;10580:184:93;4803:13:103;652:3172:104;10446:8:66;;;:63;-1:-1:-1;10446:63:66;-1:-1:-1;;;;;652:3172:104;;10726:7:93;652:3172:104;;10736:12:93;652:3172:104;;;;;;10736:12:93;-1:-1:-1;652:3172:104;-1:-1:-1;;;;;;;;;;;652:3172:104;;10580:184:93;:::o;10726:31::-;;-1:-1:-1;10580:184:93;:::o;10446:63:66:-;11930:17:23;;;652:3172:104;;;;;4803:13:103;-1:-1:-1;14439:109:66;;;652:3172:104;;;10446:63:66;;10580:184:93;5173:12:103;652:3172:104;10446:8:66;;;:63;-1:-1:-1;10446:63:66;-1:-1:-1;;;;;652:3172:104;;10726:7:93;652:3172:104;;10736:12:93;652:3172:104;;;;;;10736:12:93;-1:-1:-1;652:3172:104;-1:-1:-1;;;;;;;;;;;652:3172:104;;10580:184:93;:::o;10446:63:66:-;11930:17:23;;;652:3172:104;;;;;5173:12:103;-1:-1:-1;14439:109:66;;;652:3172:104;;;10446:63:66;;10580:184:93;652:3172:104;;10446:8:66;;;:63;-1:-1:-1;10446:63:66;-1:-1:-1;;;;;652:3172:104;;10726:7:93;652:3172:104;;10736:12:93;:17;:12;;:17;:::i;:::-;652:3172:104;;;;;;10580:184:93;:::o;10446:63:66:-;11930:17:23;;652:3172:104;;;;;;;;14439:109:66;-1:-1:-1;14439:109:66;;-1:-1:-1;14439:109:66;;;652:3172:104;;;10446:63:66;;10976:487:23;;-1:-1:-1;;;;;652:3172:104;;;11141:19:23;11137:89;;652:3172:104;;11239:21:23;11235:90;;11334:20;:29;:20;;:::i;:29::-;652:3172:104;10976:487:23:o;1662:280:94:-;;;1884:1;652:3172:104;;;;;;;1884:1:94;652:3172:104;;;;;;;9478:25:63;;;:::i;6999:207:93:-;4622:13:103;652:3172:104;9737:15:66;-1:-1:-1;9762:18:66;9795:7;9801:1;9795:7;;9791:234;;6999:207:93;10049:53:66;;;;:::i;:::-;10120:8;;;:63;-1:-1:-1;10120:63:66;-1:-1:-1;;;;;652:3172:104;;7168:7:93;652:3172:104;;7178:17:93;652:3172:104;7178:17:93;;:::i;10120:63:66:-;10135:41;10168:7;10135:48;10168:7;;:::i;:::-;4622:13:103;14439:109:66;;-1:-1:-1;;;;;;;;;;;14439:109:66;14289:265;;10135:41;652:3172:104;;;;;10135:48:66;10120:63;;9791:234;9838:14;;;;;:::i;:::-;652:3172:104;;;;;;;10049:53:66;14439:109;4622:13:103;-1:-1:-1;14439:109:66;652:3172:104;14439:109:66;;-1:-1:-1;;;;;;;;;;;14439:109:66;652:3172:104;;;;;9870:48:66;9866:149;652:3172:104;;;9938:10:66;9866:149;9791:234;;9866:149;9993:7;;;;;;:::i;:::-;9866:149;9791:234;;6999:207:93;4994:12:103;652:3172:104;9737:15:66;-1:-1:-1;9762:18:66;9795:7;9801:1;9795:7;;9791:234;;6999:207:93;10049:53:66;;;;:::i;:::-;10120:8;;;:63;-1:-1:-1;10120:63:66;-1:-1:-1;;;;;652:3172:104;;7168:7:93;652:3172:104;;7178:17:93;652:3172:104;7178:17:93;;:::i;10120:63:66:-;10135:41;10168:7;10135:48;10168:7;;:::i;:::-;4994:12:103;14439:109:66;;-1:-1:-1;;;;;;;;;;;14439:109:66;14289:265;;10135:48;10120:63;;9791:234;9838:14;;;;;:::i;:::-;652:3172:104;;;;;;;10049:53:66;14439:109;4994:12:103;-1:-1:-1;14439:109:66;652:3172:104;14439:109:66;;-1:-1:-1;;;;;;;;;;;14439:109:66;652:3172:104;;;;;9870:48:66;9866:149;652:3172:104;;;9938:10:66;9866:149;9791:234;;9866:149;9993:7;;;;;;:::i;:::-;9866:149;9791:234;;6999:207:93;;652:3172:104;;9737:15:66;-1:-1:-1;9762:18:66;9795:7;9801:1;9795:7;;9791:234;;6999:207:93;10049:53:66;;;;;:::i;:::-;10120:8;;;:63;-1:-1:-1;10120:63:66;;-1:-1:-1;;;;;652:3172:104;;7168:7:93;652:3172:104;;;7178:12:93;;:17;:12;;:17;:::i;10120:63:66:-;10135:41;10168:7;10135:48;10168:7;;:::i;:::-;10135:41;14439:109;;;;;;14289:265;;10135:48;10120:63;;;9791:234;9838:14;;;;;:::i;:::-;652:3172:104;;;;;;;10049:53:66;14439:109;;-1:-1:-1;14439:109:66;652:3172:104;14439:109:66;;;-1:-1:-1;14439:109:66;;652:3172:104;;;;;9870:48:66;9866:149;652:3172:104;;;9938:10:66;9866:149;9791:234;;9866:149;9993:7;;;;;;:::i;:::-;9866:149;9791:234;;652:3172:104;;;;;;;:::i;:::-;-1:-1:-1;652:3172:104;;;;;;;:::o;11486:272:93:-;652:3172:104;;:::i;:::-;;;;:::i;:::-;;4622:13:103;652:3172:104;;;;;;4622:13:103;-1:-1:-1;652:3172:104;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;652:3172:104;;;;;;;;;;;;;;;;;11718:12:93;652:3172:104;;;;;;11718:12:93;-1:-1:-1;652:3172:104;-1:-1:-1;;;;;;;;;;;652:3172:104;;;;;;;;:::i;:::-;;;;11672:79:93;;652:3172:104;11486:272:93;:::o;:::-;652:3172:104;;:::i;:::-;;;;:::i;:::-;;4994:12:103;652:3172:104;;;;;;4994:12:103;-1:-1:-1;652:3172:104;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;652:3172:104;;;;;;;;;;;;;;;;;11718:12:93;652:3172:104;;;;;;11718:12:93;-1:-1:-1;652:3172:104;-1:-1:-1;;;;;;;;;;;652:3172:104;;;;;;;;:::i;11486:272:93:-;;652:3172:104;11718:12:93;11452:22:66;11718:31:93;11486:272;652:3172:104;;:::i;:::-;;;;:::i;:::-;;11452:22:66;;:::i;:::-;652:3172:104;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;11718:12:93;:31;:::i;:::-;652:3172:104;;;;;;;;;:::i;:::-;;;;;;;11672:79:93;;652:3172:104;11486:272:93;:::o;1670:188:50:-;652:3172:104;;-1:-1:-1;;;1797:53:50;;;;-1:-1:-1;;;;;652:3172:104;;;1797:53:50;;;652:3172:104;;;;;;;;;;;;;;;;;1797:53:50;;;652:3172:104;;;;;;;-1:-1:-1;;;;;652:3172:104;;;;;1797:53:50;652:3172:104;;;1797:53:50;:::i;7084:141:22:-;652:3172:104;-1:-1:-1;;;;;;;;;;;652:3172:104;;;;7150:18:22;7146:73;;7084:141::o;7146:73::-;652:3172:104;;-1:-1:-1;;;7191:17:22;;;;;652:3172:104;;;;;;;;;;;;:::i;13388:2406:102:-;13510:30;13388:2406;13510:30;652:3172:104;;;13510:30:102;;;;;;:::i;:::-;652:3172:104;;-1:-1:-1;;;;;652:3172:104;;;;13555:31:102;13551:88;;13653:20;;;;652:3172:104;;;;;;;;;;13653:25:102;13649:85;;13748:29;;;652:3172:104;;13748:29:102;;652:3172:104;13748:43:102;;-1:-1:-1;;;;;652:3172:104;;;13748:43:102;;13744:943;;13388:2406;652:3172:104;;;15647:32:102;652:3172:104;14817:36:102;652:3172:104;;;14697:30:102;652:3172:104;;;;;;;;;;;;13555:17:102;652:3172:104;;-1:-1:-1;;;;;;652:3172:104;;;;;;-1:-1:-1;;;;;652:3172:104;;;;;;;;14697:30:102;13510;14747:13;;652:3172:104;;;;-1:-1:-1;;;;;;652:3172:104;-1:-1:-1;;;;;652:3172:104;;;;;;;;;14771:36:102;819:34:68;837:15;819:34;:::i;:::-;14738:22:102;652:3172:104;;-1:-1:-1;;;;652:3172:104;;;;;;-1:-1:-1;;;652:3172:104;;;;;;;;;14738:22:102;652:3172:104;;-1:-1:-1;;;;;652:3172:104;;;;;;-1:-1:-1;;;;;;652:3172:104;;;;;;;;14817:36:102;14864:42;652:3172:104;14883:23:102;;;652:3172:104;;;;;;;;;13555:17:102;652:3172:104;;;;;;;13555:17:102;652:3172:104;;14864:42:102;14917:38;652:3172:104;14934:21:102;;;652:3172:104;;;;;;;13555:17:102;652:3172:104;;;;;;;;;;;;13555:17:102;652:3172:104;;14917:38:102;14965:34;14980:19;;;652:3172:104;14965:34:102;652:3172:104;;14965:34:102;652:3172:104;-1:-1:-1;;;;;652:3172:104;;;;;;;15010:135:102;;13388:2406;-1:-1:-1;15158:36:102;;;652:3172:104;-1:-1:-1;;;;;652:3172:104;;;;15154:157:102;;13388:2406;-1:-1:-1;15324:35:102;;;652:3172:104;-1:-1:-1;;;;;652:3172:104;;;;15320:153:102;;13388:2406;-1:-1:-1;15486:34:102;;;652:3172:104;-1:-1:-1;;;;;652:3172:104;;;;15482:152:102;;13388:2406;-1:-1:-1;15647:32:102;652:3172:104;-1:-1:-1;;;;;652:3172:104;;;;;;;15643:145:102;;13388:2406;:::o;15643:145::-;15709:68;;;:::i;:::-;;13388:2406::o;15482:152::-;15550:73;;;:::i;:::-;;15482:152;;;15320:153;15389:73;;;:::i;:::-;;15320:153;;;15154:157;15224:76;;;:::i;:::-;;15154:157;;;15010:135;15073:61;;;:::i;:::-;;15010:135;;;13744:943;13811:36;;;652:3172:104;13811:50:102;;-1:-1:-1;;;;;652:3172:104;;;13811:50:102;;13807:405;;13744:943;14230:34;;;652:3172:104;14230:48:102;;-1:-1:-1;;;;;652:3172:104;;;14230:48:102;13744:943;14226:451;14302:21;;;652:3172:104;;14302:21:102;;14351:19;;;652:3172:104;14351:24:102;:74;;;14298:365;14347:150;;14298:365;;652:3172:104;15647:32:102;14298:365;14817:36;652:3172:104;;14298:365:102;;14226:451;;;;;;;13744:943;;14347:150;652:3172:104;-1:-1:-1;;;14460:14:102;;;;;14351:74;-1:-1:-1;14379:32:102;;;652:3172:104;14379:46:102;;-1:-1:-1;;;;;652:3172:104;;;14379:46:102;;14351:74;;14298:365;14525:19;;;652:3172:104;14525:24:102;;;:74;;;14298:365;14521:142;;14298:365;;652:3172:104;15647:32:102;14298:365;14817:36;652:3172:104;;14298:365:102;;;14525:74;-1:-1:-1;14553:32:102;;;652:3172:104;14553:46:102;;-1:-1:-1;;;;;652:3172:104;;;14553:46:102;;;14525:74;;13807:405;13885:23;;;652:3172:104;;13885:23:102;;13936:35;;;652:3172:104;13936:49:102;;-1:-1:-1;;;;;652:3172:104;;;13936:49:102;13807:405;13932:125;652:3172:104;-1:-1:-1;;;14020:14:102;;;;;13881:317;14085:35;;;652:3172:104;14085:49:102;;-1:-1:-1;;;;;652:3172:104;;;14085:49:102;14081:117;13807:405;14081:117;652:3172:104;-1:-1:-1;;;14165:14:102;;;;;13649:85;652:3172:104;;-1:-1:-1;;;13701:22:102;;;;;13551:88;652:3172:104;;-1:-1:-1;;;13609:19:102;;;;;6893:76:22;;;;;:::i;:::-;;;:::i;:::-;652:3172:104;;-1:-1:-1;;;;;652:3172:104;;;;-1:-1:-1;;;;;;;;;;;652:3172:104;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;11930:17:23;;;652:3172:104;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;652:3172:104;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;652:3172:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;11930:17:23;;652:3172:104;;2600:7:23;652:3172:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1776:194:54;1829:135;;;;;;;;10695:389:66;5173:12:103;652:3172:104;10871:8:66;;;10895:20;10833:17;10895:20;10833:17;10895:20;10833:17;10895:20;:::o;10867:211::-;11930:17:23;;;652:3172:104;;;;;5173:12:103;10833:17:66;14439:109;;;652:3172:104;11014:1:66;;652:3172:104;;;;;;;11030:37:66:o;10695:389::-;4803:13:103;652:3172:104;10871:8:66;;;10895:20;10833:17;10895:20;10833:17;10895:20;10833:17;10895:20;:::o;10867:211::-;11930:17:23;;;652:3172:104;;;;;4803:13:103;10833:17:66;14439:109;;;652:3172:104;11014:1:66;;652:3172:104;;;;;;;11030:37:66:o;10695:389::-;652:3172:104;;10871:8:66;;;10895:20;;10833:17;10895:20;10833:17;10895:20;10833:17;10895:20;:::o;10867:211::-;11930:17:23;;652:3172:104;;;;;;;;10833:17:66;14439:109;;10833:17;14439:109;;;652:3172:104;11014:1:66;652:3172:104;;;;;;;11030:37:66;:::o;7738:720:50:-;;-1:-1:-1;7875:421:50;7738:720;7875:421;;;;;;;;;;;;-1:-1:-1;7875:421:50;;8310:15;;-1:-1:-1;;;;;;652:3172:104;;8328:26:50;:31;8310:68;8306:146;;7738:720;:::o;8306:146::-;652:3172:104;;-1:-1:-1;;;8401:40:50;;-1:-1:-1;;;;;652:3172:104;;;8401:40:50;;;652:3172:104;;;8401:40:50;8310:68;8377:1;8362:16;;8310:68;;1258:280:94;;;652:3172:104;;;;;;;;;;;;;;;;9478:25:63;;;;;:::i;:::-;9552;;;;;;:29;;652:3172:104;;;;;;;1258:280:94;:::o;652:3172:104:-;;;;;;;;:::o;:::-;-1:-1:-1;;;;;;;;;;;;652:3172:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;652:3172:104;;;;;;;;;-1:-1:-1;652:3172:104;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;;;;;;;;652:3172:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;652:3172:104;;;;;;;;;-1:-1:-1;652:3172:104;;;;;;;;-1:-1:-1;;;;;652:3172:104;;;;-1:-1:-1;;;;;;;;;;;652:3172:104;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;11930:17:23;;;652:3172:104;;;;;;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;;;;;;;;;;652:3172:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;11930:17:23;;652:3172:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5173:12:103;652:3172:104;;-1:-1:-1;;;652:3172:104;;;;;;;;;5173:12:103;652:3172:104;;;;;;5173:12:103;-1:-1:-1;652:3172:104;;;;;;;;;;-1:-1:-1;;652:3172:104;;;;;;;-1:-1:-1;;;;;;;;;;;652:3172:104;;;;:::o;:::-;4803:13:103;652:3172:104;;-1:-1:-1;;;652:3172:104;;;;;;;;;4803:13:103;652:3172:104;;;;;;4803:13:103;-1:-1:-1;652:3172:104;;;;;;;;;;-1:-1:-1;;652:3172:104;;;;;;;-1:-1:-1;;;;;;;;;;;652:3172:104;;;;:::o;:::-;;;-1:-1:-1;;;652:3172:104;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;652:3172:104;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;11657:922:66;5173:12:103;652:3172:104;11657:922:66;;;11864:7;;;;11936;11916:28;11936:7;;:::i;11916:28::-;652:3172:104;;;;;;;;;;;;12103:13:66;;;12099:89;;12251:14;;;;;12285:19;;;652:3172:104;;;;;;;;;;;;;;;;;12285:19:66;652:3172:104;;12423:25:66;;:::o;12247:163::-;652:3172:104;;12343:52:66;652:3172:104;12353:41:66;652:3172:104;;:::i;:::-;;;;;;;;12353:41:66;-1:-1:-1;;;;;652:3172:104;;12353:41:66;;;652:3172:104;12343:52:66;:::i;:::-;12247:163;;12099:89;652:3172:104;;-1:-1:-1;;;12143:30:66;;;;;11860:713;652:3172:104;12479:52:66;652:3172:104;12489:41:66;652:3172:104;;:::i;12489:41:66:-;-1:-1:-1;;;;;652:3172:104;;12489:41:66;;;652:3172:104;12343:52:66;:::i;12479:::-;11870:1;12545:17;;:::o;11657:922::-;4803:13:103;652:3172:104;11657:922:66;;;11864:7;;;;11936;11916:28;11936:7;;:::i;11916:28::-;652:3172:104;;;;;;;;;;;;12103:13:66;;;12099:89;;12251:14;;;;;12285:19;;;652:3172:104;;;;;;;;;;;;;;;;;12247:163:66;652:3172:104;;12343:52:66;652:3172:104;12353:41:66;652:3172:104;;:::i;12353:41:66:-;-1:-1:-1;;;;;652:3172:104;;12353:41:66;;;652:3172:104;12343:52:66;:::i;11860:713::-;652:3172:104;12479:52:66;652:3172:104;12489:41:66;652:3172:104;;:::i;12489:41:66:-;-1:-1:-1;;;;;652:3172:104;;12489:41:66;;;652:3172:104;12343:52:66;:::i;11657:922::-;652:3172:104;;11657:922:66;;;11864:7;;;;11936;11916:28;11936:7;;:::i;:::-;11916:28;14439:109;;;;;;14289:265;;11916:28;652:3172:104;;;;;;;;;;;;12103:13:66;;;12099:89;;12251:14;;;;;12285:19;;;;652:3172:104;;;;;;;;;;;;;;;;;12247:163:66;652:3172:104;;;12343:52:66;652:3172:104;12353:41:66;652:3172:104;;:::i;:::-;;;;;;;;12353:41:66;-1:-1:-1;;;;;652:3172:104;;12353:41:66;;;652:3172:104;12343:52:66;:::i;11860:713::-;652:3172:104;;12479:52:66;652:3172:104;12489:41:66;652:3172:104;;:::i;12489:41:66:-;-1:-1:-1;;;;;652:3172:104;;12489:41:66;;;652:3172:104;12343:52:66;:::i;18080:5181:63:-;18246:1;18241:6;;;18237:53;;18246:1;19217:14;-1:-1:-1;;;19278:16:63;;;19274:92;;18080:5181;22827:18;22717;22607;22498;22387;22278;23216:28;19383:15;19898:6;19383:15;-1:-1:-1;;;23237:6:63;19383:15;;;19379:90;;18080:5181;19493:7;19486:15;;;19482:90;;18080:5181;19596:7;19589:15;;;19585:89;;18080:5181;19698:6;19691:14;;;19687:87;;18080:5181;19798:6;19791:14;;;19787:87;;18080:5181;19891:14;;19887:61;;18080:5181;20374:1;652:3172:104;18246:1:63;652:3172:104;22284:6:63;;;;:::i;:::-;652:3172:104;;;;;22278:18:63;22393:6;;;;:::i;22387:18::-;22504:6;;;;:::i;22498:18::-;22613:6;;;;:::i;22607:18::-;22723:6;;;;:::i;22717:18::-;22833:6;;;;:::i;22827:18::-;23237:6;;;:::i;:::-;23232:11;;;652:3172:104;23216:28:63;652:3172:104;;18080:5181:63;:::o;19887:61::-;18246:1;652:3172:104;19887:61:63;;19787:87;652:3172:104;;;;;19787:87:63;;;19687;652:3172:104;;;;;19687:87:63;;;19585:89;652:3172:104;;;;;19585:89:63;;;19482:90;652:3172:104;;;;;19482:90:63;;;19379;652:3172:104;;;;;19379:90:63;;;19274:92;-1:-1:-1;;;;652:3172:104;-1:-1:-1;652:3172:104;;;;19274:92:63;;12929:433:66;;13112:10;;;;;;13344:11;;12929:433;:::o;13105:230::-;3721:5:63;;;;;652:3172:104;;3731:5:63;;;652:3172:104;;;;;;;;;4622:13:103;-1:-1:-1;14439:109:66;652:3172:104;14439:109:66;;-1:-1:-1;;;;;;;;;;;14439:109:66;652:3172:104;;;;;-1:-1:-1;13189:136:66;652:3172:104;;;13248:10:66;;13189:136;;13105:230;;;13189:136;652:3172:104;;;;;;;;;;;13189:136:66;;;12929:433;;13112:10;;;;;;13344:11;;12929:433;:::o;13105:230::-;3721:5:63;;;;;652:3172:104;;3731:5:63;;;652:3172:104;;;;;;;;;4994:12:103;-1:-1:-1;14439:109:66;652:3172:104;14439:109:66;;-1:-1:-1;;;;;;;;;;;14439:109:66;652:3172:104;;;;;-1:-1:-1;13189:136:66;652:3172:104;;;13248:10:66;;13189:136;;13105:230;;;13189:136;652:3172:104;;;;;;;;;;;13189:136:66;;;12929:433;;;13112:10;;;;;;13344:11;;;12929:433;:::o;13105:230::-;3721:5:63;;;;;;652:3172:104;;3731:5:63;;;652:3172:104;;;;;;;;;14439:109:66;-1:-1:-1;14439:109:66;652:3172:104;14439:109:66;;;-1:-1:-1;14439:109:66;;652:3172:104;;;;;-1:-1:-1;13189:136:66;652:3172:104;;;13248:10:66;;13189:136;;13105:230;;;;13189:136;652:3172:104;;;;;;;;;;;13189:136:66;;","linkReferences":{},"immutableReferences":{"56865":[{"start":2716,"length":32},{"start":3266,"length":32}],"67505":[{"start":5505,"length":32},{"start":6950,"length":32}],"67508":[{"start":7311,"length":32},{"start":8722,"length":32}]}},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","DELEGATOR_FACTORY()":"6da3e06d","DEPOSITOR_WHITELIST_ROLE()":"1b66c9e1","DEPOSIT_LIMIT_SET_ROLE()":"a21a1df9","DEPOSIT_WHITELIST_SET_ROLE()":"db388715","FACTORY()":"2dd31000","IS_DEPOSIT_LIMIT_SET_ROLE()":"1415519b","SLASHER_FACTORY()":"87df0788","activeBalanceOf(address)":"59f769a9","activeBalanceOfAt(address,uint48,bytes)":"efb559d6","activeShares()":"bfefcd7b","activeSharesAt(uint48,bytes)":"50f22068","activeSharesOf(address)":"9d66201b","activeSharesOfAt(address,uint48,bytes)":"2d73c69c","activeStake()":"bd49c35f","activeStakeAt(uint48,bytes)":"810da75d","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burner()":"27810b6e","claim(address,uint256)":"aad3ec96","claimBatch(address,uint256[])":"7c04c80a","collateral()":"d8dfeb45","currentEpoch()":"76671808","currentEpochStart()":"61a8c8c4","decimals()":"313ce567","delegator()":"ce9b7930","deposit(address,uint256)":"47e7ef24","depositLimit()":"ecf70858","depositWhitelist()":"48d3b775","epochAt(uint48)":"7953b33b","epochDuration()":"4ff0876a","epochDurationInit()":"46361671","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","initialize(uint64,address,bytes)":"57ec83cc","isDelegatorInitialized()":"50861adc","isDepositLimit()":"a1b12202","isDepositorWhitelisted(address)":"794b15b7","isInitialized()":"392e53cd","isSlasherInitialized()":"6ec1e3f8","isWithdrawalsClaimed(uint256,address)":"a5d03223","migrate(uint64,bytes)":"2abe3048","name()":"06fdde03","nextEpochStart()":"73790ab3","onSlash(uint256,uint48)":"7278e31c","owner()":"8da5cb5b","previousEpochStart()":"281f5752","redeem(address,uint256)":"1e9a6950","renounceOwnership()":"715018a6","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","setDelegator(address)":"83cd9cc3","setDepositLimit(uint256)":"bdc8144b","setDepositWhitelist(bool)":"4105a7dd","setDepositorWhitelistStatus(address,bool)":"a2861466","setIsDepositLimit(bool)":"5346e34f","setSlasher(address)":"aabc2496","slashableBalanceOf(address)":"c31e8dd7","slasher()":"b1344271","staticDelegateCall(address,bytes)":"9f86fd85","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","totalStake()":"8b0e9f3f","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","transferOwnership(address)":"f2fde38b","version()":"54fd4d50","withdraw(address,uint256)":"f3fef3a3","withdrawalShares(uint256)":"afba70ad","withdrawalSharesOf(uint256,address)":"a3b54172","withdrawals(uint256)":"5cc07076","withdrawalsOf(uint256,address)":"f5e7ee0f"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatorFactory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"slasherFactory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"vaultFactory\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadyClaimed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadySet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CheckpointUnorderedInsertion\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DelegatorAlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DepositLimitReached\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientClaim\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientDeposit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientRedemption\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientWithdrawal\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCaptureEpoch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidClaimer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCollateral\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDelegator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEpoch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEpochDuration\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidLengthEpochs\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOnBehalfOf\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRecipient\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSlasher\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTimestamp\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingRoles\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoPreviousEpoch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotDelegator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotFactory\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotSlasher\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotWhitelistedDepositor\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SlasherAlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TooMuchRedeem\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TooMuchWithdraw\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"claimer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Claim\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"claimer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"epochs\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"ClaimBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"depositor\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slashedAmount\",\"type\":\"uint256\"}],\"name\":\"OnSlash\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"SetDelegator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"SetDepositLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"SetDepositWhitelist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"SetDepositorWhitelistStatus\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"SetIsDepositLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"slasher\",\"type\":\"address\"}],\"name\":\"SetSlasher\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"claimer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"burnedShares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"mintedShares\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DELEGATOR_FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEPOSITOR_WHITELIST_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEPOSIT_LIMIT_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEPOSIT_WHITELIST_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"IS_DEPOSIT_LIMIT_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SLASHER_FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"activeBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hints\",\"type\":\"bytes\"}],\"name\":\"activeBalanceOfAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"activeShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"activeSharesAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"activeSharesOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"activeSharesOfAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"activeStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"activeStakeAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"burner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"}],\"name\":\"claim\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"epochs\",\"type\":\"uint256[]\"}],\"name\":\"claimBatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"collateral\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentEpochStart\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"delegator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"depositedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mintedShares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"depositLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"depositWhitelist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"epochAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"epochDuration\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"epochDurationInit\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"initialVersion\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner_\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isDelegatorInitialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isDepositLimit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isDepositorWhitelisted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isInitialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isSlasherInitialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isWithdrawalsClaimed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newVersion\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"migrate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nextEpochStart\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"}],\"name\":\"onSlash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"slashedAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"previousEpochStart\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"claimer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"withdrawnAssets\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mintedShares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator_\",\"type\":\"address\"}],\"name\":\"setDelegator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"setDepositLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"setDepositWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"setDepositorWhitelistStatus\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"setIsDepositLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"slasher_\",\"type\":\"address\"}],\"name\":\"setSlasher\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"slashableBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slasher\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"staticDelegateCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"claimer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"burnedShares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mintedShares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"}],\"name\":\"withdrawalShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"withdrawalSharesOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"}],\"name\":\"withdrawals\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"withdrawalsOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"CheckpointUnorderedInsertion()\":[{\"details\":\"A value was attempted to be inserted on a past checkpoint.\"}],\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Claim(address,address,uint256,uint256)\":{\"params\":{\"amount\":\"amount of the collateral claimed\",\"claimer\":\"account that claimed\",\"epoch\":\"epoch the collateral was claimed for\",\"recipient\":\"account that received the collateral\"}},\"ClaimBatch(address,address,uint256[],uint256)\":{\"params\":{\"amount\":\"amount of the collateral claimed\",\"claimer\":\"account that claimed\",\"epochs\":\"epochs the collateral was claimed for\",\"recipient\":\"account that received the collateral\"}},\"Deposit(address,address,uint256,uint256)\":{\"params\":{\"amount\":\"amount of the collateral deposited\",\"depositor\":\"account that made the deposit\",\"onBehalfOf\":\"account the deposit was made on behalf of\",\"shares\":\"amount of the active shares minted\"}},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"OnSlash(uint256,uint48,uint256)\":{\"params\":{\"amount\":\"amount of the collateral to slash\",\"captureTimestamp\":\"time point when the stake was captured\",\"slashedAmount\":\"real amount of the collateral slashed\"}},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"SetDelegator(address)\":{\"details\":\"Can be set only once.\",\"params\":{\"delegator\":\"vault's delegator to delegate the stake to networks and operators\"}},\"SetDepositLimit(uint256)\":{\"params\":{\"limit\":\"deposit limit (maximum amount of the collateral that can be in the vault simultaneously)\"}},\"SetDepositWhitelist(bool)\":{\"params\":{\"status\":\"if enabled deposit whitelist\"}},\"SetDepositorWhitelistStatus(address,bool)\":{\"params\":{\"account\":\"account for which the whitelist status is set\",\"status\":\"if whitelisted the account\"}},\"SetIsDepositLimit(bool)\":{\"params\":{\"status\":\"if enabled deposit limit\"}},\"SetSlasher(address)\":{\"details\":\"Can be set only once.\",\"params\":{\"slasher\":\"vault's slasher to provide a slashing mechanism to networks\"}},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"},\"Withdraw(address,address,uint256,uint256,uint256)\":{\"params\":{\"amount\":\"amount of the collateral withdrawn\",\"burnedShares\":\"amount of the active shares burned\",\"claimer\":\"account that needs to claim the withdrawal\",\"mintedShares\":\"amount of the epoch withdrawal shares minted\",\"withdrawer\":\"account that made the withdrawal\"}}},\"kind\":\"dev\",\"methods\":{\"activeBalanceOf(address)\":{\"params\":{\"account\":\"account to get the active balance for\"},\"returns\":{\"_0\":\"active balance for the account\"}},\"activeBalanceOfAt(address,uint48,bytes)\":{\"params\":{\"account\":\"account to get the active balance for\",\"hints\":\"hints for checkpoints' indexes\",\"timestamp\":\"time point to get the active balance for the account at\"},\"returns\":{\"_0\":\"active balance for the account at the timestamp\"}},\"activeShares()\":{\"returns\":{\"_0\":\"total number of active shares\"}},\"activeSharesAt(uint48,bytes)\":{\"params\":{\"hint\":\"hint for the checkpoint index\",\"timestamp\":\"time point to get the total number of active shares at\"},\"returns\":{\"_0\":\"total number of active shares at the timestamp\"}},\"activeSharesOf(address)\":{\"params\":{\"account\":\"account to get the number of active shares for\"},\"returns\":{\"_0\":\"number of active shares for the account\"}},\"activeSharesOfAt(address,uint48,bytes)\":{\"params\":{\"account\":\"account to get the number of active shares for\",\"hint\":\"hint for the checkpoint index\",\"timestamp\":\"time point to get the number of active shares for the account at\"},\"returns\":{\"_0\":\"number of active shares for the account at the timestamp\"}},\"activeStake()\":{\"returns\":{\"_0\":\"total amount of active stake\"}},\"activeStakeAt(uint48,bytes)\":{\"params\":{\"hint\":\"hint for the checkpoint index\",\"timestamp\":\"time point to get the total active stake at\"},\"returns\":{\"_0\":\"total amount of active stake at the timestamp\"}},\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"claim(address,uint256)\":{\"params\":{\"epoch\":\"epoch to claim the collateral for\",\"recipient\":\"account that receives the collateral\"},\"returns\":{\"amount\":\"amount of the collateral claimed\"}},\"claimBatch(address,uint256[])\":{\"params\":{\"epochs\":\"epochs to claim the collateral for\",\"recipient\":\"account that receives the collateral\"},\"returns\":{\"amount\":\"amount of the collateral claimed\"}},\"currentEpoch()\":{\"returns\":{\"_0\":\"current epoch\"}},\"currentEpochStart()\":{\"returns\":{\"_0\":\"start of the current epoch\"}},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"deposit(address,uint256)\":{\"params\":{\"amount\":\"amount of the collateral to deposit\",\"onBehalfOf\":\"account the deposit is made on behalf of\"},\"returns\":{\"depositedAmount\":\"real amount of the collateral deposited\",\"mintedShares\":\"amount of the active shares minted\"}},\"epochAt(uint48)\":{\"details\":\"Reverts if the timestamp is less than the start of the epoch 0.\",\"params\":{\"timestamp\":\"time point to get the epoch at\"},\"returns\":{\"_0\":\"epoch at the timestamp\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize(uint64,address,bytes)\":{\"params\":{\"data\":\"some data to use\",\"initialVersion\":\"initial version of the entity\",\"owner\":\"initial owner of the entity\"}},\"isInitialized()\":{\"returns\":{\"_0\":\"if the vault is fully initialized\"}},\"migrate(uint64,bytes)\":{\"params\":{\"data\":\"some data to use\",\"newVersion\":\"new version of the entity\"}},\"name()\":{\"details\":\"Returns the name of the token.\"},\"nextEpochStart()\":{\"returns\":{\"_0\":\"start of the next epoch\"}},\"onSlash(uint256,uint48)\":{\"details\":\"Only the slasher can call this function.\",\"params\":{\"amount\":\"amount to slash\",\"captureTimestamp\":\"time point when the stake was captured\"},\"returns\":{\"slashedAmount\":\"real amount of the collateral slashed\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"previousEpochStart()\":{\"details\":\"Reverts if the current epoch is 0.\",\"returns\":{\"_0\":\"start of the previous epoch\"}},\"redeem(address,uint256)\":{\"params\":{\"claimer\":\"account that needs to claim the withdrawal\",\"shares\":\"amount of the active shares to redeem\"},\"returns\":{\"mintedShares\":\"amount of the epoch withdrawal shares minted\",\"withdrawnAssets\":\"amount of the collateral withdrawn\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"setDepositLimit(uint256)\":{\"details\":\"Only a DEPOSIT_LIMIT_SET_ROLE holder can call this function.\",\"params\":{\"limit\":\"deposit limit (maximum amount of the collateral that can be in the vault simultaneously)\"}},\"setDepositWhitelist(bool)\":{\"details\":\"Only a DEPOSIT_WHITELIST_SET_ROLE holder can call this function.\",\"params\":{\"status\":\"if enabling deposit whitelist\"}},\"setDepositorWhitelistStatus(address,bool)\":{\"details\":\"Only a DEPOSITOR_WHITELIST_ROLE holder can call this function.\",\"params\":{\"account\":\"account for which the whitelist status is set\",\"status\":\"if whitelisting the account\"}},\"setIsDepositLimit(bool)\":{\"details\":\"Only a IS_DEPOSIT_LIMIT_SET_ROLE holder can call this function.\",\"params\":{\"status\":\"if enabling deposit limit\"}},\"slashableBalanceOf(address)\":{\"params\":{\"account\":\"account to get the slashable collateral for\"},\"returns\":{\"_0\":\"total amount of the account's slashable collateral\"}},\"staticDelegateCall(address,bytes)\":{\"details\":\"It allows to use this contract's storage on-chain.\",\"params\":{\"data\":\"data to make a delegatecall with\",\"target\":\"address of the contract to make a delegatecall to\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalStake()\":{\"returns\":{\"_0\":\"total amount of the slashable collateral\"}},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"version()\":{\"details\":\"Starts from 1.\",\"returns\":{\"_0\":\"version of the entity\"}},\"withdraw(address,uint256)\":{\"params\":{\"amount\":\"amount of the collateral to withdraw\",\"claimer\":\"account that needs to claim the withdrawal\"},\"returns\":{\"burnedShares\":\"amount of the active shares burned\",\"mintedShares\":\"amount of the epoch withdrawal shares minted\"}},\"withdrawalsOf(uint256,address)\":{\"params\":{\"account\":\"account to get the withdrawals for\",\"epoch\":\"epoch to get the withdrawals for the account at\"},\"returns\":{\"_0\":\"withdrawals for the account at the epoch\"}}},\"version\":1},\"userdoc\":{\"events\":{\"Claim(address,address,uint256,uint256)\":{\"notice\":\"Emitted when a claim is made.\"},\"ClaimBatch(address,address,uint256[],uint256)\":{\"notice\":\"Emitted when a batch claim is made.\"},\"Deposit(address,address,uint256,uint256)\":{\"notice\":\"Emitted when a deposit is made.\"},\"OnSlash(uint256,uint48,uint256)\":{\"notice\":\"Emitted when a slash happens.\"},\"SetDelegator(address)\":{\"notice\":\"Emitted when a delegator is set.\"},\"SetDepositLimit(uint256)\":{\"notice\":\"Emitted when a deposit limit is set.\"},\"SetDepositWhitelist(bool)\":{\"notice\":\"Emitted when a deposit whitelist status is enabled/disabled.\"},\"SetDepositorWhitelistStatus(address,bool)\":{\"notice\":\"Emitted when a depositor whitelist status is set.\"},\"SetIsDepositLimit(bool)\":{\"notice\":\"Emitted when a deposit limit status is enabled/disabled.\"},\"SetSlasher(address)\":{\"notice\":\"Emitted when a slasher is set.\"},\"Withdraw(address,address,uint256,uint256,uint256)\":{\"notice\":\"Emitted when a withdrawal is made.\"}},\"kind\":\"user\",\"methods\":{\"DELEGATOR_FACTORY()\":{\"notice\":\"Get the delegator factory's address.\"},\"DEPOSITOR_WHITELIST_ROLE()\":{\"notice\":\"Get a depositor whitelist status setter's role.\"},\"DEPOSIT_LIMIT_SET_ROLE()\":{\"notice\":\"Get a deposit limit setter's role.\"},\"DEPOSIT_WHITELIST_SET_ROLE()\":{\"notice\":\"Get a deposit whitelist enabler/disabler's role.\"},\"FACTORY()\":{\"notice\":\"Get the factory's address.\"},\"IS_DEPOSIT_LIMIT_SET_ROLE()\":{\"notice\":\"Get a deposit limit enabler/disabler's role.\"},\"SLASHER_FACTORY()\":{\"notice\":\"Get the slasher factory's address.\"},\"activeBalanceOf(address)\":{\"notice\":\"Get an active balance for a particular account.\"},\"activeBalanceOfAt(address,uint48,bytes)\":{\"notice\":\"Get an active balance for a particular account at a given timestamp using hints.\"},\"activeShares()\":{\"notice\":\"Get a total number of active shares in the vault.\"},\"activeSharesAt(uint48,bytes)\":{\"notice\":\"Get a total number of active shares in the vault at a given timestamp using a hint.\"},\"activeSharesOf(address)\":{\"notice\":\"Get a number of active shares for a particular account.\"},\"activeSharesOfAt(address,uint48,bytes)\":{\"notice\":\"Get a total number of active shares for a particular account at a given timestamp using a hint.\"},\"activeStake()\":{\"notice\":\"Get a total amount of active stake in the vault.\"},\"activeStakeAt(uint48,bytes)\":{\"notice\":\"Get a total amount of active stake in the vault at a given timestamp using a hint.\"},\"burner()\":{\"notice\":\"Get a burner to issue debt to (e.g., 0xdEaD or some unwrapper contract).\"},\"claim(address,uint256)\":{\"notice\":\"Claim collateral from the vault.\"},\"claimBatch(address,uint256[])\":{\"notice\":\"Claim collateral from the vault for multiple epochs.\"},\"collateral()\":{\"notice\":\"Get a vault collateral.\"},\"currentEpoch()\":{\"notice\":\"Get a current vault epoch.\"},\"currentEpochStart()\":{\"notice\":\"Get a start of the current vault epoch.\"},\"delegator()\":{\"notice\":\"Get a delegator (it delegates the vault's stake to networks and operators).\"},\"deposit(address,uint256)\":{\"notice\":\"Deposit collateral into the vault.\"},\"depositLimit()\":{\"notice\":\"Get a deposit limit (maximum amount of the active stake that can be in the vault simultaneously).\"},\"depositWhitelist()\":{\"notice\":\"Get if the deposit whitelist is enabled.\"},\"epochAt(uint48)\":{\"notice\":\"Get an epoch at a given timestamp.\"},\"epochDuration()\":{\"notice\":\"Get a duration of the vault epoch.\"},\"epochDurationInit()\":{\"notice\":\"Get a time point of the epoch duration set.\"},\"initialize(uint64,address,bytes)\":{\"notice\":\"Initialize this entity contract by using a given data and setting a particular version and owner.\"},\"isDelegatorInitialized()\":{\"notice\":\"Get if the delegator is initialized.\"},\"isDepositLimit()\":{\"notice\":\"Get if the deposit limit is set.\"},\"isDepositorWhitelisted(address)\":{\"notice\":\"Get if a given account is whitelisted as a depositor.\"},\"isInitialized()\":{\"notice\":\"Check if the vault is fully initialized (a delegator and a slasher are set).\"},\"isSlasherInitialized()\":{\"notice\":\"Get if the slasher is initialized.\"},\"isWithdrawalsClaimed(uint256,address)\":{\"notice\":\"Get if the withdrawals are claimed for a particular account at a given epoch.\"},\"migrate(uint64,bytes)\":{\"notice\":\"Migrate this entity to a particular newer version using a given data.\"},\"nextEpochStart()\":{\"notice\":\"Get a start of the next vault epoch.\"},\"onSlash(uint256,uint48)\":{\"notice\":\"Slash callback for burning collateral.\"},\"previousEpochStart()\":{\"notice\":\"Get a start of the previous vault epoch.\"},\"redeem(address,uint256)\":{\"notice\":\"Redeem collateral from the vault (it will be claimable after the next epoch).\"},\"setDepositLimit(uint256)\":{\"notice\":\"Set a deposit limit.\"},\"setDepositWhitelist(bool)\":{\"notice\":\"Enable/disable deposit whitelist.\"},\"setDepositorWhitelistStatus(address,bool)\":{\"notice\":\"Set a depositor whitelist status.\"},\"setIsDepositLimit(bool)\":{\"notice\":\"Enable/disable deposit limit.\"},\"slashableBalanceOf(address)\":{\"notice\":\"Get a total amount of the collateral that can be slashed for a given account.\"},\"slasher()\":{\"notice\":\"Get a slasher (it provides networks a slashing mechanism).\"},\"staticDelegateCall(address,bytes)\":{\"notice\":\"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data).\"},\"totalStake()\":{\"notice\":\"Get a total amount of the collateral that can be slashed.\"},\"version()\":{\"notice\":\"Get the entity's version.\"},\"withdraw(address,uint256)\":{\"notice\":\"Withdraw collateral from the vault (it will be claimable after the next epoch).\"},\"withdrawalShares(uint256)\":{\"notice\":\"Get a total number of withdrawal shares at a given epoch.\"},\"withdrawalSharesOf(uint256,address)\":{\"notice\":\"Get a number of withdrawal shares for a particular account at a given epoch (zero if claimed).\"},\"withdrawals(uint256)\":{\"notice\":\"Get a total amount of the withdrawals at a given epoch.\"},\"withdrawalsOf(uint256,address)\":{\"notice\":\"Get withdrawals for a particular account at a given epoch (zero if claimed).\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/vault/VaultTokenized.sol\":\"VaultTokenized\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol\":{\"keccak256\":\"0xbb96dc9c468170c3224126e953de917e06332ec5909a3d85e6e5bb0df10c5139\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d14e6486e127e7e31c2ffccfc212c7ebaaecf8fb05677575128b449ee113def2\",\"dweb:/ipfs/QmabvyfStwBcum8mGfkmxcTV45rjyHmzHGCxfxyhmu48Yx\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf\",\"dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89\",\"dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1\",\"dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44\",\"dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6\",\"dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza\"]},\"src/contracts/common/MigratableEntity.sol\":{\"keccak256\":\"0x303ad40a3de8fa808cc30a6fbd5998633f6a89b982e6db1fa981e0566ab445e7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://fa8fb92995ead02798e013190b87b84b44cc68668262f045c9b0b4783940e2bf\",\"dweb:/ipfs/QmV1uKGVLKwWisc714R8fCt71gXUQJpaKvdc6LQ8WtvMpL\"]},\"src/contracts/common/StaticDelegateCallable.sol\":{\"keccak256\":\"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764\",\"dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD\"]},\"src/contracts/libraries/Checkpoints.sol\":{\"keccak256\":\"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609\",\"dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE\"]},\"src/contracts/libraries/ERC4626Math.sol\":{\"keccak256\":\"0x8441160513c1cbeb1c3b9ee077bcc7e7ce20006b52a77c8dd39ff0ef89699939\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://943f8cc3e26ddf649f465f40c909819f5c864717c4baa339e9e403b9374a4653\",\"dweb:/ipfs/QmXPxi1sUDsrGprZdUgCzoPEosaZMv9ZhygWQ1vAi1phAB\"]},\"src/contracts/vault/Vault.sol\":{\"keccak256\":\"0x7ee6dbf060c45d6eba95315f4ac0b3b467dd9c4999b84c31d6f66d4d8b53a116\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://301948b8ea522db292aa2722ba42def3911dae95f0b376f7023c3fef470f8676\",\"dweb:/ipfs/QmSDbP2HdzhDAzstr8Zz5isEAcSkma8ABc5UwPsoazaumZ\"]},\"src/contracts/vault/VaultStorage.sol\":{\"keccak256\":\"0x57db25b127d77ea3472de53e3a4af3354399655b9268638b99ca5925fa364a56\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://aa763d9a6ec508ae3abfb8228b72b9fd9525279e5135d4962e79ff059feb1173\",\"dweb:/ipfs/QmcbDR6E9wyEpu6V2FkEC4hnWy47zXA9LSKJde6zSGd33Q\"]},\"src/contracts/vault/VaultTokenized.sol\":{\"keccak256\":\"0xa9475a46a3e32b35e48bc37fdaf08e1a586fb7c9667ac5e014b716a08873c46d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://0a292a4f35bc43ce7174b36e2d016bc44d6737e94b41e48cb5dd1bb1e4821e48\",\"dweb:/ipfs/QmduHZe2REPnygiWvQRV82yD4tYHdwX33FkYRFm1UZoXBA\"]},\"src/interfaces/common/IEntity.sol\":{\"keccak256\":\"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b\",\"dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv\"]},\"src/interfaces/common/IMigratableEntity.sol\":{\"keccak256\":\"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c\",\"dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds\"]},\"src/interfaces/common/IRegistry.sol\":{\"keccak256\":\"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014\",\"dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK\"]},\"src/interfaces/common/IStaticDelegateCallable.sol\":{\"keccak256\":\"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516\",\"dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi\"]},\"src/interfaces/delegator/IBaseDelegator.sol\":{\"keccak256\":\"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2\",\"dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8\"]},\"src/interfaces/slasher/IBaseSlasher.sol\":{\"keccak256\":\"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf\",\"dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx\"]},\"src/interfaces/vault/IVault.sol\":{\"keccak256\":\"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9\",\"dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R\"]},\"src/interfaces/vault/IVaultStorage.sol\":{\"keccak256\":\"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e\",\"dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6\"]},\"src/interfaces/vault/IVaultTokenized.sol\":{\"keccak256\":\"0xb723560b49c30b38130634388a0550c9e07596f92a58edbfa2415e690024e0c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dc9dde973a0bbf0adbc305462a796fa3b2e5be9daa1984e4f3e4f48e3c254f39\",\"dweb:/ipfs/QmQydZsr7ESw7ZSe9mqaxZ3dycvru8ZFVwrL9pmVnpyd7c\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"delegatorFactory","type":"address"},{"internalType":"address","name":"slasherFactory","type":"address"},{"internalType":"address","name":"vaultFactory","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"inputs":[],"type":"error","name":"AlreadyClaimed"},{"inputs":[],"type":"error","name":"AlreadyInitialized"},{"inputs":[],"type":"error","name":"AlreadySet"},{"inputs":[],"type":"error","name":"CheckpointUnorderedInsertion"},{"inputs":[],"type":"error","name":"DelegatorAlreadyInitialized"},{"inputs":[],"type":"error","name":"DepositLimitReached"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientAllowance"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC20InvalidApprover"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC20InvalidSender"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"ERC20InvalidSpender"},{"inputs":[],"type":"error","name":"InsufficientClaim"},{"inputs":[],"type":"error","name":"InsufficientDeposit"},{"inputs":[],"type":"error","name":"InsufficientRedemption"},{"inputs":[],"type":"error","name":"InsufficientWithdrawal"},{"inputs":[],"type":"error","name":"InvalidAccount"},{"inputs":[],"type":"error","name":"InvalidCaptureEpoch"},{"inputs":[],"type":"error","name":"InvalidClaimer"},{"inputs":[],"type":"error","name":"InvalidCollateral"},{"inputs":[],"type":"error","name":"InvalidDelegator"},{"inputs":[],"type":"error","name":"InvalidEpoch"},{"inputs":[],"type":"error","name":"InvalidEpochDuration"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"InvalidLengthEpochs"},{"inputs":[],"type":"error","name":"InvalidOnBehalfOf"},{"inputs":[],"type":"error","name":"InvalidRecipient"},{"inputs":[],"type":"error","name":"InvalidSlasher"},{"inputs":[],"type":"error","name":"InvalidTimestamp"},{"inputs":[],"type":"error","name":"MissingRoles"},{"inputs":[],"type":"error","name":"NoPreviousEpoch"},{"inputs":[],"type":"error","name":"NotDelegator"},{"inputs":[],"type":"error","name":"NotFactory"},{"inputs":[],"type":"error","name":"NotInitialized"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"NotSlasher"},{"inputs":[],"type":"error","name":"NotWhitelistedDepositor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintDowncast"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"type":"error","name":"SafeERC20FailedOperation"},{"inputs":[],"type":"error","name":"SlasherAlreadyInitialized"},{"inputs":[],"type":"error","name":"TooMuchRedeem"},{"inputs":[],"type":"error","name":"TooMuchWithdraw"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"claimer","type":"address","indexed":true},{"internalType":"address","name":"recipient","type":"address","indexed":true},{"internalType":"uint256","name":"epoch","type":"uint256","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Claim","anonymous":false},{"inputs":[{"internalType":"address","name":"claimer","type":"address","indexed":true},{"internalType":"address","name":"recipient","type":"address","indexed":true},{"internalType":"uint256[]","name":"epochs","type":"uint256[]","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"ClaimBatch","anonymous":false},{"inputs":[{"internalType":"address","name":"depositor","type":"address","indexed":true},{"internalType":"address","name":"onBehalfOf","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false}],"type":"event","name":"Deposit","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint48","name":"captureTimestamp","type":"uint48","indexed":false},{"internalType":"uint256","name":"slashedAmount","type":"uint256","indexed":false}],"type":"event","name":"OnSlash","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true}],"type":"event","name":"SetDelegator","anonymous":false},{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"SetDepositLimit","anonymous":false},{"inputs":[{"internalType":"bool","name":"status","type":"bool","indexed":false}],"type":"event","name":"SetDepositWhitelist","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"bool","name":"status","type":"bool","indexed":false}],"type":"event","name":"SetDepositorWhitelistStatus","anonymous":false},{"inputs":[{"internalType":"bool","name":"status","type":"bool","indexed":false}],"type":"event","name":"SetIsDepositLimit","anonymous":false},{"inputs":[{"internalType":"address","name":"slasher","type":"address","indexed":true}],"type":"event","name":"SetSlasher","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"withdrawer","type":"address","indexed":true},{"internalType":"address","name":"claimer","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"burnedShares","type":"uint256","indexed":false},{"internalType":"uint256","name":"mintedShares","type":"uint256","indexed":false}],"type":"event","name":"Withdraw","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DELEGATOR_FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEPOSITOR_WHITELIST_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEPOSIT_LIMIT_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEPOSIT_WHITELIST_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_DEPOSIT_LIMIT_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"SLASHER_FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"activeBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hints","type":"bytes"}],"stateMutability":"view","type":"function","name":"activeBalanceOfAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"activeShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"activeSharesAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"activeSharesOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"activeSharesOfAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"activeStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"activeStakeAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"burner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"epoch","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"claim","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256[]","name":"epochs","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"claimBatch","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"collateral","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"currentEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"currentEpochStart","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"delegator","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"onBehalfOf","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"deposit","outputs":[{"internalType":"uint256","name":"depositedAmount","type":"uint256"},{"internalType":"uint256","name":"mintedShares","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"depositLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"depositWhitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"view","type":"function","name":"epochAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"epochDuration","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"epochDurationInit","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"initialVersion","type":"uint64"},{"internalType":"address","name":"owner_","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"isDelegatorInitialized","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"isDepositLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"isDepositorWhitelisted","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"isInitialized","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"isSlasherInitialized","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"isWithdrawalsClaimed","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"newVersion","type":"uint64"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"migrate"},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"nextEpochStart","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint48","name":"captureTimestamp","type":"uint48"}],"stateMutability":"nonpayable","type":"function","name":"onSlash","outputs":[{"internalType":"uint256","name":"slashedAmount","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"previousEpochStart","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[{"internalType":"address","name":"claimer","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"redeem","outputs":[{"internalType":"uint256","name":"withdrawnAssets","type":"uint256"},{"internalType":"uint256","name":"mintedShares","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"address","name":"delegator_","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setDelegator"},{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setDepositLimit"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setDepositWhitelist"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setDepositorWhitelistStatus"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setIsDepositLimit"},{"inputs":[{"internalType":"address","name":"slasher_","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setSlasher"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"slashableBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"slasher","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"staticDelegateCall"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"version","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"claimer","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"withdraw","outputs":[{"internalType":"uint256","name":"burnedShares","type":"uint256"},{"internalType":"uint256","name":"mintedShares","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"}],"stateMutability":"view","type":"function","name":"withdrawalShares","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"withdrawalSharesOf","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"}],"stateMutability":"view","type":"function","name":"withdrawals","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"withdrawalsOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{"activeBalanceOf(address)":{"params":{"account":"account to get the active balance for"},"returns":{"_0":"active balance for the account"}},"activeBalanceOfAt(address,uint48,bytes)":{"params":{"account":"account to get the active balance for","hints":"hints for checkpoints' indexes","timestamp":"time point to get the active balance for the account at"},"returns":{"_0":"active balance for the account at the timestamp"}},"activeShares()":{"returns":{"_0":"total number of active shares"}},"activeSharesAt(uint48,bytes)":{"params":{"hint":"hint for the checkpoint index","timestamp":"time point to get the total number of active shares at"},"returns":{"_0":"total number of active shares at the timestamp"}},"activeSharesOf(address)":{"params":{"account":"account to get the number of active shares for"},"returns":{"_0":"number of active shares for the account"}},"activeSharesOfAt(address,uint48,bytes)":{"params":{"account":"account to get the number of active shares for","hint":"hint for the checkpoint index","timestamp":"time point to get the number of active shares for the account at"},"returns":{"_0":"number of active shares for the account at the timestamp"}},"activeStake()":{"returns":{"_0":"total amount of active stake"}},"activeStakeAt(uint48,bytes)":{"params":{"hint":"hint for the checkpoint index","timestamp":"time point to get the total active stake at"},"returns":{"_0":"total amount of active stake at the timestamp"}},"allowance(address,address)":{"details":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"claim(address,uint256)":{"params":{"epoch":"epoch to claim the collateral for","recipient":"account that receives the collateral"},"returns":{"amount":"amount of the collateral claimed"}},"claimBatch(address,uint256[])":{"params":{"epochs":"epochs to claim the collateral for","recipient":"account that receives the collateral"},"returns":{"amount":"amount of the collateral claimed"}},"currentEpoch()":{"returns":{"_0":"current epoch"}},"currentEpochStart()":{"returns":{"_0":"start of the current epoch"}},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"deposit(address,uint256)":{"params":{"amount":"amount of the collateral to deposit","onBehalfOf":"account the deposit is made on behalf of"},"returns":{"depositedAmount":"real amount of the collateral deposited","mintedShares":"amount of the active shares minted"}},"epochAt(uint48)":{"details":"Reverts if the timestamp is less than the start of the epoch 0.","params":{"timestamp":"time point to get the epoch at"},"returns":{"_0":"epoch at the timestamp"}},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"initialize(uint64,address,bytes)":{"params":{"data":"some data to use","initialVersion":"initial version of the entity","owner":"initial owner of the entity"}},"isInitialized()":{"returns":{"_0":"if the vault is fully initialized"}},"migrate(uint64,bytes)":{"params":{"data":"some data to use","newVersion":"new version of the entity"}},"name()":{"details":"Returns the name of the token."},"nextEpochStart()":{"returns":{"_0":"start of the next epoch"}},"onSlash(uint256,uint48)":{"details":"Only the slasher can call this function.","params":{"amount":"amount to slash","captureTimestamp":"time point when the stake was captured"},"returns":{"slashedAmount":"real amount of the collateral slashed"}},"owner()":{"details":"Returns the address of the current owner."},"previousEpochStart()":{"details":"Reverts if the current epoch is 0.","returns":{"_0":"start of the previous epoch"}},"redeem(address,uint256)":{"params":{"claimer":"account that needs to claim the withdrawal","shares":"amount of the active shares to redeem"},"returns":{"mintedShares":"amount of the epoch withdrawal shares minted","withdrawnAssets":"amount of the collateral withdrawn"}},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"setDepositLimit(uint256)":{"details":"Only a DEPOSIT_LIMIT_SET_ROLE holder can call this function.","params":{"limit":"deposit limit (maximum amount of the collateral that can be in the vault simultaneously)"}},"setDepositWhitelist(bool)":{"details":"Only a DEPOSIT_WHITELIST_SET_ROLE holder can call this function.","params":{"status":"if enabling deposit whitelist"}},"setDepositorWhitelistStatus(address,bool)":{"details":"Only a DEPOSITOR_WHITELIST_ROLE holder can call this function.","params":{"account":"account for which the whitelist status is set","status":"if whitelisting the account"}},"setIsDepositLimit(bool)":{"details":"Only a IS_DEPOSIT_LIMIT_SET_ROLE holder can call this function.","params":{"status":"if enabling deposit limit"}},"slashableBalanceOf(address)":{"params":{"account":"account to get the slashable collateral for"},"returns":{"_0":"total amount of the account's slashable collateral"}},"staticDelegateCall(address,bytes)":{"details":"It allows to use this contract's storage on-chain.","params":{"data":"data to make a delegatecall with","target":"address of the contract to make a delegatecall to"}},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalStake()":{"returns":{"_0":"total amount of the slashable collateral"}},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"version()":{"details":"Starts from 1.","returns":{"_0":"version of the entity"}},"withdraw(address,uint256)":{"params":{"amount":"amount of the collateral to withdraw","claimer":"account that needs to claim the withdrawal"},"returns":{"burnedShares":"amount of the active shares burned","mintedShares":"amount of the epoch withdrawal shares minted"}},"withdrawalsOf(uint256,address)":{"params":{"account":"account to get the withdrawals for","epoch":"epoch to get the withdrawals for the account at"},"returns":{"_0":"withdrawals for the account at the epoch"}}},"version":1},"userdoc":{"kind":"user","methods":{"DELEGATOR_FACTORY()":{"notice":"Get the delegator factory's address."},"DEPOSITOR_WHITELIST_ROLE()":{"notice":"Get a depositor whitelist status setter's role."},"DEPOSIT_LIMIT_SET_ROLE()":{"notice":"Get a deposit limit setter's role."},"DEPOSIT_WHITELIST_SET_ROLE()":{"notice":"Get a deposit whitelist enabler/disabler's role."},"FACTORY()":{"notice":"Get the factory's address."},"IS_DEPOSIT_LIMIT_SET_ROLE()":{"notice":"Get a deposit limit enabler/disabler's role."},"SLASHER_FACTORY()":{"notice":"Get the slasher factory's address."},"activeBalanceOf(address)":{"notice":"Get an active balance for a particular account."},"activeBalanceOfAt(address,uint48,bytes)":{"notice":"Get an active balance for a particular account at a given timestamp using hints."},"activeShares()":{"notice":"Get a total number of active shares in the vault."},"activeSharesAt(uint48,bytes)":{"notice":"Get a total number of active shares in the vault at a given timestamp using a hint."},"activeSharesOf(address)":{"notice":"Get a number of active shares for a particular account."},"activeSharesOfAt(address,uint48,bytes)":{"notice":"Get a total number of active shares for a particular account at a given timestamp using a hint."},"activeStake()":{"notice":"Get a total amount of active stake in the vault."},"activeStakeAt(uint48,bytes)":{"notice":"Get a total amount of active stake in the vault at a given timestamp using a hint."},"burner()":{"notice":"Get a burner to issue debt to (e.g., 0xdEaD or some unwrapper contract)."},"claim(address,uint256)":{"notice":"Claim collateral from the vault."},"claimBatch(address,uint256[])":{"notice":"Claim collateral from the vault for multiple epochs."},"collateral()":{"notice":"Get a vault collateral."},"currentEpoch()":{"notice":"Get a current vault epoch."},"currentEpochStart()":{"notice":"Get a start of the current vault epoch."},"delegator()":{"notice":"Get a delegator (it delegates the vault's stake to networks and operators)."},"deposit(address,uint256)":{"notice":"Deposit collateral into the vault."},"depositLimit()":{"notice":"Get a deposit limit (maximum amount of the active stake that can be in the vault simultaneously)."},"depositWhitelist()":{"notice":"Get if the deposit whitelist is enabled."},"epochAt(uint48)":{"notice":"Get an epoch at a given timestamp."},"epochDuration()":{"notice":"Get a duration of the vault epoch."},"epochDurationInit()":{"notice":"Get a time point of the epoch duration set."},"initialize(uint64,address,bytes)":{"notice":"Initialize this entity contract by using a given data and setting a particular version and owner."},"isDelegatorInitialized()":{"notice":"Get if the delegator is initialized."},"isDepositLimit()":{"notice":"Get if the deposit limit is set."},"isDepositorWhitelisted(address)":{"notice":"Get if a given account is whitelisted as a depositor."},"isInitialized()":{"notice":"Check if the vault is fully initialized (a delegator and a slasher are set)."},"isSlasherInitialized()":{"notice":"Get if the slasher is initialized."},"isWithdrawalsClaimed(uint256,address)":{"notice":"Get if the withdrawals are claimed for a particular account at a given epoch."},"migrate(uint64,bytes)":{"notice":"Migrate this entity to a particular newer version using a given data."},"nextEpochStart()":{"notice":"Get a start of the next vault epoch."},"onSlash(uint256,uint48)":{"notice":"Slash callback for burning collateral."},"previousEpochStart()":{"notice":"Get a start of the previous vault epoch."},"redeem(address,uint256)":{"notice":"Redeem collateral from the vault (it will be claimable after the next epoch)."},"setDepositLimit(uint256)":{"notice":"Set a deposit limit."},"setDepositWhitelist(bool)":{"notice":"Enable/disable deposit whitelist."},"setDepositorWhitelistStatus(address,bool)":{"notice":"Set a depositor whitelist status."},"setIsDepositLimit(bool)":{"notice":"Enable/disable deposit limit."},"slashableBalanceOf(address)":{"notice":"Get a total amount of the collateral that can be slashed for a given account."},"slasher()":{"notice":"Get a slasher (it provides networks a slashing mechanism)."},"staticDelegateCall(address,bytes)":{"notice":"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data)."},"totalStake()":{"notice":"Get a total amount of the collateral that can be slashed."},"version()":{"notice":"Get the entity's version."},"withdraw(address,uint256)":{"notice":"Withdraw collateral from the vault (it will be claimable after the next epoch)."},"withdrawalShares(uint256)":{"notice":"Get a total number of withdrawal shares at a given epoch."},"withdrawalSharesOf(uint256,address)":{"notice":"Get a number of withdrawal shares for a particular account at a given epoch (zero if claimed)."},"withdrawals(uint256)":{"notice":"Get a total amount of the withdrawals at a given epoch."},"withdrawalsOf(uint256,address)":{"notice":"Get withdrawals for a particular account at a given epoch (zero if claimed)."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/vault/VaultTokenized.sol":"VaultTokenized"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol":{"keccak256":"0xbb96dc9c468170c3224126e953de917e06332ec5909a3d85e6e5bb0df10c5139","urls":["bzz-raw://d14e6486e127e7e31c2ffccfc212c7ebaaecf8fb05677575128b449ee113def2","dweb:/ipfs/QmabvyfStwBcum8mGfkmxcTV45rjyHmzHGCxfxyhmu48Yx"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol":{"keccak256":"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866","urls":["bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf","dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab","urls":["bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89","dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606","urls":["bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1","dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b","urls":["bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b","dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330","urls":["bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf","dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310","urls":["bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862","dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol":{"keccak256":"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f","urls":["bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44","dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc","urls":["bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6","dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza"],"license":"MIT"},"src/contracts/common/MigratableEntity.sol":{"keccak256":"0x303ad40a3de8fa808cc30a6fbd5998633f6a89b982e6db1fa981e0566ab445e7","urls":["bzz-raw://fa8fb92995ead02798e013190b87b84b44cc68668262f045c9b0b4783940e2bf","dweb:/ipfs/QmV1uKGVLKwWisc714R8fCt71gXUQJpaKvdc6LQ8WtvMpL"],"license":"BUSL-1.1"},"src/contracts/common/StaticDelegateCallable.sol":{"keccak256":"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90","urls":["bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764","dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD"],"license":"BUSL-1.1"},"src/contracts/libraries/Checkpoints.sol":{"keccak256":"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c","urls":["bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609","dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE"],"license":"MIT"},"src/contracts/libraries/ERC4626Math.sol":{"keccak256":"0x8441160513c1cbeb1c3b9ee077bcc7e7ce20006b52a77c8dd39ff0ef89699939","urls":["bzz-raw://943f8cc3e26ddf649f465f40c909819f5c864717c4baa339e9e403b9374a4653","dweb:/ipfs/QmXPxi1sUDsrGprZdUgCzoPEosaZMv9ZhygWQ1vAi1phAB"],"license":"MIT"},"src/contracts/vault/Vault.sol":{"keccak256":"0x7ee6dbf060c45d6eba95315f4ac0b3b467dd9c4999b84c31d6f66d4d8b53a116","urls":["bzz-raw://301948b8ea522db292aa2722ba42def3911dae95f0b376f7023c3fef470f8676","dweb:/ipfs/QmSDbP2HdzhDAzstr8Zz5isEAcSkma8ABc5UwPsoazaumZ"],"license":"BUSL-1.1"},"src/contracts/vault/VaultStorage.sol":{"keccak256":"0x57db25b127d77ea3472de53e3a4af3354399655b9268638b99ca5925fa364a56","urls":["bzz-raw://aa763d9a6ec508ae3abfb8228b72b9fd9525279e5135d4962e79ff059feb1173","dweb:/ipfs/QmcbDR6E9wyEpu6V2FkEC4hnWy47zXA9LSKJde6zSGd33Q"],"license":"BUSL-1.1"},"src/contracts/vault/VaultTokenized.sol":{"keccak256":"0xa9475a46a3e32b35e48bc37fdaf08e1a586fb7c9667ac5e014b716a08873c46d","urls":["bzz-raw://0a292a4f35bc43ce7174b36e2d016bc44d6737e94b41e48cb5dd1bb1e4821e48","dweb:/ipfs/QmduHZe2REPnygiWvQRV82yD4tYHdwX33FkYRFm1UZoXBA"],"license":"BUSL-1.1"},"src/interfaces/common/IEntity.sol":{"keccak256":"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21","urls":["bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b","dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv"],"license":"MIT"},"src/interfaces/common/IMigratableEntity.sol":{"keccak256":"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4","urls":["bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c","dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds"],"license":"MIT"},"src/interfaces/common/IRegistry.sol":{"keccak256":"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb","urls":["bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014","dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK"],"license":"MIT"},"src/interfaces/common/IStaticDelegateCallable.sol":{"keccak256":"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5","urls":["bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516","dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi"],"license":"MIT"},"src/interfaces/delegator/IBaseDelegator.sol":{"keccak256":"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee","urls":["bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2","dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8"],"license":"MIT"},"src/interfaces/slasher/IBaseSlasher.sol":{"keccak256":"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404","urls":["bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf","dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx"],"license":"MIT"},"src/interfaces/vault/IVault.sol":{"keccak256":"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235","urls":["bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9","dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R"],"license":"MIT"},"src/interfaces/vault/IVaultStorage.sol":{"keccak256":"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22","urls":["bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e","dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6"],"license":"MIT"},"src/interfaces/vault/IVaultTokenized.sol":{"keccak256":"0xb723560b49c30b38130634388a0550c9e07596f92a58edbfa2415e690024e0c4","urls":["bzz-raw://dc9dde973a0bbf0adbc305462a796fa3b2e5be9daa1984e4f3e4f48e3c254f39","dweb:/ipfs/QmQydZsr7ESw7ZSe9mqaxZ3dycvru8ZFVwrL9pmVnpyd7c"],"license":"MIT"}},"version":1},"id":104} \ No newline at end of file diff --git a/out/VaultTokenizedImplementation.sol/VaultTokenizedImplementation.json b/out/VaultTokenizedImplementation.sol/VaultTokenizedImplementation.json new file mode 100644 index 00000000..39b9afa8 --- /dev/null +++ b/out/VaultTokenizedImplementation.sol/VaultTokenizedImplementation.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[{"name":"baseImplementation","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"fallback","stateMutability":"payable"},{"type":"function","name":"DEPOSITOR_WHITELIST_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"DEPOSIT_LIMIT_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"DEPOSIT_WHITELIST_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"EPOCH_DURATION_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"FLASH_FEE_BASE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"FLASH_FEE_RATE_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"FLASH_FEE_RECEIVER_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"FLASH_LOAN_ENABLED_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"IS_DEPOSIT_LIMIT_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"RETURN_VALUE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"_VaultTokenized_init","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"burner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"collateral","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"delegator","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"deposit","inputs":[{"name":"onBehalfOf","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"depositedAmount","type":"uint256","internalType":"uint256"},{"name":"mintedShares","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"depositLimit","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"depositWhitelist","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"flashFeeRate","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"flashFeeReceiver","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"flashLoanEnabled","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isDelegatorInitialized","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isDepositLimit","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isDepositorWhitelisted","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isSlasherInitialized","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isWithdrawalsClaimed","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"redeem","inputs":[{"name":"claimer","type":"address","internalType":"address"},{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"withdrawnAssets","type":"uint256","internalType":"uint256"},{"name":"mintedShares","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"slasher","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"staticDelegateCall","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"withdraw","inputs":[{"name":"claimer","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"burnedShares","type":"uint256","internalType":"uint256"},{"name":"mintedShares","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawalShares","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"withdrawalSharesOf","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"withdrawals","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"CheckpointUnorderedInsertion","inputs":[]},{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x60a034606d57601f611bab38819003918201601f19168301916001600160401b03831184841017607157808492602094604052833981010312606d57516001600160a01b0381168103606d57608052604051611b259081610086823960805181818161061c015261150b0152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe608060405260043610611501575f3560e01c806306fdde031461029b578063095ea7b3146102965780631415519b1461029157806318160ddd1461028c5780631b66c9e1146102875780631e9a69501461028257806323b872dd1461027d57806327810b6e14610278578063313ce5671461027357806331d9736c1461026e57806347e7ef241461026957806348d3b7751461026457806350861adc1461025f5780635cc070761461025a57806361819dd814610255578063653b04cd1461025057806365d61c6c1461024b5780636ec1e3f81461024657806370a0823114610241578063794b15b71461023c5780637bd00ae81461023757806395d89b41146102325780639f86fd851461022d578063a1b1220214610228578063a21a1df914610223578063a3b541721461021e578063a5d0322314610219578063a66b3a7314610214578063a8b24f9a1461020f578063a9059cbb1461020a578063afba70ad14610205578063b134427114610200578063bc46f722146101fb578063ce9b7930146101f6578063d8dfeb45146101f1578063db388715146101ec578063dd62ed3e146101e7578063e945da7f146101e2578063ecc98f05146101dd578063ecf70858146101d85763f3fef3a303611501576110a1565b611084565b611066565b611049565b61101a565b610fe0565b610fb5565b610f8d565b610f53565b610f2b565b610f01565b610ed0565b610ea8565b610e6e565b610e20565b610dd7565b610d9d565b610d79565b610cf6565b610c44565b610abb565b610a50565b6109e1565b6109bc565b610997565b61095d565b610923565b6108f9565b6108d4565b6108b3565b610824565b6107ea565b610752565b61072a565b61067c565b6105b6565b61057c565b6104f0565b6104b6565b6103f8565b6102d8565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b9060206102d59281815201906102a0565b90565b346103c8575f3660031901126103c8576040515f5f80516020611a9083398151915280549061030682611126565b8085529160209160019182811690811561039b5750600114610343575b61033f8661033381880382611172565b604051918291826102c4565b0390f35b5f90815293507f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab05b838510610388575050505081016020016103338261033f5f610323565b805486860184015293820193810161036b565b905086955061033f9693506020925061033394915060ff191682840152151560051b82010192935f610323565b5f80fd5b600435906001600160a01b03821682036103c857565b602435906001600160a01b03821682036103c857565b346103c85760403660031901126103c8576104116103cc565b602435331561049e576001600160a01b0382169182156104865761044e829161043933610a18565b9060018060a01b03165f5260205260405f2090565b556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b604051634a1406b160e11b81525f6004820152602490fd5b60405163e602df0560e01b81525f6004820152602490fd5b346103c8575f3660031901126103c85760206040517fc6aaadd7371d5e8f9ed6849dd66a66573a3ba37167d03f4352c9ba5693678fac8152f35b346103c8575f3660031901126103c857600a548061053e57505f5b6001600160d01b0381161561053557610525602091611274565b90549060031b1c5b604051908152f35b5060205f61052d565b805f1981011161057757600a5f527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a7015460301c61050b565b61153d565b346103c8575f3660031901126103c85760206040517f9c56d972d63cbb4195b3c1484691dfc220fa96a4c47e7b6613bd82a022029e068152f35b346103c85760403660031901126103c8575f61061a61064f6106406105d96103cc565b6040516301e9a69560e41b60208201526001600160a01b0390911660248281019190915235604482018190529381606481015b03601f198101835282611172565b7f0000000000000000000000000000000000000000000000000000000000000000611325565b60208082518301019101611194565b9290916040519081525f80516020611ad083398151915260203392a3604080519182526020820192909252f35b346103c85760603660031901126103c8576106956103cc565b61069d6103e2565b604435906106ae3361043985610a18565b5492600184016106cf575b6106c39350611342565b60405160018152602090f35b828410610704576001600160a01b0381161561049e57331561048657826106c394036106fe3361043984610a18565b556106b9565b604051637dc7a0d960e11b81523360048201526024810185905260448101849052606490fd5b346103c8575f3660031901126103c8576001546040516001600160a01b039091168152602090f35b346103c8575f3660031901126103c8575f5460405163313ce56760e01b8152906020908290600490829060101c6001600160a01b03165afa80156107df5761033f915f916107b0575b5060405160ff90911681529081906020820190565b6107d2915060203d6020116107d8575b6107ca8183611172565b8101906111aa565b5f61079b565b503d6107c0565b6040513d5f823e3d90fd5b346103c8575f3660031901126103c85760206040517f5295aaaa27fdd659293eafacbfafbc634c1b96298957e87de5f59308cdbfdad18152f35b346103c85760403660031901126103c85761083d6103cc565b6040516311f9fbc960e21b60208201526001600160a01b03821660248083019190915235604482015261087b906106409061061a816064810161060c565b60405181815290926001600160a01b0316905f905f80516020611ad083398151915290602090a3604080519182526020820192909252f35b346103c8575f3660031901126103c857602060ff5f54166040519015158152f35b346103c8575f3660031901126103c857602060ff60025460a01c166040519015158152f35b346103c85760203660031901126103c8576004355f526006602052602060405f2054604051908152f35b346103c8575f3660031901126103c85760206040517f591f6a0113ada8aff67efadec8ae2fa585cb4ebf4e1f8fc1205ffbeff98d00ec8152f35b346103c8575f3660031901126103c85760206040517f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd98152f35b346103c8575f3660031901126103c857602060ff60165460a01c166040519015158152f35b346103c8575f3660031901126103c857602060ff60035460a01c166040519015158152f35b346103c85760203660031901126103c8576001600160a01b03610a026103cc565b165f52600e602052602061052d60405f206112d2565b6001600160a01b03165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020526040902090565b346103c85760203660031901126103c8576001600160a01b03610a716103cc565b165f526005602052602060ff60405f2054166040519015158152f35b9181601f840112156103c85782359167ffffffffffffffff83116103c857602083818601950101116103c857565b346103c8576020806003193601126103c85767ffffffffffffffff906004358281116103c857610aef903690600401610a8d565b8101906040818303126103c85780358481116103c85782610b119183016111ff565b9160208201358581116103c857610b2892016111ff565b91610b316115c2565b610b396115c2565b8151938411610c3f575f80516020611a9083398151915291610b6485610b5f8554611126565b611603565b602091601f8611600114610bac57509380610b9892610b9f965f92610ba1575b50508160011b915f199060031b1c19161790565b90556116f5565b005b015190505f80610b84565b5f80516020611a908339815191525f529190601f1986167f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0935f905b828210610c27575050916001939187610b9f989410610c0f575b505050811b0190556116f5565b01515f1960f88460031b161c191690555f8080610c02565b80600186978294978701518155019601940190610be8565b61115e565b346103c8575f3660031901126103c8576040515f5f80516020611ab0833981519152805490610c7282611126565b8085529160209160019182811690811561039b5750600114610c9e5761033f8661033381880382611172565b5f90815293507f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa5b838510610ce3575050505081016020016103338261033f5f610323565b8054868601840152938201938101610cc6565b346103c85760403660031901126103c857610d0f6103cc565b60243567ffffffffffffffff81116103c8575f91610d3283923690600401610a8d565b90816040519283928337810184815203915af4610d71610d50611245565b9161060c6040519384921515602084015260408084015260608301906102a0565b805190602001fd5b346103c8575f3660031901126103c857602060ff5f5460081c166040519015158152f35b346103c8575f3660031901126103c85760206040517f4a634bc14d77baf979756509ef4298c6f6318af357828612545267ee2eb792338152f35b346103c85760403660031901126103c8576020610e17610df56103e2565b6004355f526008835260405f209060018060a01b03165f5260205260405f2090565b54604051908152f35b346103c85760403660031901126103c857602060ff610e62610e406103e2565b6004355f526009845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b346103c8575f3660031901126103c85760206040517fc9feed28b4b1a1d11c6791da7bb7f6b8d33e831a4992a9383dead1ec2c82c35a8152f35b346103c8575f3660031901126103c8576016546040516001600160a01b039091168152602090f35b346103c85760403660031901126103c857610ef6610eec6103cc565b6024359033611342565b602060405160018152f35b346103c85760203660031901126103c8576004355f526007602052602060405f2054604051908152f35b346103c8575f3660031901126103c8576003546040516001600160a01b039091168152602090f35b346103c8575f3660031901126103c85760206040517fc9078c78bcaac2be1c77c160c539a489be2b72939771b1a6302fed3e2150c7458152f35b346103c8575f3660031901126103c8576002546040516001600160a01b039091168152602090f35b346103c8575f3660031901126103c8575f5460405160109190911c6001600160a01b03168152602090f35b346103c8575f3660031901126103c85760206040517fbae4ee3de6c709ff9a002e774c5b78cb381560b219213c88ae0f1e207c03c0238152f35b346103c85760403660031901126103c8576020610e176110386103cc565b6104396110436103e2565b91610a18565b346103c8575f3660031901126103c8576020601554604051908152f35b346103c8575f3660031901126103c8576020604051633b9aca008152f35b346103c8575f3660031901126103c8576020600454604051908152f35b346103c85760403660031901126103c8576110fa61064061060c61061a6110c66103cc565b60405163f3fef3a360e01b60208201526001600160a01b039091166024808301919091523560448201529182906064820190565b905f6040518281525f80516020611ad083398151915260203392a3604080519182526020820192909252f35b90600182811c92168015611154575b602083101461114057565b634e487b7160e01b5f52602260045260245ffd5b91607f1691611135565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff821117610c3f57604052565b91908260409103126103c8576020825192015190565b908160209103126103c8575160ff811681036103c85790565b604051906040820182811067ffffffffffffffff821117610c3f57604052565b67ffffffffffffffff8111610c3f57601f01601f191660200190565b81601f820112156103c857803590611216826111e3565b926112246040519485611172565b828452602083830101116103c857815f926020809301838601378301015290565b3d1561126f573d90611256826111e3565b916112646040519384611172565b82523d5f602084013e565b606090565b600b548110156112a957600b5f527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db901905f90565b634e487b7160e01b5f52603260045260245ffd5b80548210156112a9575f5260205f2001905f90565b80548061130757505f5b6001600160d01b038116156113015760016112f792016112bd565b90549060031b1c90565b50505f90565b5f1990808281011161057757825f5260205f2001015460301c6112dc565b5f806102d593602081519101845af461133c611245565b9161155f565b916001600160a01b03808416929083156114e95781169384156114d1577f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0060028154146114bf57600290556001600160a01b0381165f908152600e602052604090206113b2906112d2565b6112d2565b9083821061148d5761145f926114015f80516020611ad083398151915295936113ee61144d9460018060a01b03165f52600e60205260405f2090565b90856113f9426118ec565b91039161182a565b50506001600160a01b0381165f908152600e6020526040902090836114466113ad61142b426118ec565b6001600160a01b039094165f908152600e6020526040902090565b019161182a565b50506040519081529081906020820190565b0390a361148b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b565b60405163391434e360e21b81526001600160a01b03919091166004820152602481019190915260448101839052606490fd5b604051633ee5aeb560e01b8152600490fd5b60405163ec442f0560e01b81525f6004820152602490fd5b604051634b637e8f60e11b81525f6004820152602490fd5b365f80375f8036817f00000000000000000000000000000000000000000000000000000000000000005af43d5f803e15611539573d5ff35b3d5ffd5b634e487b7160e01b5f52601160045260245ffd5b5f1981019190821161057757565b90611586575080511561157457805190602001fd5b60405163d6bda27560e01b8152600490fd5b815115806115b9575b611597575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b1561158f565b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c16156115f157565b604051631afcd79f60e31b8152600490fd5b601f811161160f575050565b5f80516020611a908339815191525f527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0906020601f840160051c83019310611672575b601f0160051c01905b818110611667575050565b5f815560010161165c565b9091508190611653565b601f8111611688575050565b5f80516020611ab08339815191525f527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa906020601f840160051c830193106116eb575b601f0160051c01905b8181106116e0575050565b5f81556001016116d5565b90915081906116cc565b90815167ffffffffffffffff8111610c3f575f80516020611ab083398151915290611729816117248454611126565b61167c565b602080601f831160011461175e5750819061175a9394955f92610ba15750508160011b915f199060031b1c19161790565b9055565b90601f1983169561179c5f80516020611ab08339815191525f527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa90565b925f905b8882106117d7575050836001959697106117bf575b505050811b019055565b01515f1960f88460031b161c191690555f80806117b5565b806001859682949686015181550195019301906117a0565b90815491600160401b831015610c3f578261181291600161148b950181556112bd565b90919082549060031b91821b915f19901b1916179055565b909291926001820190815480156118bc575b50846118478461191e565b50949092845493611857836112d2565b96816118a7575b5015611884575050505f198101908111610577576118128591611880936112bd565b9190565b6118809492936118a0926001600160d01b0390911691906119b2565b50506117ef565b65ffffffffffff83811691161490505f61185e565b600160401b811015610c3f578060016118d892018455836112bd565b8154905f199060031b1b191690555f61183c565b65ffffffffffff908181116118ff571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b80548061192f5750505f905f905f90565b5f19918183810111610577575f5260205f2001015460019165ffffffffffff82169160301c90565b8054600160401b811015610c3f57611974916001820181556112bd565b61199f57815160209092015160301b65ffffffffffff191665ffffffffffff92909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b80549293928015611a65576119c96119d491611551565b825f5260205f200190565b9182549265ffffffffffff91828516928116808411611a5357879303611a1a5750611a1392509065ffffffffffff82549181199060301b169116179055565b60301c9190565b915050611a4e91611a3a611a2c6111c3565b65ffffffffffff9093168352565b6001600160d01b0386166020830152611957565b611a13565b604051632520601d60e01b8152600490fd5b5090611a8a91611a76611a2c6111c3565b6001600160d01b0385166020830152611957565b5f919056fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0352c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace04ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220d808e78d8c8c27c4810e3d583c729eb50e6f711f398fd77176daab2aaed2bca064736f6c63430008190033","sourceMap":"978:3961:110:-:0;;;;;;;;;;;;;-1:-1:-1;;978:3961:110;;;;-1:-1:-1;;;;;978:3961:110;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;978:3961:110;;;;;;1324:40;;978:3961;;;;;;;;1324:40;978:3961;;;;;;;;;;;;-1:-1:-1;978:3961:110;;;;;;-1:-1:-1;978:3961:110;;;;;-1:-1:-1;978:3961:110","linkReferences":{}},"deployedBytecode":{"object":"0x608060405260043610611501575f3560e01c806306fdde031461029b578063095ea7b3146102965780631415519b1461029157806318160ddd1461028c5780631b66c9e1146102875780631e9a69501461028257806323b872dd1461027d57806327810b6e14610278578063313ce5671461027357806331d9736c1461026e57806347e7ef241461026957806348d3b7751461026457806350861adc1461025f5780635cc070761461025a57806361819dd814610255578063653b04cd1461025057806365d61c6c1461024b5780636ec1e3f81461024657806370a0823114610241578063794b15b71461023c5780637bd00ae81461023757806395d89b41146102325780639f86fd851461022d578063a1b1220214610228578063a21a1df914610223578063a3b541721461021e578063a5d0322314610219578063a66b3a7314610214578063a8b24f9a1461020f578063a9059cbb1461020a578063afba70ad14610205578063b134427114610200578063bc46f722146101fb578063ce9b7930146101f6578063d8dfeb45146101f1578063db388715146101ec578063dd62ed3e146101e7578063e945da7f146101e2578063ecc98f05146101dd578063ecf70858146101d85763f3fef3a303611501576110a1565b611084565b611066565b611049565b61101a565b610fe0565b610fb5565b610f8d565b610f53565b610f2b565b610f01565b610ed0565b610ea8565b610e6e565b610e20565b610dd7565b610d9d565b610d79565b610cf6565b610c44565b610abb565b610a50565b6109e1565b6109bc565b610997565b61095d565b610923565b6108f9565b6108d4565b6108b3565b610824565b6107ea565b610752565b61072a565b61067c565b6105b6565b61057c565b6104f0565b6104b6565b6103f8565b6102d8565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b9060206102d59281815201906102a0565b90565b346103c8575f3660031901126103c8576040515f5f80516020611a9083398151915280549061030682611126565b8085529160209160019182811690811561039b5750600114610343575b61033f8661033381880382611172565b604051918291826102c4565b0390f35b5f90815293507f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab05b838510610388575050505081016020016103338261033f5f610323565b805486860184015293820193810161036b565b905086955061033f9693506020925061033394915060ff191682840152151560051b82010192935f610323565b5f80fd5b600435906001600160a01b03821682036103c857565b602435906001600160a01b03821682036103c857565b346103c85760403660031901126103c8576104116103cc565b602435331561049e576001600160a01b0382169182156104865761044e829161043933610a18565b9060018060a01b03165f5260205260405f2090565b556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b604051634a1406b160e11b81525f6004820152602490fd5b60405163e602df0560e01b81525f6004820152602490fd5b346103c8575f3660031901126103c85760206040517fc6aaadd7371d5e8f9ed6849dd66a66573a3ba37167d03f4352c9ba5693678fac8152f35b346103c8575f3660031901126103c857600a548061053e57505f5b6001600160d01b0381161561053557610525602091611274565b90549060031b1c5b604051908152f35b5060205f61052d565b805f1981011161057757600a5f527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a7015460301c61050b565b61153d565b346103c8575f3660031901126103c85760206040517f9c56d972d63cbb4195b3c1484691dfc220fa96a4c47e7b6613bd82a022029e068152f35b346103c85760403660031901126103c8575f61061a61064f6106406105d96103cc565b6040516301e9a69560e41b60208201526001600160a01b0390911660248281019190915235604482018190529381606481015b03601f198101835282611172565b7f0000000000000000000000000000000000000000000000000000000000000000611325565b60208082518301019101611194565b9290916040519081525f80516020611ad083398151915260203392a3604080519182526020820192909252f35b346103c85760603660031901126103c8576106956103cc565b61069d6103e2565b604435906106ae3361043985610a18565b5492600184016106cf575b6106c39350611342565b60405160018152602090f35b828410610704576001600160a01b0381161561049e57331561048657826106c394036106fe3361043984610a18565b556106b9565b604051637dc7a0d960e11b81523360048201526024810185905260448101849052606490fd5b346103c8575f3660031901126103c8576001546040516001600160a01b039091168152602090f35b346103c8575f3660031901126103c8575f5460405163313ce56760e01b8152906020908290600490829060101c6001600160a01b03165afa80156107df5761033f915f916107b0575b5060405160ff90911681529081906020820190565b6107d2915060203d6020116107d8575b6107ca8183611172565b8101906111aa565b5f61079b565b503d6107c0565b6040513d5f823e3d90fd5b346103c8575f3660031901126103c85760206040517f5295aaaa27fdd659293eafacbfafbc634c1b96298957e87de5f59308cdbfdad18152f35b346103c85760403660031901126103c85761083d6103cc565b6040516311f9fbc960e21b60208201526001600160a01b03821660248083019190915235604482015261087b906106409061061a816064810161060c565b60405181815290926001600160a01b0316905f905f80516020611ad083398151915290602090a3604080519182526020820192909252f35b346103c8575f3660031901126103c857602060ff5f54166040519015158152f35b346103c8575f3660031901126103c857602060ff60025460a01c166040519015158152f35b346103c85760203660031901126103c8576004355f526006602052602060405f2054604051908152f35b346103c8575f3660031901126103c85760206040517f591f6a0113ada8aff67efadec8ae2fa585cb4ebf4e1f8fc1205ffbeff98d00ec8152f35b346103c8575f3660031901126103c85760206040517f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd98152f35b346103c8575f3660031901126103c857602060ff60165460a01c166040519015158152f35b346103c8575f3660031901126103c857602060ff60035460a01c166040519015158152f35b346103c85760203660031901126103c8576001600160a01b03610a026103cc565b165f52600e602052602061052d60405f206112d2565b6001600160a01b03165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020526040902090565b346103c85760203660031901126103c8576001600160a01b03610a716103cc565b165f526005602052602060ff60405f2054166040519015158152f35b9181601f840112156103c85782359167ffffffffffffffff83116103c857602083818601950101116103c857565b346103c8576020806003193601126103c85767ffffffffffffffff906004358281116103c857610aef903690600401610a8d565b8101906040818303126103c85780358481116103c85782610b119183016111ff565b9160208201358581116103c857610b2892016111ff565b91610b316115c2565b610b396115c2565b8151938411610c3f575f80516020611a9083398151915291610b6485610b5f8554611126565b611603565b602091601f8611600114610bac57509380610b9892610b9f965f92610ba1575b50508160011b915f199060031b1c19161790565b90556116f5565b005b015190505f80610b84565b5f80516020611a908339815191525f529190601f1986167f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0935f905b828210610c27575050916001939187610b9f989410610c0f575b505050811b0190556116f5565b01515f1960f88460031b161c191690555f8080610c02565b80600186978294978701518155019601940190610be8565b61115e565b346103c8575f3660031901126103c8576040515f5f80516020611ab0833981519152805490610c7282611126565b8085529160209160019182811690811561039b5750600114610c9e5761033f8661033381880382611172565b5f90815293507f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa5b838510610ce3575050505081016020016103338261033f5f610323565b8054868601840152938201938101610cc6565b346103c85760403660031901126103c857610d0f6103cc565b60243567ffffffffffffffff81116103c8575f91610d3283923690600401610a8d565b90816040519283928337810184815203915af4610d71610d50611245565b9161060c6040519384921515602084015260408084015260608301906102a0565b805190602001fd5b346103c8575f3660031901126103c857602060ff5f5460081c166040519015158152f35b346103c8575f3660031901126103c85760206040517f4a634bc14d77baf979756509ef4298c6f6318af357828612545267ee2eb792338152f35b346103c85760403660031901126103c8576020610e17610df56103e2565b6004355f526008835260405f209060018060a01b03165f5260205260405f2090565b54604051908152f35b346103c85760403660031901126103c857602060ff610e62610e406103e2565b6004355f526009845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b346103c8575f3660031901126103c85760206040517fc9feed28b4b1a1d11c6791da7bb7f6b8d33e831a4992a9383dead1ec2c82c35a8152f35b346103c8575f3660031901126103c8576016546040516001600160a01b039091168152602090f35b346103c85760403660031901126103c857610ef6610eec6103cc565b6024359033611342565b602060405160018152f35b346103c85760203660031901126103c8576004355f526007602052602060405f2054604051908152f35b346103c8575f3660031901126103c8576003546040516001600160a01b039091168152602090f35b346103c8575f3660031901126103c85760206040517fc9078c78bcaac2be1c77c160c539a489be2b72939771b1a6302fed3e2150c7458152f35b346103c8575f3660031901126103c8576002546040516001600160a01b039091168152602090f35b346103c8575f3660031901126103c8575f5460405160109190911c6001600160a01b03168152602090f35b346103c8575f3660031901126103c85760206040517fbae4ee3de6c709ff9a002e774c5b78cb381560b219213c88ae0f1e207c03c0238152f35b346103c85760403660031901126103c8576020610e176110386103cc565b6104396110436103e2565b91610a18565b346103c8575f3660031901126103c8576020601554604051908152f35b346103c8575f3660031901126103c8576020604051633b9aca008152f35b346103c8575f3660031901126103c8576020600454604051908152f35b346103c85760403660031901126103c8576110fa61064061060c61061a6110c66103cc565b60405163f3fef3a360e01b60208201526001600160a01b039091166024808301919091523560448201529182906064820190565b905f6040518281525f80516020611ad083398151915260203392a3604080519182526020820192909252f35b90600182811c92168015611154575b602083101461114057565b634e487b7160e01b5f52602260045260245ffd5b91607f1691611135565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff821117610c3f57604052565b91908260409103126103c8576020825192015190565b908160209103126103c8575160ff811681036103c85790565b604051906040820182811067ffffffffffffffff821117610c3f57604052565b67ffffffffffffffff8111610c3f57601f01601f191660200190565b81601f820112156103c857803590611216826111e3565b926112246040519485611172565b828452602083830101116103c857815f926020809301838601378301015290565b3d1561126f573d90611256826111e3565b916112646040519384611172565b82523d5f602084013e565b606090565b600b548110156112a957600b5f527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db901905f90565b634e487b7160e01b5f52603260045260245ffd5b80548210156112a9575f5260205f2001905f90565b80548061130757505f5b6001600160d01b038116156113015760016112f792016112bd565b90549060031b1c90565b50505f90565b5f1990808281011161057757825f5260205f2001015460301c6112dc565b5f806102d593602081519101845af461133c611245565b9161155f565b916001600160a01b03808416929083156114e95781169384156114d1577f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0060028154146114bf57600290556001600160a01b0381165f908152600e602052604090206113b2906112d2565b6112d2565b9083821061148d5761145f926114015f80516020611ad083398151915295936113ee61144d9460018060a01b03165f52600e60205260405f2090565b90856113f9426118ec565b91039161182a565b50506001600160a01b0381165f908152600e6020526040902090836114466113ad61142b426118ec565b6001600160a01b039094165f908152600e6020526040902090565b019161182a565b50506040519081529081906020820190565b0390a361148b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b565b60405163391434e360e21b81526001600160a01b03919091166004820152602481019190915260448101839052606490fd5b604051633ee5aeb560e01b8152600490fd5b60405163ec442f0560e01b81525f6004820152602490fd5b604051634b637e8f60e11b81525f6004820152602490fd5b365f80375f8036817f00000000000000000000000000000000000000000000000000000000000000005af43d5f803e15611539573d5ff35b3d5ffd5b634e487b7160e01b5f52601160045260245ffd5b5f1981019190821161057757565b90611586575080511561157457805190602001fd5b60405163d6bda27560e01b8152600490fd5b815115806115b9575b611597575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b1561158f565b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c16156115f157565b604051631afcd79f60e31b8152600490fd5b601f811161160f575050565b5f80516020611a908339815191525f527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0906020601f840160051c83019310611672575b601f0160051c01905b818110611667575050565b5f815560010161165c565b9091508190611653565b601f8111611688575050565b5f80516020611ab08339815191525f527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa906020601f840160051c830193106116eb575b601f0160051c01905b8181106116e0575050565b5f81556001016116d5565b90915081906116cc565b90815167ffffffffffffffff8111610c3f575f80516020611ab083398151915290611729816117248454611126565b61167c565b602080601f831160011461175e5750819061175a9394955f92610ba15750508160011b915f199060031b1c19161790565b9055565b90601f1983169561179c5f80516020611ab08339815191525f527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa90565b925f905b8882106117d7575050836001959697106117bf575b505050811b019055565b01515f1960f88460031b161c191690555f80806117b5565b806001859682949686015181550195019301906117a0565b90815491600160401b831015610c3f578261181291600161148b950181556112bd565b90919082549060031b91821b915f19901b1916179055565b909291926001820190815480156118bc575b50846118478461191e565b50949092845493611857836112d2565b96816118a7575b5015611884575050505f198101908111610577576118128591611880936112bd565b9190565b6118809492936118a0926001600160d01b0390911691906119b2565b50506117ef565b65ffffffffffff83811691161490505f61185e565b600160401b811015610c3f578060016118d892018455836112bd565b8154905f199060031b1b191690555f61183c565b65ffffffffffff908181116118ff571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b80548061192f5750505f905f905f90565b5f19918183810111610577575f5260205f2001015460019165ffffffffffff82169160301c90565b8054600160401b811015610c3f57611974916001820181556112bd565b61199f57815160209092015160301b65ffffffffffff191665ffffffffffff92909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b80549293928015611a65576119c96119d491611551565b825f5260205f200190565b9182549265ffffffffffff91828516928116808411611a5357879303611a1a5750611a1392509065ffffffffffff82549181199060301b169116179055565b60301c9190565b915050611a4e91611a3a611a2c6111c3565b65ffffffffffff9093168352565b6001600160d01b0386166020830152611957565b611a13565b604051632520601d60e01b8152600490fd5b5090611a8a91611a76611a2c6111c3565b6001600160d01b0385166020830152611957565b5f919056fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0352c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace04ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220d808e78d8c8c27c4810e3d583c729eb50e6f711f398fd77176daab2aaed2bca064736f6c63430008190033","sourceMap":"978:3961:110:-:0;;;;;;2603:64:50;978:3961:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2603:64:50;978:3961:110;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;978:3961:110;;;;;;;;-1:-1:-1;;978:3961:110;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;-1:-1:-1;;978:3961:110;;;;;;;-1:-1:-1;;;;;;;;;;;978:3961:110;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;978:3961:110;;;;;;;-1:-1:-1;;;;978:3961:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;978:3961:110;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;978:3961:110;;;;;;:::o;:::-;;;;;;-1:-1:-1;;978:3961:110;;;;;;:::i;:::-;;;966:10:28;11141:19:27;11137:89;;-1:-1:-1;;;;;978:3961:110;;;11239:21:27;;11235:90;;11334:29;966:10:28;;11334:20:27;966:10:28;11334:20:27;:::i;:::-;978:3961:110;;;;;;;;;;;;;;;;11334:29:27;978:3961:110;;;;;;11415:31:27;978:3961:110;966:10:28;11415:31:27;;978:3961:110;;;10117:4:27;978:3961:110;;;11235:90:27;978:3961:110;;-1:-1:-1;;;11283:31:27;;-1:-1:-1;11283:31:27;;;978:3961:110;;;11283:31:27;11137:89;978:3961:110;;-1:-1:-1;;;11183:32:27;;11158:1;11183:32;;;978:3961:110;;;11183:32:27;978:3961:110;;;;;;-1:-1:-1;;978:3961:110;;;;;;;757:38:108;978:3961:110;;;;;;;;;-1:-1:-1;;978:3961:110;;;;1732:13;978:3961;10446:8:71;;;:63;978:3961:110;10446:63:71;-1:-1:-1;;;;;978:3961:110;;10726:7:94;978:3961:110;;10736:17:94;978:3961:110;10736:17:94;;:::i;:::-;978:3961:110;;;;;;10726:31:94;978:3961:110;;;;;;10726:31:94;;978:3961:110;;10726:31:94;;10446:63:71;978:3961:110;;;;;;;;1732:13;978:3961;14439:109:71;;;978:3961:110;;;10446:63:71;;978:3961:110;;:::i;:::-;;;;;;-1:-1:-1;;978:3961:110;;;;;;;612:37:108;978:3961:110;;;;;;;;;-1:-1:-1;;978:3961:110;;;;-1:-1:-1;3078:48:110;3013:156;3037:90;978:3961;;:::i;:::-;;;-1:-1:-1;;;978:3961:110;3078:48;;;-1:-1:-1;;;;;978:3961:110;;;;3078:48;;;978:3961;;;;;;;;;;;;;;;;3078:48;;978:3961;;3078:48;;;;;;:::i;:::-;3037:19;:90;:::i;:::-;978:3961;;;;3013:156;;;;;;:::i;:::-;978:3961;;;;;;;;-1:-1:-1;;;;;;;;;;;978:3961:110;3194:10;3185:40;;978:3961;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;978:3961:110;;;;;;:::i;:::-;;;:::i;:::-;;;966:10:28;4867:29:27;966:10:28;4867:20:27;;;:::i;:29::-;978:3961:110;;11910:37:27;;;11906:310;;978:3961:110;6198:5:27;;;;:::i;:::-;978:3961:110;;4867:13:27;978:3961:110;;;;;11906:310:27;11967:24;;;11963:130;;-1:-1:-1;;;;;978:3961:110;;11141:19:27;11137:89;;966:10:28;11239:21:27;11235:90;;978:3961:110;6198:5:27;978:3961:110;;11334:29:27;966:10:28;11334:20:27;;;:::i;:29::-;978:3961:110;11906:310:27;;11963:130;978:3961:110;;-1:-1:-1;;;12018:60:27;;966:10:28;978:3961:110;12018:60:27;;978:3961:110;;;;;;;;;;;;;;;12018:60:27;978:3961:110;;;;;;-1:-1:-1;;978:3961:110;;;;;;;;-1:-1:-1;;;;;978:3961:110;;;;;;;;;;;;;;-1:-1:-1;;978:3961:110;;;;;;;;-1:-1:-1;;;1535:37:110;;978:3961;1535:37;;978:3961;;;;;;;;-1:-1:-1;;;;;978:3961:110;1535:37;;;;;;978:3961;1535:37;978:3961;1535:37;;;978:3961;-1:-1:-1;978:3961:110;;;;;;;;;;;;;;;;1535:37;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;978:3961;;;;;;;;;;;;;;;-1:-1:-1;;978:3961:110;;;;;;;1479:40:108;978:3961:110;;;;;;;;;-1:-1:-1;;978:3961:110;;;;;;:::i;:::-;;;-1:-1:-1;;;978:3961:110;2242:52;;;-1:-1:-1;;;;;978:3961:110;;;2242:52;;;978:3961;;;;;;;;;2177:160;;2201:94;;2242:52;978:3961;;;;2242:52;978:3961;2177:160;978:3961;;;;;;;-1:-1:-1;;;;;978:3961:110;;-1:-1:-1;;;;;;;;;;;;;2353:46:110;978:3961;;2353:46;978:3961;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;978:3961:110;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;978:3961:110;;;;;;2297:34:108;978:3961:110;;;;;;;;;;;;;;;;;;-1:-1:-1;;978:3961:110;;;;;;-1:-1:-1;978:3961:110;2760:59:108;978:3961:110;;;;-1:-1:-1;978:3961:110;;;;;;;;;;;;;;-1:-1:-1;;978:3961:110;;;;;;;1041:36:108;978:3961:110;;;;;;;;;-1:-1:-1;;978:3961:110;;;;;;;1714:45:108;978:3961:110;;;;;;;;;-1:-1:-1;;978:3961:110;;;;;;4070:28:108;978:3961:110;;;;;;;;;;;;;;;;;;-1:-1:-1;;978:3961:110;;;;;;2465:32:108;978:3961:110;;;;;;;;;;;;;;;;;;-1:-1:-1;;978:3961:110;;;;-1:-1:-1;;;;;978:3961:110;;:::i;:::-;;-1:-1:-1;978:3961:110;1941:15;978:3961;;;1941:33;978:3961;-1:-1:-1;978:3961:110;1941:33;:::i;978:3961::-;-1:-1:-1;;;;;978:3961:110;;;;;4867:13:27;978:3961:110;;;;;;:::o;:::-;;;;;;-1:-1:-1;;978:3961:110;;;;-1:-1:-1;;;;;978:3961:110;;:::i;:::-;;-1:-1:-1;978:3961:110;2636:68:108;978:3961:110;;;;;-1:-1:-1;978:3961:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4859:34;;978:3961;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;6893:76:26;;;:::i;:::-;;;:::i;:::-;978:3961:110;;;;;;;-1:-1:-1;;;;;;;;;;;978:3961:110;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;978:3961:110;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;978:3961:110;;;;;-1:-1:-1;;;;;;;;;;;978:3961:110;;;;-1:-1:-1;;978:3961:110;;;;-1:-1:-1;978:3961:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;2600:7:27;978:3961:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;978:3961:110;;;;;;;-1:-1:-1;;;;;;;;;;;978:3961:110;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;978:3961:110;;;;;;;-1:-1:-1;;;;978:3961:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;978:3961:110;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;978:3961:110;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;416:25:86;;;;477:31;416:25;;:::i;:::-;978:3961:110;;;;;;;;;;477:31:86;;978:3961:110;;;;;;;;;;;:::i;477:31:86:-;518:79;;;978:3961:110;518:79:86;;978:3961:110;;;;;;-1:-1:-1;;978:3961:110;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;978:3961:110;;;;;;;900:35:108;978:3961:110;;;;;;;;;-1:-1:-1;;978:3961:110;;;;;2995:94:108;978:3961:110;;:::i;:::-;;;-1:-1:-1;978:3961:110;2995:94:108;978:3961:110;;;-1:-1:-1;978:3961:110;;;;;;;;;;;;;;;;;2995:94:108;978:3961:110;;;;;;;;;;;;;-1:-1:-1;;978:3961:110;;;;;;3145:92:108;978:3961:110;;:::i;:::-;;;-1:-1:-1;978:3961:110;3145:92:108;978:3961:110;;;-1:-1:-1;978:3961:110;;;;;;;;;;;;;;;;;3145:92:108;978:3961:110;;;;;;;;;;;;;;;;-1:-1:-1;;978:3961:110;;;;;;;1187:40:108;978:3961:110;;;;;;;;;-1:-1:-1;;978:3961:110;;;;3983:31:108;978:3961:110;;;-1:-1:-1;;;;;978:3961:110;;;;;;;;;;;;;;-1:-1:-1;;978:3961:110;;;;4616:5:27;978:3961:110;;:::i;:::-;;;966:10:28;;4616:5:27;:::i;:::-;978:3961:110;;;4639:4:27;978:3961:110;;;;;;;;;-1:-1:-1;;978:3961:110;;;;;;-1:-1:-1;978:3961:110;2875:64:108;978:3961:110;;;;-1:-1:-1;978:3961:110;;;;;;;;;;;;;;-1:-1:-1;;978:3961:110;;;;2387:22:108;978:3961:110;;;-1:-1:-1;;;;;978:3961:110;;;;;;;;;;;;;;-1:-1:-1;;978:3961:110;;;;;;;1333:36:108;978:3961:110;;;;;;;;;-1:-1:-1;;978:3961:110;;;;2217:24:108;978:3961:110;;;-1:-1:-1;;;;;978:3961:110;;;;;;;;;;;;;;-1:-1:-1;;978:3961:110;;;;;;;;;;;;;-1:-1:-1;;;;;978:3961:110;;;;;;;;;;;;-1:-1:-1;;978:3961:110;;;;;;;466:39:108;978:3961:110;;;;;;;;;-1:-1:-1;;978:3961:110;;;;;4867:29:27;978:3961:110;;:::i;:::-;4867:20:27;978:3961:110;;:::i;:::-;4867:20:27;;:::i;978:3961:110:-;;;;;;-1:-1:-1;;978:3961:110;;;;;3900:27:108;978:3961:110;;;;;;;;;;;;;-1:-1:-1;;978:3961:110;;;;;;;1616:3:108;978:3961:110;;;;;;;;;-1:-1:-1;;978:3961:110;;;;;;;;;;;;;;;;;;;-1:-1:-1;;978:3961:110;;;;2594:158;2618:92;2659:50;;978:3961;;:::i;:::-;;;-1:-1:-1;;;978:3961:110;2659:50;;;-1:-1:-1;;;;;978:3961:110;;;;2659:50;;;978:3961;;;;;;;;;;;;;;;;;2594:158;978:3961;-1:-1:-1;978:3961:110;;;;;-1:-1:-1;;;;;;;;;;;978:3961:110;2777:10;2768:46;;978:3961;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;978:3961:110;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;978:3961:110;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;978:3961:110;;;;:::o;:::-;;;:::o;:::-;10736:12:94;978:3961:110;;;;;;10736:12:94;-1:-1:-1;978:3961:110;;;;-1:-1:-1;978:3961:110;:::o;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;978:3961:110;;-1:-1:-1;978:3961:110;;;-1:-1:-1;978:3961:110;:::o;10580:184:94:-;978:3961:110;;10446:8:71;;;:63;-1:-1:-1;10446:63:71;-1:-1:-1;;;;;978:3961:110;;10726:7:94;978:3961:110;;10736:12:94;:17;:12;;:17;:::i;:::-;978:3961:110;;;;;;10580:184:94;:::o;10726:31::-;;;-1:-1:-1;10580:184:94;:::o;10446:63:71:-;978:3961:110;;;;;;;;;;14439:109:71;-1:-1:-1;14439:109:71;;-1:-1:-1;14439:109:71;;;978:3961:110;;;10446:63:71;;3900:253:56;4049:25;3900:253;4091:55;3900:253;4049:25;;;;;;;;;;:::i;:::-;4091:55;;:::i;6605:300:27:-;;-1:-1:-1;;;;;978:3961:110;;;;;6688:18:27;;6684:86;;978:3961:110;;6783:16:27;;;6779:86;;2499:73:30;1991:1;978:3961:110;;3670:20:30;3666:88;;1991:1;978:3961:110;;-1:-1:-1;;;;;978:3961:110;;;;;;1941:15;978:3961;;;;;1941:33;;;:::i;:24::-;:33;:::i;:::-;3682:19;;;;3678:115;;4534:25;3913:21;:65;-1:-1:-1;;;;;;;;;;;3913:21:110;;;4429:65;3913:21;978:3961;;;;;;;;1941:15;978:3961;;;;;;;3913:21;837:15:73;;819:34;837:15;819:34;:::i;:::-;978:3961:110;;3913:65;;:::i;:::-;-1:-1:-1;;;;;;;978:3961:110;;;;;;1941:15;978:3961;;;;;837:15:73;;1941:33:110;:24;819:34:73;837:15;819:34;:::i;:::-;-1:-1:-1;;;;;978:3961:110;;;;;;;1941:15;978:3961;;;;;;;1941:33;978:3961;4429:65;;:::i;:::-;-1:-1:-1;;978:3961:110;;;;;;;;;;;;;4534:25;;;;3426:1:30;1949;2499:73;978:3961:110;3860:283:30;3426:1;6605:300:27:o;3678:115:110:-;978:3961;;-1:-1:-1;;;3728:50:110;;-1:-1:-1;;;;;978:3961:110;;;;3728:50;;;978:3961;;;;;;;;;;;;;;;;12018:60:27;3666:88:30;978:3961:110;;-1:-1:-1;;;3713:30:30;;;;;6779:86:27;978:3961:110;;-1:-1:-1;;;6822:32:27;;6704:1;6822:32;;;978:3961:110;;;6822:32:27;6684:86;978:3961:110;;-1:-1:-1;;;6729:30:27;;6704:1;6729:30;;;978:3961:110;;;6729:30:27;2323:83:50;1019:819;;;;;;;4698:19:110;;1019:819:50;;;;;;;;;;;;;;;;978:3961:110;;;;;;;;;;;;;-1:-1:-1;;978:3961:110;;;;;;;;:::o;4421:582:56:-;;4593:8;;-1:-1:-1;978:3961:110;;5674:21:56;:17;;5799:158;;;;;;5670:354;978:3961:110;;-1:-1:-1;;;5994:19:56;;;;;4589:408;978:3961:110;;4841:22:56;:49;;;4589:408;4837:119;;4969:17;;:::o;4837:119::-;978:3961:110;;-1:-1:-1;;;4917:24:56;;-1:-1:-1;;;;;978:3961:110;;;4917:24:56;;;978:3961:110;;;4917:24:56;4841:49;4867:18;;;:23;4841:49;;7084:141:26;978:3961:110;8837:64:26;978:3961:110;;;;7150:18:26;7146:73;;7084:141::o;7146:73::-;978:3961:110;;-1:-1:-1;;;7191:17:26;;;;;978:3961:110;;;;;;;;:::o;:::-;-1:-1:-1;;;;;;;;;;;;978:3961:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;978:3961:110;;;;;;;;;-1:-1:-1;978:3961:110;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;;;;;;;;978:3961:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;978:3961:110;;;;;;;;;-1:-1:-1;978:3961:110;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;978:3961:110;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;;;;;;;;;;978:3961:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;978:3961:110;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6246:584:94;;;;;6360:12;;;978:3961:110;;;6360:24:94;;6356:75;;6246:584;6474:30;;;;;:::i;:::-;978:3961:110;;;;;;6578:12:94;;;;:::i;:::-;6604:24;;;;6246:584;-1:-1:-1;6600:188:94;;;-1:-1:-1;;;;;978:3961:110;;;;;;;6644:21:94;;;:29;:21;;:::i;:29::-;6798:25;6246:584;:::o;6600:188::-;6753:24;;978:3961:110;;8310:38:71;;-1:-1:-1;;;;;978:3961:110;;;;;8310:38:71;:::i;:::-;6753:24:94;;;:::i;6604:::-;978:3961:110;;;;;;6614:14:94;;-1:-1:-1;6604:24:94;;;6356:75;-1:-1:-1;;;978:3961:110;;;;;;6360:12:94;978:3961:110;;;;;;;:::i;:::-;;;;;;;;;;;;;;6356:75:94;;;14296:213:69;978:3961:110;14374:24:69;;;;14370:103;;978:3961:110;14296:213:69;:::o;14370:103::-;978:3961:110;;;;14421:41:69;;;;;;14452:2;14421:41;;;978:3961:110;;;;;14421:41:69;10695:389:71;978:3961:110;;10871:8:71;;;10895:20;;10833:17;10895:20;10833:17;10895:20;10833:17;10895:20;:::o;10867:211::-;978:3961:110;;;;;;;;;;10833:17:71;14439:109;;10833:17;14439:109;;;978:3961:110;11014:1:71;978:3961:110;;;;;;;11030:37:71;:::o;978:3961:110:-;;;-1:-1:-1;;;978:3961:110;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;978:3961:110;;;;;;;;;;;;6605:300:27:o;978:3961:110:-;;;;;;;;;;;;11657:922:71;978:3961:110;;11657:922:71;;;11864:7;;;;11936;11916:28;11936:7;;:::i;:::-;11916:28;14439:109;;;;;;14289:265;;11916:28;978:3961:110;;;;;;;;;;;;12103:13:71;;;12099:89;;12251:14;;;;;12285:19;;;;978:3961:110;;;;;;;;;;;;;;;;;12285:19:71;978:3961:110;;12423:25:71;;:::o;12247:163::-;978:3961:110;;;12343:52:71;978:3961:110;12353:41:71;978:3961:110;;:::i;:::-;;;;;;;;12353:41:71;-1:-1:-1;;;;;978:3961:110;;12353:41:71;;;978:3961:110;12343:52:71;:::i;:::-;12247:163;;12099:89;978:3961:110;;-1:-1:-1;;;12143:30:71;;;;;11860:713;978:3961:110;;12479:52:71;978:3961:110;12489:41:71;978:3961:110;;:::i;12489:41:71:-;-1:-1:-1;;;;;978:3961:110;;12489:41:71;;;978:3961:110;12343:52:71;:::i;12479:::-;11870:1;12545:17;;:::o","linkReferences":{},"immutableReferences":{"72460":[{"start":1564,"length":32},{"start":5387,"length":32}]}},"methodIdentifiers":{"DEPOSITOR_WHITELIST_ROLE()":"1b66c9e1","DEPOSIT_LIMIT_SET_ROLE()":"a21a1df9","DEPOSIT_WHITELIST_SET_ROLE()":"db388715","EPOCH_DURATION_SET_ROLE()":"61819dd8","FLASH_FEE_BASE()":"ecc98f05","FLASH_FEE_RATE_SET_ROLE()":"bc46f722","FLASH_FEE_RECEIVER_SET_ROLE()":"31d9736c","FLASH_LOAN_ENABLED_SET_ROLE()":"a66b3a73","IS_DEPOSIT_LIMIT_SET_ROLE()":"1415519b","RETURN_VALUE()":"653b04cd","_VaultTokenized_init(bytes)":"7bd00ae8","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burner()":"27810b6e","collateral()":"d8dfeb45","decimals()":"313ce567","delegator()":"ce9b7930","deposit(address,uint256)":"47e7ef24","depositLimit()":"ecf70858","depositWhitelist()":"48d3b775","flashFeeRate()":"e945da7f","flashFeeReceiver()":"a8b24f9a","flashLoanEnabled()":"65d61c6c","isDelegatorInitialized()":"50861adc","isDepositLimit()":"a1b12202","isDepositorWhitelisted(address)":"794b15b7","isSlasherInitialized()":"6ec1e3f8","isWithdrawalsClaimed(uint256,address)":"a5d03223","name()":"06fdde03","redeem(address,uint256)":"1e9a6950","slasher()":"b1344271","staticDelegateCall(address,bytes)":"9f86fd85","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","withdraw(address,uint256)":"f3fef3a3","withdrawalShares(uint256)":"afba70ad","withdrawalSharesOf(uint256,address)":"a3b54172","withdrawals(uint256)":"5cc07076"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"baseImplementation\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CheckpointUnorderedInsertion\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"DEPOSITOR_WHITELIST_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEPOSIT_LIMIT_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEPOSIT_WHITELIST_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"EPOCH_DURATION_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FLASH_FEE_BASE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FLASH_FEE_RATE_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FLASH_FEE_RECEIVER_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FLASH_LOAN_ENABLED_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"IS_DEPOSIT_LIMIT_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RETURN_VALUE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"_VaultTokenized_init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"burner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"collateral\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"delegator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"depositedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mintedShares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"depositLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"depositWhitelist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"flashFeeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"flashFeeReceiver\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"flashLoanEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isDelegatorInitialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isDepositLimit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isDepositorWhitelisted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isSlasherInitialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isWithdrawalsClaimed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"claimer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"withdrawnAssets\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mintedShares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slasher\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"staticDelegateCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"claimer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"burnedShares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mintedShares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"}],\"name\":\"withdrawalShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"withdrawalSharesOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"}],\"name\":\"withdrawals\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"CheckpointUnorderedInsertion()\":[{\"details\":\"A value was attempted to be inserted on a past checkpoint.\"}],\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"decimals()\":{\"details\":\"Returns the decimals places of the token.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"staticDelegateCall(address,bytes)\":{\"details\":\"It allows to use this contract's storage on-chain.\",\"params\":{\"data\":\"data to make a delegatecall with\",\"target\":\"address of the contract to make a delegatecall to\"}},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DEPOSITOR_WHITELIST_ROLE()\":{\"notice\":\"Get a depositor whitelist status setter's role.\"},\"DEPOSIT_LIMIT_SET_ROLE()\":{\"notice\":\"Get a deposit limit setter's role.\"},\"DEPOSIT_WHITELIST_SET_ROLE()\":{\"notice\":\"Get a deposit whitelist enabler/disabler's role.\"},\"EPOCH_DURATION_SET_ROLE()\":{\"notice\":\"Get a epoch duration setter's role.\"},\"FLASH_FEE_BASE()\":{\"notice\":\"Get a flash fee base.\"},\"FLASH_FEE_RATE_SET_ROLE()\":{\"notice\":\"Get a flash fee rate setter's role.\"},\"FLASH_FEE_RECEIVER_SET_ROLE()\":{\"notice\":\"Get a flash fee receiver setter's role.\"},\"FLASH_LOAN_ENABLED_SET_ROLE()\":{\"notice\":\"Get a flash loan enabled setter's role.\"},\"IS_DEPOSIT_LIMIT_SET_ROLE()\":{\"notice\":\"Get a deposit limit enabler/disabler's role.\"},\"RETURN_VALUE()\":{\"notice\":\"Get a value that must be returned by the flash loan borrower.\"},\"burner()\":{\"notice\":\"Get a burner to issue debt to (e.g., 0xdEaD or some unwrapper contract).\"},\"collateral()\":{\"notice\":\"Get a vault collateral.\"},\"delegator()\":{\"notice\":\"Get a delegator (it delegates the vault's stake to networks and operators).\"},\"depositLimit()\":{\"notice\":\"Get a deposit limit (maximum amount of the active stake that can be in the vault simultaneously).\"},\"depositWhitelist()\":{\"notice\":\"Get if the deposit whitelist is enabled.\"},\"flashFeeRate()\":{\"notice\":\"Get a flash fee rate (100% = 1_000_000_000; 0.03% = 300_000).\"},\"flashFeeReceiver()\":{\"notice\":\"Get a flash fee receiver.\"},\"flashLoanEnabled()\":{\"notice\":\"Get if a flash loan mechanic is enabled.\"},\"isDelegatorInitialized()\":{\"notice\":\"Get if the delegator is initialized.\"},\"isDepositLimit()\":{\"notice\":\"Get if the deposit limit is set.\"},\"isDepositorWhitelisted(address)\":{\"notice\":\"Get if a given account is whitelisted as a depositor.\"},\"isSlasherInitialized()\":{\"notice\":\"Get if the slasher is initialized.\"},\"isWithdrawalsClaimed(uint256,address)\":{\"notice\":\"Get if the withdrawals are claimed for a particular account at a given epoch.\"},\"slasher()\":{\"notice\":\"Get a slasher (it provides networks a slashing mechanism).\"},\"staticDelegateCall(address,bytes)\":{\"notice\":\"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data).\"},\"withdrawalShares(uint256)\":{\"notice\":\"Get a total number of withdrawal shares at a given epoch.\"},\"withdrawalSharesOf(uint256,address)\":{\"notice\":\"Get a number of withdrawal shares for a particular account at a given epoch (zero if claimed).\"},\"withdrawals(uint256)\":{\"notice\":\"Get a total amount of the withdrawals at a given epoch.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/vault/v1.1/VaultTokenizedImplementation.sol\":\"VaultTokenizedImplementation\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol\":{\"keccak256\":\"0xbb96dc9c468170c3224126e953de917e06332ec5909a3d85e6e5bb0df10c5139\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d14e6486e127e7e31c2ffccfc212c7ebaaecf8fb05677575128b449ee113def2\",\"dweb:/ipfs/QmabvyfStwBcum8mGfkmxcTV45rjyHmzHGCxfxyhmu48Yx\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf\",\"dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1\",\"dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol\":{\"keccak256\":\"0x0b1459615b9b47c2a4eec8e72f23ccc601f1d711f679a1c06b3390459021a341\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aaf6209fb90f02ebd1c9603568f5e6da5fa2f896820ba66b5041eeed993dc4ce\",\"dweb:/ipfs/QmYsSH2PSGbTXMVXXxhh9AXzfHPSz2j42REvds6xjU7WmR\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashLender.sol\":{\"keccak256\":\"0x5d19ea24c555cf6a5dbafea9fac57887cc3e72154f3ee8e0a2bf67971811c14b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3af1364c971d94bccf3efcc509b2c5c03fe1c69ea9945ba29a96998bfd6c593e\",\"dweb:/ipfs/Qmczq52prNGX5tHuk8aENZsuYgxTeA6YVMHV7yMTKeFjbr\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44\",\"dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6\",\"dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza\"]},\"src/contracts/common/StaticDelegateCallable.sol\":{\"keccak256\":\"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764\",\"dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD\"]},\"src/contracts/libraries/Checkpoints.sol\":{\"keccak256\":\"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609\",\"dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE\"]},\"src/contracts/vault/v1.1/VaultStorage.sol\":{\"keccak256\":\"0x510c83437bb493d66c299aec31ccd9d741e1348299b4170d891d476218231d19\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://8879b6b1ad9ecc8ffa5d7725b03158dc2f65e30ac65fe3af9c654277740039e0\",\"dweb:/ipfs/QmdC4DkajUbGuRzaCsqegJWGTxXvooWFCVkU7EdXG9mou2\"]},\"src/contracts/vault/v1.1/VaultTokenizedImplementation.sol\":{\"keccak256\":\"0x07bb1e77b3c7cd0c754d4ae874fb731f82cf31a6647c40db6e0b8e7e491af2ca\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1514dd2e4f16c13c764529524c0f66f2009a2d348e5e680d170ca6eb81ec0266\",\"dweb:/ipfs/QmXAKr68V1nPXsee8GUVYAYiiY5bDqKpTamU5DenMPhewX\"]},\"src/interfaces/common/IStaticDelegateCallable.sol\":{\"keccak256\":\"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516\",\"dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi\"]},\"src/interfaces/vault/v1.1/IVault.sol\":{\"keccak256\":\"0x41c3b7c7955923f29d7a913dcd49a2f7c4c40339eda1cdf675d04bf15168fbd4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7f26841febf819da87037e7f285fb4e9c3a3191d2cc9284d4679bd5f3d5eb79\",\"dweb:/ipfs/QmejKi1svukhK2bwGPvSXLzG4oMKUZo7xEm1gNvuYWNbDK\"]},\"src/interfaces/vault/v1.1/IVaultStorage.sol\":{\"keccak256\":\"0x762053f3cc4cb5809c48b846a77b36e697323b2011118c2df8ea2692a02ece5b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282252083722ebdb1e8977ba1fd4860e15acb49bb4ec337632dd14304863b1d\",\"dweb:/ipfs/QmNNBo5HaWBenQZLgnjF3NbxVRupfgYeUMztYYQMpD9VoB\"]},\"src/interfaces/vault/v1.1/IVaultTokenized.sol\":{\"keccak256\":\"0x98adcf1802a3e90cdc93e26afd6f27da02727473f18f482a6b297f8574a195e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://10c1d8f09f0ad1e82d198491124e8867dc1c64b242a705c4bb13abaa37b5cea2\",\"dweb:/ipfs/QmfNUPDbLQADLnQbsto5yKW2bR4v5RgphvrqoTQhSE7zkv\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"baseImplementation","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[],"type":"error","name":"CheckpointUnorderedInsertion"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientAllowance"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC20InvalidApprover"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC20InvalidSender"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"ERC20InvalidSpender"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintDowncast"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[],"stateMutability":"payable","type":"fallback"},{"inputs":[],"stateMutability":"view","type":"function","name":"DEPOSITOR_WHITELIST_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEPOSIT_LIMIT_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEPOSIT_WHITELIST_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"EPOCH_DURATION_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FLASH_FEE_BASE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FLASH_FEE_RATE_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FLASH_FEE_RECEIVER_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FLASH_LOAN_ENABLED_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_DEPOSIT_LIMIT_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"RETURN_VALUE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"_VaultTokenized_init"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"burner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"collateral","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"delegator","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"onBehalfOf","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"deposit","outputs":[{"internalType":"uint256","name":"depositedAmount","type":"uint256"},{"internalType":"uint256","name":"mintedShares","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"depositLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"depositWhitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"flashFeeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"flashFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"flashLoanEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"isDelegatorInitialized","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"isDepositLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"isDepositorWhitelisted","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"isSlasherInitialized","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"isWithdrawalsClaimed","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"claimer","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"redeem","outputs":[{"internalType":"uint256","name":"withdrawnAssets","type":"uint256"},{"internalType":"uint256","name":"mintedShares","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"slasher","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"staticDelegateCall"},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"claimer","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"withdraw","outputs":[{"internalType":"uint256","name":"burnedShares","type":"uint256"},{"internalType":"uint256","name":"mintedShares","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"}],"stateMutability":"view","type":"function","name":"withdrawalShares","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"withdrawalSharesOf","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"}],"stateMutability":"view","type":"function","name":"withdrawals","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"Returns the value of tokens owned by `account`."},"decimals()":{"details":"Returns the decimals places of the token."},"name()":{"details":"Returns the name of the token."},"staticDelegateCall(address,bytes)":{"details":"It allows to use this contract's storage on-chain.","params":{"data":"data to make a delegatecall with","target":"address of the contract to make a delegatecall to"}},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"Returns the value of tokens in existence."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`."}},"version":1},"userdoc":{"kind":"user","methods":{"DEPOSITOR_WHITELIST_ROLE()":{"notice":"Get a depositor whitelist status setter's role."},"DEPOSIT_LIMIT_SET_ROLE()":{"notice":"Get a deposit limit setter's role."},"DEPOSIT_WHITELIST_SET_ROLE()":{"notice":"Get a deposit whitelist enabler/disabler's role."},"EPOCH_DURATION_SET_ROLE()":{"notice":"Get a epoch duration setter's role."},"FLASH_FEE_BASE()":{"notice":"Get a flash fee base."},"FLASH_FEE_RATE_SET_ROLE()":{"notice":"Get a flash fee rate setter's role."},"FLASH_FEE_RECEIVER_SET_ROLE()":{"notice":"Get a flash fee receiver setter's role."},"FLASH_LOAN_ENABLED_SET_ROLE()":{"notice":"Get a flash loan enabled setter's role."},"IS_DEPOSIT_LIMIT_SET_ROLE()":{"notice":"Get a deposit limit enabler/disabler's role."},"RETURN_VALUE()":{"notice":"Get a value that must be returned by the flash loan borrower."},"burner()":{"notice":"Get a burner to issue debt to (e.g., 0xdEaD or some unwrapper contract)."},"collateral()":{"notice":"Get a vault collateral."},"delegator()":{"notice":"Get a delegator (it delegates the vault's stake to networks and operators)."},"depositLimit()":{"notice":"Get a deposit limit (maximum amount of the active stake that can be in the vault simultaneously)."},"depositWhitelist()":{"notice":"Get if the deposit whitelist is enabled."},"flashFeeRate()":{"notice":"Get a flash fee rate (100% = 1_000_000_000; 0.03% = 300_000)."},"flashFeeReceiver()":{"notice":"Get a flash fee receiver."},"flashLoanEnabled()":{"notice":"Get if a flash loan mechanic is enabled."},"isDelegatorInitialized()":{"notice":"Get if the delegator is initialized."},"isDepositLimit()":{"notice":"Get if the deposit limit is set."},"isDepositorWhitelisted(address)":{"notice":"Get if a given account is whitelisted as a depositor."},"isSlasherInitialized()":{"notice":"Get if the slasher is initialized."},"isWithdrawalsClaimed(uint256,address)":{"notice":"Get if the withdrawals are claimed for a particular account at a given epoch."},"slasher()":{"notice":"Get a slasher (it provides networks a slashing mechanism)."},"staticDelegateCall(address,bytes)":{"notice":"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data)."},"withdrawalShares(uint256)":{"notice":"Get a total number of withdrawal shares at a given epoch."},"withdrawalSharesOf(uint256,address)":{"notice":"Get a number of withdrawal shares for a particular account at a given epoch (zero if claimed)."},"withdrawals(uint256)":{"notice":"Get a total amount of the withdrawals at a given epoch."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/vault/v1.1/VaultTokenizedImplementation.sol":"VaultTokenizedImplementation"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol":{"keccak256":"0xbb96dc9c468170c3224126e953de917e06332ec5909a3d85e6e5bb0df10c5139","urls":["bzz-raw://d14e6486e127e7e31c2ffccfc212c7ebaaecf8fb05677575128b449ee113def2","dweb:/ipfs/QmabvyfStwBcum8mGfkmxcTV45rjyHmzHGCxfxyhmu48Yx"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol":{"keccak256":"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866","urls":["bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf","dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606","urls":["bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1","dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol":{"keccak256":"0x0b1459615b9b47c2a4eec8e72f23ccc601f1d711f679a1c06b3390459021a341","urls":["bzz-raw://aaf6209fb90f02ebd1c9603568f5e6da5fa2f896820ba66b5041eeed993dc4ce","dweb:/ipfs/QmYsSH2PSGbTXMVXXxhh9AXzfHPSz2j42REvds6xjU7WmR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashLender.sol":{"keccak256":"0x5d19ea24c555cf6a5dbafea9fac57887cc3e72154f3ee8e0a2bf67971811c14b","urls":["bzz-raw://3af1364c971d94bccf3efcc509b2c5c03fe1c69ea9945ba29a96998bfd6c593e","dweb:/ipfs/Qmczq52prNGX5tHuk8aENZsuYgxTeA6YVMHV7yMTKeFjbr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b","urls":["bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b","dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol":{"keccak256":"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd","urls":["bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac","dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330","urls":["bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf","dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol":{"keccak256":"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f","urls":["bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44","dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc","urls":["bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6","dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza"],"license":"MIT"},"src/contracts/common/StaticDelegateCallable.sol":{"keccak256":"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90","urls":["bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764","dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD"],"license":"BUSL-1.1"},"src/contracts/libraries/Checkpoints.sol":{"keccak256":"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c","urls":["bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609","dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE"],"license":"MIT"},"src/contracts/vault/v1.1/VaultStorage.sol":{"keccak256":"0x510c83437bb493d66c299aec31ccd9d741e1348299b4170d891d476218231d19","urls":["bzz-raw://8879b6b1ad9ecc8ffa5d7725b03158dc2f65e30ac65fe3af9c654277740039e0","dweb:/ipfs/QmdC4DkajUbGuRzaCsqegJWGTxXvooWFCVkU7EdXG9mou2"],"license":"BUSL-1.1"},"src/contracts/vault/v1.1/VaultTokenizedImplementation.sol":{"keccak256":"0x07bb1e77b3c7cd0c754d4ae874fb731f82cf31a6647c40db6e0b8e7e491af2ca","urls":["bzz-raw://1514dd2e4f16c13c764529524c0f66f2009a2d348e5e680d170ca6eb81ec0266","dweb:/ipfs/QmXAKr68V1nPXsee8GUVYAYiiY5bDqKpTamU5DenMPhewX"],"license":"BUSL-1.1"},"src/interfaces/common/IStaticDelegateCallable.sol":{"keccak256":"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5","urls":["bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516","dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi"],"license":"MIT"},"src/interfaces/vault/v1.1/IVault.sol":{"keccak256":"0x41c3b7c7955923f29d7a913dcd49a2f7c4c40339eda1cdf675d04bf15168fbd4","urls":["bzz-raw://b7f26841febf819da87037e7f285fb4e9c3a3191d2cc9284d4679bd5f3d5eb79","dweb:/ipfs/QmejKi1svukhK2bwGPvSXLzG4oMKUZo7xEm1gNvuYWNbDK"],"license":"MIT"},"src/interfaces/vault/v1.1/IVaultStorage.sol":{"keccak256":"0x762053f3cc4cb5809c48b846a77b36e697323b2011118c2df8ea2692a02ece5b","urls":["bzz-raw://5282252083722ebdb1e8977ba1fd4860e15acb49bb4ec337632dd14304863b1d","dweb:/ipfs/QmNNBo5HaWBenQZLgnjF3NbxVRupfgYeUMztYYQMpD9VoB"],"license":"MIT"},"src/interfaces/vault/v1.1/IVaultTokenized.sol":{"keccak256":"0x98adcf1802a3e90cdc93e26afd6f27da02727473f18f482a6b297f8574a195e0","urls":["bzz-raw://10c1d8f09f0ad1e82d198491124e8867dc1c64b242a705c4bb13abaa37b5cea2","dweb:/ipfs/QmfNUPDbLQADLnQbsto5yKW2bR4v5RgphvrqoTQhSE7zkv"],"license":"MIT"}},"version":1},"id":110} \ No newline at end of file diff --git a/out/VaultVotes.sol/VaultVotes.json b/out/VaultVotes.sol/VaultVotes.json new file mode 100644 index 00000000..d11fdee5 --- /dev/null +++ b/out/VaultVotes.sol/VaultVotes.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[{"name":"vaultFactory","type":"address","internalType":"address"},{"name":"implementation","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"fallback","stateMutability":"payable"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"DEPOSITOR_WHITELIST_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"DEPOSIT_LIMIT_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"DEPOSIT_WHITELIST_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"EPOCH_DURATION_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"FLASH_FEE_BASE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"FLASH_FEE_RATE_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"FLASH_FEE_RECEIVER_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"FLASH_LOAN_ENABLED_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"IS_DEPOSIT_LIMIT_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"MIN_EXIT_WINDOW","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"RETURN_VALUE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"burner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"collateral","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"delegator","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"depositLimit","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"depositWhitelist","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"flashFeeRate","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"flashFeeReceiver","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"flashLoanEnabled","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"initialVersion","type":"uint64","internalType":"uint64"},{"name":"owner_","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isDelegatorInitialized","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isDepositLimit","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isDepositorWhitelisted","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isSlasherInitialized","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isWithdrawalsClaimed","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"migrate","inputs":[{"name":"newVersion","type":"uint64","internalType":"uint64"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"slasher","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"staticDelegateCall","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"version","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"withdrawalShares","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"withdrawalSharesOf","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"withdrawals","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"AlreadyInitialized","inputs":[]},{"type":"error","name":"AlreadySet","inputs":[]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"InvalidAccount","inputs":[]},{"type":"error","name":"InvalidCollateral","inputs":[]},{"type":"error","name":"InvalidData","inputs":[]},{"type":"error","name":"InvalidEpochDuration","inputs":[]},{"type":"error","name":"InvalidEpochDurationSetEpochsDelay","inputs":[]},{"type":"error","name":"InvalidFlashParams","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"InvalidOrigin","inputs":[]},{"type":"error","name":"MissingRoles","inputs":[]},{"type":"error","name":"NoDepositWhitelist","inputs":[]},{"type":"error","name":"NotFactory","inputs":[]},{"type":"error","name":"NotInitialized","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x60c0346101235761274e906001600160401b0390601f38849003908101601f19168201908382118383101761012757808391604096879485528339810103126101235761005760206100508361013b565b920161013b565b917ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff82871c166101125780808316036100ce575b50505060805260a052516125fe908161015082396080518181816104990152610604015260a0518181816110fa015281816112e0015261194a0152f35b6001600160401b0319909116811790915583519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f8080610091565b855163f92ee8a960e01b8152600490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101235756fe608060405260043610611940575f3560e01c806301ffc9a7146102bb5780631415519b146102b65780631b66c9e1146102b1578063248a9ca3146102ac57806327810b6e146102a75780632abe3048146102a25780632dd310001461029d5780632f2ff15d1461029857806331d9736c1461029357806336568abe1461028e57806348d3b7751461028957806350861adc1461028457806354fd4d501461027f57806357ec83cc1461027a5780635cc070761461027557806361819dd814610270578063653b04cd1461026b57806365d61c6c146102665780636ec1e3f814610261578063715018a61461025c578063794b15b7146102575780638da5cb5b1461025257806391d148541461024d5780639f86fd8514610248578063a1b1220214610243578063a217fddf1461023e578063a21a1df914610239578063a3b5417214610234578063a5d032231461022f578063a66b3a731461022a578063a8b24f9a14610225578063afba70ad14610220578063b13442711461021b578063bc46f72214610216578063ce9b793014610211578063d547741f1461020c578063d8dfeb4514610207578063db38871514610202578063e945da7f146101fd578063ecc98f05146101f8578063ecf70858146101f3578063f151f6b5146101ee5763f2fde38b0361194057610ece565b610eb1565b610e94565b610e76565b610e59565b610e1f565b610df4565b610da8565b610d80565b610d46565b610d1e565b610cf4565b610ccc565b610c92565b610c4c565b610bff565b610bc5565b610bab565b610b87565b610af3565b610a95565b610a61565b610a21565b6109ba565b610995565b610970565b610936565b6108fc565b6108d2565b61078d565b61075b565b610736565b610715565b6106ca565b610690565b610644565b6105ef565b61042d565b6103c2565b610389565b61034f565b610315565b346103115760203660031901126103115760043563ffffffff60e01b811680910361031157602090637965db0b60e01b8114908115610300575b506040519015158152f35b6301ffc9a760e01b1490505f6102f5565b5f80fd5b34610311575f3660031901126103115760206040517fc6aaadd7371d5e8f9ed6849dd66a66573a3ba37167d03f4352c9ba5693678fac8152f35b34610311575f3660031901126103115760206040517f9c56d972d63cbb4195b3c1484691dfc220fa96a4c47e7b6613bd82a022029e068152f35b34610311576020366003190112610311576004355f525f805160206125898339815191526020526020600160405f200154604051908152f35b34610311575f366003190112610311576001546040516001600160a01b039091168152602090f35b600435906001600160401b038216820361031157565b9181601f84011215610311578235916001600160401b038311610311576020838186019501011161031157565b3461031157604080600319360112610311576104476103ea565b906001600160401b0360243581811161031157610468903690600401610400565b917f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0060028154146105de57600290557f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036105cd575f805160206125a983398151915280548281169260ff82881c1680156105c1575b6105b05767ffffffffffffffff199091169087161790555f805160206125a9833981519152805460ff60401b1916600160401b1790557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d294610582949093909261055192611286565b5f805160206125a9833981519152805460ff60401b19169055516001600160401b0390911681529081906020820190565b0390a16105ae60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b005b865163f92ee8a960e01b8152600490fd5b508088168410156104e8565b8351631966391b60e11b8152600490fd5b8451633ee5aeb560e01b8152600490fd5b34610311575f366003190112610311576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6001600160a01b0381160361031157565b34610311576040366003190112610311576105ae60243560043561066782610633565b805f525f8051602061258983398151915260205261068b600160405f200154611328565b611806565b34610311575f3660031901126103115760206040517f5295aaaa27fdd659293eafacbfafbc634c1b96298957e87de5f59308cdbfdad18152f35b34610311576040366003190112610311576024356106e781610633565b336001600160a01b03821603610703576105ae9060043561183c565b60405163334bd91960e11b8152600490fd5b34610311575f36600319011261031157602060ff5f54166040519015158152f35b34610311575f36600319011261031157602060ff60025460a01c166040519015158152f35b34610311575f3660031901126103115760206001600160401b035f805160206125a98339815191525416604051908152f35b34610311576060366003190112610311576107a66103ea565b6024356107b281610633565b6001600160401b0391604435838111610311576107d3903690600401610400565b5f805160206125a98339815191529491855494838616806108c15760ff8760401c169081156108b4575b506108a2577fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29661089d9661086a958716906001600160401b0319161790556108655f805160206125a9833981519152600160401b68ff000000000000000019825416179055565b610fe1565b5f805160206125a9833981519152805460ff60401b191690556040516001600160401b0390911681529081906020820190565b0390a1005b60405163f92ee8a960e01b8152600490fd5b905084861611155f6107fd565b60405162dc149f60e41b8152600490fd5b34610311576020366003190112610311576004355f526006602052602060405f2054604051908152f35b34610311575f3660031901126103115760206040517f591f6a0113ada8aff67efadec8ae2fa585cb4ebf4e1f8fc1205ffbeff98d00ec8152f35b34610311575f3660031901126103115760206040517f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd98152f35b34610311575f36600319011261031157602060ff60165460a01c166040519015158152f35b34610311575f36600319011261031157602060ff60035460a01c166040519015158152f35b34610311575f366003190112610311576109d2611908565b5f8051602061256983398151915280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461031157602036600319011261031157600435610a3e81610633565b60018060a01b03165f526005602052602060ff60405f2054166040519015158152f35b34610311575f366003190112610311575f80516020612569833981519152546040516001600160a01b039091168152602090f35b3461031157604036600319011261031157602060ff610ae7602435610ab981610633565b6004355f525f80516020612589833981519152845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b3461031157604036600319011261031157600435610b1081610633565b6024356001600160401b038111610311575f91610b3283923690600401610400565b90816040519283928337810184815203915af4610b7f610b506111c2565b91610b716040519384921515602084015260408084015260608301906111f1565b03601f198101835282610f2f565b805190602001fd5b34610311575f36600319011261031157602060ff5f5460081c166040519015158152f35b34610311575f3660031901126103115760206040515f8152f35b34610311575f3660031901126103115760206040517f4a634bc14d77baf979756509ef4298c6f6318af357828612545267ee2eb792338152f35b34610311576040366003190112610311576020610c43602435610c2181610633565b6004355f526008835260405f209060018060a01b03165f5260205260405f2090565b54604051908152f35b3461031157604036600319011261031157602060ff610ae7602435610c7081610633565b6004355f526009845260405f209060018060a01b03165f5260205260405f2090565b34610311575f3660031901126103115760206040517fc9feed28b4b1a1d11c6791da7bb7f6b8d33e831a4992a9383dead1ec2c82c35a8152f35b34610311575f366003190112610311576016546040516001600160a01b039091168152602090f35b34610311576020366003190112610311576004355f526007602052602060405f2054604051908152f35b34610311575f366003190112610311576003546040516001600160a01b039091168152602090f35b34610311575f3660031901126103115760206040517fc9078c78bcaac2be1c77c160c539a489be2b72939771b1a6302fed3e2150c7458152f35b34610311575f366003190112610311576002546040516001600160a01b039091168152602090f35b34610311576040366003190112610311576105ae602435600435610dcb82610633565b805f525f80516020612589833981519152602052610def600160405f200154611328565b61183c565b34610311575f366003190112610311575f5460405160109190911c6001600160a01b03168152602090f35b34610311575f3660031901126103115760206040517fbae4ee3de6c709ff9a002e774c5b78cb381560b219213c88ae0f1e207c03c0238152f35b34610311575f366003190112610311576020601554604051908152f35b34610311575f366003190112610311576020604051633b9aca008152f35b34610311575f366003190112610311576020600454604051908152f35b34610311575f36600319011261031157602060405162093a808152f35b34610311576020366003190112610311576105ae600435610eee81610633565b610ef6611908565b611215565b634e487b7160e01b5f52604160045260245ffd5b606081019081106001600160401b03821117610f2a57604052565b610efb565b90601f801991011681019081106001600160401b03821117610f2a57604052565b6040519061028082018281106001600160401b03821117610f2a57604052565b6040519061010082018281106001600160401b03821117610f2a57604052565b6001600160401b038111610f2a57601f01601f191660200190565b929192610fb782610f90565b91610fc56040519384610f2f565b829481845281830111610311578281602093845f960137010152565b9161103192610fee61197c565b610ff661197c565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00556001600160a01b0381166111a8575b503691610fab565b8051602090820181810182848303126103115782840151936001600160401b03948581116103115760609101809303126103115760409283519061107482610f0f565b8084015186811161031157840183603f82011215610311578381878461109d94015191016119aa565b8252848401518681116103115783826110b8928701016119e0565b938183019485526060810151968711610311576110e26111a094836111a5996110ef9401016119e0565b9286810193845251611c88565b61116e61115c6111687f0000000000000000000000000000000000000000000000000000000000000000965194519461112e89519687928784016119fa565b0394611142601f1996878101835282610f2f565b8851630f7a015d60e31b86820152928391602483016118f4565b03858101835282610f2f565b85611a1f565b5061119461117a6118ce565b9551958692630756082f60e11b90840152602483016118f4565b03908101845283610f2f565b611a1f565b50565b6111bc906111b461197c565b610ef661197c565b5f611029565b3d156111ec573d906111d382610f90565b916111e16040519384610f2f565b82523d5f602084013e565b606090565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b6001600160a01b0390811690811561126e575f8051602061256983398151915280546001600160a01b031981168417909155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b604051631e4fbdf760e01b81525f6004820152602490fd5b9161129d6004926001600160401b03923691610fab565b9216036113165751611304576111a5610b716112de6112ba6118ce565b604051928391630756082f60e11b60208401526020602484015260448301906111f1565b7f0000000000000000000000000000000000000000000000000000000000000000611a1f565b604051635cb045db60e01b8152600490fd5b604051630a1824e360e01b8152600490fd5b5f8181525f805160206125898339815191526020908152604080832033845290915290205460ff16156113585750565b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260409020545f805160206125898339815191529060ff16611421575f808052602091825260408082206001600160a01b038516835290925220805460ff1916600117905533906001600160a01b03165f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b50505f90565b6001600160a01b0381165f9081527f03b26b53c87faa1058f30bb5d2fee64f717719a0d9b7e4f4df027aa5e9b6ed69602052604090207fbae4ee3de6c709ff9a002e774c5b78cb381560b219213c88ae0f1e207c03c023905f805160206125898339815191529060ff905b54166114f6575f828152602091825260408082206001600160a01b038616835290925220805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b5050505f90565b6001600160a01b0381165f9081527f0287ab4cb376ea253d7b2ce0c2cbf458f7deae9458470d74afdfbbee484e9540602052604090207f9c56d972d63cbb4195b3c1484691dfc220fa96a4c47e7b6613bd82a022029e06905f805160206125898339815191529060ff90611492565b6001600160a01b0381165f9081527fe41986b390c4ce6791b87f7423b5fab7a81a0e6d89660b6264f697d008b2243a602052604090207fc6aaadd7371d5e8f9ed6849dd66a66573a3ba37167d03f4352c9ba5693678fac905f805160206125898339815191529060ff90611492565b6001600160a01b0381165f9081527f2d4ccbfe9f7672a6f2537c1e5bce6adacb73706879154bbab6ce096012d67216602052604090207f4a634bc14d77baf979756509ef4298c6f6318af357828612545267ee2eb79233905f805160206125898339815191529060ff90611492565b6001600160a01b0381165f9081527f99e47f2907af87dbb5c62e22bd8ea822f5011dfd1e243469ce26ebebf3ab93e3602052604090207f591f6a0113ada8aff67efadec8ae2fa585cb4ebf4e1f8fc1205ffbeff98d00ec905f805160206125898339815191529060ff90611492565b6001600160a01b0381165f9081527f665296150f4083bfe5a58682f99690b24ea27a3f56243679fa9797c6a16217aa602052604090207fc9feed28b4b1a1d11c6791da7bb7f6b8d33e831a4992a9383dead1ec2c82c35a905f805160206125898339815191529060ff90611492565b6001600160a01b0381165f9081527f82a1dc868a49801aa31c5dd393dc0b9005735300cdcd4bbc1af68215effcd6f8602052604090207fc9078c78bcaac2be1c77c160c539a489be2b72939771b1a6302fed3e2150c745905f805160206125898339815191529060ff90611492565b6001600160a01b0381165f9081527f9aeaa4f1a9be826e331dea6728ca206744e0a34dccbc1d3da4a68acb8abf0363602052604090207f5295aaaa27fdd659293eafacbfafbc634c1b96298957e87de5f59308cdbfdad1905f805160206125898339815191529060ff90611492565b5f8181525f80516020612589833981519152602081815260408084206001600160a01b038716855290915290912060ff90611492565b5f8181525f80516020612589833981519152602081815260408084206001600160a01b03871685529091529091205460ff16156114f6575f828152602091825260408082206001600160a01b038616835290925220805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b604051602081018181106001600160401b03821117610f2a576040525f8152905f368137565b9060206119059281815201906111f1565b90565b5f80516020612569833981519152546001600160a01b0316330361192857565b60405163118cdaa760e01b8152336004820152602490fd5b365f80375f8036817f00000000000000000000000000000000000000000000000000000000000000005af43d5f803e15611978573d5ff35b3d5ffd5b60ff5f805160206125a98339815191525460401c161561199857565b604051631afcd79f60e31b8152600490fd5b9291926119b682610f90565b916119c46040519384610f2f565b829481845281830111610311578281602093845f96015e010152565b9080601f83011215610311578151611905926020016119aa565b9091611a11611905936040845260408401906111f1565b9160208184039101526111f1565b5f8061190593602081519101845af4611a366111c2565b916123c2565b5190611a4782610633565b565b519065ffffffffffff8216820361031157565b5190811515820361031157565b81601f82011215610311578051916020916001600160401b038411610f2a578360051b9060405194611a9d85840187610f2f565b85528380860192820101928311610311578301905b828210611ac0575050505090565b8380918351611ace81610633565b815201910190611ab2565b906020828203126103115781516001600160401b03928382116103115701906102808282031261031157611b0b610f50565b92611b1583611a3c565b8452611b2360208401611a3c565b6020850152611b3460408401611a49565b6040850152611b4560608401611a5c565b6060850152611b5660808401611a5c565b608085015260a083015160a085015260c083015160c0850152611b7b60e08401611a5c565b60e08501526101008084015190850152610120611b99818501611a3c565b90850152610140611bab818501611a3c565b90850152610160611bbd818501611a3c565b90850152610180611bcf818501611a3c565b908501526101a0918284015191821161031157611bed918401611a69565b908301526101c0611bff818301611a3c565b908301526101e0611c11818301611a3c565b90830152610200611c23818301611a3c565b90830152610220611c35818301611a3c565b90830152610240611c47818301611a3c565b90830152611c59610260809201611a3c565b9082015290565b8051821015611c745760209160051b010190565b634e487b7160e01b5f52603260045260245ffd5b611c9b9060208082518301019101611ad9565b805190916001600160a01b03918216156123b0576040908184019065ffffffffffff611ccd835165ffffffffffff1690565b161561239f5761014085018051909490611cf7906001600160a01b03165b6001600160a01b031690565b1561226a575b6060860195611d13611d0f8851151590565b1590565b8061225b575b61224a576101a0810196955f5b88518051821015611dd757611ceb611d4183611d4e93611c60565b516001600160a01b031690565b15611dc657611d87611d80611d67611d41848d51611c60565b6001600160a01b03165f90815260056020526040902090565b5460ff1690565b611db55780611daf611da2611d67611d416001958e51611c60565b805460ff19166001179055565b01611d26565b865163a741a04560e01b8152600490fd5b8651630da30f6560e31b8152600490fd5b505093919592965093611df3611ceb855160018060a01b031690565b1561206a575b60c08501519060e0860151611e0d90151590565b6101008701516101208801516102008901516102208a01516102408b01516102608c01516001600160a01b0390811697918116969281169593811694169291611e54610f70565b988952151560208901528701526001600160a01b031660608601526001600160a01b031660808501526001600160a01b031660a08401526001600160a01b031660c08301526001600160a01b031660e0820152611eb090612425565b83516001600160a01b03165f805462010000600160b01b03191660109290921b62010000600160b01b031691909117905560208401516001600160a01b0316600180546001600160a01b0319166001600160a01b03909216919091179055611f1742612536565b6001805465ffffffffffff60a01b191660a09290921b65ffffffffffff60a01b169190911790555165ffffffffffff16600180546001600160d01b031660d09290921b6001600160d01b031916919091179055511515611f819060ff80195f541691151516175f55565b60808201515f805461ff00191691151560081b61ff001691909117905560a0820151600455516001600160a01b0316612017916101e09180851661205a575b506101608101516001600160a01b031684811661204a575b506101808101516001600160a01b031684811661203a575b506101c08101516001600160a01b031684811661202a575b5001516001600160a01b031690565b9081166120215750565b6111a5906115db565b6120339061156c565b505f612008565b612043906114fd565b505f611ff0565b61205390611427565b505f611fd8565b61206390611376565b505f611fc0565b949392919061207c60e0850151151590565b801561222a575b15612194576101208401516120a0906001600160a01b0316611ceb565b15801581612174575b80612147575b156120c5578651630331eb0f60e41b8152600490fd5b6101008596979293949501511590811591612124575b816120f7575b5015611df95751630331eb0f60e41b8152600490fd5b905080612105575b5f6120e1565b5061026085015161211e906001600160a01b0316611ceb565b156120ff565b61024087015190915061213f906001600160a01b0316611ceb565b1515906120db565b506101008501511580156120af575061024085015161216e906001600160a01b0316611ceb565b156120af565b5061026085015161218d906001600160a01b0316611ceb565b15156120a9565b90919293946121b0611ceb61012087015160018060a01b031690565b1580159061221c575b80156121fc575b80156121dc575b15611df95751630331eb0f60e41b8152600490fd5b506102408501516121f5906001600160a01b0316611ceb565b15156121c7565b50610260850151612215906001600160a01b0316611ceb565b15156121c0565b5061010085015115156121b9565b50610220840151612243906001600160a01b0316611ceb565b1515612083565b845163ebf503c560e01b8152600490fd5b506101a0810151511515611d19565b610160860151612282906001600160a01b0316611ceb565b1561233a575b6101c08601516122a0906001600160a01b0316611ceb565b156122ab575b611cfd565b6080860151156122f65760a086015115806122d7575b15611cfd57835163183c854560e21b8152600490fd5b506101e08601516122f0906001600160a01b0316611ceb565b156122c1565b60a08601511580159061231a575b156122a657835163183c854560e21b8152600490fd5b506101e0860151612333906001600160a01b0316611ceb565b1515612304565b6060860151156123715761018086015161235c906001600160a01b0316611ceb565b61228857835163183c854560e21b8152600490fd5b610180860151612389906001600160a01b0316611ceb565b1561228857835163183c854560e21b8152600490fd5b82516368f5f8f160e11b8152600490fd5b6040516368f7a67560e11b8152600490fd5b906123e957508051156123d757805190602001fd5b60405163d6bda27560e01b8152600490fd5b8151158061241c575b6123fa575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b156123f2565b6003815110612524576124388151600f55565b6124676124486020830151151590565b6016805460ff60a01b191691151560a01b60ff60a01b16919091179055565b6124746040820151601555565b6060810151601680546001600160a01b0319166001600160a01b03928316179055608082015190916124e89160e09190841680612514575b5060a08101516001600160a01b0316848116612504575b5060c08101516001600160a01b03168481166124fb575001516001600160a01b031690565b9081166124f25750565b6111a590611797565b61203390611728565b61250d906116b9565b505f6124c3565b61251d9061164a565b505f6124ac565b6040516317a509b960e31b8152600490fd5b65ffffffffffff90818111612549571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fdfe9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930002dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220972a909423c34c7bcc39421949ef7f0e14a011fc2da61e33930a13aae49099c364736f6c63430008190033","sourceMap":"395:982:111:-:0;;;;;;-1:-1:-1;;;;;395:982:111;;;;;;;;;-1:-1:-1;;395:982:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;8837:64:26;;395:982:111;;;;;;;;;7896:76:26;;395:982:111;;;;7985:34:26;7981:146;;-1:-1:-1;927:17:82;;;;;1444:31:106;;395:982:111;;;;;;;927:17:82;395:982:111;;;;;;;;;;1444:31:106;395:982:111;;;;;;;;;;;;;;;;7981:146:26;-1:-1:-1;;;;;;395:982:111;;;;;;;;;;;;;8087:29:26;;395:982:111;;8087:29:26;7981:146;;;;;7896:76;395:982:111;;-1:-1:-1;;;7938:23:26;;;;;395:982:111;-1:-1:-1;395:982:111;;;;;;-1:-1:-1;395:982:111;;;;;-1:-1:-1;395:982:111;;;;-1:-1:-1;;;;;395:982:111;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x608060405260043610611940575f3560e01c806301ffc9a7146102bb5780631415519b146102b65780631b66c9e1146102b1578063248a9ca3146102ac57806327810b6e146102a75780632abe3048146102a25780632dd310001461029d5780632f2ff15d1461029857806331d9736c1461029357806336568abe1461028e57806348d3b7751461028957806350861adc1461028457806354fd4d501461027f57806357ec83cc1461027a5780635cc070761461027557806361819dd814610270578063653b04cd1461026b57806365d61c6c146102665780636ec1e3f814610261578063715018a61461025c578063794b15b7146102575780638da5cb5b1461025257806391d148541461024d5780639f86fd8514610248578063a1b1220214610243578063a217fddf1461023e578063a21a1df914610239578063a3b5417214610234578063a5d032231461022f578063a66b3a731461022a578063a8b24f9a14610225578063afba70ad14610220578063b13442711461021b578063bc46f72214610216578063ce9b793014610211578063d547741f1461020c578063d8dfeb4514610207578063db38871514610202578063e945da7f146101fd578063ecc98f05146101f8578063ecf70858146101f3578063f151f6b5146101ee5763f2fde38b0361194057610ece565b610eb1565b610e94565b610e76565b610e59565b610e1f565b610df4565b610da8565b610d80565b610d46565b610d1e565b610cf4565b610ccc565b610c92565b610c4c565b610bff565b610bc5565b610bab565b610b87565b610af3565b610a95565b610a61565b610a21565b6109ba565b610995565b610970565b610936565b6108fc565b6108d2565b61078d565b61075b565b610736565b610715565b6106ca565b610690565b610644565b6105ef565b61042d565b6103c2565b610389565b61034f565b610315565b346103115760203660031901126103115760043563ffffffff60e01b811680910361031157602090637965db0b60e01b8114908115610300575b506040519015158152f35b6301ffc9a760e01b1490505f6102f5565b5f80fd5b34610311575f3660031901126103115760206040517fc6aaadd7371d5e8f9ed6849dd66a66573a3ba37167d03f4352c9ba5693678fac8152f35b34610311575f3660031901126103115760206040517f9c56d972d63cbb4195b3c1484691dfc220fa96a4c47e7b6613bd82a022029e068152f35b34610311576020366003190112610311576004355f525f805160206125898339815191526020526020600160405f200154604051908152f35b34610311575f366003190112610311576001546040516001600160a01b039091168152602090f35b600435906001600160401b038216820361031157565b9181601f84011215610311578235916001600160401b038311610311576020838186019501011161031157565b3461031157604080600319360112610311576104476103ea565b906001600160401b0360243581811161031157610468903690600401610400565b917f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0060028154146105de57600290557f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036105cd575f805160206125a983398151915280548281169260ff82881c1680156105c1575b6105b05767ffffffffffffffff199091169087161790555f805160206125a9833981519152805460ff60401b1916600160401b1790557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d294610582949093909261055192611286565b5f805160206125a9833981519152805460ff60401b19169055516001600160401b0390911681529081906020820190565b0390a16105ae60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b005b865163f92ee8a960e01b8152600490fd5b508088168410156104e8565b8351631966391b60e11b8152600490fd5b8451633ee5aeb560e01b8152600490fd5b34610311575f366003190112610311576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6001600160a01b0381160361031157565b34610311576040366003190112610311576105ae60243560043561066782610633565b805f525f8051602061258983398151915260205261068b600160405f200154611328565b611806565b34610311575f3660031901126103115760206040517f5295aaaa27fdd659293eafacbfafbc634c1b96298957e87de5f59308cdbfdad18152f35b34610311576040366003190112610311576024356106e781610633565b336001600160a01b03821603610703576105ae9060043561183c565b60405163334bd91960e11b8152600490fd5b34610311575f36600319011261031157602060ff5f54166040519015158152f35b34610311575f36600319011261031157602060ff60025460a01c166040519015158152f35b34610311575f3660031901126103115760206001600160401b035f805160206125a98339815191525416604051908152f35b34610311576060366003190112610311576107a66103ea565b6024356107b281610633565b6001600160401b0391604435838111610311576107d3903690600401610400565b5f805160206125a98339815191529491855494838616806108c15760ff8760401c169081156108b4575b506108a2577fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29661089d9661086a958716906001600160401b0319161790556108655f805160206125a9833981519152600160401b68ff000000000000000019825416179055565b610fe1565b5f805160206125a9833981519152805460ff60401b191690556040516001600160401b0390911681529081906020820190565b0390a1005b60405163f92ee8a960e01b8152600490fd5b905084861611155f6107fd565b60405162dc149f60e41b8152600490fd5b34610311576020366003190112610311576004355f526006602052602060405f2054604051908152f35b34610311575f3660031901126103115760206040517f591f6a0113ada8aff67efadec8ae2fa585cb4ebf4e1f8fc1205ffbeff98d00ec8152f35b34610311575f3660031901126103115760206040517f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd98152f35b34610311575f36600319011261031157602060ff60165460a01c166040519015158152f35b34610311575f36600319011261031157602060ff60035460a01c166040519015158152f35b34610311575f366003190112610311576109d2611908565b5f8051602061256983398151915280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461031157602036600319011261031157600435610a3e81610633565b60018060a01b03165f526005602052602060ff60405f2054166040519015158152f35b34610311575f366003190112610311575f80516020612569833981519152546040516001600160a01b039091168152602090f35b3461031157604036600319011261031157602060ff610ae7602435610ab981610633565b6004355f525f80516020612589833981519152845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b3461031157604036600319011261031157600435610b1081610633565b6024356001600160401b038111610311575f91610b3283923690600401610400565b90816040519283928337810184815203915af4610b7f610b506111c2565b91610b716040519384921515602084015260408084015260608301906111f1565b03601f198101835282610f2f565b805190602001fd5b34610311575f36600319011261031157602060ff5f5460081c166040519015158152f35b34610311575f3660031901126103115760206040515f8152f35b34610311575f3660031901126103115760206040517f4a634bc14d77baf979756509ef4298c6f6318af357828612545267ee2eb792338152f35b34610311576040366003190112610311576020610c43602435610c2181610633565b6004355f526008835260405f209060018060a01b03165f5260205260405f2090565b54604051908152f35b3461031157604036600319011261031157602060ff610ae7602435610c7081610633565b6004355f526009845260405f209060018060a01b03165f5260205260405f2090565b34610311575f3660031901126103115760206040517fc9feed28b4b1a1d11c6791da7bb7f6b8d33e831a4992a9383dead1ec2c82c35a8152f35b34610311575f366003190112610311576016546040516001600160a01b039091168152602090f35b34610311576020366003190112610311576004355f526007602052602060405f2054604051908152f35b34610311575f366003190112610311576003546040516001600160a01b039091168152602090f35b34610311575f3660031901126103115760206040517fc9078c78bcaac2be1c77c160c539a489be2b72939771b1a6302fed3e2150c7458152f35b34610311575f366003190112610311576002546040516001600160a01b039091168152602090f35b34610311576040366003190112610311576105ae602435600435610dcb82610633565b805f525f80516020612589833981519152602052610def600160405f200154611328565b61183c565b34610311575f366003190112610311575f5460405160109190911c6001600160a01b03168152602090f35b34610311575f3660031901126103115760206040517fbae4ee3de6c709ff9a002e774c5b78cb381560b219213c88ae0f1e207c03c0238152f35b34610311575f366003190112610311576020601554604051908152f35b34610311575f366003190112610311576020604051633b9aca008152f35b34610311575f366003190112610311576020600454604051908152f35b34610311575f36600319011261031157602060405162093a808152f35b34610311576020366003190112610311576105ae600435610eee81610633565b610ef6611908565b611215565b634e487b7160e01b5f52604160045260245ffd5b606081019081106001600160401b03821117610f2a57604052565b610efb565b90601f801991011681019081106001600160401b03821117610f2a57604052565b6040519061028082018281106001600160401b03821117610f2a57604052565b6040519061010082018281106001600160401b03821117610f2a57604052565b6001600160401b038111610f2a57601f01601f191660200190565b929192610fb782610f90565b91610fc56040519384610f2f565b829481845281830111610311578281602093845f960137010152565b9161103192610fee61197c565b610ff661197c565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00556001600160a01b0381166111a8575b503691610fab565b8051602090820181810182848303126103115782840151936001600160401b03948581116103115760609101809303126103115760409283519061107482610f0f565b8084015186811161031157840183603f82011215610311578381878461109d94015191016119aa565b8252848401518681116103115783826110b8928701016119e0565b938183019485526060810151968711610311576110e26111a094836111a5996110ef9401016119e0565b9286810193845251611c88565b61116e61115c6111687f0000000000000000000000000000000000000000000000000000000000000000965194519461112e89519687928784016119fa565b0394611142601f1996878101835282610f2f565b8851630f7a015d60e31b86820152928391602483016118f4565b03858101835282610f2f565b85611a1f565b5061119461117a6118ce565b9551958692630756082f60e11b90840152602483016118f4565b03908101845283610f2f565b611a1f565b50565b6111bc906111b461197c565b610ef661197c565b5f611029565b3d156111ec573d906111d382610f90565b916111e16040519384610f2f565b82523d5f602084013e565b606090565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b6001600160a01b0390811690811561126e575f8051602061256983398151915280546001600160a01b031981168417909155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b604051631e4fbdf760e01b81525f6004820152602490fd5b9161129d6004926001600160401b03923691610fab565b9216036113165751611304576111a5610b716112de6112ba6118ce565b604051928391630756082f60e11b60208401526020602484015260448301906111f1565b7f0000000000000000000000000000000000000000000000000000000000000000611a1f565b604051635cb045db60e01b8152600490fd5b604051630a1824e360e01b8152600490fd5b5f8181525f805160206125898339815191526020908152604080832033845290915290205460ff16156113585750565b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260409020545f805160206125898339815191529060ff16611421575f808052602091825260408082206001600160a01b038516835290925220805460ff1916600117905533906001600160a01b03165f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b50505f90565b6001600160a01b0381165f9081527f03b26b53c87faa1058f30bb5d2fee64f717719a0d9b7e4f4df027aa5e9b6ed69602052604090207fbae4ee3de6c709ff9a002e774c5b78cb381560b219213c88ae0f1e207c03c023905f805160206125898339815191529060ff905b54166114f6575f828152602091825260408082206001600160a01b038616835290925220805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b5050505f90565b6001600160a01b0381165f9081527f0287ab4cb376ea253d7b2ce0c2cbf458f7deae9458470d74afdfbbee484e9540602052604090207f9c56d972d63cbb4195b3c1484691dfc220fa96a4c47e7b6613bd82a022029e06905f805160206125898339815191529060ff90611492565b6001600160a01b0381165f9081527fe41986b390c4ce6791b87f7423b5fab7a81a0e6d89660b6264f697d008b2243a602052604090207fc6aaadd7371d5e8f9ed6849dd66a66573a3ba37167d03f4352c9ba5693678fac905f805160206125898339815191529060ff90611492565b6001600160a01b0381165f9081527f2d4ccbfe9f7672a6f2537c1e5bce6adacb73706879154bbab6ce096012d67216602052604090207f4a634bc14d77baf979756509ef4298c6f6318af357828612545267ee2eb79233905f805160206125898339815191529060ff90611492565b6001600160a01b0381165f9081527f99e47f2907af87dbb5c62e22bd8ea822f5011dfd1e243469ce26ebebf3ab93e3602052604090207f591f6a0113ada8aff67efadec8ae2fa585cb4ebf4e1f8fc1205ffbeff98d00ec905f805160206125898339815191529060ff90611492565b6001600160a01b0381165f9081527f665296150f4083bfe5a58682f99690b24ea27a3f56243679fa9797c6a16217aa602052604090207fc9feed28b4b1a1d11c6791da7bb7f6b8d33e831a4992a9383dead1ec2c82c35a905f805160206125898339815191529060ff90611492565b6001600160a01b0381165f9081527f82a1dc868a49801aa31c5dd393dc0b9005735300cdcd4bbc1af68215effcd6f8602052604090207fc9078c78bcaac2be1c77c160c539a489be2b72939771b1a6302fed3e2150c745905f805160206125898339815191529060ff90611492565b6001600160a01b0381165f9081527f9aeaa4f1a9be826e331dea6728ca206744e0a34dccbc1d3da4a68acb8abf0363602052604090207f5295aaaa27fdd659293eafacbfafbc634c1b96298957e87de5f59308cdbfdad1905f805160206125898339815191529060ff90611492565b5f8181525f80516020612589833981519152602081815260408084206001600160a01b038716855290915290912060ff90611492565b5f8181525f80516020612589833981519152602081815260408084206001600160a01b03871685529091529091205460ff16156114f6575f828152602091825260408082206001600160a01b038616835290925220805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b604051602081018181106001600160401b03821117610f2a576040525f8152905f368137565b9060206119059281815201906111f1565b90565b5f80516020612569833981519152546001600160a01b0316330361192857565b60405163118cdaa760e01b8152336004820152602490fd5b365f80375f8036817f00000000000000000000000000000000000000000000000000000000000000005af43d5f803e15611978573d5ff35b3d5ffd5b60ff5f805160206125a98339815191525460401c161561199857565b604051631afcd79f60e31b8152600490fd5b9291926119b682610f90565b916119c46040519384610f2f565b829481845281830111610311578281602093845f96015e010152565b9080601f83011215610311578151611905926020016119aa565b9091611a11611905936040845260408401906111f1565b9160208184039101526111f1565b5f8061190593602081519101845af4611a366111c2565b916123c2565b5190611a4782610633565b565b519065ffffffffffff8216820361031157565b5190811515820361031157565b81601f82011215610311578051916020916001600160401b038411610f2a578360051b9060405194611a9d85840187610f2f565b85528380860192820101928311610311578301905b828210611ac0575050505090565b8380918351611ace81610633565b815201910190611ab2565b906020828203126103115781516001600160401b03928382116103115701906102808282031261031157611b0b610f50565b92611b1583611a3c565b8452611b2360208401611a3c565b6020850152611b3460408401611a49565b6040850152611b4560608401611a5c565b6060850152611b5660808401611a5c565b608085015260a083015160a085015260c083015160c0850152611b7b60e08401611a5c565b60e08501526101008084015190850152610120611b99818501611a3c565b90850152610140611bab818501611a3c565b90850152610160611bbd818501611a3c565b90850152610180611bcf818501611a3c565b908501526101a0918284015191821161031157611bed918401611a69565b908301526101c0611bff818301611a3c565b908301526101e0611c11818301611a3c565b90830152610200611c23818301611a3c565b90830152610220611c35818301611a3c565b90830152610240611c47818301611a3c565b90830152611c59610260809201611a3c565b9082015290565b8051821015611c745760209160051b010190565b634e487b7160e01b5f52603260045260245ffd5b611c9b9060208082518301019101611ad9565b805190916001600160a01b03918216156123b0576040908184019065ffffffffffff611ccd835165ffffffffffff1690565b161561239f5761014085018051909490611cf7906001600160a01b03165b6001600160a01b031690565b1561226a575b6060860195611d13611d0f8851151590565b1590565b8061225b575b61224a576101a0810196955f5b88518051821015611dd757611ceb611d4183611d4e93611c60565b516001600160a01b031690565b15611dc657611d87611d80611d67611d41848d51611c60565b6001600160a01b03165f90815260056020526040902090565b5460ff1690565b611db55780611daf611da2611d67611d416001958e51611c60565b805460ff19166001179055565b01611d26565b865163a741a04560e01b8152600490fd5b8651630da30f6560e31b8152600490fd5b505093919592965093611df3611ceb855160018060a01b031690565b1561206a575b60c08501519060e0860151611e0d90151590565b6101008701516101208801516102008901516102208a01516102408b01516102608c01516001600160a01b0390811697918116969281169593811694169291611e54610f70565b988952151560208901528701526001600160a01b031660608601526001600160a01b031660808501526001600160a01b031660a08401526001600160a01b031660c08301526001600160a01b031660e0820152611eb090612425565b83516001600160a01b03165f805462010000600160b01b03191660109290921b62010000600160b01b031691909117905560208401516001600160a01b0316600180546001600160a01b0319166001600160a01b03909216919091179055611f1742612536565b6001805465ffffffffffff60a01b191660a09290921b65ffffffffffff60a01b169190911790555165ffffffffffff16600180546001600160d01b031660d09290921b6001600160d01b031916919091179055511515611f819060ff80195f541691151516175f55565b60808201515f805461ff00191691151560081b61ff001691909117905560a0820151600455516001600160a01b0316612017916101e09180851661205a575b506101608101516001600160a01b031684811661204a575b506101808101516001600160a01b031684811661203a575b506101c08101516001600160a01b031684811661202a575b5001516001600160a01b031690565b9081166120215750565b6111a5906115db565b6120339061156c565b505f612008565b612043906114fd565b505f611ff0565b61205390611427565b505f611fd8565b61206390611376565b505f611fc0565b949392919061207c60e0850151151590565b801561222a575b15612194576101208401516120a0906001600160a01b0316611ceb565b15801581612174575b80612147575b156120c5578651630331eb0f60e41b8152600490fd5b6101008596979293949501511590811591612124575b816120f7575b5015611df95751630331eb0f60e41b8152600490fd5b905080612105575b5f6120e1565b5061026085015161211e906001600160a01b0316611ceb565b156120ff565b61024087015190915061213f906001600160a01b0316611ceb565b1515906120db565b506101008501511580156120af575061024085015161216e906001600160a01b0316611ceb565b156120af565b5061026085015161218d906001600160a01b0316611ceb565b15156120a9565b90919293946121b0611ceb61012087015160018060a01b031690565b1580159061221c575b80156121fc575b80156121dc575b15611df95751630331eb0f60e41b8152600490fd5b506102408501516121f5906001600160a01b0316611ceb565b15156121c7565b50610260850151612215906001600160a01b0316611ceb565b15156121c0565b5061010085015115156121b9565b50610220840151612243906001600160a01b0316611ceb565b1515612083565b845163ebf503c560e01b8152600490fd5b506101a0810151511515611d19565b610160860151612282906001600160a01b0316611ceb565b1561233a575b6101c08601516122a0906001600160a01b0316611ceb565b156122ab575b611cfd565b6080860151156122f65760a086015115806122d7575b15611cfd57835163183c854560e21b8152600490fd5b506101e08601516122f0906001600160a01b0316611ceb565b156122c1565b60a08601511580159061231a575b156122a657835163183c854560e21b8152600490fd5b506101e0860151612333906001600160a01b0316611ceb565b1515612304565b6060860151156123715761018086015161235c906001600160a01b0316611ceb565b61228857835163183c854560e21b8152600490fd5b610180860151612389906001600160a01b0316611ceb565b1561228857835163183c854560e21b8152600490fd5b82516368f5f8f160e11b8152600490fd5b6040516368f7a67560e11b8152600490fd5b906123e957508051156123d757805190602001fd5b60405163d6bda27560e01b8152600490fd5b8151158061241c575b6123fa575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b156123f2565b6003815110612524576124388151600f55565b6124676124486020830151151590565b6016805460ff60a01b191691151560a01b60ff60a01b16919091179055565b6124746040820151601555565b6060810151601680546001600160a01b0319166001600160a01b03928316179055608082015190916124e89160e09190841680612514575b5060a08101516001600160a01b0316848116612504575b5060c08101516001600160a01b03168481166124fb575001516001600160a01b031690565b9081166124f25750565b6111a590611797565b61203390611728565b61250d906116b9565b505f6124c3565b61251d9061164a565b505f6124ac565b6040516317a509b960e31b8152600490fd5b65ffffffffffff90818111612549571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fdfe9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930002dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220972a909423c34c7bcc39421949ef7f0e14a011fc2da61e33930a13aae49099c364736f6c63430008190033","sourceMap":"395:982:111:-:0;;;;;;2603:64:50;395:982:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2603:64:50;395:982:111;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;-1:-1:-1;;395:982:111;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3551:47:23;;;:87;;;;395:982:111;;;;;;;;;;3551:87:23;-1:-1:-1;;;1134:40:32;;-1:-1:-1;3551:87:23;;;395:982:111;-1:-1:-1;395:982:111;;;;;;;;-1:-1:-1;;395:982:111;;;;;;;757:38:108;395:982:111;;;;;;;;;-1:-1:-1;;395:982:111;;;;;;;612:37:108;395:982:111;;;;;;;;;-1:-1:-1;;395:982:111;;;;;;-1:-1:-1;395:982:111;-1:-1:-1;;;;;;;;;;;395:982:111;;;4919:24:23;395:982:111;-1:-1:-1;395:982:111;4919:24:23;395:982:111;;;;;;;;;;;;;-1:-1:-1;;395:982:111;;;;;;;;-1:-1:-1;;;;;395:982:111;;;;;;;;;;;;-1:-1:-1;;;;;395:982:111;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;395:982:111;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;395:982:111;;;;;;;;;;;;;;:::i;:::-;2499:73:30;;1991:1;395:982:111;;3670:20:30;3666:88;;1991:1;;;1673:7:82;-1:-1:-1;;;;;395:982:111;1659:10:82;:21;1655:71;;-1:-1:-1;;;;;;;;;;;395:982:111;;;;;;;;;;;6431:44:26;;;;395:982:111;6427:105:26;;-1:-1:-1;;395:982:111;;;;;;;;;-1:-1:-1;;;;;;;;;;;395:982:111;;-1:-1:-1;;;;395:982:111;-1:-1:-1;;;395:982:111;;;6656:20:26;;;;395:982:111;;;;1809:204:82;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;395:982:111;;-1:-1:-1;;;;395:982:111;;;;-1:-1:-1;;;;;395:982:111;;;;;;;;;;;;;6656:20:26;;;;3426:1:30;1949;2499:73;1991:1;3860:283;3426:1;395:982:111;6427:105:26;395:982:111;;-1:-1:-1;;;6498:23:26;;395:982:111;;6498:23:26;6431:44;395:982:111;;;;6450:25:26;;;6431:44;;1655:71:82;395:982:111;;-1:-1:-1;;;1703:12:82;;395:982:111;;1703:12:82;3666:88:30;395:982:111;;-1:-1:-1;;;3713:30:30;;395:982:111;;3713:30:30;395:982:111;;;;;;-1:-1:-1;;395:982:111;;;;;;655:32:82;-1:-1:-1;;;;;395:982:111;;;;;;;-1:-1:-1;;;;;395:982:111;;;;;:::o;:::-;;;;;;-1:-1:-1;;395:982:111;;;;5350:25:23;395:982:111;;;;;;;:::i;:::-;;-1:-1:-1;395:982:111;-1:-1:-1;;;;;;;;;;;395:982:111;;3202:4:23;4919:24;395:982:111;-1:-1:-1;395:982:111;4919:24:23;395:982:111;3202:4:23;:::i;:::-;5350:25;:::i;395:982:111:-;;;;;;-1:-1:-1;;395:982:111;;;;;;;1479:40:108;395:982:111;;;;;;;;;-1:-1:-1;;395:982:111;;;;;;;;;:::i;:::-;966:10:28;-1:-1:-1;;;;;395:982:111;;6441:34:23;6437:102;;6549:37;395:982:111;;;6549:37:23;:::i;6437:102::-;395:982:111;;-1:-1:-1;;;6498:30:23;;395:982:111;;6498:30:23;395:982:111;;;;;;-1:-1:-1;;395:982:111;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;395:982:111;;;;;;2297:34:108;395:982:111;;;;;;;;;;;;;;;;;;-1:-1:-1;;395:982:111;;;;;-1:-1:-1;;;;;;;;;;;;;;;;395:982:111;;;;;;;;;;;;;;-1:-1:-1;;395:982:111;;;;;;:::i;:::-;;;;;;:::i;:::-;-1:-1:-1;;;;;395:982:111;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;8837:64:26;;395:982:111;;;;;;734:29:82;730:87;;395:982:111;;;;;6431:44:26;;;;;395:982:111;6427:105:26;;;6656:20;395:982:111;6656:20:26;395:982:111;1167:340:82;395:982:111;;;;-1:-1:-1;;;;;395:982:111;;;;;6575:22:26;-1:-1:-1;;;;;;;;;;;;;;395:982:111;;;;;;;;;6575:22:26;1167:340:82;:::i;:::-;-1:-1:-1;;;;;;;;;;;395:982:111;;-1:-1:-1;;;;395:982:111;;;;;-1:-1:-1;;;;;395:982:111;;;;;;;;;;;;;6656:20:26;;;;395:982:111;6427:105:26;395:982:111;;-1:-1:-1;;;6498:23:26;;395:982:111;;6498:23:26;6431:44;395:982:111;;;;;-1:-1:-1;6450:25:26;6431:44;;;730:87:82;395:982:111;;-1:-1:-1;;;786:20:82;;395:982:111;;786:20:82;395:982:111;;;;;;-1:-1:-1;;395:982:111;;;;;;-1:-1:-1;395:982:111;2760:59:108;395:982:111;;;;-1:-1:-1;395:982:111;;;;;;;;;;;;;;-1:-1:-1;;395:982:111;;;;;;;1041:36:108;395:982:111;;;;;;;;;-1:-1:-1;;395:982:111;;;;;;;1714:45:108;395:982:111;;;;;;;;;-1:-1:-1;;395:982:111;;;;;;4070:28:108;395:982:111;;;;;;;;;;;;;;;;;;-1:-1:-1;;395:982:111;;;;;;2465:32:108;395:982:111;;;;;;;;;;;;;;;;;;-1:-1:-1;;395:982:111;;;;2303:62:24;;:::i;:::-;-1:-1:-1;;;;;;;;;;;395:982:111;;-1:-1:-1;;;;;;395:982:111;;;;;;;-1:-1:-1;;;;;395:982:111;3975:40:24;395:982:111;;3975:40:24;395:982:111;;;;;;;-1:-1:-1;;395:982:111;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;395:982:111;2636:68:108;395:982:111;;;;;-1:-1:-1;395:982:111;;;;;;;;;;;;;;;;;-1:-1:-1;;395:982:111;;;;-1:-1:-1;;;;;;;;;;;395:982:111;;;-1:-1:-1;;;;;395:982:111;;;;;;;;;;;;;;-1:-1:-1;;395:982:111;;;;;;3901:31:23;395:982:111;;;;;:::i;:::-;;;-1:-1:-1;395:982:111;-1:-1:-1;;;;;;;;;;;395:982:111;;;-1:-1:-1;395:982:111;;;;;;;;;;;;;;;;;3901:31:23;395:982:111;;;;;;;;;;;;;;;;-1:-1:-1;;395:982:111;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;395:982:111;;;;-1:-1:-1;395:982:111;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;416:25:86;;;;477:31;416:25;;:::i;:::-;395:982:111;;;;;;;;;;477:31:86;;395:982:111;;;;;;;;;;;:::i;:::-;477:31:86;;;;;;;;;:::i;:::-;518:79;;;395:982:111;518:79:86;;395:982:111;;;;;;-1:-1:-1;;395:982:111;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;395:982:111;;;;;;;;;;;;;;;;;-1:-1:-1;;395:982:111;;;;;;;900:35:108;395:982:111;;;;;;;;;-1:-1:-1;;395:982:111;;;;;2995:94:108;395:982:111;;;;;:::i;:::-;;;-1:-1:-1;395:982:111;2995:94:108;395:982:111;;;-1:-1:-1;395:982:111;;;;;;;;;;;;;;;;;2995:94:108;395:982:111;;;;;;;;;;;;;-1:-1:-1;;395:982:111;;;;;;3145:92:108;395:982:111;;;;;:::i;:::-;;;-1:-1:-1;395:982:111;3145:92:108;395:982:111;;;-1:-1:-1;395:982:111;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;395:982:111;;;;;;;1187:40:108;395:982:111;;;;;;;;;-1:-1:-1;;395:982:111;;;;3983:31:108;395:982:111;;;-1:-1:-1;;;;;395:982:111;;;;;;;;;;;;;;-1:-1:-1;;395:982:111;;;;;;-1:-1:-1;395:982:111;2875:64:108;395:982:111;;;;-1:-1:-1;395:982:111;;;;;;;;;;;;;;-1:-1:-1;;395:982:111;;;;2387:22:108;395:982:111;;;-1:-1:-1;;;;;395:982:111;;;;;;;;;;;;;;-1:-1:-1;;395:982:111;;;;;;;1333:36:108;395:982:111;;;;;;;;;-1:-1:-1;;395:982:111;;;;2217:24:108;395:982:111;;;-1:-1:-1;;;;;395:982:111;;;;;;;;;;;;;;-1:-1:-1;;395:982:111;;;;5767:26:23;395:982:111;;;;;;;:::i;:::-;;-1:-1:-1;395:982:111;-1:-1:-1;;;;;;;;;;;395:982:111;;3202:4:23;4919:24;395:982:111;-1:-1:-1;395:982:111;4919:24:23;395:982:111;3202:4:23;:::i;:::-;5767:26;:::i;395:982:111:-;;;;;;-1:-1:-1;;395:982:111;;;;;;;;;;;;;-1:-1:-1;;;;;395:982:111;;;;;;;;;;;;-1:-1:-1;;395:982:111;;;;;;;466:39:108;395:982:111;;;;;;;;;-1:-1:-1;;395:982:111;;;;;3900:27:108;395:982:111;;;;;;;;;;;;;-1:-1:-1;;395:982:111;;;;;;;1616:3:108;395:982:111;;;;;;;;;-1:-1:-1;;395:982:111;;;;;;;;;;;;;;;;;;;-1:-1:-1;;395:982:111;;;;;;;1285:6:106;395:982:111;;;;;;;;;-1:-1:-1;;395:982:111;;;;2357:1:24;395:982:111;;;;;:::i;:::-;2303:62:24;;:::i;:::-;2357:1;:::i;395:982:111:-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;395:982:111;;;;;;;:::o;:::-;;:::i;:::-;;;477:31:86;;395:982:111;;;;;;;;-1:-1:-1;;;;;395:982:111;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;395:982:111;;;;;;;:::o;:::-;;;;6326:19:106;395:982:111;;;;;-1:-1:-1;;;;;395:982:111;;;;;;;:::o;:::-;-1:-1:-1;;;;;395:982:111;;;;;;-1:-1:-1;;395:982:111;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;395:982:111;;;;;;:::o;1167:340:82:-;;395:982:111;1167:340:82;6893:76:26;;:::i;:::-;;;:::i;:::-;1949:1:30;2499:73;1991:1;-1:-1:-1;;;;;395:982:111;;1376:73:82;;1167:340;395:982:111;;;;:::i;:::-;;;740:55:109;;;;;;;395:982:111;;;;;;;740:55:109;;;395:982:111;;-1:-1:-1;;;;;395:982:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;807:73;395:982;;755:135;395:982;;;;;;:::i;:::-;;;;;;;;848:17:109;395:982:111;:::i;:::-;877:169:109;929:107;;1614:14:106;1007:11:109;;1020:13;;395:982:111;996:38:109;395:982:111;;996:38:109;;;;;;;:::i;:::-;;477:31:86;996:38:109;477:31:86;;996:38:109;;;;;;;;:::i;:::-;395:982:111;;-1:-1:-1;;;929:107:109;;;;395:982:111;;;929:107:109;;;;:::i;:::-;;;;;;;;;:::i;:::-;877:169;;:::i;:::-;;807:73:111;866:12;;:::i;:::-;395:982;;807:73;;;;;;;;;;929:107:109;807:73:111;;;:::i;:::-;;;;;;;;;:::i;:::-;755:135;:::i;:::-;;1167:340:82:o;1376:73::-;6961:1:26;6893:76;;;:::i;:::-;;;:::i;6961:1::-;1376:73:82;;;395:982:111;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;395:982:111;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;395:982:111;;;;;;;;-1:-1:-1;;395:982:111;;;;:::o;3405:215:24:-;-1:-1:-1;;;;;395:982:111;;;;3489:22:24;;3485:91;;-1:-1:-1;;;;;;;;;;;395:982:111;;-1:-1:-1;;;;;;395:982:111;;;;;;;;3975:40:24;-1:-1:-1;;3975:40:24;3405:215::o;3485:91::-;395:982:111;;-1:-1:-1;;;3534:31:24;;3509:1;3534:31;;;395:982:111;;;3534:31:24;1809:204:82;;395:982:111;1038:1;1809:204:82;-1:-1:-1;;;;;1809:204:82;395:982:111;;;:::i;:::-;;;1024:15;1038:1;;395:982;1055:86;;1155:143;395:982;1211:73;1270:12;;:::i;:::-;395:982;;807:73;;;;;;1211;;;;;;;;395:982;;;;;;:::i;1211:73::-;1614:14:106;1155:143:111;:::i;1055:86::-;395:982;;-1:-1:-1;;;1101:25:111;;1038:1;;1101:25;1020:349;395:982;;-1:-1:-1;;;1336:22:111;;1038:1;;1336:22;4148:103:23;-1:-1:-1;395:982:111;;;-1:-1:-1;;;;;;;;;;;395:982:111;;;;;;;;966:10:28;395:982:111;;;;;;;;;;4468:23:23;4464:108;;4148:103;:::o;4464:108::-;395:982:111;;;;4514:47:23;;;;;;966:10:28;4514:47:23;;;395:982:111;;;;;4514:47:23;7270:387;-1:-1:-1;;;;;395:982:111;;3217:17:106;395:982:111;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2887:71:23;395:982:111;;;;3217:17:106;395:982:111;;;;;;;;;;;-1:-1:-1;;;;;395:982:111;;;;;;;;;;-1:-1:-1;;395:982:111;7509:4:23;395:982:111;;;966:10:28;;-1:-1:-1;;;;;395:982:111;-1:-1:-1;7532:40:23;-1:-1:-1;;7532:40:23;7509:4;7586:11;:::o;7432:219::-;7628:12;;3217:17:106;7628:12:23;:::o;7270:387::-;-1:-1:-1;;;;;395:982:111;;-1:-1:-1;395:982:111;;;;;;;;;466:39:108;;-1:-1:-1;;;;;;;;;;;2887:71:23;395:982:111;;3901:31:23;395:982:111;;;;-1:-1:-1;395:982:111;;;;;;;;;;;-1:-1:-1;;;;;395:982:111;;;;;;;;;;-1:-1:-1;;395:982:111;7509:4:23;395:982:111;;;966:10:28;;-1:-1:-1;;;;;395:982:111;;7532:40:23;-1:-1:-1;;7532:40:23;7509:4;7586:11;:::o;7432:219::-;7628:12;;;-1:-1:-1;7628:12:23;:::o;7270:387::-;-1:-1:-1;;;;;395:982:111;;-1:-1:-1;395:982:111;;;;;;;;;612:37:108;;-1:-1:-1;;;;;;;;;;;2887:71:23;395:982:111;;3901:31:23;395:982:111;7270:387:23;-1:-1:-1;;;;;395:982:111;;-1:-1:-1;395:982:111;;;;;;;;;757:38:108;;-1:-1:-1;;;;;;;;;;;2887:71:23;395:982:111;;3901:31:23;395:982:111;7270:387:23;-1:-1:-1;;;;;395:982:111;;-1:-1:-1;395:982:111;;;;;;;;;900:35:108;;-1:-1:-1;;;;;;;;;;;2887:71:23;395:982:111;;3901:31:23;395:982:111;7270:387:23;-1:-1:-1;;;;;395:982:111;;-1:-1:-1;395:982:111;;;;;;;;;1041:36:108;;-1:-1:-1;;;;;;;;;;;2887:71:23;395:982:111;;3901:31:23;395:982:111;7270:387:23;-1:-1:-1;;;;;395:982:111;;-1:-1:-1;395:982:111;;;;;;;;;1187:40:108;;-1:-1:-1;;;;;;;;;;;2887:71:23;395:982:111;;3901:31:23;395:982:111;7270:387:23;-1:-1:-1;;;;;395:982:111;;-1:-1:-1;395:982:111;;;;;;;;;1333:36:108;;-1:-1:-1;;;;;;;;;;;2887:71:23;395:982:111;;3901:31:23;395:982:111;7270:387:23;-1:-1:-1;;;;;395:982:111;;-1:-1:-1;395:982:111;;;;;;;;;1479:40:108;;-1:-1:-1;;;;;;;;;;;2887:71:23;395:982:111;;3901:31:23;395:982:111;7270:387:23;-1:-1:-1;395:982:111;;;-1:-1:-1;;;;;;;;;;;395:982:111;;;;;;;;-1:-1:-1;;;;;395:982:111;;;;;;;;;;;;3901:31:23;395:982:111;7892:388:23;-1:-1:-1;395:982:111;;;-1:-1:-1;;;;;;;;;;;395:982:111;;;;;;;;-1:-1:-1;;;;;395:982:111;;;;;;;;;;;;;;;;-1:-1:-1;395:982:111;;;;;;;;;;;-1:-1:-1;;;;;395:982:111;;;;;;;;;;-1:-1:-1;;395:982:111;;;966:10:28;;-1:-1:-1;;;;;395:982:111;;8155:40:23;-1:-1:-1;;8155:40:23;395:982:111;8209:11:23;:::o;395:982:111:-;;;;;;;;;-1:-1:-1;;;;;395:982:111;;;;;;;1398:1:82;395:982:111;;;1398:1:82;395:982:111;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;:::o;2658:162:24:-;-1:-1:-1;;;;;;;;;;;395:982:111;-1:-1:-1;;;;;395:982:111;966:10:28;2717:23:24;2713:101;;2658:162::o;2713:101::-;395:982:111;;-1:-1:-1;;;2763:40:24;;966:10:28;2763:40:24;;;395:982:111;;;2763:40:24;2323:83:50;1019:819;;;;;;;1614:14:106;;1019:819:50;;;;;;;;;;;;;;;;7084:141:26;395:982:111;-1:-1:-1;;;;;;;;;;;395:982:111;;;;7150:18:26;7146:73;;7084:141::o;7146:73::-;395:982:111;;-1:-1:-1;;;7191:17:26;;;;;395:982:111;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;395:982:111;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;3900:253:56:-;4049:25;3900:253;4091:55;3900:253;4049:25;;;;;;;;;;:::i;:::-;4091:55;;:::i;395:982:111:-;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;395:982:111;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;395:982:111;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;3036:4829:106;3165:37;3036:4829;3165:37;395:982:111;;;3165:37:106;;;;;;:::i;:::-;395:982:111;;;;-1:-1:-1;;;;;395:982:111;;;3217:31:106;3213:95;;3322:20;;;;;395:982:111;;;;;;;;;;;3322:25:106;3318:92;;3424:29;;;395:982:111;;3424:29:106;;395:982:111;3424:43:106;;-1:-1:-1;;;;;395:982:111;;-1:-1:-1;;;;;395:982:111;;;3424:43:106;;3420:971;;3036:4829;4406:23;;;395:982:111;4405:24:106;395:982:111;;;;;;;;4405:24:106;;395:982:111;4405:24:106;:67;;;3036:4829;4401:132;;4563:28;;;;4548:9;3217:17;4600:3;4563:28;;395:982:111;;4559:39:106;;;;;4623:31;;;:45;:31;;:::i;:::-;395:982:111;-1:-1:-1;;;;;395:982:111;;;4623:45:106;;4619:114;;4751:55;;4774:31;;:28;;;:31;:::i;:::-;-1:-1:-1;;;;;395:982:111;;;;;4751:22:106;395:982:111;;;;;;;4751:55:106;395:982:111;;;;;4751:55:106;4747:120;;4904:28;4881:62;:55;4904:31;;395:982:111;4904:28:106;;;:31;:::i;4881:55::-;395:982:111;;-1:-1:-1;;395:982:111;4939:4:106;395:982:111;;;;4881:62:106;395:982:111;4548:9:106;;4747:120;395:982:111;;-1:-1:-1;;;4833:19:106;;;;;4619:114;395:982:111;;-1:-1:-1;;;4695:23:106;;;;;4559:39;;;;;;;;;;4968:43;395:982:111;;;;;;;;;;;4968:43:106;;4964:1124;;4543:411;6201:34;;;395:982:111;6271:23:106;;;;395:982:111;;;;;;;;6326:19:106;;;395:982:111;6381:23:106;;;395:982:111;6450:33:106;;;395:982:111;6532:36:106;;;395:982:111;6613:32:106;;;395:982:111;6694:36:106;;;395:982:111;-1:-1:-1;;;;;395:982:111;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;3165:37:106;6133:612;;395:982:111;6133:612:106;;395:982:111;-1:-1:-1;;;;;395:982:111;4406:23:106;6133:612;;395:982:111;-1:-1:-1;;;;;395:982:111;6133:612:106;;;395:982:111;-1:-1:-1;;;;;395:982:111;6133:612:106;;;395:982:111;-1:-1:-1;;;;;395:982:111;6201:34:106;6133:612;;395:982:111;-1:-1:-1;;;;;395:982:111;6271:23:106;6133:612;;395:982:111;6133:612:106;;;:::i;:::-;395:982:111;;-1:-1:-1;;;;;395:982:111;3217:17:106;395:982:111;;-1:-1:-1;;;;;;395:982:111;;;;;;-1:-1:-1;;;;;395:982:111;;;;;;;3165:37:106;6816:13;;395:982:111;-1:-1:-1;;;;;395:982:111;;;;-1:-1:-1;;;;;;395:982:111;-1:-1:-1;;;;;395:982:111;;;;;;;;;819:34:73;837:15;819:34;:::i;:::-;4939:4:106;395:982:111;;-1:-1:-1;;;;395:982:111;;;;;;-1:-1:-1;;;395:982:111;;;;;;;;;;4939:4:106;395:982:111;;-1:-1:-1;;;;;395:982:111;;;;;;-1:-1:-1;;;;;;395:982:111;;;;;;;;;;6935:42:106;;395:982:111;;;3217:17:106;395:982:111;;;;;;;3217:17:106;395:982:111;;6935:42:106;6133:612;7005:21;;395:982:111;3217:17:106;395:982:111;;-1:-1:-1;;395:982:111;;;;;;;;;;;;;;6133:612:106;7051:19;;395:982:111;7036:34:106;1991:1:30;395:982:111;-1:-1:-1;;;;;395:982:111;;;7718:32:106;;395:982:111;;;7081:135:106;;4543:411;-1:-1:-1;7229:36:106;;;395:982:111;-1:-1:-1;;;;;395:982:111;;;;7225:157:106;;4543:411;-1:-1:-1;7395:35:106;;;395:982:111;-1:-1:-1;;;;;395:982:111;;;;7391:153:106;;4543:411;-1:-1:-1;7557:34:106;;;395:982:111;-1:-1:-1;;;;;395:982:111;;;;7553:152:106;;4543:411;-1:-1:-1;7718:32:106;395:982:111;-1:-1:-1;;;;;395:982:111;;;;;;;7714:145:106;;3036:4829;:::o;7714:145::-;7780:68;;;:::i;7553:152::-;7621:73;;;:::i;:::-;;7553:152;;;7391:153;7460:73;;;:::i;:::-;;7391:153;;;7225:157;7295:76;;;:::i;:::-;;7225:157;;;7081:135;7144:61;;;:::i;:::-;;7081:135;;;4964:1124;5031:23;;;;;395:982:111;5031:23:106;;;395:982:111;;;;;;5031:77:106;;;;4964:1124;5027:1051;;;5154:23;;;395:982:111;5154:37:106;;-1:-1:-1;;;;;395:982:111;;;5154:37:106;;;;;:91;;5027:1051;5153:197;;;5027:1051;5128:638;;;395:982:111;;-1:-1:-1;;;5398:27:106;;;;;5128:638;5476:19;;;;;;;;;395:982:111;5476:24:106;;;;:74;;;5128:638;5475:197;;;5128:638;5450:316;;4964:1124;5450:316;395:982:111;-1:-1:-1;;;5720:27:106;;;;;5475:197;5580:91;-1:-1:-1;5580:91:106;;;5475:197;;;;5580:91;-1:-1:-1;5621:36:106;;;395:982:111;5621:50:106;;-1:-1:-1;;;;;395:982:111;;;5621:50:106;;5580:91;;5476:74;5504:32;;;395:982:111;5504:32:106;;-1:-1:-1;5504:46:106;;-1:-1:-1;;;;;395:982:111;;;5504:46:106;;;5476:74;;;5153:197;5275:19;;;;395:982:111;5275:24:106;:74;;5153:197;5275:74;-1:-1:-1;5303:32:106;;;395:982:111;5303:46:106;;-1:-1:-1;;;;;395:982:111;;;5303:46:106;;5153:197;;5154:91;-1:-1:-1;5195:36:106;;;395:982:111;5195:50:106;;-1:-1:-1;;;;;395:982:111;;;5195:50:106;;;5154:91;;5027:1051;5807:23;;;;;:37;395:982:111;5807:23:106;;;395:982:111;;;;;;;;;5807:37:106;;;;:65;;;5027:1051;5807:139;;;;5027:1051;5807:189;;;;5027:1051;5786:292;4964:1124;5786:292;395:982:111;-1:-1:-1;;;6036:27:106;;;;;5807:189;-1:-1:-1;5950:32:106;;;395:982:111;5950:46:106;;-1:-1:-1;;;;;395:982:111;;;5950:46:106;;;5807:189;;:139;-1:-1:-1;5896:36:106;;;395:982:111;5896:50:106;;-1:-1:-1;;;;;395:982:111;;;5896:50:106;;;5807:139;;:65;5848:19;;;;395:982:111;5848:24:106;;5807:65;;5031:77;-1:-1:-1;5058:36:106;;;395:982:111;5058:50:106;;-1:-1:-1;;;;;395:982:111;;;5058:50:106;;;5031:77;;4401:132;395:982:111;;-1:-1:-1;;;4495:27:106;;;;;4405:67;4433:28;;;;;395:982:111;4433:39:106;;4405:67;;3420:971;3487:36;;;395:982:111;3487:50:106;;-1:-1:-1;;;;;395:982:111;;;3487:50:106;;3483:419;;3420:971;3920:34;;;395:982:111;3920:48:106;;-1:-1:-1;;;;;395:982:111;;;3920:48:106;;3916:465;;3420:971;;;3916:465;3992:21;;;395:982:111;;3992:21:106;;4041:19;;;395:982:111;4041:24:106;:74;;;3988:379;4037:157;3420:971;4037:157;395:982:111;;-1:-1:-1;;;4150:21:106;;;;;4041:74;-1:-1:-1;4069:32:106;;;395:982:111;4069:46:106;;-1:-1:-1;;;;;395:982:111;;;4069:46:106;;4041:74;;3988:379;4222:19;;;395:982:111;4222:24:106;;;:74;;;3988:379;4218:149;3916:465;4218:149;395:982:111;;-1:-1:-1;;;4327:21:106;;;;;4222:74;-1:-1:-1;4250:32:106;;;395:982:111;4250:46:106;;-1:-1:-1;;;;;395:982:111;;;4250:46:106;;;4222:74;;3483:419;3561:23;;;395:982:111;;3561:23:106;;3612:35;;;395:982:111;3612:49:106;;-1:-1:-1;;;;;395:982:111;;;3612:49:106;3483:419;3608:132;395:982:111;;-1:-1:-1;;;3696:21:106;;;;;3557:331;3768:35;;;395:982:111;3768:49:106;;-1:-1:-1;;;;;395:982:111;;;3768:49:106;3764:124;3483:419;3764:124;395:982:111;;-1:-1:-1;;;3848:21:106;;;;;3318:92;395:982:111;;-1:-1:-1;;;3370:29:106;;;;;3213:95;395:982:111;;-1:-1:-1;;;3271:26:106;;;;;4421:582:56;;4593:8;;-1:-1:-1;395:982:111;;5674:21:56;:17;;5799:158;;;;;;5670:354;395:982:111;;-1:-1:-1;;;5994:19:56;;;;;4589:408;395:982:111;;4841:22:56;:49;;;4589:408;4837:119;;4969:17;;:::o;4837:119::-;395:982:111;;-1:-1:-1;;;4917:24:56;;-1:-1:-1;;;;;395:982:111;;;4917:24:56;;;395:982:111;;;4917:24:56;4841:49;4867:18;;;:23;4841:49;;1641:1097:106;1782:1;395:982:111;;1745:38:106;1741:119;;1870:65;395:982:111;;1870:65:106;1991:1:30;;1870:65:106;1946:42;395:982:111;1965:23:106;;;395:982:111;;;;;;1946:42:106;395:982:111;;-1:-1:-1;;;;395:982:111;;;;;;-1:-1:-1;;;395:982:111;;;;;;;;1946:42:106;1998:34;2013:19;;;395:982:111;1998:34:106;1991:1:30;;1998:34:106;2061:23;;;395:982:111;1946:42:106;395:982:111;;-1:-1:-1;;;;;;395:982:111;-1:-1:-1;;;;;395:982:111;;;;;;2099:33:106;;;395:982:111;;;;;2578:36:106;;2061:23;395:982:111;;;2095:148:106;;1641:1097;-1:-1:-1;2256:36:106;;;395:982:111;-1:-1:-1;;;;;395:982:111;;;;2252:158:106;;1641:1097;-1:-1:-1;2423:32:106;;;395:982:111;-1:-1:-1;;;;;395:982:111;;;;2419:146:106;;-1:-1:-1;2578:36:106;395:982:111;-1:-1:-1;;;;;395:982:111;;;;;;;2574:158:106;;1641:1097;:::o;2574:158::-;2644:77;;;:::i;2419:146::-;2485:69;;;:::i;2252:158::-;2322:77;;;:::i;:::-;;2252:158;;;2095:148;2162:70;;;:::i;:::-;;2095:148;;;1741:119;395:982:111;;-1:-1:-1;;;1806:43:106;;;;;14296:213:69;395:982:111;14374:24:69;;;;14370:103;;395:982:111;14296:213:69;:::o;14370:103::-;395:982:111;;;;14421:41:69;;;;;;14452:2;14421:41;;;395:982:111;;;;;14421:41:69","linkReferences":{},"immutableReferences":{"60067":[{"start":1177,"length":32},{"start":1540,"length":32}],"69325":[{"start":4346,"length":32},{"start":4832,"length":32},{"start":6474,"length":32}]}},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","DEPOSITOR_WHITELIST_ROLE()":"1b66c9e1","DEPOSIT_LIMIT_SET_ROLE()":"a21a1df9","DEPOSIT_WHITELIST_SET_ROLE()":"db388715","EPOCH_DURATION_SET_ROLE()":"61819dd8","FACTORY()":"2dd31000","FLASH_FEE_BASE()":"ecc98f05","FLASH_FEE_RATE_SET_ROLE()":"bc46f722","FLASH_FEE_RECEIVER_SET_ROLE()":"31d9736c","FLASH_LOAN_ENABLED_SET_ROLE()":"a66b3a73","IS_DEPOSIT_LIMIT_SET_ROLE()":"1415519b","MIN_EXIT_WINDOW()":"f151f6b5","RETURN_VALUE()":"653b04cd","burner()":"27810b6e","collateral()":"d8dfeb45","delegator()":"ce9b7930","depositLimit()":"ecf70858","depositWhitelist()":"48d3b775","flashFeeRate()":"e945da7f","flashFeeReceiver()":"a8b24f9a","flashLoanEnabled()":"65d61c6c","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","initialize(uint64,address,bytes)":"57ec83cc","isDelegatorInitialized()":"50861adc","isDepositLimit()":"a1b12202","isDepositorWhitelisted(address)":"794b15b7","isSlasherInitialized()":"6ec1e3f8","isWithdrawalsClaimed(uint256,address)":"a5d03223","migrate(uint64,bytes)":"2abe3048","owner()":"8da5cb5b","renounceOwnership()":"715018a6","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","slasher()":"b1344271","staticDelegateCall(address,bytes)":"9f86fd85","supportsInterface(bytes4)":"01ffc9a7","transferOwnership(address)":"f2fde38b","version()":"54fd4d50","withdrawalShares(uint256)":"afba70ad","withdrawalSharesOf(uint256,address)":"a3b54172","withdrawals(uint256)":"5cc07076"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vaultFactory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadySet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCollateral\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidData\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEpochDuration\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEpochDurationSetEpochsDelay\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidFlashParams\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOrigin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingRoles\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoDepositWhitelist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotFactory\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEPOSITOR_WHITELIST_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEPOSIT_LIMIT_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEPOSIT_WHITELIST_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"EPOCH_DURATION_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FLASH_FEE_BASE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FLASH_FEE_RATE_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FLASH_FEE_RECEIVER_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FLASH_LOAN_ENABLED_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"IS_DEPOSIT_LIMIT_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MIN_EXIT_WINDOW\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RETURN_VALUE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"burner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"collateral\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"delegator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"depositLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"depositWhitelist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"flashFeeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"flashFeeReceiver\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"flashLoanEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"initialVersion\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner_\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isDelegatorInitialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isDepositLimit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isDepositorWhitelisted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isSlasherInitialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isWithdrawalsClaimed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newVersion\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"migrate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slasher\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"staticDelegateCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"}],\"name\":\"withdrawalShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"withdrawalSharesOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"}],\"name\":\"withdrawals\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize(uint64,address,bytes)\":{\"params\":{\"data\":\"some data to use\",\"initialVersion\":\"initial version of the entity\",\"owner\":\"initial owner of the entity\"}},\"migrate(uint64,bytes)\":{\"params\":{\"data\":\"some data to use\",\"newVersion\":\"new version of the entity\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"staticDelegateCall(address,bytes)\":{\"details\":\"It allows to use this contract's storage on-chain.\",\"params\":{\"data\":\"data to make a delegatecall with\",\"target\":\"address of the contract to make a delegatecall to\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"version()\":{\"details\":\"Starts from 1.\",\"returns\":{\"_0\":\"version of the entity\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DEPOSITOR_WHITELIST_ROLE()\":{\"notice\":\"Get a depositor whitelist status setter's role.\"},\"DEPOSIT_LIMIT_SET_ROLE()\":{\"notice\":\"Get a deposit limit setter's role.\"},\"DEPOSIT_WHITELIST_SET_ROLE()\":{\"notice\":\"Get a deposit whitelist enabler/disabler's role.\"},\"EPOCH_DURATION_SET_ROLE()\":{\"notice\":\"Get a epoch duration setter's role.\"},\"FACTORY()\":{\"notice\":\"Get the factory's address.\"},\"FLASH_FEE_BASE()\":{\"notice\":\"Get a flash fee base.\"},\"FLASH_FEE_RATE_SET_ROLE()\":{\"notice\":\"Get a flash fee rate setter's role.\"},\"FLASH_FEE_RECEIVER_SET_ROLE()\":{\"notice\":\"Get a flash fee receiver setter's role.\"},\"FLASH_LOAN_ENABLED_SET_ROLE()\":{\"notice\":\"Get a flash loan enabled setter's role.\"},\"IS_DEPOSIT_LIMIT_SET_ROLE()\":{\"notice\":\"Get a deposit limit enabler/disabler's role.\"},\"MIN_EXIT_WINDOW()\":{\"notice\":\"The minimum period of time that must be available to exit in case of epoch increase after migration.\"},\"RETURN_VALUE()\":{\"notice\":\"Get a value that must be returned by the flash loan borrower.\"},\"burner()\":{\"notice\":\"Get a burner to issue debt to (e.g., 0xdEaD or some unwrapper contract).\"},\"collateral()\":{\"notice\":\"Get a vault collateral.\"},\"delegator()\":{\"notice\":\"Get a delegator (it delegates the vault's stake to networks and operators).\"},\"depositLimit()\":{\"notice\":\"Get a deposit limit (maximum amount of the active stake that can be in the vault simultaneously).\"},\"depositWhitelist()\":{\"notice\":\"Get if the deposit whitelist is enabled.\"},\"flashFeeRate()\":{\"notice\":\"Get a flash fee rate (100% = 1_000_000_000; 0.03% = 300_000).\"},\"flashFeeReceiver()\":{\"notice\":\"Get a flash fee receiver.\"},\"flashLoanEnabled()\":{\"notice\":\"Get if a flash loan mechanic is enabled.\"},\"initialize(uint64,address,bytes)\":{\"notice\":\"Initialize this entity contract by using a given data and setting a particular version and owner.\"},\"isDelegatorInitialized()\":{\"notice\":\"Get if the delegator is initialized.\"},\"isDepositLimit()\":{\"notice\":\"Get if the deposit limit is set.\"},\"isDepositorWhitelisted(address)\":{\"notice\":\"Get if a given account is whitelisted as a depositor.\"},\"isSlasherInitialized()\":{\"notice\":\"Get if the slasher is initialized.\"},\"isWithdrawalsClaimed(uint256,address)\":{\"notice\":\"Get if the withdrawals are claimed for a particular account at a given epoch.\"},\"migrate(uint64,bytes)\":{\"notice\":\"Migrate this entity to a particular newer version using a given data.\"},\"slasher()\":{\"notice\":\"Get a slasher (it provides networks a slashing mechanism).\"},\"staticDelegateCall(address,bytes)\":{\"notice\":\"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data).\"},\"version()\":{\"notice\":\"Get the entity's version.\"},\"withdrawalShares(uint256)\":{\"notice\":\"Get a total number of withdrawal shares at a given epoch.\"},\"withdrawalSharesOf(uint256,address)\":{\"notice\":\"Get a number of withdrawal shares for a particular account at a given epoch (zero if claimed).\"},\"withdrawals(uint256)\":{\"notice\":\"Get a total amount of the withdrawals at a given epoch.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/vault/v1.1/VaultVotes.sol\":\"VaultVotes\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/governance/utils/VotesUpgradeable.sol\":{\"keccak256\":\"0x5d043309b7688b0182e3020af70b5cb0b9186e111d39409ebca8177739a9d43b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e32bd2dd9e49f088cd19b007a5d83e960059f4d8c5b26ef1764c07c980a2e8e0\",\"dweb:/ipfs/QmQ2Dr7rVELrE2aEmX4jy9RSQYkYxnazcqQk6w2Pzfwdcs\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol\":{\"keccak256\":\"0xbb96dc9c468170c3224126e953de917e06332ec5909a3d85e6e5bb0df10c5139\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d14e6486e127e7e31c2ffccfc212c7ebaaecf8fb05677575128b449ee113def2\",\"dweb:/ipfs/QmabvyfStwBcum8mGfkmxcTV45rjyHmzHGCxfxyhmu48Yx\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/NoncesUpgradeable.sol\":{\"keccak256\":\"0x778f4a1546a1c6c726ecc8e2348a2789690fb8f26e12bd9d89537669167b79a4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://851d3dfe724e918ff0a064b206e1ef46b27ab0df2aa2c8af976973a22ef59827\",\"dweb:/ipfs/Qmd4wb7zX8ueYhMVBy5PJjfsANK3Ra3pKPN7qQkNsdwGHn\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf\",\"dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/cryptography/EIP712Upgradeable.sol\":{\"keccak256\":\"0x7a618cd9a1eea21201ec2ed8484080ca6225215e8883723bef34b9dcf22aa3b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://287a73451277e35206f1f8b9f20b2cd41732081bd23523f5a2c64e1e67694c33\",\"dweb:/ipfs/QmdPVK7KACRpoavNUoixGsi8jBWeZUJfNYCzZbHGSGz5yu\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89\",\"dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1\",\"dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX\"]},\"lib/openzeppelin-contracts/contracts/governance/utils/IVotes.sol\":{\"keccak256\":\"0x5e2b397ae88fd5c68e4f6762eb9f65f65c36702eb57796495f471d024ce70947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://348fc8e291d54314bb22437b532f443d5dbfb80c8cc9591567c1af6554ccf856\",\"dweb:/ipfs/QmP8ZTyitZinxcpwAHeYHhwj7u21zPpKXSiww38V74sXC2\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol\":{\"keccak256\":\"0x0b1459615b9b47c2a4eec8e72f23ccc601f1d711f679a1c06b3390459021a341\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aaf6209fb90f02ebd1c9603568f5e6da5fa2f896820ba66b5041eeed993dc4ce\",\"dweb:/ipfs/QmYsSH2PSGbTXMVXXxhh9AXzfHPSz2j42REvds6xjU7WmR\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashLender.sol\":{\"keccak256\":\"0x5d19ea24c555cf6a5dbafea9fac57887cc3e72154f3ee8e0a2bf67971811c14b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3af1364c971d94bccf3efcc509b2c5c03fe1c69ea9945ba29a96998bfd6c593e\",\"dweb:/ipfs/Qmczq52prNGX5tHuk8aENZsuYgxTeA6YVMHV7yMTKeFjbr\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC5805.sol\":{\"keccak256\":\"0x4b9b89f91adbb7d3574f85394754cfb08c5b4eafca8a7061e2094a019ab8f818\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7373d5dbb8eb2381aa0883a456fac89283fcaf52f42fa805d4188f270716742a\",\"dweb:/ipfs/QmVnZDmT4ABvNhRJMaQnbCzsCA8HpyHPVaxi4fCi92LFv2\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC6372.sol\":{\"keccak256\":\"0xeb2857b7dafb7e0d8526dbfe794e6c047df2851c9e6ee91dc4a55f3c34af5d33\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://49bf13f6c2a38a9bcc7b852d4e2b9cebb4068b832642cce61069cdb5f06bb2fb\",\"dweb:/ipfs/QmdKAJVE7rR2kENCZnEM1yKswrGii7WuE9gZpsQvnXJhwn\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0\",\"dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e\",\"dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44\",\"dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6\",\"dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza\"]},\"src/contracts/common/MigratableEntity.sol\":{\"keccak256\":\"0x303ad40a3de8fa808cc30a6fbd5998633f6a89b982e6db1fa981e0566ab445e7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://fa8fb92995ead02798e013190b87b84b44cc68668262f045c9b0b4783940e2bf\",\"dweb:/ipfs/QmV1uKGVLKwWisc714R8fCt71gXUQJpaKvdc6LQ8WtvMpL\"]},\"src/contracts/common/StaticDelegateCallable.sol\":{\"keccak256\":\"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764\",\"dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD\"]},\"src/contracts/libraries/Checkpoints.sol\":{\"keccak256\":\"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609\",\"dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE\"]},\"src/contracts/vault/v1.1/Vault.sol\":{\"keccak256\":\"0x0809cdc31876a00412d127f2b10589a38ef0110585f7ee70d4e50a560812c15e\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://66ed92da583d2e0b4eba1e07e5d7569a9f3bebfaa1d82968f3ca124d840e1618\",\"dweb:/ipfs/QmWR7gbmGyZAo6LCTtx3pRMviN7ZBsxp1kGndTmo4CFGRc\"]},\"src/contracts/vault/v1.1/VaultStorage.sol\":{\"keccak256\":\"0x510c83437bb493d66c299aec31ccd9d741e1348299b4170d891d476218231d19\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://8879b6b1ad9ecc8ffa5d7725b03158dc2f65e30ac65fe3af9c654277740039e0\",\"dweb:/ipfs/QmdC4DkajUbGuRzaCsqegJWGTxXvooWFCVkU7EdXG9mou2\"]},\"src/contracts/vault/v1.1/VaultTokenized.sol\":{\"keccak256\":\"0x6b40159424394daadca3f21c58aac3650d1fd6d906494367a799bc33c27cd07e\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://0b908da3ff66b6c6c3e6d973e2cc55caf6eb5a0d7917268ea4682e106b306dc1\",\"dweb:/ipfs/QmUs5F2dz4PoX9DjgxV8oU3SjzEGJCx3Sq5E2Q7xqdDZQs\"]},\"src/contracts/vault/v1.1/VaultTokenizedImplementation.sol\":{\"keccak256\":\"0x07bb1e77b3c7cd0c754d4ae874fb731f82cf31a6647c40db6e0b8e7e491af2ca\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1514dd2e4f16c13c764529524c0f66f2009a2d348e5e680d170ca6eb81ec0266\",\"dweb:/ipfs/QmXAKr68V1nPXsee8GUVYAYiiY5bDqKpTamU5DenMPhewX\"]},\"src/contracts/vault/v1.1/VaultVotes.sol\":{\"keccak256\":\"0xd92d997fb4c65fa00cc6cf7a82d39682ff1ab071f23c6fd5b348572f22a9b8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://234dd1cec49ce1d79fc2fc6ca3ac7304cc4c9c8f83074532efdc6f543da936a5\",\"dweb:/ipfs/QmfQC3LnsqzzHpvUgymheHTqVkqtGmCw1Fqq8g4PGD2vVo\"]},\"src/contracts/vault/v1.1/VaultVotesImplementation.sol\":{\"keccak256\":\"0x041fc819e1995d62babe1e6f16127643a21dc64a6f4d7b86bae38d91d847177a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c7625d8ed13406e14402a730dfd2d31d9d2af416b8c1513c17fa4a96dec91b65\",\"dweb:/ipfs/QmPzct62JHMTK68iZhCnNGvNBJshhRCZNdEohb3tEPe6pM\"]},\"src/interfaces/common/IMigratableEntity.sol\":{\"keccak256\":\"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c\",\"dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds\"]},\"src/interfaces/common/IStaticDelegateCallable.sol\":{\"keccak256\":\"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516\",\"dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi\"]},\"src/interfaces/vault/v1.1/IVault.sol\":{\"keccak256\":\"0x41c3b7c7955923f29d7a913dcd49a2f7c4c40339eda1cdf675d04bf15168fbd4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7f26841febf819da87037e7f285fb4e9c3a3191d2cc9284d4679bd5f3d5eb79\",\"dweb:/ipfs/QmejKi1svukhK2bwGPvSXLzG4oMKUZo7xEm1gNvuYWNbDK\"]},\"src/interfaces/vault/v1.1/IVaultStorage.sol\":{\"keccak256\":\"0x762053f3cc4cb5809c48b846a77b36e697323b2011118c2df8ea2692a02ece5b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282252083722ebdb1e8977ba1fd4860e15acb49bb4ec337632dd14304863b1d\",\"dweb:/ipfs/QmNNBo5HaWBenQZLgnjF3NbxVRupfgYeUMztYYQMpD9VoB\"]},\"src/interfaces/vault/v1.1/IVaultTokenized.sol\":{\"keccak256\":\"0x98adcf1802a3e90cdc93e26afd6f27da02727473f18f482a6b297f8574a195e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://10c1d8f09f0ad1e82d198491124e8867dc1c64b242a705c4bb13abaa37b5cea2\",\"dweb:/ipfs/QmfNUPDbLQADLnQbsto5yKW2bR4v5RgphvrqoTQhSE7zkv\"]},\"src/interfaces/vault/v1.1/IVaultVotes.sol\":{\"keccak256\":\"0x0b55695c0c8db6834a1f45b4351df4e85f64c91f801a8959d47e805e1131b6e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://79a8658f328570466c746cff2e67b11a5d64506012d14184f3f17633700b4bdd\",\"dweb:/ipfs/QmPhjrP1YwTMrdtLodhChnmfKaR8MbPehMnpwCEWSu8ji6\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"vaultFactory","type":"address"},{"internalType":"address","name":"implementation","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[],"type":"error","name":"AlreadyInitialized"},{"inputs":[],"type":"error","name":"AlreadySet"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[],"type":"error","name":"InvalidAccount"},{"inputs":[],"type":"error","name":"InvalidCollateral"},{"inputs":[],"type":"error","name":"InvalidData"},{"inputs":[],"type":"error","name":"InvalidEpochDuration"},{"inputs":[],"type":"error","name":"InvalidEpochDurationSetEpochsDelay"},{"inputs":[],"type":"error","name":"InvalidFlashParams"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"InvalidOrigin"},{"inputs":[],"type":"error","name":"MissingRoles"},{"inputs":[],"type":"error","name":"NoDepositWhitelist"},{"inputs":[],"type":"error","name":"NotFactory"},{"inputs":[],"type":"error","name":"NotInitialized"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintDowncast"},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[],"stateMutability":"payable","type":"fallback"},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEPOSITOR_WHITELIST_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEPOSIT_LIMIT_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEPOSIT_WHITELIST_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"EPOCH_DURATION_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FLASH_FEE_BASE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FLASH_FEE_RATE_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FLASH_FEE_RECEIVER_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FLASH_LOAN_ENABLED_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_DEPOSIT_LIMIT_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MIN_EXIT_WINDOW","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"RETURN_VALUE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"burner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"collateral","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"delegator","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"depositLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"depositWhitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"flashFeeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"flashFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"flashLoanEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"initialVersion","type":"uint64"},{"internalType":"address","name":"owner_","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"isDelegatorInitialized","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"isDepositLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"isDepositorWhitelisted","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"isSlasherInitialized","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"isWithdrawalsClaimed","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"newVersion","type":"uint64"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"migrate"},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[],"stateMutability":"view","type":"function","name":"slasher","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"staticDelegateCall"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"version","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"}],"stateMutability":"view","type":"function","name":"withdrawalShares","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"withdrawalSharesOf","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"}],"stateMutability":"view","type":"function","name":"withdrawals","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"initialize(uint64,address,bytes)":{"params":{"data":"some data to use","initialVersion":"initial version of the entity","owner":"initial owner of the entity"}},"migrate(uint64,bytes)":{"params":{"data":"some data to use","newVersion":"new version of the entity"}},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"staticDelegateCall(address,bytes)":{"details":"It allows to use this contract's storage on-chain.","params":{"data":"data to make a delegatecall with","target":"address of the contract to make a delegatecall to"}},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"version()":{"details":"Starts from 1.","returns":{"_0":"version of the entity"}}},"version":1},"userdoc":{"kind":"user","methods":{"DEPOSITOR_WHITELIST_ROLE()":{"notice":"Get a depositor whitelist status setter's role."},"DEPOSIT_LIMIT_SET_ROLE()":{"notice":"Get a deposit limit setter's role."},"DEPOSIT_WHITELIST_SET_ROLE()":{"notice":"Get a deposit whitelist enabler/disabler's role."},"EPOCH_DURATION_SET_ROLE()":{"notice":"Get a epoch duration setter's role."},"FACTORY()":{"notice":"Get the factory's address."},"FLASH_FEE_BASE()":{"notice":"Get a flash fee base."},"FLASH_FEE_RATE_SET_ROLE()":{"notice":"Get a flash fee rate setter's role."},"FLASH_FEE_RECEIVER_SET_ROLE()":{"notice":"Get a flash fee receiver setter's role."},"FLASH_LOAN_ENABLED_SET_ROLE()":{"notice":"Get a flash loan enabled setter's role."},"IS_DEPOSIT_LIMIT_SET_ROLE()":{"notice":"Get a deposit limit enabler/disabler's role."},"MIN_EXIT_WINDOW()":{"notice":"The minimum period of time that must be available to exit in case of epoch increase after migration."},"RETURN_VALUE()":{"notice":"Get a value that must be returned by the flash loan borrower."},"burner()":{"notice":"Get a burner to issue debt to (e.g., 0xdEaD or some unwrapper contract)."},"collateral()":{"notice":"Get a vault collateral."},"delegator()":{"notice":"Get a delegator (it delegates the vault's stake to networks and operators)."},"depositLimit()":{"notice":"Get a deposit limit (maximum amount of the active stake that can be in the vault simultaneously)."},"depositWhitelist()":{"notice":"Get if the deposit whitelist is enabled."},"flashFeeRate()":{"notice":"Get a flash fee rate (100% = 1_000_000_000; 0.03% = 300_000)."},"flashFeeReceiver()":{"notice":"Get a flash fee receiver."},"flashLoanEnabled()":{"notice":"Get if a flash loan mechanic is enabled."},"initialize(uint64,address,bytes)":{"notice":"Initialize this entity contract by using a given data and setting a particular version and owner."},"isDelegatorInitialized()":{"notice":"Get if the delegator is initialized."},"isDepositLimit()":{"notice":"Get if the deposit limit is set."},"isDepositorWhitelisted(address)":{"notice":"Get if a given account is whitelisted as a depositor."},"isSlasherInitialized()":{"notice":"Get if the slasher is initialized."},"isWithdrawalsClaimed(uint256,address)":{"notice":"Get if the withdrawals are claimed for a particular account at a given epoch."},"migrate(uint64,bytes)":{"notice":"Migrate this entity to a particular newer version using a given data."},"slasher()":{"notice":"Get a slasher (it provides networks a slashing mechanism)."},"staticDelegateCall(address,bytes)":{"notice":"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data)."},"version()":{"notice":"Get the entity's version."},"withdrawalShares(uint256)":{"notice":"Get a total number of withdrawal shares at a given epoch."},"withdrawalSharesOf(uint256,address)":{"notice":"Get a number of withdrawal shares for a particular account at a given epoch (zero if claimed)."},"withdrawals(uint256)":{"notice":"Get a total amount of the withdrawals at a given epoch."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/vault/v1.1/VaultVotes.sol":"VaultVotes"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/governance/utils/VotesUpgradeable.sol":{"keccak256":"0x5d043309b7688b0182e3020af70b5cb0b9186e111d39409ebca8177739a9d43b","urls":["bzz-raw://e32bd2dd9e49f088cd19b007a5d83e960059f4d8c5b26ef1764c07c980a2e8e0","dweb:/ipfs/QmQ2Dr7rVELrE2aEmX4jy9RSQYkYxnazcqQk6w2Pzfwdcs"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol":{"keccak256":"0xbb96dc9c468170c3224126e953de917e06332ec5909a3d85e6e5bb0df10c5139","urls":["bzz-raw://d14e6486e127e7e31c2ffccfc212c7ebaaecf8fb05677575128b449ee113def2","dweb:/ipfs/QmabvyfStwBcum8mGfkmxcTV45rjyHmzHGCxfxyhmu48Yx"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/NoncesUpgradeable.sol":{"keccak256":"0x778f4a1546a1c6c726ecc8e2348a2789690fb8f26e12bd9d89537669167b79a4","urls":["bzz-raw://851d3dfe724e918ff0a064b206e1ef46b27ab0df2aa2c8af976973a22ef59827","dweb:/ipfs/Qmd4wb7zX8ueYhMVBy5PJjfsANK3Ra3pKPN7qQkNsdwGHn"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol":{"keccak256":"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866","urls":["bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf","dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/cryptography/EIP712Upgradeable.sol":{"keccak256":"0x7a618cd9a1eea21201ec2ed8484080ca6225215e8883723bef34b9dcf22aa3b5","urls":["bzz-raw://287a73451277e35206f1f8b9f20b2cd41732081bd23523f5a2c64e1e67694c33","dweb:/ipfs/QmdPVK7KACRpoavNUoixGsi8jBWeZUJfNYCzZbHGSGz5yu"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab","urls":["bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89","dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606","urls":["bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1","dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/governance/utils/IVotes.sol":{"keccak256":"0x5e2b397ae88fd5c68e4f6762eb9f65f65c36702eb57796495f471d024ce70947","urls":["bzz-raw://348fc8e291d54314bb22437b532f443d5dbfb80c8cc9591567c1af6554ccf856","dweb:/ipfs/QmP8ZTyitZinxcpwAHeYHhwj7u21zPpKXSiww38V74sXC2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol":{"keccak256":"0x0b1459615b9b47c2a4eec8e72f23ccc601f1d711f679a1c06b3390459021a341","urls":["bzz-raw://aaf6209fb90f02ebd1c9603568f5e6da5fa2f896820ba66b5041eeed993dc4ce","dweb:/ipfs/QmYsSH2PSGbTXMVXXxhh9AXzfHPSz2j42REvds6xjU7WmR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashLender.sol":{"keccak256":"0x5d19ea24c555cf6a5dbafea9fac57887cc3e72154f3ee8e0a2bf67971811c14b","urls":["bzz-raw://3af1364c971d94bccf3efcc509b2c5c03fe1c69ea9945ba29a96998bfd6c593e","dweb:/ipfs/Qmczq52prNGX5tHuk8aENZsuYgxTeA6YVMHV7yMTKeFjbr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol":{"keccak256":"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92","urls":["bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a","dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC5805.sol":{"keccak256":"0x4b9b89f91adbb7d3574f85394754cfb08c5b4eafca8a7061e2094a019ab8f818","urls":["bzz-raw://7373d5dbb8eb2381aa0883a456fac89283fcaf52f42fa805d4188f270716742a","dweb:/ipfs/QmVnZDmT4ABvNhRJMaQnbCzsCA8HpyHPVaxi4fCi92LFv2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC6372.sol":{"keccak256":"0xeb2857b7dafb7e0d8526dbfe794e6c047df2851c9e6ee91dc4a55f3c34af5d33","urls":["bzz-raw://49bf13f6c2a38a9bcc7b852d4e2b9cebb4068b832642cce61069cdb5f06bb2fb","dweb:/ipfs/QmdKAJVE7rR2kENCZnEM1yKswrGii7WuE9gZpsQvnXJhwn"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b","urls":["bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b","dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol":{"keccak256":"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd","urls":["bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac","dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330","urls":["bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf","dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310","urls":["bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862","dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed","urls":["bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0","dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84","urls":["bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9","dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575","urls":["bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e","dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3","urls":["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03","dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol":{"keccak256":"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f","urls":["bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44","dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc","urls":["bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6","dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza"],"license":"MIT"},"src/contracts/common/MigratableEntity.sol":{"keccak256":"0x303ad40a3de8fa808cc30a6fbd5998633f6a89b982e6db1fa981e0566ab445e7","urls":["bzz-raw://fa8fb92995ead02798e013190b87b84b44cc68668262f045c9b0b4783940e2bf","dweb:/ipfs/QmV1uKGVLKwWisc714R8fCt71gXUQJpaKvdc6LQ8WtvMpL"],"license":"BUSL-1.1"},"src/contracts/common/StaticDelegateCallable.sol":{"keccak256":"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90","urls":["bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764","dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD"],"license":"BUSL-1.1"},"src/contracts/libraries/Checkpoints.sol":{"keccak256":"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c","urls":["bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609","dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE"],"license":"MIT"},"src/contracts/vault/v1.1/Vault.sol":{"keccak256":"0x0809cdc31876a00412d127f2b10589a38ef0110585f7ee70d4e50a560812c15e","urls":["bzz-raw://66ed92da583d2e0b4eba1e07e5d7569a9f3bebfaa1d82968f3ca124d840e1618","dweb:/ipfs/QmWR7gbmGyZAo6LCTtx3pRMviN7ZBsxp1kGndTmo4CFGRc"],"license":"BUSL-1.1"},"src/contracts/vault/v1.1/VaultStorage.sol":{"keccak256":"0x510c83437bb493d66c299aec31ccd9d741e1348299b4170d891d476218231d19","urls":["bzz-raw://8879b6b1ad9ecc8ffa5d7725b03158dc2f65e30ac65fe3af9c654277740039e0","dweb:/ipfs/QmdC4DkajUbGuRzaCsqegJWGTxXvooWFCVkU7EdXG9mou2"],"license":"BUSL-1.1"},"src/contracts/vault/v1.1/VaultTokenized.sol":{"keccak256":"0x6b40159424394daadca3f21c58aac3650d1fd6d906494367a799bc33c27cd07e","urls":["bzz-raw://0b908da3ff66b6c6c3e6d973e2cc55caf6eb5a0d7917268ea4682e106b306dc1","dweb:/ipfs/QmUs5F2dz4PoX9DjgxV8oU3SjzEGJCx3Sq5E2Q7xqdDZQs"],"license":"BUSL-1.1"},"src/contracts/vault/v1.1/VaultTokenizedImplementation.sol":{"keccak256":"0x07bb1e77b3c7cd0c754d4ae874fb731f82cf31a6647c40db6e0b8e7e491af2ca","urls":["bzz-raw://1514dd2e4f16c13c764529524c0f66f2009a2d348e5e680d170ca6eb81ec0266","dweb:/ipfs/QmXAKr68V1nPXsee8GUVYAYiiY5bDqKpTamU5DenMPhewX"],"license":"BUSL-1.1"},"src/contracts/vault/v1.1/VaultVotes.sol":{"keccak256":"0xd92d997fb4c65fa00cc6cf7a82d39682ff1ab071f23c6fd5b348572f22a9b8a3","urls":["bzz-raw://234dd1cec49ce1d79fc2fc6ca3ac7304cc4c9c8f83074532efdc6f543da936a5","dweb:/ipfs/QmfQC3LnsqzzHpvUgymheHTqVkqtGmCw1Fqq8g4PGD2vVo"],"license":"MIT"},"src/contracts/vault/v1.1/VaultVotesImplementation.sol":{"keccak256":"0x041fc819e1995d62babe1e6f16127643a21dc64a6f4d7b86bae38d91d847177a","urls":["bzz-raw://c7625d8ed13406e14402a730dfd2d31d9d2af416b8c1513c17fa4a96dec91b65","dweb:/ipfs/QmPzct62JHMTK68iZhCnNGvNBJshhRCZNdEohb3tEPe6pM"],"license":"MIT"},"src/interfaces/common/IMigratableEntity.sol":{"keccak256":"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4","urls":["bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c","dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds"],"license":"MIT"},"src/interfaces/common/IStaticDelegateCallable.sol":{"keccak256":"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5","urls":["bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516","dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi"],"license":"MIT"},"src/interfaces/vault/v1.1/IVault.sol":{"keccak256":"0x41c3b7c7955923f29d7a913dcd49a2f7c4c40339eda1cdf675d04bf15168fbd4","urls":["bzz-raw://b7f26841febf819da87037e7f285fb4e9c3a3191d2cc9284d4679bd5f3d5eb79","dweb:/ipfs/QmejKi1svukhK2bwGPvSXLzG4oMKUZo7xEm1gNvuYWNbDK"],"license":"MIT"},"src/interfaces/vault/v1.1/IVaultStorage.sol":{"keccak256":"0x762053f3cc4cb5809c48b846a77b36e697323b2011118c2df8ea2692a02ece5b","urls":["bzz-raw://5282252083722ebdb1e8977ba1fd4860e15acb49bb4ec337632dd14304863b1d","dweb:/ipfs/QmNNBo5HaWBenQZLgnjF3NbxVRupfgYeUMztYYQMpD9VoB"],"license":"MIT"},"src/interfaces/vault/v1.1/IVaultTokenized.sol":{"keccak256":"0x98adcf1802a3e90cdc93e26afd6f27da02727473f18f482a6b297f8574a195e0","urls":["bzz-raw://10c1d8f09f0ad1e82d198491124e8867dc1c64b242a705c4bb13abaa37b5cea2","dweb:/ipfs/QmfNUPDbLQADLnQbsto5yKW2bR4v5RgphvrqoTQhSE7zkv"],"license":"MIT"},"src/interfaces/vault/v1.1/IVaultVotes.sol":{"keccak256":"0x0b55695c0c8db6834a1f45b4351df4e85f64c91f801a8959d47e805e1131b6e3","urls":["bzz-raw://79a8658f328570466c746cff2e67b11a5d64506012d14184f3f17633700b4bdd","dweb:/ipfs/QmPhjrP1YwTMrdtLodhChnmfKaR8MbPehMnpwCEWSu8ji6"],"license":"MIT"}},"version":1},"id":111} \ No newline at end of file diff --git a/out/VaultVotesImplementation.sol/VaultVotesImplementation.json b/out/VaultVotesImplementation.sol/VaultVotesImplementation.json new file mode 100644 index 00000000..f5d4e19c --- /dev/null +++ b/out/VaultVotesImplementation.sol/VaultVotesImplementation.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[{"name":"baseImplementation","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"fallback","stateMutability":"payable"},{"type":"function","name":"CLOCK_MODE","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"DEPOSITOR_WHITELIST_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"DEPOSIT_LIMIT_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"DEPOSIT_WHITELIST_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"EPOCH_DURATION_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"FLASH_FEE_BASE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"FLASH_FEE_RATE_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"FLASH_FEE_RECEIVER_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"FLASH_LOAN_ENABLED_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"IS_DEPOSIT_LIMIT_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"RETURN_VALUE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"_VaultTokenized_init","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"_VaultVotes_init","inputs":[{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"burner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"clock","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"collateral","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"delegate","inputs":[{"name":"delegatee","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"delegateBySig","inputs":[{"name":"delegatee","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"expiry","type":"uint256","internalType":"uint256"},{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"delegates","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"delegator","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"deposit","inputs":[{"name":"onBehalfOf","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"depositedAmount","type":"uint256","internalType":"uint256"},{"name":"mintedShares","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"depositLimit","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"depositWhitelist","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"eip712Domain","inputs":[],"outputs":[{"name":"fields","type":"bytes1","internalType":"bytes1"},{"name":"name","type":"string","internalType":"string"},{"name":"version","type":"string","internalType":"string"},{"name":"chainId","type":"uint256","internalType":"uint256"},{"name":"verifyingContract","type":"address","internalType":"address"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"extensions","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"flashFeeRate","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"flashFeeReceiver","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"flashLoanEnabled","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getPastTotalSupply","inputs":[{"name":"timepoint","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPastVotes","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"timepoint","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getVotes","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"isDelegatorInitialized","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isDepositLimit","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isDepositorWhitelisted","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isSlasherInitialized","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isWithdrawalsClaimed","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"nonces","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"redeem","inputs":[{"name":"claimer","type":"address","internalType":"address"},{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"withdrawnAssets","type":"uint256","internalType":"uint256"},{"name":"mintedShares","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"slasher","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"staticDelegateCall","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"withdraw","inputs":[{"name":"claimer","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"burnedShares","type":"uint256","internalType":"uint256"},{"name":"mintedShares","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawalShares","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"withdrawalSharesOf","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"withdrawals","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"DelegateChanged","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"fromDelegate","type":"address","indexed":true,"internalType":"address"},{"name":"toDelegate","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"DelegateVotesChanged","inputs":[{"name":"delegate","type":"address","indexed":true,"internalType":"address"},{"name":"previousVotes","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newVotes","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"EIP712DomainChanged","inputs":[],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"CheckpointUnorderedInsertion","inputs":[]},{"type":"error","name":"ECDSAInvalidSignature","inputs":[]},{"type":"error","name":"ECDSAInvalidSignatureLength","inputs":[{"name":"length","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ECDSAInvalidSignatureS","inputs":[{"name":"s","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC5805FutureLookup","inputs":[{"name":"timepoint","type":"uint256","internalType":"uint256"},{"name":"clock","type":"uint48","internalType":"uint48"}]},{"type":"error","name":"ERC6372InconsistentClock","inputs":[]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"InvalidAccountNonce","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"currentNonce","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidData","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SafeSupplyExceeded","inputs":[]},{"type":"error","name":"VotesExpiredSignature","inputs":[{"name":"expiry","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x60a034606d57601f6130e338819003918201601f19168301916001600160401b03831184841017607157808492602094604052833981010312606d57516001600160a01b0381168103606d5760805260405161305d9081610086823960805181818161088801526123300152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe608060405260043610612326575f3560e01c806306fdde031461034b578063095ea7b3146103465780630eac105e146103415780631415519b1461033c57806318160ddd146103375780631b66c9e1146103325780631e9a69501461032d57806323b872dd1461032857806327810b6e14610323578063313ce5671461031e57806331d9736c146103195780633a46b1a81461031457806347e7ef241461030f57806348d3b7751461030a5780634bf5d7e91461030557806350861adc14610300578063587cde1e146102fb5780635c19a95c146102f65780635cc07076146102f157806361819dd8146102ec578063653b04cd146102e757806365d61c6c146102e25780636ec1e3f8146102dd57806370a08231146102d8578063794b15b7146102d35780637bd00ae8146102ce5780637ecebe00146102c957806384b0196e146102c45780638e539e8c146102bf57806391ddadf4146102ba57806395d89b41146102b55780639ab24eb0146102b05780639f86fd85146102ab578063a1b12202146102a6578063a21a1df9146102a1578063a3b541721461029c578063a5d0322314610297578063a66b3a7314610292578063a8b24f9a1461028d578063a9059cbb14610288578063afba70ad14610283578063b13442711461027e578063bc46f72214610279578063c3cda52014610274578063ce9b79301461026f578063d8dfeb451461026a578063db38871514610265578063dd62ed3e14610260578063e945da7f1461025b578063ecc98f0514610256578063ecf70858146102515763f3fef3a3036123265761186f565b611852565b611834565b611817565b6117e8565b6117ae565b611783565b61175b565b61168e565b611649565b611621565b6115f7565b6115c6565b61159e565b611564565b611516565b6114cd565b611493565b61146f565b6113ed565b6113b1565b6112ff565b6112d4565b611232565b611162565b611085565b610f2a565b610eed565b610e46565b610e21565b610dfc565b610dc2565b610d88565b610d5e565b610d3c565b610cf7565b610cd2565b610c84565b610c63565b610bb8565b610a96565b610a5c565b6109c5565b61099d565b6108ef565b610820565b6107e6565b6107c4565b61078a565b6105c1565b6104a8565b610388565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b906020610385928181520190610350565b90565b34610478575f366003190112610478576040515f5f80516020612f888339815191528054906103b6826118ed565b8085529160209160019182811690811561044b57506001146103f3575b6103ef866103e38188038261196f565b60405191829182610374565b0390f35b5f90815293507f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab05b838510610438575050505081016020016103e3826103ef5f6103d3565b805486860184015293820193810161041b565b90508695506103ef969350602092506103e394915060ff191682840152151560051b82010192935f6103d3565b5f80fd5b600435906001600160a01b038216820361047857565b602435906001600160a01b038216820361047857565b34610478576040366003190112610478576104c161047c565b602435331561054e576001600160a01b038216918215610536576104fe82916104e933610e7d565b9060018060a01b03165f5260205260405f2090565b556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b604051634a1406b160e11b81525f6004820152602490fd5b60405163e602df0560e01b81525f6004820152602490fd5b9181601f84011215610478578235916001600160401b038311610478576020838186019501011161047857565b602060031982011261047857600435906001600160401b038211610478576105bd91600401610566565b9091565b34610478576105cf36610593565b50506040516105dd81611939565b600a8152602090695661756c74566f74657360b01b60208201526040519061060482611939565b60019260018352603160f81b602084015261061d612362565b610625612362565b8151906001600160401b038211610785575f80516020612fa8833981519152926106588361065386546118ed565b6123a3565b602091601f84116001146106f15750610694955061068d92915f91836106e6575b50508160011b915f199060031b1c19161790565b9055612587565b6106bc5f7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10055565b6106e45f7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10155565b005b015190505f80610679565b5f80516020612fa88339815191525f529195601f198416907f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d935f915b83831061076e57505050958392916001946106949810610756575b505050811b019055612587565b01515f1960f88460031b161c191690555f8080610749565b848a0151865598810198948501949181019161072e565b611925565b34610478575f3660031901126104785760206040517fc6aaadd7371d5e8f9ed6849dd66a66573a3ba37167d03f4352c9ba5693678fac8152f35b34610478575f3660031901126104785760206107de611c42565b604051908152f35b34610478575f3660031901126104785760206040517f9c56d972d63cbb4195b3c1484691dfc220fa96a4c47e7b6613bd82a022029e068152f35b34610478576040366003190112610478576108de6108866108bb6108ac61084561047c565b6040516301e9a69560e41b60208201526001600160a01b0390911660248281019190915235604482018190529381606481015b03601f19810183528261196f565b7f000000000000000000000000000000000000000000000000000000000000000061275c565b60208082518301019101611d02565b9290915f6040518281525f8051602061300883398151915260203392a333611d18565b604080519182526020820192909252f35b346104785760603660031901126104785761090861047c565b610910610492565b60443590610921336104e985610e7d565b549260018401610942575b6109369350611e04565b60405160018152602090f35b828410610977576001600160a01b0381161561054e57331561053657826109369403610971336104e984610e7d565b5561092c565b604051637dc7a0d960e11b81523360048201526024810185905260448101849052606490fd5b34610478575f366003190112610478576001546040516001600160a01b039091168152602090f35b34610478575f366003190112610478575f5460405163313ce56760e01b8152906020908290600490829060101c6001600160a01b03165afa8015610a57575f90610a1a575b60405160ff919091168152602090f35b506020813d602011610a4f575b81610a346020938361196f565b81010312610478576103ef9051610a4a81611683565b610a0a565b3d9150610a27565b611b39565b34610478575f3660031901126104785760206040517f5295aaaa27fdd659293eafacbfafbc634c1b96298957e87de5f59308cdbfdad18152f35b3461047857604036600319011261047857610aaf61047c565b60243590610abc42611fbb565b9065ffffffffffff91828116841015610b8f5750610adc610ae291610eb5565b92611fbb565b8254905f908260058111610b41575b50610afd9350846129f6565b9081610b245750506103ef5f5b6040516001600160d01b0390911681529081906020820190565b610b306103ef92612001565b905f5260205f20015460301c610b0a565b9092610b4c826128cb565b8203918211610b8a57610afd94865f52808360205f20015416908516105f14610b785750915b5f610af1565b929150610b849061200f565b90610b72565b611fed565b604051637669fc0f60e11b81526004810185905265ffffffffffff919091166024820152604490fd5b3461047857604036600319011261047857610bd161047c565b6040516311f9fbc960e21b60208201526001600160a01b038216602480830191909152356044820152610c0f906108ac906108868160648101610878565b916040518381525f5f80516020613008833981519152602060018060a01b03851693a36001600160d01b03610c42611c42565b11610c5157826108de91611d71565b604051630a84eab560e11b8152600490fd5b34610478575f36600319011261047857602060ff5f54166040519015158152f35b34610478575f366003190112610478576103ef604051610ca381611939565b600e81526d06d6f64653d74696d657374616d760941b6020820152604051918291602083526020830190610350565b34610478575f36600319011261047857602060ff60025460a01c166040519015158152f35b346104785760203660031901126104785760206001600160a01b0380610d1b61047c565b165f525f80516020612f68833981519152825260405f205416604051908152f35b34610478576020366003190112610478576106e4610d5861047c565b3361214f565b34610478576020366003190112610478576004355f526006602052602060405f2054604051908152f35b34610478575f3660031901126104785760206040517f591f6a0113ada8aff67efadec8ae2fa585cb4ebf4e1f8fc1205ffbeff98d00ec8152f35b34610478575f3660031901126104785760206040517f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd98152f35b34610478575f36600319011261047857602060ff60165460a01c166040519015158152f35b34610478575f36600319011261047857602060ff60035460a01c166040519015158152f35b34610478576020366003190112610478576001600160a01b03610e6761047c565b165f52600e60205260206107de60405f20611cce565b6001600160a01b03165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020526040902090565b6001600160a01b03165f9081527fe8b26c30fad74198956032a3533d903385d56dd795af560196f9c78d4af40d016020526040902090565b34610478576020366003190112610478576001600160a01b03610f0e61047c565b165f526005602052602060ff60405f2054166040519015158152f35b3461047857610f3836610593565b8101604082820312610478576001600160401b039180358381116104785782610f62918301611b44565b90602092602082013585811161047857610f7c9201611b44565b91610f85612362565b610f8d612362565b8151938411610785575f80516020612f8883398151915291610fb885610fb385546118ed565b61241c565b602091601f8611600114610ff257509380610feb926106e4965f926106e65750508160011b915f199060031b1c19161790565b9055612680565b5f80516020612f888339815191525f529190601f1986167f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0935f905b82821061106d5750509160019391876106e4989410611055575b505050811b019055612680565b01515f1960f88460031b161c191690555f8080611048565b8060018697829497870151815501960194019061102e565b34610478576020366003190112610478576001600160a01b036110a661047c565b165f527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb00602052602060405f2054604051908152f35b9161111090949194600f60f81b845261110260209660e0602087015260e0860190610350565b908482036040860152610350565b92606083015260018060a01b031660808201525f60a082015260c0818303910152602080845192838152019301915f5b82811061114e575050505090565b835185529381019392810192600101611140565b34610478575f366003190112610478577fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100541580611209575b156111cc576111a8611990565b6111b0611a65565b906103ef6111bc611b8a565b60405193849330914691866110dc565b60405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606490fd5b507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d101541561119b565b346104785760203660031901126104785760043561124f42611fbb565b65ffffffffffff81168210156112ad5761127061126b83611fbb565b61201d565b6001600160d01b038116156112a35761128b6103ef91611bf3565b90549060031b1c5b6040519081529081906020820190565b506103ef5f611293565b604051637669fc0f60e11b8152600481019290925265ffffffffffff166024820152604490fd5b34610478575f3660031901126104785760206112ef42611fbb565b65ffffffffffff60405191168152f35b34610478575f366003190112610478576040515f5f80516020612fc883398151915280549061132d826118ed565b8085529160209160019182811690811561044b5750600114611359576103ef866103e38188038261196f565b5f90815293507f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa5b83851061139e575050505081016020016103e3826103ef5f6103d3565b8054868601840152938201938101611381565b346104785760203660031901126104785760206001600160d01b036113e46113df6113da61047c565b610eb5565b6121e1565b16604051908152f35b346104785760403660031901126104785761140661047c565b6024356001600160401b038111610478575f9161142883923690600401610566565b90816040519283928337810184815203915af4611467611446611bb0565b91610878604051938492151560208401526040808401526060830190610350565b805190602001fd5b34610478575f36600319011261047857602060ff5f5460081c166040519015158152f35b34610478575f3660031901126104785760206040517f4a634bc14d77baf979756509ef4298c6f6318af357828612545267ee2eb792338152f35b3461047857604036600319011261047857602061150d6114eb610492565b6004355f526008835260405f209060018060a01b03165f5260205260405f2090565b54604051908152f35b3461047857604036600319011261047857602060ff611558611536610492565b6004355f526009845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b34610478575f3660031901126104785760206040517fc9feed28b4b1a1d11c6791da7bb7f6b8d33e831a4992a9383dead1ec2c82c35a8152f35b34610478575f366003190112610478576016546040516001600160a01b039091168152602090f35b34610478576040366003190112610478576115ec6115e261047c565b6024359033611e04565b602060405160018152f35b34610478576020366003190112610478576004355f526007602052602060405f2054604051908152f35b34610478575f366003190112610478576003546040516001600160a01b039091168152602090f35b34610478575f3660031901126104785760206040517fc9078c78bcaac2be1c77c160c539a489be2b72939771b1a6302fed3e2150c7458152f35b60ff81160361047857565b346104785760c0366003190112610478576116a761047c565b604435906024356064356116ba81611683565b834211611742576117366106e49461173d926040519060208201927fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf845260018060a01b038816604084015286606084015260808301526080825261171e82611954565b61173160a4359360843593519020612209565b612298565b91826122b0565b61214f565b604051632341d78760e11b815260048101859052602490fd5b34610478575f366003190112610478576002546040516001600160a01b039091168152602090f35b34610478575f366003190112610478575f5460405160109190911c6001600160a01b03168152602090f35b34610478575f3660031901126104785760206040517fbae4ee3de6c709ff9a002e774c5b78cb381560b219213c88ae0f1e207c03c0238152f35b3461047857604036600319011261047857602061150d61180661047c565b6104e9611811610492565b91610e7d565b34610478575f366003190112610478576020601554604051908152f35b34610478575f366003190112610478576020604051633b9aca008152f35b34610478575f366003190112610478576020600454604051908152f35b34610478576040366003190112610478576118c86108ac61087861088661189461047c565b60405163f3fef3a360e01b60208201526001600160a01b039091166024808301919091523560448201529182906064820190565b905f6040518281525f8051602061300883398151915260203392a36108de8133611d18565b90600182811c9216801561191b575b602083101461190757565b634e487b7160e01b5f52602260045260245ffd5b91607f16916118fc565b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b0382111761078557604052565b60a081019081106001600160401b0382111761078557604052565b90601f801991011681019081106001600160401b0382111761078557604052565b604051905f825f80516020612fa8833981519152918254926119b1846118ed565b80845293602091600191828116908115611a3f57506001146119df575b5050506119dd9250038361196f565b565b5f9081527f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d9590935091905b828410611a2757506119dd9450505081016020015f80806119ce565b85548885018301529485019487945092810192611a0b565b92505050602092506119dd94915060ff191682840152151560051b8201015f80806119ce565b604051905f825f80516020612fe883398151915291825492611a86846118ed565b80845293602091600191828116908115611a3f5750600114611ab1575050506119dd9250038361196f565b5f9081527f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b759590935091905b828410611af957506119dd9450505081016020015f80806119ce565b85548885018301529485019487945092810192611add565b604051906119dd82611939565b6001600160401b03811161078557601f01601f191660200190565b6040513d5f823e3d90fd5b81601f8201121561047857803590611b5b82611b1e565b92611b69604051948561196f565b8284526020838301011161047857815f926020809301838601378301015290565b604051602081018181106001600160401b03821117610785576040525f8152905f368137565b3d15611bda573d90611bc182611b1e565b91611bcf604051938461196f565b82523d5f602084013e565b606090565b634e487b7160e01b5f52603260045260245ffd5b600b54811015611c2857600b5f527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db901905f90565b611bdf565b8054821015611c28575f5260205f2001905f90565b600a5480611c9557505f5b6001600160d01b03811615611c9057600b54811015611c2857600b5f527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db9015490565b505f90565b805f19810111610b8a57600a5f527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a7015460301c611c4d565b611cd7816121e1565b6001600160d01b03811615611cfc576001611cf29201611c2d565b90549060031b1c90565b50505f90565b9190826040910312610478576020825192015190565b6001600160a01b039081165f9081525f80516020612f6883398151915260205260408120549080527fd4fb29e10204005f1a39963c6862b79a755e22f0177c53f05cdc3786c702f974546119dd93929081169116612779565b5f80516020612f688339815191526020527fd4fb29e10204005f1a39963c6862b79a755e22f0177c53f05cdc3786c702f974546001600160a01b039182165f90815260409020546119dd93929081169116612779565b6001600160a01b039081165f9081525f80516020612f6883398151915260205260408082205493831682529020546119dd93929082169116612779565b6001600160a01b0380821694939291908515611fa35782168015611f8b577f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f006002815414611f7957600290556001600160a01b0382165f908152600e60205260409020611e7590611cce565b611cce565b95848710611f4a57611eb26119dd9697611e9f8560018060a01b03165f52600e60205260405f2090565b9087611eaa42611fbb565b910391612c85565b50506001600160a01b0384165f908152600e60205260409020611f0190611ed842611fbb565b6001600160a01b0387165f908152600e602052604090208890611efa90611cce565b0191612c85565b50506040518581525f8051602061300883398151915290602090a3611f4560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b611dc7565b60405163391434e360e21b81526001600160a01b03841660048201526024810188905260448101869052606490fd5b604051633ee5aeb560e01b8152600490fd5b60405163ec442f0560e01b81525f6004820152602490fd5b604051634b637e8f60e11b81525f6004820152602490fd5b65ffffffffffff90818111611fce571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b634e487b7160e01b5f52601160045260245ffd5b5f19810191908211610b8a57565b9060018201809211610b8a57565b600a8054915f9280600581116120e8575b5092905b83821061207c575050508061204657505f90565b61204f90612001565b600a5f527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8015460301c90565b9091928083169080841860011c8201809211610b8a57845f5265ffffffffffff80837fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8015416908416105f146120d65750925b9190612032565b9392506120e29061200f565b916120cf565b906120f2826128cb565b8203918211610b8a57600a5f5265ffffffffffff80837fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8015416908416105f1461213e57505b5f61202e565b93506121499061200f565b92612138565b6119dd916121db611e7060018060a01b0393848116805f525f80516020612f6883398151915260205260405f2095865491818316978892881680946bffffffffffffffffffffffff60a01b161790557f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f5f80a46001600160a01b03165f908152600e6020526040902090565b91612779565b8054806121ee5750505f90565b5f19918183810111610b8a575f5260205f2001015460301c90565b612211612d47565b612219612db1565b916040519260208401927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604085015260608401524660808401523060a084015260a0835260c08301918383106001600160401b038411176107855760429360e291846040528151902061190160f01b855260c282015201522090565b9161038593916122a793612a55565b90929192612af5565b6001600160a01b0381165f9081527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb0060205260409020805460018101909155918290036122fb575050565b6040516301d4b62360e61b81526001600160a01b039190911660048201526024810191909152604490fd5b365f80375f8036817f00000000000000000000000000000000000000000000000000000000000000005af43d5f803e1561235e573d5ff35b3d5ffd5b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c161561239157565b604051631afcd79f60e31b8152600490fd5b601f81116123af575050565b5f80516020612fa88339815191525f527f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d906020601f840160051c83019310612412575b601f0160051c01905b818110612407575050565b5f81556001016123fc565b90915081906123f3565b601f8111612428575050565b5f80516020612f888339815191525f527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0906020601f840160051c8301931061248b575b601f0160051c01905b818110612480575050565b5f8155600101612475565b909150819061246c565b601f81116124a1575050565b5f80516020612fe88339815191525f527f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b75906020601f840160051c83019310612504575b601f0160051c01905b8181106124f9575050565b5f81556001016124ee565b90915081906124e5565b601f811161251a575050565b5f80516020612fc88339815191525f527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa906020601f840160051c8301931061257d575b601f0160051c01905b818110612572575050565b5f8155600101612567565b909150819061255e565b9081516001600160401b038111610785575f80516020612fe8833981519152906125ba816125b584546118ed565b612495565b602080601f83116001146125ef575081906125eb9394955f926106e65750508160011b915f199060031b1c19161790565b9055565b90601f1983169561262d5f80516020612fe88339815191525f527f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b7590565b925f905b88821061266857505083600195969710612650575b505050811b019055565b01515f1960f88460031b161c191690555f8080612646565b80600185968294968601518155019501930190612631565b9081516001600160401b038111610785575f80516020612fc8833981519152906126b3816126ae84546118ed565b61250e565b602080601f83116001146126e4575081906125eb9394955f926106e65750508160011b915f199060031b1c19161790565b90601f198316956127225f80516020612fc88339815191525f527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa90565b925f905b8882106127445750508360019596971061265057505050811b019055565b80600185968294968601518155019501930190612726565b5f8061038593602081519101845af4612773611bb0565b91612b82565b6001600160a01b038083169392919081169081851415806128a4575b6127a1575b5050505050565b81612816575b5050826127b6575b808061279a565b7fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724916127ed6127e76127f393610eb5565b91612be5565b90612c18565b604080516001600160d01b039384168152919092166020820152a25f80806127af565b61281f90610eb5565b61282884612be5565b61283142611fbb565b6001600160d01b03918280612845866121e1565b169116900392828411610b8a577fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7249361289a9261288192612e51565b6040805192851683529316602082015291829190820190565b0390a25f806127a7565b50831515612795565b81156128b7570490565b634e487b7160e01b5f52601260045260245ffd5b600181111561038557600181600160801b8110156129e4575b61298c61298261297861296e61296461295a61299897600488600160401b6129939a10156129d7575b6401000000008110156129ca575b620100008110156129bd575b6101008110156129b1575b60108110156129a5575b101561299d575b60030260011c612953818b6128ad565b0160011c90565b612953818a6128ad565b61295381896128ad565b61295381886128ad565b61295381876128ad565b61295381866128ad565b80936128ad565b821190565b900390565b60011b612943565b811c9160021b9161293c565b60081c91811b91612932565b60101c9160081b91612927565b60201c9160101b9161291b565b60401c9160201b9161290d565b50600160401b9050608082901c6128e4565b91905b838210612a065750505090565b9091928083169080841860011c8201809211610b8a57845f5265ffffffffffff808360205f20015416908416105f14612a435750925b91906129f9565b939250612a4f9061200f565b91612a3c565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411612acc579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa15610a57575f516001600160a01b03811615612ac257905f905f90565b505f906001905f90565b5050505f9160039190565b60041115612ae157565b634e487b7160e01b5f52602160045260245ffd5b612afe81612ad7565b80612b07575050565b612b1081612ad7565b60018103612b2a5760405163f645eedf60e01b8152600490fd5b612b3381612ad7565b60028103612b545760405163fce698f760e01b815260048101839052602490fd5b80612b60600392612ad7565b14612b685750565b6040516335e2f38360e21b81526004810191909152602490fd5b90612ba95750805115612b9757805190602001fd5b60405163d6bda27560e01b8152600490fd5b81511580612bdc575b612bba575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b15612bb2565b6001600160d01b0390818111612bf9571690565b604490604051906306dfcc6560e41b825260d060048301526024820152fd5b90612c2242611fbb565b6001600160d01b03918280612c36866121e1565b16911601918211610b8a576105bd92612e51565b90815491600160401b8310156107855782612c6d9160016119dd95018155611c2d565b90919082549060031b91821b915f19901b1916179055565b90929192600182019081548015612d17575b5084612ca284612f2e565b50949092845493612cb283611cce565b9681612d02575b5015612cdf575050505f198101908111610b8a57612c6d8591612cdb93611c2d565b9190565b612cdb949293612cfb926001600160d01b039091169190612e51565b5050612c4a565b65ffffffffffff83811691161490505f612cb9565b600160401b81101561078557806001612d339201845583611c2d565b8154905f199060031b1b191690555f612c97565b612d4f611990565b8051908115612d5f576020012090565b50507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100548015612d8c5790565b507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090565b612db9611a65565b8051908115612dc9576020012090565b50507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d101548015612d8c5790565b8054600160401b81101561078557612e1391600182018155611c2d565b612e3e57815160209092015160301b65ffffffffffff191665ffffffffffff92909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b80549293928015612f0457612e68612e7391612001565b825f5260205f200190565b9182549265ffffffffffff91828516928116808411612ef257879303612eb95750612eb292509065ffffffffffff82549181199060301b169116179055565b60301c9190565b915050612eed91612ed9612ecb611b11565b65ffffffffffff9093168352565b6001600160d01b0386166020830152612df6565b612eb2565b604051632520601d60e01b8152600490fd5b5090612f2991612f15612ecb611b11565b6001600160d01b0385166020830152612df6565b5f9190565b805480612f3f5750505f905f905f90565b5f19918183810111610b8a575f5260205f2001015460019165ffffffffffff82169160301c9056fee8b26c30fad74198956032a3533d903385d56dd795af560196f9c78d4af40d0052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace03a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10252c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace04a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d103ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220281bd815124fccd7fe9bb7640aa69e8426685935b48f1e0576dd68a6736ca6d664736f6c63430008190033","sourceMap":"983:2869:112:-:0;;;;;;;;;;;;;-1:-1:-1;;983:2869:112;;;;-1:-1:-1;;;;;983:2869:112;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;983:2869:112;;;;;;1324:40:110;;983:2869:112;;;;;;;;1324:40:110;983:2869:112;;;;;;;;;;;;-1:-1:-1;983:2869:112;;;;;;-1:-1:-1;983:2869:112;;;;;-1:-1:-1;983:2869:112","linkReferences":{}},"deployedBytecode":{"object":"0x608060405260043610612326575f3560e01c806306fdde031461034b578063095ea7b3146103465780630eac105e146103415780631415519b1461033c57806318160ddd146103375780631b66c9e1146103325780631e9a69501461032d57806323b872dd1461032857806327810b6e14610323578063313ce5671461031e57806331d9736c146103195780633a46b1a81461031457806347e7ef241461030f57806348d3b7751461030a5780634bf5d7e91461030557806350861adc14610300578063587cde1e146102fb5780635c19a95c146102f65780635cc07076146102f157806361819dd8146102ec578063653b04cd146102e757806365d61c6c146102e25780636ec1e3f8146102dd57806370a08231146102d8578063794b15b7146102d35780637bd00ae8146102ce5780637ecebe00146102c957806384b0196e146102c45780638e539e8c146102bf57806391ddadf4146102ba57806395d89b41146102b55780639ab24eb0146102b05780639f86fd85146102ab578063a1b12202146102a6578063a21a1df9146102a1578063a3b541721461029c578063a5d0322314610297578063a66b3a7314610292578063a8b24f9a1461028d578063a9059cbb14610288578063afba70ad14610283578063b13442711461027e578063bc46f72214610279578063c3cda52014610274578063ce9b79301461026f578063d8dfeb451461026a578063db38871514610265578063dd62ed3e14610260578063e945da7f1461025b578063ecc98f0514610256578063ecf70858146102515763f3fef3a3036123265761186f565b611852565b611834565b611817565b6117e8565b6117ae565b611783565b61175b565b61168e565b611649565b611621565b6115f7565b6115c6565b61159e565b611564565b611516565b6114cd565b611493565b61146f565b6113ed565b6113b1565b6112ff565b6112d4565b611232565b611162565b611085565b610f2a565b610eed565b610e46565b610e21565b610dfc565b610dc2565b610d88565b610d5e565b610d3c565b610cf7565b610cd2565b610c84565b610c63565b610bb8565b610a96565b610a5c565b6109c5565b61099d565b6108ef565b610820565b6107e6565b6107c4565b61078a565b6105c1565b6104a8565b610388565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b906020610385928181520190610350565b90565b34610478575f366003190112610478576040515f5f80516020612f888339815191528054906103b6826118ed565b8085529160209160019182811690811561044b57506001146103f3575b6103ef866103e38188038261196f565b60405191829182610374565b0390f35b5f90815293507f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab05b838510610438575050505081016020016103e3826103ef5f6103d3565b805486860184015293820193810161041b565b90508695506103ef969350602092506103e394915060ff191682840152151560051b82010192935f6103d3565b5f80fd5b600435906001600160a01b038216820361047857565b602435906001600160a01b038216820361047857565b34610478576040366003190112610478576104c161047c565b602435331561054e576001600160a01b038216918215610536576104fe82916104e933610e7d565b9060018060a01b03165f5260205260405f2090565b556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b604051634a1406b160e11b81525f6004820152602490fd5b60405163e602df0560e01b81525f6004820152602490fd5b9181601f84011215610478578235916001600160401b038311610478576020838186019501011161047857565b602060031982011261047857600435906001600160401b038211610478576105bd91600401610566565b9091565b34610478576105cf36610593565b50506040516105dd81611939565b600a8152602090695661756c74566f74657360b01b60208201526040519061060482611939565b60019260018352603160f81b602084015261061d612362565b610625612362565b8151906001600160401b038211610785575f80516020612fa8833981519152926106588361065386546118ed565b6123a3565b602091601f84116001146106f15750610694955061068d92915f91836106e6575b50508160011b915f199060031b1c19161790565b9055612587565b6106bc5f7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10055565b6106e45f7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10155565b005b015190505f80610679565b5f80516020612fa88339815191525f529195601f198416907f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d935f915b83831061076e57505050958392916001946106949810610756575b505050811b019055612587565b01515f1960f88460031b161c191690555f8080610749565b848a0151865598810198948501949181019161072e565b611925565b34610478575f3660031901126104785760206040517fc6aaadd7371d5e8f9ed6849dd66a66573a3ba37167d03f4352c9ba5693678fac8152f35b34610478575f3660031901126104785760206107de611c42565b604051908152f35b34610478575f3660031901126104785760206040517f9c56d972d63cbb4195b3c1484691dfc220fa96a4c47e7b6613bd82a022029e068152f35b34610478576040366003190112610478576108de6108866108bb6108ac61084561047c565b6040516301e9a69560e41b60208201526001600160a01b0390911660248281019190915235604482018190529381606481015b03601f19810183528261196f565b7f000000000000000000000000000000000000000000000000000000000000000061275c565b60208082518301019101611d02565b9290915f6040518281525f8051602061300883398151915260203392a333611d18565b604080519182526020820192909252f35b346104785760603660031901126104785761090861047c565b610910610492565b60443590610921336104e985610e7d565b549260018401610942575b6109369350611e04565b60405160018152602090f35b828410610977576001600160a01b0381161561054e57331561053657826109369403610971336104e984610e7d565b5561092c565b604051637dc7a0d960e11b81523360048201526024810185905260448101849052606490fd5b34610478575f366003190112610478576001546040516001600160a01b039091168152602090f35b34610478575f366003190112610478575f5460405163313ce56760e01b8152906020908290600490829060101c6001600160a01b03165afa8015610a57575f90610a1a575b60405160ff919091168152602090f35b506020813d602011610a4f575b81610a346020938361196f565b81010312610478576103ef9051610a4a81611683565b610a0a565b3d9150610a27565b611b39565b34610478575f3660031901126104785760206040517f5295aaaa27fdd659293eafacbfafbc634c1b96298957e87de5f59308cdbfdad18152f35b3461047857604036600319011261047857610aaf61047c565b60243590610abc42611fbb565b9065ffffffffffff91828116841015610b8f5750610adc610ae291610eb5565b92611fbb565b8254905f908260058111610b41575b50610afd9350846129f6565b9081610b245750506103ef5f5b6040516001600160d01b0390911681529081906020820190565b610b306103ef92612001565b905f5260205f20015460301c610b0a565b9092610b4c826128cb565b8203918211610b8a57610afd94865f52808360205f20015416908516105f14610b785750915b5f610af1565b929150610b849061200f565b90610b72565b611fed565b604051637669fc0f60e11b81526004810185905265ffffffffffff919091166024820152604490fd5b3461047857604036600319011261047857610bd161047c565b6040516311f9fbc960e21b60208201526001600160a01b038216602480830191909152356044820152610c0f906108ac906108868160648101610878565b916040518381525f5f80516020613008833981519152602060018060a01b03851693a36001600160d01b03610c42611c42565b11610c5157826108de91611d71565b604051630a84eab560e11b8152600490fd5b34610478575f36600319011261047857602060ff5f54166040519015158152f35b34610478575f366003190112610478576103ef604051610ca381611939565b600e81526d06d6f64653d74696d657374616d760941b6020820152604051918291602083526020830190610350565b34610478575f36600319011261047857602060ff60025460a01c166040519015158152f35b346104785760203660031901126104785760206001600160a01b0380610d1b61047c565b165f525f80516020612f68833981519152825260405f205416604051908152f35b34610478576020366003190112610478576106e4610d5861047c565b3361214f565b34610478576020366003190112610478576004355f526006602052602060405f2054604051908152f35b34610478575f3660031901126104785760206040517f591f6a0113ada8aff67efadec8ae2fa585cb4ebf4e1f8fc1205ffbeff98d00ec8152f35b34610478575f3660031901126104785760206040517f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd98152f35b34610478575f36600319011261047857602060ff60165460a01c166040519015158152f35b34610478575f36600319011261047857602060ff60035460a01c166040519015158152f35b34610478576020366003190112610478576001600160a01b03610e6761047c565b165f52600e60205260206107de60405f20611cce565b6001600160a01b03165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020526040902090565b6001600160a01b03165f9081527fe8b26c30fad74198956032a3533d903385d56dd795af560196f9c78d4af40d016020526040902090565b34610478576020366003190112610478576001600160a01b03610f0e61047c565b165f526005602052602060ff60405f2054166040519015158152f35b3461047857610f3836610593565b8101604082820312610478576001600160401b039180358381116104785782610f62918301611b44565b90602092602082013585811161047857610f7c9201611b44565b91610f85612362565b610f8d612362565b8151938411610785575f80516020612f8883398151915291610fb885610fb385546118ed565b61241c565b602091601f8611600114610ff257509380610feb926106e4965f926106e65750508160011b915f199060031b1c19161790565b9055612680565b5f80516020612f888339815191525f529190601f1986167f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0935f905b82821061106d5750509160019391876106e4989410611055575b505050811b019055612680565b01515f1960f88460031b161c191690555f8080611048565b8060018697829497870151815501960194019061102e565b34610478576020366003190112610478576001600160a01b036110a661047c565b165f527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb00602052602060405f2054604051908152f35b9161111090949194600f60f81b845261110260209660e0602087015260e0860190610350565b908482036040860152610350565b92606083015260018060a01b031660808201525f60a082015260c0818303910152602080845192838152019301915f5b82811061114e575050505090565b835185529381019392810192600101611140565b34610478575f366003190112610478577fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100541580611209575b156111cc576111a8611990565b6111b0611a65565b906103ef6111bc611b8a565b60405193849330914691866110dc565b60405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606490fd5b507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d101541561119b565b346104785760203660031901126104785760043561124f42611fbb565b65ffffffffffff81168210156112ad5761127061126b83611fbb565b61201d565b6001600160d01b038116156112a35761128b6103ef91611bf3565b90549060031b1c5b6040519081529081906020820190565b506103ef5f611293565b604051637669fc0f60e11b8152600481019290925265ffffffffffff166024820152604490fd5b34610478575f3660031901126104785760206112ef42611fbb565b65ffffffffffff60405191168152f35b34610478575f366003190112610478576040515f5f80516020612fc883398151915280549061132d826118ed565b8085529160209160019182811690811561044b5750600114611359576103ef866103e38188038261196f565b5f90815293507f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa5b83851061139e575050505081016020016103e3826103ef5f6103d3565b8054868601840152938201938101611381565b346104785760203660031901126104785760206001600160d01b036113e46113df6113da61047c565b610eb5565b6121e1565b16604051908152f35b346104785760403660031901126104785761140661047c565b6024356001600160401b038111610478575f9161142883923690600401610566565b90816040519283928337810184815203915af4611467611446611bb0565b91610878604051938492151560208401526040808401526060830190610350565b805190602001fd5b34610478575f36600319011261047857602060ff5f5460081c166040519015158152f35b34610478575f3660031901126104785760206040517f4a634bc14d77baf979756509ef4298c6f6318af357828612545267ee2eb792338152f35b3461047857604036600319011261047857602061150d6114eb610492565b6004355f526008835260405f209060018060a01b03165f5260205260405f2090565b54604051908152f35b3461047857604036600319011261047857602060ff611558611536610492565b6004355f526009845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b34610478575f3660031901126104785760206040517fc9feed28b4b1a1d11c6791da7bb7f6b8d33e831a4992a9383dead1ec2c82c35a8152f35b34610478575f366003190112610478576016546040516001600160a01b039091168152602090f35b34610478576040366003190112610478576115ec6115e261047c565b6024359033611e04565b602060405160018152f35b34610478576020366003190112610478576004355f526007602052602060405f2054604051908152f35b34610478575f366003190112610478576003546040516001600160a01b039091168152602090f35b34610478575f3660031901126104785760206040517fc9078c78bcaac2be1c77c160c539a489be2b72939771b1a6302fed3e2150c7458152f35b60ff81160361047857565b346104785760c0366003190112610478576116a761047c565b604435906024356064356116ba81611683565b834211611742576117366106e49461173d926040519060208201927fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf845260018060a01b038816604084015286606084015260808301526080825261171e82611954565b61173160a4359360843593519020612209565b612298565b91826122b0565b61214f565b604051632341d78760e11b815260048101859052602490fd5b34610478575f366003190112610478576002546040516001600160a01b039091168152602090f35b34610478575f366003190112610478575f5460405160109190911c6001600160a01b03168152602090f35b34610478575f3660031901126104785760206040517fbae4ee3de6c709ff9a002e774c5b78cb381560b219213c88ae0f1e207c03c0238152f35b3461047857604036600319011261047857602061150d61180661047c565b6104e9611811610492565b91610e7d565b34610478575f366003190112610478576020601554604051908152f35b34610478575f366003190112610478576020604051633b9aca008152f35b34610478575f366003190112610478576020600454604051908152f35b34610478576040366003190112610478576118c86108ac61087861088661189461047c565b60405163f3fef3a360e01b60208201526001600160a01b039091166024808301919091523560448201529182906064820190565b905f6040518281525f8051602061300883398151915260203392a36108de8133611d18565b90600182811c9216801561191b575b602083101461190757565b634e487b7160e01b5f52602260045260245ffd5b91607f16916118fc565b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b0382111761078557604052565b60a081019081106001600160401b0382111761078557604052565b90601f801991011681019081106001600160401b0382111761078557604052565b604051905f825f80516020612fa8833981519152918254926119b1846118ed565b80845293602091600191828116908115611a3f57506001146119df575b5050506119dd9250038361196f565b565b5f9081527f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d9590935091905b828410611a2757506119dd9450505081016020015f80806119ce565b85548885018301529485019487945092810192611a0b565b92505050602092506119dd94915060ff191682840152151560051b8201015f80806119ce565b604051905f825f80516020612fe883398151915291825492611a86846118ed565b80845293602091600191828116908115611a3f5750600114611ab1575050506119dd9250038361196f565b5f9081527f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b759590935091905b828410611af957506119dd9450505081016020015f80806119ce565b85548885018301529485019487945092810192611add565b604051906119dd82611939565b6001600160401b03811161078557601f01601f191660200190565b6040513d5f823e3d90fd5b81601f8201121561047857803590611b5b82611b1e565b92611b69604051948561196f565b8284526020838301011161047857815f926020809301838601378301015290565b604051602081018181106001600160401b03821117610785576040525f8152905f368137565b3d15611bda573d90611bc182611b1e565b91611bcf604051938461196f565b82523d5f602084013e565b606090565b634e487b7160e01b5f52603260045260245ffd5b600b54811015611c2857600b5f527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db901905f90565b611bdf565b8054821015611c28575f5260205f2001905f90565b600a5480611c9557505f5b6001600160d01b03811615611c9057600b54811015611c2857600b5f527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db9015490565b505f90565b805f19810111610b8a57600a5f527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a7015460301c611c4d565b611cd7816121e1565b6001600160d01b03811615611cfc576001611cf29201611c2d565b90549060031b1c90565b50505f90565b9190826040910312610478576020825192015190565b6001600160a01b039081165f9081525f80516020612f6883398151915260205260408120549080527fd4fb29e10204005f1a39963c6862b79a755e22f0177c53f05cdc3786c702f974546119dd93929081169116612779565b5f80516020612f688339815191526020527fd4fb29e10204005f1a39963c6862b79a755e22f0177c53f05cdc3786c702f974546001600160a01b039182165f90815260409020546119dd93929081169116612779565b6001600160a01b039081165f9081525f80516020612f6883398151915260205260408082205493831682529020546119dd93929082169116612779565b6001600160a01b0380821694939291908515611fa35782168015611f8b577f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f006002815414611f7957600290556001600160a01b0382165f908152600e60205260409020611e7590611cce565b611cce565b95848710611f4a57611eb26119dd9697611e9f8560018060a01b03165f52600e60205260405f2090565b9087611eaa42611fbb565b910391612c85565b50506001600160a01b0384165f908152600e60205260409020611f0190611ed842611fbb565b6001600160a01b0387165f908152600e602052604090208890611efa90611cce565b0191612c85565b50506040518581525f8051602061300883398151915290602090a3611f4560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b611dc7565b60405163391434e360e21b81526001600160a01b03841660048201526024810188905260448101869052606490fd5b604051633ee5aeb560e01b8152600490fd5b60405163ec442f0560e01b81525f6004820152602490fd5b604051634b637e8f60e11b81525f6004820152602490fd5b65ffffffffffff90818111611fce571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b634e487b7160e01b5f52601160045260245ffd5b5f19810191908211610b8a57565b9060018201809211610b8a57565b600a8054915f9280600581116120e8575b5092905b83821061207c575050508061204657505f90565b61204f90612001565b600a5f527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8015460301c90565b9091928083169080841860011c8201809211610b8a57845f5265ffffffffffff80837fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8015416908416105f146120d65750925b9190612032565b9392506120e29061200f565b916120cf565b906120f2826128cb565b8203918211610b8a57600a5f5265ffffffffffff80837fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8015416908416105f1461213e57505b5f61202e565b93506121499061200f565b92612138565b6119dd916121db611e7060018060a01b0393848116805f525f80516020612f6883398151915260205260405f2095865491818316978892881680946bffffffffffffffffffffffff60a01b161790557f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f5f80a46001600160a01b03165f908152600e6020526040902090565b91612779565b8054806121ee5750505f90565b5f19918183810111610b8a575f5260205f2001015460301c90565b612211612d47565b612219612db1565b916040519260208401927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604085015260608401524660808401523060a084015260a0835260c08301918383106001600160401b038411176107855760429360e291846040528151902061190160f01b855260c282015201522090565b9161038593916122a793612a55565b90929192612af5565b6001600160a01b0381165f9081527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb0060205260409020805460018101909155918290036122fb575050565b6040516301d4b62360e61b81526001600160a01b039190911660048201526024810191909152604490fd5b365f80375f8036817f00000000000000000000000000000000000000000000000000000000000000005af43d5f803e1561235e573d5ff35b3d5ffd5b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c161561239157565b604051631afcd79f60e31b8152600490fd5b601f81116123af575050565b5f80516020612fa88339815191525f527f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d906020601f840160051c83019310612412575b601f0160051c01905b818110612407575050565b5f81556001016123fc565b90915081906123f3565b601f8111612428575050565b5f80516020612f888339815191525f527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0906020601f840160051c8301931061248b575b601f0160051c01905b818110612480575050565b5f8155600101612475565b909150819061246c565b601f81116124a1575050565b5f80516020612fe88339815191525f527f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b75906020601f840160051c83019310612504575b601f0160051c01905b8181106124f9575050565b5f81556001016124ee565b90915081906124e5565b601f811161251a575050565b5f80516020612fc88339815191525f527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa906020601f840160051c8301931061257d575b601f0160051c01905b818110612572575050565b5f8155600101612567565b909150819061255e565b9081516001600160401b038111610785575f80516020612fe8833981519152906125ba816125b584546118ed565b612495565b602080601f83116001146125ef575081906125eb9394955f926106e65750508160011b915f199060031b1c19161790565b9055565b90601f1983169561262d5f80516020612fe88339815191525f527f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b7590565b925f905b88821061266857505083600195969710612650575b505050811b019055565b01515f1960f88460031b161c191690555f8080612646565b80600185968294968601518155019501930190612631565b9081516001600160401b038111610785575f80516020612fc8833981519152906126b3816126ae84546118ed565b61250e565b602080601f83116001146126e4575081906125eb9394955f926106e65750508160011b915f199060031b1c19161790565b90601f198316956127225f80516020612fc88339815191525f527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa90565b925f905b8882106127445750508360019596971061265057505050811b019055565b80600185968294968601518155019501930190612726565b5f8061038593602081519101845af4612773611bb0565b91612b82565b6001600160a01b038083169392919081169081851415806128a4575b6127a1575b5050505050565b81612816575b5050826127b6575b808061279a565b7fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724916127ed6127e76127f393610eb5565b91612be5565b90612c18565b604080516001600160d01b039384168152919092166020820152a25f80806127af565b61281f90610eb5565b61282884612be5565b61283142611fbb565b6001600160d01b03918280612845866121e1565b169116900392828411610b8a577fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7249361289a9261288192612e51565b6040805192851683529316602082015291829190820190565b0390a25f806127a7565b50831515612795565b81156128b7570490565b634e487b7160e01b5f52601260045260245ffd5b600181111561038557600181600160801b8110156129e4575b61298c61298261297861296e61296461295a61299897600488600160401b6129939a10156129d7575b6401000000008110156129ca575b620100008110156129bd575b6101008110156129b1575b60108110156129a5575b101561299d575b60030260011c612953818b6128ad565b0160011c90565b612953818a6128ad565b61295381896128ad565b61295381886128ad565b61295381876128ad565b61295381866128ad565b80936128ad565b821190565b900390565b60011b612943565b811c9160021b9161293c565b60081c91811b91612932565b60101c9160081b91612927565b60201c9160101b9161291b565b60401c9160201b9161290d565b50600160401b9050608082901c6128e4565b91905b838210612a065750505090565b9091928083169080841860011c8201809211610b8a57845f5265ffffffffffff808360205f20015416908416105f14612a435750925b91906129f9565b939250612a4f9061200f565b91612a3c565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411612acc579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa15610a57575f516001600160a01b03811615612ac257905f905f90565b505f906001905f90565b5050505f9160039190565b60041115612ae157565b634e487b7160e01b5f52602160045260245ffd5b612afe81612ad7565b80612b07575050565b612b1081612ad7565b60018103612b2a5760405163f645eedf60e01b8152600490fd5b612b3381612ad7565b60028103612b545760405163fce698f760e01b815260048101839052602490fd5b80612b60600392612ad7565b14612b685750565b6040516335e2f38360e21b81526004810191909152602490fd5b90612ba95750805115612b9757805190602001fd5b60405163d6bda27560e01b8152600490fd5b81511580612bdc575b612bba575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b15612bb2565b6001600160d01b0390818111612bf9571690565b604490604051906306dfcc6560e41b825260d060048301526024820152fd5b90612c2242611fbb565b6001600160d01b03918280612c36866121e1565b16911601918211610b8a576105bd92612e51565b90815491600160401b8310156107855782612c6d9160016119dd95018155611c2d565b90919082549060031b91821b915f19901b1916179055565b90929192600182019081548015612d17575b5084612ca284612f2e565b50949092845493612cb283611cce565b9681612d02575b5015612cdf575050505f198101908111610b8a57612c6d8591612cdb93611c2d565b9190565b612cdb949293612cfb926001600160d01b039091169190612e51565b5050612c4a565b65ffffffffffff83811691161490505f612cb9565b600160401b81101561078557806001612d339201845583611c2d565b8154905f199060031b1b191690555f612c97565b612d4f611990565b8051908115612d5f576020012090565b50507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100548015612d8c5790565b507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090565b612db9611a65565b8051908115612dc9576020012090565b50507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d101548015612d8c5790565b8054600160401b81101561078557612e1391600182018155611c2d565b612e3e57815160209092015160301b65ffffffffffff191665ffffffffffff92909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b80549293928015612f0457612e68612e7391612001565b825f5260205f200190565b9182549265ffffffffffff91828516928116808411612ef257879303612eb95750612eb292509065ffffffffffff82549181199060301b169116179055565b60301c9190565b915050612eed91612ed9612ecb611b11565b65ffffffffffff9093168352565b6001600160d01b0386166020830152612df6565b612eb2565b604051632520601d60e01b8152600490fd5b5090612f2991612f15612ecb611b11565b6001600160d01b0385166020830152612df6565b5f9190565b805480612f3f5750505f905f905f90565b5f19918183810111610b8a575f5260205f2001015460019165ffffffffffff82169160301c9056fee8b26c30fad74198956032a3533d903385d56dd795af560196f9c78d4af40d0052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace03a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10252c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace04a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d103ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220281bd815124fccd7fe9bb7640aa69e8426685935b48f1e0576dd68a6736ca6d664736f6c63430008190033","sourceMap":"983:2869:112:-:0;;;;;;2603:64:50;983:2869:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2603:64:50;983:2869:112;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;983:2869:112;;;;;;;;-1:-1:-1;;983:2869:112;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;-1:-1:-1;;983:2869:112;;;;;;;-1:-1:-1;;;;;;;;;;;983:2869:112;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;983:2869:112;;;;;;;-1:-1:-1;;;;983:2869:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;983:2869:112;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;983:2869:112;;;;;;:::o;:::-;;;;;;-1:-1:-1;;983:2869:112;;;;;;:::i;:::-;;;966:10:28;11141:19:27;11137:89;;-1:-1:-1;;;;;983:2869:112;;;11239:21:27;;11235:90;;11334:29;966:10:28;;11334:20:27;966:10:28;11334:20:27;:::i;:::-;983:2869:112;;;;;;;;;;;;;;;;11334:29:27;983:2869:112;;;;;;11415:31:27;983:2869:112;966:10:28;11415:31:27;;983:2869:112;;;10117:4:27;983:2869:112;;;11235:90:27;983:2869:112;;-1:-1:-1;;;11283:31:27;;-1:-1:-1;11283:31:27;;;983:2869:112;;;11283:31:27;11137:89;983:2869:112;;-1:-1:-1;;;11183:32:27;;11158:1;11183:32;;;983:2869:112;;;11183:32:27;983:2869:112;;;;;;;;;;;;;-1:-1:-1;;;;;983:2869:112;;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;;983:2869:112;;;;;;;;-1:-1:-1;;;;;983:2869:112;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;983:2869:112;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;983:2869:112;;;;6893:76:26;;:::i;:::-;;;:::i;:::-;983:2869:112;;;-1:-1:-1;;;;;983:2869:112;;;;-1:-1:-1;;;;;;;;;;;983:2869:112;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;-1:-1:-1;983:2869:112;;-1:-1:-1;983:2869:112;;;-1:-1:-1;;983:2869:112;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3875:17:31;983:2869:112;2806:64:31;983:2869:112;;3875:17:31;3902:20;983:2869:112;3902:16:31;983:2869:112;;3902:20:31;983:2869:112;;;;;-1:-1:-1;983:2869:112;;;;;-1:-1:-1;;;;;;;;;;;983:2869:112;;;;-1:-1:-1;;983:2869:112;;;;;-1:-1:-1;983:2869:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;983:2869:112;;;;;;;757:38:108;983:2869:112;;;;;;;;;-1:-1:-1;;983:2869:112;;;;;1732:22:110;;:::i;:::-;983:2869:112;;;;;;;;;;;;-1:-1:-1;;983:2869:112;;;;;;;612:37:108;983:2869:112;;;;;;;;;-1:-1:-1;;983:2869:112;;;;3093:6;3078:48:110;3013:156;3037:90;983:2869:112;;:::i;:::-;;;-1:-1:-1;;;983:2869:112;3078:48:110;;;-1:-1:-1;;;;;983:2869:112;;;;3078:48:110;;;983:2869:112;;;;;;;;;;;;;;;;3078:48:110;;983:2869:112;;3078:48:110;;;;;;:::i;:::-;3037:19;:90;:::i;:::-;983:2869:112;;;;3013:156:110;;;;;;:::i;:::-;983:2869:112;;;-1:-1:-1;983:2869:112;;;;;-1:-1:-1;;;;;;;;;;;983:2869:112;3194:10:110;3185:40;;3194:10;3093:6:112;:::i;:::-;983:2869;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;983:2869:112;;;;;;:::i;:::-;;;:::i;:::-;;;966:10:28;4867:29:27;966:10:28;4867:20:27;;;:::i;:29::-;983:2869:112;;11910:37:27;;;11906:310;;983:2869:112;6198:5:27;;;;:::i;:::-;983:2869:112;;4867:13:27;983:2869:112;;;;;11906:310:27;11967:24;;;11963:130;;-1:-1:-1;;;;;983:2869:112;;11141:19:27;11137:89;;966:10:28;11239:21:27;11235:90;;983:2869:112;6198:5:27;983:2869:112;;11334:29:27;966:10:28;11334:20:27;;;:::i;:29::-;983:2869:112;11906:310:27;;11963:130;983:2869:112;;-1:-1:-1;;;12018:60:27;;966:10:28;983:2869:112;12018:60:27;;983:2869:112;;;;;;;;;;;;;;;12018:60:27;983:2869:112;;;;;;-1:-1:-1;;983:2869:112;;;;;;;;-1:-1:-1;;;;;983:2869:112;;;;;;;;;;;;;;-1:-1:-1;;983:2869:112;;;;;;;;-1:-1:-1;;;1535:37:110;;983:2869:112;1535:37:110;;983:2869:112;;;;;;;;-1:-1:-1;;;;;983:2869:112;1535:37:110;;;;;;983:2869:112;1535:37:110;;;983:2869:112;;;;;;;;;;;;;1535:37:110;;;;;;;;;;;;;;;;:::i;:::-;;;983:2869:112;;;;;;;;;;:::i;:::-;1535:37:110;;;;;-1:-1:-1;1535:37:110;;;;:::i;983:2869:112:-;;;;;;-1:-1:-1;;983:2869:112;;;;;;;1479:40:108;983:2869:112;;;;;;;;;-1:-1:-1;;983:2869:112;;;;;;:::i;:::-;;;837:15:73;819:34;837:15;819:34;:::i;:::-;983:2869:112;;;;;;5077:29:25;;;5073:115;;5204:31;;5254:28;5204:31;;:::i;:::-;5254:28;;:::i;:::-;983:2869:112;;9737:15:71;-1:-1:-1;9762:18:71;;9801:1;9795:7;;9791:234;;983:2869:112;10049:53:71;;;;;;:::i;:::-;10120:63;:8;;;:63;;983:2869:112;-1:-1:-1;10120:63:71;983:2869:112;;-1:-1:-1;;;;;983:2869:112;;;;;;;;;;;;;10120:63:71;10168:7;983:2869:112;10168:7:71;;:::i;:::-;14439:109;-1:-1:-1;14439:109:71;;-1:-1:-1;14439:109:71;;983:2869:112;;;10120:63:71;;9791:234;9838:14;;;;;:::i;:::-;983:2869:112;;;;;;;10049:53:71;14439:109;;-1:-1:-1;14439:109:71;;;;-1:-1:-1;14439:109:71;;983:2869:112;;;;;9870:48:71;9866:149;983:2869:112;;;9938:10:71;9866:149;;9791:234;;;9866:149;9993:7;;;;;;:::i;:::-;9866:149;;;983:2869:112;;:::i;5073:115:25:-;983:2869:112;;-1:-1:-1;;;5129:48:25;;983:2869:112;5129:48:25;;983:2869:112;;;;;;;;;;;;;;12018:60:27;983:2869:112;;;;;;-1:-1:-1;;983:2869:112;;;;;;:::i;:::-;;;-1:-1:-1;;;983:2869:112;2242:52:110;;;-1:-1:-1;;;;;983:2869:112;;;2242:52:110;;;983:2869:112;;;;;;;;;2177:160:110;;2201:94;;2242:52;983:2869:112;;;;2242:52:110;983:2869:112;2177:160:110;983:2869:112;;;;;;-1:-1:-1;;;;;;;;;;;;983:2869:112;;;;;;;;2353:46:110;;-1:-1:-1;;;;;2348:22:112;;:::i;:::-;:42;2344:100;;2499:12;;;;:::i;2344:100::-;983:2869;;-1:-1:-1;;;2413:20:112;;983:2869;;2413:20;983:2869;;;;;;-1:-1:-1;;983:2869:112;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;983:2869:112;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;983:2869:112;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;983:2869:112;;;;;;2297:34:108;983:2869:112;;;;;;;;;;;;;;;;;;-1:-1:-1;;983:2869:112;;;;;-1:-1:-1;;;;;983:2869:112;;;:::i;:::-;;-1:-1:-1;983:2869:112;-1:-1:-1;;;;;;;;;;;983:2869:112;;;-1:-1:-1;983:2869:112;;;;;;;;;;;;;;;-1:-1:-1;;983:2869:112;;;;7028:9:25;983:2869:112;;:::i;:::-;966:10:28;7028:9:25;:::i;983:2869:112:-;;;;;;-1:-1:-1;;983:2869:112;;;;;;-1:-1:-1;983:2869:112;2760:59:108;983:2869:112;;;;-1:-1:-1;983:2869:112;;;;;;;;;;;;;;-1:-1:-1;;983:2869:112;;;;;;;1041:36:108;983:2869:112;;;;;;;;;-1:-1:-1;;983:2869:112;;;;;;;1714:45:108;983:2869:112;;;;;;;;;-1:-1:-1;;983:2869:112;;;;;;4070:28:108;983:2869:112;;;;;;;;;;;;;;;;;;-1:-1:-1;;983:2869:112;;;;;;2465:32:108;983:2869:112;;;;;;;;;;;;;;;;;;-1:-1:-1;;983:2869:112;;;;-1:-1:-1;;;;;983:2869:112;;:::i;:::-;;-1:-1:-1;983:2869:112;1941:15:110;983:2869:112;;;1941:33:110;983:2869:112;-1:-1:-1;983:2869:112;1941:33:110;:::i;983:2869:112:-;-1:-1:-1;;;;;983:2869:112;;;;;4867:13:27;983:2869:112;;;;;;:::o;:::-;-1:-1:-1;;;;;983:2869:112;;;;;5204:22:25;983:2869:112;;;;;;:::o;:::-;;;;;;-1:-1:-1;;983:2869:112;;;;-1:-1:-1;;;;;983:2869:112;;:::i;:::-;;-1:-1:-1;983:2869:112;2636:68:108;983:2869:112;;;;;-1:-1:-1;983:2869:112;;;;;;;;;;;;;;;;;;:::i;:::-;4859:34:110;;983:2869:112;;;;;;;-1:-1:-1;;;;;983:2869:112;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;6893:76:26;;;:::i;:::-;;;:::i;:::-;983:2869:112;;;;;;;-1:-1:-1;;;;;;;;;;;983:2869:112;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;983:2869:112;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;983:2869:112;;;;-1:-1:-1;;983:2869:112;;;;-1:-1:-1;983:2869:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;2600:7:27;983:2869:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;983:2869:112;;;;-1:-1:-1;;;;;983:2869:112;;:::i;:::-;;-1:-1:-1;983:2869:112;972:64:29;983:2869:112;;;;-1:-1:-1;983:2869:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;983:2869:112;;;;2806:64:31;983:2869:112;5777:18:31;:43;;;983:2869:112;;;;;;:::i;:::-;;;:::i;:::-;6043:16:31;983:2869:112;6043:16:31;;:::i;:::-;983:2869:112;;6000:4:31;;;;5965:13;;983:2869:112;;;:::i;:::-;;;-1:-1:-1;;;983:2869:112;;;;;;;;;;;;-1:-1:-1;;;983:2869:112;;;;;;;5777:43:31;983:2869:112;5799:16:31;983:2869:112;5799:21:31;5777:43;;983:2869:112;;;;;;-1:-1:-1;;983:2869:112;;;;;;819:34:73;837:15;819:34;:::i;:::-;983:2869:112;;;1908:29;;;1904:115;;7117:34:94;2067:28:112;;;:::i;:::-;7117:34:94;:::i;:::-;-1:-1:-1;;;;;983:2869:112;;7168:7:94;983:2869:112;;7178:17:94;983:2869:112;7178:17:94;;:::i;:::-;983:2869:112;;;;;;7168:31:94;983:2869:112;;;;;;;;;;;;;7168:31:94;;983:2869:112;-1:-1:-1;7168:31:94;;1904:115:112;983:2869;;-1:-1:-1;;;1960:48:112;;983:2869;1960:48;;983:2869;;;;;;;;;;;;12018:60:27;983:2869:112;;;;;;-1:-1:-1;;983:2869:112;;;;;819:34:73;837:15;819:34;:::i;:::-;983:2869:112;;;;;;;;;;;;;;-1:-1:-1;;983:2869:112;;;;;;;-1:-1:-1;;;;;;;;;;;983:2869:112;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;983:2869:112;;;;;;;-1:-1:-1;;;;983:2869:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;983:2869:112;;;;;-1:-1:-1;;;;;4439:40:25;:31;983:2869:112;;:::i;:::-;4439:31:25;:::i;:::-;:40;:::i;:::-;983:2869:112;;;;;;;;;;;;;-1:-1:-1;;983:2869:112;;;;;;:::i;:::-;;;-1:-1:-1;;;;;983:2869:112;;;;-1:-1:-1;983:2869:112;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;416:25:86;;;;477:31;416:25;;:::i;:::-;983:2869:112;;;;;;;;;;477:31:86;;983:2869:112;;;;;;;;;;;:::i;477:31:86:-;518:79;;;983:2869:112;518:79:86;;983:2869:112;;;;;;-1:-1:-1;;983:2869:112;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;983:2869:112;;;;;;;900:35:108;983:2869:112;;;;;;;;;-1:-1:-1;;983:2869:112;;;;;2995:94:108;983:2869:112;;:::i;:::-;;;-1:-1:-1;983:2869:112;2995:94:108;983:2869:112;;;-1:-1:-1;983:2869:112;;;;;;;;;;;;;;;;;2995:94:108;983:2869:112;;;;;;;;;;;;;-1:-1:-1;;983:2869:112;;;;;;3145:92:108;983:2869:112;;:::i;:::-;;;-1:-1:-1;983:2869:112;3145:92:108;983:2869:112;;;-1:-1:-1;983:2869:112;;;;;;;;;;;;;;;;;3145:92:108;983:2869:112;;;;;;;;;;;;;;;;-1:-1:-1;;983:2869:112;;;;;;;1187:40:108;983:2869:112;;;;;;;;;-1:-1:-1;;983:2869:112;;;;3983:31:108;983:2869:112;;;-1:-1:-1;;;;;983:2869:112;;;;;;;;;;;;;;-1:-1:-1;;983:2869:112;;;;4616:5:27;983:2869:112;;:::i;:::-;;;966:10:28;;4616:5:27;:::i;:::-;983:2869:112;;;4639:4:27;983:2869:112;;;;;;;;;-1:-1:-1;;983:2869:112;;;;;;-1:-1:-1;983:2869:112;2875:64:108;983:2869:112;;;;-1:-1:-1;983:2869:112;;;;;;;;;;;;;;-1:-1:-1;;983:2869:112;;;;2387:22:108;983:2869:112;;;-1:-1:-1;;;;;983:2869:112;;;;;;;;;;;;;;-1:-1:-1;;983:2869:112;;;;;;;1333:36:108;983:2869:112;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;983:2869:112;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;7310:15:25;;:24;7306:91;;7423:168;7660:9;983:2869:112;7626:5:25;983:2869:112;;;7477:57:25;983:2869:112;7477:57:25;;983:2869:112;2345:71:25;983:2869:112;;;;;;;;;;2345:71:25;;983:2869:112;2345:71:25;983:2869:112;2345:71:25;;983:2869:112;;2345:71:25;;983:2869:112;;7477:57:25;;;;;:::i;:::-;7450:86;983:2869:112;;;;;;;7467:68:25;;7450:86;:::i;:::-;7423:168;:::i;:::-;7626:5;;;:::i;:::-;7660:9;:::i;7306:91::-;983:2869:112;;-1:-1:-1;;;7357:29:25;;983:2869:112;7357:29:25;;983:2869:112;;;;;7357:29:25;983:2869:112;;;;;;-1:-1:-1;;983:2869:112;;;;2217:24:108;983:2869:112;;;-1:-1:-1;;;;;983:2869:112;;;;;;;;;;;;;;-1:-1:-1;;983:2869:112;;;;;;;;;;;;;-1:-1:-1;;;;;983:2869:112;;;;;;;;;;;;-1:-1:-1;;983:2869:112;;;;;;;466:39:108;983:2869:112;;;;;;;;;-1:-1:-1;;983:2869:112;;;;;4867:29:27;983:2869:112;;:::i;:::-;4867:20:27;983:2869:112;;:::i;:::-;4867:20:27;;:::i;983:2869:112:-;;;;;;-1:-1:-1;;983:2869:112;;;;;3900:27:108;983:2869:112;;;;;;;;;;;;;-1:-1:-1;;983:2869:112;;;;;;;1616:3:108;983:2869:112;;;;;;;;;-1:-1:-1;;983:2869:112;;;;;;;;;;;;;;;;;;;-1:-1:-1;;983:2869:112;;;;2594:158:110;2618:92;2659:50;;983:2869:112;;:::i;:::-;;;-1:-1:-1;;;983:2869:112;2659:50:110;;;-1:-1:-1;;;;;983:2869:112;;;;2659:50:110;;;983:2869:112;;;;;;;;;;;;;;;;;2594:158:110;983:2869:112;-1:-1:-1;983:2869:112;;;;;-1:-1:-1;;;;;;;;;;;983:2869:112;2777:10:110;2768:46;;2795:12:112;2777:10:110;;2795:12:112;:::i;983:2869::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;983:2869:112;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;983:2869:112;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;983:2869:112;;;;;;;:::o;:::-;;;;-1:-1:-1;6441:7:31;-1:-1:-1;;;;;;;;;;;983:2869:112;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;-1:-1:-1;983:2869:112;;;;;-1:-1:-1;;;983:2869:112;;;;;;;;-1:-1:-1;983:2869:112;;-1:-1:-1;;;983:2869:112;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;983:2869:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6826:10:31;-1:-1:-1;;;;;;;;;;;983:2869:112;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;983:2869:112;;;;;-1:-1:-1;;;983:2869:112;;;;;;;;-1:-1:-1;983:2869:112;;-1:-1:-1;;;983:2869:112;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;983:2869:112;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;983:2869:112;;;;;;-1:-1:-1;;983:2869:112;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;983:2869:112;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;-1:-1:-1;;;;;983:2869:112;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;983:2869:112;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;;;;7178:12:94;983:2869:112;;;;;;7178:12:94;-1:-1:-1;983:2869:112;;;;-1:-1:-1;983:2869:112;:::o;:::-;;:::i;:::-;;;;;;;;-1:-1:-1;983:2869:112;;-1:-1:-1;983:2869:112;;;-1:-1:-1;983:2869:112;:::o;10580:184:94:-;1732:13:110;983:2869:112;10446:8:71;;;:63;-1:-1:-1;10446:63:71;-1:-1:-1;;;;;983:2869:112;;10726:7:94;983:2869:112;;10736:12:94;983:2869:112;;;;;;10736:12:94;-1:-1:-1;983:2869:112;;;;10580:184:94;:::o;10726:31::-;;-1:-1:-1;10580:184:94;:::o;10446:63:71:-;983:2869:112;;;;;;;;1732:13:110;-1:-1:-1;14439:109:71;;;983:2869:112;;;10446:63:71;;10580:184:94;10689:20;;;:::i;:::-;-1:-1:-1;;;;;983:2869:112;;10726:7:94;983:2869:112;;10736:12:94;:17;:12;;:17;:::i;:::-;983:2869:112;;;;;;10580:184:94;:::o;10726:31::-;;;10689:11;10580:184;:::o;983:2869:112:-;;;;;;;;;;;;;;;;;:::o;3342:165::-;-1:-1:-1;;;;;983:2869:112;;;;;;;-1:-1:-1;;;;;;;;;;;983:2869:112;;;;;;;;;;;3493:6;;3342:165;983:2869;;;;;3493:6;:::i;3342:165::-;-1:-1:-1;;;;;;;;;;;983:2869:112;;;;-1:-1:-1;;;;;983:2869:112;;;;;;;;;;;3493:6;;3342:165;983:2869;;;;;3493:6;:::i;3342:165::-;-1:-1:-1;;;;;983:2869:112;;;-1:-1:-1;983:2869:112;;;-1:-1:-1;;;;;;;;;;;983:2869:112;;;;;;;;;;;;;;;3493:6;;3342:165;983:2869;;;;;3493:6;:::i;6605:300:27:-;-1:-1:-1;;;;;983:2869:112;;;;6605:300:27;;;;6688:18;;6684:86;;983:2869:112;;6783:16:27;;6779:86;;2499:73:30;1991:1;983:2869:112;;3670:20:30;3666:88;;1991:1;983:2869:112;;-1:-1:-1;;;;;983:2869:112;;;;;;1941:15:110;983:2869:112;;;;;1941:33:110;;;:::i;:24::-;:33;:::i;:::-;3682:19;;;;3678:115;;3913:65;3271:5:112;3913:21:110;;;;983:2869:112;;;;;;;;1941:15:110;983:2869:112;;;;;;;3913:21:110;837:15:73;;819:34;837:15;819:34;:::i;:::-;983:2869:112;;3913:65:110;;:::i;:::-;-1:-1:-1;;;;;;;983:2869:112;;;;;;1941:15:110;983:2869:112;;;;;4429:65:110;;819:34:73;837:15;819:34;:::i;:::-;-1:-1:-1;;;;;983:2869:112;;;;;;1941:15:110;983:2869:112;;;;;1941:24:110;;:33;;;:::i;:::-;983:2869:112;4429:65:110;;:::i;:::-;-1:-1:-1;;983:2869:112;;;;;-1:-1:-1;;;;;;;;;;;4534:25:110;983:2869:112;;4534:25:110;3426:1:30;1949;2499:73;983:2869:112;3860:283:30;3426:1;3271:5:112;:::i;3678:115:110:-;983:2869:112;;-1:-1:-1;;;3728:50:110;;-1:-1:-1;;;;;983:2869:112;;3728:50:110;;;983:2869:112;;;;;;;;;;;;;;;12018:60:27;3666:88:30;983:2869:112;;-1:-1:-1;;;3713:30:30;;;;;6779:86:27;983:2869:112;;-1:-1:-1;;;6822:32:27;;6704:1;6822:32;;;983:2869:112;;;6822:32:27;6684:86;983:2869:112;;-1:-1:-1;;;6729:30:27;;6704:1;6729:30;;;983:2869:112;;;6729:30:27;14296:213:69;983:2869:112;14374:24:69;;;;14370:103;;983:2869:112;14296:213:69;:::o;14370:103::-;983:2869:112;;;;14421:41:69;;;;;;14452:2;14421:41;;;983:2869:112;;;;;14421:41:69;983:2869:112;;;;;;;;;;;;;-1:-1:-1;;983:2869:112;;;;;;;;:::o;:::-;;9999:1:71;983:2869:112;;;;;;;:::o;9584:606:71:-;2035:13:112;;983:2869;9737:15:71;9702:17;9762:18;;9801:1;9795:7;;9791:234;;9584:606;10049:53;;13105:230;13112:10;;;;;;-1:-1:-1;;;10120:8:71;;;:63;9702:17;9584:606;:::o;10120:63::-;10168:7;;;:::i;:::-;2035:13:112;9702:17:71;14439:109;;;983:2869:112;;;9584:606:71;:::o;13105:230::-;3721:5:68;;;;;;3731;;;;983:2869:112;;;;;;;;;14439:109:71;9702:17;14439:109;983:2869:112;14439:109:71;;;;983:2869:112;;;;;-1:-1:-1;13189:136:71;983:2869:112;;;13248:10:71;13189:136;;13105:230;;;;13189:136;13303:7;;;;;;:::i;:::-;13189:136;;;9791:234;9838:14;;;;:::i;:::-;983:2869:112;;;;;;;2035:13;9702:17:71;14439:109;983:2869:112;14439:109:71;;;;983:2869:112;;;;;9870:48:71;9866:149;983:2869:112;;;9938:10:71;9866:149;9791:234;;;9866:149;9993:7;;;;;:::i;:::-;9866:149;;;7855:367:25;8190:24;7855:367;1941:33:110;:24;983:2869:112;;;;;;;;;;-1:-1:-1;983:2869:112;-1:-1:-1;;;;;;;;;;;983:2869:112;;;-1:-1:-1;983:2869:112;;;;;;;;;;;;;;;;;;;;;;8089:48:25;-1:-1:-1;8089:48:25;;-1:-1:-1;;;;;983:2869:112;;;;;1941:15:110;983:2869:112;;;;;;;1941:33:110;8190:24:25;;:::i;10310:206:71:-;983:2869:112;;10446:8:71;;;:63;;10405:17;10310:206;:::o;10446:63::-;983:2869:112;;;;;;;;;;10405:17:71;14439:109;;10405:17;14439:109;;;983:2869:112;;;10310:206:71;:::o;4946:176:31:-;4243:17;;:::i;:::-;4262:20;;:::i;:::-;983:2869:112;;;4221:92:31;;;;983:2869:112;2073:95:31;983:2869:112;;;2073:95:31;;983:2869:112;2073:95:31;;;983:2869:112;4284:13:31;2073:95;;;983:2869:112;4307:4:31;2073:95;;;983:2869:112;2073:95:31;4221:92;;2073:95;983:2869:112;;;;;;-1:-1:-1;;;;;983:2869:112;;;;;3445:249:65;983:2869:112;3445:249:65;983:2869:112;;;;;;4211:103:31;;-1:-1:-1;;;3445:249:65;;;;;;;;;4946:176:31;:::o;6887:260:63:-;;7105:8;6887:260;;7051:25;6887:260;7051:25;:::i;:::-;7105:8;;;;;:::i;2100:222:29:-;-1:-1:-1;;;;;983:2869:112;;-1:-1:-1;983:2869:112;;;972:64:29;983:2869:112;;;;;;;;;;;;;;2231:16:29;;;2227:89;;2100:222;;:::o;2227:89::-;983:2869:112;;-1:-1:-1;;;2270:35:29;;-1:-1:-1;;;;;983:2869:112;;;;2270:35:29;;;983:2869:112;;;;;;;;;;12018:60:27;2323:83:50;1019:819;;;;;;;4698:19:110;;1019:819:50;;;;;;;;;;;;;;;;7084:141:26;983:2869:112;8837:64:26;983:2869:112;;;;7150:18:26;7146:73;;7084:141::o;7146:73::-;983:2869:112;;-1:-1:-1;;;7191:17:26;;;;;983:2869:112;;;;;;;;:::o;:::-;-1:-1:-1;;;;;;;;;;;;983:2869:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;983:2869:112;;;;;;;;;-1:-1:-1;983:2869:112;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;;;;;;;;983:2869:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;983:2869:112;;;;;;;;;-1:-1:-1;983:2869:112;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;;;;;;;;983:2869:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;983:2869:112;;;;;;;;;-1:-1:-1;983:2869:112;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;;;;;;;;983:2869:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;983:2869:112;;;;;;;;;-1:-1:-1;983:2869:112;;;;;;;;-1:-1:-1;;;;;983:2869:112;;;;-1:-1:-1;;;;;;;;;;;983:2869:112;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;;;;;;;;;;983:2869:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;983:2869:112;;;;-1:-1:-1;;;;;;;;;;;983:2869:112;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;983:2869:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;3900:253:56;4049:25;3900:253;4091:55;3900:253;4049:25;;;;;;;;;;:::i;:::-;4091:55;;:::i;8998:846:25:-;-1:-1:-1;;;;;983:2869:112;;;;8998:846:25;;983:2869:112;;;;9152:10:25;;;;;:24;;8998:846;9148:690;;8998:846;;;;;;:::o;9148:690::-;9196:18;9192:317;;9148:690;9526:16;;;9522:306;;9148:690;;;;;9522:306;9769:44;9628:26;9702;9628;9601:145;9628:26;;:::i;:::-;9702;;:::i;:::-;9601:145;;:::i;:::-;983:2869:112;;;-1:-1:-1;;;;;983:2869:112;;;;;;;;;;;;;9769:44:25;9522:306;;;;;9192:317;9300:28;;;:::i;:::-;9381:26;;;:::i;:::-;819:34:73;837:15;819:34;:::i;:::-;-1:-1:-1;;;;;983:2869:112;;;10716:14:25;;;:::i;:::-;983:2869:112;;;;;;;;;;;9448:46:25;8310:38:71;9448:46:25;8310:38:71;;;;:::i;:::-;983:2869:112;;;;;;;;;;;;;;;;;;;;;;9448:46:25;;;;9192:317;;;;9152:24;9166:10;;;;9152:24;;983:2869:112;;;;;;;:::o;:::-;;;;;;;;;;;;18080:5181:68;18246:1;18241:6;;;18237:53;;18246:1;19217:14;-1:-1:-1;;;19278:16:68;;;19274:92;;18080:5181;22827:18;22717;22607;22498;22387;22278;23216:28;19383:15;19898:6;19383:15;-1:-1:-1;;;23237:6:68;19383:15;;;19379:90;;18080:5181;19493:7;19486:15;;;19482:90;;18080:5181;19596:7;19589:15;;;19585:89;;18080:5181;19698:6;19691:14;;;19687:87;;18080:5181;19798:6;19791:14;;;19787:87;;18080:5181;19891:14;;19887:61;;18080:5181;20374:1;983:2869:112;18246:1:68;983:2869:112;22284:6:68;;;;:::i;:::-;983:2869:112;;;;;22278:18:68;22393:6;;;;:::i;22387:18::-;22504:6;;;;:::i;22498:18::-;22613:6;;;;:::i;22607:18::-;22723:6;;;;:::i;22717:18::-;22833:6;;;;:::i;22827:18::-;23237:6;;;:::i;:::-;23232:11;;;983:2869:112;23216:28:68;983:2869:112;;18080:5181:68;:::o;19887:61::-;18246:1;983:2869:112;19887:61:68;;19787:87;983:2869:112;;;;;19787:87:68;;;19687;983:2869:112;;;;;19687:87:68;;;19585:89;983:2869:112;;;;;19585:89:68;;;19482:90;983:2869:112;;;;;19482:90:68;;;19379;983:2869:112;;;;;19379:90:68;;;19274:92;-1:-1:-1;;;;983:2869:112;-1:-1:-1;983:2869:112;;;;19274:92:68;;12929:433:71;;;13112:10;;;;;;13344:11;;;12929:433;:::o;13105:230::-;3721:5:68;;;;;;3731;;;;983:2869:112;;;;;;;;;14439:109:71;-1:-1:-1;14439:109:71;983:2869:112;14439:109:71;;;-1:-1:-1;14439:109:71;;983:2869:112;;;;;-1:-1:-1;13189:136:71;983:2869:112;;;13248:10:71;13189:136;;13105:230;;;;13189:136;13303:7;;;;;;:::i;:::-;13189:136;;;5203:1551:63;;;6283:66;6270:79;;6266:164;;983:2869:112;;;;;;-1:-1:-1;983:2869:112;;;;;;;;;;;;;;;;;;;6541:24:63;;;;;;;;;-1:-1:-1;6541:24:63;-1:-1:-1;;;;;983:2869:112;;6579:20:63;6575:113;;6698:49;-1:-1:-1;6698:49:63;-1:-1:-1;5203:1551:63;:::o;6575:113::-;6615:62;-1:-1:-1;6615:62:63;6541:24;6615:62;-1:-1:-1;6615:62:63;:::o;6266:164::-;6365:54;;;6381:1;6365:54;6385:30;6365:54;;:::o;983:2869:112:-;;-1:-1:-1;983:2869:112;;;:::o;:::-;;;;;;;;;;;;7280:532:63;983:2869:112;;;:::i;:::-;7366:29:63;;;7411:7;;:::o;7362:444::-;983:2869:112;;;:::i;:::-;7471:29:63;7462:38;;7471:29;;983:2869:112;;-1:-1:-1;;;7523:23:63;;;;;7458:348;983:2869:112;;;:::i;:::-;7576:35:63;7567:44;;7576:35;;983:2869:112;;-1:-1:-1;;;7634:46:63;;;;;983:2869:112;;;;;12018:60:27;7563:243:63;983:2869:112;;7710:30:63;983:2869:112;;:::i;:::-;7701:39:63;7697:109;;7563:243;7280:532::o;7697:109::-;983:2869:112;;-1:-1:-1;;;7763:32:63;;;;;983:2869:112;;;;;;12018:60:27;4421:582:56;;4593:8;;-1:-1:-1;983:2869:112;;5674:21:56;:17;;5799:158;;;;;;5670:354;983:2869:112;;-1:-1:-1;;;5994:19:56;;;;;4589:408;983:2869:112;;4841:22:56;:49;;;4589:408;4837:119;;4969:17;;:::o;4837:119::-;983:2869:112;;-1:-1:-1;;;4917:24:56;;-1:-1:-1;;;;;983:2869:112;;;4917:24:56;;;983:2869:112;;;4917:24:56;4841:49;4867:18;;;:23;4841:49;;4174:218:69;-1:-1:-1;;;;;983:2869:112;4254:25:69;;;4250:105;;983:2869:112;4174:218:69;:::o;4250:105::-;983:2869:112;;;;14421:41:69;;;;4302:42;;4333:3;4302:42;;;983:2869:112;;;;;4302:42:69;10473:273:25;;819:34:73;837:15;819:34;:::i;:::-;-1:-1:-1;;;;;983:2869:112;;;10716:14:25;;;:::i;:::-;983:2869:112;;;;;;;;;8310:38:71;;;:::i;983:2869:112:-;;;;;-1:-1:-1;;;983:2869:112;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6246:584:94;;;;;6360:12;;;983:2869:112;;;6360:24:94;;6356:75;;6246:584;6474:30;;;;;:::i;:::-;983:2869:112;;;;;;6578:12:94;;;;:::i;:::-;6604:24;;;;6246:584;-1:-1:-1;6600:188:94;;;-1:-1:-1;;;;;983:2869:112;;;;;;;6644:21:94;;;:29;:21;;:::i;:29::-;6798:25;6246:584;:::o;6600:188::-;6753:24;;983:2869:112;;8310:38:71;;-1:-1:-1;;;;;983:2869:112;;;;;8310:38:71;:::i;:::-;6753:24:94;;;:::i;6604:::-;983:2869:112;;;;;;6614:14:94;;-1:-1:-1;6604:24:94;;;6356:75;-1:-1:-1;;;983:2869:112;;;;;;6360:12:94;983:2869:112;;;;;;;:::i;:::-;;;;;;;;;;;;;;6356:75:94;;;7058:687:31;983:2869:112;;:::i;:::-;;;;7230:22:31;;;;983:2869:112;;7275:22:31;7268:29;:::o;7226:513::-;-1:-1:-1;;2806:64:31;983:2869:112;7603:15:31;;;;7638:17;:::o;7599:130::-;7694:20;7701:13;7694:20;:::o;7966:723::-;983:2869:112;;:::i;:::-;;;;8147:25:31;;;;983:2869:112;;8195:25:31;8188:32;:::o;8143:540::-;-1:-1:-1;;8507:16:31;983:2869:112;8541:18:31;;;;8579:20;:::o;983:2869:112:-;;;-1:-1:-1;;;983:2869:112;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;983:2869:112;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;11657:922:71;983:2869:112;;11657:922:71;;;11864:7;;;;11936;11916:28;11936:7;;:::i;:::-;11916:28;14439:109;;;;;;14289:265;;11916:28;983:2869:112;;;;;;;;;;;;12103:13:71;;;12099:89;;12251:14;;;;;12285:19;;;;983:2869:112;;;;;;;;;;;;;;;;;12285:19:71;983:2869:112;;12423:25:71;;:::o;12247:163::-;983:2869:112;;;12343:52:71;983:2869:112;12353:41:71;983:2869:112;;:::i;:::-;;;;;;;;12353:41:71;-1:-1:-1;;;;;983:2869:112;;12353:41:71;;;983:2869:112;12343:52:71;:::i;:::-;12247:163;;12099:89;983:2869:112;;-1:-1:-1;;;12143:30:71;;;;;11860:713;983:2869:112;;12479:52:71;983:2869:112;12489:41:71;983:2869:112;;:::i;12489:41:71:-;-1:-1:-1;;;;;983:2869:112;;12489:41:71;;;983:2869:112;12343:52:71;:::i;12479:::-;11870:1;12545:17;;:::o;10695:389::-;983:2869:112;;10871:8:71;;;10895:20;;10833:17;10895:20;10833:17;10895:20;10833:17;10895:20;:::o;10867:211::-;983:2869:112;;;;;;;;;;10833:17:71;14439:109;;10833:17;14439:109;;;983:2869:112;11014:1:71;983:2869:112;;;;;;;11030:37:71;:::o","linkReferences":{},"immutableReferences":{"72460":[{"start":2184,"length":32},{"start":9008,"length":32}]}},"methodIdentifiers":{"CLOCK_MODE()":"4bf5d7e9","DEPOSITOR_WHITELIST_ROLE()":"1b66c9e1","DEPOSIT_LIMIT_SET_ROLE()":"a21a1df9","DEPOSIT_WHITELIST_SET_ROLE()":"db388715","EPOCH_DURATION_SET_ROLE()":"61819dd8","FLASH_FEE_BASE()":"ecc98f05","FLASH_FEE_RATE_SET_ROLE()":"bc46f722","FLASH_FEE_RECEIVER_SET_ROLE()":"31d9736c","FLASH_LOAN_ENABLED_SET_ROLE()":"a66b3a73","IS_DEPOSIT_LIMIT_SET_ROLE()":"1415519b","RETURN_VALUE()":"653b04cd","_VaultTokenized_init(bytes)":"7bd00ae8","_VaultVotes_init(bytes)":"0eac105e","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burner()":"27810b6e","clock()":"91ddadf4","collateral()":"d8dfeb45","decimals()":"313ce567","delegate(address)":"5c19a95c","delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32)":"c3cda520","delegates(address)":"587cde1e","delegator()":"ce9b7930","deposit(address,uint256)":"47e7ef24","depositLimit()":"ecf70858","depositWhitelist()":"48d3b775","eip712Domain()":"84b0196e","flashFeeRate()":"e945da7f","flashFeeReceiver()":"a8b24f9a","flashLoanEnabled()":"65d61c6c","getPastTotalSupply(uint256)":"8e539e8c","getPastVotes(address,uint256)":"3a46b1a8","getVotes(address)":"9ab24eb0","isDelegatorInitialized()":"50861adc","isDepositLimit()":"a1b12202","isDepositorWhitelisted(address)":"794b15b7","isSlasherInitialized()":"6ec1e3f8","isWithdrawalsClaimed(uint256,address)":"a5d03223","name()":"06fdde03","nonces(address)":"7ecebe00","redeem(address,uint256)":"1e9a6950","slasher()":"b1344271","staticDelegateCall(address,bytes)":"9f86fd85","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","withdraw(address,uint256)":"f3fef3a3","withdrawalShares(uint256)":"afba70ad","withdrawalSharesOf(uint256,address)":"a3b54172","withdrawals(uint256)":"5cc07076"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"baseImplementation\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CheckpointUnorderedInsertion\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ECDSAInvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"ECDSAInvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"ECDSAInvalidSignatureS\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timepoint\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"clock\",\"type\":\"uint48\"}],\"name\":\"ERC5805FutureLookup\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC6372InconsistentClock\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currentNonce\",\"type\":\"uint256\"}],\"name\":\"InvalidAccountNonce\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidData\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeSupplyExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"name\":\"VotesExpiredSignature\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"fromDelegate\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"toDelegate\",\"type\":\"address\"}],\"name\":\"DelegateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegate\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"previousVotes\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newVotes\",\"type\":\"uint256\"}],\"name\":\"DelegateVotesChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EIP712DomainChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"CLOCK_MODE\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEPOSITOR_WHITELIST_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEPOSIT_LIMIT_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEPOSIT_WHITELIST_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"EPOCH_DURATION_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FLASH_FEE_BASE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FLASH_FEE_RATE_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FLASH_FEE_RECEIVER_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FLASH_LOAN_ENABLED_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"IS_DEPOSIT_LIMIT_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RETURN_VALUE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"_VaultTokenized_init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"_VaultVotes_init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"burner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"clock\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"collateral\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"}],\"name\":\"delegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"delegateBySig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"delegates\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"delegator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"depositedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mintedShares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"depositLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"depositWhitelist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"flashFeeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"flashFeeReceiver\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"flashLoanEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timepoint\",\"type\":\"uint256\"}],\"name\":\"getPastTotalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timepoint\",\"type\":\"uint256\"}],\"name\":\"getPastVotes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getVotes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isDelegatorInitialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isDepositLimit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isDepositorWhitelisted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isSlasherInitialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isWithdrawalsClaimed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"claimer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"withdrawnAssets\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mintedShares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slasher\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"staticDelegateCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"claimer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"burnedShares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mintedShares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"}],\"name\":\"withdrawalShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"withdrawalSharesOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"}],\"name\":\"withdrawals\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"CheckpointUnorderedInsertion()\":[{\"details\":\"A value was attempted to be inserted on a past checkpoint.\"}],\"ECDSAInvalidSignature()\":[{\"details\":\"The signature derives the `address(0)`.\"}],\"ECDSAInvalidSignatureLength(uint256)\":[{\"details\":\"The signature has an invalid length.\"}],\"ECDSAInvalidSignatureS(bytes32)\":[{\"details\":\"The signature has an S value that is in the upper half order.\"}],\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC5805FutureLookup(uint256,uint48)\":[{\"details\":\"Lookup to future votes is not available.\"}],\"ERC6372InconsistentClock()\":[{\"details\":\"The clock was incorrectly modified.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidAccountNonce(address,uint256)\":[{\"details\":\"The nonce used for an `account` is not the expected current nonce.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}],\"VotesExpiredSignature(uint256)\":[{\"details\":\"The signature used has expired.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"DelegateChanged(address,address,address)\":{\"details\":\"Emitted when an account changes their delegate.\"},\"DelegateVotesChanged(address,uint256,uint256)\":{\"details\":\"Emitted when a token transfer or delegate change results in changes to a delegate's number of voting units.\"},\"EIP712DomainChanged()\":{\"details\":\"MAY be emitted to signal that the domain could have changed.\"},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"CLOCK_MODE()\":{\"details\":\"Description of the clock\"},\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"clock()\":{\"details\":\"Clock used for flagging checkpoints. Can be overridden to implement timestamp based checkpoints (and voting).\"},\"decimals()\":{\"details\":\"Returns the decimals places of the token.\"},\"delegate(address)\":{\"details\":\"Delegates votes from the sender to `delegatee`.\"},\"delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Delegates votes from signer to `delegatee`.\"},\"delegates(address)\":{\"details\":\"Returns the delegate that `account` has chosen.\"},\"eip712Domain()\":{\"details\":\"See {IERC-5267}.\"},\"getPastTotalSupply(uint256)\":{\"details\":\"Returns the total supply of votes available at a specific moment in the past. If the `clock()` is configured to use block numbers, this will return the value at the end of the corresponding block. NOTE: This value is the sum of all available votes, which is not necessarily the sum of all delegated votes. Votes that have not been delegated are still part of total supply, even though they would not participate in a vote.\"},\"getPastVotes(address,uint256)\":{\"details\":\"Returns the amount of votes that `account` had at a specific moment in the past. If the `clock()` is configured to use block numbers, this will return the value at the end of the corresponding block. Requirements: - `timepoint` must be in the past. If operating using block numbers, the block must be already mined.\"},\"getVotes(address)\":{\"details\":\"Returns the current amount of votes that `account` has.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"nonces(address)\":{\"details\":\"Returns the next unused nonce for an address.\"},\"staticDelegateCall(address,bytes)\":{\"details\":\"It allows to use this contract's storage on-chain.\",\"params\":{\"data\":\"data to make a delegatecall with\",\"target\":\"address of the contract to make a delegatecall to\"}},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DEPOSITOR_WHITELIST_ROLE()\":{\"notice\":\"Get a depositor whitelist status setter's role.\"},\"DEPOSIT_LIMIT_SET_ROLE()\":{\"notice\":\"Get a deposit limit setter's role.\"},\"DEPOSIT_WHITELIST_SET_ROLE()\":{\"notice\":\"Get a deposit whitelist enabler/disabler's role.\"},\"EPOCH_DURATION_SET_ROLE()\":{\"notice\":\"Get a epoch duration setter's role.\"},\"FLASH_FEE_BASE()\":{\"notice\":\"Get a flash fee base.\"},\"FLASH_FEE_RATE_SET_ROLE()\":{\"notice\":\"Get a flash fee rate setter's role.\"},\"FLASH_FEE_RECEIVER_SET_ROLE()\":{\"notice\":\"Get a flash fee receiver setter's role.\"},\"FLASH_LOAN_ENABLED_SET_ROLE()\":{\"notice\":\"Get a flash loan enabled setter's role.\"},\"IS_DEPOSIT_LIMIT_SET_ROLE()\":{\"notice\":\"Get a deposit limit enabler/disabler's role.\"},\"RETURN_VALUE()\":{\"notice\":\"Get a value that must be returned by the flash loan borrower.\"},\"burner()\":{\"notice\":\"Get a burner to issue debt to (e.g., 0xdEaD or some unwrapper contract).\"},\"collateral()\":{\"notice\":\"Get a vault collateral.\"},\"delegator()\":{\"notice\":\"Get a delegator (it delegates the vault's stake to networks and operators).\"},\"depositLimit()\":{\"notice\":\"Get a deposit limit (maximum amount of the active stake that can be in the vault simultaneously).\"},\"depositWhitelist()\":{\"notice\":\"Get if the deposit whitelist is enabled.\"},\"flashFeeRate()\":{\"notice\":\"Get a flash fee rate (100% = 1_000_000_000; 0.03% = 300_000).\"},\"flashFeeReceiver()\":{\"notice\":\"Get a flash fee receiver.\"},\"flashLoanEnabled()\":{\"notice\":\"Get if a flash loan mechanic is enabled.\"},\"isDelegatorInitialized()\":{\"notice\":\"Get if the delegator is initialized.\"},\"isDepositLimit()\":{\"notice\":\"Get if the deposit limit is set.\"},\"isDepositorWhitelisted(address)\":{\"notice\":\"Get if a given account is whitelisted as a depositor.\"},\"isSlasherInitialized()\":{\"notice\":\"Get if the slasher is initialized.\"},\"isWithdrawalsClaimed(uint256,address)\":{\"notice\":\"Get if the withdrawals are claimed for a particular account at a given epoch.\"},\"slasher()\":{\"notice\":\"Get a slasher (it provides networks a slashing mechanism).\"},\"staticDelegateCall(address,bytes)\":{\"notice\":\"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data).\"},\"withdrawalShares(uint256)\":{\"notice\":\"Get a total number of withdrawal shares at a given epoch.\"},\"withdrawalSharesOf(uint256,address)\":{\"notice\":\"Get a number of withdrawal shares for a particular account at a given epoch (zero if claimed).\"},\"withdrawals(uint256)\":{\"notice\":\"Get a total amount of the withdrawals at a given epoch.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/vault/v1.1/VaultVotesImplementation.sol\":\"VaultVotesImplementation\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/governance/utils/VotesUpgradeable.sol\":{\"keccak256\":\"0x5d043309b7688b0182e3020af70b5cb0b9186e111d39409ebca8177739a9d43b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e32bd2dd9e49f088cd19b007a5d83e960059f4d8c5b26ef1764c07c980a2e8e0\",\"dweb:/ipfs/QmQ2Dr7rVELrE2aEmX4jy9RSQYkYxnazcqQk6w2Pzfwdcs\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol\":{\"keccak256\":\"0xbb96dc9c468170c3224126e953de917e06332ec5909a3d85e6e5bb0df10c5139\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d14e6486e127e7e31c2ffccfc212c7ebaaecf8fb05677575128b449ee113def2\",\"dweb:/ipfs/QmabvyfStwBcum8mGfkmxcTV45rjyHmzHGCxfxyhmu48Yx\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/NoncesUpgradeable.sol\":{\"keccak256\":\"0x778f4a1546a1c6c726ecc8e2348a2789690fb8f26e12bd9d89537669167b79a4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://851d3dfe724e918ff0a064b206e1ef46b27ab0df2aa2c8af976973a22ef59827\",\"dweb:/ipfs/Qmd4wb7zX8ueYhMVBy5PJjfsANK3Ra3pKPN7qQkNsdwGHn\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf\",\"dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/cryptography/EIP712Upgradeable.sol\":{\"keccak256\":\"0x7a618cd9a1eea21201ec2ed8484080ca6225215e8883723bef34b9dcf22aa3b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://287a73451277e35206f1f8b9f20b2cd41732081bd23523f5a2c64e1e67694c33\",\"dweb:/ipfs/QmdPVK7KACRpoavNUoixGsi8jBWeZUJfNYCzZbHGSGz5yu\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1\",\"dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX\"]},\"lib/openzeppelin-contracts/contracts/governance/utils/IVotes.sol\":{\"keccak256\":\"0x5e2b397ae88fd5c68e4f6762eb9f65f65c36702eb57796495f471d024ce70947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://348fc8e291d54314bb22437b532f443d5dbfb80c8cc9591567c1af6554ccf856\",\"dweb:/ipfs/QmP8ZTyitZinxcpwAHeYHhwj7u21zPpKXSiww38V74sXC2\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol\":{\"keccak256\":\"0x0b1459615b9b47c2a4eec8e72f23ccc601f1d711f679a1c06b3390459021a341\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aaf6209fb90f02ebd1c9603568f5e6da5fa2f896820ba66b5041eeed993dc4ce\",\"dweb:/ipfs/QmYsSH2PSGbTXMVXXxhh9AXzfHPSz2j42REvds6xjU7WmR\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashLender.sol\":{\"keccak256\":\"0x5d19ea24c555cf6a5dbafea9fac57887cc3e72154f3ee8e0a2bf67971811c14b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3af1364c971d94bccf3efcc509b2c5c03fe1c69ea9945ba29a96998bfd6c593e\",\"dweb:/ipfs/Qmczq52prNGX5tHuk8aENZsuYgxTeA6YVMHV7yMTKeFjbr\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC5805.sol\":{\"keccak256\":\"0x4b9b89f91adbb7d3574f85394754cfb08c5b4eafca8a7061e2094a019ab8f818\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7373d5dbb8eb2381aa0883a456fac89283fcaf52f42fa805d4188f270716742a\",\"dweb:/ipfs/QmVnZDmT4ABvNhRJMaQnbCzsCA8HpyHPVaxi4fCi92LFv2\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC6372.sol\":{\"keccak256\":\"0xeb2857b7dafb7e0d8526dbfe794e6c047df2851c9e6ee91dc4a55f3c34af5d33\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://49bf13f6c2a38a9bcc7b852d4e2b9cebb4068b832642cce61069cdb5f06bb2fb\",\"dweb:/ipfs/QmdKAJVE7rR2kENCZnEM1yKswrGii7WuE9gZpsQvnXJhwn\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0\",\"dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e\",\"dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44\",\"dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6\",\"dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza\"]},\"src/contracts/common/StaticDelegateCallable.sol\":{\"keccak256\":\"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764\",\"dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD\"]},\"src/contracts/libraries/Checkpoints.sol\":{\"keccak256\":\"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609\",\"dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE\"]},\"src/contracts/vault/v1.1/VaultStorage.sol\":{\"keccak256\":\"0x510c83437bb493d66c299aec31ccd9d741e1348299b4170d891d476218231d19\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://8879b6b1ad9ecc8ffa5d7725b03158dc2f65e30ac65fe3af9c654277740039e0\",\"dweb:/ipfs/QmdC4DkajUbGuRzaCsqegJWGTxXvooWFCVkU7EdXG9mou2\"]},\"src/contracts/vault/v1.1/VaultTokenizedImplementation.sol\":{\"keccak256\":\"0x07bb1e77b3c7cd0c754d4ae874fb731f82cf31a6647c40db6e0b8e7e491af2ca\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1514dd2e4f16c13c764529524c0f66f2009a2d348e5e680d170ca6eb81ec0266\",\"dweb:/ipfs/QmXAKr68V1nPXsee8GUVYAYiiY5bDqKpTamU5DenMPhewX\"]},\"src/contracts/vault/v1.1/VaultVotesImplementation.sol\":{\"keccak256\":\"0x041fc819e1995d62babe1e6f16127643a21dc64a6f4d7b86bae38d91d847177a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c7625d8ed13406e14402a730dfd2d31d9d2af416b8c1513c17fa4a96dec91b65\",\"dweb:/ipfs/QmPzct62JHMTK68iZhCnNGvNBJshhRCZNdEohb3tEPe6pM\"]},\"src/interfaces/common/IStaticDelegateCallable.sol\":{\"keccak256\":\"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516\",\"dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi\"]},\"src/interfaces/vault/v1.1/IVault.sol\":{\"keccak256\":\"0x41c3b7c7955923f29d7a913dcd49a2f7c4c40339eda1cdf675d04bf15168fbd4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7f26841febf819da87037e7f285fb4e9c3a3191d2cc9284d4679bd5f3d5eb79\",\"dweb:/ipfs/QmejKi1svukhK2bwGPvSXLzG4oMKUZo7xEm1gNvuYWNbDK\"]},\"src/interfaces/vault/v1.1/IVaultStorage.sol\":{\"keccak256\":\"0x762053f3cc4cb5809c48b846a77b36e697323b2011118c2df8ea2692a02ece5b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282252083722ebdb1e8977ba1fd4860e15acb49bb4ec337632dd14304863b1d\",\"dweb:/ipfs/QmNNBo5HaWBenQZLgnjF3NbxVRupfgYeUMztYYQMpD9VoB\"]},\"src/interfaces/vault/v1.1/IVaultTokenized.sol\":{\"keccak256\":\"0x98adcf1802a3e90cdc93e26afd6f27da02727473f18f482a6b297f8574a195e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://10c1d8f09f0ad1e82d198491124e8867dc1c64b242a705c4bb13abaa37b5cea2\",\"dweb:/ipfs/QmfNUPDbLQADLnQbsto5yKW2bR4v5RgphvrqoTQhSE7zkv\"]},\"src/interfaces/vault/v1.1/IVaultVotes.sol\":{\"keccak256\":\"0x0b55695c0c8db6834a1f45b4351df4e85f64c91f801a8959d47e805e1131b6e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://79a8658f328570466c746cff2e67b11a5d64506012d14184f3f17633700b4bdd\",\"dweb:/ipfs/QmPhjrP1YwTMrdtLodhChnmfKaR8MbPehMnpwCEWSu8ji6\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"baseImplementation","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[],"type":"error","name":"CheckpointUnorderedInsertion"},{"inputs":[],"type":"error","name":"ECDSAInvalidSignature"},{"inputs":[{"internalType":"uint256","name":"length","type":"uint256"}],"type":"error","name":"ECDSAInvalidSignatureLength"},{"inputs":[{"internalType":"bytes32","name":"s","type":"bytes32"}],"type":"error","name":"ECDSAInvalidSignatureS"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientAllowance"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC20InvalidApprover"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC20InvalidSender"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"ERC20InvalidSpender"},{"inputs":[{"internalType":"uint256","name":"timepoint","type":"uint256"},{"internalType":"uint48","name":"clock","type":"uint48"}],"type":"error","name":"ERC5805FutureLookup"},{"inputs":[],"type":"error","name":"ERC6372InconsistentClock"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"currentNonce","type":"uint256"}],"type":"error","name":"InvalidAccountNonce"},{"inputs":[],"type":"error","name":"InvalidData"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintDowncast"},{"inputs":[],"type":"error","name":"SafeSupplyExceeded"},{"inputs":[{"internalType":"uint256","name":"expiry","type":"uint256"}],"type":"error","name":"VotesExpiredSignature"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"fromDelegate","type":"address","indexed":true},{"internalType":"address","name":"toDelegate","type":"address","indexed":true}],"type":"event","name":"DelegateChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"delegate","type":"address","indexed":true},{"internalType":"uint256","name":"previousVotes","type":"uint256","indexed":false},{"internalType":"uint256","name":"newVotes","type":"uint256","indexed":false}],"type":"event","name":"DelegateVotesChanged","anonymous":false},{"inputs":[],"type":"event","name":"EIP712DomainChanged","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[],"stateMutability":"payable","type":"fallback"},{"inputs":[],"stateMutability":"view","type":"function","name":"CLOCK_MODE","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEPOSITOR_WHITELIST_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEPOSIT_LIMIT_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEPOSIT_WHITELIST_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"EPOCH_DURATION_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FLASH_FEE_BASE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FLASH_FEE_RATE_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FLASH_FEE_RECEIVER_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FLASH_LOAN_ENABLED_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_DEPOSIT_LIMIT_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"RETURN_VALUE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"_VaultTokenized_init"},{"inputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"_VaultVotes_init"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"burner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"clock","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"collateral","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"delegate"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"delegateBySig"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"delegator","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"onBehalfOf","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"deposit","outputs":[{"internalType":"uint256","name":"depositedAmount","type":"uint256"},{"internalType":"uint256","name":"mintedShares","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"depositLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"depositWhitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"eip712Domain","outputs":[{"internalType":"bytes1","name":"fields","type":"bytes1"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"version","type":"string"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"verifyingContract","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256[]","name":"extensions","type":"uint256[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"flashFeeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"flashFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"flashLoanEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"timepoint","type":"uint256"}],"stateMutability":"view","type":"function","name":"getPastTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"timepoint","type":"uint256"}],"stateMutability":"view","type":"function","name":"getPastVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"isDelegatorInitialized","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"isDepositLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"isDepositorWhitelisted","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"isSlasherInitialized","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"isWithdrawalsClaimed","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"claimer","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"redeem","outputs":[{"internalType":"uint256","name":"withdrawnAssets","type":"uint256"},{"internalType":"uint256","name":"mintedShares","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"slasher","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"staticDelegateCall"},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"claimer","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"withdraw","outputs":[{"internalType":"uint256","name":"burnedShares","type":"uint256"},{"internalType":"uint256","name":"mintedShares","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"}],"stateMutability":"view","type":"function","name":"withdrawalShares","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"withdrawalSharesOf","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"}],"stateMutability":"view","type":"function","name":"withdrawals","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{"CLOCK_MODE()":{"details":"Description of the clock"},"allowance(address,address)":{"details":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"Returns the value of tokens owned by `account`."},"clock()":{"details":"Clock used for flagging checkpoints. Can be overridden to implement timestamp based checkpoints (and voting)."},"decimals()":{"details":"Returns the decimals places of the token."},"delegate(address)":{"details":"Delegates votes from the sender to `delegatee`."},"delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32)":{"details":"Delegates votes from signer to `delegatee`."},"delegates(address)":{"details":"Returns the delegate that `account` has chosen."},"eip712Domain()":{"details":"See {IERC-5267}."},"getPastTotalSupply(uint256)":{"details":"Returns the total supply of votes available at a specific moment in the past. If the `clock()` is configured to use block numbers, this will return the value at the end of the corresponding block. NOTE: This value is the sum of all available votes, which is not necessarily the sum of all delegated votes. Votes that have not been delegated are still part of total supply, even though they would not participate in a vote."},"getPastVotes(address,uint256)":{"details":"Returns the amount of votes that `account` had at a specific moment in the past. If the `clock()` is configured to use block numbers, this will return the value at the end of the corresponding block. Requirements: - `timepoint` must be in the past. If operating using block numbers, the block must be already mined."},"getVotes(address)":{"details":"Returns the current amount of votes that `account` has."},"name()":{"details":"Returns the name of the token."},"nonces(address)":{"details":"Returns the next unused nonce for an address."},"staticDelegateCall(address,bytes)":{"details":"It allows to use this contract's storage on-chain.","params":{"data":"data to make a delegatecall with","target":"address of the contract to make a delegatecall to"}},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"Returns the value of tokens in existence."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`."}},"version":1},"userdoc":{"kind":"user","methods":{"DEPOSITOR_WHITELIST_ROLE()":{"notice":"Get a depositor whitelist status setter's role."},"DEPOSIT_LIMIT_SET_ROLE()":{"notice":"Get a deposit limit setter's role."},"DEPOSIT_WHITELIST_SET_ROLE()":{"notice":"Get a deposit whitelist enabler/disabler's role."},"EPOCH_DURATION_SET_ROLE()":{"notice":"Get a epoch duration setter's role."},"FLASH_FEE_BASE()":{"notice":"Get a flash fee base."},"FLASH_FEE_RATE_SET_ROLE()":{"notice":"Get a flash fee rate setter's role."},"FLASH_FEE_RECEIVER_SET_ROLE()":{"notice":"Get a flash fee receiver setter's role."},"FLASH_LOAN_ENABLED_SET_ROLE()":{"notice":"Get a flash loan enabled setter's role."},"IS_DEPOSIT_LIMIT_SET_ROLE()":{"notice":"Get a deposit limit enabler/disabler's role."},"RETURN_VALUE()":{"notice":"Get a value that must be returned by the flash loan borrower."},"burner()":{"notice":"Get a burner to issue debt to (e.g., 0xdEaD or some unwrapper contract)."},"collateral()":{"notice":"Get a vault collateral."},"delegator()":{"notice":"Get a delegator (it delegates the vault's stake to networks and operators)."},"depositLimit()":{"notice":"Get a deposit limit (maximum amount of the active stake that can be in the vault simultaneously)."},"depositWhitelist()":{"notice":"Get if the deposit whitelist is enabled."},"flashFeeRate()":{"notice":"Get a flash fee rate (100% = 1_000_000_000; 0.03% = 300_000)."},"flashFeeReceiver()":{"notice":"Get a flash fee receiver."},"flashLoanEnabled()":{"notice":"Get if a flash loan mechanic is enabled."},"isDelegatorInitialized()":{"notice":"Get if the delegator is initialized."},"isDepositLimit()":{"notice":"Get if the deposit limit is set."},"isDepositorWhitelisted(address)":{"notice":"Get if a given account is whitelisted as a depositor."},"isSlasherInitialized()":{"notice":"Get if the slasher is initialized."},"isWithdrawalsClaimed(uint256,address)":{"notice":"Get if the withdrawals are claimed for a particular account at a given epoch."},"slasher()":{"notice":"Get a slasher (it provides networks a slashing mechanism)."},"staticDelegateCall(address,bytes)":{"notice":"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data)."},"withdrawalShares(uint256)":{"notice":"Get a total number of withdrawal shares at a given epoch."},"withdrawalSharesOf(uint256,address)":{"notice":"Get a number of withdrawal shares for a particular account at a given epoch (zero if claimed)."},"withdrawals(uint256)":{"notice":"Get a total amount of the withdrawals at a given epoch."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/vault/v1.1/VaultVotesImplementation.sol":"VaultVotesImplementation"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/governance/utils/VotesUpgradeable.sol":{"keccak256":"0x5d043309b7688b0182e3020af70b5cb0b9186e111d39409ebca8177739a9d43b","urls":["bzz-raw://e32bd2dd9e49f088cd19b007a5d83e960059f4d8c5b26ef1764c07c980a2e8e0","dweb:/ipfs/QmQ2Dr7rVELrE2aEmX4jy9RSQYkYxnazcqQk6w2Pzfwdcs"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol":{"keccak256":"0xbb96dc9c468170c3224126e953de917e06332ec5909a3d85e6e5bb0df10c5139","urls":["bzz-raw://d14e6486e127e7e31c2ffccfc212c7ebaaecf8fb05677575128b449ee113def2","dweb:/ipfs/QmabvyfStwBcum8mGfkmxcTV45rjyHmzHGCxfxyhmu48Yx"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/NoncesUpgradeable.sol":{"keccak256":"0x778f4a1546a1c6c726ecc8e2348a2789690fb8f26e12bd9d89537669167b79a4","urls":["bzz-raw://851d3dfe724e918ff0a064b206e1ef46b27ab0df2aa2c8af976973a22ef59827","dweb:/ipfs/Qmd4wb7zX8ueYhMVBy5PJjfsANK3Ra3pKPN7qQkNsdwGHn"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol":{"keccak256":"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866","urls":["bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf","dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/cryptography/EIP712Upgradeable.sol":{"keccak256":"0x7a618cd9a1eea21201ec2ed8484080ca6225215e8883723bef34b9dcf22aa3b5","urls":["bzz-raw://287a73451277e35206f1f8b9f20b2cd41732081bd23523f5a2c64e1e67694c33","dweb:/ipfs/QmdPVK7KACRpoavNUoixGsi8jBWeZUJfNYCzZbHGSGz5yu"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606","urls":["bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1","dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/governance/utils/IVotes.sol":{"keccak256":"0x5e2b397ae88fd5c68e4f6762eb9f65f65c36702eb57796495f471d024ce70947","urls":["bzz-raw://348fc8e291d54314bb22437b532f443d5dbfb80c8cc9591567c1af6554ccf856","dweb:/ipfs/QmP8ZTyitZinxcpwAHeYHhwj7u21zPpKXSiww38V74sXC2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol":{"keccak256":"0x0b1459615b9b47c2a4eec8e72f23ccc601f1d711f679a1c06b3390459021a341","urls":["bzz-raw://aaf6209fb90f02ebd1c9603568f5e6da5fa2f896820ba66b5041eeed993dc4ce","dweb:/ipfs/QmYsSH2PSGbTXMVXXxhh9AXzfHPSz2j42REvds6xjU7WmR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashLender.sol":{"keccak256":"0x5d19ea24c555cf6a5dbafea9fac57887cc3e72154f3ee8e0a2bf67971811c14b","urls":["bzz-raw://3af1364c971d94bccf3efcc509b2c5c03fe1c69ea9945ba29a96998bfd6c593e","dweb:/ipfs/Qmczq52prNGX5tHuk8aENZsuYgxTeA6YVMHV7yMTKeFjbr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol":{"keccak256":"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92","urls":["bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a","dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC5805.sol":{"keccak256":"0x4b9b89f91adbb7d3574f85394754cfb08c5b4eafca8a7061e2094a019ab8f818","urls":["bzz-raw://7373d5dbb8eb2381aa0883a456fac89283fcaf52f42fa805d4188f270716742a","dweb:/ipfs/QmVnZDmT4ABvNhRJMaQnbCzsCA8HpyHPVaxi4fCi92LFv2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC6372.sol":{"keccak256":"0xeb2857b7dafb7e0d8526dbfe794e6c047df2851c9e6ee91dc4a55f3c34af5d33","urls":["bzz-raw://49bf13f6c2a38a9bcc7b852d4e2b9cebb4068b832642cce61069cdb5f06bb2fb","dweb:/ipfs/QmdKAJVE7rR2kENCZnEM1yKswrGii7WuE9gZpsQvnXJhwn"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b","urls":["bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b","dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol":{"keccak256":"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd","urls":["bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac","dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330","urls":["bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf","dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed","urls":["bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0","dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84","urls":["bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9","dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575","urls":["bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e","dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3","urls":["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03","dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol":{"keccak256":"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f","urls":["bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44","dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc","urls":["bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6","dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza"],"license":"MIT"},"src/contracts/common/StaticDelegateCallable.sol":{"keccak256":"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90","urls":["bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764","dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD"],"license":"BUSL-1.1"},"src/contracts/libraries/Checkpoints.sol":{"keccak256":"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c","urls":["bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609","dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE"],"license":"MIT"},"src/contracts/vault/v1.1/VaultStorage.sol":{"keccak256":"0x510c83437bb493d66c299aec31ccd9d741e1348299b4170d891d476218231d19","urls":["bzz-raw://8879b6b1ad9ecc8ffa5d7725b03158dc2f65e30ac65fe3af9c654277740039e0","dweb:/ipfs/QmdC4DkajUbGuRzaCsqegJWGTxXvooWFCVkU7EdXG9mou2"],"license":"BUSL-1.1"},"src/contracts/vault/v1.1/VaultTokenizedImplementation.sol":{"keccak256":"0x07bb1e77b3c7cd0c754d4ae874fb731f82cf31a6647c40db6e0b8e7e491af2ca","urls":["bzz-raw://1514dd2e4f16c13c764529524c0f66f2009a2d348e5e680d170ca6eb81ec0266","dweb:/ipfs/QmXAKr68V1nPXsee8GUVYAYiiY5bDqKpTamU5DenMPhewX"],"license":"BUSL-1.1"},"src/contracts/vault/v1.1/VaultVotesImplementation.sol":{"keccak256":"0x041fc819e1995d62babe1e6f16127643a21dc64a6f4d7b86bae38d91d847177a","urls":["bzz-raw://c7625d8ed13406e14402a730dfd2d31d9d2af416b8c1513c17fa4a96dec91b65","dweb:/ipfs/QmPzct62JHMTK68iZhCnNGvNBJshhRCZNdEohb3tEPe6pM"],"license":"MIT"},"src/interfaces/common/IStaticDelegateCallable.sol":{"keccak256":"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5","urls":["bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516","dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi"],"license":"MIT"},"src/interfaces/vault/v1.1/IVault.sol":{"keccak256":"0x41c3b7c7955923f29d7a913dcd49a2f7c4c40339eda1cdf675d04bf15168fbd4","urls":["bzz-raw://b7f26841febf819da87037e7f285fb4e9c3a3191d2cc9284d4679bd5f3d5eb79","dweb:/ipfs/QmejKi1svukhK2bwGPvSXLzG4oMKUZo7xEm1gNvuYWNbDK"],"license":"MIT"},"src/interfaces/vault/v1.1/IVaultStorage.sol":{"keccak256":"0x762053f3cc4cb5809c48b846a77b36e697323b2011118c2df8ea2692a02ece5b","urls":["bzz-raw://5282252083722ebdb1e8977ba1fd4860e15acb49bb4ec337632dd14304863b1d","dweb:/ipfs/QmNNBo5HaWBenQZLgnjF3NbxVRupfgYeUMztYYQMpD9VoB"],"license":"MIT"},"src/interfaces/vault/v1.1/IVaultTokenized.sol":{"keccak256":"0x98adcf1802a3e90cdc93e26afd6f27da02727473f18f482a6b297f8574a195e0","urls":["bzz-raw://10c1d8f09f0ad1e82d198491124e8867dc1c64b242a705c4bb13abaa37b5cea2","dweb:/ipfs/QmfNUPDbLQADLnQbsto5yKW2bR4v5RgphvrqoTQhSE7zkv"],"license":"MIT"},"src/interfaces/vault/v1.1/IVaultVotes.sol":{"keccak256":"0x0b55695c0c8db6834a1f45b4351df4e85f64c91f801a8959d47e805e1131b6e3","urls":["bzz-raw://79a8658f328570466c746cff2e67b11a5d64506012d14184f3f17633700b4bdd","dweb:/ipfs/QmPhjrP1YwTMrdtLodhChnmfKaR8MbPehMnpwCEWSu8ji6"],"license":"MIT"}},"version":1},"id":112} \ No newline at end of file diff --git a/out/VetoSlasher.sol/VetoSlasher.json b/out/VetoSlasher.sol/VetoSlasher.json index 3f6885e5..6783d33b 100644 --- a/out/VetoSlasher.sol/VetoSlasher.json +++ b/out/VetoSlasher.sol/VetoSlasher.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"vaultFactory","type":"address","internalType":"address"},{"name":"networkMiddlewareService","type":"address","internalType":"address"},{"name":"networkRegistry","type":"address","internalType":"address"},{"name":"slasherFactory","type":"address","internalType":"address"},{"name":"entityType","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"BURNER_GAS_LIMIT","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"BURNER_RESERVE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"NETWORK_MIDDLEWARE_SERVICE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"NETWORK_REGISTRY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"TYPE","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"VAULT_FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"cumulativeSlash","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"cumulativeSlashAt","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"executeSlash","inputs":[{"name":"slashIndex","type":"uint256","internalType":"uint256"},{"name":"hints","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"slashedAmount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"initialize","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isBurnerHook","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"latestSlashedCaptureTimestamp","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"value","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"requestSlash","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","internalType":"uint48"},{"name":"hints","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"slashIndex","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"resolver","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"resolverAt","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"resolverSetEpochsDelay","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"setResolver","inputs":[{"name":"identifier","type":"uint96","internalType":"uint96"},{"name":"resolver_","type":"address","internalType":"address"},{"name":"hints","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"slashRequests","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","internalType":"uint48"},{"name":"vetoDeadline","type":"uint48","internalType":"uint48"},{"name":"completed","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"slashRequestsLength","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"slashableStake","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"captureTimestamp","type":"uint48","internalType":"uint48"},{"name":"hints","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"staticDelegateCall","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"vault","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"vetoDuration","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"vetoSlash","inputs":[{"name":"slashIndex","type":"uint256","internalType":"uint256"},{"name":"hints","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"ExecuteSlash","inputs":[{"name":"slashIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"slashedAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"RequestSlash","inputs":[{"name":"slashIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"slashAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","indexed":false,"internalType":"uint48"},{"name":"vetoDeadline","type":"uint48","indexed":false,"internalType":"uint48"}],"anonymous":false},{"type":"event","name":"SetResolver","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"resolver","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"VetoSlash","inputs":[{"name":"slashIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"resolver","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AlreadySet","inputs":[]},{"type":"error","name":"CheckpointUnorderedInsertion","inputs":[]},{"type":"error","name":"InsufficientBurnerGas","inputs":[]},{"type":"error","name":"InsufficientSlash","inputs":[]},{"type":"error","name":"InvalidCaptureTimestamp","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"InvalidResolverSetEpochsDelay","inputs":[]},{"type":"error","name":"InvalidVetoDuration","inputs":[]},{"type":"error","name":"NoBurner","inputs":[]},{"type":"error","name":"NoResolver","inputs":[]},{"type":"error","name":"NotInitialized","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"NotNetwork","inputs":[]},{"type":"error","name":"NotNetworkMiddleware","inputs":[]},{"type":"error","name":"NotResolver","inputs":[]},{"type":"error","name":"NotVault","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SlashPeriodEnded","inputs":[]},{"type":"error","name":"SlashRequestCompleted","inputs":[]},{"type":"error","name":"SlashRequestNotExist","inputs":[]},{"type":"error","name":"VetoPeriodEnded","inputs":[]},{"type":"error","name":"VetoPeriodNotEnded","inputs":[]}],"bytecode":{"object":"0x6101203461017757601f612f8038819003918201601f19168301916001600160401b03918284118585101761017b578160a092869260409687528339810103126101775761004c8361018f565b6100586020850161018f565b9161006484860161018f565b9460806100736060830161018f565b910151918083168303610177577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff82891c16610166578080831603610122575b50505060805260a05260c05260e05261010091825251612ddc91826101a483396080518261032a015260a0518281816113090152612445015260c0518281816101cc0152611b8e015260e0518281816102e60152611d180152518181816109ec015261135f0152f35b6001600160401b0319909116811790915585519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80806100b9565b875163f92ee8a960e01b8152600490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101775756fe60806040526004361015610011575f80fd5b5f3560e01c8063103f2907146101a45780631a2be2c41461019f578063267de1f31461019a5780632964f8dc146101955780632c9d45b3146101905780632dd310001461018b57806331ce4dfe1461018657806334d098ea14610181578063439fab911461017c578063545ce389146101775780638f42f9ab146101725780639168f9d21461016d5780639a896551146101685780639f86fd8514610163578063aa8e64891461015e578063aab3595f14610159578063b94c386e14610154578063bb24fe8a1461014f578063bc6eac5b1461014a578063c0cd7c3e14610145578063cd05b8a114610140578063d5c24e1a1461013b578063e054e08b14610136578063f9268d18146101315763fbfa77cf1461012c575f80fd5b611596565b611428565b611403565b6113e6565b61138e565b61134a565b61132d565b6112ea565b610f9e565b610f46565b610f08565b610e02565b610d77565b61094c565b61092f565b610695565b61055d565b61050c565b6104a3565b610315565b6102d1565b6102b5565b610260565b61020c565b6101b7565b5f9103126101b357565b5f80fd5b346101b3575f3660031901126101b3576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6001600160a01b038116036101b357565b346101b35760403660031901126101b3576020610258610253602435610231816101fb565b6004355f526002845260405f209060018060a01b03165f5260205260405f2090565b61199e565b604051908152f35b346101b35760403660031901126101b357602065ffffffffffff6102ab602435610289816101fb565b6004355f526001845260405f209060018060a01b03165f5260205260405f2090565b5416604051908152f35b346101b3575f3660031901126101b3576020604051614e208152f35b346101b3575f3660031901126101b3576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346101b3575f3660031901126101b3576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b65ffffffffffff8116036101b357565b634e487b7160e01b5f52604160045260245ffd5b602081019081106001600160401b0382111761039857604052565b610369565b606081019081106001600160401b0382111761039857604052565b604081019081106001600160401b0382111761039857604052565b6001600160401b03811161039857604052565b90601f801991011681019081106001600160401b0382111761039857604052565b6040519060c082018281106001600160401b0382111761039857604052565b604051906104338261039d565b565b60405190610433826103b8565b6001600160401b03811161039857601f01601f191660200190565b81601f820112156101b35780359061047482610442565b9261048260405194856103e6565b828452602083830101116101b357815f926020809301838601378301015290565b346101b35760603660031901126101b3576024356104c081610359565b604435906001600160401b0382116101b3576105036104e5602093369060040161045d565b6004355f90815260068552604090206001600160a01b039390611a1e565b16604051908152f35b346101b3575f3660031901126101b357602060ff5f5460a01c166040519015158152f35b9181601f840112156101b3578235916001600160401b0383116101b357602083818601950101116101b357565b346101b35760203660031901126101b3576001600160401b036004358181116101b35761058e903690600401610530565b5f80516020612d87833981519152549260ff8460401c161593168015908161068d575b6001149081610683575b15908161067a575b50610668575f80516020612d87833981519152805467ffffffffffffffff191660011790556105f6918361064457611b57565b6105fc57005b5f80516020612d87833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f80516020612d87833981519152805460ff60401b1916600160401b179055611b57565b60405163f92ee8a960e01b8152600490fd5b9050155f6105c3565b303b1591506105bb565b8491506105b1565b346101b35760a03660031901126101b357600460243581356106b6826101fb565b606435916106c383610359565b6084356001600160401b0381116101b3576106e19036908601610530565b93906106eb611cc1565b6106f484611cf0565b6106fc6115e2565b9480610919575b505061070e42611dd8565b610728610721875465ffffffffffff1690565b8092611657565b5f5490959061074d90610741906001600160a01b031681565b6001600160a01b031690565b958760206040988951928380926327f843b560e11b82525afa80156109145761078c92610781925f926108e3575b506116ad565b65ffffffffffff1690565b65ffffffffffff84169081109081156108cd575b506108bd576107b56107be9151848688611fc5565b50604435611d87565b9586156108af576108ab610884878988887f3cb7f4ff6cecf74cee0eb9ae3ebf8933fa60a53014cce52f96da72a78dba8464896108038a6107fe42611dd8565b611657565b92600354978894610854610815610407565b8881526001600160a01b0385166020820152808b018a905265ffffffffffff8616606082015265ffffffffffff831660808201525f60a08201526116d8565b885197885265ffffffffffff938416602089015290921660408701526001600160a01b0316949081906060820190565b0390a461089d60015f80516020612d6783398151915255565b519081529081906020820190565b0390f35b855163167f871760e31b8152fd5b8551631357ac9160e11b81528790fd5b90506108db61078142611dd8565b11155f6107a0565b61090691925060203d60201161090d575b6108fe81836103e6565b810190611676565b905f61077b565b503d6108f4565b61168b565b6109279295508101906115f5565b925f80610703565b346101b3575f3660031901126101b3576020600354604051908152f35b346101b35760603660031901126101b35760048035906bffffffffffffffffffffffff821682036101b357602435610983816101fb565b6044356001600160401b0381116101b3576109a19036908401610530565b906109aa611cc1565b6109b26115e2565b5081610d12575b5050604080516302910f8b60e31b8152338185019081526001600160a01b0395929491602091829082908190830103818a7f0000000000000000000000000000000000000000000000000000000000000000165afa908115610914575f91610ce5575b5015610cd6575f54610a57906001600160a01b0316936bffffffffffffffffffffffff166bffffffffffffffffffffffff193360601b161790565b95610a72610a6d885f52600660205260405f2090565b6128a9565b50949015610c6c57610a8661078142611dd8565b65ffffffffffff9586161115610c3657610ab0610aab895f52600660205260405f2090565b611d99565b505b610ad5610741610741610741610ad08c5f52600660205260405f2090565b612663565b91808716928303610b41575b505050505050610b26907f7b0b759b513b299fd2811f51926dca8854222a675557e8d544ce0933bf5b7570925b516001600160a01b0390911681529081906020820190565b0390a2610b3f60015f80516020612d6783398151915255565b005b610b588998959796985f52600660205260405f2090565b911692845163186a323160e21b815281818981885afa908115610914575f91610c19575b5081600554958751998a80926327f843b560e11b82525afa9081156109145789610be1610bf3977f7b0b759b513b299fd2811f51926dca8854222a675557e8d544ce0933bf5b75709c610be895610b269d610bed985f92610bfc575b505016906117e0565b9116611801565b611dd8565b90612b09565b82958495610ae1565b610c129250803d1061090d576108fe81836103e6565b5f80610bd8565b610c309150823d841161090d576108fe81836103e6565b5f610b7c565b610c54610741610741610741610ad08c5f52600660205260405f2090565b82871603610ab257865163a741a04560e01b81528490fd5b5093949385169250508115610cc8575091610b2691610cc17f7b0b759b513b299fd2811f51926dca8854222a675557e8d544ce0933bf5b757094610cb8875f52600660205260405f2090565b610bed42611dd8565b5050610b0e565b825163a741a04560e01b8152fd5b5083516323d53b9760e21b8152fd5b610d059150823d8411610d0b575b610cfd81836103e6565b8101906117cc565b5f610a1c565b503d610cf3565b610d1e918101906115f5565b505f806109b9565b634e487b7160e01b5f52603260045260245ffd5b600354811015610d725760035f5260021b7fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b01905f90565b610d26565b346101b35760203660031901126101b3576004356003548110156101b357610d9e90610d3a565b50805460018201546002830154600390930154604080519384526001600160a01b0390921660208401529082019290925265ffffffffffff808316606080840191909152603084901c90911660808301529190911c60ff16151560a082015260c090f35b346101b3576040806003193601126101b357600435610e20816101fb565b602435906001600160401b0382116101b3575f8091610e46610eaa943690600401610530565b908187519283928337810184815203915af43d15610eb257610e9c3d610e6b81610442565b90610e78865192836103e6565b81523d5f602083013e5b84519485931515602085015280840152606083019061180e565b03601f1981018352826103e6565b805190602001fd5b610e9c6060610e82565b9060806003198301126101b35760043591602435610ed9816101fb565b91604435610ee681610359565b91606435906001600160401b0382116101b357610f059160040161045d565b90565b346101b3576020610258610f41610f1e36610ebc565b939190925f526002865260405f209060018060a01b03165f5260205260405f2090565b611e0a565b346101b3576020610f62610f5936610ebc565b92919091611fc5565b50604051908152f35b9060406003198301126101b35760043591602435906001600160401b0382116101b357610f9a91600401610530565b9091565b346101b357610fac36610f6b565b9190610fb6611cc1565b610fbe61185e565b92806112d4575b50506003548110156112c257610fda81610d3a565b5090815490610fe882611cf0565b6003830180549365ffffffffffff9384861660018060a01b0361100d895183856115bd565b16151580611297575b8061127e575b61126c576110328161102d42611dd8565b6116ad565b5f5461104890610741906001600160a01b031681565b96600460206040998a51928380926327f843b560e11b82525afa80156109145782915f9161124d575b501691161161123c57600183018054909861109c93929188906001600160a01b031691015192611fc5565b906110ab816002850154611d87565b96871561122b5760601c60ff1661121a57926111d36111c6899461119e61118b8b9687876108ab9f6111998f9d8f9e6111d99f6110f586600160601b60ff60601b19825416179055565b8a54855461111791906001600160a01b0316885465ffffffffffff16916121f5565b8a5485546111309189916001600160a01b031690612275565b8a54945461114e906001600160a01b0316965465ffffffffffff1690565b97611157610426565b9384526020840152818301525196879160208301919091604080606083019480518452602081015160208501520151910152565b03601f1981018752866103e6565b6123e1565b6111b76111b1855465ffffffffffff1690565b866124ea565b5494546001600160a01b031690565b915465ffffffffffff1690565b92612567565b81518381527f5cc28df3b54da9d06f805d87616ebf969c81310f2aa8369cb14ca50f815d411190602090a261089d60015f80516020612d6783398151915255565b8551633428e90760e01b8152600490fd5b865163167f871760e31b8152600490fd5b8551639ea153eb60e01b8152600490fd5b611266915060203d60201161090d576108fe81836103e6565b5f611071565b60405163b62b15c760e01b8152600490fd5b5061128b61078142611dd8565b868860301c161161101c565b506112bb6107416112af6112aa42611dd8565b611696565b60208b015190856115bd565b1515611016565b604051637822972360e11b8152600490fd5b6112e292935081019061187d565b905f80610fc5565b346101b3575f3660031901126101b35760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346101b3575f3660031901126101b3576020600554604051908152f35b346101b3575f3660031901126101b3576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346101b35760403660031901126101b3576024356001600160401b0381116101b3576113d46113c3602092369060040161045d565b6113cc42611dd8565b6004356115bd565b6040516001600160a01b039091168152f35b346101b3575f3660031901126101b3576020604051620249f08152f35b346101b3575f3660031901126101b357602065ffffffffffff60045416604051908152f35b346101b35761143636610f6b565b9061143f611cc1565b611447611905565b9180611582575b50506003548210156112c25761146382610d3a565b506003815491019182549165ffffffffffff9160018060a01b0361148b8251858716856115bd565b16918215918215611559575b5050611547573303611535576114af61078142611dd8565b908260301c1611156115245760601c60ff1661151257805460ff60601b1916600160601b17905533907f7d3d269c851b72257a5194a401d151902e9be4347d555996dcff3ff86a077e925f80a3610b3f60015f80516020612d6783398151915255565b604051633428e90760e01b8152600490fd5b60405162c457e560e81b8152600490fd5b604051635d154fe160e11b8152600490fd5b60405163dd1ebd9d60e01b8152600490fd5b61157a9250906107419160206115716112aa42611dd8565b910151916115bd565b155f80611497565b61158f925081019061191e565b5f8061144e565b346101b3575f3660031901126101b3575f546040516001600160a01b039091168152602090f35b5f9081526006602052604090206001600160a01b03926115de929091611a1e565b1690565b604051906115ef8261037d565b60608252565b906020828203126101b35781356001600160401b03928382116101b35701906020828203126101b3576040519261162b8461037d565b82359081116101b35761163e920161045d565b815290565b634e487b7160e01b5f52601160045260245ffd5b91909165ffffffffffff8080941691160191821161167157565b611643565b908160209103126101b35751610f0581610359565b6040513d5f823e3d90fd5b65ffffffffffff9081165f19019190821161167157565b65ffffffffffff918216908216039190821161167157565b634e487b7160e01b5f525f60045260245ffd5b600354600160401b811015610398578060016116f79201600355610d3a565b9190916117ba578051825560208101516001830180546001600160a01b0319166001600160a01b0392909216919091179055610433916117a09060a09060039060408501516002820155019261176d65ffffffffffff606083015116859065ffffffffffff1665ffffffffffff19825416179055565b60808101516bffffffffffff00000000000085549160301b16906bffffffffffff00000000000019161784550151151590565b815460ff60601b191690151560601b60ff60601b16179055565b6116c5565b519081151582036101b357565b908160209103126101b357610f05906117bf565b8181029291811591840414171561167157565b906001820180921161167157565b9190820180921161167157565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b5f9081526002602090815260408083206001600160a01b03909416835292905220610f05929190611e0a565b6040519061186b8261039d565b60606040838281528260208201520152565b906020828203126101b35781356001600160401b03928382116101b35701906060828203126101b357604051926118b38461039d565b82358181116101b357826118c891850161045d565b845260208301358181116101b357826118e291850161045d565b602085015260408301359081116101b3576118fd920161045d565b604082015290565b60405190611912826103b8565b60606020838281520152565b906020828203126101b35781356001600160401b03928382116101b35701906040828203126101b35760405192611954846103b8565b82358181116101b3578261196991850161045d565b845260208301359081116101b357611981920161045d565b602082015290565b8054821015610d72575f5260205f2001905f90565b6119a781612663565b6001600160d01b038116156119cc5760016119c29201611989565b90549060031b1c90565b50505f90565b908160209103126101b3575163ffffffff811681036101b35790565b5f1981019190821161167157565b9190820391821161167157565b90600163ffffffff8093160191821161167157565b91805115611b025780602080611a39935183010191016119d2565b91611a4483826126a3565b92611a55845165ffffffffffff1690565b9065ffffffffffff8085169216828114611ae95782119182611a94575b5050611a8257610f0592506129b5565b5050602001516001600160d01b031690565b909150611aa183546119ee565b63ffffffff831614918215611aba575b50505f80611a72565b611ae1919250611ad5611acf61078192611a09565b856126a3565b5165ffffffffffff1690565b115f80611ab1565b50505050602091909101516001600160d01b0316905090565b50610f05916129b5565b9190916040818403126101b3578035611b24816101fb565b9260208201356001600160401b0381116101b357610f05920161045d565b908160209103126101b35751610f05816101fb565b611b6391810190611b0c565b6040516302910f8b60e31b81526001600160a01b0392831660048201819052929160209182816024817f000000000000000000000000000000000000000000000000000000000000000088165afa908115610914575f91611ca4575b5015611c925781611bf4600492611bd46126f7565b5f80546001600160a01b0319166001600160a01b03891617905586612784565b94604051928380926313c085b760e11b82525afa918215610914575f92611c65575b5050161580611c5b575b611c4957516104339015155f805460ff60a01b191691151560a01b60ff60a01b16919091179055565b60405163d2420f5960e01b8152600490fd5b5080511515611c20565b611c849250803d10611c8b575b611c7c81836103e6565b810190611b42565b5f80611c16565b503d611c72565b6040516362df054560e01b8152600490fd5b611cbb9150833d8511610d0b57610cfd81836103e6565b5f611bbf565b5f80516020612d678339815191526002815414611cde5760029055565b604051633ee5aeb560e01b8152600490fd5b604051635daf681960e11b815260609190911c60048201526001600160a01b036020826024817f000000000000000000000000000000000000000000000000000000000000000085165afa918215610914575f92611d66575b5033911603611d5457565b60405163227bf64d60e01b8152600490fd5b611d8091925060203d602011611c8b57611c7c81836103e6565b905f611d49565b9080821015611d94575090565b905090565b90611da382612663565b9180548015611dc4575f190190611dba8282611989565b6117ba575f905555565b634e487b7160e01b5f52603160045260245ffd5b65ffffffffffff90818111611deb571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b91805115611ecc5780602080611e25935183010191016119d2565b91611e308382612903565b92611e41845165ffffffffffff1690565b9065ffffffffffff8085169216828114611ec05782119182611e77575b5050611e6e57610f0592506128f8565b50506020015190565b909150611e8483546119ee565b63ffffffff831614918215611e9d575b50505f80611e5e565b611eb8919250611ad5611eb261078192611a09565b85612903565b115f80611e94565b50505050506020015190565b50610f05916128f8565b81601f820112156101b357805190611eed82610442565b92611efb60405194856103e6565b828452602083830101116101b357815f9260208093018386015e8301015290565b906020828203126101b35781516001600160401b03928382116101b35701906040828203126101b35760405192611f52846103b8565b82518181116101b35782611f67918501611ed6565b845260208301519081116101b3576119819201611ed6565b908160209103126101b3575190565b9081526001600160a01b03909116602082015265ffffffffffff9091166040820152608060608201819052610f059291019061180e565b92611fce611905565b908051806121db575b5050611fe242611dd8565b5f54909490611ffb90610741906001600160a01b031681565b93604051956327f843b560e11b875260209687816004818a5afa80156109145761202f92610781925f926121c357506116ad565b65ffffffffffff82169081109081156121ac575b811561217b575b5061216f578560049560405196878092630ce9b79360e41b82525afa9485156109145761209c9587915f91612152575b50845190604051808099819463e02f693760e01b8352878b8a60048601611f8e565b03916001600160a01b03165afa9384156109145761210e955f95612111575b509261210385936121099361210396869a6120fa610253836120e5875f52600260205260405f2090565b9060018060a01b03165f5260205260405f2090565b95015192611832565b906119fc565b611d87565b91565b61210992955061210394919361213f612103928a3d8c1161214b575b61213781836103e6565b810190611f7f565b969350939194506120bb565b503d61212d565b6121699150823d8411611c8b57611c7c81836103e6565b5f61207a565b5050505050505f905f90565b90506121a5610781612199876120e5875f52600160205260405f2090565b5465ffffffffffff1690565b115f61204a565b90506121ba61078142611dd8565b81101590612043565b6109069192508a3d8c1161090d576108fe81836103e6565b6121ee9250602080918301019101611f1c565b5f80611fd7565b919091805f52600160205265ffffffffffff806122258560405f209060018060a01b03165f5260205260405f2090565b54169083161161223457505050565b6104339261225c915f52600160205260405f209060018060a01b03165f5260205260405f2090565b9065ffffffffffff1665ffffffffffff19825416179055565b9190825f5260026020526122cd6102536122a28360405f209060018060a01b03165f5260205260405f2090565b926122ac42611dd8565b955f52600260205260405f209060018060a01b03165f5260205260405f2090565b918201809211611671576001810190815415612371575b6122ed816128a9565b5094908354956122fc8461199e565b508161235c575b501561233b5750505f198301928311611671576104339261232391611989565b90919082549060031b91821b915f19901b1916179055565b61043394612355926001600160d01b039091169190612b09565b5050612992565b65ffffffffffff83811691161490505f612303565b61237a82612965565b6122e4565b60606020610f05938184526001600160401b0381511682850152015191604080820152019061180e565b919360a093610f05969565ffffffffffff938552600180871b031660208501526040840152166060820152816080820152019061180e565b929390600460206123fe6107416107415f5460018060a01b031690565b604051630ce9b79360e41b815292839182905afa90811561091457610e9c9161247c915f916124cb575b506001600160a01b03169361243b610435565b6001600160401b037f00000000000000000000000000000000000000000000000000000000000000001681529060208201526040519283916020830161237f565b823b156101b3575f946124a786926040519889978896879563724ab0f760e11b8752600487016123a9565b03925af18015610914576124b85750565b806124c5610433926103d3565b806101a9565b6124e4915060203d602011611c8b57611c7c81836103e6565b5f612428565b65ffffffffffff9160446020925f60018060a01b038154166040519687958694631c9e38c760e21b865260048601521660248401525af180156109145761252e5750565b6125469060203d60201161214b5761213781836103e6565b50565b8115612553570490565b634e487b7160e01b5f52601260045260245ffd5b92905f549060ff8260a01c1661257f575b5050505050565b6040516313c085b760e11b815291602090839060049082906001600160a01b03165afa918215610914575f9261263c575b5060405163065c1e0360e01b6020820190815260248201969096526001600160a01b039091166044820152606481019390935265ffffffffffff90911660848301526126098260a481015b03601f1981018452836103e6565b6202a15c5a1061262a575f928380935192620249f0f1505f80808080612578565b604051632153f33560e21b8152600490fd5b612609925061265c6125fb9160203d602011611c8b57611c7c81836103e6565b92506125b0565b8054806126705750505f90565b5f19918183810111611671575f5260205f2001015460301c90565b60405190612698826103b8565b5f6020838281520152565b6126c8916126c2916126b361268b565b506126bc61268b565b50611989565b50612885565b65ffffffffffff81511690602060018060d01b0391015116604051916126ed836103b8565b8252602082015290565b6126ff612a94565b612707612a94565b60015f80516020612d6783398151915255565b604051906127278261037d565b5f8252565b80910390606082126101b3576020604051926127478461039d565b126101b357604090815161275a8161037d565b612763826117bf565b81528352602081015161277581610359565b60208401520151604082015290565b9060049061279061271a565b5080516127a760209283808094830101910161272c565b6040516327f843b560e11b815290949093849182906001600160a01b03165afa918215610914575f92612866575b508201906127e9825165ffffffffffff1690565b65ffffffffffff91821691161015612854576040820160038151106128425761283861281e61283e935165ffffffffffff1690565b65ffffffffffff1665ffffffffffff196004541617600455565b51600555565b5190565b6040516354f778f360e01b8152600490fd5b6040516367d5e3df60e11b8152600490fd5b8161287e9293503d841161090d576108fe81836103e6565b905f6127d5565b90604051612892816103b8565b915465ffffffffffff8116835260301c6020830152565b8054806128ba5750505f905f905f90565b5f19908082810111611671576128d7925f5260205f200101612885565b9065ffffffffffff82511691602060018060d01b0391015116906001929190565b906119a790826129b5565b906129266126c26129479261291661268b565b5061291f61268b565b5084611989565b91600165ffffffffffff845116936020828060d01b03910151169101611989565b90549060405192612957846103b8565b835260031b1c602082015290565b8054600160401b8110156103985761298291600182018155611989565b8154905f199060031b1b19169055565b90815491600160401b831015610398578261232391600161043395018155611989565b908154905f918060058111612a4b575b50915b8281106129fe575050806129dc5750505f90565b610f05916129ec6129f7926119ee565b905f5260205f200190565b5460301c90565b90918082169080831860011c820180921161167157845f5265ffffffffffff808360205f20015416908516105f14612a395750915b906129c8565b929150612a45906117f3565b90612a33565b90612a5582612c28565b820391821161167157845f5265ffffffffffff808360205f20015416908416105f14612a8357505b5f6129c5565b9250612a8e906117f3565b91612a7d565b60ff5f80516020612d878339815191525460401c1615612ab057565b604051631afcd79f60e31b8152600490fd5b8054600160401b81101561039857612adf91600182018155611989565b6117ba57815160209092015160301b65ffffffffffff191665ffffffffffff909216919091179055565b805492939291908215612bff57612b35612b30612b25856119ee565b835f5260205f200190565b612885565b90612b46825165ffffffffffff1690565b65ffffffffffff84811691168110612bed57612bb1946020948892612b74610781875165ffffffffffff1690565b03612bb55750612ba3926129ec612b8a926119ee565b9065ffffffffffff82549181199060301b169116179055565b01516001600160d01b031690565b9190565b915050612be891612bd5612bc7610435565b65ffffffffffff9093168352565b6001600160d01b03881682860152612ac2565b612ba3565b604051632520601d60e01b8152600490fd5b612c239250612c0f612bc7610435565b6001600160d01b0385166020830152612ac2565b5f9190565b8015612d615780612cfa612cf3612ce9612cdf612cd5612ccb612cc1612cb76001610f059a5f908b60801c80612d55575b508060401c80612d48575b508060201c80612d3b575b508060101c80612d2e575b508060081c80612d21575b508060041c80612d14575b508060021c80612d07575b50821c612d00575b811c1b612cb0818b612549565b0160011c90565b612cb0818a612549565b612cb08189612549565b612cb08188612549565b612cb08187612549565b612cb08186612549565b612cb08185612549565b8092612549565b90611d87565b8101612ca3565b600291509101905f612c9b565b600491509101905f612c90565b600891509101905f612c85565b601091509101905f612c7a565b602091509101905f612c6f565b604091509101905f612c64565b9150506080905f612c59565b505f9056fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220c44d0a668c61916d69f6b882dc7b74fb4cb4f53b7b38d1639b46585fd72ce7c264736f6c63430008190033","sourceMap":"707:8662:94:-:0;;;;;;;;;;;;;-1:-1:-1;;707:8662:94;;;;-1:-1:-1;;;;;707:8662:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;8837:64:25;707:8662:94;;;;;;;;;7896:76:25;;707:8662:94;;;;7985:34:25;7981:146;;-1:-1:-1;525:17:69;;;707:8662:94;525:17:69;707:8662:94;552:12:69;2353:28:92;;2391:53;;1620:34:94;;;;707:8662;;;;;;;;;;;;;;;;;;;;;;;;2353:28:92;707:8662:94;;;;;;;;;;2391:53:92;707:8662:94;;;;;;;;;;;;;;;;;;;;;7981:146:25;-1:-1:-1;;;;;;707:8662:94;;;;;;;;;;;;;8087:29:25;;707:8662:94;;8087:29:25;7981:146;;;;;7896:76;707:8662:94;;-1:-1:-1;;;7938:23:25;;;;;707:8662:94;-1:-1:-1;707:8662:94;;;;;;-1:-1:-1;707:8662:94;;;;;-1:-1:-1;707:8662:94;;;;-1:-1:-1;;;;;707:8662:94;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c8063103f2907146101a45780631a2be2c41461019f578063267de1f31461019a5780632964f8dc146101955780632c9d45b3146101905780632dd310001461018b57806331ce4dfe1461018657806334d098ea14610181578063439fab911461017c578063545ce389146101775780638f42f9ab146101725780639168f9d21461016d5780639a896551146101685780639f86fd8514610163578063aa8e64891461015e578063aab3595f14610159578063b94c386e14610154578063bb24fe8a1461014f578063bc6eac5b1461014a578063c0cd7c3e14610145578063cd05b8a114610140578063d5c24e1a1461013b578063e054e08b14610136578063f9268d18146101315763fbfa77cf1461012c575f80fd5b611596565b611428565b611403565b6113e6565b61138e565b61134a565b61132d565b6112ea565b610f9e565b610f46565b610f08565b610e02565b610d77565b61094c565b61092f565b610695565b61055d565b61050c565b6104a3565b610315565b6102d1565b6102b5565b610260565b61020c565b6101b7565b5f9103126101b357565b5f80fd5b346101b3575f3660031901126101b3576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6001600160a01b038116036101b357565b346101b35760403660031901126101b3576020610258610253602435610231816101fb565b6004355f526002845260405f209060018060a01b03165f5260205260405f2090565b61199e565b604051908152f35b346101b35760403660031901126101b357602065ffffffffffff6102ab602435610289816101fb565b6004355f526001845260405f209060018060a01b03165f5260205260405f2090565b5416604051908152f35b346101b3575f3660031901126101b3576020604051614e208152f35b346101b3575f3660031901126101b3576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346101b3575f3660031901126101b3576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b65ffffffffffff8116036101b357565b634e487b7160e01b5f52604160045260245ffd5b602081019081106001600160401b0382111761039857604052565b610369565b606081019081106001600160401b0382111761039857604052565b604081019081106001600160401b0382111761039857604052565b6001600160401b03811161039857604052565b90601f801991011681019081106001600160401b0382111761039857604052565b6040519060c082018281106001600160401b0382111761039857604052565b604051906104338261039d565b565b60405190610433826103b8565b6001600160401b03811161039857601f01601f191660200190565b81601f820112156101b35780359061047482610442565b9261048260405194856103e6565b828452602083830101116101b357815f926020809301838601378301015290565b346101b35760603660031901126101b3576024356104c081610359565b604435906001600160401b0382116101b3576105036104e5602093369060040161045d565b6004355f90815260068552604090206001600160a01b039390611a1e565b16604051908152f35b346101b3575f3660031901126101b357602060ff5f5460a01c166040519015158152f35b9181601f840112156101b3578235916001600160401b0383116101b357602083818601950101116101b357565b346101b35760203660031901126101b3576001600160401b036004358181116101b35761058e903690600401610530565b5f80516020612d87833981519152549260ff8460401c161593168015908161068d575b6001149081610683575b15908161067a575b50610668575f80516020612d87833981519152805467ffffffffffffffff191660011790556105f6918361064457611b57565b6105fc57005b5f80516020612d87833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f80516020612d87833981519152805460ff60401b1916600160401b179055611b57565b60405163f92ee8a960e01b8152600490fd5b9050155f6105c3565b303b1591506105bb565b8491506105b1565b346101b35760a03660031901126101b357600460243581356106b6826101fb565b606435916106c383610359565b6084356001600160401b0381116101b3576106e19036908601610530565b93906106eb611cc1565b6106f484611cf0565b6106fc6115e2565b9480610919575b505061070e42611dd8565b610728610721875465ffffffffffff1690565b8092611657565b5f5490959061074d90610741906001600160a01b031681565b6001600160a01b031690565b958760206040988951928380926327f843b560e11b82525afa80156109145761078c92610781925f926108e3575b506116ad565b65ffffffffffff1690565b65ffffffffffff84169081109081156108cd575b506108bd576107b56107be9151848688611fc5565b50604435611d87565b9586156108af576108ab610884878988887f3cb7f4ff6cecf74cee0eb9ae3ebf8933fa60a53014cce52f96da72a78dba8464896108038a6107fe42611dd8565b611657565b92600354978894610854610815610407565b8881526001600160a01b0385166020820152808b018a905265ffffffffffff8616606082015265ffffffffffff831660808201525f60a08201526116d8565b885197885265ffffffffffff938416602089015290921660408701526001600160a01b0316949081906060820190565b0390a461089d60015f80516020612d6783398151915255565b519081529081906020820190565b0390f35b855163167f871760e31b8152fd5b8551631357ac9160e11b81528790fd5b90506108db61078142611dd8565b11155f6107a0565b61090691925060203d60201161090d575b6108fe81836103e6565b810190611676565b905f61077b565b503d6108f4565b61168b565b6109279295508101906115f5565b925f80610703565b346101b3575f3660031901126101b3576020600354604051908152f35b346101b35760603660031901126101b35760048035906bffffffffffffffffffffffff821682036101b357602435610983816101fb565b6044356001600160401b0381116101b3576109a19036908401610530565b906109aa611cc1565b6109b26115e2565b5081610d12575b5050604080516302910f8b60e31b8152338185019081526001600160a01b0395929491602091829082908190830103818a7f0000000000000000000000000000000000000000000000000000000000000000165afa908115610914575f91610ce5575b5015610cd6575f54610a57906001600160a01b0316936bffffffffffffffffffffffff166bffffffffffffffffffffffff193360601b161790565b95610a72610a6d885f52600660205260405f2090565b6128a9565b50949015610c6c57610a8661078142611dd8565b65ffffffffffff9586161115610c3657610ab0610aab895f52600660205260405f2090565b611d99565b505b610ad5610741610741610741610ad08c5f52600660205260405f2090565b612663565b91808716928303610b41575b505050505050610b26907f7b0b759b513b299fd2811f51926dca8854222a675557e8d544ce0933bf5b7570925b516001600160a01b0390911681529081906020820190565b0390a2610b3f60015f80516020612d6783398151915255565b005b610b588998959796985f52600660205260405f2090565b911692845163186a323160e21b815281818981885afa908115610914575f91610c19575b5081600554958751998a80926327f843b560e11b82525afa9081156109145789610be1610bf3977f7b0b759b513b299fd2811f51926dca8854222a675557e8d544ce0933bf5b75709c610be895610b269d610bed985f92610bfc575b505016906117e0565b9116611801565b611dd8565b90612b09565b82958495610ae1565b610c129250803d1061090d576108fe81836103e6565b5f80610bd8565b610c309150823d841161090d576108fe81836103e6565b5f610b7c565b610c54610741610741610741610ad08c5f52600660205260405f2090565b82871603610ab257865163a741a04560e01b81528490fd5b5093949385169250508115610cc8575091610b2691610cc17f7b0b759b513b299fd2811f51926dca8854222a675557e8d544ce0933bf5b757094610cb8875f52600660205260405f2090565b610bed42611dd8565b5050610b0e565b825163a741a04560e01b8152fd5b5083516323d53b9760e21b8152fd5b610d059150823d8411610d0b575b610cfd81836103e6565b8101906117cc565b5f610a1c565b503d610cf3565b610d1e918101906115f5565b505f806109b9565b634e487b7160e01b5f52603260045260245ffd5b600354811015610d725760035f5260021b7fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b01905f90565b610d26565b346101b35760203660031901126101b3576004356003548110156101b357610d9e90610d3a565b50805460018201546002830154600390930154604080519384526001600160a01b0390921660208401529082019290925265ffffffffffff808316606080840191909152603084901c90911660808301529190911c60ff16151560a082015260c090f35b346101b3576040806003193601126101b357600435610e20816101fb565b602435906001600160401b0382116101b3575f8091610e46610eaa943690600401610530565b908187519283928337810184815203915af43d15610eb257610e9c3d610e6b81610442565b90610e78865192836103e6565b81523d5f602083013e5b84519485931515602085015280840152606083019061180e565b03601f1981018352826103e6565b805190602001fd5b610e9c6060610e82565b9060806003198301126101b35760043591602435610ed9816101fb565b91604435610ee681610359565b91606435906001600160401b0382116101b357610f059160040161045d565b90565b346101b3576020610258610f41610f1e36610ebc565b939190925f526002865260405f209060018060a01b03165f5260205260405f2090565b611e0a565b346101b3576020610f62610f5936610ebc565b92919091611fc5565b50604051908152f35b9060406003198301126101b35760043591602435906001600160401b0382116101b357610f9a91600401610530565b9091565b346101b357610fac36610f6b565b9190610fb6611cc1565b610fbe61185e565b92806112d4575b50506003548110156112c257610fda81610d3a565b5090815490610fe882611cf0565b6003830180549365ffffffffffff9384861660018060a01b0361100d895183856115bd565b16151580611297575b8061127e575b61126c576110328161102d42611dd8565b6116ad565b5f5461104890610741906001600160a01b031681565b96600460206040998a51928380926327f843b560e11b82525afa80156109145782915f9161124d575b501691161161123c57600183018054909861109c93929188906001600160a01b031691015192611fc5565b906110ab816002850154611d87565b96871561122b5760601c60ff1661121a57926111d36111c6899461119e61118b8b9687876108ab9f6111998f9d8f9e6111d99f6110f586600160601b60ff60601b19825416179055565b8a54855461111791906001600160a01b0316885465ffffffffffff16916121f5565b8a5485546111309189916001600160a01b031690612275565b8a54945461114e906001600160a01b0316965465ffffffffffff1690565b97611157610426565b9384526020840152818301525196879160208301919091604080606083019480518452602081015160208501520151910152565b03601f1981018752866103e6565b6123e1565b6111b76111b1855465ffffffffffff1690565b866124ea565b5494546001600160a01b031690565b915465ffffffffffff1690565b92612567565b81518381527f5cc28df3b54da9d06f805d87616ebf969c81310f2aa8369cb14ca50f815d411190602090a261089d60015f80516020612d6783398151915255565b8551633428e90760e01b8152600490fd5b865163167f871760e31b8152600490fd5b8551639ea153eb60e01b8152600490fd5b611266915060203d60201161090d576108fe81836103e6565b5f611071565b60405163b62b15c760e01b8152600490fd5b5061128b61078142611dd8565b868860301c161161101c565b506112bb6107416112af6112aa42611dd8565b611696565b60208b015190856115bd565b1515611016565b604051637822972360e11b8152600490fd5b6112e292935081019061187d565b905f80610fc5565b346101b3575f3660031901126101b35760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346101b3575f3660031901126101b3576020600554604051908152f35b346101b3575f3660031901126101b3576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346101b35760403660031901126101b3576024356001600160401b0381116101b3576113d46113c3602092369060040161045d565b6113cc42611dd8565b6004356115bd565b6040516001600160a01b039091168152f35b346101b3575f3660031901126101b3576020604051620249f08152f35b346101b3575f3660031901126101b357602065ffffffffffff60045416604051908152f35b346101b35761143636610f6b565b9061143f611cc1565b611447611905565b9180611582575b50506003548210156112c25761146382610d3a565b506003815491019182549165ffffffffffff9160018060a01b0361148b8251858716856115bd565b16918215918215611559575b5050611547573303611535576114af61078142611dd8565b908260301c1611156115245760601c60ff1661151257805460ff60601b1916600160601b17905533907f7d3d269c851b72257a5194a401d151902e9be4347d555996dcff3ff86a077e925f80a3610b3f60015f80516020612d6783398151915255565b604051633428e90760e01b8152600490fd5b60405162c457e560e81b8152600490fd5b604051635d154fe160e11b8152600490fd5b60405163dd1ebd9d60e01b8152600490fd5b61157a9250906107419160206115716112aa42611dd8565b910151916115bd565b155f80611497565b61158f925081019061191e565b5f8061144e565b346101b3575f3660031901126101b3575f546040516001600160a01b039091168152602090f35b5f9081526006602052604090206001600160a01b03926115de929091611a1e565b1690565b604051906115ef8261037d565b60608252565b906020828203126101b35781356001600160401b03928382116101b35701906020828203126101b3576040519261162b8461037d565b82359081116101b35761163e920161045d565b815290565b634e487b7160e01b5f52601160045260245ffd5b91909165ffffffffffff8080941691160191821161167157565b611643565b908160209103126101b35751610f0581610359565b6040513d5f823e3d90fd5b65ffffffffffff9081165f19019190821161167157565b65ffffffffffff918216908216039190821161167157565b634e487b7160e01b5f525f60045260245ffd5b600354600160401b811015610398578060016116f79201600355610d3a565b9190916117ba578051825560208101516001830180546001600160a01b0319166001600160a01b0392909216919091179055610433916117a09060a09060039060408501516002820155019261176d65ffffffffffff606083015116859065ffffffffffff1665ffffffffffff19825416179055565b60808101516bffffffffffff00000000000085549160301b16906bffffffffffff00000000000019161784550151151590565b815460ff60601b191690151560601b60ff60601b16179055565b6116c5565b519081151582036101b357565b908160209103126101b357610f05906117bf565b8181029291811591840414171561167157565b906001820180921161167157565b9190820180921161167157565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b5f9081526002602090815260408083206001600160a01b03909416835292905220610f05929190611e0a565b6040519061186b8261039d565b60606040838281528260208201520152565b906020828203126101b35781356001600160401b03928382116101b35701906060828203126101b357604051926118b38461039d565b82358181116101b357826118c891850161045d565b845260208301358181116101b357826118e291850161045d565b602085015260408301359081116101b3576118fd920161045d565b604082015290565b60405190611912826103b8565b60606020838281520152565b906020828203126101b35781356001600160401b03928382116101b35701906040828203126101b35760405192611954846103b8565b82358181116101b3578261196991850161045d565b845260208301359081116101b357611981920161045d565b602082015290565b8054821015610d72575f5260205f2001905f90565b6119a781612663565b6001600160d01b038116156119cc5760016119c29201611989565b90549060031b1c90565b50505f90565b908160209103126101b3575163ffffffff811681036101b35790565b5f1981019190821161167157565b9190820391821161167157565b90600163ffffffff8093160191821161167157565b91805115611b025780602080611a39935183010191016119d2565b91611a4483826126a3565b92611a55845165ffffffffffff1690565b9065ffffffffffff8085169216828114611ae95782119182611a94575b5050611a8257610f0592506129b5565b5050602001516001600160d01b031690565b909150611aa183546119ee565b63ffffffff831614918215611aba575b50505f80611a72565b611ae1919250611ad5611acf61078192611a09565b856126a3565b5165ffffffffffff1690565b115f80611ab1565b50505050602091909101516001600160d01b0316905090565b50610f05916129b5565b9190916040818403126101b3578035611b24816101fb565b9260208201356001600160401b0381116101b357610f05920161045d565b908160209103126101b35751610f05816101fb565b611b6391810190611b0c565b6040516302910f8b60e31b81526001600160a01b0392831660048201819052929160209182816024817f000000000000000000000000000000000000000000000000000000000000000088165afa908115610914575f91611ca4575b5015611c925781611bf4600492611bd46126f7565b5f80546001600160a01b0319166001600160a01b03891617905586612784565b94604051928380926313c085b760e11b82525afa918215610914575f92611c65575b5050161580611c5b575b611c4957516104339015155f805460ff60a01b191691151560a01b60ff60a01b16919091179055565b60405163d2420f5960e01b8152600490fd5b5080511515611c20565b611c849250803d10611c8b575b611c7c81836103e6565b810190611b42565b5f80611c16565b503d611c72565b6040516362df054560e01b8152600490fd5b611cbb9150833d8511610d0b57610cfd81836103e6565b5f611bbf565b5f80516020612d678339815191526002815414611cde5760029055565b604051633ee5aeb560e01b8152600490fd5b604051635daf681960e11b815260609190911c60048201526001600160a01b036020826024817f000000000000000000000000000000000000000000000000000000000000000085165afa918215610914575f92611d66575b5033911603611d5457565b60405163227bf64d60e01b8152600490fd5b611d8091925060203d602011611c8b57611c7c81836103e6565b905f611d49565b9080821015611d94575090565b905090565b90611da382612663565b9180548015611dc4575f190190611dba8282611989565b6117ba575f905555565b634e487b7160e01b5f52603160045260245ffd5b65ffffffffffff90818111611deb571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b91805115611ecc5780602080611e25935183010191016119d2565b91611e308382612903565b92611e41845165ffffffffffff1690565b9065ffffffffffff8085169216828114611ec05782119182611e77575b5050611e6e57610f0592506128f8565b50506020015190565b909150611e8483546119ee565b63ffffffff831614918215611e9d575b50505f80611e5e565b611eb8919250611ad5611eb261078192611a09565b85612903565b115f80611e94565b50505050506020015190565b50610f05916128f8565b81601f820112156101b357805190611eed82610442565b92611efb60405194856103e6565b828452602083830101116101b357815f9260208093018386015e8301015290565b906020828203126101b35781516001600160401b03928382116101b35701906040828203126101b35760405192611f52846103b8565b82518181116101b35782611f67918501611ed6565b845260208301519081116101b3576119819201611ed6565b908160209103126101b3575190565b9081526001600160a01b03909116602082015265ffffffffffff9091166040820152608060608201819052610f059291019061180e565b92611fce611905565b908051806121db575b5050611fe242611dd8565b5f54909490611ffb90610741906001600160a01b031681565b93604051956327f843b560e11b875260209687816004818a5afa80156109145761202f92610781925f926121c357506116ad565b65ffffffffffff82169081109081156121ac575b811561217b575b5061216f578560049560405196878092630ce9b79360e41b82525afa9485156109145761209c9587915f91612152575b50845190604051808099819463e02f693760e01b8352878b8a60048601611f8e565b03916001600160a01b03165afa9384156109145761210e955f95612111575b509261210385936121099361210396869a6120fa610253836120e5875f52600260205260405f2090565b9060018060a01b03165f5260205260405f2090565b95015192611832565b906119fc565b611d87565b91565b61210992955061210394919361213f612103928a3d8c1161214b575b61213781836103e6565b810190611f7f565b969350939194506120bb565b503d61212d565b6121699150823d8411611c8b57611c7c81836103e6565b5f61207a565b5050505050505f905f90565b90506121a5610781612199876120e5875f52600160205260405f2090565b5465ffffffffffff1690565b115f61204a565b90506121ba61078142611dd8565b81101590612043565b6109069192508a3d8c1161090d576108fe81836103e6565b6121ee9250602080918301019101611f1c565b5f80611fd7565b919091805f52600160205265ffffffffffff806122258560405f209060018060a01b03165f5260205260405f2090565b54169083161161223457505050565b6104339261225c915f52600160205260405f209060018060a01b03165f5260205260405f2090565b9065ffffffffffff1665ffffffffffff19825416179055565b9190825f5260026020526122cd6102536122a28360405f209060018060a01b03165f5260205260405f2090565b926122ac42611dd8565b955f52600260205260405f209060018060a01b03165f5260205260405f2090565b918201809211611671576001810190815415612371575b6122ed816128a9565b5094908354956122fc8461199e565b508161235c575b501561233b5750505f198301928311611671576104339261232391611989565b90919082549060031b91821b915f19901b1916179055565b61043394612355926001600160d01b039091169190612b09565b5050612992565b65ffffffffffff83811691161490505f612303565b61237a82612965565b6122e4565b60606020610f05938184526001600160401b0381511682850152015191604080820152019061180e565b919360a093610f05969565ffffffffffff938552600180871b031660208501526040840152166060820152816080820152019061180e565b929390600460206123fe6107416107415f5460018060a01b031690565b604051630ce9b79360e41b815292839182905afa90811561091457610e9c9161247c915f916124cb575b506001600160a01b03169361243b610435565b6001600160401b037f00000000000000000000000000000000000000000000000000000000000000001681529060208201526040519283916020830161237f565b823b156101b3575f946124a786926040519889978896879563724ab0f760e11b8752600487016123a9565b03925af18015610914576124b85750565b806124c5610433926103d3565b806101a9565b6124e4915060203d602011611c8b57611c7c81836103e6565b5f612428565b65ffffffffffff9160446020925f60018060a01b038154166040519687958694631c9e38c760e21b865260048601521660248401525af180156109145761252e5750565b6125469060203d60201161214b5761213781836103e6565b50565b8115612553570490565b634e487b7160e01b5f52601260045260245ffd5b92905f549060ff8260a01c1661257f575b5050505050565b6040516313c085b760e11b815291602090839060049082906001600160a01b03165afa918215610914575f9261263c575b5060405163065c1e0360e01b6020820190815260248201969096526001600160a01b039091166044820152606481019390935265ffffffffffff90911660848301526126098260a481015b03601f1981018452836103e6565b6202a15c5a1061262a575f928380935192620249f0f1505f80808080612578565b604051632153f33560e21b8152600490fd5b612609925061265c6125fb9160203d602011611c8b57611c7c81836103e6565b92506125b0565b8054806126705750505f90565b5f19918183810111611671575f5260205f2001015460301c90565b60405190612698826103b8565b5f6020838281520152565b6126c8916126c2916126b361268b565b506126bc61268b565b50611989565b50612885565b65ffffffffffff81511690602060018060d01b0391015116604051916126ed836103b8565b8252602082015290565b6126ff612a94565b612707612a94565b60015f80516020612d6783398151915255565b604051906127278261037d565b5f8252565b80910390606082126101b3576020604051926127478461039d565b126101b357604090815161275a8161037d565b612763826117bf565b81528352602081015161277581610359565b60208401520151604082015290565b9060049061279061271a565b5080516127a760209283808094830101910161272c565b6040516327f843b560e11b815290949093849182906001600160a01b03165afa918215610914575f92612866575b508201906127e9825165ffffffffffff1690565b65ffffffffffff91821691161015612854576040820160038151106128425761283861281e61283e935165ffffffffffff1690565b65ffffffffffff1665ffffffffffff196004541617600455565b51600555565b5190565b6040516354f778f360e01b8152600490fd5b6040516367d5e3df60e11b8152600490fd5b8161287e9293503d841161090d576108fe81836103e6565b905f6127d5565b90604051612892816103b8565b915465ffffffffffff8116835260301c6020830152565b8054806128ba5750505f905f905f90565b5f19908082810111611671576128d7925f5260205f200101612885565b9065ffffffffffff82511691602060018060d01b0391015116906001929190565b906119a790826129b5565b906129266126c26129479261291661268b565b5061291f61268b565b5084611989565b91600165ffffffffffff845116936020828060d01b03910151169101611989565b90549060405192612957846103b8565b835260031b1c602082015290565b8054600160401b8110156103985761298291600182018155611989565b8154905f199060031b1b19169055565b90815491600160401b831015610398578261232391600161043395018155611989565b908154905f918060058111612a4b575b50915b8281106129fe575050806129dc5750505f90565b610f05916129ec6129f7926119ee565b905f5260205f200190565b5460301c90565b90918082169080831860011c820180921161167157845f5265ffffffffffff808360205f20015416908516105f14612a395750915b906129c8565b929150612a45906117f3565b90612a33565b90612a5582612c28565b820391821161167157845f5265ffffffffffff808360205f20015416908416105f14612a8357505b5f6129c5565b9250612a8e906117f3565b91612a7d565b60ff5f80516020612d878339815191525460401c1615612ab057565b604051631afcd79f60e31b8152600490fd5b8054600160401b81101561039857612adf91600182018155611989565b6117ba57815160209092015160301b65ffffffffffff191665ffffffffffff909216919091179055565b805492939291908215612bff57612b35612b30612b25856119ee565b835f5260205f200190565b612885565b90612b46825165ffffffffffff1690565b65ffffffffffff84811691168110612bed57612bb1946020948892612b74610781875165ffffffffffff1690565b03612bb55750612ba3926129ec612b8a926119ee565b9065ffffffffffff82549181199060301b169116179055565b01516001600160d01b031690565b9190565b915050612be891612bd5612bc7610435565b65ffffffffffff9093168352565b6001600160d01b03881682860152612ac2565b612ba3565b604051632520601d60e01b8152600490fd5b612c239250612c0f612bc7610435565b6001600160d01b0385166020830152612ac2565b5f9190565b8015612d615780612cfa612cf3612ce9612cdf612cd5612ccb612cc1612cb76001610f059a5f908b60801c80612d55575b508060401c80612d48575b508060201c80612d3b575b508060101c80612d2e575b508060081c80612d21575b508060041c80612d14575b508060021c80612d07575b50821c612d00575b811c1b612cb0818b612549565b0160011c90565b612cb0818a612549565b612cb08189612549565b612cb08188612549565b612cb08187612549565b612cb08186612549565b612cb08185612549565b8092612549565b90611d87565b8101612ca3565b600291509101905f612c9b565b600491509101905f612c90565b600891509101905f612c85565b601091509101905f612c7a565b602091509101905f612c6f565b604091509101905f612c64565b9150506080905f612c59565b505f9056fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220c44d0a668c61916d69f6b882dc7b74fb4cb4f53b7b38d1639b46585fd72ce7c264736f6c63430008190033","sourceMap":"707:8662:94:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;707:8662:94;;;;;;1435:38:92;-1:-1:-1;;;;;707:8662:94;;;;;;;-1:-1:-1;;;;;707:8662:94;;;;;:::o;:::-;;;;;;-1:-1:-1;;707:8662:94;;;;;2936:47:92;:38;707:8662:94;;;;;:::i;:::-;;;-1:-1:-1;707:8662:94;2936:16:92;707:8662:94;;;-1:-1:-1;707:8662:94;;;;;;;;;;;;;;;;;2936:38:92;:47;:::i;:::-;707:8662:94;;;;;;;;;;;;-1:-1:-1;;707:8662:94;;;;;;1788:109:92;707:8662:94;;;;;:::i;:::-;;;-1:-1:-1;707:8662:94;1788:109:92;707:8662:94;;;-1:-1:-1;707:8662:94;;;;;;;;;;;;;;;;;1788:109:92;707:8662:94;;;;;;;;;;;;;;-1:-1:-1;;707:8662:94;;;;;;;1374:6:92;707:8662:94;;;;;;;;;-1:-1:-1;;707:8662:94;;;;;;1528:51:92;-1:-1:-1;;;;;707:8662:94;;;;;;;;;;;;-1:-1:-1;;707:8662:94;;;;;;322:32:69;-1:-1:-1;;;;;707:8662:94;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;707:8662:94;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;-1:-1:-1;;;;;707:8662:94;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;707:8662:94;;;;;;;:::o;:::-;-1:-1:-1;;;;;707:8662:94;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;707:8662:94;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;707:8662:94;;;;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;:::i;:::-;-1:-1:-1;;;;;707:8662:94;;;;;;-1:-1:-1;;707:8662:94;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;707:8662:94;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;707:8662:94;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;707:8662:94;;;;2016:56;707:8662;;;;;;;;:::i;:::-;;;-1:-1:-1;707:8662:94;;;2016:9;707:8662;;;;;-1:-1:-1;;;;;707:8662:94;;2016:56;:::i;:::-;707:8662;;;;;;;;;;;;;-1:-1:-1;;707:8662:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;707:8662:94;;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;707:8662:94;;;;-1:-1:-1;;;;;707:8662:94;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;707:8662:94;;;;;;;4301:16:25;707:8662:94;;4726:16:25;;:34;;;;707:8662:94;4805:1:25;4790:16;:50;;;;707:8662:94;4855:13:25;:30;;;;707:8662:94;4851:91:25;;;-1:-1:-1;;;;;;;;;;;707:8662:94;;-1:-1:-1;;707:8662:94;;;;;718:4:69;;4951:18:25;4979:67;;718:4:69;:::i;:::-;5066:101:25;;707:8662:94;5066:101:25;-1:-1:-1;;;;;;;;;;;707:8662:94;;-1:-1:-1;;;;707:8662:94;;;;;-1:-1:-1;707:8662:94;;5142:14:25;;707:8662:94;;5142:14:25;707:8662:94;4979:67:25;-1:-1:-1;;;;;;;;;;;707:8662:94;;-1:-1:-1;;;;707:8662:94;-1:-1:-1;;;707:8662:94;;;718:4:69;:::i;4851:91:25:-;707:8662:94;;-1:-1:-1;;;4908:23:25;;707:8662:94;;4908:23:25;4855:30;4872:13;;;4855:30;;;4790:50;4818:4;4810:25;:30;;-1:-1:-1;4790:50:25;;4726:34;;;-1:-1:-1;4726:34:25;;707:8662:94;;;;;;-1:-1:-1;;707:8662:94;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;707:8662:94;;;;;;;;;;;:::i;:::-;3217:103:28;;;;:::i;:::-;2123:10:92;;;:::i;:::-;707:8662:94;;:::i;:::-;2666:16;;2662:105;;707:8662;837:15:62;;819:34;837:15;819:34;:::i;:::-;2813:31:94;707:8662;;;;;;;;2813:31;;;:::i;:::-;-1:-1:-1;707:8662:94;;;;2847:27;;:13;;-1:-1:-1;;;;;707:8662:94;2847:13;707:8662;;-1:-1:-1;;;;;707:8662:94;;;2847:27;707:8662;;;;;;;;;;;;;;2847:29;;;;;;;;2794:82;2847:29;2813:63;2847:29;-1:-1:-1;2847:29:94;;;707:8662;2813:63;;:::i;:::-;707:8662;;;;2794:82;707:8662;;;2794:82;;;:138;;;;;707:8662;2777:223;;;3248:62:92;3019:133:94;3104:37;;3248:62:92;;;;:::i;:::-;707:8662:94;;;3019:133;:::i;:::-;3166:11;;;3162:68;;707:8662;3671:86;837:15:62;;;;3671:86:94;837:15:62;3262:31:94;837:15:62;819:34;837:15;819:34;:::i;:::-;3262:31:94;:::i;:::-;707:8662;3317:13;707:8662;;;;3347:308;707:8662;;:::i;:::-;;;;-1:-1:-1;;;;;707:8662:94;;;3379:266;;707:8662;3379:266;;;707:8662;;;;;;;3379:266;;707:8662;;;;;3379:266;;707:8662;-1:-1:-1;707:8662:94;3379:266;;707:8662;3347:308;:::i;:::-;707:8662;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;707:8662:94;;;;;;;;;;3671:86;;;;3282:1:28;1805;-1:-1:-1;;;;;;;;;;;707:8662:94;3716:283:28;3282:1;707:8662:94;;;;;;;;;;;;;;;;3162:68;707:8662;;-1:-1:-1;;;3200:19:94;;;2777:223;707:8662;;-1:-1:-1;;;2964:25:94;;707:8662;;2964:25;2794:138;837:15:62;;2896:36:94;819:34:62;837:15;819:34;:::i;2896:36:94:-;-1:-1:-1;2896:36:94;2794:138;;;2847:29;;;;;707:8662;2847:29;707:8662;2847:29;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;:::i;2662:105::-;2718:38;;;;;;;;:::i;:::-;2662:105;;;;;707:8662;;;;;;-1:-1:-1;;707:8662:94;;;;;1795:13;707:8662;;;;;;;;;;;;;-1:-1:-1;;707:8662:94;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;707:8662:94;;;;;;;;;;;:::i;:::-;3217:103:28;;;:::i;:::-;707:8662:94;;:::i;:::-;;7493:16;7489:103;;707:8662;-1:-1:-1;;707:8662:94;;;-1:-1:-1;;;7607:48:94;;7644:10;7607:48;;;707:8662;;;-1:-1:-1;;;;;707:8662:94;;;;;;;;;;;;;;7607:48;7617:16;;;707:8662;7607:48;;;;;;;-1:-1:-1;7607:48:94;;;707:8662;7606:49;;7602:99;;-1:-1:-1;707:8662:94;7764:35;;-1:-1:-1;;;;;707:8662:94;7644:10;707:8662;;-1:-1:-1;;7644:10:94;297:2:88;707:8662:94;;267:46:88;;152:169;7764:35:94;7850:21;5260:30:86;7850:21:94;;707:8662;;7850:9;707:8662;;;;;;;7850:21;5260:30:86;:::i;:::-;-1:-1:-1;7900:801:94;;;;;7930:34;819::62;837:15;819:34;:::i;7930::94:-;707:8662;;;;7930:34;;;;7984:27;:21;;707:8662;;7850:9;707:8662;;;;;;;7984:21;:27;:::i;:::-;;7926:225;8169:61;8182:48;8190:39;4928:20:86;8198:21:94;;707:8662;;7850:9;707:8662;;;;;;;8198:21;4928:20:86;:::i;8169:61:94:-;707:8662;;;;8169:61;;;8165:336;;7926:225;7900:801;;;;;;8716:34;7900:801;8716:34;7900:801;;707:8662;-1:-1:-1;;;;;707:8662:94;;;;;;;;;;;;;8716:34;;;;3282:1:28;1805;-1:-1:-1;;;;;;;;;;;707:8662:94;3716:283:28;3282:1;707:8662:94;8165:336;8250:21;;;;;;;707:8662;;7850:9;707:8662;;;;;;;8250:21;707:8662;;;;;;;;8299:34;;;;;;;;;;;;;;-1:-1:-1;8299:34:94;;;8165:336;707:8662;;8336:22;707:8662;;;;;;;;;;;8361:30;;;;;;;;;;8336:55;8167:38:60;8361:30:94;8716:34;8361:30;8299:92;8361:30;8716:34;8361:30;8298:130;8361:30;-1:-1:-1;8361:30:94;;;8165:336;707:8662;;;8336:55;;:::i;:::-;707:8662;;8299:92;:::i;:::-;8298:130;:::i;:::-;8167:38:60;;:::i;:::-;8165:336:94;;;;;;8361:30;;;;;;-1:-1:-1;8361:30:94;;;;;;:::i;:::-;;;;;8299:34;;;;;;;;;;;;;;:::i;:::-;;;;7926:225;8036:61;8049:48;8057:39;4928:20:86;8065:21:94;;707:8662;;7850:9;707:8662;;;;;;;8036:61;707:8662;;;8036:61;7926:225;8032:119;707:8662;;-1:-1:-1;;;8124:12:94;;707:8662;;8124:12;7900:801;-1:-1:-1;707:8662:94;;;;;;-1:-1:-1;;8535:23:94;;8531:81;;8626:21;;8716:34;8626:21;8167:38:60;8716:34:94;8626:21;;;707:8662;;7850:9;707:8662;;;;;;;8626:21;819:34:62;837:15;819:34;:::i;8167:38:60:-;7900:801:94;;;;8531:81;707:8662;;-1:-1:-1;;;8585:12:94;;;7602:99;-1:-1:-1;707:8662:94;;-1:-1:-1;;;7678:12:94;;;7607:48;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;7489:103;7544:37;;;;;;:::i;:::-;;7489:103;;;;707:8662;;;;;;;;;;;;;1050:35;707:8662;;;;;;1050:35;-1:-1:-1;707:8662:94;;;;;;-1:-1:-1;707:8662:94;:::o;:::-;;:::i;:::-;;;;;;-1:-1:-1;;707:8662:94;;;;;;1050:35;707:8662;1050:35;;;;;;;;:::i;:::-;-1:-1:-1;707:8662:94;;;1050:35;;707:8662;1050:35;;;707:8662;1050:35;;;;707:8662;;;;;;;-1:-1:-1;;;;;707:8662:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;707:8662:94;;;;-1:-1:-1;707:8662:94;;;477:31:75;707:8662:94;;;;;;:::i;:::-;;;;;;;;;;;;;;;416:25:75;;;;707:8662:94;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;707:8662:94;;;;;;;;;;;;;477:31:75;;707:8662:94;;;;;;;;;;:::i;:::-;477:31:75;707:8662:94;;477:31:75;;;;;;:::i;:::-;518:79;;;707:8662:94;518:79:75;;707:8662:94;;;;;;;;-1:-1:-1;;707:8662:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;707:8662:94;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;2692:73:92;:38;707:8662:94;;;:::i;:::-;;;;;-1:-1:-1;707:8662:94;2692:16:92;707:8662:94;;;-1:-1:-1;707:8662:94;;;;;;;;;;;;;;;;;2692:38:92;:73;:::i;707:8662:94:-;;;;;3248:62:92;707:8662:94;;;:::i;:::-;3248:62:92;;;;;:::i;:::-;707:8662:94;;;;;;;;;;-1:-1:-1;;707:8662:94;;;;;;;;;;;-1:-1:-1;;;;;707:8662:94;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;3217:103:28;;;;:::i;:::-;707:8662:94;;:::i;:::-;4024:16;;4020:105;;707:8662;;;4153:13;707:8662;4139:34;;;4135:94;;4270:25;;;:::i;:::-;707:8662;;;;4330:18;;;;:::i;:::-;4153:13;4408:24;;707:8662;;;;;;;;;;;;;4377:95;4434:37;;4377:95;;;:::i;:::-;707:8662;4377:125;;:250;;;707:8662;4377:309;;;707:8662;4360:389;;4763:43;837:15:62;819:34;837:15;819:34;:::i;:::-;4763:43:94;:::i;:::-;-1:-1:-1;707:8662:94;4809:27;;:13;;-1:-1:-1;;;;;707:8662:94;4809:13;707:8662;4809:27;707:8662;;4809:29;707:8662;;;;;;;;;;;4809:29;;;;;;;;;;-1:-1:-1;4809:29:94;;;707:8662;;;;;4763:75;4759:131;;4994:16;;;707:8662;;4994:16;;4945:140;;4994:16;;707:8662;;-1:-1:-1;;;;;707:8662:94;5038:37;;;4945:140;;:::i;:::-;5120:14;5111:41;5120:14;;;;707:8662;5111:41;:::i;:::-;5166:18;;;5162:75;;707:8662;;;;5247:78;;5335:24;707:8662;;5335:24;;5725:145;;5335:24;;;;707:8662;5335:24;5725:145;5335:24;;;;6024;5335;;;707:8662;;;;;;;;;;;;;;5335:24;707:8662;;;;5445:24;;707:8662;-1:-1:-1;;;;;707:8662:94;;;;;5445:24;;:::i;:::-;707:8662;;;;5542:13;;707:8662;;-1:-1:-1;;;;;707:8662:94;5542:13;;:::i;:::-;707:8662;;;;;;-1:-1:-1;;;;;707:8662:94;;;;;;;;;;;:::i;:::-;;;;4809:29;5753:103;;707:8662;5753:103;;;707:8662;;5725:145;;;4809:29;5725:145;;707:8662;;;;;;;;;;;;;;;;;;;;;;;;;;;5725:145;;707:8662;;5725:145;;;;;;:::i;:::-;;:::i;:::-;5920:24;707:8662;;;;;;;;5920:24;;:::i;:::-;707:8662;;;-1:-1:-1;;;;;707:8662:94;;;;;;;;;;;6024:24;;:::i;:::-;707:8662;;;;;6065:39;;707:8662;;6065:39;3282:1:28;1805;-1:-1:-1;;;;;;;;;;;707:8662:94;3716:283:28;5247:78:94;707:8662;;-1:-1:-1;;;5291:23:94;;707:8662;;5291:23;5162:75;707:8662;;-1:-1:-1;;;5207:19:94;;707:8662;;5207:19;4759:131;707:8662;;-1:-1:-1;;;4861:18:94;;707:8662;;4861:18;4809:29;;;;;;;;;;;;;;:::i;:::-;;;;4360:389;707:8662;;-1:-1:-1;;;4718:20:94;;707:8662;;4718:20;4377:309;837:15:62;4647:39:94;819:34:62;837:15;819:34;:::i;4647:39:94:-;707:8662;;;;;4647:39;4377:309;;:250;837:15:62;4522:105:94;:91;4553:20;819:34:62;837:15;819:34;:::i;:::-;4553:20:94;:::i;:::-;4575:37;;;;4522:91;;;:::i;:105::-;;;4377:250;;4135:94;707:8662;;-1:-1:-1;;;4196:22:94;;707:8662;;4196:22;4020:105;4076:38;;;;;;;;:::i;:::-;4020:105;;;;;707:8662;;;;;;-1:-1:-1;;707:8662:94;;;;;;;-1:-1:-1;;;;;404:28:69;707:8662:94;;;;;;;;;;-1:-1:-1;;707:8662:94;;;;;1221:37;707:8662;;;;;;;;;;;;;-1:-1:-1;;707:8662:94;;;;;;954:41;-1:-1:-1;;;;;707:8662:94;;;;;;;;;;;;-1:-1:-1;;707:8662:94;;;;;;-1:-1:-1;;;;;707:8662:94;;;;2239:46;707:8662;;;;;;;;:::i;:::-;819:34:62;837:15;819:34;:::i;:::-;707:8662:94;;2239:46;:::i;:::-;707:8662;;-1:-1:-1;;;;;707:8662:94;;;;;;;;;;;;-1:-1:-1;;707:8662:94;;;;;;;1271:7:92;707:8662:94;;;;;;;;;-1:-1:-1;;707:8662:94;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3217:103:28;;;:::i;:::-;707:8662:94;;:::i;:::-;6308:16;;6304:99;;707:8662;;;6431:13;707:8662;6417:34;;;6413:94;;6548:25;;;:::i;:::-;707:8662;6431:13;707:8662;;6653:24;;707:8662;;;;;;;;;;;6622:92;6679:34;;707:8662;;;6622:92;;:::i;:::-;707:8662;6741:29;;;:151;;;;;707:8662;6724:223;;;;6961:10;:29;6957:80;;7051:40;819:34:62;837:15;819:34;:::i;7051:40:94:-;707:8662;;;;;7051:40;;7047:95;;707:8662;;;;7152:78;;707:8662;;-1:-1:-1;;;;707:8662:94;-1:-1:-1;;;707:8662:94;;;6961:10;7280:33;;-1:-1:-1;7280:33:94;;3282:1:28;1805;-1:-1:-1;;;;;;;;;;;707:8662:94;3716:283:28;7152:78:94;707:8662;;-1:-1:-1;;;7196:23:94;;707:8662;;7196:23;7047:95;707:8662;;-1:-1:-1;;;7114:17:94;;707:8662;;7114:17;6957:80;707:8662;;-1:-1:-1;;;7013:13:94;;707:8662;;7013:13;6724:223;707:8662;;-1:-1:-1;;;6924:12:94;;707:8662;;6924:12;6741:151;6790:102;837:15:62;;;6790:88:94;837:15:62;6843:34:94;6821:20;819:34:62;837:15;819:34;:::i;6821:20:94:-;6843:34;;;6790:88;;:::i;:102::-;;6741:151;;;;6304:99;6357:35;;;;;;;:::i;:::-;6304:99;;;;707:8662;;;;;;-1:-1:-1;;707:8662:94;;;;;;;;-1:-1:-1;;;;;707:8662:94;;;;;;;;1876:205;-1:-1:-1;707:8662:94;;;2016:9;707:8662;;;;;-1:-1:-1;;;;;707:8662:94;2016:56;;1876:205;;2016:56;:::i;:::-;707:8662;1876:205;:::o;707:8662::-;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;707:8662:94;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;707:8662:94;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;3317:13;707:8662;-1:-1:-1;;;707:8662:94;;;;;;;;;;3317:13;707:8662;;:::i;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;707:8662:94;-1:-1:-1;;;;;707:8662:94;;;;;;;;;;;;;;;;3317:13;;707:8662;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;707:8662:94;;;;;;-1:-1:-1;;;707:8662:94;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;9856:1:60;707:8662:94;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;707:8662:94;;;;;;;;-1:-1:-1;;707:8662:94;;;;:::o;2505:267:92:-;-1:-1:-1;707:8662:94;;;2692:16:92;707:8662:94;;;;;;;;-1:-1:-1;;;;;707:8662:94;;;;;;;;;2692:73:92;;2505:267;;2692:73;:::i;707:8662:94:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;707:8662:94;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;707:8662:94;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;707:8662:94;;-1:-1:-1;707:8662:94;;;-1:-1:-1;707:8662:94;:::o;10580:184:86:-;10689:20;;;:::i;:::-;-1:-1:-1;;;;;707:8662:94;;10726:7:86;707:8662:94;;10736:12:86;:17;:12;;:17;:::i;:::-;707:8662:94;;;;;;10580:184:86;:::o;10726:31::-;;;10689:11;10580:184;:::o;707:8662:94:-;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;707:8662:94;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::o;1818:604:86:-;;707:8662:94;;1946:17:86;1942:83;;707:8662:94;2049:27:86;707:8662:94;2049:27:86;707:8662:94;;2049:27:86;;;;;;:::i;:::-;2120:14;;;;;:::i;:::-;707:8662:94;;;;;;;;;;;;;;;;2148:22:86;;;2144:77;;2235:21;-1:-1:-1;2235:84:86;;;;1818:604;2231:139;;;;1425:34;;;;:::i;2231:139::-;-1:-1:-1;;2049:27:86;2342:17;707:8662:94;-1:-1:-1;;;;;707:8662:94;;:::o;2235:84:86:-;707:8662:94;;;2269:16:86;707:8662:94;;2269:16:86;:::i;:::-;707:8662:94;;;2261:24:86;:57;;;;;2235:84;;;;;;;2261:57;2289:29;2298:8;;;2289:18;2298:8;2289:23;2298:8;;:::i;:::-;2289:18;;:::i;:::-;707:8662:94;;;;;2289:29:86;;2261:57;;;;2144:77;-1:-1:-1;;;;2049:27:86;2193:17;;;;707:8662:94;-1:-1:-1;;;;;707:8662:94;;-1:-1:-1;707:8662:94;:::o;1942:83:86:-;1425:34;;;;:::i;707:8662:94:-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;707:8662:94;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;6491:564:92:-;6614:34;6491:564;6614:34;;;;:::i;:::-;707:8662:94;;-1:-1:-1;;;6664:41:92;;-1:-1:-1;;;;;707:8662:94;;;6664:41:92;;;707:8662:94;;;;;6664:41:92;;;707:8662:94;;;6674:13:92;707:8662:94;;6664:41:92;;;;;;;-1:-1:-1;6664:41:92;;;6491:564;6663:42;;6659:90;;2540:111:28;6850:27:92;6664:41;2540:111:28;;;:::i;:::-;-1:-1:-1;707:8662:94;;-1:-1:-1;;;;;;707:8662:94;-1:-1:-1;;;;;707:8662:94;;;;;6850:27:92;;:::i;:::-;707:8662:94;;;;;;;;;;6892:23:92;;;;;;;;;-1:-1:-1;6892:23:92;;;6491:564;707:8662:94;;;6892:37:92;:64;;;6491:564;6888:112;;707:8662:94;7010:38:92;;707:8662:94;;-1:-1:-1;707:8662:94;;-1:-1:-1;;;;707:8662:94;;;;;;-1:-1:-1;;;707:8662:94;;;;;;;;6888:112:92;707:8662:94;;-1:-1:-1;;;6979:10:92;;6664:41;;6979:10;6892:64;-1:-1:-1;707:8662:94;;;;6892:64:92;;:23;;;;;;-1:-1:-1;6892:23:92;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;6659:90;707:8662:94;;-1:-1:-1;;;6728:10:92;;6664:41;;6728:10;6664:41;;;;;;;;;;;;;;:::i;:::-;;;;3326:384:28;-1:-1:-1;;;;;;;;;;;1847:1:28;707:8662:94;;3526:20:28;3522:88;;1847:1;707:8662:94;;3326:384:28:o;3522:88::-;707:8662:94;;-1:-1:-1;;;3569:30:28;;;;;4451:257:92;707:8662:94;;-1:-1:-1;;;4546:86:92;;467:2:88;707:8662:94;;;;4546:86:92;;;707:8662:94;-1:-1:-1;;;;;4546:86:92;707:8662:94;;;4572:26:92;707:8662:94;;4546:86:92;;;;;;;-1:-1:-1;4546:86:92;;;4451:257;4636:10;;707:8662:94;;4546:100:92;4542:160;;4451:257::o;4542:160::-;707:8662:94;;-1:-1:-1;;;4669:22:92;;4546:86;;4669:22;4546:86;;;;;;;;;;;;;;;:::i;:::-;;;;;2557:104:57;;2641:5;;;;;;:13;2557:104;:::o;2641:13::-;;;2557:104;:::o;5905:168:86:-;;6006:20;;;:::i;:::-;707:8662:94;;;;;;;-1:-1:-1;;707:8662:94;;;;;;:::i;:::-;;;;;;;5905:168:86:o;707:8662:94:-;;;;;;;;;;;;14291:213:58;707:8662:94;14369:24:58;;;;14365:103;;707:8662:94;14291:213:58;:::o;14365:103::-;707:8662:94;;;;14416:41:58;;;;;;14447:2;14416:41;;;707:8662:94;;;;;14416:41:58;7558:604:86;;707:8662:94;;7686:17:86;7682:83;;707:8662:94;7789:27:86;707:8662:94;7789:27:86;707:8662:94;;7789:27:86;;;;;;:::i;:::-;7860:14;;;;;:::i;:::-;707:8662:94;;;;;;;;;;;;;;;;7888:22:86;;;7884:77;;7975:21;-1:-1:-1;7975:84:86;;;;7558:604;7971:139;;;;8127:28;;;;:::i;7971:139::-;8082:17;;7789:27;8082:17;707:8662:94;8075:24:86;:::o;7975:84::-;707:8662:94;;;8009:16:86;707:8662:94;;8009:16:86;:::i;:::-;707:8662:94;;;8001:24:86;:57;;;;;7975:84;;;;;;;8001:57;8029:29;8038:8;;;8029:18;8038:8;8029:23;8038:8;;:::i;:::-;8029:18;;:::i;:29::-;;8001:57;;;;7884:77;7933:17;;;;;7789:27;7933:17;707:8662:94;7926:24:86;:::o;7682:83::-;7726:28;;;;:::i;707:8662:94:-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;707:8662:94;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;707:8662:94;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;707:8662:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3323:1122:92:-;;707:8662:94;;:::i;:::-;;;;3608:16:92;3604:109;;3323:1122;837:15:62;;819:34;837:15;819:34;:::i;:::-;-1:-1:-1;707:8662:94;;;;3778:27:92;;:13;;-1:-1:-1;;;;;707:8662:94;3778:13:92;707:8662:94;3778:27:92;707:8662:94;;;;;;;3778:29:92;;;;;;;;;;;;;;;3740:67;3778:29;3759:48;3778:29;-1:-1:-1;3778:29:92;;;3759:48;;:::i;3740:67::-;707:8662:94;;;3740:67:92;;;:107;;;;;3323:1122;3740:197;;;;3323:1122;3723:263;;;707:8662:94;3778:29:92;707:8662:94;;;;;;;;;;4025:25:92;;;;;;;;;4010:143;4025:25;;;-1:-1:-1;4025:25:92;;;3323:1122;4113:30;;;707:8662:94;;;;;;;;;;;4010:143:92;;;;;3778:29;4010:143;;;:::i;:::-;;;-1:-1:-1;;;;;707:8662:94;4010:143:92;;;;;;;4181:257;4010:143;-1:-1:-1;4010:143:92;;;3323:1122;3996:157;;4293:102;3996:157;;4233:162;3996:157;4207:231;3996:157;;2936:28;:47;:38;:28;;;707:8662:94;;2936:16:92;707:8662:94;;;;;;;2936:28:92;707:8662:94;;;;;;;;;;;;;;;;2936:47:92;4351:43;;;4293:102;;:::i;:::-;4233:162;;:::i;:::-;4207:231;:::i;4181:257::-;3323:1122;:::o;4010:143::-;4233:162;4010:143;;;4207:231;4010:143;;;;4293:102;4010:143;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;4025:25;;;;;;;;;;;;;;:::i;:::-;;;;3723:263;3962:13;;;;;;-1:-1:-1;3962:13:92;-1:-1:-1;3962:13:92;:::o;3740:197::-;3886:41;;3867:70;3886:51;;:41;;;707:8662:94;;3886:29:92;707:8662:94;;;;;;;3886:51:92;707:8662:94;;;;;3867:70:92;-1:-1:-1;3740:197:92;;;:107;837:15:62;;3811:36:92;819:34:62;837:15;819:34;:::i;3811:36:92:-;;;;3740:107;;;3778:29;;;;;;;;;;;;;;;:::i;3604:109::-;3662:40;;;;;;;;;;;;:::i;:::-;3604:109;;;;4714:335;;;;707:8662:94;-1:-1:-1;707:8662:94;4876:29:92;707:8662:94;;;;4876:51:92;707:8662:94;;-1:-1:-1;707:8662:94;;;;;;;;;;;;;;;;;4876:51:92;707:8662:94;;;;;-1:-1:-1;4872:171:92;;4714:335;;;:::o;4872:171::-;4962:70;707:8662:94;4962:51:92;707:8662:94;-1:-1:-1;707:8662:94;4876:29:92;707:8662:94;;;-1:-1:-1;707:8662:94;;;;;;;;;;;;;;;;;4962:51:92;707:8662:94;;;;;;;;;;;;5055:221:92;;;707:8662:94;-1:-1:-1;707:8662:94;5160:16:92;707:8662:94;;2936:47:92;:38;5160;707:8662:94;;-1:-1:-1;707:8662:94;;;;;;;;;;;;;;;;;5160:38:92;837:15:62;819:34;837:15;819:34;:::i;:::-;707:8662:94;-1:-1:-1;707:8662:94;5160:16:92;707:8662:94;;;-1:-1:-1;707:8662:94;;;;;;;;;;;;;;;;;2936:47:92;707:8662:94;;;;;;;;6360:12:86;;;707:8662:94;;;6360:24:86;6356:75;;5055:221:92;6474:30:86;;;:::i;:::-;707:8662:94;;;;;6578:12:86;;;;:::i;:::-;;6604:24;;;5055:221:92;-1:-1:-1;6600:188:86;;;-1:-1:-1;;;;707:8662:94;;;;;;;6644:29:86;:21;;;;:::i;:::-;:29;707:8662:94;;;;;;;;;;;;;;;;;;;;;6600:188:86;6753:24;;8167:38:60;;-1:-1:-1;;;;;707:8662:94;;;;;8167:38:60;:::i;:::-;6753:24:86;;;:::i;6604:::-;707:8662:94;;;;;;6614:14:86;;-1:-1:-1;6604:24:86;;;6356:75;6400:20;;;:::i;:::-;6356:75;;707:8662:94;;;;;;;;-1:-1:-1;;;;;707:8662:94;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;5282:431:92:-;;;;5487:25;;:23;:13;707:8662:94;5494:5:92;707:8662:94;;;;;;;;;5487:23:92;707:8662:94;;-1:-1:-1;;;5487:25:92;;707:8662:94;;;;;5487:25:92;;;;;;;5631:65;5487:25;5631:65;5487:25;5494:5;5487:25;;;5282:431;-1:-1:-1;;;;;;707:8662:94;;;;:::i;:::-;-1:-1:-1;;;;;5677:4:92;707:8662:94;;;5677:4:92;5487:25;5642:53;;707:8662:94;;;5631:65:92;;;5487:25;5631:65;;;:::i;:::-;5472:234;;;;;5494:5;707:8662:94;5472:234:92;707:8662:94;;;;;;;;;;;;;;5472:234:92;;5487:25;5472:234;;;:::i;:::-;;;;;;;;;;;5282:431;:::o;5472:234::-;;;;;;:::i;:::-;;;:::i;5487:25::-;;;;;;;;;;;;;;:::i;:::-;;;;5719:137;707:8662:94;5719:137:92;707:8662:94;5802:47:92;5719:137;5809:5;707:8662:94;;;;;;;;;;;;;;;;;;5802:47:92;;;;;707:8662:94;;;;;;5802:47:92;;;;;;;;5719:137;:::o;5802:47::-;;;;;;;;;;;;;:::i;:::-;;5719:137::o;707:8662:94:-;;;;;;;:::o;:::-;;;;;;;;;;;;5862:623:92;;;5988:12;707:8662:94;;;;;;;5984:495:92;;5862:623;;;;;;:::o;5984:495::-;707:8662:94;;-1:-1:-1;;;6033:22:92;;707:8662:94;6033:22:92;;707:8662:94;;6033:22:92;;707:8662:94;;-1:-1:-1;;;;;707:8662:94;6033:22:92;;;;;;;5988:12;6033:22;;;5984:495;-1:-1:-1;707:8662:94;;-1:-1:-1;;;6033:22:92;6094:81;;;;;;;;707:8662:94;;;;-1:-1:-1;;;;;707:8662:94;;;;;;;;;;;;;;;;;;;;;;6094:81:92;707:8662:94;;;;6094:81:92;;707:8662:94;;6094:81:92;;;;;;:::i;:::-;707:8662:94;6194:9:92;:55;6190:124;;5988:12;6328:141;;;;;;1271:7;6328:141;;5984:495;;;;;;;6190:124;707:8662:94;;-1:-1:-1;;;6276:23:92;;6033:22;;6276:23;6033:22;6094:81;6033:22;;;6094:81;6033:22;;;;;;;;;;;:::i;:::-;;;;;10167:206:60;707:8662:94;;10303:8:60;;;:63;;10262:17;10167:206;:::o;10303:63::-;707:8662:94;;;;;;;;;;10262:17:60;14249:109;;10262:17;14249:109;;;707:8662:94;;;10167:206:60;:::o;707:8662:94:-;;;;;;;:::i;:::-;-1:-1:-1;707:8662:94;;;;;;;:::o;5573:258:86:-;707:8662:94;5573:258:86;11308:22:60;5573:258:86;707:8662:94;;:::i;:::-;;;;:::i;:::-;;11308:22:60;:::i;:::-;707:8662:94;;:::i;:::-;;;;;;5805:17:86;707:8662:94;;;;;5805:17:86;;707:8662:94;;;;;;;;:::i;:::-;;;5805:17:86;5759:65;;707:8662:94;5573:258:86;:::o;6893:76:25:-;;;:::i;:::-;;;:::i;:::-;1805:1:28;-1:-1:-1;;;;;;;;;;;707:8662:94;6893:76:25:o;707:8662:94:-;;;;;;;:::i;:::-;-1:-1:-1;707:8662:94;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::o;8763:604::-;;8969:30;8763:604;707:8662;;:::i;:::-;;;;8905:30;;;;;;;;;;;;;:::i;:::-;707:8662;;-1:-1:-1;;;8969:30:94;;707:8662;;;;;;;;-1:-1:-1;;;;;707:8662:94;8969:30;;;;;;;;;;;8763:604;9013:19;;;707:8662;;;;;;;;;;;;;;;9013:36;;9009:95;;707:8662;9118:29;;9150:1;707:8662;;9118:33;9114:102;;9226:34;707:8662;9271:54;707:8662;;;;;;;;;;;8969:30;707:8662;;;8969:30;707:8662;;9226:34;707:8662;9271:54;707:8662;;9271:54;9343:17;8763:604;:::o;9114:102::-;707:8662;;-1:-1:-1;;;9174:31:94;;8969:30;;9174:31;9009:95;707:8662;;-1:-1:-1;;;9072:21:94;;8969:30;;9072:21;8969:30;;;;;;;;;;;;;;;:::i;:::-;;;;;707:8662;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;10552:388:60:-;707:8662:94;;10728:8:60;;;10752:20;;10690:17;10752:20;10690:17;10752:20;10690:17;10752:20;:::o;10724:210::-;707:8662:94;;;;;;;;;;;14249:109:60;10690:17;14249:109;;10690:17;14249:109;;;707:8662:94;:::i;:::-;;;;;;;14249:109:60;707:8662:94;;;;;10911:11:60;;707:8662:94;;10886:37:60;10870:1;10886:37;;;:::o;6999:207:86:-;;7117:34;6999:207;7117:34;;:::i;11486:272::-;;707:8662:94;11308:22:60;11718:31:86;11486:272;707:8662:94;;:::i;:::-;;;;:::i;:::-;;11308:22:60;;:::i;707:8662:94:-;;11718:12:86;707:8662:94;;;;;11731:17:86;707:8662:94;;;;;11731:17:86;;707:8662:94;;11718:12:86;;:31;:::i;:::-;707:8662:94;;;;;;;;;:::i;:::-;;;;;;11731:17:86;11672:79;;707:8662:94;11486:272:86;:::o;707:8662:94:-;;;-1:-1:-1;;;707:8662:94;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;-1:-1:-1;;;707:8662:94;;;;;;;;;;;;;;;:::i;9441:606:60:-;;707:8662:94;;9594:15:60;9559:17;9619:18;;9658:1;9652:7;;9648:234;;9441:606;9906:53;;12919:10;;;;;;-1:-1:-1;;9977:8:60;;;:63;;9559:17;9441:606;:::o;9977:63::-;9992:48;10025:7;;9992:41;10025:7;;:::i;:::-;9992:41;14249:109;;;;;;14099:265;;9992:41;707:8662:94;;;;;12912:230:60;2900:5:57;;;;;2910;;;;707:8662:94;;;;;;;;;14249:109:60;9559:17;14249:109;707:8662:94;14249:109:60;;;9559:17;14249:109;;707:8662:94;;;;;-1:-1:-1;12996:136:60;707:8662:94;;;13055:10:60;12996:136;;12912:230;;;12996:136;13110:7;;;;;;:::i;:::-;12996:136;;;9648:234;9695:14;;;;:::i;:::-;707:8662:94;;;;;;;14249:109:60;9559:17;14249:109;707:8662:94;14249:109:60;;;9559:17;14249:109;;707:8662:94;;;;;9727:48:60;9723:149;707:8662:94;;;9795:10:60;9723:149;9648:234;;;9723:149;9850:7;;;;;:::i;:::-;9723:149;;;7084:141:25;707:8662:94;-1:-1:-1;;;;;;;;;;;707:8662:94;;;;7150:18:25;7146:73;;7084:141::o;7146:73::-;707:8662:94;;-1:-1:-1;;;7191:17:25;;;;;707:8662:94;;;-1:-1:-1;;;707:8662:94;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;707:8662:94;;;;;;;;;;;:::o;11513:870:60:-;707:8662:94;;11513:870:60;;;707:8662:94;11513:870:60;11672:7;;;;707:8662:94;11775:28:60;11795:7;;;:::i;:::-;11775:28;14249:109;;;;;;14099:265;;11775:28;707:8662:94;:::i;:::-;;;;;;;;;;;;;;;;11877:15:60;-1:-1:-1;11873:91:60;;707:8662:94;;12233:11:60;707:8662:94;;;12027:16:60;707:8662:94;;;;;;;12027:16:60;;;;12083:7;12063:43;12083:7;;12063:28;12083:7;;:::i;12063:28::-;707:8662:94;;;;;;;;;;;;;;;;;12063:43:60;12233:11;707:8662:94;-1:-1:-1;;;;;707:8662:94;;;;12225:27:60;;:::o;12023:189::-;707:8662:94;;;12145:52:60;707:8662:94;12155:41:60;707:8662:94;;:::i;:::-;;;;;;;;12155:41:60;-1:-1:-1;;;;;707:8662:94;;12155:41:60;;;707:8662:94;12145:52:60;:::i;:::-;12023:189;;11873:91;707:8662:94;;-1:-1:-1;;;11919:30:60;;;;;11668:709;12283:52;707:8662:94;;12293:41:60;707:8662:94;;:::i;12293:41:60:-;-1:-1:-1;;;;;707:8662:94;;12293:41:60;;;707:8662:94;12145:52:60;:::i;12283:::-;11678:1;12349:17;;:::o;8587:1642:57:-;8658:6;;8654:45;;9401:7;10201:10;10142:26;10093;10044;9995;9946;9897;9848;707:8662:94;10189:23:57;9401:7;8663:1;707:8662:94;;;;10826:16:57;10822:99;;8587:1642;707:8662:94;;;;10938:15:57;10934:96;;8587:1642;707:8662:94;;;;11047:15:57;11043:96;;8587:1642;707:8662:94;;;;11156:15:57;11152:96;;8587:1642;707:8662:94;;;;11265:14:57;11261:93;;8587:1642;707:8662:94;;;;11371:14:57;11367:93;;8587:1642;707:8662:94;;;;11477:14:57;11473:93;;8587:1642;707:8662:94;;;11579:64:57;;8587:1642;707:8662:94;;;9858:10:57;;;;:::i;:::-;707:8662:94;;;;;9848:26:57;9907:10;;;;:::i;9897:26::-;9956:10;;;;:::i;9946:26::-;10005:10;;;;:::i;9995:26::-;10054:10;;;;:::i;10044:26::-;10103:10;;;;:::i;10093:26::-;10152:10;;;;:::i;10142:26::-;10201:10;;;:::i;:::-;10189:23;;:::i;11579:64::-;707:8662:94;;11579:64:57;;11473:93;707:8662:94;11511:11:57;;707:8662:94;;11473:93:57;;;;11367;707:8662:94;11405:11:57;;707:8662:94;;11367:93:57;;;;11261;707:8662:94;11299:11:57;;707:8662:94;;11261:93:57;;;;11152:96;707:8662:94;11191:12:57;;707:8662:94;;11152:96:57;;;;11043;707:8662:94;11082:12:57;;707:8662:94;;11043:96:57;;;;10934;707:8662:94;10973:12:57;;707:8662:94;;10934:96:57;;;;10822:99;10862:13;;;707:8662:94;10822:99:57;;;;8654:45;8680:8;8663:1;8680:8;:::o","linkReferences":{},"immutableReferences":{"57808":[{"start":810,"length":32}],"57811":[{"start":4873,"length":32},{"start":9285,"length":32}],"65592":[{"start":460,"length":32},{"start":7054,"length":32}],"65595":[{"start":742,"length":32},{"start":7448,"length":32}],"66325":[{"start":2540,"length":32},{"start":4959,"length":32}]}},"methodIdentifiers":{"BURNER_GAS_LIMIT()":"d5c24e1a","BURNER_RESERVE()":"2964f8dc","FACTORY()":"2dd31000","NETWORK_MIDDLEWARE_SERVICE()":"2c9d45b3","NETWORK_REGISTRY()":"c0cd7c3e","TYPE()":"bb24fe8a","VAULT_FACTORY()":"103f2907","cumulativeSlash(bytes32,address)":"1a2be2c4","cumulativeSlashAt(bytes32,address,uint48,bytes)":"aa8e6489","executeSlash(uint256,bytes)":"b94c386e","initialize(bytes)":"439fab91","isBurnerHook()":"34d098ea","latestSlashedCaptureTimestamp(bytes32,address)":"267de1f3","requestSlash(bytes32,address,uint256,uint48,bytes)":"545ce389","resolver(bytes32,bytes)":"cd05b8a1","resolverAt(bytes32,uint48,bytes)":"31ce4dfe","resolverSetEpochsDelay()":"bc6eac5b","setResolver(uint96,address,bytes)":"9168f9d2","slashRequests(uint256)":"9a896551","slashRequestsLength()":"8f42f9ab","slashableStake(bytes32,address,uint48,bytes)":"aab3595f","staticDelegateCall(address,bytes)":"9f86fd85","vault()":"fbfa77cf","vetoDuration()":"e054e08b","vetoSlash(uint256,bytes)":"f9268d18"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vaultFactory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"networkMiddlewareService\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"networkRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"slasherFactory\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"entityType\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AlreadySet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CheckpointUnorderedInsertion\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBurnerGas\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientSlash\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCaptureTimestamp\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidResolverSetEpochsDelay\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidVetoDuration\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoBurner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoResolver\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotNetwork\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotNetworkMiddleware\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotResolver\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SlashPeriodEnded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SlashRequestCompleted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SlashRequestNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VetoPeriodEnded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VetoPeriodNotEnded\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"slashIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slashedAmount\",\"type\":\"uint256\"}],\"name\":\"ExecuteSlash\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"slashIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slashAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"vetoDeadline\",\"type\":\"uint48\"}],\"name\":\"RequestSlash\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"}],\"name\":\"SetResolver\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"slashIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"}],\"name\":\"VetoSlash\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BURNER_GAS_LIMIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BURNER_RESERVE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NETWORK_MIDDLEWARE_SERVICE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NETWORK_REGISTRY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TYPE\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VAULT_FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"cumulativeSlash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"cumulativeSlashAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"slashIndex\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"hints\",\"type\":\"bytes\"}],\"name\":\"executeSlash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"slashedAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isBurnerHook\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"latestSlashedCaptureTimestamp\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"value\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hints\",\"type\":\"bytes\"}],\"name\":\"requestSlash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"slashIndex\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"resolver\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"resolverAt\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resolverSetEpochsDelay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint96\",\"name\":\"identifier\",\"type\":\"uint96\"},{\"internalType\":\"address\",\"name\":\"resolver_\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"hints\",\"type\":\"bytes\"}],\"name\":\"setResolver\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"slashRequests\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"vetoDeadline\",\"type\":\"uint48\"},{\"internalType\":\"bool\",\"name\":\"completed\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slashRequestsLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hints\",\"type\":\"bytes\"}],\"name\":\"slashableStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"staticDelegateCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vetoDuration\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"slashIndex\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"hints\",\"type\":\"bytes\"}],\"name\":\"vetoSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"CheckpointUnorderedInsertion()\":[{\"details\":\"A value was attempted to be inserted on a past checkpoint.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}]},\"events\":{\"ExecuteSlash(uint256,uint256)\":{\"params\":{\"slashIndex\":\"index of the slash request\",\"slashedAmount\":\"virtual amount of the collateral slashed\"}},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"RequestSlash(uint256,bytes32,address,uint256,uint48,uint48)\":{\"params\":{\"captureTimestamp\":\"time point when the stake was captured\",\"operator\":\"operator that could be slashed (if the request is not vetoed)\",\"slashAmount\":\"maximum amount of the collateral to be slashed\",\"slashIndex\":\"index of the slash request\",\"subnetwork\":\"subnetwork that requested the slash\",\"vetoDeadline\":\"deadline for the resolver to veto the slash (exclusively)\"}},\"SetResolver(bytes32,address)\":{\"params\":{\"resolver\":\"address of the resolver\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"VetoSlash(uint256,address)\":{\"params\":{\"resolver\":\"address of the resolver that vetoed the slash\",\"slashIndex\":\"index of the slash request\"}}},\"kind\":\"dev\",\"methods\":{\"cumulativeSlash(bytes32,address)\":{\"params\":{\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"_0\":\"cumulative slash amount\"}},\"cumulativeSlashAt(bytes32,address,uint48,bytes)\":{\"params\":{\"hint\":\"hint for the checkpoint index\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\",\"timestamp\":\"time point to get the cumulative slash amount until (inclusively)\"},\"returns\":{\"_0\":\"cumulative slash amount until the given timestamp (inclusively)\"}},\"executeSlash(uint256,bytes)\":{\"details\":\"Only a network middleware can call this function.\",\"params\":{\"hints\":\"hints for checkpoints' indexes\",\"slashIndex\":\"index of the slash request\"},\"returns\":{\"slashedAmount\":\"virtual amount of the collateral slashed\"}},\"initialize(bytes)\":{\"params\":{\"data\":\"some data to use\"}},\"requestSlash(bytes32,address,uint256,uint48,bytes)\":{\"details\":\"Only a network middleware can call this function.\",\"params\":{\"amount\":\"maximum amount of the collateral to be slashed\",\"captureTimestamp\":\"time point when the stake was captured\",\"hints\":\"hints for checkpoints' indexes\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"slashIndex\":\"index of the slash request\"}},\"resolver(bytes32,bytes)\":{\"params\":{\"hint\":\"hint for the checkpoint index\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"_0\":\"address of the resolver\"}},\"resolverAt(bytes32,uint48,bytes)\":{\"params\":{\"hint\":\"hint for the checkpoint index\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\",\"timestamp\":\"timestamp to get the resolver at\"},\"returns\":{\"_0\":\"address of the resolver\"}},\"slashRequestsLength()\":{\"returns\":{\"_0\":\"total number of slash requests\"}},\"slashableStake(bytes32,address,uint48,bytes)\":{\"params\":{\"captureTimestamp\":\"time point to get the stake amount at\",\"hints\":\"hints for the checkpoints' indexes\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"amount\":\"slashable amount of the stake\"}},\"staticDelegateCall(address,bytes)\":{\"details\":\"It allows to use this contract's storage on-chain.\",\"params\":{\"data\":\"data to make a delegatecall with\",\"target\":\"address of the contract to make a delegatecall to\"}},\"vetoSlash(uint256,bytes)\":{\"details\":\"Only a resolver can call this function.\",\"params\":{\"hints\":\"hints for checkpoints' indexes\",\"slashIndex\":\"index of the slash request\"}}},\"stateVariables\":{\"NETWORK_REGISTRY\":{\"return\":\"address of the network registry\",\"returns\":{\"_0\":\"address of the network registry\"}},\"resolverSetEpochsDelay\":{\"return\":\"updating resolver delay in epochs\",\"returns\":{\"_0\":\"updating resolver delay in epochs\"}},\"slashRequests\":{\"params\":{\"slashIndex\":\"index of the slash request\"},\"returns\":{\"amount\":\"maximum amount of the collateral to be slashed\",\"captureTimestamp\":\"time point when the stake was captured\",\"completed\":\"if the slash was vetoed/executed\",\"operator\":\"operator that could be slashed (if the request is not vetoed)\",\"subnetwork\":\"subnetwork that requested the slash\",\"vetoDeadline\":\"deadline for the resolver to veto the slash (exclusively)\"}},\"vetoDuration\":{\"return\":\"duration of the veto period\",\"returns\":{\"_0\":\"duration of the veto period\"}}},\"version\":1},\"userdoc\":{\"events\":{\"ExecuteSlash(uint256,uint256)\":{\"notice\":\"Emitted when a slash request is executed.\"},\"RequestSlash(uint256,bytes32,address,uint256,uint48,uint48)\":{\"notice\":\"Emitted when a slash request is created.\"},\"SetResolver(bytes32,address)\":{\"notice\":\"Emitted when a resolver is set.\"},\"VetoSlash(uint256,address)\":{\"notice\":\"Emitted when a slash request is vetoed.\"}},\"kind\":\"user\",\"methods\":{\"BURNER_GAS_LIMIT()\":{\"notice\":\"Get a gas limit for the burner.\"},\"BURNER_RESERVE()\":{\"notice\":\"Get a reserve gas between the gas limit check and the burner's execution.\"},\"FACTORY()\":{\"notice\":\"Get the factory's address.\"},\"NETWORK_MIDDLEWARE_SERVICE()\":{\"notice\":\"Get the network middleware service's address.\"},\"NETWORK_REGISTRY()\":{\"notice\":\"Get the network registry's address.\"},\"TYPE()\":{\"notice\":\"Get the entity's type.\"},\"VAULT_FACTORY()\":{\"notice\":\"Get the vault factory's address.\"},\"cumulativeSlash(bytes32,address)\":{\"notice\":\"Get a cumulative slash amount for an operator on a subnetwork.\"},\"cumulativeSlashAt(bytes32,address,uint48,bytes)\":{\"notice\":\"Get a cumulative slash amount for an operator on a subnetwork until a given timestamp (inclusively) using a hint.\"},\"executeSlash(uint256,bytes)\":{\"notice\":\"Execute a slash with a given slash index using hints.\"},\"initialize(bytes)\":{\"notice\":\"Initialize this entity contract by using a given data.\"},\"isBurnerHook()\":{\"notice\":\"Get if the burner is needed to be called on a slashing.\"},\"latestSlashedCaptureTimestamp(bytes32,address)\":{\"notice\":\"Get the latest capture timestamp that was slashed on a subnetwork.\"},\"requestSlash(bytes32,address,uint256,uint48,bytes)\":{\"notice\":\"Request a slash using a subnetwork for a particular operator by a given amount using hints.\"},\"resolver(bytes32,bytes)\":{\"notice\":\"Get a resolver for a given subnetwork using a hint.\"},\"resolverAt(bytes32,uint48,bytes)\":{\"notice\":\"Get a resolver for a given subnetwork at a particular timestamp using a hint.\"},\"resolverSetEpochsDelay()\":{\"notice\":\"Get a delay for networks in epochs to update a resolver.\"},\"slashRequests(uint256)\":{\"notice\":\"Get a particular slash request.\"},\"slashRequestsLength()\":{\"notice\":\"Get a total number of slash requests.\"},\"slashableStake(bytes32,address,uint48,bytes)\":{\"notice\":\"Get a slashable amount of a stake got at a given capture timestamp using hints.\"},\"staticDelegateCall(address,bytes)\":{\"notice\":\"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data).\"},\"vault()\":{\"notice\":\"Get the vault's address.\"},\"vetoDuration()\":{\"notice\":\"Get a duration during which resolvers can veto slash requests.\"},\"vetoSlash(uint256,bytes)\":{\"notice\":\"Veto a slash with a given slash index using hints.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/slasher/VetoSlasher.sol\":\"VetoSlasher\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://942dad22fbdc1669f025540ba63aa3ccfad5f8458fc5d4525b31ebf272e7af45\",\"dweb:/ipfs/Qmdo4X2M82aM3AMoW2kf2jhYkSCyC4T1pHNd6obdsDFnAB\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c\",\"dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0xbdc5e074d7dd6678f67e92b1a51a20226801a407b0e1af3da367c5d1ff4519ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a36cca6b22fff3db16fc789ff6c60eea71d4b156065d4d0c83a0bc5e91a77a8b\",\"dweb:/ipfs/QmYN3exd5AemxjBrN8XMB1p5LbbE16uC3sjbYjwi8AjcGR\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0xc7755af115020049e4140f224f9ee88d7e1799ffb0646f37bf0df24bf6213f58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f09bf94d5274334ec021f61a04659db303f31e60460e14b709c9bf187740111\",\"dweb:/ipfs/QmNvgomZYUwFAt4cZbPWAiTeSZQreGehY9BK5xyVJsUttb\"]},\"src/contracts/common/Entity.sol\":{\"keccak256\":\"0x3d61a932995b8443381f3950542d388223a2c26dd5d29a3274dea3baa7388bd7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7cdf5f03ca72fd263fd32ff59c8d88ddca911ae83896a287d10772c1bbe9b138\",\"dweb:/ipfs/QmbP84r5BWT1Rn9AYTntWSf3xUMTTCohTZJFhbBhDXFoHa\"]},\"src/contracts/common/StaticDelegateCallable.sol\":{\"keccak256\":\"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764\",\"dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD\"]},\"src/contracts/libraries/Checkpoints.sol\":{\"keccak256\":\"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609\",\"dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE\"]},\"src/contracts/libraries/Subnetwork.sol\":{\"keccak256\":\"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56\",\"dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32\"]},\"src/contracts/slasher/BaseSlasher.sol\":{\"keccak256\":\"0x190e5dce196a061bdad42468c52e9f5b0eb7810cd7d0c19f04d6a2e94984f1b6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://07ca08d0cd43c2fe5d54a5577f6bdd522ced410f5d3a52e764deaa7ba26b5f06\",\"dweb:/ipfs/QmZe3PiMKBQKWcwodaLupragdqxPjgS4v1qMC7RXau8hDF\"]},\"src/contracts/slasher/VetoSlasher.sol\":{\"keccak256\":\"0xeccc8128de5e1ad499c067feac1c526638fbbac1a18b96726fc7507969fd5897\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://cdfcf281338423625acbccdf8810115b258ef7cfe4aa3c10b8911ead1aa85429\",\"dweb:/ipfs/QmZFsDvZXpkFkx4PHcDXAVPN3ZCAahbSVfYpSVrMBvbt4k\"]},\"src/interfaces/common/IEntity.sol\":{\"keccak256\":\"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b\",\"dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv\"]},\"src/interfaces/common/IMigratableEntity.sol\":{\"keccak256\":\"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c\",\"dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds\"]},\"src/interfaces/common/IRegistry.sol\":{\"keccak256\":\"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014\",\"dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK\"]},\"src/interfaces/common/IStaticDelegateCallable.sol\":{\"keccak256\":\"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516\",\"dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi\"]},\"src/interfaces/delegator/IBaseDelegator.sol\":{\"keccak256\":\"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2\",\"dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8\"]},\"src/interfaces/service/INetworkMiddlewareService.sol\":{\"keccak256\":\"0x347afc7fcf1fbcdb96d66162070ef6c78aed27b3af2c1d5dfb4e511840631783\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d90b8ceb495159e8e4e95d76447719dd166443f67dfabdd942846162071595c\",\"dweb:/ipfs/QmVVuiAWYx92T6vBvNMKZfTvraCf1fa16BsUKkdNs3hdHA\"]},\"src/interfaces/slasher/IBaseSlasher.sol\":{\"keccak256\":\"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf\",\"dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx\"]},\"src/interfaces/slasher/IBurner.sol\":{\"keccak256\":\"0xaf495dacc19ae0b3c787ba8021c5944927d70261536addd234d7dab146158c2b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b3cc66251008be6ff9fc8b11ecc6831d5a9dca49a3fe9817fcd970253c1d447\",\"dweb:/ipfs/QmVxfb9ALGdF9W3SN2h41gQbUct6tawvu5bw4K89kFQ4HW\"]},\"src/interfaces/slasher/IVetoSlasher.sol\":{\"keccak256\":\"0xdf7edd04a4f36e9aec3a15241dcb6b6315b2e64927b12710c2c410d571fc55e9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c4be6ac339c2ebf230fed65363f036784224095d0cd0f3f2d01d64d6e0da9508\",\"dweb:/ipfs/QmRSMbpfaHExqrzUA8vYZMYZWh6eQW1KX9JKJSLdgronfg\"]},\"src/interfaces/vault/IVault.sol\":{\"keccak256\":\"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9\",\"dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R\"]},\"src/interfaces/vault/IVaultStorage.sol\":{\"keccak256\":\"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e\",\"dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"vaultFactory","type":"address"},{"internalType":"address","name":"networkMiddlewareService","type":"address"},{"internalType":"address","name":"networkRegistry","type":"address"},{"internalType":"address","name":"slasherFactory","type":"address"},{"internalType":"uint64","name":"entityType","type":"uint64"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AlreadySet"},{"inputs":[],"type":"error","name":"CheckpointUnorderedInsertion"},{"inputs":[],"type":"error","name":"InsufficientBurnerGas"},{"inputs":[],"type":"error","name":"InsufficientSlash"},{"inputs":[],"type":"error","name":"InvalidCaptureTimestamp"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"InvalidResolverSetEpochsDelay"},{"inputs":[],"type":"error","name":"InvalidVetoDuration"},{"inputs":[],"type":"error","name":"NoBurner"},{"inputs":[],"type":"error","name":"NoResolver"},{"inputs":[],"type":"error","name":"NotInitialized"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"NotNetwork"},{"inputs":[],"type":"error","name":"NotNetworkMiddleware"},{"inputs":[],"type":"error","name":"NotResolver"},{"inputs":[],"type":"error","name":"NotVault"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintDowncast"},{"inputs":[],"type":"error","name":"SlashPeriodEnded"},{"inputs":[],"type":"error","name":"SlashRequestCompleted"},{"inputs":[],"type":"error","name":"SlashRequestNotExist"},{"inputs":[],"type":"error","name":"VetoPeriodEnded"},{"inputs":[],"type":"error","name":"VetoPeriodNotEnded"},{"inputs":[{"internalType":"uint256","name":"slashIndex","type":"uint256","indexed":true},{"internalType":"uint256","name":"slashedAmount","type":"uint256","indexed":false}],"type":"event","name":"ExecuteSlash","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"uint256","name":"slashIndex","type":"uint256","indexed":true},{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"slashAmount","type":"uint256","indexed":false},{"internalType":"uint48","name":"captureTimestamp","type":"uint48","indexed":false},{"internalType":"uint48","name":"vetoDeadline","type":"uint48","indexed":false}],"type":"event","name":"RequestSlash","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"address","name":"resolver","type":"address","indexed":false}],"type":"event","name":"SetResolver","anonymous":false},{"inputs":[{"internalType":"uint256","name":"slashIndex","type":"uint256","indexed":true},{"internalType":"address","name":"resolver","type":"address","indexed":true}],"type":"event","name":"VetoSlash","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"BURNER_GAS_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"BURNER_RESERVE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"NETWORK_MIDDLEWARE_SERVICE","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"NETWORK_REGISTRY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"TYPE","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VAULT_FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"cumulativeSlash","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"cumulativeSlashAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"slashIndex","type":"uint256"},{"internalType":"bytes","name":"hints","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"executeSlash","outputs":[{"internalType":"uint256","name":"slashedAmount","type":"uint256"}]},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"isBurnerHook","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"latestSlashedCaptureTimestamp","outputs":[{"internalType":"uint48","name":"value","type":"uint48"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint48","name":"captureTimestamp","type":"uint48"},{"internalType":"bytes","name":"hints","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"requestSlash","outputs":[{"internalType":"uint256","name":"slashIndex","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"resolver","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"resolverAt","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"resolverSetEpochsDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint96","name":"identifier","type":"uint96"},{"internalType":"address","name":"resolver_","type":"address"},{"internalType":"bytes","name":"hints","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"setResolver"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"slashRequests","outputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint48","name":"captureTimestamp","type":"uint48"},{"internalType":"uint48","name":"vetoDeadline","type":"uint48"},{"internalType":"bool","name":"completed","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"slashRequestsLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"captureTimestamp","type":"uint48"},{"internalType":"bytes","name":"hints","type":"bytes"}],"stateMutability":"view","type":"function","name":"slashableStake","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"staticDelegateCall"},{"inputs":[],"stateMutability":"view","type":"function","name":"vault","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"vetoDuration","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[{"internalType":"uint256","name":"slashIndex","type":"uint256"},{"internalType":"bytes","name":"hints","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"vetoSlash"}],"devdoc":{"kind":"dev","methods":{"cumulativeSlash(bytes32,address)":{"params":{"operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"_0":"cumulative slash amount"}},"cumulativeSlashAt(bytes32,address,uint48,bytes)":{"params":{"hint":"hint for the checkpoint index","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)","timestamp":"time point to get the cumulative slash amount until (inclusively)"},"returns":{"_0":"cumulative slash amount until the given timestamp (inclusively)"}},"executeSlash(uint256,bytes)":{"details":"Only a network middleware can call this function.","params":{"hints":"hints for checkpoints' indexes","slashIndex":"index of the slash request"},"returns":{"slashedAmount":"virtual amount of the collateral slashed"}},"initialize(bytes)":{"params":{"data":"some data to use"}},"requestSlash(bytes32,address,uint256,uint48,bytes)":{"details":"Only a network middleware can call this function.","params":{"amount":"maximum amount of the collateral to be slashed","captureTimestamp":"time point when the stake was captured","hints":"hints for checkpoints' indexes","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"slashIndex":"index of the slash request"}},"resolver(bytes32,bytes)":{"params":{"hint":"hint for the checkpoint index","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"_0":"address of the resolver"}},"resolverAt(bytes32,uint48,bytes)":{"params":{"hint":"hint for the checkpoint index","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)","timestamp":"timestamp to get the resolver at"},"returns":{"_0":"address of the resolver"}},"slashRequestsLength()":{"returns":{"_0":"total number of slash requests"}},"slashableStake(bytes32,address,uint48,bytes)":{"params":{"captureTimestamp":"time point to get the stake amount at","hints":"hints for the checkpoints' indexes","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"amount":"slashable amount of the stake"}},"staticDelegateCall(address,bytes)":{"details":"It allows to use this contract's storage on-chain.","params":{"data":"data to make a delegatecall with","target":"address of the contract to make a delegatecall to"}},"vetoSlash(uint256,bytes)":{"details":"Only a resolver can call this function.","params":{"hints":"hints for checkpoints' indexes","slashIndex":"index of the slash request"}}},"version":1},"userdoc":{"kind":"user","methods":{"BURNER_GAS_LIMIT()":{"notice":"Get a gas limit for the burner."},"BURNER_RESERVE()":{"notice":"Get a reserve gas between the gas limit check and the burner's execution."},"FACTORY()":{"notice":"Get the factory's address."},"NETWORK_MIDDLEWARE_SERVICE()":{"notice":"Get the network middleware service's address."},"NETWORK_REGISTRY()":{"notice":"Get the network registry's address."},"TYPE()":{"notice":"Get the entity's type."},"VAULT_FACTORY()":{"notice":"Get the vault factory's address."},"cumulativeSlash(bytes32,address)":{"notice":"Get a cumulative slash amount for an operator on a subnetwork."},"cumulativeSlashAt(bytes32,address,uint48,bytes)":{"notice":"Get a cumulative slash amount for an operator on a subnetwork until a given timestamp (inclusively) using a hint."},"executeSlash(uint256,bytes)":{"notice":"Execute a slash with a given slash index using hints."},"initialize(bytes)":{"notice":"Initialize this entity contract by using a given data."},"isBurnerHook()":{"notice":"Get if the burner is needed to be called on a slashing."},"latestSlashedCaptureTimestamp(bytes32,address)":{"notice":"Get the latest capture timestamp that was slashed on a subnetwork."},"requestSlash(bytes32,address,uint256,uint48,bytes)":{"notice":"Request a slash using a subnetwork for a particular operator by a given amount using hints."},"resolver(bytes32,bytes)":{"notice":"Get a resolver for a given subnetwork using a hint."},"resolverAt(bytes32,uint48,bytes)":{"notice":"Get a resolver for a given subnetwork at a particular timestamp using a hint."},"resolverSetEpochsDelay()":{"notice":"Get a delay for networks in epochs to update a resolver."},"slashRequests(uint256)":{"notice":"Get a particular slash request."},"slashRequestsLength()":{"notice":"Get a total number of slash requests."},"slashableStake(bytes32,address,uint48,bytes)":{"notice":"Get a slashable amount of a stake got at a given capture timestamp using hints."},"staticDelegateCall(address,bytes)":{"notice":"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data)."},"vault()":{"notice":"Get the vault's address."},"vetoDuration()":{"notice":"Get a duration during which resolvers can veto slash requests."},"vetoSlash(uint256,bytes)":{"notice":"Veto a slash with a given slash index using hints."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/slasher/VetoSlasher.sol":"VetoSlasher"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol":{"keccak256":"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74","urls":["bzz-raw://942dad22fbdc1669f025540ba63aa3ccfad5f8458fc5d4525b31ebf272e7af45","dweb:/ipfs/Qmdo4X2M82aM3AMoW2kf2jhYkSCyC4T1pHNd6obdsDFnAB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe","urls":["bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c","dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol":{"keccak256":"0xbdc5e074d7dd6678f67e92b1a51a20226801a407b0e1af3da367c5d1ff4519ad","urls":["bzz-raw://a36cca6b22fff3db16fc789ff6c60eea71d4b156065d4d0c83a0bc5e91a77a8b","dweb:/ipfs/QmYN3exd5AemxjBrN8XMB1p5LbbE16uC3sjbYjwi8AjcGR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0xc7755af115020049e4140f224f9ee88d7e1799ffb0646f37bf0df24bf6213f58","urls":["bzz-raw://7f09bf94d5274334ec021f61a04659db303f31e60460e14b709c9bf187740111","dweb:/ipfs/QmNvgomZYUwFAt4cZbPWAiTeSZQreGehY9BK5xyVJsUttb"],"license":"MIT"},"src/contracts/common/Entity.sol":{"keccak256":"0x3d61a932995b8443381f3950542d388223a2c26dd5d29a3274dea3baa7388bd7","urls":["bzz-raw://7cdf5f03ca72fd263fd32ff59c8d88ddca911ae83896a287d10772c1bbe9b138","dweb:/ipfs/QmbP84r5BWT1Rn9AYTntWSf3xUMTTCohTZJFhbBhDXFoHa"],"license":"BUSL-1.1"},"src/contracts/common/StaticDelegateCallable.sol":{"keccak256":"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90","urls":["bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764","dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD"],"license":"BUSL-1.1"},"src/contracts/libraries/Checkpoints.sol":{"keccak256":"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c","urls":["bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609","dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE"],"license":"MIT"},"src/contracts/libraries/Subnetwork.sol":{"keccak256":"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe","urls":["bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56","dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32"],"license":"MIT"},"src/contracts/slasher/BaseSlasher.sol":{"keccak256":"0x190e5dce196a061bdad42468c52e9f5b0eb7810cd7d0c19f04d6a2e94984f1b6","urls":["bzz-raw://07ca08d0cd43c2fe5d54a5577f6bdd522ced410f5d3a52e764deaa7ba26b5f06","dweb:/ipfs/QmZe3PiMKBQKWcwodaLupragdqxPjgS4v1qMC7RXau8hDF"],"license":"BUSL-1.1"},"src/contracts/slasher/VetoSlasher.sol":{"keccak256":"0xeccc8128de5e1ad499c067feac1c526638fbbac1a18b96726fc7507969fd5897","urls":["bzz-raw://cdfcf281338423625acbccdf8810115b258ef7cfe4aa3c10b8911ead1aa85429","dweb:/ipfs/QmZFsDvZXpkFkx4PHcDXAVPN3ZCAahbSVfYpSVrMBvbt4k"],"license":"BUSL-1.1"},"src/interfaces/common/IEntity.sol":{"keccak256":"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21","urls":["bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b","dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv"],"license":"MIT"},"src/interfaces/common/IMigratableEntity.sol":{"keccak256":"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4","urls":["bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c","dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds"],"license":"MIT"},"src/interfaces/common/IRegistry.sol":{"keccak256":"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb","urls":["bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014","dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK"],"license":"MIT"},"src/interfaces/common/IStaticDelegateCallable.sol":{"keccak256":"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5","urls":["bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516","dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi"],"license":"MIT"},"src/interfaces/delegator/IBaseDelegator.sol":{"keccak256":"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee","urls":["bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2","dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8"],"license":"MIT"},"src/interfaces/service/INetworkMiddlewareService.sol":{"keccak256":"0x347afc7fcf1fbcdb96d66162070ef6c78aed27b3af2c1d5dfb4e511840631783","urls":["bzz-raw://2d90b8ceb495159e8e4e95d76447719dd166443f67dfabdd942846162071595c","dweb:/ipfs/QmVVuiAWYx92T6vBvNMKZfTvraCf1fa16BsUKkdNs3hdHA"],"license":"MIT"},"src/interfaces/slasher/IBaseSlasher.sol":{"keccak256":"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404","urls":["bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf","dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx"],"license":"MIT"},"src/interfaces/slasher/IBurner.sol":{"keccak256":"0xaf495dacc19ae0b3c787ba8021c5944927d70261536addd234d7dab146158c2b","urls":["bzz-raw://9b3cc66251008be6ff9fc8b11ecc6831d5a9dca49a3fe9817fcd970253c1d447","dweb:/ipfs/QmVxfb9ALGdF9W3SN2h41gQbUct6tawvu5bw4K89kFQ4HW"],"license":"MIT"},"src/interfaces/slasher/IVetoSlasher.sol":{"keccak256":"0xdf7edd04a4f36e9aec3a15241dcb6b6315b2e64927b12710c2c410d571fc55e9","urls":["bzz-raw://c4be6ac339c2ebf230fed65363f036784224095d0cd0f3f2d01d64d6e0da9508","dweb:/ipfs/QmRSMbpfaHExqrzUA8vYZMYZWh6eQW1KX9JKJSLdgronfg"],"license":"MIT"},"src/interfaces/vault/IVault.sol":{"keccak256":"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235","urls":["bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9","dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R"],"license":"MIT"},"src/interfaces/vault/IVaultStorage.sol":{"keccak256":"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22","urls":["bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e","dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6"],"license":"MIT"}},"version":1},"id":94} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[{"name":"vaultFactory","type":"address","internalType":"address"},{"name":"networkMiddlewareService","type":"address","internalType":"address"},{"name":"networkRegistry","type":"address","internalType":"address"},{"name":"slasherFactory","type":"address","internalType":"address"},{"name":"entityType","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"BURNER_GAS_LIMIT","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"BURNER_RESERVE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"NETWORK_MIDDLEWARE_SERVICE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"NETWORK_REGISTRY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"TYPE","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"VAULT_FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"cumulativeSlash","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"cumulativeSlashAt","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"executeSlash","inputs":[{"name":"slashIndex","type":"uint256","internalType":"uint256"},{"name":"hints","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"slashedAmount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"initialize","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isBurnerHook","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"latestSlashedCaptureTimestamp","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"value","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"requestSlash","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","internalType":"uint48"},{"name":"hints","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"slashIndex","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"resolver","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"resolverAt","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"hint","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"resolverSetEpochsDelay","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"setResolver","inputs":[{"name":"identifier","type":"uint96","internalType":"uint96"},{"name":"resolver_","type":"address","internalType":"address"},{"name":"hints","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"slashRequests","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","internalType":"uint48"},{"name":"vetoDeadline","type":"uint48","internalType":"uint48"},{"name":"completed","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"slashRequestsLength","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"slashableStake","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"captureTimestamp","type":"uint48","internalType":"uint48"},{"name":"hints","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"staticDelegateCall","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"vault","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"vetoDuration","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"vetoSlash","inputs":[{"name":"slashIndex","type":"uint256","internalType":"uint256"},{"name":"hints","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"ExecuteSlash","inputs":[{"name":"slashIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"slashedAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"RequestSlash","inputs":[{"name":"slashIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"slashAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","indexed":false,"internalType":"uint48"},{"name":"vetoDeadline","type":"uint48","indexed":false,"internalType":"uint48"}],"anonymous":false},{"type":"event","name":"SetResolver","inputs":[{"name":"subnetwork","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"resolver","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"VetoSlash","inputs":[{"name":"slashIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"resolver","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AlreadySet","inputs":[]},{"type":"error","name":"CheckpointUnorderedInsertion","inputs":[]},{"type":"error","name":"InsufficientBurnerGas","inputs":[]},{"type":"error","name":"InsufficientSlash","inputs":[]},{"type":"error","name":"InvalidCaptureTimestamp","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"InvalidResolverSetEpochsDelay","inputs":[]},{"type":"error","name":"InvalidVetoDuration","inputs":[]},{"type":"error","name":"NoBurner","inputs":[]},{"type":"error","name":"NoResolver","inputs":[]},{"type":"error","name":"NotInitialized","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"NotNetwork","inputs":[]},{"type":"error","name":"NotNetworkMiddleware","inputs":[]},{"type":"error","name":"NotResolver","inputs":[]},{"type":"error","name":"NotVault","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SlashPeriodEnded","inputs":[]},{"type":"error","name":"SlashRequestCompleted","inputs":[]},{"type":"error","name":"SlashRequestNotExist","inputs":[]},{"type":"error","name":"VetoPeriodEnded","inputs":[]},{"type":"error","name":"VetoPeriodNotEnded","inputs":[]}],"bytecode":{"object":"0x6101203461017757601f612f0738819003918201601f19168301916001600160401b03918284118585101761017b578160a092869260409687528339810103126101775761004c8361018f565b6100586020850161018f565b9161006484860161018f565b9460806100736060830161018f565b910151918083168303610177577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff82891c16610166578080831603610122575b50505060805260a05260c05260e05261010091825251612d6391826101a483396080518261032a015260a0518281816113110152612441015260c0518281816101cc0152611b96015260e0518281816102e60152611d200152518181816109ee01526113670152f35b6001600160401b0319909116811790915585519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80806100b9565b875163f92ee8a960e01b8152600490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101775756fe60806040526004361015610011575f80fd5b5f3560e01c8063103f2907146101a45780631a2be2c41461019f578063267de1f31461019a5780632964f8dc146101955780632c9d45b3146101905780632dd310001461018b57806331ce4dfe1461018657806334d098ea14610181578063439fab911461017c578063545ce389146101775780638f42f9ab146101725780639168f9d21461016d5780639a896551146101685780639f86fd8514610163578063aa8e64891461015e578063aab3595f14610159578063b94c386e14610154578063bb24fe8a1461014f578063bc6eac5b1461014a578063c0cd7c3e14610145578063cd05b8a114610140578063d5c24e1a1461013b578063e054e08b14610136578063f9268d18146101315763fbfa77cf1461012c575f80fd5b61159e565b611430565b61140b565b6113ee565b611396565b611352565b611335565b6112f2565b610fa0565b610f48565b610f0a565b610e04565b610d79565b61094e565b610931565b610695565b61055d565b61050c565b6104a3565b610315565b6102d1565b6102b5565b610260565b61020c565b6101b7565b5f9103126101b357565b5f80fd5b346101b3575f3660031901126101b3576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6001600160a01b038116036101b357565b346101b35760403660031901126101b3576020610258610253602435610231816101fb565b6004355f526002845260405f209060018060a01b03165f5260205260405f2090565b6119a6565b604051908152f35b346101b35760403660031901126101b357602065ffffffffffff6102ab602435610289816101fb565b6004355f526001845260405f209060018060a01b03165f5260205260405f2090565b5416604051908152f35b346101b3575f3660031901126101b3576020604051614e208152f35b346101b3575f3660031901126101b3576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346101b3575f3660031901126101b3576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b65ffffffffffff8116036101b357565b634e487b7160e01b5f52604160045260245ffd5b602081019081106001600160401b0382111761039857604052565b610369565b606081019081106001600160401b0382111761039857604052565b604081019081106001600160401b0382111761039857604052565b6001600160401b03811161039857604052565b90601f801991011681019081106001600160401b0382111761039857604052565b6040519060c082018281106001600160401b0382111761039857604052565b604051906104338261039d565b565b60405190610433826103b8565b6001600160401b03811161039857601f01601f191660200190565b81601f820112156101b35780359061047482610442565b9261048260405194856103e6565b828452602083830101116101b357815f926020809301838601378301015290565b346101b35760603660031901126101b3576024356104c081610359565b604435906001600160401b0382116101b3576105036104e5602093369060040161045d565b6004355f90815260068552604090206001600160a01b039390611a26565b16604051908152f35b346101b3575f3660031901126101b357602060ff5f5460a01c166040519015158152f35b9181601f840112156101b3578235916001600160401b0383116101b357602083818601950101116101b357565b346101b35760203660031901126101b3576001600160401b036004358181116101b35761058e903690600401610530565b5f80516020612d0e833981519152549260ff8460401c161593168015908161068d575b6001149081610683575b15908161067a575b50610668575f80516020612d0e833981519152805467ffffffffffffffff191660011790556105f6918361064457611b5f565b6105fc57005b5f80516020612d0e833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f80516020612d0e833981519152805460ff60401b1916600160401b179055611b5f565b60405163f92ee8a960e01b8152600490fd5b9050155f6105c3565b303b1591506105bb565b8491506105b1565b346101b35760a03660031901126101b357602435600480356106b6836101fb565b604435926064356106c681610359565b6084356001600160401b0381116101b3576106e49036908601610530565b94906106ee611cc9565b6106f785611cf8565b6106ff6115ea565b958061091b575b505061071142611dce565b9061072c610725825465ffffffffffff1690565b809361165f565b5f5490969061075190610745906001600160a01b031681565b6001600160a01b031690565b968260206040998a51928380926327f843b560e11b82525afa80156109165761079092610785925f926108e5575b506116b5565b65ffffffffffff1690565b65ffffffffffff85169081109081156108cf575b506108c0576107b69051848688611fbb565b50968780821091180280881897146108b2576108ae610887878988887f3cb7f4ff6cecf74cee0eb9ae3ebf8933fa60a53014cce52f96da72a78dba8464896108068a61080142611dce565b61165f565b92600354978894610857610818610407565b8881526001600160a01b0385166020820152808b018a905265ffffffffffff8616606082015265ffffffffffff831660808201525f60a08201526116e0565b885197885265ffffffffffff938416602089015290921660408701526001600160a01b0316949081906060820190565b0390a46108a060015f80516020612cee83398151915255565b519081529081906020820190565b0390f35b855163167f871760e31b8152fd5b508551631357ac9160e11b8152fd5b90506108dd61078542611dce565b11155f6107a4565b61090891925060203d60201161090f575b61090081836103e6565b81019061167e565b905f61077f565b503d6108f6565b611693565b6109299296508101906115fd565b935f80610706565b346101b3575f3660031901126101b3576020600354604051908152f35b346101b35760603660031901126101b35760048035906bffffffffffffffffffffffff821682036101b357602435610985816101fb565b6044356001600160401b0381116101b3576109a39036908401610530565b906109ac611cc9565b6109b46115ea565b5081610d14575b5050604080516302910f8b60e31b8152338185019081526001600160a01b0395929491602091829082908190830103818a7f0000000000000000000000000000000000000000000000000000000000000000165afa908115610916575f91610ce7575b5015610cd8575f54610a59906001600160a01b0316936bffffffffffffffffffffffff166bffffffffffffffffffffffff193360601b161790565b95610a74610a6f885f52600660205260405f2090565b61286f565b50949015610c6e57610a8861078542611dce565b65ffffffffffff9586161115610c3857610ab2610aad895f52600660205260405f2090565b611d8f565b505b610ad7610745610745610745610ad28c5f52600660205260405f2090565b61265f565b91808716928303610b43575b505050505050610b28907f7b0b759b513b299fd2811f51926dca8854222a675557e8d544ce0933bf5b7570925b516001600160a01b0390911681529081906020820190565b0390a2610b4160015f80516020612cee83398151915255565b005b610b5a8998959796985f52600660205260405f2090565b911692845163186a323160e21b815281818981885afa908115610916575f91610c1b575b5081600554958751998a80926327f843b560e11b82525afa9081156109165789610be3610bf5977f7b0b759b513b299fd2811f51926dca8854222a675557e8d544ce0933bf5b75709c610bea95610b289d610bef985f92610bfe575b505016906117e8565b9116611809565b611dce565b90612ae5565b82958495610ae3565b610c149250803d1061090f5761090081836103e6565b5f80610bda565b610c329150823d841161090f5761090081836103e6565b5f610b7e565b610c56610745610745610745610ad28c5f52600660205260405f2090565b82871603610ab457865163a741a04560e01b81528490fd5b5093949385169250508115610cca575091610b2891610cc37f7b0b759b513b299fd2811f51926dca8854222a675557e8d544ce0933bf5b757094610cba875f52600660205260405f2090565b610bef42611dce565b5050610b10565b825163a741a04560e01b8152fd5b5083516323d53b9760e21b8152fd5b610d079150823d8411610d0d575b610cff81836103e6565b8101906117d4565b5f610a1e565b503d610cf5565b610d20918101906115fd565b505f806109bb565b634e487b7160e01b5f52603260045260245ffd5b600354811015610d745760035f5260021b7fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b01905f90565b610d28565b346101b35760203660031901126101b3576004356003548110156101b357610da090610d3c565b50805460018201546002830154600390930154604080519384526001600160a01b0390921660208401529082019290925265ffffffffffff808316606080840191909152603084901c90911660808301529190911c60ff16151560a082015260c090f35b346101b3576040806003193601126101b357600435610e22816101fb565b602435906001600160401b0382116101b3575f8091610e48610eac943690600401610530565b908187519283928337810184815203915af43d15610eb457610e9e3d610e6d81610442565b90610e7a865192836103e6565b81523d5f602083013e5b845194859315156020850152808401526060830190611816565b03601f1981018352826103e6565b805190602001fd5b610e9e6060610e84565b9060806003198301126101b35760043591602435610edb816101fb565b91604435610ee881610359565b91606435906001600160401b0382116101b357610f079160040161045d565b90565b346101b3576020610258610f43610f2036610ebe565b939190925f526002865260405f209060018060a01b03165f5260205260405f2090565b611e00565b346101b3576020610f64610f5b36610ebe565b92919091611fbb565b50604051908152f35b9060406003198301126101b35760043591602435906001600160401b0382116101b357610f9c91600401610530565b9091565b346101b357610fae36610f6d565b9190610fb8611cc9565b610fc0611866565b92806112dc575b50506003548110156112ca57610fdc81610d3c565b5090815490610fea82611cf8565b6003830180549365ffffffffffff9384861660018060a01b0361100f895183856115c5565b1615158061129f575b80611286575b611274576110348161102f42611dce565b6116b5565b5f5461104a90610745906001600160a01b031681565b96600460206040998a51928380926327f843b560e11b82525afa80156109165782915f91611255575b501691161161124457600183018054909861109e93929188906001600160a01b031691015192611fbb565b906110b3816002850154818082109118021890565b9687156112335760601c60ff1661122257926111db6111ce89946111a66111938b9687876108ae9f6111a18f9d8f9e6111e19f6110fd86600160601b60ff60601b19825416179055565b8a54855461111f91906001600160a01b0316885465ffffffffffff16916121f1565b8a5485546111389189916001600160a01b031690612271565b8a549454611156906001600160a01b0316965465ffffffffffff1690565b9761115f610426565b9384526020840152818301525196879160208301919091604080606083019480518452602081015160208501520151910152565b03601f1981018752866103e6565b6123dd565b6111bf6111b9855465ffffffffffff1690565b866124e6565b5494546001600160a01b031690565b915465ffffffffffff1690565b92612563565b81518381527f5cc28df3b54da9d06f805d87616ebf969c81310f2aa8369cb14ca50f815d411190602090a26108a060015f80516020612cee83398151915255565b8551633428e90760e01b8152600490fd5b865163167f871760e31b8152600490fd5b8551639ea153eb60e01b8152600490fd5b61126e915060203d60201161090f5761090081836103e6565b5f611073565b60405163b62b15c760e01b8152600490fd5b5061129361078542611dce565b868860301c161161101e565b506112c36107456112b76112b242611dce565b61169e565b60208b015190856115c5565b1515611018565b604051637822972360e11b8152600490fd5b6112ea929350810190611885565b905f80610fc7565b346101b3575f3660031901126101b35760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346101b3575f3660031901126101b3576020600554604051908152f35b346101b3575f3660031901126101b3576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346101b35760403660031901126101b3576024356001600160401b0381116101b3576113dc6113cb602092369060040161045d565b6113d442611dce565b6004356115c5565b6040516001600160a01b039091168152f35b346101b3575f3660031901126101b3576020604051620249f08152f35b346101b3575f3660031901126101b357602065ffffffffffff60045416604051908152f35b346101b35761143e36610f6d565b90611447611cc9565b61144f61190d565b918061158a575b50506003548210156112ca5761146b82610d3c565b506003815491019182549165ffffffffffff9160018060a01b036114938251858716856115c5565b16918215918215611561575b505061154f57330361153d576114b761078542611dce565b908260301c16111561152c5760601c60ff1661151a57805460ff60601b1916600160601b17905533907f7d3d269c851b72257a5194a401d151902e9be4347d555996dcff3ff86a077e925f80a3610b4160015f80516020612cee83398151915255565b604051633428e90760e01b8152600490fd5b60405162c457e560e81b8152600490fd5b604051635d154fe160e11b8152600490fd5b60405163dd1ebd9d60e01b8152600490fd5b6115829250906107459160206115796112b242611dce565b910151916115c5565b155f8061149f565b6115979250810190611926565b5f80611456565b346101b3575f3660031901126101b3575f546040516001600160a01b039091168152602090f35b5f9081526006602052604090206001600160a01b03926115e6929091611a26565b1690565b604051906115f78261037d565b60608252565b906020828203126101b35781356001600160401b03928382116101b35701906020828203126101b357604051926116338461037d565b82359081116101b357611646920161045d565b815290565b634e487b7160e01b5f52601160045260245ffd5b91909165ffffffffffff8080941691160191821161167957565b61164b565b908160209103126101b35751610f0781610359565b6040513d5f823e3d90fd5b65ffffffffffff9081165f19019190821161167957565b65ffffffffffff918216908216039190821161167957565b634e487b7160e01b5f525f60045260245ffd5b600354600160401b811015610398578060016116ff9201600355610d3c565b9190916117c2578051825560208101516001830180546001600160a01b0319166001600160a01b0392909216919091179055610433916117a89060a09060039060408501516002820155019261177565ffffffffffff606083015116859065ffffffffffff1665ffffffffffff19825416179055565b60808101516bffffffffffff00000000000085549160301b16906bffffffffffff00000000000019161784550151151590565b815460ff60601b191690151560601b60ff60601b16179055565b6116cd565b519081151582036101b357565b908160209103126101b357610f07906117c7565b8181029291811591840414171561167957565b906001820180921161167957565b9190820180921161167957565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b5f9081526002602090815260408083206001600160a01b03909416835292905220610f07929190611e00565b604051906118738261039d565b60606040838281528260208201520152565b906020828203126101b35781356001600160401b03928382116101b35701906060828203126101b357604051926118bb8461039d565b82358181116101b357826118d091850161045d565b845260208301358181116101b357826118ea91850161045d565b602085015260408301359081116101b357611905920161045d565b604082015290565b6040519061191a826103b8565b60606020838281520152565b906020828203126101b35781356001600160401b03928382116101b35701906040828203126101b3576040519261195c846103b8565b82358181116101b3578261197191850161045d565b845260208301359081116101b357611989920161045d565b602082015290565b8054821015610d74575f5260205f2001905f90565b6119af8161265f565b6001600160d01b038116156119d45760016119ca9201611991565b90549060031b1c90565b50505f90565b908160209103126101b3575163ffffffff811681036101b35790565b5f1981019190821161167957565b9190820391821161167957565b90600163ffffffff8093160191821161167957565b91805115611b0a5780602080611a41935183010191016119da565b91611a4c838261269f565b92611a5d845165ffffffffffff1690565b9065ffffffffffff8085169216828114611af15782119182611a9c575b5050611a8a57610f079250612959565b5050602001516001600160d01b031690565b909150611aa983546119f6565b63ffffffff831614918215611ac2575b50505f80611a7a565b611ae9919250611add611ad761078592611a11565b8561269f565b5165ffffffffffff1690565b115f80611ab9565b50505050602091909101516001600160d01b0316905090565b50610f0791612959565b9190916040818403126101b3578035611b2c816101fb565b9260208201356001600160401b0381116101b357610f07920161045d565b908160209103126101b35751610f07816101fb565b611b6b91810190611b14565b6040516302910f8b60e31b81526001600160a01b0392831660048201819052929160209182816024817f000000000000000000000000000000000000000000000000000000000000000088165afa908115610916575f91611cac575b5015611c9a5781611bfc600492611bdc6126e1565b5f80546001600160a01b0319166001600160a01b0389161790558661276e565b94604051928380926313c085b760e11b82525afa918215610916575f92611c6d575b5050161580611c63575b611c5157516104339015155f805460ff60a01b191691151560a01b60ff60a01b16919091179055565b60405163d2420f5960e01b8152600490fd5b5080511515611c28565b611c8c9250803d10611c93575b611c8481836103e6565b810190611b4a565b5f80611c1e565b503d611c7a565b6040516362df054560e01b8152600490fd5b611cc39150833d8511610d0d57610cff81836103e6565b5f611bc7565b5f80516020612cee8339815191526002815414611ce65760029055565b604051633ee5aeb560e01b8152600490fd5b604051635daf681960e11b815260609190911c60048201526001600160a01b036020826024817f000000000000000000000000000000000000000000000000000000000000000085165afa918215610916575f92611d6e575b5033911603611d5c57565b60405163227bf64d60e01b8152600490fd5b611d8891925060203d602011611c9357611c8481836103e6565b905f611d51565b90611d998261265f565b9180548015611dba575f190190611db08282611991565b6117c2575f905555565b634e487b7160e01b5f52603160045260245ffd5b65ffffffffffff90818111611de1571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b91805115611ec25780602080611e1b935183010191016119da565b91611e2683826128b3565b92611e37845165ffffffffffff1690565b9065ffffffffffff8085169216828114611eb65782119182611e6d575b5050611e6457610f0792506128a8565b50506020015190565b909150611e7a83546119f6565b63ffffffff831614918215611e93575b50505f80611e54565b611eae919250611add611ea861078592611a11565b856128b3565b115f80611e8a565b50505050506020015190565b50610f07916128a8565b81601f820112156101b357805190611ee382610442565b92611ef160405194856103e6565b828452602083830101116101b357815f9260208093018386015e8301015290565b906020828203126101b35781516001600160401b03928382116101b35701906040828203126101b35760405192611f48846103b8565b82518181116101b35782611f5d918501611ecc565b845260208301519081116101b3576119899201611ecc565b908160209103126101b3575190565b9081526001600160a01b03909116602082015265ffffffffffff9091166040820152608060608201819052610f0792910190611816565b92611fc461190d565b908051806121d7575b5050611fd842611dce565b5f54909490611ff190610745906001600160a01b031681565b93604051956327f843b560e11b875260209687816004818a5afa80156109165761202592610785925f926121bf57506116b5565b65ffffffffffff82169081109081156121a8575b8115612177575b5061216b578560049560405196878092630ce9b79360e41b82525afa948515610916576120929587915f9161214e575b50845190604051808099819463e02f693760e01b8352878b8a60048601611f84565b03916001600160a01b03165afa9384156109165761210a955f9561210d575b50926120f985936120ff936120f996869a6120f0610253836120db875f52600260205260405f2090565b9060018060a01b03165f5260205260405f2090565b9501519261183a565b90611a04565b818082109118021890565b91565b6120ff9295506120f994919361213b6120f9928a3d8c11612147575b61213381836103e6565b810190611f75565b969350939194506120b1565b503d612129565b6121659150823d8411611c9357611c8481836103e6565b5f612070565b5050505050505f905f90565b90506121a1610785612195876120db875f52600160205260405f2090565b5465ffffffffffff1690565b115f612040565b90506121b661078542611dce565b81101590612039565b6109089192508a3d8c1161090f5761090081836103e6565b6121ea9250602080918301019101611f12565b5f80611fcd565b919091805f52600160205265ffffffffffff806122218560405f209060018060a01b03165f5260205260405f2090565b54169083161161223057505050565b61043392612258915f52600160205260405f209060018060a01b03165f5260205260405f2090565b9065ffffffffffff1665ffffffffffff19825416179055565b9190825f5260026020526122c961025361229e8360405f209060018060a01b03165f5260205260405f2090565b926122a842611dce565b955f52600260205260405f209060018060a01b03165f5260205260405f2090565b91820180921161167957600181019081541561236d575b6122e98161286f565b5094908354956122f8846119a6565b5081612358575b50156123375750505f198301928311611679576104339261231f91611991565b90919082549060031b91821b915f19901b1916179055565b61043394612351926001600160d01b039091169190612ae5565b5050612936565b65ffffffffffff83811691161490505f6122ff565b61237682612909565b6122e0565b60606020610f07938184526001600160401b03815116828501520151916040808201520190611816565b919360a093610f07969565ffffffffffff938552600180871b0316602085015260408401521660608201528160808201520190611816565b929390600460206123fa6107456107455f5460018060a01b031690565b604051630ce9b79360e41b815292839182905afa90811561091657610e9e91612478915f916124c7575b506001600160a01b031693612437610435565b6001600160401b037f00000000000000000000000000000000000000000000000000000000000000001681529060208201526040519283916020830161237b565b823b156101b3575f946124a386926040519889978896879563724ab0f760e11b8752600487016123a5565b03925af18015610916576124b45750565b806124c1610433926103d3565b806101a9565b6124e0915060203d602011611c9357611c8481836103e6565b5f612424565b65ffffffffffff9160446020925f60018060a01b038154166040519687958694631c9e38c760e21b865260048601521660248401525af180156109165761252a5750565b6125429060203d6020116121475761213381836103e6565b50565b811561254f570490565b634e487b7160e01b5f52601260045260245ffd5b92905f549060ff8260a01c1661257b575b5050505050565b6040516313c085b760e11b815291602090839060049082906001600160a01b03165afa918215610916575f92612638575b5060405163065c1e0360e01b6020820190815260248201969096526001600160a01b039091166044820152606481019390935265ffffffffffff90911660848301526126058260a481015b03601f1981018452836103e6565b6202a15c5a10612626575f928380935192620249f0f1505f80808080612574565b604051632153f33560e21b8152600490fd5b61260592506126586125f79160203d602011611c9357611c8481836103e6565b92506125ac565b80548061266c5750505f90565b5f19918183810111611679575f5260205f2001015460301c90565b60405190612694826103b8565b5f6020838281520152565b906126b2916126ac612687565b50612a38565b65ffffffffffff81511690602060018060d01b0391015116604051916126d7836103b8565b8252602082015290565b6126e9612a70565b6126f1612a70565b60015f80516020612cee83398151915255565b604051906127118261037d565b5f8252565b80910390606082126101b3576020604051926127318461039d565b126101b35760409081516127448161037d565b61274d826117c7565b81528352602081015161275f81610359565b60208401520151604082015290565b9060049061277a612704565b508051612791602092838080948301019101612716565b6040516327f843b560e11b815290949093849182906001600160a01b03165afa918215610916575f92612850575b508201906127d3825165ffffffffffff1690565b65ffffffffffff9182169116101561283e5760408201600381511061282c57612822612808612828935165ffffffffffff1690565b65ffffffffffff1665ffffffffffff196004541617600455565b51600555565b5190565b6040516354f778f360e01b8152600490fd5b6040516367d5e3df60e11b8152600490fd5b816128689293503d841161090f5761090081836103e6565b905f6127bf565b8054806128805750505f905f905f90565b5f19918183810111611679575f5260205f2001015460019165ffffffffffff82169160301c90565b906119af9082612959565b906128ca6128eb916128c3612687565b5083612a38565b91600165ffffffffffff845116936020828060d01b03910151169101611991565b905490604051926128fb846103b8565b835260031b1c602082015290565b8054600160401b8110156103985761292691600182018155611991565b8154905f199060031b1b19169055565b90815491600160401b831015610398578261231f91600161043395018155611991565b908154905f9180600581116129ef575b50915b8281106129a2575050806129805750505f90565b610f079161299061299b926119f6565b905f5260205f200190565b5460301c90565b90918082169080831860011c820180921161167957845f5265ffffffffffff808360205f20015416908516105f146129dd5750915b9061296c565b9291506129e9906117fb565b906129d7565b906129f982612bc2565b820391821161167957845f5265ffffffffffff808360205f20015416908416105f14612a2757505b5f612969565b9250612a32906117fb565b91612a21565b90612a4b91612a45612687565b50611991565b5060405190612a59826103b8565b5465ffffffffffff8116825260301c602082015290565b60ff5f80516020612d0e8339815191525460401c1615612a8c57565b604051631afcd79f60e31b8152600490fd5b8054600160401b81101561039857612abb91600182018155611991565b6117c257815160209092015160301b65ffffffffffff191665ffffffffffff909216919091179055565b80549293928015612b9857612afc612b07916119f6565b825f5260205f200190565b9182549265ffffffffffff91828516928116808411612b8657879303612b4d5750612b4692509065ffffffffffff82549181199060301b169116179055565b60301c9190565b915050612b8191612b6d612b5f610435565b65ffffffffffff9093168352565b6001600160d01b0386166020830152612a9e565b612b46565b604051632520601d60e01b8152600490fd5b5090612bbd91612ba9612b5f610435565b6001600160d01b0385166020830152612a9e565b5f9190565b6001811115610f0757600181600160801b811015612cdb575b612c83612c79612c6f612c65612c5b612c51612c8f97600488600160401b612c8a9a1015612cce575b640100000000811015612cc1575b62010000811015612cb4575b610100811015612ca8575b6010811015612c9c575b1015612c94575b60030260011c612c4a818b612545565b0160011c90565b612c4a818a612545565b612c4a8189612545565b612c4a8188612545565b612c4a8187612545565b612c4a8186612545565b8093612545565b821190565b900390565b60011b612c3a565b811c9160021b91612c33565b60081c91811b91612c29565b60101c9160081b91612c1e565b60201c9160101b91612c12565b60401c9160201b91612c04565b50600160401b9050608082901c612bdb56fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212201bcf30a06b9aaf2a336ad9df6e0e4e65761b3999b09b4fe42a86127acc80d47a64736f6c63430008190033","sourceMap":"707:8662:101:-:0;;;;;;;;;;;;;-1:-1:-1;;707:8662:101;;;;-1:-1:-1;;;;;707:8662:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;8837:64:22;707:8662:101;;;;;;;;;7896:76:22;;707:8662:101;;;;7985:34:22;7981:146;;-1:-1:-1;525:17:76;;;707:8662:101;525:17:76;707:8662:101;552:12:76;2353:28:99;;2391:53;;1620:34:101;;;;707:8662;;;;;;;;;;;;;;;;;;;;;;;;2353:28:99;707:8662:101;;;;;;;;;;2391:53:99;707:8662:101;;;;;;;;;;;;;;;;;;;;;7981:146:22;-1:-1:-1;;;;;;707:8662:101;;;;;;;;;;;;;8087:29:22;;707:8662:101;;8087:29:22;7981:146;;;;;7896:76;707:8662:101;;-1:-1:-1;;;7938:23:22;;;;;707:8662:101;-1:-1:-1;707:8662:101;;;;;;-1:-1:-1;707:8662:101;;;;;-1:-1:-1;707:8662:101;;;;-1:-1:-1;;;;;707:8662:101;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c8063103f2907146101a45780631a2be2c41461019f578063267de1f31461019a5780632964f8dc146101955780632c9d45b3146101905780632dd310001461018b57806331ce4dfe1461018657806334d098ea14610181578063439fab911461017c578063545ce389146101775780638f42f9ab146101725780639168f9d21461016d5780639a896551146101685780639f86fd8514610163578063aa8e64891461015e578063aab3595f14610159578063b94c386e14610154578063bb24fe8a1461014f578063bc6eac5b1461014a578063c0cd7c3e14610145578063cd05b8a114610140578063d5c24e1a1461013b578063e054e08b14610136578063f9268d18146101315763fbfa77cf1461012c575f80fd5b61159e565b611430565b61140b565b6113ee565b611396565b611352565b611335565b6112f2565b610fa0565b610f48565b610f0a565b610e04565b610d79565b61094e565b610931565b610695565b61055d565b61050c565b6104a3565b610315565b6102d1565b6102b5565b610260565b61020c565b6101b7565b5f9103126101b357565b5f80fd5b346101b3575f3660031901126101b3576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6001600160a01b038116036101b357565b346101b35760403660031901126101b3576020610258610253602435610231816101fb565b6004355f526002845260405f209060018060a01b03165f5260205260405f2090565b6119a6565b604051908152f35b346101b35760403660031901126101b357602065ffffffffffff6102ab602435610289816101fb565b6004355f526001845260405f209060018060a01b03165f5260205260405f2090565b5416604051908152f35b346101b3575f3660031901126101b3576020604051614e208152f35b346101b3575f3660031901126101b3576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346101b3575f3660031901126101b3576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b65ffffffffffff8116036101b357565b634e487b7160e01b5f52604160045260245ffd5b602081019081106001600160401b0382111761039857604052565b610369565b606081019081106001600160401b0382111761039857604052565b604081019081106001600160401b0382111761039857604052565b6001600160401b03811161039857604052565b90601f801991011681019081106001600160401b0382111761039857604052565b6040519060c082018281106001600160401b0382111761039857604052565b604051906104338261039d565b565b60405190610433826103b8565b6001600160401b03811161039857601f01601f191660200190565b81601f820112156101b35780359061047482610442565b9261048260405194856103e6565b828452602083830101116101b357815f926020809301838601378301015290565b346101b35760603660031901126101b3576024356104c081610359565b604435906001600160401b0382116101b3576105036104e5602093369060040161045d565b6004355f90815260068552604090206001600160a01b039390611a26565b16604051908152f35b346101b3575f3660031901126101b357602060ff5f5460a01c166040519015158152f35b9181601f840112156101b3578235916001600160401b0383116101b357602083818601950101116101b357565b346101b35760203660031901126101b3576001600160401b036004358181116101b35761058e903690600401610530565b5f80516020612d0e833981519152549260ff8460401c161593168015908161068d575b6001149081610683575b15908161067a575b50610668575f80516020612d0e833981519152805467ffffffffffffffff191660011790556105f6918361064457611b5f565b6105fc57005b5f80516020612d0e833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b5f80516020612d0e833981519152805460ff60401b1916600160401b179055611b5f565b60405163f92ee8a960e01b8152600490fd5b9050155f6105c3565b303b1591506105bb565b8491506105b1565b346101b35760a03660031901126101b357602435600480356106b6836101fb565b604435926064356106c681610359565b6084356001600160401b0381116101b3576106e49036908601610530565b94906106ee611cc9565b6106f785611cf8565b6106ff6115ea565b958061091b575b505061071142611dce565b9061072c610725825465ffffffffffff1690565b809361165f565b5f5490969061075190610745906001600160a01b031681565b6001600160a01b031690565b968260206040998a51928380926327f843b560e11b82525afa80156109165761079092610785925f926108e5575b506116b5565b65ffffffffffff1690565b65ffffffffffff85169081109081156108cf575b506108c0576107b69051848688611fbb565b50968780821091180280881897146108b2576108ae610887878988887f3cb7f4ff6cecf74cee0eb9ae3ebf8933fa60a53014cce52f96da72a78dba8464896108068a61080142611dce565b61165f565b92600354978894610857610818610407565b8881526001600160a01b0385166020820152808b018a905265ffffffffffff8616606082015265ffffffffffff831660808201525f60a08201526116e0565b885197885265ffffffffffff938416602089015290921660408701526001600160a01b0316949081906060820190565b0390a46108a060015f80516020612cee83398151915255565b519081529081906020820190565b0390f35b855163167f871760e31b8152fd5b508551631357ac9160e11b8152fd5b90506108dd61078542611dce565b11155f6107a4565b61090891925060203d60201161090f575b61090081836103e6565b81019061167e565b905f61077f565b503d6108f6565b611693565b6109299296508101906115fd565b935f80610706565b346101b3575f3660031901126101b3576020600354604051908152f35b346101b35760603660031901126101b35760048035906bffffffffffffffffffffffff821682036101b357602435610985816101fb565b6044356001600160401b0381116101b3576109a39036908401610530565b906109ac611cc9565b6109b46115ea565b5081610d14575b5050604080516302910f8b60e31b8152338185019081526001600160a01b0395929491602091829082908190830103818a7f0000000000000000000000000000000000000000000000000000000000000000165afa908115610916575f91610ce7575b5015610cd8575f54610a59906001600160a01b0316936bffffffffffffffffffffffff166bffffffffffffffffffffffff193360601b161790565b95610a74610a6f885f52600660205260405f2090565b61286f565b50949015610c6e57610a8861078542611dce565b65ffffffffffff9586161115610c3857610ab2610aad895f52600660205260405f2090565b611d8f565b505b610ad7610745610745610745610ad28c5f52600660205260405f2090565b61265f565b91808716928303610b43575b505050505050610b28907f7b0b759b513b299fd2811f51926dca8854222a675557e8d544ce0933bf5b7570925b516001600160a01b0390911681529081906020820190565b0390a2610b4160015f80516020612cee83398151915255565b005b610b5a8998959796985f52600660205260405f2090565b911692845163186a323160e21b815281818981885afa908115610916575f91610c1b575b5081600554958751998a80926327f843b560e11b82525afa9081156109165789610be3610bf5977f7b0b759b513b299fd2811f51926dca8854222a675557e8d544ce0933bf5b75709c610bea95610b289d610bef985f92610bfe575b505016906117e8565b9116611809565b611dce565b90612ae5565b82958495610ae3565b610c149250803d1061090f5761090081836103e6565b5f80610bda565b610c329150823d841161090f5761090081836103e6565b5f610b7e565b610c56610745610745610745610ad28c5f52600660205260405f2090565b82871603610ab457865163a741a04560e01b81528490fd5b5093949385169250508115610cca575091610b2891610cc37f7b0b759b513b299fd2811f51926dca8854222a675557e8d544ce0933bf5b757094610cba875f52600660205260405f2090565b610bef42611dce565b5050610b10565b825163a741a04560e01b8152fd5b5083516323d53b9760e21b8152fd5b610d079150823d8411610d0d575b610cff81836103e6565b8101906117d4565b5f610a1e565b503d610cf5565b610d20918101906115fd565b505f806109bb565b634e487b7160e01b5f52603260045260245ffd5b600354811015610d745760035f5260021b7fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b01905f90565b610d28565b346101b35760203660031901126101b3576004356003548110156101b357610da090610d3c565b50805460018201546002830154600390930154604080519384526001600160a01b0390921660208401529082019290925265ffffffffffff808316606080840191909152603084901c90911660808301529190911c60ff16151560a082015260c090f35b346101b3576040806003193601126101b357600435610e22816101fb565b602435906001600160401b0382116101b3575f8091610e48610eac943690600401610530565b908187519283928337810184815203915af43d15610eb457610e9e3d610e6d81610442565b90610e7a865192836103e6565b81523d5f602083013e5b845194859315156020850152808401526060830190611816565b03601f1981018352826103e6565b805190602001fd5b610e9e6060610e84565b9060806003198301126101b35760043591602435610edb816101fb565b91604435610ee881610359565b91606435906001600160401b0382116101b357610f079160040161045d565b90565b346101b3576020610258610f43610f2036610ebe565b939190925f526002865260405f209060018060a01b03165f5260205260405f2090565b611e00565b346101b3576020610f64610f5b36610ebe565b92919091611fbb565b50604051908152f35b9060406003198301126101b35760043591602435906001600160401b0382116101b357610f9c91600401610530565b9091565b346101b357610fae36610f6d565b9190610fb8611cc9565b610fc0611866565b92806112dc575b50506003548110156112ca57610fdc81610d3c565b5090815490610fea82611cf8565b6003830180549365ffffffffffff9384861660018060a01b0361100f895183856115c5565b1615158061129f575b80611286575b611274576110348161102f42611dce565b6116b5565b5f5461104a90610745906001600160a01b031681565b96600460206040998a51928380926327f843b560e11b82525afa80156109165782915f91611255575b501691161161124457600183018054909861109e93929188906001600160a01b031691015192611fbb565b906110b3816002850154818082109118021890565b9687156112335760601c60ff1661122257926111db6111ce89946111a66111938b9687876108ae9f6111a18f9d8f9e6111e19f6110fd86600160601b60ff60601b19825416179055565b8a54855461111f91906001600160a01b0316885465ffffffffffff16916121f1565b8a5485546111389189916001600160a01b031690612271565b8a549454611156906001600160a01b0316965465ffffffffffff1690565b9761115f610426565b9384526020840152818301525196879160208301919091604080606083019480518452602081015160208501520151910152565b03601f1981018752866103e6565b6123dd565b6111bf6111b9855465ffffffffffff1690565b866124e6565b5494546001600160a01b031690565b915465ffffffffffff1690565b92612563565b81518381527f5cc28df3b54da9d06f805d87616ebf969c81310f2aa8369cb14ca50f815d411190602090a26108a060015f80516020612cee83398151915255565b8551633428e90760e01b8152600490fd5b865163167f871760e31b8152600490fd5b8551639ea153eb60e01b8152600490fd5b61126e915060203d60201161090f5761090081836103e6565b5f611073565b60405163b62b15c760e01b8152600490fd5b5061129361078542611dce565b868860301c161161101e565b506112c36107456112b76112b242611dce565b61169e565b60208b015190856115c5565b1515611018565b604051637822972360e11b8152600490fd5b6112ea929350810190611885565b905f80610fc7565b346101b3575f3660031901126101b35760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346101b3575f3660031901126101b3576020600554604051908152f35b346101b3575f3660031901126101b3576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346101b35760403660031901126101b3576024356001600160401b0381116101b3576113dc6113cb602092369060040161045d565b6113d442611dce565b6004356115c5565b6040516001600160a01b039091168152f35b346101b3575f3660031901126101b3576020604051620249f08152f35b346101b3575f3660031901126101b357602065ffffffffffff60045416604051908152f35b346101b35761143e36610f6d565b90611447611cc9565b61144f61190d565b918061158a575b50506003548210156112ca5761146b82610d3c565b506003815491019182549165ffffffffffff9160018060a01b036114938251858716856115c5565b16918215918215611561575b505061154f57330361153d576114b761078542611dce565b908260301c16111561152c5760601c60ff1661151a57805460ff60601b1916600160601b17905533907f7d3d269c851b72257a5194a401d151902e9be4347d555996dcff3ff86a077e925f80a3610b4160015f80516020612cee83398151915255565b604051633428e90760e01b8152600490fd5b60405162c457e560e81b8152600490fd5b604051635d154fe160e11b8152600490fd5b60405163dd1ebd9d60e01b8152600490fd5b6115829250906107459160206115796112b242611dce565b910151916115c5565b155f8061149f565b6115979250810190611926565b5f80611456565b346101b3575f3660031901126101b3575f546040516001600160a01b039091168152602090f35b5f9081526006602052604090206001600160a01b03926115e6929091611a26565b1690565b604051906115f78261037d565b60608252565b906020828203126101b35781356001600160401b03928382116101b35701906020828203126101b357604051926116338461037d565b82359081116101b357611646920161045d565b815290565b634e487b7160e01b5f52601160045260245ffd5b91909165ffffffffffff8080941691160191821161167957565b61164b565b908160209103126101b35751610f0781610359565b6040513d5f823e3d90fd5b65ffffffffffff9081165f19019190821161167957565b65ffffffffffff918216908216039190821161167957565b634e487b7160e01b5f525f60045260245ffd5b600354600160401b811015610398578060016116ff9201600355610d3c565b9190916117c2578051825560208101516001830180546001600160a01b0319166001600160a01b0392909216919091179055610433916117a89060a09060039060408501516002820155019261177565ffffffffffff606083015116859065ffffffffffff1665ffffffffffff19825416179055565b60808101516bffffffffffff00000000000085549160301b16906bffffffffffff00000000000019161784550151151590565b815460ff60601b191690151560601b60ff60601b16179055565b6116cd565b519081151582036101b357565b908160209103126101b357610f07906117c7565b8181029291811591840414171561167957565b906001820180921161167957565b9190820180921161167957565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b5f9081526002602090815260408083206001600160a01b03909416835292905220610f07929190611e00565b604051906118738261039d565b60606040838281528260208201520152565b906020828203126101b35781356001600160401b03928382116101b35701906060828203126101b357604051926118bb8461039d565b82358181116101b357826118d091850161045d565b845260208301358181116101b357826118ea91850161045d565b602085015260408301359081116101b357611905920161045d565b604082015290565b6040519061191a826103b8565b60606020838281520152565b906020828203126101b35781356001600160401b03928382116101b35701906040828203126101b3576040519261195c846103b8565b82358181116101b3578261197191850161045d565b845260208301359081116101b357611989920161045d565b602082015290565b8054821015610d74575f5260205f2001905f90565b6119af8161265f565b6001600160d01b038116156119d45760016119ca9201611991565b90549060031b1c90565b50505f90565b908160209103126101b3575163ffffffff811681036101b35790565b5f1981019190821161167957565b9190820391821161167957565b90600163ffffffff8093160191821161167957565b91805115611b0a5780602080611a41935183010191016119da565b91611a4c838261269f565b92611a5d845165ffffffffffff1690565b9065ffffffffffff8085169216828114611af15782119182611a9c575b5050611a8a57610f079250612959565b5050602001516001600160d01b031690565b909150611aa983546119f6565b63ffffffff831614918215611ac2575b50505f80611a7a565b611ae9919250611add611ad761078592611a11565b8561269f565b5165ffffffffffff1690565b115f80611ab9565b50505050602091909101516001600160d01b0316905090565b50610f0791612959565b9190916040818403126101b3578035611b2c816101fb565b9260208201356001600160401b0381116101b357610f07920161045d565b908160209103126101b35751610f07816101fb565b611b6b91810190611b14565b6040516302910f8b60e31b81526001600160a01b0392831660048201819052929160209182816024817f000000000000000000000000000000000000000000000000000000000000000088165afa908115610916575f91611cac575b5015611c9a5781611bfc600492611bdc6126e1565b5f80546001600160a01b0319166001600160a01b0389161790558661276e565b94604051928380926313c085b760e11b82525afa918215610916575f92611c6d575b5050161580611c63575b611c5157516104339015155f805460ff60a01b191691151560a01b60ff60a01b16919091179055565b60405163d2420f5960e01b8152600490fd5b5080511515611c28565b611c8c9250803d10611c93575b611c8481836103e6565b810190611b4a565b5f80611c1e565b503d611c7a565b6040516362df054560e01b8152600490fd5b611cc39150833d8511610d0d57610cff81836103e6565b5f611bc7565b5f80516020612cee8339815191526002815414611ce65760029055565b604051633ee5aeb560e01b8152600490fd5b604051635daf681960e11b815260609190911c60048201526001600160a01b036020826024817f000000000000000000000000000000000000000000000000000000000000000085165afa918215610916575f92611d6e575b5033911603611d5c57565b60405163227bf64d60e01b8152600490fd5b611d8891925060203d602011611c9357611c8481836103e6565b905f611d51565b90611d998261265f565b9180548015611dba575f190190611db08282611991565b6117c2575f905555565b634e487b7160e01b5f52603160045260245ffd5b65ffffffffffff90818111611de1571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b91805115611ec25780602080611e1b935183010191016119da565b91611e2683826128b3565b92611e37845165ffffffffffff1690565b9065ffffffffffff8085169216828114611eb65782119182611e6d575b5050611e6457610f0792506128a8565b50506020015190565b909150611e7a83546119f6565b63ffffffff831614918215611e93575b50505f80611e54565b611eae919250611add611ea861078592611a11565b856128b3565b115f80611e8a565b50505050506020015190565b50610f07916128a8565b81601f820112156101b357805190611ee382610442565b92611ef160405194856103e6565b828452602083830101116101b357815f9260208093018386015e8301015290565b906020828203126101b35781516001600160401b03928382116101b35701906040828203126101b35760405192611f48846103b8565b82518181116101b35782611f5d918501611ecc565b845260208301519081116101b3576119899201611ecc565b908160209103126101b3575190565b9081526001600160a01b03909116602082015265ffffffffffff9091166040820152608060608201819052610f0792910190611816565b92611fc461190d565b908051806121d7575b5050611fd842611dce565b5f54909490611ff190610745906001600160a01b031681565b93604051956327f843b560e11b875260209687816004818a5afa80156109165761202592610785925f926121bf57506116b5565b65ffffffffffff82169081109081156121a8575b8115612177575b5061216b578560049560405196878092630ce9b79360e41b82525afa948515610916576120929587915f9161214e575b50845190604051808099819463e02f693760e01b8352878b8a60048601611f84565b03916001600160a01b03165afa9384156109165761210a955f9561210d575b50926120f985936120ff936120f996869a6120f0610253836120db875f52600260205260405f2090565b9060018060a01b03165f5260205260405f2090565b9501519261183a565b90611a04565b818082109118021890565b91565b6120ff9295506120f994919361213b6120f9928a3d8c11612147575b61213381836103e6565b810190611f75565b969350939194506120b1565b503d612129565b6121659150823d8411611c9357611c8481836103e6565b5f612070565b5050505050505f905f90565b90506121a1610785612195876120db875f52600160205260405f2090565b5465ffffffffffff1690565b115f612040565b90506121b661078542611dce565b81101590612039565b6109089192508a3d8c1161090f5761090081836103e6565b6121ea9250602080918301019101611f12565b5f80611fcd565b919091805f52600160205265ffffffffffff806122218560405f209060018060a01b03165f5260205260405f2090565b54169083161161223057505050565b61043392612258915f52600160205260405f209060018060a01b03165f5260205260405f2090565b9065ffffffffffff1665ffffffffffff19825416179055565b9190825f5260026020526122c961025361229e8360405f209060018060a01b03165f5260205260405f2090565b926122a842611dce565b955f52600260205260405f209060018060a01b03165f5260205260405f2090565b91820180921161167957600181019081541561236d575b6122e98161286f565b5094908354956122f8846119a6565b5081612358575b50156123375750505f198301928311611679576104339261231f91611991565b90919082549060031b91821b915f19901b1916179055565b61043394612351926001600160d01b039091169190612ae5565b5050612936565b65ffffffffffff83811691161490505f6122ff565b61237682612909565b6122e0565b60606020610f07938184526001600160401b03815116828501520151916040808201520190611816565b919360a093610f07969565ffffffffffff938552600180871b0316602085015260408401521660608201528160808201520190611816565b929390600460206123fa6107456107455f5460018060a01b031690565b604051630ce9b79360e41b815292839182905afa90811561091657610e9e91612478915f916124c7575b506001600160a01b031693612437610435565b6001600160401b037f00000000000000000000000000000000000000000000000000000000000000001681529060208201526040519283916020830161237b565b823b156101b3575f946124a386926040519889978896879563724ab0f760e11b8752600487016123a5565b03925af18015610916576124b45750565b806124c1610433926103d3565b806101a9565b6124e0915060203d602011611c9357611c8481836103e6565b5f612424565b65ffffffffffff9160446020925f60018060a01b038154166040519687958694631c9e38c760e21b865260048601521660248401525af180156109165761252a5750565b6125429060203d6020116121475761213381836103e6565b50565b811561254f570490565b634e487b7160e01b5f52601260045260245ffd5b92905f549060ff8260a01c1661257b575b5050505050565b6040516313c085b760e11b815291602090839060049082906001600160a01b03165afa918215610916575f92612638575b5060405163065c1e0360e01b6020820190815260248201969096526001600160a01b039091166044820152606481019390935265ffffffffffff90911660848301526126058260a481015b03601f1981018452836103e6565b6202a15c5a10612626575f928380935192620249f0f1505f80808080612574565b604051632153f33560e21b8152600490fd5b61260592506126586125f79160203d602011611c9357611c8481836103e6565b92506125ac565b80548061266c5750505f90565b5f19918183810111611679575f5260205f2001015460301c90565b60405190612694826103b8565b5f6020838281520152565b906126b2916126ac612687565b50612a38565b65ffffffffffff81511690602060018060d01b0391015116604051916126d7836103b8565b8252602082015290565b6126e9612a70565b6126f1612a70565b60015f80516020612cee83398151915255565b604051906127118261037d565b5f8252565b80910390606082126101b3576020604051926127318461039d565b126101b35760409081516127448161037d565b61274d826117c7565b81528352602081015161275f81610359565b60208401520151604082015290565b9060049061277a612704565b508051612791602092838080948301019101612716565b6040516327f843b560e11b815290949093849182906001600160a01b03165afa918215610916575f92612850575b508201906127d3825165ffffffffffff1690565b65ffffffffffff9182169116101561283e5760408201600381511061282c57612822612808612828935165ffffffffffff1690565b65ffffffffffff1665ffffffffffff196004541617600455565b51600555565b5190565b6040516354f778f360e01b8152600490fd5b6040516367d5e3df60e11b8152600490fd5b816128689293503d841161090f5761090081836103e6565b905f6127bf565b8054806128805750505f905f905f90565b5f19918183810111611679575f5260205f2001015460019165ffffffffffff82169160301c90565b906119af9082612959565b906128ca6128eb916128c3612687565b5083612a38565b91600165ffffffffffff845116936020828060d01b03910151169101611991565b905490604051926128fb846103b8565b835260031b1c602082015290565b8054600160401b8110156103985761292691600182018155611991565b8154905f199060031b1b19169055565b90815491600160401b831015610398578261231f91600161043395018155611991565b908154905f9180600581116129ef575b50915b8281106129a2575050806129805750505f90565b610f079161299061299b926119f6565b905f5260205f200190565b5460301c90565b90918082169080831860011c820180921161167957845f5265ffffffffffff808360205f20015416908516105f146129dd5750915b9061296c565b9291506129e9906117fb565b906129d7565b906129f982612bc2565b820391821161167957845f5265ffffffffffff808360205f20015416908416105f14612a2757505b5f612969565b9250612a32906117fb565b91612a21565b90612a4b91612a45612687565b50611991565b5060405190612a59826103b8565b5465ffffffffffff8116825260301c602082015290565b60ff5f80516020612d0e8339815191525460401c1615612a8c57565b604051631afcd79f60e31b8152600490fd5b8054600160401b81101561039857612abb91600182018155611991565b6117c257815160209092015160301b65ffffffffffff191665ffffffffffff909216919091179055565b80549293928015612b9857612afc612b07916119f6565b825f5260205f200190565b9182549265ffffffffffff91828516928116808411612b8657879303612b4d5750612b4692509065ffffffffffff82549181199060301b169116179055565b60301c9190565b915050612b8191612b6d612b5f610435565b65ffffffffffff9093168352565b6001600160d01b0386166020830152612a9e565b612b46565b604051632520601d60e01b8152600490fd5b5090612bbd91612ba9612b5f610435565b6001600160d01b0385166020830152612a9e565b5f9190565b6001811115610f0757600181600160801b811015612cdb575b612c83612c79612c6f612c65612c5b612c51612c8f97600488600160401b612c8a9a1015612cce575b640100000000811015612cc1575b62010000811015612cb4575b610100811015612ca8575b6010811015612c9c575b1015612c94575b60030260011c612c4a818b612545565b0160011c90565b612c4a818a612545565b612c4a8189612545565b612c4a8188612545565b612c4a8187612545565b612c4a8186612545565b8093612545565b821190565b900390565b60011b612c3a565b811c9160021b91612c33565b60081c91811b91612c29565b60101c9160081b91612c1e565b60201c9160101b91612c12565b60401c9160201b91612c04565b50600160401b9050608082901c612bdb56fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212201bcf30a06b9aaf2a336ad9df6e0e4e65761b3999b09b4fe42a86127acc80d47a64736f6c63430008190033","sourceMap":"707:8662:101:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;707:8662:101;;;;;;1435:38:99;-1:-1:-1;;;;;707:8662:101;;;;;;;-1:-1:-1;;;;;707:8662:101;;;;;:::o;:::-;;;;;;-1:-1:-1;;707:8662:101;;;;;2936:47:99;:38;707:8662:101;;;;;:::i;:::-;;;-1:-1:-1;707:8662:101;2936:16:99;707:8662:101;;;-1:-1:-1;707:8662:101;;;;;;;;;;;;;;;;;2936:38:99;:47;:::i;:::-;707:8662:101;;;;;;;;;;;;-1:-1:-1;;707:8662:101;;;;;;1788:109:99;707:8662:101;;;;;:::i;:::-;;;-1:-1:-1;707:8662:101;1788:109:99;707:8662:101;;;-1:-1:-1;707:8662:101;;;;;;;;;;;;;;;;;1788:109:99;707:8662:101;;;;;;;;;;;;;;-1:-1:-1;;707:8662:101;;;;;;;1374:6:99;707:8662:101;;;;;;;;;-1:-1:-1;;707:8662:101;;;;;;1528:51:99;-1:-1:-1;;;;;707:8662:101;;;;;;;;;;;;-1:-1:-1;;707:8662:101;;;;;;322:32:76;-1:-1:-1;;;;;707:8662:101;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;707:8662:101;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;-1:-1:-1;;;;;707:8662:101;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;707:8662:101;;;;;;;:::o;:::-;-1:-1:-1;;;;;707:8662:101;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;707:8662:101;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;707:8662:101;;;;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;:::i;:::-;-1:-1:-1;;;;;707:8662:101;;;;;;-1:-1:-1;;707:8662:101;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;707:8662:101;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;707:8662:101;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;707:8662:101;;;;2016:56;707:8662;;;;;;;;:::i;:::-;;;-1:-1:-1;707:8662:101;;;2016:9;707:8662;;;;;-1:-1:-1;;;;;707:8662:101;;2016:56;:::i;:::-;707:8662;;;;;;;;;;;;;-1:-1:-1;;707:8662:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;707:8662:101;;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;707:8662:101;;;;-1:-1:-1;;;;;707:8662:101;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;707:8662:101;;;;;;;4301:16:22;707:8662:101;;4726:16:22;;:34;;;;707:8662:101;4805:1:22;4790:16;:50;;;;707:8662:101;4855:13:22;:30;;;;707:8662:101;4851:91:22;;;-1:-1:-1;;;;;;;;;;;707:8662:101;;-1:-1:-1;;707:8662:101;;;;;718:4:76;;4951:18:22;4979:67;;718:4:76;:::i;:::-;5066:101:22;;707:8662:101;5066:101:22;-1:-1:-1;;;;;;;;;;;707:8662:101;;-1:-1:-1;;;;707:8662:101;;;;;-1:-1:-1;707:8662:101;;5142:14:22;;707:8662:101;;5142:14:22;707:8662:101;4979:67:22;-1:-1:-1;;;;;;;;;;;707:8662:101;;-1:-1:-1;;;;707:8662:101;-1:-1:-1;;;707:8662:101;;;718:4:76;:::i;4851:91:22:-;707:8662:101;;-1:-1:-1;;;4908:23:22;;707:8662:101;;4908:23:22;4855:30;4872:13;;;4855:30;;;4790:50;4818:4;4810:25;:30;;-1:-1:-1;4790:50:22;;4726:34;;;-1:-1:-1;4726:34:22;;707:8662:101;;;;;;-1:-1:-1;;707:8662:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;707:8662:101;;;;;;;;;;;:::i;:::-;3361:103:26;;;;:::i;:::-;2123:10:99;;;:::i;:::-;707:8662:101;;:::i;:::-;2666:16;;2662:105;;707:8662;837:15:68;;819:34;837:15;819:34;:::i;:::-;707:8662:101;2813:31;707:8662;;;;;;;;2813:31;;;:::i;:::-;-1:-1:-1;707:8662:101;;;;2847:27;;:13;;-1:-1:-1;;;;;707:8662:101;2847:13;707:8662;;-1:-1:-1;;;;;707:8662:101;;;2847:27;707:8662;;;;;;;;;;;;;;2847:29;;;;;;;;2794:82;2847:29;2813:63;2847:29;-1:-1:-1;2847:29:101;;;707:8662;2813:63;;:::i;:::-;707:8662;;;;2794:82;707:8662;;;2794:82;;;:138;;;;;707:8662;2777:223;;;3248:62:99;3104:37:101;;3248:62:99;;;;:::i;:::-;3463:5:63;;;;;;3066;;707:8662:101;3060:42:63;;;3166:11:101;;3162:68;;707:8662;3671:86;837:15:68;;;;3671:86:101;837:15:68;3262:31:101;837:15:68;819:34;837:15;819:34;:::i;:::-;3262:31:101;:::i;:::-;707:8662;3317:13;707:8662;;;;3347:308;707:8662;;:::i;:::-;;;;-1:-1:-1;;;;;707:8662:101;;;3379:266;;707:8662;3379:266;;;707:8662;;;;;;;3379:266;;707:8662;;;;;3379:266;;707:8662;-1:-1:-1;707:8662:101;3379:266;;707:8662;3347:308;:::i;:::-;707:8662;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;707:8662:101;;;;;;;;;;3671:86;;;;3426:1:26;1949;-1:-1:-1;;;;;;;;;;;707:8662:101;3860:283:26;3426:1;707:8662:101;;;;;;;;;;;;;;;;3162:68;707:8662;;-1:-1:-1;;;3200:19:101;;;2777:223;-1:-1:-1;707:8662:101;;-1:-1:-1;;;2964:25:101;;;2794:138;837:15:68;;2896:36:101;819:34:68;837:15;819:34;:::i;2896:36:101:-;-1:-1:-1;2896:36:101;2794:138;;;2847:29;;;;;707:8662;2847:29;707:8662;2847:29;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;:::i;2662:105::-;2718:38;;;;;;;;:::i;:::-;2662:105;;;;;707:8662;;;;;;-1:-1:-1;;707:8662:101;;;;;1795:13;707:8662;;;;;;;;;;;;;-1:-1:-1;;707:8662:101;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;707:8662:101;;;;;;;;;;;:::i;:::-;3361:103:26;;;:::i;:::-;707:8662:101;;:::i;:::-;;7493:16;7489:103;;707:8662;-1:-1:-1;;707:8662:101;;;-1:-1:-1;;;7607:48:101;;7644:10;7607:48;;;707:8662;;;-1:-1:-1;;;;;707:8662:101;;;;;;;;;;;;;;7607:48;7617:16;;;707:8662;7607:48;;;;;;;-1:-1:-1;7607:48:101;;;707:8662;7606:49;;7602:99;;-1:-1:-1;707:8662:101;7764:35;;-1:-1:-1;;;;;707:8662:101;7644:10;707:8662;;-1:-1:-1;;7644:10:101;297:2:95;707:8662:101;;267:46:95;;152:169;7764:35:101;7850:21;5260:30:93;7850:21:101;;707:8662;;7850:9;707:8662;;;;;;;7850:21;5260:30:93;:::i;:::-;-1:-1:-1;7900:801:101;;;;;7930:34;819::68;837:15;819:34;:::i;7930::101:-;707:8662;;;;7930:34;;;;7984:27;:21;;707:8662;;7850:9;707:8662;;;;;;;7984:21;:27;:::i;:::-;;7926:225;8169:61;8182:48;8190:39;4928:20:93;8198:21:101;;707:8662;;7850:9;707:8662;;;;;;;8198:21;4928:20:93;:::i;8169:61:101:-;707:8662;;;;8169:61;;;8165:336;;7926:225;7900:801;;;;;;8716:34;7900:801;8716:34;7900:801;;707:8662;-1:-1:-1;;;;;707:8662:101;;;;;;;;;;;;;8716:34;;;;3426:1:26;1949;-1:-1:-1;;;;;;;;;;;707:8662:101;3860:283:26;3426:1;707:8662:101;8165:336;8250:21;;;;;;;707:8662;;7850:9;707:8662;;;;;;;8250:21;707:8662;;;;;;;;8299:34;;;;;;;;;;;;;;-1:-1:-1;8299:34:101;;;8165:336;707:8662;;8336:22;707:8662;;;;;;;;;;;8361:30;;;;;;;;;;8336:55;8310:38:66;8361:30:101;8716:34;8361:30;8299:92;8361:30;8716:34;8361:30;8298:130;8361:30;-1:-1:-1;8361:30:101;;;8165:336;707:8662;;;8336:55;;:::i;:::-;707:8662;;8299:92;:::i;:::-;8298:130;:::i;:::-;8310:38:66;;:::i;:::-;8165:336:101;;;;;;8361:30;;;;;;-1:-1:-1;8361:30:101;;;;;;:::i;:::-;;;;;8299:34;;;;;;;;;;;;;;:::i;:::-;;;;7926:225;8036:61;8049:48;8057:39;4928:20:93;8065:21:101;;707:8662;;7850:9;707:8662;;;;;;;8036:61;707:8662;;;8036:61;7926:225;8032:119;707:8662;;-1:-1:-1;;;8124:12:101;;707:8662;;8124:12;7900:801;-1:-1:-1;707:8662:101;;;;;;-1:-1:-1;;8535:23:101;;8531:81;;8626:21;;8716:34;8626:21;8310:38:66;8716:34:101;8626:21;;;707:8662;;7850:9;707:8662;;;;;;;8626:21;819:34:68;837:15;819:34;:::i;8310:38:66:-;7900:801:101;;;;8531:81;707:8662;;-1:-1:-1;;;8585:12:101;;;7602:99;-1:-1:-1;707:8662:101;;-1:-1:-1;;;7678:12:101;;;7607:48;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;7489:103;7544:37;;;;;;:::i;:::-;;7489:103;;;;707:8662;;;;;;;;;;;;;1050:35;707:8662;;;;;;1050:35;-1:-1:-1;707:8662:101;;;;;;-1:-1:-1;707:8662:101;:::o;:::-;;:::i;:::-;;;;;;-1:-1:-1;;707:8662:101;;;;;;1050:35;707:8662;1050:35;;;;;;;;:::i;:::-;-1:-1:-1;707:8662:101;;;1050:35;;707:8662;1050:35;;;707:8662;1050:35;;;;707:8662;;;;;;;-1:-1:-1;;;;;707:8662:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;707:8662:101;;;;-1:-1:-1;707:8662:101;;;477:31:82;707:8662:101;;;;;;:::i;:::-;;;;;;;;;;;;;;;416:25:82;;;;707:8662:101;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;707:8662:101;;;;;;;;;;;;;477:31:82;;707:8662:101;;;;;;;;;;:::i;:::-;477:31:82;707:8662:101;;477:31:82;;;;;;:::i;:::-;518:79;;;707:8662:101;518:79:82;;707:8662:101;;;;;;;;-1:-1:-1;;707:8662:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;707:8662:101;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;2692:73:99;:38;707:8662:101;;;:::i;:::-;;;;;-1:-1:-1;707:8662:101;2692:16:99;707:8662:101;;;-1:-1:-1;707:8662:101;;;;;;;;;;;;;;;;;2692:38:99;:73;:::i;707:8662:101:-;;;;;3248:62:99;707:8662:101;;;:::i;:::-;3248:62:99;;;;;:::i;:::-;707:8662:101;;;;;;;;;;-1:-1:-1;;707:8662:101;;;;;;;;;;;-1:-1:-1;;;;;707:8662:101;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;3361:103:26;;;;:::i;:::-;707:8662:101;;:::i;:::-;4024:16;;4020:105;;707:8662;;;4153:13;707:8662;4139:34;;;4135:94;;4270:25;;;:::i;:::-;707:8662;;;;4330:18;;;;:::i;:::-;4153:13;4408:24;;707:8662;;;;;;;;;;;;;4377:95;4434:37;;4377:95;;;:::i;:::-;707:8662;4377:125;;:250;;;707:8662;4377:309;;;707:8662;4360:389;;4763:43;837:15:68;819:34;837:15;819:34;:::i;:::-;4763:43:101;:::i;:::-;-1:-1:-1;707:8662:101;4809:27;;:13;;-1:-1:-1;;;;;707:8662:101;4809:13;707:8662;4809:27;707:8662;;4809:29;707:8662;;;;;;;;;;;4809:29;;;;;;;;;;-1:-1:-1;4809:29:101;;;707:8662;;;;;4763:75;4759:131;;4994:16;;;707:8662;;4994:16;;4945:140;;4994:16;;707:8662;;-1:-1:-1;;;;;707:8662:101;5038:37;;;4945:140;;:::i;:::-;5120:14;5111:41;5120:14;;;;707:8662;3463:5:63;;;;3066;;707:8662:101;3060:42:63;3371:111;;5111:41:101;5166:18;;;5162:75;;707:8662;;;;5247:78;;5335:24;707:8662;;5335:24;;5725:145;;5335:24;;;;707:8662;5335:24;5725:145;5335:24;;;;6024;5335;;;707:8662;;;;;;;;;;;;;;5335:24;707:8662;;;;5445:24;;707:8662;-1:-1:-1;;;;;707:8662:101;;;;;5445:24;;:::i;:::-;707:8662;;;;5542:13;;707:8662;;-1:-1:-1;;;;;707:8662:101;5542:13;;:::i;:::-;707:8662;;;;;;-1:-1:-1;;;;;707:8662:101;;;;;;;;;;;:::i;:::-;;;;4809:29;5753:103;;707:8662;5753:103;;;707:8662;;5725:145;;;4809:29;5725:145;;707:8662;;;;;;;;;;;;;;;;;;;;;;;;;;;5725:145;;707:8662;;5725:145;;;;;;:::i;:::-;;:::i;:::-;5920:24;707:8662;;;;;;;;5920:24;;:::i;:::-;707:8662;;;-1:-1:-1;;;;;707:8662:101;;;;;;;;;;;6024:24;;:::i;:::-;707:8662;;;;;6065:39;;707:8662;;6065:39;3426:1:26;1949;-1:-1:-1;;;;;;;;;;;707:8662:101;3860:283:26;5247:78:101;707:8662;;-1:-1:-1;;;5291:23:101;;707:8662;;5291:23;5162:75;707:8662;;-1:-1:-1;;;5207:19:101;;707:8662;;5207:19;4759:131;707:8662;;-1:-1:-1;;;4861:18:101;;707:8662;;4861:18;4809:29;;;;;;;;;;;;;;:::i;:::-;;;;4360:389;707:8662;;-1:-1:-1;;;4718:20:101;;707:8662;;4718:20;4377:309;837:15:68;4647:39:101;819:34:68;837:15;819:34;:::i;4647:39:101:-;707:8662;;;;;4647:39;4377:309;;:250;837:15:68;4522:105:101;:91;4553:20;819:34:68;837:15;819:34;:::i;:::-;4553:20:101;:::i;:::-;4575:37;;;;4522:91;;;:::i;:105::-;;;4377:250;;4135:94;707:8662;;-1:-1:-1;;;4196:22:101;;707:8662;;4196:22;4020:105;4076:38;;;;;;;;:::i;:::-;4020:105;;;;;707:8662;;;;;;-1:-1:-1;;707:8662:101;;;;;;;-1:-1:-1;;;;;404:28:76;707:8662:101;;;;;;;;;;-1:-1:-1;;707:8662:101;;;;;1221:37;707:8662;;;;;;;;;;;;;-1:-1:-1;;707:8662:101;;;;;;954:41;-1:-1:-1;;;;;707:8662:101;;;;;;;;;;;;-1:-1:-1;;707:8662:101;;;;;;-1:-1:-1;;;;;707:8662:101;;;;2239:46;707:8662;;;;;;;;:::i;:::-;819:34:68;837:15;819:34;:::i;:::-;707:8662:101;;2239:46;:::i;:::-;707:8662;;-1:-1:-1;;;;;707:8662:101;;;;;;;;;;;;-1:-1:-1;;707:8662:101;;;;;;;1271:7:99;707:8662:101;;;;;;;;;-1:-1:-1;;707:8662:101;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3361:103:26;;;:::i;:::-;707:8662:101;;:::i;:::-;6308:16;;6304:99;;707:8662;;;6431:13;707:8662;6417:34;;;6413:94;;6548:25;;;:::i;:::-;707:8662;6431:13;707:8662;;6653:24;;707:8662;;;;;;;;;;;6622:92;6679:34;;707:8662;;;6622:92;;:::i;:::-;707:8662;6741:29;;;:151;;;;;707:8662;6724:223;;;;6961:10;:29;6957:80;;7051:40;819:34:68;837:15;819:34;:::i;7051:40:101:-;707:8662;;;;;7051:40;;7047:95;;707:8662;;;;7152:78;;707:8662;;-1:-1:-1;;;;707:8662:101;-1:-1:-1;;;707:8662:101;;;6961:10;7280:33;;-1:-1:-1;7280:33:101;;3426:1:26;1949;-1:-1:-1;;;;;;;;;;;707:8662:101;3860:283:26;7152:78:101;707:8662;;-1:-1:-1;;;7196:23:101;;707:8662;;7196:23;7047:95;707:8662;;-1:-1:-1;;;7114:17:101;;707:8662;;7114:17;6957:80;707:8662;;-1:-1:-1;;;7013:13:101;;707:8662;;7013:13;6724:223;707:8662;;-1:-1:-1;;;6924:12:101;;707:8662;;6924:12;6741:151;6790:102;837:15:68;;;6790:88:101;837:15:68;6843:34:101;6821:20;819:34:68;837:15;819:34;:::i;6821:20:101:-;6843:34;;;6790:88;;:::i;:102::-;;6741:151;;;;6304:99;6357:35;;;;;;;:::i;:::-;6304:99;;;;707:8662;;;;;;-1:-1:-1;;707:8662:101;;;;;;;;-1:-1:-1;;;;;707:8662:101;;;;;;;;1876:205;-1:-1:-1;707:8662:101;;;2016:9;707:8662;;;;;-1:-1:-1;;;;;707:8662:101;2016:56;;1876:205;;2016:56;:::i;:::-;707:8662;1876:205;:::o;707:8662::-;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;707:8662:101;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;707:8662:101;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;3317:13;707:8662;-1:-1:-1;;;707:8662:101;;;;;;;;;;3317:13;707:8662;;:::i;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;707:8662:101;-1:-1:-1;;;;;707:8662:101;;;;;;;;;;;;;;;;3317:13;;707:8662;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;707:8662:101;;;;;;-1:-1:-1;;;707:8662:101;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;9999:1:66;707:8662:101;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;707:8662:101;;;;;;;;-1:-1:-1;;707:8662:101;;;;:::o;2505:267:99:-;-1:-1:-1;707:8662:101;;;2692:16:99;707:8662:101;;;;;;;;-1:-1:-1;;;;;707:8662:101;;;;;;;;;2692:73:99;;2505:267;;2692:73;:::i;707:8662:101:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;707:8662:101;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;707:8662:101;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;707:8662:101;;-1:-1:-1;707:8662:101;;;-1:-1:-1;707:8662:101;:::o;10580:184:93:-;10689:20;;;:::i;:::-;-1:-1:-1;;;;;707:8662:101;;10726:7:93;707:8662:101;;10736:12:93;:17;:12;;:17;:::i;:::-;707:8662:101;;;;;;10580:184:93;:::o;10726:31::-;;;10689:11;10580:184;:::o;707:8662:101:-;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;707:8662:101;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::o;1818:604:93:-;;707:8662:101;;1946:17:93;1942:83;;707:8662:101;2049:27:93;707:8662:101;2049:27:93;707:8662:101;;2049:27:93;;;;;;:::i;:::-;2120:14;;;;;:::i;:::-;707:8662:101;;;;;;;;;;;;;;;;2148:22:93;;;2144:77;;2235:21;-1:-1:-1;2235:84:93;;;;1818:604;2231:139;;;;1425:34;;;;:::i;2231:139::-;-1:-1:-1;;2049:27:93;2342:17;707:8662:101;-1:-1:-1;;;;;707:8662:101;;:::o;2235:84:93:-;707:8662:101;;;2269:16:93;707:8662:101;;2269:16:93;:::i;:::-;707:8662:101;;;2261:24:93;:57;;;;;2235:84;;;;;;;2261:57;2289:29;2298:8;;;2289:18;2298:8;2289:23;2298:8;;:::i;:::-;2289:18;;:::i;:::-;707:8662:101;;;;;2289:29:93;;2261:57;;;;2144:77;-1:-1:-1;;;;2049:27:93;2193:17;;;;707:8662:101;-1:-1:-1;;;;;707:8662:101;;-1:-1:-1;707:8662:101;:::o;1942:83:93:-;1425:34;;;;:::i;707:8662:101:-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;707:8662:101;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;6491:564:99:-;6614:34;6491:564;6614:34;;;;:::i;:::-;707:8662:101;;-1:-1:-1;;;6664:41:99;;-1:-1:-1;;;;;707:8662:101;;;6664:41:99;;;707:8662:101;;;;;6664:41:99;;;707:8662:101;;;6674:13:99;707:8662:101;;6664:41:99;;;;;;;-1:-1:-1;6664:41:99;;;6491:564;6663:42;;6659:90;;2684:111:26;6850:27:99;6664:41;2684:111:26;;;:::i;:::-;-1:-1:-1;707:8662:101;;-1:-1:-1;;;;;;707:8662:101;-1:-1:-1;;;;;707:8662:101;;;;;6850:27:99;;:::i;:::-;707:8662:101;;;;;;;;;;6892:23:99;;;;;;;;;-1:-1:-1;6892:23:99;;;6491:564;707:8662:101;;;6892:37:99;:64;;;6491:564;6888:112;;707:8662:101;7010:38:99;;707:8662:101;;-1:-1:-1;707:8662:101;;-1:-1:-1;;;;707:8662:101;;;;;;-1:-1:-1;;;707:8662:101;;;;;;;;6888:112:99;707:8662:101;;-1:-1:-1;;;6979:10:99;;6664:41;;6979:10;6892:64;-1:-1:-1;707:8662:101;;;;6892:64:99;;:23;;;;;;-1:-1:-1;6892:23:99;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;6659:90;707:8662:101;;-1:-1:-1;;;6728:10:99;;6664:41;;6728:10;6664:41;;;;;;;;;;;;;;:::i;:::-;;;;3470:384:26;-1:-1:-1;;;;;;;;;;;1991:1:26;707:8662:101;;3670:20:26;3666:88;;1991:1;707:8662:101;;3470:384:26:o;3666:88::-;707:8662:101;;-1:-1:-1;;;3713:30:26;;;;;4451:257:99;707:8662:101;;-1:-1:-1;;;4546:86:99;;467:2:95;707:8662:101;;;;4546:86:99;;;707:8662:101;-1:-1:-1;;;;;4546:86:99;707:8662:101;;;4572:26:99;707:8662:101;;4546:86:99;;;;;;;-1:-1:-1;4546:86:99;;;4451:257;4636:10;;707:8662:101;;4546:100:99;4542:160;;4451:257::o;4542:160::-;707:8662:101;;-1:-1:-1;;;4669:22:99;;4546:86;;4669:22;4546:86;;;;;;;;;;;;;;;:::i;:::-;;;;;5905:168:93;;6006:20;;;:::i;:::-;707:8662:101;;;;;;;-1:-1:-1;;707:8662:101;;;;;;:::i;:::-;;;;;;;5905:168:93:o;707:8662:101:-;;;;;;;;;;;;14296:213:64;707:8662:101;14374:24:64;;;;14370:103;;707:8662:101;14296:213:64;:::o;14370:103::-;707:8662:101;;;;14421:41:64;;;;;;14452:2;14421:41;;;707:8662:101;;;;;14421:41:64;7558:604:93;;707:8662:101;;7686:17:93;7682:83;;707:8662:101;7789:27:93;707:8662:101;7789:27:93;707:8662:101;;7789:27:93;;;;;;:::i;:::-;7860:14;;;;;:::i;:::-;707:8662:101;;;;;;;;;;;;;;;;7888:22:93;;;7884:77;;7975:21;-1:-1:-1;7975:84:93;;;;7558:604;7971:139;;;;8127:28;;;;:::i;7971:139::-;8082:17;;7789:27;8082:17;707:8662:101;8075:24:93;:::o;7975:84::-;707:8662:101;;;8009:16:93;707:8662:101;;8009:16:93;:::i;:::-;707:8662:101;;;8001:24:93;:57;;;;;7975:84;;;;;;;8001:57;8029:29;8038:8;;;8029:18;8038:8;8029:23;8038:8;;:::i;:::-;8029:18;;:::i;:29::-;;8001:57;;;;7884:77;7933:17;;;;;7789:27;7933:17;707:8662:101;7926:24:93;:::o;7682:83::-;7726:28;;;;:::i;707:8662:101:-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;707:8662:101;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;707:8662:101;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;707:8662:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3323:1122:99:-;;707:8662:101;;:::i;:::-;;;;3608:16:99;3604:109;;3323:1122;837:15:68;;819:34;837:15;819:34;:::i;:::-;-1:-1:-1;707:8662:101;;;;3778:27:99;;:13;;-1:-1:-1;;;;;707:8662:101;3778:13:99;707:8662:101;3778:27:99;707:8662:101;;;;;;;3778:29:99;;;;;;;;;;;;;;;3740:67;3778:29;3759:48;3778:29;-1:-1:-1;3778:29:99;;;3759:48;;:::i;3740:67::-;707:8662:101;;;3740:67:99;;;:107;;;;;3323:1122;3740:197;;;;3323:1122;3723:263;;;707:8662:101;3778:29:99;707:8662:101;;;;;;;;;;4025:25:99;;;;;;;;;4010:143;4025:25;;;-1:-1:-1;4025:25:99;;;3323:1122;4113:30;;;707:8662:101;;;;;;;;;;;4010:143:99;;;;;3778:29;4010:143;;;:::i;:::-;;;-1:-1:-1;;;;;707:8662:101;4010:143:99;;;;;;;4181:257;4010:143;-1:-1:-1;4010:143:99;;;3323:1122;3996:157;;4293:102;3996:157;;4233:162;3996:157;4207:231;3996:157;;2936:28;:47;:38;:28;;;707:8662:101;;2936:16:99;707:8662:101;;;;;;;2936:28:99;707:8662:101;;;;;;;;;;;;;;;;2936:47:99;4351:43;;;4293:102;;:::i;:::-;4233:162;;:::i;:::-;3463:5:63;;;;3066;;707:8662:101;3060:42:63;3371:111;;4181:257:99;3323:1122;:::o;4010:143::-;4233:162;4010:143;;;4207:231;4010:143;;;;4293:102;4010:143;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;4025:25;;;;;;;;;;;;;;:::i;:::-;;;;3723:263;3962:13;;;;;;-1:-1:-1;3962:13:99;-1:-1:-1;3962:13:99;:::o;3740:197::-;3886:41;;3867:70;3886:51;;:41;;;707:8662:101;;3886:29:99;707:8662:101;;;;;;;3886:51:99;707:8662:101;;;;;3867:70:99;-1:-1:-1;3740:197:99;;;:107;837:15:68;;3811:36:99;819:34:68;837:15;819:34;:::i;3811:36:99:-;;;;3740:107;;;3778:29;;;;;;;;;;;;;;;:::i;3604:109::-;3662:40;;;;;;;;;;;;:::i;:::-;3604:109;;;;4714:335;;;;707:8662:101;-1:-1:-1;707:8662:101;4876:29:99;707:8662:101;;;;4876:51:99;707:8662:101;;-1:-1:-1;707:8662:101;;;;;;;;;;;;;;;;;4876:51:99;707:8662:101;;;;;-1:-1:-1;4872:171:99;;4714:335;;;:::o;4872:171::-;4962:70;707:8662:101;4962:51:99;707:8662:101;-1:-1:-1;707:8662:101;4876:29:99;707:8662:101;;;-1:-1:-1;707:8662:101;;;;;;;;;;;;;;;;;4962:51:99;707:8662:101;;;;;;;;;;;;5055:221:99;;;707:8662:101;-1:-1:-1;707:8662:101;5160:16:99;707:8662:101;;2936:47:99;:38;5160;707:8662:101;;-1:-1:-1;707:8662:101;;;;;;;;;;;;;;;;;5160:38:99;837:15:68;819:34;837:15;819:34;:::i;:::-;707:8662:101;-1:-1:-1;707:8662:101;5160:16:99;707:8662:101;;;-1:-1:-1;707:8662:101;;;;;;;;;;;;;;;;;2936:47:99;707:8662:101;;;;;;;;6360:12:93;;;707:8662:101;;;6360:24:93;6356:75;;5055:221:99;6474:30:93;;;:::i;:::-;707:8662:101;;;;;6578:12:93;;;;:::i;:::-;;6604:24;;;5055:221:99;-1:-1:-1;6600:188:93;;;-1:-1:-1;;;;707:8662:101;;;;;;;6644:29:93;:21;;;;:::i;:::-;:29;707:8662:101;;;;;;;;;;;;;;;;;;;;;6600:188:93;6753:24;;8310:38:66;;-1:-1:-1;;;;;707:8662:101;;;;;8310:38:66;:::i;:::-;6753:24:93;;;:::i;6604:::-;707:8662:101;;;;;;6614:14:93;;-1:-1:-1;6604:24:93;;;6356:75;6400:20;;;:::i;:::-;6356:75;;707:8662:101;;;;;;;;-1:-1:-1;;;;;707:8662:101;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;5282:431:99:-;;;;5487:25;;:23;:13;707:8662:101;5494:5:99;707:8662:101;;;;;;;;;5487:23:99;707:8662:101;;-1:-1:-1;;;5487:25:99;;707:8662:101;;;;;5487:25:99;;;;;;;5631:65;5487:25;5631:65;5487:25;5494:5;5487:25;;;5282:431;-1:-1:-1;;;;;;707:8662:101;;;;:::i;:::-;-1:-1:-1;;;;;5677:4:99;707:8662:101;;;5677:4:99;5487:25;5642:53;;707:8662:101;;;5631:65:99;;;5487:25;5631:65;;;:::i;:::-;5472:234;;;;;5494:5;707:8662:101;5472:234:99;707:8662:101;;;;;;;;;;;;;;5472:234:99;;5487:25;5472:234;;;:::i;:::-;;;;;;;;;;;5282:431;:::o;5472:234::-;;;;;;:::i;:::-;;;:::i;5487:25::-;;;;;;;;;;;;;;:::i;:::-;;;;5719:137;707:8662:101;5719:137:99;707:8662:101;5802:47:99;5719:137;5809:5;707:8662:101;;;;;;;;;;;;;;;;;;5802:47:99;;;;;707:8662:101;;;;;;5802:47:99;;;;;;;;5719:137;:::o;5802:47::-;;;;;;;;;;;;;:::i;:::-;;5719:137::o;707:8662:101:-;;;;;;;:::o;:::-;;;;;;;;;;;;5862:623:99;;;5988:12;707:8662:101;;;;;;;5984:495:99;;5862:623;;;;;;:::o;5984:495::-;707:8662:101;;-1:-1:-1;;;6033:22:99;;707:8662:101;6033:22:99;;707:8662:101;;6033:22:99;;707:8662:101;;-1:-1:-1;;;;;707:8662:101;6033:22:99;;;;;;;5988:12;6033:22;;;5984:495;-1:-1:-1;707:8662:101;;-1:-1:-1;;;6033:22:99;6094:81;;;;;;;;707:8662:101;;;;-1:-1:-1;;;;;707:8662:101;;;;;;;;;;;;;;;;;;;;;;6094:81:99;707:8662:101;;;;6094:81:99;;707:8662:101;;6094:81:99;;;;;;:::i;:::-;707:8662:101;6194:9:99;:55;6190:124;;5988:12;6328:141;;;;;;1271:7;6328:141;;5984:495;;;;;;;6190:124;707:8662:101;;-1:-1:-1;;;6276:23:99;;6033:22;;6276:23;6033:22;6094:81;6033:22;;;6094:81;6033:22;;;;;;;;;;;:::i;:::-;;;;;10310:206:66;707:8662:101;;10446:8:66;;;:63;;10405:17;10310:206;:::o;10446:63::-;707:8662:101;;;;;;;;;;10405:17:66;14439:109;;10405:17;14439:109;;;707:8662:101;;;10310:206:66;:::o;707:8662:101:-;;;;;;;:::i;:::-;-1:-1:-1;707:8662:101;;;;;;;:::o;5573:258:93:-;;5723:19;5573:258;707:8662:101;;:::i;:::-;;5723:19:93;:::i;:::-;707:8662:101;;;;;5805:17:93;707:8662:101;;;;;5805:17:93;;707:8662:101;;;;;;;;:::i;:::-;;;5805:17:93;5759:65;;707:8662:101;5573:258:93;:::o;6893:76:22:-;;;:::i;:::-;;;:::i;:::-;1949:1:26;-1:-1:-1;;;;;;;;;;;707:8662:101;6893:76:22:o;707:8662:101:-;;;;;;;:::i;:::-;-1:-1:-1;707:8662:101;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::o;8763:604::-;;8969:30;8763:604;707:8662;;:::i;:::-;;;;8905:30;;;;;;;;;;;;;:::i;:::-;707:8662;;-1:-1:-1;;;8969:30:101;;707:8662;;;;;;;;-1:-1:-1;;;;;707:8662:101;8969:30;;;;;;;;;;;8763:604;9013:19;;;707:8662;;;;;;;;;;;;;;;9013:36;;9009:95;;707:8662;9118:29;;9150:1;707:8662;;9118:33;9114:102;;9226:34;707:8662;9271:54;707:8662;;;;;;;;;;;8969:30;707:8662;;;8969:30;707:8662;;9226:34;707:8662;9271:54;707:8662;;9271:54;9343:17;8763:604;:::o;9114:102::-;707:8662;;-1:-1:-1;;;9174:31:101;;8969:30;;9174:31;9009:95;707:8662;;-1:-1:-1;;;9072:21:101;;8969:30;;9072:21;8969:30;;;;;;;;;;;;;;;:::i;:::-;;;;;10695:389:66;707:8662:101;;10871:8:66;;;10895:20;;10833:17;10895:20;10833:17;10895:20;10833:17;10895:20;:::o;10867:211::-;707:8662:101;;;;;;;;;;10833:17:66;14439:109;;10833:17;14439:109;;;707:8662:101;11014:1:66;707:8662:101;;;;;;;11030:37:66;:::o;6999:207:93:-;;7117:34;6999:207;7117:34;;:::i;11486:272::-;;11636:19;11718:31;11486:272;707:8662:101;;:::i;:::-;;11636:19:93;;:::i;:::-;707:8662:101;11718:12:93;707:8662:101;;;;;11731:17:93;707:8662:101;;;;;11731:17:93;;707:8662:101;;11718:12:93;;:31;:::i;:::-;707:8662:101;;;;;;;;;:::i;:::-;;;;;;11731:17:93;11672:79;;707:8662:101;11486:272:93;:::o;707:8662:101:-;;;-1:-1:-1;;;707:8662:101;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;-1:-1:-1;;;707:8662:101;;;;;;;;;;;;;;;:::i;9584:606:66:-;;707:8662:101;;9737:15:66;9702:17;9762:18;;9801:1;9795:7;;9791:234;;9584:606;10049:53;;13112:10;;;;;;-1:-1:-1;;10120:8:66;;;:63;;9702:17;9584:606;:::o;10120:63::-;10135:48;10168:7;;10135:41;10168:7;;:::i;:::-;10135:41;14439:109;;;;;;14289:265;;10135:41;707:8662:101;;;;;13105:230:66;3721:5:63;;;;;3731;;;;707:8662:101;;;;;;;;;14439:109:66;9702:17;14439:109;707:8662:101;14439:109:66;;;9702:17;14439:109;;707:8662:101;;;;;-1:-1:-1;13189:136:66;707:8662:101;;;13248:10:66;13189:136;;13105:230;;;13189:136;13303:7;;;;;;:::i;:::-;13189:136;;;9791:234;9838:14;;;;:::i;:::-;707:8662:101;;;;;;;14439:109:66;9702:17;14439:109;707:8662:101;14439:109:66;;;9702:17;14439:109;;707:8662:101;;;;;9870:48:66;9866:149;707:8662:101;;;9938:10:66;9866:149;9791:234;;;9866:149;9993:7;;;;;:::i;:::-;9866:149;;;11343:138;;11452:22;11343:138;707:8662:101;;:::i;:::-;;11452:22:66;:::i;:::-;707:8662:101;;;;;;;:::i;:::-;;;;;;;;;;;;;11343:138:66;:::o;7084:141:22:-;707:8662:101;-1:-1:-1;;;;;;;;;;;707:8662:101;;;;7150:18:22;7146:73;;7084:141::o;7146:73::-;707:8662:101;;-1:-1:-1;;;7191:17:22;;;;;707:8662:101;;;-1:-1:-1;;;707:8662:101;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;707:8662:101;;;;;;;;;;;:::o;11657:922:66:-;707:8662:101;;11657:922:66;;;11864:7;;;;11936;11916:28;11936:7;;:::i;:::-;11916:28;14439:109;;;;;;14289:265;;11916:28;707:8662:101;;;;;;;;;;;;12103:13:66;;;12099:89;;12251:14;;;;;12285:19;;;;707:8662:101;;;;;;;;;;;;;;;;;12285:19:66;707:8662:101;;12423:25:66;;:::o;12247:163::-;707:8662:101;;;12343:52:66;707:8662:101;12353:41:66;707:8662:101;;:::i;:::-;;;;;;;;12353:41:66;-1:-1:-1;;;;;707:8662:101;;12353:41:66;;;707:8662:101;12343:52:66;:::i;:::-;12247:163;;12099:89;707:8662:101;;-1:-1:-1;;;12143:30:66;;;;;11860:713;707:8662:101;;12479:52:66;707:8662:101;12489:41:66;707:8662:101;;:::i;12489:41:66:-;-1:-1:-1;;;;;707:8662:101;;12489:41:66;;;707:8662:101;12343:52:66;:::i;12479:::-;11870:1;12545:17;;:::o;18080:5181:63:-;18246:1;18241:6;;;18237:53;;18246:1;19217:14;-1:-1:-1;;;19278:16:63;;;19274:92;;18080:5181;22827:18;22717;22607;22498;22387;22278;23216:28;19383:15;19898:6;19383:15;-1:-1:-1;;;23237:6:63;19383:15;;;19379:90;;18080:5181;19493:7;19486:15;;;19482:90;;18080:5181;19596:7;19589:15;;;19585:89;;18080:5181;19698:6;19691:14;;;19687:87;;18080:5181;19798:6;19791:14;;;19787:87;;18080:5181;19891:14;;19887:61;;18080:5181;20374:1;707:8662:101;18246:1:63;707:8662:101;22284:6:63;;;;:::i;:::-;707:8662:101;;;;;22278:18:63;22393:6;;;;:::i;22387:18::-;22504:6;;;;:::i;22498:18::-;22613:6;;;;:::i;22607:18::-;22723:6;;;;:::i;22717:18::-;22833:6;;;;:::i;22827:18::-;23237:6;;;:::i;:::-;23232:11;;;707:8662:101;23216:28:63;707:8662:101;;18080:5181:63;:::o;19887:61::-;18246:1;707:8662:101;19887:61:63;;19787:87;707:8662:101;;;;;19787:87:63;;;19687;707:8662:101;;;;;19687:87:63;;;19585:89;707:8662:101;;;;;19585:89:63;;;19482:90;707:8662:101;;;;;19482:90:63;;;19379;707:8662:101;;;;;19379:90:63;;;19274:92;-1:-1:-1;;;;707:8662:101;-1:-1:-1;707:8662:101;;;;19274:92:63;","linkReferences":{},"immutableReferences":{"56598":[{"start":810,"length":32}],"56601":[{"start":4881,"length":32},{"start":9281,"length":32}],"64382":[{"start":460,"length":32},{"start":7062,"length":32}],"64385":[{"start":742,"length":32},{"start":7456,"length":32}],"65115":[{"start":2542,"length":32},{"start":4967,"length":32}]}},"methodIdentifiers":{"BURNER_GAS_LIMIT()":"d5c24e1a","BURNER_RESERVE()":"2964f8dc","FACTORY()":"2dd31000","NETWORK_MIDDLEWARE_SERVICE()":"2c9d45b3","NETWORK_REGISTRY()":"c0cd7c3e","TYPE()":"bb24fe8a","VAULT_FACTORY()":"103f2907","cumulativeSlash(bytes32,address)":"1a2be2c4","cumulativeSlashAt(bytes32,address,uint48,bytes)":"aa8e6489","executeSlash(uint256,bytes)":"b94c386e","initialize(bytes)":"439fab91","isBurnerHook()":"34d098ea","latestSlashedCaptureTimestamp(bytes32,address)":"267de1f3","requestSlash(bytes32,address,uint256,uint48,bytes)":"545ce389","resolver(bytes32,bytes)":"cd05b8a1","resolverAt(bytes32,uint48,bytes)":"31ce4dfe","resolverSetEpochsDelay()":"bc6eac5b","setResolver(uint96,address,bytes)":"9168f9d2","slashRequests(uint256)":"9a896551","slashRequestsLength()":"8f42f9ab","slashableStake(bytes32,address,uint48,bytes)":"aab3595f","staticDelegateCall(address,bytes)":"9f86fd85","vault()":"fbfa77cf","vetoDuration()":"e054e08b","vetoSlash(uint256,bytes)":"f9268d18"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vaultFactory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"networkMiddlewareService\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"networkRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"slasherFactory\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"entityType\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AlreadySet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CheckpointUnorderedInsertion\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBurnerGas\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientSlash\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCaptureTimestamp\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidResolverSetEpochsDelay\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidVetoDuration\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoBurner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoResolver\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotNetwork\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotNetworkMiddleware\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotResolver\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SlashPeriodEnded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SlashRequestCompleted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SlashRequestNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VetoPeriodEnded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VetoPeriodNotEnded\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"slashIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slashedAmount\",\"type\":\"uint256\"}],\"name\":\"ExecuteSlash\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"slashIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slashAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"vetoDeadline\",\"type\":\"uint48\"}],\"name\":\"RequestSlash\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"}],\"name\":\"SetResolver\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"slashIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"}],\"name\":\"VetoSlash\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BURNER_GAS_LIMIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BURNER_RESERVE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NETWORK_MIDDLEWARE_SERVICE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NETWORK_REGISTRY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TYPE\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VAULT_FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"cumulativeSlash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"cumulativeSlashAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"slashIndex\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"hints\",\"type\":\"bytes\"}],\"name\":\"executeSlash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"slashedAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isBurnerHook\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"latestSlashedCaptureTimestamp\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"value\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hints\",\"type\":\"bytes\"}],\"name\":\"requestSlash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"slashIndex\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"resolver\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hint\",\"type\":\"bytes\"}],\"name\":\"resolverAt\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resolverSetEpochsDelay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint96\",\"name\":\"identifier\",\"type\":\"uint96\"},{\"internalType\":\"address\",\"name\":\"resolver_\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"hints\",\"type\":\"bytes\"}],\"name\":\"setResolver\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"slashRequests\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"vetoDeadline\",\"type\":\"uint48\"},{\"internalType\":\"bool\",\"name\":\"completed\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slashRequestsLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"hints\",\"type\":\"bytes\"}],\"name\":\"slashableStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"staticDelegateCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vetoDuration\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"slashIndex\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"hints\",\"type\":\"bytes\"}],\"name\":\"vetoSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"CheckpointUnorderedInsertion()\":[{\"details\":\"A value was attempted to be inserted on a past checkpoint.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}]},\"events\":{\"ExecuteSlash(uint256,uint256)\":{\"params\":{\"slashIndex\":\"index of the slash request\",\"slashedAmount\":\"virtual amount of the collateral slashed\"}},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"RequestSlash(uint256,bytes32,address,uint256,uint48,uint48)\":{\"params\":{\"captureTimestamp\":\"time point when the stake was captured\",\"operator\":\"operator that could be slashed (if the request is not vetoed)\",\"slashAmount\":\"maximum amount of the collateral to be slashed\",\"slashIndex\":\"index of the slash request\",\"subnetwork\":\"subnetwork that requested the slash\",\"vetoDeadline\":\"deadline for the resolver to veto the slash (exclusively)\"}},\"SetResolver(bytes32,address)\":{\"params\":{\"resolver\":\"address of the resolver\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}},\"VetoSlash(uint256,address)\":{\"params\":{\"resolver\":\"address of the resolver that vetoed the slash\",\"slashIndex\":\"index of the slash request\"}}},\"kind\":\"dev\",\"methods\":{\"cumulativeSlash(bytes32,address)\":{\"params\":{\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"_0\":\"cumulative slash amount\"}},\"cumulativeSlashAt(bytes32,address,uint48,bytes)\":{\"params\":{\"hint\":\"hint for the checkpoint index\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\",\"timestamp\":\"time point to get the cumulative slash amount until (inclusively)\"},\"returns\":{\"_0\":\"cumulative slash amount until the given timestamp (inclusively)\"}},\"executeSlash(uint256,bytes)\":{\"details\":\"Only a network middleware can call this function.\",\"params\":{\"hints\":\"hints for checkpoints' indexes\",\"slashIndex\":\"index of the slash request\"},\"returns\":{\"slashedAmount\":\"virtual amount of the collateral slashed\"}},\"initialize(bytes)\":{\"params\":{\"data\":\"some data to use\"}},\"requestSlash(bytes32,address,uint256,uint48,bytes)\":{\"details\":\"Only a network middleware can call this function.\",\"params\":{\"amount\":\"maximum amount of the collateral to be slashed\",\"captureTimestamp\":\"time point when the stake was captured\",\"hints\":\"hints for checkpoints' indexes\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"slashIndex\":\"index of the slash request\"}},\"resolver(bytes32,bytes)\":{\"params\":{\"hint\":\"hint for the checkpoint index\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"_0\":\"address of the resolver\"}},\"resolverAt(bytes32,uint48,bytes)\":{\"params\":{\"hint\":\"hint for the checkpoint index\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\",\"timestamp\":\"timestamp to get the resolver at\"},\"returns\":{\"_0\":\"address of the resolver\"}},\"slashRequestsLength()\":{\"returns\":{\"_0\":\"total number of slash requests\"}},\"slashableStake(bytes32,address,uint48,bytes)\":{\"params\":{\"captureTimestamp\":\"time point to get the stake amount at\",\"hints\":\"hints for the checkpoints' indexes\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"},\"returns\":{\"amount\":\"slashable amount of the stake\"}},\"staticDelegateCall(address,bytes)\":{\"details\":\"It allows to use this contract's storage on-chain.\",\"params\":{\"data\":\"data to make a delegatecall with\",\"target\":\"address of the contract to make a delegatecall to\"}},\"vetoSlash(uint256,bytes)\":{\"details\":\"Only a resolver can call this function.\",\"params\":{\"hints\":\"hints for checkpoints' indexes\",\"slashIndex\":\"index of the slash request\"}}},\"stateVariables\":{\"NETWORK_REGISTRY\":{\"return\":\"address of the network registry\",\"returns\":{\"_0\":\"address of the network registry\"}},\"resolverSetEpochsDelay\":{\"return\":\"updating resolver delay in epochs\",\"returns\":{\"_0\":\"updating resolver delay in epochs\"}},\"slashRequests\":{\"params\":{\"slashIndex\":\"index of the slash request\"},\"returns\":{\"amount\":\"maximum amount of the collateral to be slashed\",\"captureTimestamp\":\"time point when the stake was captured\",\"completed\":\"if the slash was vetoed/executed\",\"operator\":\"operator that could be slashed (if the request is not vetoed)\",\"subnetwork\":\"subnetwork that requested the slash\",\"vetoDeadline\":\"deadline for the resolver to veto the slash (exclusively)\"}},\"vetoDuration\":{\"return\":\"duration of the veto period\",\"returns\":{\"_0\":\"duration of the veto period\"}}},\"version\":1},\"userdoc\":{\"events\":{\"ExecuteSlash(uint256,uint256)\":{\"notice\":\"Emitted when a slash request is executed.\"},\"RequestSlash(uint256,bytes32,address,uint256,uint48,uint48)\":{\"notice\":\"Emitted when a slash request is created.\"},\"SetResolver(bytes32,address)\":{\"notice\":\"Emitted when a resolver is set.\"},\"VetoSlash(uint256,address)\":{\"notice\":\"Emitted when a slash request is vetoed.\"}},\"kind\":\"user\",\"methods\":{\"BURNER_GAS_LIMIT()\":{\"notice\":\"Get a gas limit for the burner.\"},\"BURNER_RESERVE()\":{\"notice\":\"Get a reserve gas between the gas limit check and the burner's execution.\"},\"FACTORY()\":{\"notice\":\"Get the factory's address.\"},\"NETWORK_MIDDLEWARE_SERVICE()\":{\"notice\":\"Get the network middleware service's address.\"},\"NETWORK_REGISTRY()\":{\"notice\":\"Get the network registry's address.\"},\"TYPE()\":{\"notice\":\"Get the entity's type.\"},\"VAULT_FACTORY()\":{\"notice\":\"Get the vault factory's address.\"},\"cumulativeSlash(bytes32,address)\":{\"notice\":\"Get a cumulative slash amount for an operator on a subnetwork.\"},\"cumulativeSlashAt(bytes32,address,uint48,bytes)\":{\"notice\":\"Get a cumulative slash amount for an operator on a subnetwork until a given timestamp (inclusively) using a hint.\"},\"executeSlash(uint256,bytes)\":{\"notice\":\"Execute a slash with a given slash index using hints.\"},\"initialize(bytes)\":{\"notice\":\"Initialize this entity contract by using a given data.\"},\"isBurnerHook()\":{\"notice\":\"Get if the burner is needed to be called on a slashing.\"},\"latestSlashedCaptureTimestamp(bytes32,address)\":{\"notice\":\"Get the latest capture timestamp that was slashed on a subnetwork.\"},\"requestSlash(bytes32,address,uint256,uint48,bytes)\":{\"notice\":\"Request a slash using a subnetwork for a particular operator by a given amount using hints.\"},\"resolver(bytes32,bytes)\":{\"notice\":\"Get a resolver for a given subnetwork using a hint.\"},\"resolverAt(bytes32,uint48,bytes)\":{\"notice\":\"Get a resolver for a given subnetwork at a particular timestamp using a hint.\"},\"resolverSetEpochsDelay()\":{\"notice\":\"Get a delay for networks in epochs to update a resolver.\"},\"slashRequests(uint256)\":{\"notice\":\"Get a particular slash request.\"},\"slashRequestsLength()\":{\"notice\":\"Get a total number of slash requests.\"},\"slashableStake(bytes32,address,uint48,bytes)\":{\"notice\":\"Get a slashable amount of a stake got at a given capture timestamp using hints.\"},\"staticDelegateCall(address,bytes)\":{\"notice\":\"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data).\"},\"vault()\":{\"notice\":\"Get the vault's address.\"},\"vetoDuration()\":{\"notice\":\"Get a duration during which resolvers can veto slash requests.\"},\"vetoSlash(uint256,bytes)\":{\"notice\":\"Veto a slash with a given slash index using hints.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/slasher/VetoSlasher.sol\":\"VetoSlasher\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf\",\"dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44\",\"dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6\",\"dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza\"]},\"src/contracts/common/Entity.sol\":{\"keccak256\":\"0x3d61a932995b8443381f3950542d388223a2c26dd5d29a3274dea3baa7388bd7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7cdf5f03ca72fd263fd32ff59c8d88ddca911ae83896a287d10772c1bbe9b138\",\"dweb:/ipfs/QmbP84r5BWT1Rn9AYTntWSf3xUMTTCohTZJFhbBhDXFoHa\"]},\"src/contracts/common/StaticDelegateCallable.sol\":{\"keccak256\":\"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764\",\"dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD\"]},\"src/contracts/libraries/Checkpoints.sol\":{\"keccak256\":\"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609\",\"dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE\"]},\"src/contracts/libraries/Subnetwork.sol\":{\"keccak256\":\"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56\",\"dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32\"]},\"src/contracts/slasher/BaseSlasher.sol\":{\"keccak256\":\"0x190e5dce196a061bdad42468c52e9f5b0eb7810cd7d0c19f04d6a2e94984f1b6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://07ca08d0cd43c2fe5d54a5577f6bdd522ced410f5d3a52e764deaa7ba26b5f06\",\"dweb:/ipfs/QmZe3PiMKBQKWcwodaLupragdqxPjgS4v1qMC7RXau8hDF\"]},\"src/contracts/slasher/VetoSlasher.sol\":{\"keccak256\":\"0xeccc8128de5e1ad499c067feac1c526638fbbac1a18b96726fc7507969fd5897\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://cdfcf281338423625acbccdf8810115b258ef7cfe4aa3c10b8911ead1aa85429\",\"dweb:/ipfs/QmZFsDvZXpkFkx4PHcDXAVPN3ZCAahbSVfYpSVrMBvbt4k\"]},\"src/interfaces/common/IEntity.sol\":{\"keccak256\":\"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b\",\"dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv\"]},\"src/interfaces/common/IMigratableEntity.sol\":{\"keccak256\":\"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c\",\"dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds\"]},\"src/interfaces/common/IRegistry.sol\":{\"keccak256\":\"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014\",\"dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK\"]},\"src/interfaces/common/IStaticDelegateCallable.sol\":{\"keccak256\":\"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516\",\"dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi\"]},\"src/interfaces/delegator/IBaseDelegator.sol\":{\"keccak256\":\"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2\",\"dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8\"]},\"src/interfaces/service/INetworkMiddlewareService.sol\":{\"keccak256\":\"0x347afc7fcf1fbcdb96d66162070ef6c78aed27b3af2c1d5dfb4e511840631783\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d90b8ceb495159e8e4e95d76447719dd166443f67dfabdd942846162071595c\",\"dweb:/ipfs/QmVVuiAWYx92T6vBvNMKZfTvraCf1fa16BsUKkdNs3hdHA\"]},\"src/interfaces/slasher/IBaseSlasher.sol\":{\"keccak256\":\"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf\",\"dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx\"]},\"src/interfaces/slasher/IBurner.sol\":{\"keccak256\":\"0xaf495dacc19ae0b3c787ba8021c5944927d70261536addd234d7dab146158c2b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b3cc66251008be6ff9fc8b11ecc6831d5a9dca49a3fe9817fcd970253c1d447\",\"dweb:/ipfs/QmVxfb9ALGdF9W3SN2h41gQbUct6tawvu5bw4K89kFQ4HW\"]},\"src/interfaces/slasher/IVetoSlasher.sol\":{\"keccak256\":\"0xdf7edd04a4f36e9aec3a15241dcb6b6315b2e64927b12710c2c410d571fc55e9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c4be6ac339c2ebf230fed65363f036784224095d0cd0f3f2d01d64d6e0da9508\",\"dweb:/ipfs/QmRSMbpfaHExqrzUA8vYZMYZWh6eQW1KX9JKJSLdgronfg\"]},\"src/interfaces/vault/IVault.sol\":{\"keccak256\":\"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9\",\"dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R\"]},\"src/interfaces/vault/IVaultStorage.sol\":{\"keccak256\":\"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e\",\"dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"vaultFactory","type":"address"},{"internalType":"address","name":"networkMiddlewareService","type":"address"},{"internalType":"address","name":"networkRegistry","type":"address"},{"internalType":"address","name":"slasherFactory","type":"address"},{"internalType":"uint64","name":"entityType","type":"uint64"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AlreadySet"},{"inputs":[],"type":"error","name":"CheckpointUnorderedInsertion"},{"inputs":[],"type":"error","name":"InsufficientBurnerGas"},{"inputs":[],"type":"error","name":"InsufficientSlash"},{"inputs":[],"type":"error","name":"InvalidCaptureTimestamp"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"InvalidResolverSetEpochsDelay"},{"inputs":[],"type":"error","name":"InvalidVetoDuration"},{"inputs":[],"type":"error","name":"NoBurner"},{"inputs":[],"type":"error","name":"NoResolver"},{"inputs":[],"type":"error","name":"NotInitialized"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"NotNetwork"},{"inputs":[],"type":"error","name":"NotNetworkMiddleware"},{"inputs":[],"type":"error","name":"NotResolver"},{"inputs":[],"type":"error","name":"NotVault"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintDowncast"},{"inputs":[],"type":"error","name":"SlashPeriodEnded"},{"inputs":[],"type":"error","name":"SlashRequestCompleted"},{"inputs":[],"type":"error","name":"SlashRequestNotExist"},{"inputs":[],"type":"error","name":"VetoPeriodEnded"},{"inputs":[],"type":"error","name":"VetoPeriodNotEnded"},{"inputs":[{"internalType":"uint256","name":"slashIndex","type":"uint256","indexed":true},{"internalType":"uint256","name":"slashedAmount","type":"uint256","indexed":false}],"type":"event","name":"ExecuteSlash","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"uint256","name":"slashIndex","type":"uint256","indexed":true},{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"slashAmount","type":"uint256","indexed":false},{"internalType":"uint48","name":"captureTimestamp","type":"uint48","indexed":false},{"internalType":"uint48","name":"vetoDeadline","type":"uint48","indexed":false}],"type":"event","name":"RequestSlash","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32","indexed":true},{"internalType":"address","name":"resolver","type":"address","indexed":false}],"type":"event","name":"SetResolver","anonymous":false},{"inputs":[{"internalType":"uint256","name":"slashIndex","type":"uint256","indexed":true},{"internalType":"address","name":"resolver","type":"address","indexed":true}],"type":"event","name":"VetoSlash","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"BURNER_GAS_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"BURNER_RESERVE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"NETWORK_MIDDLEWARE_SERVICE","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"NETWORK_REGISTRY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"TYPE","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VAULT_FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"cumulativeSlash","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"cumulativeSlashAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"slashIndex","type":"uint256"},{"internalType":"bytes","name":"hints","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"executeSlash","outputs":[{"internalType":"uint256","name":"slashedAmount","type":"uint256"}]},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"isBurnerHook","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"latestSlashedCaptureTimestamp","outputs":[{"internalType":"uint48","name":"value","type":"uint48"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint48","name":"captureTimestamp","type":"uint48"},{"internalType":"bytes","name":"hints","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"requestSlash","outputs":[{"internalType":"uint256","name":"slashIndex","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"resolver","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes","name":"hint","type":"bytes"}],"stateMutability":"view","type":"function","name":"resolverAt","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"resolverSetEpochsDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint96","name":"identifier","type":"uint96"},{"internalType":"address","name":"resolver_","type":"address"},{"internalType":"bytes","name":"hints","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"setResolver"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"slashRequests","outputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint48","name":"captureTimestamp","type":"uint48"},{"internalType":"uint48","name":"vetoDeadline","type":"uint48"},{"internalType":"bool","name":"completed","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"slashRequestsLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"captureTimestamp","type":"uint48"},{"internalType":"bytes","name":"hints","type":"bytes"}],"stateMutability":"view","type":"function","name":"slashableStake","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"staticDelegateCall"},{"inputs":[],"stateMutability":"view","type":"function","name":"vault","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"vetoDuration","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[{"internalType":"uint256","name":"slashIndex","type":"uint256"},{"internalType":"bytes","name":"hints","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"vetoSlash"}],"devdoc":{"kind":"dev","methods":{"cumulativeSlash(bytes32,address)":{"params":{"operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"_0":"cumulative slash amount"}},"cumulativeSlashAt(bytes32,address,uint48,bytes)":{"params":{"hint":"hint for the checkpoint index","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)","timestamp":"time point to get the cumulative slash amount until (inclusively)"},"returns":{"_0":"cumulative slash amount until the given timestamp (inclusively)"}},"executeSlash(uint256,bytes)":{"details":"Only a network middleware can call this function.","params":{"hints":"hints for checkpoints' indexes","slashIndex":"index of the slash request"},"returns":{"slashedAmount":"virtual amount of the collateral slashed"}},"initialize(bytes)":{"params":{"data":"some data to use"}},"requestSlash(bytes32,address,uint256,uint48,bytes)":{"details":"Only a network middleware can call this function.","params":{"amount":"maximum amount of the collateral to be slashed","captureTimestamp":"time point when the stake was captured","hints":"hints for checkpoints' indexes","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"slashIndex":"index of the slash request"}},"resolver(bytes32,bytes)":{"params":{"hint":"hint for the checkpoint index","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"_0":"address of the resolver"}},"resolverAt(bytes32,uint48,bytes)":{"params":{"hint":"hint for the checkpoint index","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)","timestamp":"timestamp to get the resolver at"},"returns":{"_0":"address of the resolver"}},"slashRequestsLength()":{"returns":{"_0":"total number of slash requests"}},"slashableStake(bytes32,address,uint48,bytes)":{"params":{"captureTimestamp":"time point to get the stake amount at","hints":"hints for the checkpoints' indexes","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"},"returns":{"amount":"slashable amount of the stake"}},"staticDelegateCall(address,bytes)":{"details":"It allows to use this contract's storage on-chain.","params":{"data":"data to make a delegatecall with","target":"address of the contract to make a delegatecall to"}},"vetoSlash(uint256,bytes)":{"details":"Only a resolver can call this function.","params":{"hints":"hints for checkpoints' indexes","slashIndex":"index of the slash request"}}},"version":1},"userdoc":{"kind":"user","methods":{"BURNER_GAS_LIMIT()":{"notice":"Get a gas limit for the burner."},"BURNER_RESERVE()":{"notice":"Get a reserve gas between the gas limit check and the burner's execution."},"FACTORY()":{"notice":"Get the factory's address."},"NETWORK_MIDDLEWARE_SERVICE()":{"notice":"Get the network middleware service's address."},"NETWORK_REGISTRY()":{"notice":"Get the network registry's address."},"TYPE()":{"notice":"Get the entity's type."},"VAULT_FACTORY()":{"notice":"Get the vault factory's address."},"cumulativeSlash(bytes32,address)":{"notice":"Get a cumulative slash amount for an operator on a subnetwork."},"cumulativeSlashAt(bytes32,address,uint48,bytes)":{"notice":"Get a cumulative slash amount for an operator on a subnetwork until a given timestamp (inclusively) using a hint."},"executeSlash(uint256,bytes)":{"notice":"Execute a slash with a given slash index using hints."},"initialize(bytes)":{"notice":"Initialize this entity contract by using a given data."},"isBurnerHook()":{"notice":"Get if the burner is needed to be called on a slashing."},"latestSlashedCaptureTimestamp(bytes32,address)":{"notice":"Get the latest capture timestamp that was slashed on a subnetwork."},"requestSlash(bytes32,address,uint256,uint48,bytes)":{"notice":"Request a slash using a subnetwork for a particular operator by a given amount using hints."},"resolver(bytes32,bytes)":{"notice":"Get a resolver for a given subnetwork using a hint."},"resolverAt(bytes32,uint48,bytes)":{"notice":"Get a resolver for a given subnetwork at a particular timestamp using a hint."},"resolverSetEpochsDelay()":{"notice":"Get a delay for networks in epochs to update a resolver."},"slashRequests(uint256)":{"notice":"Get a particular slash request."},"slashRequestsLength()":{"notice":"Get a total number of slash requests."},"slashableStake(bytes32,address,uint48,bytes)":{"notice":"Get a slashable amount of a stake got at a given capture timestamp using hints."},"staticDelegateCall(address,bytes)":{"notice":"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data)."},"vault()":{"notice":"Get the vault's address."},"vetoDuration()":{"notice":"Get a duration during which resolvers can veto slash requests."},"vetoSlash(uint256,bytes)":{"notice":"Veto a slash with a given slash index using hints."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/slasher/VetoSlasher.sol":"VetoSlasher"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol":{"keccak256":"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866","urls":["bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf","dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol":{"keccak256":"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f","urls":["bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44","dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc","urls":["bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6","dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza"],"license":"MIT"},"src/contracts/common/Entity.sol":{"keccak256":"0x3d61a932995b8443381f3950542d388223a2c26dd5d29a3274dea3baa7388bd7","urls":["bzz-raw://7cdf5f03ca72fd263fd32ff59c8d88ddca911ae83896a287d10772c1bbe9b138","dweb:/ipfs/QmbP84r5BWT1Rn9AYTntWSf3xUMTTCohTZJFhbBhDXFoHa"],"license":"BUSL-1.1"},"src/contracts/common/StaticDelegateCallable.sol":{"keccak256":"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90","urls":["bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764","dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD"],"license":"BUSL-1.1"},"src/contracts/libraries/Checkpoints.sol":{"keccak256":"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c","urls":["bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609","dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE"],"license":"MIT"},"src/contracts/libraries/Subnetwork.sol":{"keccak256":"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe","urls":["bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56","dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32"],"license":"MIT"},"src/contracts/slasher/BaseSlasher.sol":{"keccak256":"0x190e5dce196a061bdad42468c52e9f5b0eb7810cd7d0c19f04d6a2e94984f1b6","urls":["bzz-raw://07ca08d0cd43c2fe5d54a5577f6bdd522ced410f5d3a52e764deaa7ba26b5f06","dweb:/ipfs/QmZe3PiMKBQKWcwodaLupragdqxPjgS4v1qMC7RXau8hDF"],"license":"BUSL-1.1"},"src/contracts/slasher/VetoSlasher.sol":{"keccak256":"0xeccc8128de5e1ad499c067feac1c526638fbbac1a18b96726fc7507969fd5897","urls":["bzz-raw://cdfcf281338423625acbccdf8810115b258ef7cfe4aa3c10b8911ead1aa85429","dweb:/ipfs/QmZFsDvZXpkFkx4PHcDXAVPN3ZCAahbSVfYpSVrMBvbt4k"],"license":"BUSL-1.1"},"src/interfaces/common/IEntity.sol":{"keccak256":"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21","urls":["bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b","dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv"],"license":"MIT"},"src/interfaces/common/IMigratableEntity.sol":{"keccak256":"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4","urls":["bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c","dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds"],"license":"MIT"},"src/interfaces/common/IRegistry.sol":{"keccak256":"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb","urls":["bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014","dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK"],"license":"MIT"},"src/interfaces/common/IStaticDelegateCallable.sol":{"keccak256":"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5","urls":["bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516","dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi"],"license":"MIT"},"src/interfaces/delegator/IBaseDelegator.sol":{"keccak256":"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee","urls":["bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2","dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8"],"license":"MIT"},"src/interfaces/service/INetworkMiddlewareService.sol":{"keccak256":"0x347afc7fcf1fbcdb96d66162070ef6c78aed27b3af2c1d5dfb4e511840631783","urls":["bzz-raw://2d90b8ceb495159e8e4e95d76447719dd166443f67dfabdd942846162071595c","dweb:/ipfs/QmVVuiAWYx92T6vBvNMKZfTvraCf1fa16BsUKkdNs3hdHA"],"license":"MIT"},"src/interfaces/slasher/IBaseSlasher.sol":{"keccak256":"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404","urls":["bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf","dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx"],"license":"MIT"},"src/interfaces/slasher/IBurner.sol":{"keccak256":"0xaf495dacc19ae0b3c787ba8021c5944927d70261536addd234d7dab146158c2b","urls":["bzz-raw://9b3cc66251008be6ff9fc8b11ecc6831d5a9dca49a3fe9817fcd970253c1d447","dweb:/ipfs/QmVxfb9ALGdF9W3SN2h41gQbUct6tawvu5bw4K89kFQ4HW"],"license":"MIT"},"src/interfaces/slasher/IVetoSlasher.sol":{"keccak256":"0xdf7edd04a4f36e9aec3a15241dcb6b6315b2e64927b12710c2c410d571fc55e9","urls":["bzz-raw://c4be6ac339c2ebf230fed65363f036784224095d0cd0f3f2d01d64d6e0da9508","dweb:/ipfs/QmRSMbpfaHExqrzUA8vYZMYZWh6eQW1KX9JKJSLdgronfg"],"license":"MIT"},"src/interfaces/vault/IVault.sol":{"keccak256":"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235","urls":["bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9","dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R"],"license":"MIT"},"src/interfaces/vault/IVaultStorage.sol":{"keccak256":"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22","urls":["bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e","dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6"],"license":"MIT"}},"version":1},"id":101} \ No newline at end of file diff --git a/out/v1.1/Vault.sol/Vault.json b/out/v1.1/Vault.sol/Vault.json new file mode 100644 index 00000000..63b81abd --- /dev/null +++ b/out/v1.1/Vault.sol/Vault.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[{"name":"vaultFactory","type":"address","internalType":"address"},{"name":"implementation","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"fallback","stateMutability":"payable"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"DEPOSITOR_WHITELIST_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"DEPOSIT_LIMIT_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"DEPOSIT_WHITELIST_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"EPOCH_DURATION_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"FLASH_FEE_BASE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"FLASH_FEE_RATE_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"FLASH_FEE_RECEIVER_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"FLASH_LOAN_ENABLED_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"IS_DEPOSIT_LIMIT_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"MIN_EXIT_WINDOW","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"RETURN_VALUE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"burner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"collateral","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"delegator","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"depositLimit","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"depositWhitelist","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"flashFeeRate","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"flashFeeReceiver","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"flashLoanEnabled","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"initialVersion","type":"uint64","internalType":"uint64"},{"name":"owner_","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isDelegatorInitialized","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isDepositLimit","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isDepositorWhitelisted","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isSlasherInitialized","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isWithdrawalsClaimed","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"migrate","inputs":[{"name":"newVersion","type":"uint64","internalType":"uint64"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"slasher","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"staticDelegateCall","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"version","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"withdrawalShares","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"withdrawalSharesOf","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"withdrawals","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"AlreadyInitialized","inputs":[]},{"type":"error","name":"AlreadySet","inputs":[]},{"type":"error","name":"InsufficientExitWindow","inputs":[]},{"type":"error","name":"InvalidAccount","inputs":[]},{"type":"error","name":"InvalidCollateral","inputs":[]},{"type":"error","name":"InvalidEpochDuration","inputs":[]},{"type":"error","name":"InvalidEpochDurationSetEpochsDelay","inputs":[]},{"type":"error","name":"InvalidFlashParams","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"InvalidOrigin","inputs":[]},{"type":"error","name":"MissingRoles","inputs":[]},{"type":"error","name":"NoDepositWhitelist","inputs":[]},{"type":"error","name":"NotFactory","inputs":[]},{"type":"error","name":"NotInitialized","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x60c03461011557612508906001600160401b0390601f38849003908101601f19168201908382118383101761011957808391604096879485528339810103126101155761005760206100508361012d565b920161012d565b917ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff82871c166101045780808316036100c0575b50505060805260a052516123c6908161014282396080518181816104990152610604015260a0518161212a0152f35b6001600160401b0319909116811790915583519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f8080610091565b855163f92ee8a960e01b8152600490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101155756fe608060405260043610612120575f3560e01c806301ffc9a7146102bb5780631415519b146102b65780631b66c9e1146102b1578063248a9ca3146102ac57806327810b6e146102a75780632abe3048146102a25780632dd310001461029d5780632f2ff15d1461029857806331d9736c1461029357806336568abe1461028e57806348d3b7751461028957806350861adc1461028457806354fd4d501461027f57806357ec83cc1461027a5780635cc070761461027557806361819dd814610270578063653b04cd1461026b57806365d61c6c146102665780636ec1e3f814610261578063715018a61461025c578063794b15b7146102575780638da5cb5b1461025257806391d148541461024d5780639f86fd8514610248578063a1b1220214610243578063a217fddf1461023e578063a21a1df914610239578063a3b5417214610234578063a5d032231461022f578063a66b3a731461022a578063a8b24f9a14610225578063afba70ad14610220578063b13442711461021b578063bc46f72214610216578063ce9b793014610211578063d547741f1461020c578063d8dfeb4514610207578063db38871514610202578063e945da7f146101fd578063ecc98f05146101f8578063ecf70858146101f3578063f151f6b5146101ee5763f2fde38b0361212057610f07565b610eea565b610ecd565b610eaf565b610e92565b610e58565b610e2d565b610de1565b610db9565b610d7f565b610d57565b610d2d565b610d05565b610ccb565b610c85565b610c38565b610bfe565b610be4565b610bc0565b610af3565b610a95565b610a61565b610a21565b6109ba565b610995565b610970565b610936565b6108fc565b6108d2565b61078d565b61075b565b610736565b610715565b6106ca565b610690565b610644565b6105ef565b61042d565b6103c2565b610389565b61034f565b610315565b346103115760203660031901126103115760043563ffffffff60e01b811680910361031157602090637965db0b60e01b8114908115610300575b506040519015158152f35b6301ffc9a760e01b1490505f6102f5565b5f80fd5b34610311575f3660031901126103115760206040517fc6aaadd7371d5e8f9ed6849dd66a66573a3ba37167d03f4352c9ba5693678fac8152f35b34610311575f3660031901126103115760206040517f9c56d972d63cbb4195b3c1484691dfc220fa96a4c47e7b6613bd82a022029e068152f35b34610311576020366003190112610311576004355f525f805160206123518339815191526020526020600160405f200154604051908152f35b34610311575f366003190112610311576001546040516001600160a01b039091168152602090f35b600435906001600160401b038216820361031157565b9181601f84011215610311578235916001600160401b038311610311576020838186019501011161031157565b3461031157604080600319360112610311576104476103ea565b906001600160401b0360243581811161031157610468903690600401610400565b917f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0060028154146105de57600290557f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036105cd575f8051602061237183398151915280548281169260ff82881c1680156105c1575b6105b05767ffffffffffffffff199091169087161790555f80516020612371833981519152805460ff60401b1916600160401b1790557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29461058294909390926105519261182d565b5f80516020612371833981519152805460ff60401b19169055516001600160401b0390911681529081906020820190565b0390a16105ae60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b005b865163f92ee8a960e01b8152600490fd5b508088168410156104e8565b8351631966391b60e11b8152600490fd5b8451633ee5aeb560e01b8152600490fd5b34610311575f366003190112610311576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6001600160a01b0381160361031157565b34610311576040366003190112610311576105ae60243560043561066782610633565b805f525f8051602061235183398151915260205261068b600160405f2001546118f8565b611dd6565b34610311575f3660031901126103115760206040517f5295aaaa27fdd659293eafacbfafbc634c1b96298957e87de5f59308cdbfdad18152f35b34610311576040366003190112610311576024356106e781610633565b336001600160a01b03821603610703576105ae90600435611e0c565b60405163334bd91960e11b8152600490fd5b34610311575f36600319011261031157602060ff5f54166040519015158152f35b34610311575f36600319011261031157602060ff60025460a01c166040519015158152f35b34610311575f3660031901126103115760206001600160401b035f805160206123718339815191525416604051908152f35b34610311576060366003190112610311576107a66103ea565b6024356107b281610633565b6001600160401b0391604435838111610311576107d3903690600401610400565b5f805160206123718339815191529491855494838616806108c15760ff8760401c169081156108b4575b506108a2577fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29661089d9661086a958716906001600160401b0319161790556108655f80516020612371833981519152600160401b68ff000000000000000019825416179055565b61100a565b5f80516020612371833981519152805460ff60401b191690556040516001600160401b0390911681529081906020820190565b0390a1005b60405163f92ee8a960e01b8152600490fd5b905084861611155f6107fd565b60405162dc149f60e41b8152600490fd5b34610311576020366003190112610311576004355f526006602052602060405f2054604051908152f35b34610311575f3660031901126103115760206040517f591f6a0113ada8aff67efadec8ae2fa585cb4ebf4e1f8fc1205ffbeff98d00ec8152f35b34610311575f3660031901126103115760206040517f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd98152f35b34610311575f36600319011261031157602060ff60165460a01c166040519015158152f35b34610311575f36600319011261031157602060ff60035460a01c166040519015158152f35b34610311575f366003190112610311576109d26120e8565b5f8051602061233183398151915280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461031157602036600319011261031157600435610a3e81610633565b60018060a01b03165f526005602052602060ff60405f2054166040519015158152f35b34610311575f366003190112610311575f80516020612331833981519152546040516001600160a01b039091168152602090f35b3461031157604036600319011261031157602060ff610ae7602435610ab981610633565b6004355f525f80516020612351833981519152845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b346103115760408060031936011261031157600435610b1181610633565b6024356001600160401b038111610311575f80610baf93610b386080943690600401610400565b908188519283928337810184815203915af43d15610bb75760203d610b5c81610fb9565b90610b6987519283610f69565b81523d5f8383013e5b8551958693151583850152808401528051918291826060860152018484015e5f838284010152601f80199101168101036060810184520182610f69565b805190602001fd5b60206060610b72565b34610311575f36600319011261031157602060ff5f5460081c166040519015158152f35b34610311575f3660031901126103115760206040515f8152f35b34610311575f3660031901126103115760206040517f4a634bc14d77baf979756509ef4298c6f6318af357828612545267ee2eb792338152f35b34610311576040366003190112610311576020610c7c602435610c5a81610633565b6004355f526008835260405f209060018060a01b03165f5260205260405f2090565b54604051908152f35b3461031157604036600319011261031157602060ff610ae7602435610ca981610633565b6004355f526009845260405f209060018060a01b03165f5260205260405f2090565b34610311575f3660031901126103115760206040517fc9feed28b4b1a1d11c6791da7bb7f6b8d33e831a4992a9383dead1ec2c82c35a8152f35b34610311575f366003190112610311576016546040516001600160a01b039091168152602090f35b34610311576020366003190112610311576004355f526007602052602060405f2054604051908152f35b34610311575f366003190112610311576003546040516001600160a01b039091168152602090f35b34610311575f3660031901126103115760206040517fc9078c78bcaac2be1c77c160c539a489be2b72939771b1a6302fed3e2150c7458152f35b34610311575f366003190112610311576002546040516001600160a01b039091168152602090f35b34610311576040366003190112610311576105ae602435600435610e0482610633565b805f525f80516020612351833981519152602052610e28600160405f2001546118f8565b611e0c565b34610311575f366003190112610311575f5460405160109190911c6001600160a01b03168152602090f35b34610311575f3660031901126103115760206040517fbae4ee3de6c709ff9a002e774c5b78cb381560b219213c88ae0f1e207c03c0238152f35b34610311575f366003190112610311576020601554604051908152f35b34610311575f366003190112610311576020604051633b9aca008152f35b34610311575f366003190112610311576020600454604051908152f35b34610311575f36600319011261031157602060405162093a808152f35b34610311576020366003190112610311576105ae600435610f2781610633565b610f2f6120e8565b6117bc565b634e487b7160e01b5f52604160045260245ffd5b61010081019081106001600160401b03821117610f6457604052565b610f34565b90601f801991011681019081106001600160401b03821117610f6457604052565b60405190610f9782610f48565b565b6040519061028082018281106001600160401b03821117610f6457604052565b6001600160401b038111610f6457601f01601f191660200190565b929192610fe082610fb9565b91610fee6040519384610f69565b829481845281830111610311578281602093845f960137010152565b91906110656110749161101b61215c565b61102361215c565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f008190556001600160a01b03959094908087166117a2575b503691610fd4565b60208082518301019101611f39565b805190919083166001600160a01b0316156117905760409081830165ffffffffffff6110a6825165ffffffffffff1690565b161561177f57610140840180519093906110d0906001600160a01b03165b6001600160a01b031690565b1561164e575b60608501926110ec6110e88551151590565b1590565b8061163f575b61162e576101a086015f825b611574575b5050845161111a91506001600160a01b03166110c4565b15611394575b60c08501519060e086015161113490151590565b6101008701516101208801516102008901516102208a01516102408b01516102608c01516001600160a01b039081169791811696928116959381169416929161117b610f8a565b988952151560208901528701526001600160a01b031660608601526001600160a01b031660808501526001600160a01b031660a08401526001600160a01b031660c08301526001600160a01b031660e08201526111d79061218a565b83516001600160a01b03165f805462010000600160b01b03191660109290921b62010000600160b01b031691909117905560208401516001600160a01b0316600180546001600160a01b0319166001600160a01b0390921691909117905561123e426122fe565b6001805465ffffffffffff60a01b191660a09290921b65ffffffffffff60a01b169190911790555165ffffffffffff16600180546001600160d01b031660d09290921b6001600160d01b0319169190911790555115156112a89060ff80195f541691151516175f55565b60808201515f805461ff00191691151560081b61ff001691909117905560a0820151600455516001600160a01b031661133e916101e091808516611384575b506101608101516001600160a01b0316848116611374575b506101808101516001600160a01b0316848116611364575b506101c08101516001600160a01b0316848116611354575b5001516001600160a01b031690565b9081166113485750565b61135190611bab565b50565b61135d90611b3c565b505f61132f565b61136d90611acd565b505f611317565b61137d906119f7565b505f6112ff565b61138d90611946565b505f6112e7565b94939291906113a660e0850151151590565b8015611554575b156114be576101208401516113ca906001600160a01b03166110c4565b1580158161149e575b80611471575b156113ef578651630331eb0f60e41b8152600490fd5b610100859697929394950151159081159161144e575b81611421575b50156111205751630331eb0f60e41b8152600490fd5b90508061142f575b5f61140b565b50610260850151611448906001600160a01b03166110c4565b15611429565b610240870151909150611469906001600160a01b03166110c4565b151590611405565b506101008501511580156113d95750610240850151611498906001600160a01b03166110c4565b156113d9565b506102608501516114b7906001600160a01b03166110c4565b15156113d3565b90919293946114da6110c461012087015160018060a01b031690565b15801590611546575b8015611526575b8015611506575b156111205751630331eb0f60e41b8152600490fd5b5061024085015161151f906001600160a01b03166110c4565b15156114f1565b5061026085015161153f906001600160a01b03166110c4565b15156114ea565b5061010085015115156114e3565b5061022084015161156d906001600160a01b03166110c4565b15156113ad565b81518051821015611628576110c461158f8361159c936120c0565b516001600160a01b031690565b15611617576115d56115ce6115b561158f8486516120c0565b6001600160a01b03165f90815260056020526040902090565b5460ff1690565b611606579082826115fe6115f16115b561158f859787516120c0565b805460ff19166001179055565b0190916110fe565b835163a741a04560e01b8152600490fd5b8351630da30f6560e31b8152600490fd5b50611103565b815163ebf503c560e01b8152600490fd5b506101a08601515115156110f2565b610160850151611666906001600160a01b03166110c4565b1561171c575b6101c0850151611684906001600160a01b03166110c4565b1561168f575b6110d6565b6080850151156116d95760a085015115806116ba575b156110d6575163183c854560e21b8152600490fd5b506101e08501516116d3906001600160a01b03166110c4565b156116a5565b60a0850151158015906116fc575b1561168a575163183c854560e21b8152600490fd5b506101e0850151611715906001600160a01b03166110c4565b15156116e7565b6060850151156117525761018085015161173e906001600160a01b03166110c4565b61166c575163183c854560e21b8152600490fd5b61018085015161176a906001600160a01b03166110c4565b1561166c575163183c854560e21b8152600490fd5b82516368f5f8f160e11b8152600490fd5b6040516368f7a67560e11b8152600490fd5b6117b6906117ae61215c565b610f2f61215c565b5f61105d565b6001600160a01b03908116908115611815575f8051602061233183398151915280546001600160a01b031981168417909155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b604051631e4fbdf760e01b81525f6004820152602490fd5b916118446001926001600160401b03923691610fd4565b9216036118e65780805161010092839181010312610311576118dc610f97926040519261187084610f48565b6020810151845261188360408201611ebc565b60208501526060810151604085015261189e60808201611e9e565b60608501526118af60a08201611e9e565b60808501526118c060c08201611e9e565b60a08501526118d160e08201611e9e565b60c085015201611e9e565b60e08201526122af565b604051630a1824e360e01b8152600490fd5b5f8181525f805160206123518339815191526020908152604080832033845290915290205460ff16156119285750565b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260409020545f805160206123518339815191529060ff166119f1575f808052602091825260408082206001600160a01b038516835290925220805460ff1916600117905533906001600160a01b03165f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b50505f90565b6001600160a01b0381165f9081527f03b26b53c87faa1058f30bb5d2fee64f717719a0d9b7e4f4df027aa5e9b6ed69602052604090207fbae4ee3de6c709ff9a002e774c5b78cb381560b219213c88ae0f1e207c03c023905f805160206123518339815191529060ff905b5416611ac6575f828152602091825260408082206001600160a01b038616835290925220805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b5050505f90565b6001600160a01b0381165f9081527f0287ab4cb376ea253d7b2ce0c2cbf458f7deae9458470d74afdfbbee484e9540602052604090207f9c56d972d63cbb4195b3c1484691dfc220fa96a4c47e7b6613bd82a022029e06905f805160206123518339815191529060ff90611a62565b6001600160a01b0381165f9081527fe41986b390c4ce6791b87f7423b5fab7a81a0e6d89660b6264f697d008b2243a602052604090207fc6aaadd7371d5e8f9ed6849dd66a66573a3ba37167d03f4352c9ba5693678fac905f805160206123518339815191529060ff90611a62565b6001600160a01b0381165f9081527f2d4ccbfe9f7672a6f2537c1e5bce6adacb73706879154bbab6ce096012d67216602052604090207f4a634bc14d77baf979756509ef4298c6f6318af357828612545267ee2eb79233905f805160206123518339815191529060ff90611a62565b6001600160a01b0381165f9081527f99e47f2907af87dbb5c62e22bd8ea822f5011dfd1e243469ce26ebebf3ab93e3602052604090207f591f6a0113ada8aff67efadec8ae2fa585cb4ebf4e1f8fc1205ffbeff98d00ec905f805160206123518339815191529060ff90611a62565b6001600160a01b0381165f9081527f665296150f4083bfe5a58682f99690b24ea27a3f56243679fa9797c6a16217aa602052604090207fc9feed28b4b1a1d11c6791da7bb7f6b8d33e831a4992a9383dead1ec2c82c35a905f805160206123518339815191529060ff90611a62565b6001600160a01b0381165f9081527f82a1dc868a49801aa31c5dd393dc0b9005735300cdcd4bbc1af68215effcd6f8602052604090207fc9078c78bcaac2be1c77c160c539a489be2b72939771b1a6302fed3e2150c745905f805160206123518339815191529060ff90611a62565b6001600160a01b0381165f9081527f9aeaa4f1a9be826e331dea6728ca206744e0a34dccbc1d3da4a68acb8abf0363602052604090207f5295aaaa27fdd659293eafacbfafbc634c1b96298957e87de5f59308cdbfdad1905f805160206123518339815191529060ff90611a62565b5f8181525f80516020612351833981519152602081815260408084206001600160a01b038716855290915290912060ff90611a62565b5f8181525f80516020612351833981519152602081815260408084206001600160a01b03871685529091529091205460ff1615611ac6575f828152602091825260408082206001600160a01b038616835290925220805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b5190610f9782610633565b519065ffffffffffff8216820361031157565b5190811515820361031157565b81601f82011215610311578051916020916001600160401b038411610f64578360051b9060405194611efd85840187610f69565b85528380860192820101928311610311578301905b828210611f20575050505090565b8380918351611f2e81610633565b815201910190611f12565b906020828203126103115781516001600160401b03928382116103115701906102808282031261031157611f6b610f99565b92611f7583611e9e565b8452611f8360208401611e9e565b6020850152611f9460408401611ea9565b6040850152611fa560608401611ebc565b6060850152611fb660808401611ebc565b608085015260a083015160a085015260c083015160c0850152611fdb60e08401611ebc565b60e08501526101008084015190850152610120611ff9818501611e9e565b9085015261014061200b818501611e9e565b9085015261016061201d818501611e9e565b9085015261018061202f818501611e9e565b908501526101a091828401519182116103115761204d918401611ec9565b908301526101c061205f818301611e9e565b908301526101e0612071818301611e9e565b90830152610200612083818301611e9e565b90830152610220612095818301611e9e565b908301526102406120a7818301611e9e565b908301526120b9610260809201611e9e565b9082015290565b80518210156120d45760209160051b010190565b634e487b7160e01b5f52603260045260245ffd5b5f80516020612331833981519152546001600160a01b0316330361210857565b60405163118cdaa760e01b8152336004820152602490fd5b365f80375f8036817f00000000000000000000000000000000000000000000000000000000000000005af43d5f803e15612158573d5ff35b3d5ffd5b60ff5f805160206123718339815191525460401c161561217857565b604051631afcd79f60e31b8152600490fd5b60038151106122895761219d8151600f55565b6121cc6121ad6020830151151590565b6016805460ff60a01b191691151560a01b60ff60a01b16919091179055565b6121d96040820151601555565b6060810151601680546001600160a01b0319166001600160a01b039283161790556080820151909161224d9160e09190841680612279575b5060a08101516001600160a01b0316848116612269575b5060c08101516001600160a01b0316848116612260575001516001600160a01b031690565b9081166122575750565b61135190611d67565b61135d90611cf8565b61227290611c89565b505f612228565b61228290611c1a565b505f612211565b6040516317a509b960e31b8152600490fd5b634e487b7160e01b5f52601160045260245ffd5b6122b88161218a565b5160011981019081116122f95760015460d01c908181029181830414901517156122f95762093a80116122e757565b60405163119796df60e01b8152600490fd5b61229b565b65ffffffffffff90818111612311571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fdfe9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930002dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212200394ed9b2a6869ef1bbd342392386b95b77822ee3245c11d726e0cf3df07b32564736f6c63430008190033","sourceMap":"852:7369:106:-:0;;;;;;-1:-1:-1;;;;;852:7369:106;;;;;;;;;-1:-1:-1;;852:7369:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;8837:64:26;;852:7369:106;;;;;;;;;7896:76:26;;852:7369:106;;;;7985:34:26;7981:146;;-1:-1:-1;927:17:82;;;;;1444:31:106;;852:7369;;;;;;;927:17:82;852:7369:106;;;;;;;;;;1444:31;852:7369;;;;;;7981:146:26;-1:-1:-1;;;;;;852:7369:106;;;;;;;;;;;;;8087:29:26;;852:7369:106;;8087:29:26;7981:146;;;;;7896:76;852:7369:106;;-1:-1:-1;;;7938:23:26;;;;;852:7369:106;-1:-1:-1;852:7369:106;;;;;;-1:-1:-1;852:7369:106;;;;;-1:-1:-1;852:7369:106;;;;-1:-1:-1;;;;;852:7369:106;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x608060405260043610612120575f3560e01c806301ffc9a7146102bb5780631415519b146102b65780631b66c9e1146102b1578063248a9ca3146102ac57806327810b6e146102a75780632abe3048146102a25780632dd310001461029d5780632f2ff15d1461029857806331d9736c1461029357806336568abe1461028e57806348d3b7751461028957806350861adc1461028457806354fd4d501461027f57806357ec83cc1461027a5780635cc070761461027557806361819dd814610270578063653b04cd1461026b57806365d61c6c146102665780636ec1e3f814610261578063715018a61461025c578063794b15b7146102575780638da5cb5b1461025257806391d148541461024d5780639f86fd8514610248578063a1b1220214610243578063a217fddf1461023e578063a21a1df914610239578063a3b5417214610234578063a5d032231461022f578063a66b3a731461022a578063a8b24f9a14610225578063afba70ad14610220578063b13442711461021b578063bc46f72214610216578063ce9b793014610211578063d547741f1461020c578063d8dfeb4514610207578063db38871514610202578063e945da7f146101fd578063ecc98f05146101f8578063ecf70858146101f3578063f151f6b5146101ee5763f2fde38b0361212057610f07565b610eea565b610ecd565b610eaf565b610e92565b610e58565b610e2d565b610de1565b610db9565b610d7f565b610d57565b610d2d565b610d05565b610ccb565b610c85565b610c38565b610bfe565b610be4565b610bc0565b610af3565b610a95565b610a61565b610a21565b6109ba565b610995565b610970565b610936565b6108fc565b6108d2565b61078d565b61075b565b610736565b610715565b6106ca565b610690565b610644565b6105ef565b61042d565b6103c2565b610389565b61034f565b610315565b346103115760203660031901126103115760043563ffffffff60e01b811680910361031157602090637965db0b60e01b8114908115610300575b506040519015158152f35b6301ffc9a760e01b1490505f6102f5565b5f80fd5b34610311575f3660031901126103115760206040517fc6aaadd7371d5e8f9ed6849dd66a66573a3ba37167d03f4352c9ba5693678fac8152f35b34610311575f3660031901126103115760206040517f9c56d972d63cbb4195b3c1484691dfc220fa96a4c47e7b6613bd82a022029e068152f35b34610311576020366003190112610311576004355f525f805160206123518339815191526020526020600160405f200154604051908152f35b34610311575f366003190112610311576001546040516001600160a01b039091168152602090f35b600435906001600160401b038216820361031157565b9181601f84011215610311578235916001600160401b038311610311576020838186019501011161031157565b3461031157604080600319360112610311576104476103ea565b906001600160401b0360243581811161031157610468903690600401610400565b917f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0060028154146105de57600290557f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036105cd575f8051602061237183398151915280548281169260ff82881c1680156105c1575b6105b05767ffffffffffffffff199091169087161790555f80516020612371833981519152805460ff60401b1916600160401b1790557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29461058294909390926105519261182d565b5f80516020612371833981519152805460ff60401b19169055516001600160401b0390911681529081906020820190565b0390a16105ae60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b005b865163f92ee8a960e01b8152600490fd5b508088168410156104e8565b8351631966391b60e11b8152600490fd5b8451633ee5aeb560e01b8152600490fd5b34610311575f366003190112610311576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6001600160a01b0381160361031157565b34610311576040366003190112610311576105ae60243560043561066782610633565b805f525f8051602061235183398151915260205261068b600160405f2001546118f8565b611dd6565b34610311575f3660031901126103115760206040517f5295aaaa27fdd659293eafacbfafbc634c1b96298957e87de5f59308cdbfdad18152f35b34610311576040366003190112610311576024356106e781610633565b336001600160a01b03821603610703576105ae90600435611e0c565b60405163334bd91960e11b8152600490fd5b34610311575f36600319011261031157602060ff5f54166040519015158152f35b34610311575f36600319011261031157602060ff60025460a01c166040519015158152f35b34610311575f3660031901126103115760206001600160401b035f805160206123718339815191525416604051908152f35b34610311576060366003190112610311576107a66103ea565b6024356107b281610633565b6001600160401b0391604435838111610311576107d3903690600401610400565b5f805160206123718339815191529491855494838616806108c15760ff8760401c169081156108b4575b506108a2577fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29661089d9661086a958716906001600160401b0319161790556108655f80516020612371833981519152600160401b68ff000000000000000019825416179055565b61100a565b5f80516020612371833981519152805460ff60401b191690556040516001600160401b0390911681529081906020820190565b0390a1005b60405163f92ee8a960e01b8152600490fd5b905084861611155f6107fd565b60405162dc149f60e41b8152600490fd5b34610311576020366003190112610311576004355f526006602052602060405f2054604051908152f35b34610311575f3660031901126103115760206040517f591f6a0113ada8aff67efadec8ae2fa585cb4ebf4e1f8fc1205ffbeff98d00ec8152f35b34610311575f3660031901126103115760206040517f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd98152f35b34610311575f36600319011261031157602060ff60165460a01c166040519015158152f35b34610311575f36600319011261031157602060ff60035460a01c166040519015158152f35b34610311575f366003190112610311576109d26120e8565b5f8051602061233183398151915280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461031157602036600319011261031157600435610a3e81610633565b60018060a01b03165f526005602052602060ff60405f2054166040519015158152f35b34610311575f366003190112610311575f80516020612331833981519152546040516001600160a01b039091168152602090f35b3461031157604036600319011261031157602060ff610ae7602435610ab981610633565b6004355f525f80516020612351833981519152845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b346103115760408060031936011261031157600435610b1181610633565b6024356001600160401b038111610311575f80610baf93610b386080943690600401610400565b908188519283928337810184815203915af43d15610bb75760203d610b5c81610fb9565b90610b6987519283610f69565b81523d5f8383013e5b8551958693151583850152808401528051918291826060860152018484015e5f838284010152601f80199101168101036060810184520182610f69565b805190602001fd5b60206060610b72565b34610311575f36600319011261031157602060ff5f5460081c166040519015158152f35b34610311575f3660031901126103115760206040515f8152f35b34610311575f3660031901126103115760206040517f4a634bc14d77baf979756509ef4298c6f6318af357828612545267ee2eb792338152f35b34610311576040366003190112610311576020610c7c602435610c5a81610633565b6004355f526008835260405f209060018060a01b03165f5260205260405f2090565b54604051908152f35b3461031157604036600319011261031157602060ff610ae7602435610ca981610633565b6004355f526009845260405f209060018060a01b03165f5260205260405f2090565b34610311575f3660031901126103115760206040517fc9feed28b4b1a1d11c6791da7bb7f6b8d33e831a4992a9383dead1ec2c82c35a8152f35b34610311575f366003190112610311576016546040516001600160a01b039091168152602090f35b34610311576020366003190112610311576004355f526007602052602060405f2054604051908152f35b34610311575f366003190112610311576003546040516001600160a01b039091168152602090f35b34610311575f3660031901126103115760206040517fc9078c78bcaac2be1c77c160c539a489be2b72939771b1a6302fed3e2150c7458152f35b34610311575f366003190112610311576002546040516001600160a01b039091168152602090f35b34610311576040366003190112610311576105ae602435600435610e0482610633565b805f525f80516020612351833981519152602052610e28600160405f2001546118f8565b611e0c565b34610311575f366003190112610311575f5460405160109190911c6001600160a01b03168152602090f35b34610311575f3660031901126103115760206040517fbae4ee3de6c709ff9a002e774c5b78cb381560b219213c88ae0f1e207c03c0238152f35b34610311575f366003190112610311576020601554604051908152f35b34610311575f366003190112610311576020604051633b9aca008152f35b34610311575f366003190112610311576020600454604051908152f35b34610311575f36600319011261031157602060405162093a808152f35b34610311576020366003190112610311576105ae600435610f2781610633565b610f2f6120e8565b6117bc565b634e487b7160e01b5f52604160045260245ffd5b61010081019081106001600160401b03821117610f6457604052565b610f34565b90601f801991011681019081106001600160401b03821117610f6457604052565b60405190610f9782610f48565b565b6040519061028082018281106001600160401b03821117610f6457604052565b6001600160401b038111610f6457601f01601f191660200190565b929192610fe082610fb9565b91610fee6040519384610f69565b829481845281830111610311578281602093845f960137010152565b91906110656110749161101b61215c565b61102361215c565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f008190556001600160a01b03959094908087166117a2575b503691610fd4565b60208082518301019101611f39565b805190919083166001600160a01b0316156117905760409081830165ffffffffffff6110a6825165ffffffffffff1690565b161561177f57610140840180519093906110d0906001600160a01b03165b6001600160a01b031690565b1561164e575b60608501926110ec6110e88551151590565b1590565b8061163f575b61162e576101a086015f825b611574575b5050845161111a91506001600160a01b03166110c4565b15611394575b60c08501519060e086015161113490151590565b6101008701516101208801516102008901516102208a01516102408b01516102608c01516001600160a01b039081169791811696928116959381169416929161117b610f8a565b988952151560208901528701526001600160a01b031660608601526001600160a01b031660808501526001600160a01b031660a08401526001600160a01b031660c08301526001600160a01b031660e08201526111d79061218a565b83516001600160a01b03165f805462010000600160b01b03191660109290921b62010000600160b01b031691909117905560208401516001600160a01b0316600180546001600160a01b0319166001600160a01b0390921691909117905561123e426122fe565b6001805465ffffffffffff60a01b191660a09290921b65ffffffffffff60a01b169190911790555165ffffffffffff16600180546001600160d01b031660d09290921b6001600160d01b0319169190911790555115156112a89060ff80195f541691151516175f55565b60808201515f805461ff00191691151560081b61ff001691909117905560a0820151600455516001600160a01b031661133e916101e091808516611384575b506101608101516001600160a01b0316848116611374575b506101808101516001600160a01b0316848116611364575b506101c08101516001600160a01b0316848116611354575b5001516001600160a01b031690565b9081166113485750565b61135190611bab565b50565b61135d90611b3c565b505f61132f565b61136d90611acd565b505f611317565b61137d906119f7565b505f6112ff565b61138d90611946565b505f6112e7565b94939291906113a660e0850151151590565b8015611554575b156114be576101208401516113ca906001600160a01b03166110c4565b1580158161149e575b80611471575b156113ef578651630331eb0f60e41b8152600490fd5b610100859697929394950151159081159161144e575b81611421575b50156111205751630331eb0f60e41b8152600490fd5b90508061142f575b5f61140b565b50610260850151611448906001600160a01b03166110c4565b15611429565b610240870151909150611469906001600160a01b03166110c4565b151590611405565b506101008501511580156113d95750610240850151611498906001600160a01b03166110c4565b156113d9565b506102608501516114b7906001600160a01b03166110c4565b15156113d3565b90919293946114da6110c461012087015160018060a01b031690565b15801590611546575b8015611526575b8015611506575b156111205751630331eb0f60e41b8152600490fd5b5061024085015161151f906001600160a01b03166110c4565b15156114f1565b5061026085015161153f906001600160a01b03166110c4565b15156114ea565b5061010085015115156114e3565b5061022084015161156d906001600160a01b03166110c4565b15156113ad565b81518051821015611628576110c461158f8361159c936120c0565b516001600160a01b031690565b15611617576115d56115ce6115b561158f8486516120c0565b6001600160a01b03165f90815260056020526040902090565b5460ff1690565b611606579082826115fe6115f16115b561158f859787516120c0565b805460ff19166001179055565b0190916110fe565b835163a741a04560e01b8152600490fd5b8351630da30f6560e31b8152600490fd5b50611103565b815163ebf503c560e01b8152600490fd5b506101a08601515115156110f2565b610160850151611666906001600160a01b03166110c4565b1561171c575b6101c0850151611684906001600160a01b03166110c4565b1561168f575b6110d6565b6080850151156116d95760a085015115806116ba575b156110d6575163183c854560e21b8152600490fd5b506101e08501516116d3906001600160a01b03166110c4565b156116a5565b60a0850151158015906116fc575b1561168a575163183c854560e21b8152600490fd5b506101e0850151611715906001600160a01b03166110c4565b15156116e7565b6060850151156117525761018085015161173e906001600160a01b03166110c4565b61166c575163183c854560e21b8152600490fd5b61018085015161176a906001600160a01b03166110c4565b1561166c575163183c854560e21b8152600490fd5b82516368f5f8f160e11b8152600490fd5b6040516368f7a67560e11b8152600490fd5b6117b6906117ae61215c565b610f2f61215c565b5f61105d565b6001600160a01b03908116908115611815575f8051602061233183398151915280546001600160a01b031981168417909155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b604051631e4fbdf760e01b81525f6004820152602490fd5b916118446001926001600160401b03923691610fd4565b9216036118e65780805161010092839181010312610311576118dc610f97926040519261187084610f48565b6020810151845261188360408201611ebc565b60208501526060810151604085015261189e60808201611e9e565b60608501526118af60a08201611e9e565b60808501526118c060c08201611e9e565b60a08501526118d160e08201611e9e565b60c085015201611e9e565b60e08201526122af565b604051630a1824e360e01b8152600490fd5b5f8181525f805160206123518339815191526020908152604080832033845290915290205460ff16156119285750565b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260409020545f805160206123518339815191529060ff166119f1575f808052602091825260408082206001600160a01b038516835290925220805460ff1916600117905533906001600160a01b03165f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b50505f90565b6001600160a01b0381165f9081527f03b26b53c87faa1058f30bb5d2fee64f717719a0d9b7e4f4df027aa5e9b6ed69602052604090207fbae4ee3de6c709ff9a002e774c5b78cb381560b219213c88ae0f1e207c03c023905f805160206123518339815191529060ff905b5416611ac6575f828152602091825260408082206001600160a01b038616835290925220805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b5050505f90565b6001600160a01b0381165f9081527f0287ab4cb376ea253d7b2ce0c2cbf458f7deae9458470d74afdfbbee484e9540602052604090207f9c56d972d63cbb4195b3c1484691dfc220fa96a4c47e7b6613bd82a022029e06905f805160206123518339815191529060ff90611a62565b6001600160a01b0381165f9081527fe41986b390c4ce6791b87f7423b5fab7a81a0e6d89660b6264f697d008b2243a602052604090207fc6aaadd7371d5e8f9ed6849dd66a66573a3ba37167d03f4352c9ba5693678fac905f805160206123518339815191529060ff90611a62565b6001600160a01b0381165f9081527f2d4ccbfe9f7672a6f2537c1e5bce6adacb73706879154bbab6ce096012d67216602052604090207f4a634bc14d77baf979756509ef4298c6f6318af357828612545267ee2eb79233905f805160206123518339815191529060ff90611a62565b6001600160a01b0381165f9081527f99e47f2907af87dbb5c62e22bd8ea822f5011dfd1e243469ce26ebebf3ab93e3602052604090207f591f6a0113ada8aff67efadec8ae2fa585cb4ebf4e1f8fc1205ffbeff98d00ec905f805160206123518339815191529060ff90611a62565b6001600160a01b0381165f9081527f665296150f4083bfe5a58682f99690b24ea27a3f56243679fa9797c6a16217aa602052604090207fc9feed28b4b1a1d11c6791da7bb7f6b8d33e831a4992a9383dead1ec2c82c35a905f805160206123518339815191529060ff90611a62565b6001600160a01b0381165f9081527f82a1dc868a49801aa31c5dd393dc0b9005735300cdcd4bbc1af68215effcd6f8602052604090207fc9078c78bcaac2be1c77c160c539a489be2b72939771b1a6302fed3e2150c745905f805160206123518339815191529060ff90611a62565b6001600160a01b0381165f9081527f9aeaa4f1a9be826e331dea6728ca206744e0a34dccbc1d3da4a68acb8abf0363602052604090207f5295aaaa27fdd659293eafacbfafbc634c1b96298957e87de5f59308cdbfdad1905f805160206123518339815191529060ff90611a62565b5f8181525f80516020612351833981519152602081815260408084206001600160a01b038716855290915290912060ff90611a62565b5f8181525f80516020612351833981519152602081815260408084206001600160a01b03871685529091529091205460ff1615611ac6575f828152602091825260408082206001600160a01b038616835290925220805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b5190610f9782610633565b519065ffffffffffff8216820361031157565b5190811515820361031157565b81601f82011215610311578051916020916001600160401b038411610f64578360051b9060405194611efd85840187610f69565b85528380860192820101928311610311578301905b828210611f20575050505090565b8380918351611f2e81610633565b815201910190611f12565b906020828203126103115781516001600160401b03928382116103115701906102808282031261031157611f6b610f99565b92611f7583611e9e565b8452611f8360208401611e9e565b6020850152611f9460408401611ea9565b6040850152611fa560608401611ebc565b6060850152611fb660808401611ebc565b608085015260a083015160a085015260c083015160c0850152611fdb60e08401611ebc565b60e08501526101008084015190850152610120611ff9818501611e9e565b9085015261014061200b818501611e9e565b9085015261016061201d818501611e9e565b9085015261018061202f818501611e9e565b908501526101a091828401519182116103115761204d918401611ec9565b908301526101c061205f818301611e9e565b908301526101e0612071818301611e9e565b90830152610200612083818301611e9e565b90830152610220612095818301611e9e565b908301526102406120a7818301611e9e565b908301526120b9610260809201611e9e565b9082015290565b80518210156120d45760209160051b010190565b634e487b7160e01b5f52603260045260245ffd5b5f80516020612331833981519152546001600160a01b0316330361210857565b60405163118cdaa760e01b8152336004820152602490fd5b365f80375f8036817f00000000000000000000000000000000000000000000000000000000000000005af43d5f803e15612158573d5ff35b3d5ffd5b60ff5f805160206123718339815191525460401c161561217857565b604051631afcd79f60e31b8152600490fd5b60038151106122895761219d8151600f55565b6121cc6121ad6020830151151590565b6016805460ff60a01b191691151560a01b60ff60a01b16919091179055565b6121d96040820151601555565b6060810151601680546001600160a01b0319166001600160a01b039283161790556080820151909161224d9160e09190841680612279575b5060a08101516001600160a01b0316848116612269575b5060c08101516001600160a01b0316848116612260575001516001600160a01b031690565b9081166122575750565b61135190611d67565b61135d90611cf8565b61227290611c89565b505f612228565b61228290611c1a565b505f612211565b6040516317a509b960e31b8152600490fd5b634e487b7160e01b5f52601160045260245ffd5b6122b88161218a565b5160011981019081116122f95760015460d01c908181029181830414901517156122f95762093a80116122e757565b60405163119796df60e01b8152600490fd5b61229b565b65ffffffffffff90818111612311571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fdfe9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930002dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212200394ed9b2a6869ef1bbd342392386b95b77822ee3245c11d726e0cf3df07b32564736f6c63430008190033","sourceMap":"852:7369:106:-:0;;;;;;2603:64:50;852:7369:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2603:64:50;852:7369:106;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;-1:-1:-1;;852:7369:106;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3551:47:23;;;:87;;;;852:7369:106;;;;;;;;;;3551:87:23;-1:-1:-1;;;1134:40:32;;-1:-1:-1;3551:87:23;;;852:7369:106;-1:-1:-1;852:7369:106;;;;;;;;-1:-1:-1;;852:7369:106;;;;;;;757:38:108;852:7369:106;;;;;;;;;-1:-1:-1;;852:7369:106;;;;;;;612:37:108;852:7369:106;;;;;;;;;-1:-1:-1;;852:7369:106;;;;;;-1:-1:-1;852:7369:106;-1:-1:-1;;;;;;;;;;;852:7369:106;;;4919:24:23;852:7369:106;-1:-1:-1;852:7369:106;4919:24:23;852:7369:106;;;;;;;;;;;;;-1:-1:-1;;852:7369:106;;;;;;;;-1:-1:-1;;;;;852:7369:106;;;;;;;;;;;;-1:-1:-1;;;;;852:7369:106;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;852:7369:106;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;852:7369:106;;;;;;;;;;;;;;:::i;:::-;2499:73:30;;1991:1;852:7369:106;;3670:20:30;3666:88;;1991:1;;;1673:7:82;-1:-1:-1;;;;;852:7369:106;1659:10:82;:21;1655:71;;-1:-1:-1;;;;;;;;;;;852:7369:106;;;;;;;;;;;6431:44:26;;;;852:7369:106;6427:105:26;;-1:-1:-1;;852:7369:106;;;;;;;;;-1:-1:-1;;;;;;;;;;;852:7369:106;;-1:-1:-1;;;;852:7369:106;-1:-1:-1;;;852:7369:106;;;6656:20:26;;;;852:7369:106;;;;1809:204:82;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;852:7369:106;;-1:-1:-1;;;;852:7369:106;;;;-1:-1:-1;;;;;852:7369:106;;;;;;;;;;;;;6656:20:26;;;;3426:1:30;1949;2499:73;1991:1;3860:283;3426:1;852:7369:106;6427:105:26;852:7369:106;;-1:-1:-1;;;6498:23:26;;852:7369:106;;6498:23:26;6431:44;852:7369:106;;;;6450:25:26;;;6431:44;;1655:71:82;852:7369:106;;-1:-1:-1;;;1703:12:82;;852:7369:106;;1703:12:82;3666:88:30;852:7369:106;;-1:-1:-1;;;3713:30:30;;852:7369:106;;3713:30:30;852:7369:106;;;;;;-1:-1:-1;;852:7369:106;;;;;;655:32:82;-1:-1:-1;;;;;852:7369:106;;;;;;;-1:-1:-1;;;;;852:7369:106;;;;;:::o;:::-;;;;;;-1:-1:-1;;852:7369:106;;;;5350:25:23;852:7369:106;;;;;;;:::i;:::-;;-1:-1:-1;852:7369:106;-1:-1:-1;;;;;;;;;;;852:7369:106;;3202:4:23;4919:24;852:7369:106;-1:-1:-1;852:7369:106;4919:24:23;852:7369:106;3202:4:23;:::i;:::-;5350:25;:::i;852:7369:106:-;;;;;;-1:-1:-1;;852:7369:106;;;;;;;1479:40:108;852:7369:106;;;;;;;;;-1:-1:-1;;852:7369:106;;;;;;;;;:::i;:::-;966:10:28;-1:-1:-1;;;;;852:7369:106;;6441:34:23;6437:102;;6549:37;852:7369:106;;;6549:37:23;:::i;6437:102::-;852:7369:106;;-1:-1:-1;;;6498:30:23;;852:7369:106;;6498:30:23;852:7369:106;;;;;;-1:-1:-1;;852:7369:106;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;852:7369:106;;;;;;2297:34:108;852:7369:106;;;;;;;;;;;;;;;;;;-1:-1:-1;;852:7369:106;;;;;-1:-1:-1;;;;;;;;;;;;;;;;852:7369:106;;;;;;;;;;;;;;-1:-1:-1;;852:7369:106;;;;;;:::i;:::-;;;;;;:::i;:::-;-1:-1:-1;;;;;852:7369:106;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;8837:64:26;;852:7369:106;;;;;;734:29:82;730:87;;852:7369:106;;;;;6431:44:26;;;;;852:7369:106;6427:105:26;;;6656:20;852:7369:106;6656:20:26;852:7369:106;1167:340:82;852:7369:106;;;;-1:-1:-1;;;;;852:7369:106;;;;;6575:22:26;-1:-1:-1;;;;;;;;;;;;;;852:7369:106;;;;;;;;;6575:22:26;1167:340:82;:::i;:::-;-1:-1:-1;;;;;;;;;;;852:7369:106;;-1:-1:-1;;;;852:7369:106;;;;;-1:-1:-1;;;;;852:7369:106;;;;;;;;;;;;;6656:20:26;;;;852:7369:106;6427:105:26;852:7369:106;;-1:-1:-1;;;6498:23:26;;852:7369:106;;6498:23:26;6431:44;852:7369:106;;;;;-1:-1:-1;6450:25:26;6431:44;;;730:87:82;852:7369:106;;-1:-1:-1;;;786:20:82;;852:7369:106;;786:20:82;852:7369:106;;;;;;-1:-1:-1;;852:7369:106;;;;;;-1:-1:-1;852:7369:106;2760:59:108;852:7369:106;;;;-1:-1:-1;852:7369:106;;;;;;;;;;;;;;-1:-1:-1;;852:7369:106;;;;;;;1041:36:108;852:7369:106;;;;;;;;;-1:-1:-1;;852:7369:106;;;;;;;1714:45:108;852:7369:106;;;;;;;;;-1:-1:-1;;852:7369:106;;;;;;4070:28:108;852:7369:106;;;;;;;;;;;;;;;;;;-1:-1:-1;;852:7369:106;;;;;;2465:32:108;852:7369:106;;;;;;;;;;;;;;;;;;-1:-1:-1;;852:7369:106;;;;2303:62:24;;:::i;:::-;-1:-1:-1;;;;;;;;;;;852:7369:106;;-1:-1:-1;;;;;;852:7369:106;;;;;;;-1:-1:-1;;;;;852:7369:106;3975:40:24;852:7369:106;;3975:40:24;852:7369:106;;;;;;;-1:-1:-1;;852:7369:106;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;852:7369:106;2636:68:108;852:7369:106;;;;;-1:-1:-1;852:7369:106;;;;;;;;;;;;;;;;;-1:-1:-1;;852:7369:106;;;;-1:-1:-1;;;;;;;;;;;852:7369:106;;;-1:-1:-1;;;;;852:7369:106;;;;;;;;;;;;;;-1:-1:-1;;852:7369:106;;;;;;3901:31:23;852:7369:106;;;;;:::i;:::-;;;-1:-1:-1;852:7369:106;-1:-1:-1;;;;;;;;;;;852:7369:106;;;-1:-1:-1;852:7369:106;;;;;;;;;;;;;;;;;3901:31:23;852:7369:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;852:7369:106;;;;-1:-1:-1;852:7369:106;477:31:86;852:7369:106;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;416:25:86;;;;852:7369:106;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;852:7369:106;;;;;;;;;;;;477:31:86;;;852:7369:106;;;;;;;;;;;;;;;;;;;;-1:-1:-1;852:7369:106;;;;;;;;;;;;;;477:31:86;852:7369:106;477:31:86;;;;;;;:::i;:::-;518:79;;;852:7369:106;518:79:86;;852:7369:106;;;;;;;;;;;-1:-1:-1;;852:7369:106;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;852:7369:106;;;;;;;;;;;;;;;;;-1:-1:-1;;852:7369:106;;;;;;;900:35:108;852:7369:106;;;;;;;;;-1:-1:-1;;852:7369:106;;;;;2995:94:108;852:7369:106;;;;;:::i;:::-;;;-1:-1:-1;852:7369:106;2995:94:108;852:7369:106;;;-1:-1:-1;852:7369:106;;;;;;;;;;;;;;;;;2995:94:108;852:7369:106;;;;;;;;;;;;;-1:-1:-1;;852:7369:106;;;;;;3145:92:108;852:7369:106;;;;;:::i;:::-;;;-1:-1:-1;852:7369:106;3145:92:108;852:7369:106;;;-1:-1:-1;852:7369:106;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;852:7369:106;;;;;;;1187:40:108;852:7369:106;;;;;;;;;-1:-1:-1;;852:7369:106;;;;3983:31:108;852:7369:106;;;-1:-1:-1;;;;;852:7369:106;;;;;;;;;;;;;;-1:-1:-1;;852:7369:106;;;;;;-1:-1:-1;852:7369:106;2875:64:108;852:7369:106;;;;-1:-1:-1;852:7369:106;;;;;;;;;;;;;;-1:-1:-1;;852:7369:106;;;;2387:22:108;852:7369:106;;;-1:-1:-1;;;;;852:7369:106;;;;;;;;;;;;;;-1:-1:-1;;852:7369:106;;;;;;;1333:36:108;852:7369:106;;;;;;;;;-1:-1:-1;;852:7369:106;;;;2217:24:108;852:7369:106;;;-1:-1:-1;;;;;852:7369:106;;;;;;;;;;;;;;-1:-1:-1;;852:7369:106;;;;5767:26:23;852:7369:106;;;;;;;:::i;:::-;;-1:-1:-1;852:7369:106;-1:-1:-1;;;;;;;;;;;852:7369:106;;3202:4:23;4919:24;852:7369:106;-1:-1:-1;852:7369:106;4919:24:23;852:7369:106;3202:4:23;:::i;:::-;5767:26;:::i;852:7369:106:-;;;;;;-1:-1:-1;;852:7369:106;;;;;;;;;;;;;-1:-1:-1;;;;;852:7369:106;;;;;;;;;;;;-1:-1:-1;;852:7369:106;;;;;;;466:39:108;852:7369:106;;;;;;;;;-1:-1:-1;;852:7369:106;;;;;3900:27:108;852:7369:106;;;;;;;;;;;;;-1:-1:-1;;852:7369:106;;;;;;;1616:3:108;852:7369:106;;;;;;;;;-1:-1:-1;;852:7369:106;;;;;;;;;;;;;;;;;;;-1:-1:-1;;852:7369:106;;;;;;;1285:6;852:7369;;;;;;;;;-1:-1:-1;;852:7369:106;;;;2357:1:24;852:7369:106;;;;;:::i;:::-;2303:62:24;;:::i;:::-;2357:1;:::i;852:7369:106:-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;852:7369:106;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;852:7369:106;;;;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;852:7369:106;;;;;;;:::o;:::-;-1:-1:-1;;;;;852:7369:106;;;;;;-1:-1:-1;;852:7369:106;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;852:7369:106;;;;;;:::o;1167:340:82:-;;;852:7369:106;3165:37;1167:340:82;6893:76:26;;:::i;:::-;;;:::i;:::-;1949:1:30;2499:73;1991:1;;;-1:-1:-1;;;;;852:7369:106;1949:1:30;;1991;852:7369:106;;;1376:73:82;;1167:340;852:7369:106;;;;:::i;:::-;3165:37;852:7369;;;3165:37;;;;;;:::i;:::-;852:7369;;;;;;;-1:-1:-1;;;;;852:7369:106;3217:31;3213:95;;3322:20;;;;;852:7369;;;;;;;;;;3322:25;3318:92;;3424:29;;;852:7369;;3424:29;;852:7369;3424:43;;-1:-1:-1;;;;;852:7369:106;;-1:-1:-1;;;;;852:7369:106;;;3424:43;;3420:971;;1167:340:82;4406:23:106;;;852:7369;4405:24;852:7369;;;;;;;;4405:24;;852:7369;4405:24;:67;;;1167:340:82;4401:132:106;;4563:28;;;-1:-1:-1;4548:9:106;1949:1:30;;;4543:411:106;-1:-1:-1;;852:7369:106;;4968:43;;-1:-1:-1;;;;;;852:7369:106;;;4968:43;;4964:1124;;4543:411;6201:34;;;852:7369;6271:23;;;;852:7369;;;;;;;;6326:19;;;852:7369;6381:23;;;852:7369;6450:33;;;852:7369;6532:36;;;852:7369;6613:32;;;852:7369;6694:36;;;852:7369;-1:-1:-1;;;;;852:7369:106;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;3165:37;6133:612;;852:7369;6133:612;;852:7369;-1:-1:-1;;;;;852:7369:106;4406:23;6133:612;;852:7369;-1:-1:-1;;;;;852:7369:106;6133:612;;;852:7369;-1:-1:-1;;;;;852:7369:106;6133:612;;;852:7369;-1:-1:-1;;;;;852:7369:106;6201:34;6133:612;;852:7369;-1:-1:-1;;;;;852:7369:106;6271:23;6133:612;;852:7369;6133:612;;;:::i;:::-;852:7369;;-1:-1:-1;;;;;852:7369:106;1398:1:82;852:7369:106;;-1:-1:-1;;;;;;852:7369:106;;;;;;-1:-1:-1;;;;;852:7369:106;;;;;;;3165:37;6816:13;;852:7369;-1:-1:-1;;;;;852:7369:106;;;;-1:-1:-1;;;;;;852:7369:106;-1:-1:-1;;;;;852:7369:106;;;;;;;;;819:34:73;837:15;819:34;:::i;:::-;1949:1:30;852:7369:106;;-1:-1:-1;;;;852:7369:106;;;;;;-1:-1:-1;;;852:7369:106;;;;;;;;;;1949:1:30;852:7369:106;;-1:-1:-1;;;;;852:7369:106;;;;;;-1:-1:-1;;;;;;852:7369:106;;;;;;;;;;6935:42;;852:7369;;;1398:1:82;852:7369:106;;;;;;;1398:1:82;852:7369:106;;6935:42;6133:612;7005:21;;852:7369;1398:1:82;852:7369:106;;-1:-1:-1;;852:7369:106;;;;;;;;;;;;;;6133:612;7051:19;;852:7369;7036:34;1991:1:30;852:7369:106;-1:-1:-1;;;;;852:7369:106;;;7718:32;;852:7369;;;7081:135;;4543:411;-1:-1:-1;7229:36:106;;;852:7369;-1:-1:-1;;;;;852:7369:106;;;;7225:157;;4543:411;-1:-1:-1;7395:35:106;;;852:7369;-1:-1:-1;;;;;852:7369:106;;;;7391:153;;4543:411;-1:-1:-1;7557:34:106;;;852:7369;-1:-1:-1;;;;;852:7369:106;;;;7553:152;;4543:411;-1:-1:-1;7718:32:106;852:7369;-1:-1:-1;;;;;852:7369:106;;;;;;;7714:145;;1167:340:82;:::o;7714:145:106:-;7780:68;;;:::i;:::-;;1167:340:82:o;7553:152:106:-;7621:73;;;:::i;:::-;;7553:152;;;7391:153;7460:73;;;:::i;:::-;;7391:153;;;7225:157;7295:76;;;:::i;:::-;;7225:157;;;7081:135;7144:61;;;:::i;:::-;;7081:135;;;4964:1124;5031:23;;;;;852:7369;5031:23;;;852:7369;;;;;;5031:77;;;;4964:1124;5027:1051;;;5154:23;;;852:7369;5154:37;;-1:-1:-1;;;;;852:7369:106;;;5154:37;;;;;:91;;5027:1051;5153:197;;;5027:1051;5128:638;;;852:7369;;-1:-1:-1;;;5398:27:106;;;;;5128:638;5476:19;;;;;;;;;852:7369;5476:24;;;;:74;;;5128:638;5475:197;;;5128:638;5450:316;;4964:1124;5450:316;852:7369;-1:-1:-1;;;5720:27:106;;;;;5475:197;5580:91;-1:-1:-1;5580:91:106;;;5475:197;;;;5580:91;-1:-1:-1;5621:36:106;;;852:7369;5621:50;;-1:-1:-1;;;;;852:7369:106;;;5621:50;;5580:91;;5476:74;5504:32;;;852:7369;5504:32;;-1:-1:-1;5504:46:106;;-1:-1:-1;;;;;852:7369:106;;;5504:46;;;5476:74;;;5153:197;5275:19;;;;852:7369;5275:24;:74;;5153:197;5275:74;-1:-1:-1;5303:32:106;;;852:7369;5303:46;;-1:-1:-1;;;;;852:7369:106;;;5303:46;;5153:197;;5154:91;-1:-1:-1;5195:36:106;;;852:7369;5195:50;;-1:-1:-1;;;;;852:7369:106;;;5195:50;;;5154:91;;5027:1051;5807:23;;;;;:37;852:7369;5807:23;;;852:7369;;;;;;;;;5807:37;;;;:65;;;5027:1051;5807:139;;;;5027:1051;5807:189;;;;5027:1051;5786:292;4964:1124;5786:292;852:7369;-1:-1:-1;;;6036:27:106;;;;;5807:189;-1:-1:-1;5950:32:106;;;852:7369;5950:46;;-1:-1:-1;;;;;852:7369:106;;;5950:46;;;5807:189;;:139;-1:-1:-1;5896:36:106;;;852:7369;5896:50;;-1:-1:-1;;;;;852:7369:106;;;5896:50;;;5807:139;;:65;5848:19;;;;852:7369;5848:24;;5807:65;;5031:77;-1:-1:-1;5058:36:106;;;852:7369;5058:50;;-1:-1:-1;;;;;852:7369:106;;;5058:50;;;5031:77;;4600:3;4563:28;;852:7369;;4559:39;;;;;4623:31;;;:45;:31;;:::i;:::-;852:7369;-1:-1:-1;;;;;852:7369:106;;;4623:45;;4619:114;;4751:55;;4774:31;;:28;;;:31;:::i;:::-;-1:-1:-1;;;;;852:7369:106;;;;;4751:22;852:7369;;;;;;;4751:55;852:7369;;;;;4751:55;4747:120;;4904:28;;;4881:62;:55;4904:31;;:28;;;;:31;:::i;4881:55::-;852:7369;;-1:-1:-1;;852:7369:106;1949:1:30;852:7369:106;;;;4881:62;852:7369;4548:9;;;;4747:120;852:7369;;-1:-1:-1;;;4833:19:106;;;;;4619:114;852:7369;;-1:-1:-1;;;4695:23:106;;;;;4559:39;;;;4401:132;852:7369;;-1:-1:-1;;;4495:27:106;;;;;4405:67;4433:28;;;;;852:7369;4433:39;;4405:67;;3420:971;3487:36;;;852:7369;3487:50;;-1:-1:-1;;;;;852:7369:106;;;3487:50;;3483:419;;3420:971;3920:34;;;852:7369;3920:48;;-1:-1:-1;;;;;852:7369:106;;;3920:48;;3916:465;;3420:971;;;3916:465;3992:21;;;852:7369;;3992:21;;4041:19;;;852:7369;4041:24;:74;;;3988:379;4037:157;3420:971;4037:157;852:7369;-1:-1:-1;;;4150:21:106;;;;;4041:74;-1:-1:-1;4069:32:106;;;852:7369;4069:46;;-1:-1:-1;;;;;852:7369:106;;;4069:46;;4041:74;;3988:379;4222:19;;;852:7369;4222:24;;;:74;;;3988:379;4218:149;3916:465;4218:149;852:7369;-1:-1:-1;;;4327:21:106;;;;;4222:74;-1:-1:-1;4250:32:106;;;852:7369;4250:46;;-1:-1:-1;;;;;852:7369:106;;;4250:46;;;4222:74;;3483:419;3561:23;;;852:7369;;3561:23;;3612:35;;;852:7369;3612:49;;-1:-1:-1;;;;;852:7369:106;;;3612:49;3483:419;3608:132;852:7369;-1:-1:-1;;;3696:21:106;;;;;3557:331;3768:35;;;852:7369;3768:49;;-1:-1:-1;;;;;852:7369:106;;;3768:49;3764:124;3483:419;3764:124;852:7369;-1:-1:-1;;;3848:21:106;;;;;3318:92;852:7369;;-1:-1:-1;;;3370:29:106;;;;;3213:95;852:7369;;-1:-1:-1;;;3271:26:106;;;;;1376:73:82;6961:1:26;6893:76;;;:::i;:::-;;;:::i;6961:1::-;1376:73:82;;;3405:215:24;-1:-1:-1;;;;;852:7369:106;;;;3489:22:24;;3485:91;;-1:-1:-1;;;;;;;;;;;852:7369:106;;-1:-1:-1;;;;;;852:7369:106;;;;;;;;3975:40:24;-1:-1:-1;;3975:40:24;3405:215::o;3485:91::-;852:7369:106;;-1:-1:-1;;;3534:31:24;;3509:1;3534:31;;;852:7369:106;;;3534:31:24;1809:204:82;;852:7369:106;8006:1;1809:204:82;-1:-1:-1;;;;;1809:204:82;852:7369:106;;;:::i;:::-;;;7992:15;8006:1;;852:7369;;;;8062:40;;;;;852:7369;;;;;8135:6;852:7369;;;;;;;:::i;:::-;8062:40;;;852:7369;;;;;;;;:::i;:::-;8062:40;852:7369;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;8135:6;:::i;7988:225::-;852:7369;;-1:-1:-1;;;8180:22:106;;;;;4148:103:23;-1:-1:-1;852:7369:106;;;-1:-1:-1;;;;;;;;;;;852:7369:106;;;;;;;;966:10:28;852:7369:106;;;;;;;;;;4468:23:23;4464:108;;4148:103;:::o;4464:108::-;852:7369:106;;;;4514:47:23;;;;;;966:10:28;4514:47:23;;;852:7369:106;;;;;4514:47:23;7270:387;-1:-1:-1;;;;;852:7369:106;;1398:1:82;852:7369:106;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2887:71:23;852:7369:106;;;;1398:1:82;852:7369:106;;;;;;;;;;;-1:-1:-1;;;;;852:7369:106;;;;;;;;;;-1:-1:-1;;852:7369:106;7509:4:23;852:7369:106;;;966:10:28;;-1:-1:-1;;;;;852:7369:106;-1:-1:-1;7532:40:23;-1:-1:-1;;7532:40:23;7509:4;7586:11;:::o;7432:219::-;7628:12;;1398:1:82;7628:12:23;:::o;7270:387::-;-1:-1:-1;;;;;852:7369:106;;-1:-1:-1;852:7369:106;;;;;;;;;466:39:108;;-1:-1:-1;;;;;;;;;;;2887:71:23;852:7369:106;;3901:31:23;852:7369:106;;;;-1:-1:-1;852:7369:106;;;;;;;;;;;-1:-1:-1;;;;;852:7369:106;;;;;;;;;;-1:-1:-1;;852:7369:106;7509:4:23;852:7369:106;;;966:10:28;;-1:-1:-1;;;;;852:7369:106;;7532:40:23;-1:-1:-1;;7532:40:23;7509:4;7586:11;:::o;7432:219::-;7628:12;;;-1:-1:-1;7628:12:23;:::o;7270:387::-;-1:-1:-1;;;;;852:7369:106;;-1:-1:-1;852:7369:106;;;;;;;;;612:37:108;;-1:-1:-1;;;;;;;;;;;2887:71:23;852:7369:106;;3901:31:23;852:7369:106;7270:387:23;-1:-1:-1;;;;;852:7369:106;;-1:-1:-1;852:7369:106;;;;;;;;;757:38:108;;-1:-1:-1;;;;;;;;;;;2887:71:23;852:7369:106;;3901:31:23;852:7369:106;7270:387:23;-1:-1:-1;;;;;852:7369:106;;-1:-1:-1;852:7369:106;;;;;;;;;900:35:108;;-1:-1:-1;;;;;;;;;;;2887:71:23;852:7369:106;;3901:31:23;852:7369:106;7270:387:23;-1:-1:-1;;;;;852:7369:106;;-1:-1:-1;852:7369:106;;;;;;;;;1041:36:108;;-1:-1:-1;;;;;;;;;;;2887:71:23;852:7369:106;;3901:31:23;852:7369:106;7270:387:23;-1:-1:-1;;;;;852:7369:106;;-1:-1:-1;852:7369:106;;;;;;;;;1187:40:108;;-1:-1:-1;;;;;;;;;;;2887:71:23;852:7369:106;;3901:31:23;852:7369:106;7270:387:23;-1:-1:-1;;;;;852:7369:106;;-1:-1:-1;852:7369:106;;;;;;;;;1333:36:108;;-1:-1:-1;;;;;;;;;;;2887:71:23;852:7369:106;;3901:31:23;852:7369:106;7270:387:23;-1:-1:-1;;;;;852:7369:106;;-1:-1:-1;852:7369:106;;;;;;;;;1479:40:108;;-1:-1:-1;;;;;;;;;;;2887:71:23;852:7369:106;;3901:31:23;852:7369:106;7270:387:23;-1:-1:-1;852:7369:106;;;-1:-1:-1;;;;;;;;;;;852:7369:106;;;;;;;;-1:-1:-1;;;;;852:7369:106;;;;;;;;;;;;3901:31:23;852:7369:106;7892:388:23;-1:-1:-1;852:7369:106;;;-1:-1:-1;;;;;;;;;;;852:7369:106;;;;;;;;-1:-1:-1;;;;;852:7369:106;;;;;;;;;;;;;;;;-1:-1:-1;852:7369:106;;;;;;;;;;;-1:-1:-1;;;;;852:7369:106;;;;;;;;;;-1:-1:-1;;852:7369:106;;;966:10:28;;-1:-1:-1;;;;;852:7369:106;;8155:40:23;-1:-1:-1;;8155:40:23;852:7369:106;8209:11:23;:::o;852:7369:106:-;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;852:7369:106;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;852:7369:106;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;2658:162:24;-1:-1:-1;;;;;;;;;;;852:7369:106;-1:-1:-1;;;;;852:7369:106;966:10:28;2717:23:24;2713:101;;2658:162::o;2713:101::-;852:7369:106;;-1:-1:-1;;;2763:40:24;;966:10:28;2763:40:24;;;852:7369:106;;;2763:40:24;2323:83:50;1019:819;;;;;;;1614:14:106;;1019:819:50;;;;;;;;;;;;;;;;7084:141:26;852:7369:106;-1:-1:-1;;;;;;;;;;;852:7369:106;;;;7150:18:26;7146:73;;7084:141::o;7146:73::-;852:7369:106;;-1:-1:-1;;;7191:17:26;;;;;1641:1097:106;1782:1;852:7369;;1745:38;1741:119;;1870:65;852:7369;;1870:65;1991:1:30;;1870:65:106;1946:42;852:7369;1965:23;;;852:7369;;;;;;1946:42;852:7369;;-1:-1:-1;;;;852:7369:106;;;;;;-1:-1:-1;;;852:7369:106;;;;;;;;1946:42;1998:34;2013:19;;;852:7369;1998:34;1991:1:30;;1998:34:106;2061:23;;;852:7369;1946:42;852:7369;;-1:-1:-1;;;;;;852:7369:106;-1:-1:-1;;;;;852:7369:106;;;;;;2099:33;;;852:7369;;;;;2578:36;;2061:23;852:7369;;;2095:148;;1641:1097;-1:-1:-1;2256:36:106;;;852:7369;-1:-1:-1;;;;;852:7369:106;;;;2252:158;;1641:1097;-1:-1:-1;2423:32:106;;;852:7369;-1:-1:-1;;;;;852:7369:106;;;;2419:146;;-1:-1:-1;2578:36:106;852:7369;-1:-1:-1;;;;;852:7369:106;;;;;;;2574:158;;1641:1097;:::o;2574:158::-;2644:77;;;:::i;2419:146::-;2485:69;;;:::i;2252:158::-;2322:77;;;:::i;:::-;;2252:158;;;2095:148;2162:70;;;:::i;:::-;;2095:148;;;1741:119;852:7369;;-1:-1:-1;;;1806:43:106;;;;;852:7369;;;;;;;;;;;;2744:286;2862:6;;;:::i;:::-;852:7369;-1:-1:-1;;852:7369:106;;;;;;;2927:14;852:7369;;;;;;;;;;;;;;;;;;1285:6;-1:-1:-1;2880:144:106;;2744:286::o;2880:144::-;852:7369;;-1:-1:-1;;;2982:31:106;;;;;852:7369;;:::i;14296:213:69:-;852:7369:106;14374:24:69;;;;14370:103;;852:7369:106;14296:213:69;:::o;14370:103::-;852:7369:106;;;;14421:41:69;;;;;;14452:2;14421:41;;;852:7369:106;;;;;14421:41:69","linkReferences":{},"immutableReferences":{"60067":[{"start":1177,"length":32},{"start":1540,"length":32}],"69325":[{"start":8490,"length":32}]}},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","DEPOSITOR_WHITELIST_ROLE()":"1b66c9e1","DEPOSIT_LIMIT_SET_ROLE()":"a21a1df9","DEPOSIT_WHITELIST_SET_ROLE()":"db388715","EPOCH_DURATION_SET_ROLE()":"61819dd8","FACTORY()":"2dd31000","FLASH_FEE_BASE()":"ecc98f05","FLASH_FEE_RATE_SET_ROLE()":"bc46f722","FLASH_FEE_RECEIVER_SET_ROLE()":"31d9736c","FLASH_LOAN_ENABLED_SET_ROLE()":"a66b3a73","IS_DEPOSIT_LIMIT_SET_ROLE()":"1415519b","MIN_EXIT_WINDOW()":"f151f6b5","RETURN_VALUE()":"653b04cd","burner()":"27810b6e","collateral()":"d8dfeb45","delegator()":"ce9b7930","depositLimit()":"ecf70858","depositWhitelist()":"48d3b775","flashFeeRate()":"e945da7f","flashFeeReceiver()":"a8b24f9a","flashLoanEnabled()":"65d61c6c","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","initialize(uint64,address,bytes)":"57ec83cc","isDelegatorInitialized()":"50861adc","isDepositLimit()":"a1b12202","isDepositorWhitelisted(address)":"794b15b7","isSlasherInitialized()":"6ec1e3f8","isWithdrawalsClaimed(uint256,address)":"a5d03223","migrate(uint64,bytes)":"2abe3048","owner()":"8da5cb5b","renounceOwnership()":"715018a6","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","slasher()":"b1344271","staticDelegateCall(address,bytes)":"9f86fd85","supportsInterface(bytes4)":"01ffc9a7","transferOwnership(address)":"f2fde38b","version()":"54fd4d50","withdrawalShares(uint256)":"afba70ad","withdrawalSharesOf(uint256,address)":"a3b54172","withdrawals(uint256)":"5cc07076"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vaultFactory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadySet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientExitWindow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCollateral\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEpochDuration\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEpochDurationSetEpochsDelay\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidFlashParams\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOrigin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingRoles\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoDepositWhitelist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotFactory\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEPOSITOR_WHITELIST_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEPOSIT_LIMIT_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEPOSIT_WHITELIST_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"EPOCH_DURATION_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FLASH_FEE_BASE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FLASH_FEE_RATE_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FLASH_FEE_RECEIVER_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FLASH_LOAN_ENABLED_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"IS_DEPOSIT_LIMIT_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MIN_EXIT_WINDOW\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RETURN_VALUE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"burner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"collateral\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"delegator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"depositLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"depositWhitelist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"flashFeeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"flashFeeReceiver\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"flashLoanEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"initialVersion\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner_\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isDelegatorInitialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isDepositLimit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isDepositorWhitelisted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isSlasherInitialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isWithdrawalsClaimed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newVersion\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"migrate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slasher\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"staticDelegateCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"}],\"name\":\"withdrawalShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"withdrawalSharesOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"}],\"name\":\"withdrawals\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize(uint64,address,bytes)\":{\"params\":{\"data\":\"some data to use\",\"initialVersion\":\"initial version of the entity\",\"owner\":\"initial owner of the entity\"}},\"migrate(uint64,bytes)\":{\"params\":{\"data\":\"some data to use\",\"newVersion\":\"new version of the entity\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"staticDelegateCall(address,bytes)\":{\"details\":\"It allows to use this contract's storage on-chain.\",\"params\":{\"data\":\"data to make a delegatecall with\",\"target\":\"address of the contract to make a delegatecall to\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"version()\":{\"details\":\"Starts from 1.\",\"returns\":{\"_0\":\"version of the entity\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DEPOSITOR_WHITELIST_ROLE()\":{\"notice\":\"Get a depositor whitelist status setter's role.\"},\"DEPOSIT_LIMIT_SET_ROLE()\":{\"notice\":\"Get a deposit limit setter's role.\"},\"DEPOSIT_WHITELIST_SET_ROLE()\":{\"notice\":\"Get a deposit whitelist enabler/disabler's role.\"},\"EPOCH_DURATION_SET_ROLE()\":{\"notice\":\"Get a epoch duration setter's role.\"},\"FACTORY()\":{\"notice\":\"Get the factory's address.\"},\"FLASH_FEE_BASE()\":{\"notice\":\"Get a flash fee base.\"},\"FLASH_FEE_RATE_SET_ROLE()\":{\"notice\":\"Get a flash fee rate setter's role.\"},\"FLASH_FEE_RECEIVER_SET_ROLE()\":{\"notice\":\"Get a flash fee receiver setter's role.\"},\"FLASH_LOAN_ENABLED_SET_ROLE()\":{\"notice\":\"Get a flash loan enabled setter's role.\"},\"IS_DEPOSIT_LIMIT_SET_ROLE()\":{\"notice\":\"Get a deposit limit enabler/disabler's role.\"},\"MIN_EXIT_WINDOW()\":{\"notice\":\"The minimum period of time that must be available to exit in case of epoch increase after migration.\"},\"RETURN_VALUE()\":{\"notice\":\"Get a value that must be returned by the flash loan borrower.\"},\"burner()\":{\"notice\":\"Get a burner to issue debt to (e.g., 0xdEaD or some unwrapper contract).\"},\"collateral()\":{\"notice\":\"Get a vault collateral.\"},\"delegator()\":{\"notice\":\"Get a delegator (it delegates the vault's stake to networks and operators).\"},\"depositLimit()\":{\"notice\":\"Get a deposit limit (maximum amount of the active stake that can be in the vault simultaneously).\"},\"depositWhitelist()\":{\"notice\":\"Get if the deposit whitelist is enabled.\"},\"flashFeeRate()\":{\"notice\":\"Get a flash fee rate (100% = 1_000_000_000; 0.03% = 300_000).\"},\"flashFeeReceiver()\":{\"notice\":\"Get a flash fee receiver.\"},\"flashLoanEnabled()\":{\"notice\":\"Get if a flash loan mechanic is enabled.\"},\"initialize(uint64,address,bytes)\":{\"notice\":\"Initialize this entity contract by using a given data and setting a particular version and owner.\"},\"isDelegatorInitialized()\":{\"notice\":\"Get if the delegator is initialized.\"},\"isDepositLimit()\":{\"notice\":\"Get if the deposit limit is set.\"},\"isDepositorWhitelisted(address)\":{\"notice\":\"Get if a given account is whitelisted as a depositor.\"},\"isSlasherInitialized()\":{\"notice\":\"Get if the slasher is initialized.\"},\"isWithdrawalsClaimed(uint256,address)\":{\"notice\":\"Get if the withdrawals are claimed for a particular account at a given epoch.\"},\"migrate(uint64,bytes)\":{\"notice\":\"Migrate this entity to a particular newer version using a given data.\"},\"slasher()\":{\"notice\":\"Get a slasher (it provides networks a slashing mechanism).\"},\"staticDelegateCall(address,bytes)\":{\"notice\":\"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data).\"},\"version()\":{\"notice\":\"Get the entity's version.\"},\"withdrawalShares(uint256)\":{\"notice\":\"Get a total number of withdrawal shares at a given epoch.\"},\"withdrawalSharesOf(uint256,address)\":{\"notice\":\"Get a number of withdrawal shares for a particular account at a given epoch (zero if claimed).\"},\"withdrawals(uint256)\":{\"notice\":\"Get a total amount of the withdrawals at a given epoch.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/vault/v1.1/Vault.sol\":\"Vault\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf\",\"dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89\",\"dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1\",\"dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol\":{\"keccak256\":\"0x0b1459615b9b47c2a4eec8e72f23ccc601f1d711f679a1c06b3390459021a341\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aaf6209fb90f02ebd1c9603568f5e6da5fa2f896820ba66b5041eeed993dc4ce\",\"dweb:/ipfs/QmYsSH2PSGbTXMVXXxhh9AXzfHPSz2j42REvds6xjU7WmR\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashLender.sol\":{\"keccak256\":\"0x5d19ea24c555cf6a5dbafea9fac57887cc3e72154f3ee8e0a2bf67971811c14b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3af1364c971d94bccf3efcc509b2c5c03fe1c69ea9945ba29a96998bfd6c593e\",\"dweb:/ipfs/Qmczq52prNGX5tHuk8aENZsuYgxTeA6YVMHV7yMTKeFjbr\"]},\"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44\",\"dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6\",\"dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza\"]},\"src/contracts/common/MigratableEntity.sol\":{\"keccak256\":\"0x303ad40a3de8fa808cc30a6fbd5998633f6a89b982e6db1fa981e0566ab445e7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://fa8fb92995ead02798e013190b87b84b44cc68668262f045c9b0b4783940e2bf\",\"dweb:/ipfs/QmV1uKGVLKwWisc714R8fCt71gXUQJpaKvdc6LQ8WtvMpL\"]},\"src/contracts/common/StaticDelegateCallable.sol\":{\"keccak256\":\"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764\",\"dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD\"]},\"src/contracts/libraries/Checkpoints.sol\":{\"keccak256\":\"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609\",\"dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE\"]},\"src/contracts/vault/v1.1/Vault.sol\":{\"keccak256\":\"0x0809cdc31876a00412d127f2b10589a38ef0110585f7ee70d4e50a560812c15e\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://66ed92da583d2e0b4eba1e07e5d7569a9f3bebfaa1d82968f3ca124d840e1618\",\"dweb:/ipfs/QmWR7gbmGyZAo6LCTtx3pRMviN7ZBsxp1kGndTmo4CFGRc\"]},\"src/contracts/vault/v1.1/VaultStorage.sol\":{\"keccak256\":\"0x510c83437bb493d66c299aec31ccd9d741e1348299b4170d891d476218231d19\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://8879b6b1ad9ecc8ffa5d7725b03158dc2f65e30ac65fe3af9c654277740039e0\",\"dweb:/ipfs/QmdC4DkajUbGuRzaCsqegJWGTxXvooWFCVkU7EdXG9mou2\"]},\"src/interfaces/common/IMigratableEntity.sol\":{\"keccak256\":\"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c\",\"dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds\"]},\"src/interfaces/common/IStaticDelegateCallable.sol\":{\"keccak256\":\"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516\",\"dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi\"]},\"src/interfaces/vault/v1.1/IVault.sol\":{\"keccak256\":\"0x41c3b7c7955923f29d7a913dcd49a2f7c4c40339eda1cdf675d04bf15168fbd4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7f26841febf819da87037e7f285fb4e9c3a3191d2cc9284d4679bd5f3d5eb79\",\"dweb:/ipfs/QmejKi1svukhK2bwGPvSXLzG4oMKUZo7xEm1gNvuYWNbDK\"]},\"src/interfaces/vault/v1.1/IVaultStorage.sol\":{\"keccak256\":\"0x762053f3cc4cb5809c48b846a77b36e697323b2011118c2df8ea2692a02ece5b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282252083722ebdb1e8977ba1fd4860e15acb49bb4ec337632dd14304863b1d\",\"dweb:/ipfs/QmNNBo5HaWBenQZLgnjF3NbxVRupfgYeUMztYYQMpD9VoB\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"vaultFactory","type":"address"},{"internalType":"address","name":"implementation","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"inputs":[],"type":"error","name":"AlreadyInitialized"},{"inputs":[],"type":"error","name":"AlreadySet"},{"inputs":[],"type":"error","name":"InsufficientExitWindow"},{"inputs":[],"type":"error","name":"InvalidAccount"},{"inputs":[],"type":"error","name":"InvalidCollateral"},{"inputs":[],"type":"error","name":"InvalidEpochDuration"},{"inputs":[],"type":"error","name":"InvalidEpochDurationSetEpochsDelay"},{"inputs":[],"type":"error","name":"InvalidFlashParams"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"InvalidOrigin"},{"inputs":[],"type":"error","name":"MissingRoles"},{"inputs":[],"type":"error","name":"NoDepositWhitelist"},{"inputs":[],"type":"error","name":"NotFactory"},{"inputs":[],"type":"error","name":"NotInitialized"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintDowncast"},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[],"stateMutability":"payable","type":"fallback"},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEPOSITOR_WHITELIST_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEPOSIT_LIMIT_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEPOSIT_WHITELIST_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"EPOCH_DURATION_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FLASH_FEE_BASE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FLASH_FEE_RATE_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FLASH_FEE_RECEIVER_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FLASH_LOAN_ENABLED_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_DEPOSIT_LIMIT_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MIN_EXIT_WINDOW","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"RETURN_VALUE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"burner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"collateral","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"delegator","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"depositLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"depositWhitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"flashFeeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"flashFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"flashLoanEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"initialVersion","type":"uint64"},{"internalType":"address","name":"owner_","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"isDelegatorInitialized","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"isDepositLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"isDepositorWhitelisted","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"isSlasherInitialized","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"isWithdrawalsClaimed","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"newVersion","type":"uint64"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"migrate"},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[],"stateMutability":"view","type":"function","name":"slasher","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"staticDelegateCall"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"version","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"}],"stateMutability":"view","type":"function","name":"withdrawalShares","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"withdrawalSharesOf","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"}],"stateMutability":"view","type":"function","name":"withdrawals","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"initialize(uint64,address,bytes)":{"params":{"data":"some data to use","initialVersion":"initial version of the entity","owner":"initial owner of the entity"}},"migrate(uint64,bytes)":{"params":{"data":"some data to use","newVersion":"new version of the entity"}},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"staticDelegateCall(address,bytes)":{"details":"It allows to use this contract's storage on-chain.","params":{"data":"data to make a delegatecall with","target":"address of the contract to make a delegatecall to"}},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"version()":{"details":"Starts from 1.","returns":{"_0":"version of the entity"}}},"version":1},"userdoc":{"kind":"user","methods":{"DEPOSITOR_WHITELIST_ROLE()":{"notice":"Get a depositor whitelist status setter's role."},"DEPOSIT_LIMIT_SET_ROLE()":{"notice":"Get a deposit limit setter's role."},"DEPOSIT_WHITELIST_SET_ROLE()":{"notice":"Get a deposit whitelist enabler/disabler's role."},"EPOCH_DURATION_SET_ROLE()":{"notice":"Get a epoch duration setter's role."},"FACTORY()":{"notice":"Get the factory's address."},"FLASH_FEE_BASE()":{"notice":"Get a flash fee base."},"FLASH_FEE_RATE_SET_ROLE()":{"notice":"Get a flash fee rate setter's role."},"FLASH_FEE_RECEIVER_SET_ROLE()":{"notice":"Get a flash fee receiver setter's role."},"FLASH_LOAN_ENABLED_SET_ROLE()":{"notice":"Get a flash loan enabled setter's role."},"IS_DEPOSIT_LIMIT_SET_ROLE()":{"notice":"Get a deposit limit enabler/disabler's role."},"MIN_EXIT_WINDOW()":{"notice":"The minimum period of time that must be available to exit in case of epoch increase after migration."},"RETURN_VALUE()":{"notice":"Get a value that must be returned by the flash loan borrower."},"burner()":{"notice":"Get a burner to issue debt to (e.g., 0xdEaD or some unwrapper contract)."},"collateral()":{"notice":"Get a vault collateral."},"delegator()":{"notice":"Get a delegator (it delegates the vault's stake to networks and operators)."},"depositLimit()":{"notice":"Get a deposit limit (maximum amount of the active stake that can be in the vault simultaneously)."},"depositWhitelist()":{"notice":"Get if the deposit whitelist is enabled."},"flashFeeRate()":{"notice":"Get a flash fee rate (100% = 1_000_000_000; 0.03% = 300_000)."},"flashFeeReceiver()":{"notice":"Get a flash fee receiver."},"flashLoanEnabled()":{"notice":"Get if a flash loan mechanic is enabled."},"initialize(uint64,address,bytes)":{"notice":"Initialize this entity contract by using a given data and setting a particular version and owner."},"isDelegatorInitialized()":{"notice":"Get if the delegator is initialized."},"isDepositLimit()":{"notice":"Get if the deposit limit is set."},"isDepositorWhitelisted(address)":{"notice":"Get if a given account is whitelisted as a depositor."},"isSlasherInitialized()":{"notice":"Get if the slasher is initialized."},"isWithdrawalsClaimed(uint256,address)":{"notice":"Get if the withdrawals are claimed for a particular account at a given epoch."},"migrate(uint64,bytes)":{"notice":"Migrate this entity to a particular newer version using a given data."},"slasher()":{"notice":"Get a slasher (it provides networks a slashing mechanism)."},"staticDelegateCall(address,bytes)":{"notice":"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data)."},"version()":{"notice":"Get the entity's version."},"withdrawalShares(uint256)":{"notice":"Get a total number of withdrawal shares at a given epoch."},"withdrawalSharesOf(uint256,address)":{"notice":"Get a number of withdrawal shares for a particular account at a given epoch (zero if claimed)."},"withdrawals(uint256)":{"notice":"Get a total amount of the withdrawals at a given epoch."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/vault/v1.1/Vault.sol":"Vault"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol":{"keccak256":"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866","urls":["bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf","dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab","urls":["bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89","dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606","urls":["bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1","dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol":{"keccak256":"0x0b1459615b9b47c2a4eec8e72f23ccc601f1d711f679a1c06b3390459021a341","urls":["bzz-raw://aaf6209fb90f02ebd1c9603568f5e6da5fa2f896820ba66b5041eeed993dc4ce","dweb:/ipfs/QmYsSH2PSGbTXMVXXxhh9AXzfHPSz2j42REvds6xjU7WmR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashLender.sol":{"keccak256":"0x5d19ea24c555cf6a5dbafea9fac57887cc3e72154f3ee8e0a2bf67971811c14b","urls":["bzz-raw://3af1364c971d94bccf3efcc509b2c5c03fe1c69ea9945ba29a96998bfd6c593e","dweb:/ipfs/Qmczq52prNGX5tHuk8aENZsuYgxTeA6YVMHV7yMTKeFjbr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol":{"keccak256":"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd","urls":["bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac","dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310","urls":["bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862","dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol":{"keccak256":"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f","urls":["bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44","dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc","urls":["bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6","dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza"],"license":"MIT"},"src/contracts/common/MigratableEntity.sol":{"keccak256":"0x303ad40a3de8fa808cc30a6fbd5998633f6a89b982e6db1fa981e0566ab445e7","urls":["bzz-raw://fa8fb92995ead02798e013190b87b84b44cc68668262f045c9b0b4783940e2bf","dweb:/ipfs/QmV1uKGVLKwWisc714R8fCt71gXUQJpaKvdc6LQ8WtvMpL"],"license":"BUSL-1.1"},"src/contracts/common/StaticDelegateCallable.sol":{"keccak256":"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90","urls":["bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764","dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD"],"license":"BUSL-1.1"},"src/contracts/libraries/Checkpoints.sol":{"keccak256":"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c","urls":["bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609","dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE"],"license":"MIT"},"src/contracts/vault/v1.1/Vault.sol":{"keccak256":"0x0809cdc31876a00412d127f2b10589a38ef0110585f7ee70d4e50a560812c15e","urls":["bzz-raw://66ed92da583d2e0b4eba1e07e5d7569a9f3bebfaa1d82968f3ca124d840e1618","dweb:/ipfs/QmWR7gbmGyZAo6LCTtx3pRMviN7ZBsxp1kGndTmo4CFGRc"],"license":"BUSL-1.1"},"src/contracts/vault/v1.1/VaultStorage.sol":{"keccak256":"0x510c83437bb493d66c299aec31ccd9d741e1348299b4170d891d476218231d19","urls":["bzz-raw://8879b6b1ad9ecc8ffa5d7725b03158dc2f65e30ac65fe3af9c654277740039e0","dweb:/ipfs/QmdC4DkajUbGuRzaCsqegJWGTxXvooWFCVkU7EdXG9mou2"],"license":"BUSL-1.1"},"src/interfaces/common/IMigratableEntity.sol":{"keccak256":"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4","urls":["bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c","dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds"],"license":"MIT"},"src/interfaces/common/IStaticDelegateCallable.sol":{"keccak256":"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5","urls":["bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516","dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi"],"license":"MIT"},"src/interfaces/vault/v1.1/IVault.sol":{"keccak256":"0x41c3b7c7955923f29d7a913dcd49a2f7c4c40339eda1cdf675d04bf15168fbd4","urls":["bzz-raw://b7f26841febf819da87037e7f285fb4e9c3a3191d2cc9284d4679bd5f3d5eb79","dweb:/ipfs/QmejKi1svukhK2bwGPvSXLzG4oMKUZo7xEm1gNvuYWNbDK"],"license":"MIT"},"src/interfaces/vault/v1.1/IVaultStorage.sol":{"keccak256":"0x762053f3cc4cb5809c48b846a77b36e697323b2011118c2df8ea2692a02ece5b","urls":["bzz-raw://5282252083722ebdb1e8977ba1fd4860e15acb49bb4ec337632dd14304863b1d","dweb:/ipfs/QmNNBo5HaWBenQZLgnjF3NbxVRupfgYeUMztYYQMpD9VoB"],"license":"MIT"}},"version":1},"id":106} \ No newline at end of file diff --git a/out/v1.1/VaultTokenized.sol/VaultTokenized.json b/out/v1.1/VaultTokenized.sol/VaultTokenized.json new file mode 100644 index 00000000..e0e0be2a --- /dev/null +++ b/out/v1.1/VaultTokenized.sol/VaultTokenized.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[{"name":"vaultFactory","type":"address","internalType":"address"},{"name":"implementation","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"fallback","stateMutability":"payable"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"DEPOSITOR_WHITELIST_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"DEPOSIT_LIMIT_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"DEPOSIT_WHITELIST_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"EPOCH_DURATION_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"FLASH_FEE_BASE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"FLASH_FEE_RATE_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"FLASH_FEE_RECEIVER_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"FLASH_LOAN_ENABLED_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"IS_DEPOSIT_LIMIT_SET_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"MIN_EXIT_WINDOW","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"RETURN_VALUE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"burner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"collateral","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"delegator","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"depositLimit","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"depositWhitelist","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"flashFeeRate","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"flashFeeReceiver","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"flashLoanEnabled","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"initialVersion","type":"uint64","internalType":"uint64"},{"name":"owner_","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isDelegatorInitialized","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isDepositLimit","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isDepositorWhitelisted","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isSlasherInitialized","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isWithdrawalsClaimed","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"migrate","inputs":[{"name":"newVersion","type":"uint64","internalType":"uint64"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"slasher","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"staticDelegateCall","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"version","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"withdrawalShares","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"withdrawalSharesOf","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"withdrawals","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"AlreadyInitialized","inputs":[]},{"type":"error","name":"AlreadySet","inputs":[]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"InsufficientExitWindow","inputs":[]},{"type":"error","name":"InvalidAccount","inputs":[]},{"type":"error","name":"InvalidCollateral","inputs":[]},{"type":"error","name":"InvalidEpochDuration","inputs":[]},{"type":"error","name":"InvalidEpochDurationSetEpochsDelay","inputs":[]},{"type":"error","name":"InvalidFlashParams","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"InvalidOrigin","inputs":[]},{"type":"error","name":"MissingRoles","inputs":[]},{"type":"error","name":"NoDepositWhitelist","inputs":[]},{"type":"error","name":"NotFactory","inputs":[]},{"type":"error","name":"NotInitialized","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x60c03461011c57612872906001600160401b0390601f38849003908101601f191682019083821183831017610120578083916040968794855283398101031261011c57610057602061005083610134565b9201610134565b917ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff82871c1661010b5780808316036100c7575b50505060805260a05251612729908161014982396080518181816104990152610604015260a05181818161114201526119740152f35b6001600160401b0319909116811790915583519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f8080610091565b855163f92ee8a960e01b8152600490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b038216820361011c5756fe60806040526004361061196a575f3560e01c806301ffc9a7146102bb5780631415519b146102b65780631b66c9e1146102b1578063248a9ca3146102ac57806327810b6e146102a75780632abe3048146102a25780632dd310001461029d5780632f2ff15d1461029857806331d9736c1461029357806336568abe1461028e57806348d3b7751461028957806350861adc1461028457806354fd4d501461027f57806357ec83cc1461027a5780635cc070761461027557806361819dd814610270578063653b04cd1461026b57806365d61c6c146102665780636ec1e3f814610261578063715018a61461025c578063794b15b7146102575780638da5cb5b1461025257806391d148541461024d5780639f86fd8514610248578063a1b1220214610243578063a217fddf1461023e578063a21a1df914610239578063a3b5417214610234578063a5d032231461022f578063a66b3a731461022a578063a8b24f9a14610225578063afba70ad14610220578063b13442711461021b578063bc46f72214610216578063ce9b793014610211578063d547741f1461020c578063d8dfeb4514610207578063db38871514610202578063e945da7f146101fd578063ecc98f05146101f8578063ecf70858146101f3578063f151f6b5146101ee5763f2fde38b0361196a57610ece565b610eb1565b610e94565b610e76565b610e59565b610e1f565b610df4565b610da8565b610d80565b610d46565b610d1e565b610cf4565b610ccc565b610c92565b610c4c565b610bff565b610bc5565b610bab565b610b87565b610af3565b610a95565b610a61565b610a21565b6109ba565b610995565b610970565b610936565b6108fc565b6108d2565b61078d565b61075b565b610736565b610715565b6106ca565b610690565b610644565b6105ef565b61042d565b6103c2565b610389565b61034f565b610315565b346103115760203660031901126103115760043563ffffffff60e01b811680910361031157602090637965db0b60e01b8114908115610300575b506040519015158152f35b6301ffc9a760e01b1490505f6102f5565b5f80fd5b34610311575f3660031901126103115760206040517fc6aaadd7371d5e8f9ed6849dd66a66573a3ba37167d03f4352c9ba5693678fac8152f35b34610311575f3660031901126103115760206040517f9c56d972d63cbb4195b3c1484691dfc220fa96a4c47e7b6613bd82a022029e068152f35b34610311576020366003190112610311576004355f525f805160206126b48339815191526020526020600160405f200154604051908152f35b34610311575f366003190112610311576001546040516001600160a01b039091168152602090f35b600435906001600160401b038216820361031157565b9181601f84011215610311578235916001600160401b038311610311576020838186019501011161031157565b3461031157604080600319360112610311576104476103ea565b906001600160401b0360243581811161031157610468903690600401610400565b917f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0060028154146105de57600290557f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036105cd575f805160206126d483398151915280548281169260ff82881c1680156105c1575b6105b05767ffffffffffffffff199091169087161790555f805160206126d4833981519152805460ff60401b1916600160401b1790557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d294610582949093909261055192611247565b5f805160206126d4833981519152805460ff60401b19169055516001600160401b0390911681529081906020820190565b0390a16105ae60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b005b865163f92ee8a960e01b8152600490fd5b508088168410156104e8565b8351631966391b60e11b8152600490fd5b8451633ee5aeb560e01b8152600490fd5b34610311575f366003190112610311576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6001600160a01b0381160361031157565b34610311576040366003190112610311576105ae60243560043561066782610633565b805f525f805160206126b483398151915260205261068b600160405f200154611303565b6117e1565b34610311575f3660031901126103115760206040517f5295aaaa27fdd659293eafacbfafbc634c1b96298957e87de5f59308cdbfdad18152f35b34610311576040366003190112610311576024356106e781610633565b336001600160a01b03821603610703576105ae90600435611817565b60405163334bd91960e11b8152600490fd5b34610311575f36600319011261031157602060ff5f54166040519015158152f35b34610311575f36600319011261031157602060ff60025460a01c166040519015158152f35b34610311575f3660031901126103115760206001600160401b035f805160206126d48339815191525416604051908152f35b34610311576060366003190112610311576107a66103ea565b6024356107b281610633565b6001600160401b0391604435838111610311576107d3903690600401610400565b5f805160206126d48339815191529491855494838616806108c15760ff8760401c169081156108b4575b506108a2577fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29661089d9661086a958716906001600160401b0319161790556108655f805160206126d4833981519152600160401b68ff000000000000000019825416179055565b610fe1565b5f805160206126d4833981519152805460ff60401b191690556040516001600160401b0390911681529081906020820190565b0390a1005b60405163f92ee8a960e01b8152600490fd5b905084861611155f6107fd565b60405162dc149f60e41b8152600490fd5b34610311576020366003190112610311576004355f526006602052602060405f2054604051908152f35b34610311575f3660031901126103115760206040517f591f6a0113ada8aff67efadec8ae2fa585cb4ebf4e1f8fc1205ffbeff98d00ec8152f35b34610311575f3660031901126103115760206040517f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd98152f35b34610311575f36600319011261031157602060ff60165460a01c166040519015158152f35b34610311575f36600319011261031157602060ff60035460a01c166040519015158152f35b34610311575f366003190112610311576109d2611932565b5f8051602061269483398151915280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461031157602036600319011261031157600435610a3e81610633565b60018060a01b03165f526005602052602060ff60405f2054166040519015158152f35b34610311575f366003190112610311575f80516020612694833981519152546040516001600160a01b039091168152602090f35b3461031157604036600319011261031157602060ff610ae7602435610ab981610633565b6004355f525f805160206126b4833981519152845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b3461031157604036600319011261031157600435610b1081610633565b6024356001600160401b038111610311575f91610b3283923690600401610400565b90816040519283928337810184815203915af4610b7f610b50611183565b91610b716040519384921515602084015260408084015260608301906111b2565b03601f198101835282610f2f565b805190602001fd5b34610311575f36600319011261031157602060ff5f5460081c166040519015158152f35b34610311575f3660031901126103115760206040515f8152f35b34610311575f3660031901126103115760206040517f4a634bc14d77baf979756509ef4298c6f6318af357828612545267ee2eb792338152f35b34610311576040366003190112610311576020610c43602435610c2181610633565b6004355f526008835260405f209060018060a01b03165f5260205260405f2090565b54604051908152f35b3461031157604036600319011261031157602060ff610ae7602435610c7081610633565b6004355f526009845260405f209060018060a01b03165f5260205260405f2090565b34610311575f3660031901126103115760206040517fc9feed28b4b1a1d11c6791da7bb7f6b8d33e831a4992a9383dead1ec2c82c35a8152f35b34610311575f366003190112610311576016546040516001600160a01b039091168152602090f35b34610311576020366003190112610311576004355f526007602052602060405f2054604051908152f35b34610311575f366003190112610311576003546040516001600160a01b039091168152602090f35b34610311575f3660031901126103115760206040517fc9078c78bcaac2be1c77c160c539a489be2b72939771b1a6302fed3e2150c7458152f35b34610311575f366003190112610311576002546040516001600160a01b039091168152602090f35b34610311576040366003190112610311576105ae602435600435610dcb82610633565b805f525f805160206126b4833981519152602052610def600160405f200154611303565b611817565b34610311575f366003190112610311575f5460405160109190911c6001600160a01b03168152602090f35b34610311575f3660031901126103115760206040517fbae4ee3de6c709ff9a002e774c5b78cb381560b219213c88ae0f1e207c03c0238152f35b34610311575f366003190112610311576020601554604051908152f35b34610311575f366003190112610311576020604051633b9aca008152f35b34610311575f366003190112610311576020600454604051908152f35b34610311575f36600319011261031157602060405162093a808152f35b34610311576020366003190112610311576105ae600435610eee81610633565b610ef6611932565b6111d6565b634e487b7160e01b5f52604160045260245ffd5b606081019081106001600160401b03821117610f2a57604052565b610efb565b90601f801991011681019081106001600160401b03821117610f2a57604052565b6040519061028082018281106001600160401b03821117610f2a57604052565b6040519061010082018281106001600160401b03821117610f2a57604052565b6001600160401b038111610f2a57601f01601f191660200190565b929192610fb782610f90565b91610fc56040519384610f2f565b829481845281830111610311578281602093845f960137010152565b9161103192610fee611ad3565b610ff6611ad3565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00556001600160a01b038116611169575b503691610fab565b80516020908201918183019180828503126103115780820151916001600160401b03928381116103115760609101809503126103115760409081519361107685610f0f565b8186015184811161031157860181603f82011215610311578181858561109f94015191016118a9565b8552828601518481116103115781836110ba928901016118df565b8286019081526060870151948511610311576110f36110e66111349385611140986111669b01016118df565b9685810197885251611d33565b5194519461110784519687928584016118fc565b039261111b601f1994858101885287610f2f565b51948592630f7a015d60e31b9084015260248301611921565b03908101835282610f2f565b7f000000000000000000000000000000000000000000000000000000000000000061246d565b50565b61117d90611175611ad3565b610ef6611ad3565b5f611029565b3d156111ad573d9061119482610f90565b916111a26040519384610f2f565b82523d5f602084013e565b606090565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b6001600160a01b0390811690811561122f575f8051602061269483398151915280546001600160a01b031981168417909155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b604051631e4fbdf760e01b81525f6004820152602490fd5b916001600160401b039161125c913691610fab565b911660028103611284575061127d8160208061128294518301019101611a32565b61249e565b565b6003036112f1576111346111406112a783602080611166965183010191016119a6565b60208151910151906112c1604051928392602084016118fc565b03906112d5601f1992838101835282610f2f565b604051630f7a015d60e31b602082015293849160248301611921565b604051630a1824e360e01b8152600490fd5b5f8181525f805160206126b48339815191526020908152604080832033845290915290205460ff16156113335750565b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260409020545f805160206126b48339815191529060ff166113fc575f808052602091825260408082206001600160a01b038516835290925220805460ff1916600117905533906001600160a01b03165f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b50505f90565b6001600160a01b0381165f9081527f03b26b53c87faa1058f30bb5d2fee64f717719a0d9b7e4f4df027aa5e9b6ed69602052604090207fbae4ee3de6c709ff9a002e774c5b78cb381560b219213c88ae0f1e207c03c023905f805160206126b48339815191529060ff905b54166114d1575f828152602091825260408082206001600160a01b038616835290925220805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b5050505f90565b6001600160a01b0381165f9081527f0287ab4cb376ea253d7b2ce0c2cbf458f7deae9458470d74afdfbbee484e9540602052604090207f9c56d972d63cbb4195b3c1484691dfc220fa96a4c47e7b6613bd82a022029e06905f805160206126b48339815191529060ff9061146d565b6001600160a01b0381165f9081527fe41986b390c4ce6791b87f7423b5fab7a81a0e6d89660b6264f697d008b2243a602052604090207fc6aaadd7371d5e8f9ed6849dd66a66573a3ba37167d03f4352c9ba5693678fac905f805160206126b48339815191529060ff9061146d565b6001600160a01b0381165f9081527f2d4ccbfe9f7672a6f2537c1e5bce6adacb73706879154bbab6ce096012d67216602052604090207f4a634bc14d77baf979756509ef4298c6f6318af357828612545267ee2eb79233905f805160206126b48339815191529060ff9061146d565b6001600160a01b0381165f9081527f99e47f2907af87dbb5c62e22bd8ea822f5011dfd1e243469ce26ebebf3ab93e3602052604090207f591f6a0113ada8aff67efadec8ae2fa585cb4ebf4e1f8fc1205ffbeff98d00ec905f805160206126b48339815191529060ff9061146d565b6001600160a01b0381165f9081527f665296150f4083bfe5a58682f99690b24ea27a3f56243679fa9797c6a16217aa602052604090207fc9feed28b4b1a1d11c6791da7bb7f6b8d33e831a4992a9383dead1ec2c82c35a905f805160206126b48339815191529060ff9061146d565b6001600160a01b0381165f9081527f82a1dc868a49801aa31c5dd393dc0b9005735300cdcd4bbc1af68215effcd6f8602052604090207fc9078c78bcaac2be1c77c160c539a489be2b72939771b1a6302fed3e2150c745905f805160206126b48339815191529060ff9061146d565b6001600160a01b0381165f9081527f9aeaa4f1a9be826e331dea6728ca206744e0a34dccbc1d3da4a68acb8abf0363602052604090207f5295aaaa27fdd659293eafacbfafbc634c1b96298957e87de5f59308cdbfdad1905f805160206126b48339815191529060ff9061146d565b5f8181525f805160206126b4833981519152602081815260408084206001600160a01b038716855290915290912060ff9061146d565b5f8181525f805160206126b4833981519152602081815260408084206001600160a01b03871685529091529091205460ff16156114d1575f828152602091825260408082206001600160a01b038616835290925220805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b9291926118b582610f90565b916118c36040519384610f2f565b829481845281830111610311578281602093845f96015e010152565b9080601f830112156103115781516118f9926020016118a9565b90565b90916119136118f9936040845260408401906111b2565b9160208184039101526111b2565b9060206118f99281815201906111b2565b5f80516020612694833981519152546001600160a01b0316330361195257565b60405163118cdaa760e01b8152336004820152602490fd5b365f80375f8036817f00000000000000000000000000000000000000000000000000000000000000005af43d5f803e156119a2573d5ff35b3d5ffd5b906020828203126103115781516001600160401b039283821161031157019060408282031261031157604051926040840184811082821117610f2a57604052825181811161031157826119fa9185016118df565b8452602083015190811161031157611a1292016118df565b602082015290565b5190811515820361031157565b519061128282610633565b80916101009283910312610311576040519182018281106001600160401b03821117610f2a57611acb9160e09160405280518452611a7260208201611a1a565b602085015260408101516040850152611a8d60608201611a27565b6060850152611a9e60808201611a27565b6080850152611aaf60a08201611a27565b60a0850152611ac060c08201611a27565b60c085015201611a27565b60e082015290565b60ff5f805160206126d48339815191525460401c1615611aef57565b604051631afcd79f60e31b8152600490fd5b519065ffffffffffff8216820361031157565b81601f82011215610311578051916020916001600160401b038411610f2a578360051b9060405194611b4885840187610f2f565b85528380860192820101928311610311578301905b828210611b6b575050505090565b8380918351611b7981610633565b815201910190611b5d565b906020828203126103115781516001600160401b03928382116103115701906102808282031261031157611bb6610f50565b92611bc083611a27565b8452611bce60208401611a27565b6020850152611bdf60408401611b01565b6040850152611bf060608401611a1a565b6060850152611c0160808401611a1a565b608085015260a083015160a085015260c083015160c0850152611c2660e08401611a1a565b60e08501526101008084015190850152610120611c44818501611a27565b90850152610140611c56818501611a27565b90850152610160611c68818501611a27565b90850152610180611c7a818501611a27565b908501526101a0918284015191821161031157611c98918401611b14565b908301526101c0611caa818301611a27565b908301526101e0611cbc818301611a27565b90830152610200611cce818301611a27565b90830152610220611ce0818301611a27565b90830152610240611cf2818301611a27565b90830152611d04610260809201611a27565b9082015290565b8051821015611d1f5760209160051b010190565b634e487b7160e01b5f52603260045260245ffd5b611d469060208082518301019101611b84565b805190916001600160a01b039182161561245b576040908184019065ffffffffffff611d78835165ffffffffffff1690565b161561244a5761014085018051909490611da2906001600160a01b03165b6001600160a01b031690565b15612315575b6060860195611dbe611dba8851151590565b1590565b80612306575b6122f5576101a0810196955f5b88518051821015611e8257611d96611dec83611df993611d0b565b516001600160a01b031690565b15611e7157611e32611e2b611e12611dec848d51611d0b565b6001600160a01b03165f90815260056020526040902090565b5460ff1690565b611e605780611e5a611e4d611e12611dec6001958e51611d0b565b805460ff19166001179055565b01611dd1565b865163a741a04560e01b8152600490fd5b8651630da30f6560e31b8152600490fd5b505093919592965093611e9e611d96855160018060a01b031690565b15612115575b60c08501519060e0860151611eb890151590565b6101008701516101208801516102008901516102208a01516102408b01516102608c01516001600160a01b0390811697918116969281169593811694169291611eff610f70565b988952151560208901528701526001600160a01b031660608601526001600160a01b031660808501526001600160a01b031660a08401526001600160a01b031660c08301526001600160a01b031660e0820152611f5b906124ed565b83516001600160a01b03165f805462010000600160b01b03191660109290921b62010000600160b01b031691909117905560208401516001600160a01b0316600180546001600160a01b0319166001600160a01b03909216919091179055611fc242612661565b6001805465ffffffffffff60a01b191660a09290921b65ffffffffffff60a01b169190911790555165ffffffffffff16600180546001600160d01b031660d09290921b6001600160d01b03191691909117905551151561202c9060ff80195f541691151516175f55565b60808201515f805461ff00191691151560081b61ff001691909117905560a0820151600455516001600160a01b03166120c2916101e091808516612105575b506101608101516001600160a01b03168481166120f5575b506101808101516001600160a01b03168481166120e5575b506101c08101516001600160a01b03168481166120d5575b5001516001600160a01b031690565b9081166120cc5750565b611166906115b6565b6120de90611547565b505f6120b3565b6120ee906114d8565b505f61209b565b6120fe90611402565b505f612083565b61210e90611351565b505f61206b565b949392919061212760e0850151151590565b80156122d5575b1561223f5761012084015161214b906001600160a01b0316611d96565b1580158161221f575b806121f2575b15612170578651630331eb0f60e41b8152600490fd5b61010085969792939495015115908115916121cf575b816121a2575b5015611ea45751630331eb0f60e41b8152600490fd5b9050806121b0575b5f61218c565b506102608501516121c9906001600160a01b0316611d96565b156121aa565b6102408701519091506121ea906001600160a01b0316611d96565b151590612186565b5061010085015115801561215a5750610240850151612219906001600160a01b0316611d96565b1561215a565b50610260850151612238906001600160a01b0316611d96565b1515612154565b909192939461225b611d9661012087015160018060a01b031690565b158015906122c7575b80156122a7575b8015612287575b15611ea45751630331eb0f60e41b8152600490fd5b506102408501516122a0906001600160a01b0316611d96565b1515612272565b506102608501516122c0906001600160a01b0316611d96565b151561226b565b506101008501511515612264565b506102208401516122ee906001600160a01b0316611d96565b151561212e565b845163ebf503c560e01b8152600490fd5b506101a0810151511515611dc4565b61016086015161232d906001600160a01b0316611d96565b156123e5575b6101c086015161234b906001600160a01b0316611d96565b15612356575b611da8565b6080860151156123a15760a08601511580612382575b15611da857835163183c854560e21b8152600490fd5b506101e086015161239b906001600160a01b0316611d96565b1561236c565b60a0860151158015906123c5575b1561235157835163183c854560e21b8152600490fd5b506101e08601516123de906001600160a01b0316611d96565b15156123af565b60608601511561241c57610180860151612407906001600160a01b0316611d96565b61233357835163183c854560e21b8152600490fd5b610180860151612434906001600160a01b0316611d96565b1561233357835163183c854560e21b8152600490fd5b82516368f5f8f160e11b8152600490fd5b6040516368f7a67560e11b8152600490fd5b5f806118f993602081519101845af4612484611183565b916125fe565b634e487b7160e01b5f52601160045260245ffd5b6124a7816124ed565b5160011981019081116124e85760015460d01c908181029181830414901517156124e85762093a80116124d657565b60405163119796df60e01b8152600490fd5b61248a565b60038151106125ec576125008151600f55565b61252f6125106020830151151590565b6016805460ff60a01b191691151560a01b60ff60a01b16919091179055565b61253c6040820151601555565b6060810151601680546001600160a01b0319166001600160a01b03928316179055608082015190916125b09160e091908416806125dc575b5060a08101516001600160a01b03168481166125cc575b5060c08101516001600160a01b03168481166125c3575001516001600160a01b031690565b9081166125ba5750565b61116690611772565b6120de90611703565b6125d590611694565b505f61258b565b6125e590611625565b505f612574565b6040516317a509b960e31b8152600490fd5b90612625575080511561261357805190602001fd5b60405163d6bda27560e01b8152600490fd5b81511580612658575b612636575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b1561262e565b65ffffffffffff90818111612674571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fdfe9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930002dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220a5c57862ca4f80c81704de14e9e1b2cddbce47b2abff3548998c1ae9432627a964736f6c63430008190033","sourceMap":"398:1418:109:-:0;;;;;;-1:-1:-1;;;;;398:1418:109;;;;;;;;;-1:-1:-1;;398:1418:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;8837:64:26;;398:1418:109;;;;;;;;;7896:76:26;;398:1418:109;;;;7985:34:26;7981:146;;-1:-1:-1;927:17:82;;;;;1444:31:106;;398:1418:109;;;;;;;927:17:82;398:1418:109;;;;;;;;;;1444:31:106;398:1418:109;;;;;;;;;;;7981:146:26;-1:-1:-1;;;;;;398:1418:109;;;;;;;;;;;;;8087:29:26;;398:1418:109;;8087:29:26;7981:146;;;;;7896:76;398:1418:109;;-1:-1:-1;;;7938:23:26;;;;;398:1418:109;-1:-1:-1;398:1418:109;;;;;;-1:-1:-1;398:1418:109;;;;;-1:-1:-1;398:1418:109;;;;-1:-1:-1;;;;;398:1418:109;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361061196a575f3560e01c806301ffc9a7146102bb5780631415519b146102b65780631b66c9e1146102b1578063248a9ca3146102ac57806327810b6e146102a75780632abe3048146102a25780632dd310001461029d5780632f2ff15d1461029857806331d9736c1461029357806336568abe1461028e57806348d3b7751461028957806350861adc1461028457806354fd4d501461027f57806357ec83cc1461027a5780635cc070761461027557806361819dd814610270578063653b04cd1461026b57806365d61c6c146102665780636ec1e3f814610261578063715018a61461025c578063794b15b7146102575780638da5cb5b1461025257806391d148541461024d5780639f86fd8514610248578063a1b1220214610243578063a217fddf1461023e578063a21a1df914610239578063a3b5417214610234578063a5d032231461022f578063a66b3a731461022a578063a8b24f9a14610225578063afba70ad14610220578063b13442711461021b578063bc46f72214610216578063ce9b793014610211578063d547741f1461020c578063d8dfeb4514610207578063db38871514610202578063e945da7f146101fd578063ecc98f05146101f8578063ecf70858146101f3578063f151f6b5146101ee5763f2fde38b0361196a57610ece565b610eb1565b610e94565b610e76565b610e59565b610e1f565b610df4565b610da8565b610d80565b610d46565b610d1e565b610cf4565b610ccc565b610c92565b610c4c565b610bff565b610bc5565b610bab565b610b87565b610af3565b610a95565b610a61565b610a21565b6109ba565b610995565b610970565b610936565b6108fc565b6108d2565b61078d565b61075b565b610736565b610715565b6106ca565b610690565b610644565b6105ef565b61042d565b6103c2565b610389565b61034f565b610315565b346103115760203660031901126103115760043563ffffffff60e01b811680910361031157602090637965db0b60e01b8114908115610300575b506040519015158152f35b6301ffc9a760e01b1490505f6102f5565b5f80fd5b34610311575f3660031901126103115760206040517fc6aaadd7371d5e8f9ed6849dd66a66573a3ba37167d03f4352c9ba5693678fac8152f35b34610311575f3660031901126103115760206040517f9c56d972d63cbb4195b3c1484691dfc220fa96a4c47e7b6613bd82a022029e068152f35b34610311576020366003190112610311576004355f525f805160206126b48339815191526020526020600160405f200154604051908152f35b34610311575f366003190112610311576001546040516001600160a01b039091168152602090f35b600435906001600160401b038216820361031157565b9181601f84011215610311578235916001600160401b038311610311576020838186019501011161031157565b3461031157604080600319360112610311576104476103ea565b906001600160401b0360243581811161031157610468903690600401610400565b917f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0060028154146105de57600290557f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036105cd575f805160206126d483398151915280548281169260ff82881c1680156105c1575b6105b05767ffffffffffffffff199091169087161790555f805160206126d4833981519152805460ff60401b1916600160401b1790557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d294610582949093909261055192611247565b5f805160206126d4833981519152805460ff60401b19169055516001600160401b0390911681529081906020820190565b0390a16105ae60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b005b865163f92ee8a960e01b8152600490fd5b508088168410156104e8565b8351631966391b60e11b8152600490fd5b8451633ee5aeb560e01b8152600490fd5b34610311575f366003190112610311576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6001600160a01b0381160361031157565b34610311576040366003190112610311576105ae60243560043561066782610633565b805f525f805160206126b483398151915260205261068b600160405f200154611303565b6117e1565b34610311575f3660031901126103115760206040517f5295aaaa27fdd659293eafacbfafbc634c1b96298957e87de5f59308cdbfdad18152f35b34610311576040366003190112610311576024356106e781610633565b336001600160a01b03821603610703576105ae90600435611817565b60405163334bd91960e11b8152600490fd5b34610311575f36600319011261031157602060ff5f54166040519015158152f35b34610311575f36600319011261031157602060ff60025460a01c166040519015158152f35b34610311575f3660031901126103115760206001600160401b035f805160206126d48339815191525416604051908152f35b34610311576060366003190112610311576107a66103ea565b6024356107b281610633565b6001600160401b0391604435838111610311576107d3903690600401610400565b5f805160206126d48339815191529491855494838616806108c15760ff8760401c169081156108b4575b506108a2577fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29661089d9661086a958716906001600160401b0319161790556108655f805160206126d4833981519152600160401b68ff000000000000000019825416179055565b610fe1565b5f805160206126d4833981519152805460ff60401b191690556040516001600160401b0390911681529081906020820190565b0390a1005b60405163f92ee8a960e01b8152600490fd5b905084861611155f6107fd565b60405162dc149f60e41b8152600490fd5b34610311576020366003190112610311576004355f526006602052602060405f2054604051908152f35b34610311575f3660031901126103115760206040517f591f6a0113ada8aff67efadec8ae2fa585cb4ebf4e1f8fc1205ffbeff98d00ec8152f35b34610311575f3660031901126103115760206040517f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd98152f35b34610311575f36600319011261031157602060ff60165460a01c166040519015158152f35b34610311575f36600319011261031157602060ff60035460a01c166040519015158152f35b34610311575f366003190112610311576109d2611932565b5f8051602061269483398151915280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461031157602036600319011261031157600435610a3e81610633565b60018060a01b03165f526005602052602060ff60405f2054166040519015158152f35b34610311575f366003190112610311575f80516020612694833981519152546040516001600160a01b039091168152602090f35b3461031157604036600319011261031157602060ff610ae7602435610ab981610633565b6004355f525f805160206126b4833981519152845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b3461031157604036600319011261031157600435610b1081610633565b6024356001600160401b038111610311575f91610b3283923690600401610400565b90816040519283928337810184815203915af4610b7f610b50611183565b91610b716040519384921515602084015260408084015260608301906111b2565b03601f198101835282610f2f565b805190602001fd5b34610311575f36600319011261031157602060ff5f5460081c166040519015158152f35b34610311575f3660031901126103115760206040515f8152f35b34610311575f3660031901126103115760206040517f4a634bc14d77baf979756509ef4298c6f6318af357828612545267ee2eb792338152f35b34610311576040366003190112610311576020610c43602435610c2181610633565b6004355f526008835260405f209060018060a01b03165f5260205260405f2090565b54604051908152f35b3461031157604036600319011261031157602060ff610ae7602435610c7081610633565b6004355f526009845260405f209060018060a01b03165f5260205260405f2090565b34610311575f3660031901126103115760206040517fc9feed28b4b1a1d11c6791da7bb7f6b8d33e831a4992a9383dead1ec2c82c35a8152f35b34610311575f366003190112610311576016546040516001600160a01b039091168152602090f35b34610311576020366003190112610311576004355f526007602052602060405f2054604051908152f35b34610311575f366003190112610311576003546040516001600160a01b039091168152602090f35b34610311575f3660031901126103115760206040517fc9078c78bcaac2be1c77c160c539a489be2b72939771b1a6302fed3e2150c7458152f35b34610311575f366003190112610311576002546040516001600160a01b039091168152602090f35b34610311576040366003190112610311576105ae602435600435610dcb82610633565b805f525f805160206126b4833981519152602052610def600160405f200154611303565b611817565b34610311575f366003190112610311575f5460405160109190911c6001600160a01b03168152602090f35b34610311575f3660031901126103115760206040517fbae4ee3de6c709ff9a002e774c5b78cb381560b219213c88ae0f1e207c03c0238152f35b34610311575f366003190112610311576020601554604051908152f35b34610311575f366003190112610311576020604051633b9aca008152f35b34610311575f366003190112610311576020600454604051908152f35b34610311575f36600319011261031157602060405162093a808152f35b34610311576020366003190112610311576105ae600435610eee81610633565b610ef6611932565b6111d6565b634e487b7160e01b5f52604160045260245ffd5b606081019081106001600160401b03821117610f2a57604052565b610efb565b90601f801991011681019081106001600160401b03821117610f2a57604052565b6040519061028082018281106001600160401b03821117610f2a57604052565b6040519061010082018281106001600160401b03821117610f2a57604052565b6001600160401b038111610f2a57601f01601f191660200190565b929192610fb782610f90565b91610fc56040519384610f2f565b829481845281830111610311578281602093845f960137010152565b9161103192610fee611ad3565b610ff6611ad3565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00556001600160a01b038116611169575b503691610fab565b80516020908201918183019180828503126103115780820151916001600160401b03928381116103115760609101809503126103115760409081519361107685610f0f565b8186015184811161031157860181603f82011215610311578181858561109f94015191016118a9565b8552828601518481116103115781836110ba928901016118df565b8286019081526060870151948511610311576110f36110e66111349385611140986111669b01016118df565b9685810197885251611d33565b5194519461110784519687928584016118fc565b039261111b601f1994858101885287610f2f565b51948592630f7a015d60e31b9084015260248301611921565b03908101835282610f2f565b7f000000000000000000000000000000000000000000000000000000000000000061246d565b50565b61117d90611175611ad3565b610ef6611ad3565b5f611029565b3d156111ad573d9061119482610f90565b916111a26040519384610f2f565b82523d5f602084013e565b606090565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b6001600160a01b0390811690811561122f575f8051602061269483398151915280546001600160a01b031981168417909155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b604051631e4fbdf760e01b81525f6004820152602490fd5b916001600160401b039161125c913691610fab565b911660028103611284575061127d8160208061128294518301019101611a32565b61249e565b565b6003036112f1576111346111406112a783602080611166965183010191016119a6565b60208151910151906112c1604051928392602084016118fc565b03906112d5601f1992838101835282610f2f565b604051630f7a015d60e31b602082015293849160248301611921565b604051630a1824e360e01b8152600490fd5b5f8181525f805160206126b48339815191526020908152604080832033845290915290205460ff16156113335750565b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260409020545f805160206126b48339815191529060ff166113fc575f808052602091825260408082206001600160a01b038516835290925220805460ff1916600117905533906001600160a01b03165f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b50505f90565b6001600160a01b0381165f9081527f03b26b53c87faa1058f30bb5d2fee64f717719a0d9b7e4f4df027aa5e9b6ed69602052604090207fbae4ee3de6c709ff9a002e774c5b78cb381560b219213c88ae0f1e207c03c023905f805160206126b48339815191529060ff905b54166114d1575f828152602091825260408082206001600160a01b038616835290925220805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b5050505f90565b6001600160a01b0381165f9081527f0287ab4cb376ea253d7b2ce0c2cbf458f7deae9458470d74afdfbbee484e9540602052604090207f9c56d972d63cbb4195b3c1484691dfc220fa96a4c47e7b6613bd82a022029e06905f805160206126b48339815191529060ff9061146d565b6001600160a01b0381165f9081527fe41986b390c4ce6791b87f7423b5fab7a81a0e6d89660b6264f697d008b2243a602052604090207fc6aaadd7371d5e8f9ed6849dd66a66573a3ba37167d03f4352c9ba5693678fac905f805160206126b48339815191529060ff9061146d565b6001600160a01b0381165f9081527f2d4ccbfe9f7672a6f2537c1e5bce6adacb73706879154bbab6ce096012d67216602052604090207f4a634bc14d77baf979756509ef4298c6f6318af357828612545267ee2eb79233905f805160206126b48339815191529060ff9061146d565b6001600160a01b0381165f9081527f99e47f2907af87dbb5c62e22bd8ea822f5011dfd1e243469ce26ebebf3ab93e3602052604090207f591f6a0113ada8aff67efadec8ae2fa585cb4ebf4e1f8fc1205ffbeff98d00ec905f805160206126b48339815191529060ff9061146d565b6001600160a01b0381165f9081527f665296150f4083bfe5a58682f99690b24ea27a3f56243679fa9797c6a16217aa602052604090207fc9feed28b4b1a1d11c6791da7bb7f6b8d33e831a4992a9383dead1ec2c82c35a905f805160206126b48339815191529060ff9061146d565b6001600160a01b0381165f9081527f82a1dc868a49801aa31c5dd393dc0b9005735300cdcd4bbc1af68215effcd6f8602052604090207fc9078c78bcaac2be1c77c160c539a489be2b72939771b1a6302fed3e2150c745905f805160206126b48339815191529060ff9061146d565b6001600160a01b0381165f9081527f9aeaa4f1a9be826e331dea6728ca206744e0a34dccbc1d3da4a68acb8abf0363602052604090207f5295aaaa27fdd659293eafacbfafbc634c1b96298957e87de5f59308cdbfdad1905f805160206126b48339815191529060ff9061146d565b5f8181525f805160206126b4833981519152602081815260408084206001600160a01b038716855290915290912060ff9061146d565b5f8181525f805160206126b4833981519152602081815260408084206001600160a01b03871685529091529091205460ff16156114d1575f828152602091825260408082206001600160a01b038616835290925220805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b9291926118b582610f90565b916118c36040519384610f2f565b829481845281830111610311578281602093845f96015e010152565b9080601f830112156103115781516118f9926020016118a9565b90565b90916119136118f9936040845260408401906111b2565b9160208184039101526111b2565b9060206118f99281815201906111b2565b5f80516020612694833981519152546001600160a01b0316330361195257565b60405163118cdaa760e01b8152336004820152602490fd5b365f80375f8036817f00000000000000000000000000000000000000000000000000000000000000005af43d5f803e156119a2573d5ff35b3d5ffd5b906020828203126103115781516001600160401b039283821161031157019060408282031261031157604051926040840184811082821117610f2a57604052825181811161031157826119fa9185016118df565b8452602083015190811161031157611a1292016118df565b602082015290565b5190811515820361031157565b519061128282610633565b80916101009283910312610311576040519182018281106001600160401b03821117610f2a57611acb9160e09160405280518452611a7260208201611a1a565b602085015260408101516040850152611a8d60608201611a27565b6060850152611a9e60808201611a27565b6080850152611aaf60a08201611a27565b60a0850152611ac060c08201611a27565b60c085015201611a27565b60e082015290565b60ff5f805160206126d48339815191525460401c1615611aef57565b604051631afcd79f60e31b8152600490fd5b519065ffffffffffff8216820361031157565b81601f82011215610311578051916020916001600160401b038411610f2a578360051b9060405194611b4885840187610f2f565b85528380860192820101928311610311578301905b828210611b6b575050505090565b8380918351611b7981610633565b815201910190611b5d565b906020828203126103115781516001600160401b03928382116103115701906102808282031261031157611bb6610f50565b92611bc083611a27565b8452611bce60208401611a27565b6020850152611bdf60408401611b01565b6040850152611bf060608401611a1a565b6060850152611c0160808401611a1a565b608085015260a083015160a085015260c083015160c0850152611c2660e08401611a1a565b60e08501526101008084015190850152610120611c44818501611a27565b90850152610140611c56818501611a27565b90850152610160611c68818501611a27565b90850152610180611c7a818501611a27565b908501526101a0918284015191821161031157611c98918401611b14565b908301526101c0611caa818301611a27565b908301526101e0611cbc818301611a27565b90830152610200611cce818301611a27565b90830152610220611ce0818301611a27565b90830152610240611cf2818301611a27565b90830152611d04610260809201611a27565b9082015290565b8051821015611d1f5760209160051b010190565b634e487b7160e01b5f52603260045260245ffd5b611d469060208082518301019101611b84565b805190916001600160a01b039182161561245b576040908184019065ffffffffffff611d78835165ffffffffffff1690565b161561244a5761014085018051909490611da2906001600160a01b03165b6001600160a01b031690565b15612315575b6060860195611dbe611dba8851151590565b1590565b80612306575b6122f5576101a0810196955f5b88518051821015611e8257611d96611dec83611df993611d0b565b516001600160a01b031690565b15611e7157611e32611e2b611e12611dec848d51611d0b565b6001600160a01b03165f90815260056020526040902090565b5460ff1690565b611e605780611e5a611e4d611e12611dec6001958e51611d0b565b805460ff19166001179055565b01611dd1565b865163a741a04560e01b8152600490fd5b8651630da30f6560e31b8152600490fd5b505093919592965093611e9e611d96855160018060a01b031690565b15612115575b60c08501519060e0860151611eb890151590565b6101008701516101208801516102008901516102208a01516102408b01516102608c01516001600160a01b0390811697918116969281169593811694169291611eff610f70565b988952151560208901528701526001600160a01b031660608601526001600160a01b031660808501526001600160a01b031660a08401526001600160a01b031660c08301526001600160a01b031660e0820152611f5b906124ed565b83516001600160a01b03165f805462010000600160b01b03191660109290921b62010000600160b01b031691909117905560208401516001600160a01b0316600180546001600160a01b0319166001600160a01b03909216919091179055611fc242612661565b6001805465ffffffffffff60a01b191660a09290921b65ffffffffffff60a01b169190911790555165ffffffffffff16600180546001600160d01b031660d09290921b6001600160d01b03191691909117905551151561202c9060ff80195f541691151516175f55565b60808201515f805461ff00191691151560081b61ff001691909117905560a0820151600455516001600160a01b03166120c2916101e091808516612105575b506101608101516001600160a01b03168481166120f5575b506101808101516001600160a01b03168481166120e5575b506101c08101516001600160a01b03168481166120d5575b5001516001600160a01b031690565b9081166120cc5750565b611166906115b6565b6120de90611547565b505f6120b3565b6120ee906114d8565b505f61209b565b6120fe90611402565b505f612083565b61210e90611351565b505f61206b565b949392919061212760e0850151151590565b80156122d5575b1561223f5761012084015161214b906001600160a01b0316611d96565b1580158161221f575b806121f2575b15612170578651630331eb0f60e41b8152600490fd5b61010085969792939495015115908115916121cf575b816121a2575b5015611ea45751630331eb0f60e41b8152600490fd5b9050806121b0575b5f61218c565b506102608501516121c9906001600160a01b0316611d96565b156121aa565b6102408701519091506121ea906001600160a01b0316611d96565b151590612186565b5061010085015115801561215a5750610240850151612219906001600160a01b0316611d96565b1561215a565b50610260850151612238906001600160a01b0316611d96565b1515612154565b909192939461225b611d9661012087015160018060a01b031690565b158015906122c7575b80156122a7575b8015612287575b15611ea45751630331eb0f60e41b8152600490fd5b506102408501516122a0906001600160a01b0316611d96565b1515612272565b506102608501516122c0906001600160a01b0316611d96565b151561226b565b506101008501511515612264565b506102208401516122ee906001600160a01b0316611d96565b151561212e565b845163ebf503c560e01b8152600490fd5b506101a0810151511515611dc4565b61016086015161232d906001600160a01b0316611d96565b156123e5575b6101c086015161234b906001600160a01b0316611d96565b15612356575b611da8565b6080860151156123a15760a08601511580612382575b15611da857835163183c854560e21b8152600490fd5b506101e086015161239b906001600160a01b0316611d96565b1561236c565b60a0860151158015906123c5575b1561235157835163183c854560e21b8152600490fd5b506101e08601516123de906001600160a01b0316611d96565b15156123af565b60608601511561241c57610180860151612407906001600160a01b0316611d96565b61233357835163183c854560e21b8152600490fd5b610180860151612434906001600160a01b0316611d96565b1561233357835163183c854560e21b8152600490fd5b82516368f5f8f160e11b8152600490fd5b6040516368f7a67560e11b8152600490fd5b5f806118f993602081519101845af4612484611183565b916125fe565b634e487b7160e01b5f52601160045260245ffd5b6124a7816124ed565b5160011981019081116124e85760015460d01c908181029181830414901517156124e85762093a80116124d657565b60405163119796df60e01b8152600490fd5b61248a565b60038151106125ec576125008151600f55565b61252f6125106020830151151590565b6016805460ff60a01b191691151560a01b60ff60a01b16919091179055565b61253c6040820151601555565b6060810151601680546001600160a01b0319166001600160a01b03928316179055608082015190916125b09160e091908416806125dc575b5060a08101516001600160a01b03168481166125cc575b5060c08101516001600160a01b03168481166125c3575001516001600160a01b031690565b9081166125ba5750565b61116690611772565b6120de90611703565b6125d590611694565b505f61258b565b6125e590611625565b505f612574565b6040516317a509b960e31b8152600490fd5b90612625575080511561261357805190602001fd5b60405163d6bda27560e01b8152600490fd5b81511580612658575b612636575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b1561262e565b65ffffffffffff90818111612674571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fdfe9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930002dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220a5c57862ca4f80c81704de14e9e1b2cddbce47b2abff3548998c1ae9432627a964736f6c63430008190033","sourceMap":"398:1418:109:-:0;;;;;;2603:64:50;398:1418:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2603:64:50;398:1418:109;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;-1:-1:-1;;398:1418:109;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3551:47:23;;;:87;;;;398:1418:109;;;;;;;;;;3551:87:23;-1:-1:-1;;;1134:40:32;;-1:-1:-1;3551:87:23;;;398:1418:109;-1:-1:-1;398:1418:109;;;;;;;;-1:-1:-1;;398:1418:109;;;;;;;757:38:108;398:1418:109;;;;;;;;;-1:-1:-1;;398:1418:109;;;;;;;612:37:108;398:1418:109;;;;;;;;;-1:-1:-1;;398:1418:109;;;;;;-1:-1:-1;398:1418:109;-1:-1:-1;;;;;;;;;;;398:1418:109;;;4919:24:23;398:1418:109;-1:-1:-1;398:1418:109;4919:24:23;398:1418:109;;;;;;;;;;;;;-1:-1:-1;;398:1418:109;;;;;;;;-1:-1:-1;;;;;398:1418:109;;;;;;;;;;;;-1:-1:-1;;;;;398:1418:109;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;398:1418:109;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;398:1418:109;;;;;;;;;;;;;;:::i;:::-;2499:73:30;;1991:1;398:1418:109;;3670:20:30;3666:88;;1991:1;;;1673:7:82;-1:-1:-1;;;;;398:1418:109;1659:10:82;:21;1655:71;;-1:-1:-1;;;;;;;;;;;398:1418:109;;;;;;;;;;;6431:44:26;;;;398:1418:109;6427:105:26;;-1:-1:-1;;398:1418:109;;;;;;;;;-1:-1:-1;;;;;;;;;;;398:1418:109;;-1:-1:-1;;;;398:1418:109;-1:-1:-1;;;398:1418:109;;;6656:20:26;;;;398:1418:109;;;;1809:204:82;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;398:1418:109;;-1:-1:-1;;;;398:1418:109;;;;-1:-1:-1;;;;;398:1418:109;;;;;;;;;;;;;6656:20:26;;;;3426:1:30;1949;2499:73;1991:1;3860:283;3426:1;398:1418:109;6427:105:26;398:1418:109;;-1:-1:-1;;;6498:23:26;;398:1418:109;;6498:23:26;6431:44;398:1418:109;;;;6450:25:26;;;6431:44;;1655:71:82;398:1418:109;;-1:-1:-1;;;1703:12:82;;398:1418:109;;1703:12:82;3666:88:30;398:1418:109;;-1:-1:-1;;;3713:30:30;;398:1418:109;;3713:30:30;398:1418:109;;;;;;-1:-1:-1;;398:1418:109;;;;;;655:32:82;-1:-1:-1;;;;;398:1418:109;;;;;;;-1:-1:-1;;;;;398:1418:109;;;;;:::o;:::-;;;;;;-1:-1:-1;;398:1418:109;;;;5350:25:23;398:1418:109;;;;;;;:::i;:::-;;-1:-1:-1;398:1418:109;-1:-1:-1;;;;;;;;;;;398:1418:109;;3202:4:23;4919:24;398:1418:109;-1:-1:-1;398:1418:109;4919:24:23;398:1418:109;3202:4:23;:::i;:::-;5350:25;:::i;398:1418:109:-;;;;;;-1:-1:-1;;398:1418:109;;;;;;;1479:40:108;398:1418:109;;;;;;;;;-1:-1:-1;;398:1418:109;;;;;;;;;:::i;:::-;966:10:28;-1:-1:-1;;;;;398:1418:109;;6441:34:23;6437:102;;6549:37;398:1418:109;;;6549:37:23;:::i;6437:102::-;398:1418:109;;-1:-1:-1;;;6498:30:23;;398:1418:109;;6498:30:23;398:1418:109;;;;;;-1:-1:-1;;398:1418:109;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;398:1418:109;;;;;;2297:34:108;398:1418:109;;;;;;;;;;;;;;;;;;-1:-1:-1;;398:1418:109;;;;;-1:-1:-1;;;;;;;;;;;;;;;;398:1418:109;;;;;;;;;;;;;;-1:-1:-1;;398:1418:109;;;;;;:::i;:::-;;;;;;:::i;:::-;-1:-1:-1;;;;;398:1418:109;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;8837:64:26;;398:1418:109;;;;;;734:29:82;730:87;;398:1418:109;;;;;6431:44:26;;;;;398:1418:109;6427:105:26;;;6656:20;398:1418:109;6656:20:26;398:1418:109;1167:340:82;398:1418:109;;;;-1:-1:-1;;;;;398:1418:109;;;;;6575:22:26;-1:-1:-1;;;;;;;;;;;;;;398:1418:109;;;;;;;;;6575:22:26;1167:340:82;:::i;:::-;-1:-1:-1;;;;;;;;;;;398:1418:109;;-1:-1:-1;;;;398:1418:109;;;;;-1:-1:-1;;;;;398:1418:109;;;;;;;;;;;;;6656:20:26;;;;398:1418:109;6427:105:26;398:1418:109;;-1:-1:-1;;;6498:23:26;;398:1418:109;;6498:23:26;6431:44;398:1418:109;;;;;-1:-1:-1;6450:25:26;6431:44;;;730:87:82;398:1418:109;;-1:-1:-1;;;786:20:82;;398:1418:109;;786:20:82;398:1418:109;;;;;;-1:-1:-1;;398:1418:109;;;;;;-1:-1:-1;398:1418:109;2760:59:108;398:1418:109;;;;-1:-1:-1;398:1418:109;;;;;;;;;;;;;;-1:-1:-1;;398:1418:109;;;;;;;1041:36:108;398:1418:109;;;;;;;;;-1:-1:-1;;398:1418:109;;;;;;;1714:45:108;398:1418:109;;;;;;;;;-1:-1:-1;;398:1418:109;;;;;;4070:28:108;398:1418:109;;;;;;;;;;;;;;;;;;-1:-1:-1;;398:1418:109;;;;;;2465:32:108;398:1418:109;;;;;;;;;;;;;;;;;;-1:-1:-1;;398:1418:109;;;;2303:62:24;;:::i;:::-;-1:-1:-1;;;;;;;;;;;398:1418:109;;-1:-1:-1;;;;;;398:1418:109;;;;;;;-1:-1:-1;;;;;398:1418:109;3975:40:24;398:1418:109;;3975:40:24;398:1418:109;;;;;;;-1:-1:-1;;398:1418:109;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;398:1418:109;2636:68:108;398:1418:109;;;;;-1:-1:-1;398:1418:109;;;;;;;;;;;;;;;;;-1:-1:-1;;398:1418:109;;;;-1:-1:-1;;;;;;;;;;;398:1418:109;;;-1:-1:-1;;;;;398:1418:109;;;;;;;;;;;;;;-1:-1:-1;;398:1418:109;;;;;;3901:31:23;398:1418:109;;;;;:::i;:::-;;;-1:-1:-1;398:1418:109;-1:-1:-1;;;;;;;;;;;398:1418:109;;;-1:-1:-1;398:1418:109;;;;;;;;;;;;;;;;;3901:31:23;398:1418:109;;;;;;;;;;;;;;;;-1:-1:-1;;398:1418:109;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;398:1418:109;;;;-1:-1:-1;398:1418:109;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;416:25:86;;;;477:31;416:25;;:::i;:::-;398:1418:109;;;;;;;;;;477:31:86;;398:1418:109;;;;;;;;;;;:::i;:::-;477:31:86;;;;;;;;;:::i;:::-;518:79;;;398:1418:109;518:79:86;;398:1418:109;;;;;;-1:-1:-1;;398:1418:109;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;398:1418:109;;;;;;;;;;;;;;;;;-1:-1:-1;;398:1418:109;;;;;;;900:35:108;398:1418:109;;;;;;;;;-1:-1:-1;;398:1418:109;;;;;2995:94:108;398:1418:109;;;;;:::i;:::-;;;-1:-1:-1;398:1418:109;2995:94:108;398:1418:109;;;-1:-1:-1;398:1418:109;;;;;;;;;;;;;;;;;2995:94:108;398:1418:109;;;;;;;;;;;;;-1:-1:-1;;398:1418:109;;;;;;3145:92:108;398:1418:109;;;;;:::i;:::-;;;-1:-1:-1;398:1418:109;3145:92:108;398:1418:109;;;-1:-1:-1;398:1418:109;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;398:1418:109;;;;;;;1187:40:108;398:1418:109;;;;;;;;;-1:-1:-1;;398:1418:109;;;;3983:31:108;398:1418:109;;;-1:-1:-1;;;;;398:1418:109;;;;;;;;;;;;;;-1:-1:-1;;398:1418:109;;;;;;-1:-1:-1;398:1418:109;2875:64:108;398:1418:109;;;;-1:-1:-1;398:1418:109;;;;;;;;;;;;;;-1:-1:-1;;398:1418:109;;;;2387:22:108;398:1418:109;;;-1:-1:-1;;;;;398:1418:109;;;;;;;;;;;;;;-1:-1:-1;;398:1418:109;;;;;;;1333:36:108;398:1418:109;;;;;;;;;-1:-1:-1;;398:1418:109;;;;2217:24:108;398:1418:109;;;-1:-1:-1;;;;;398:1418:109;;;;;;;;;;;;;;-1:-1:-1;;398:1418:109;;;;5767:26:23;398:1418:109;;;;;;;:::i;:::-;;-1:-1:-1;398:1418:109;-1:-1:-1;;;;;;;;;;;398:1418:109;;3202:4:23;4919:24;398:1418:109;-1:-1:-1;398:1418:109;4919:24:23;398:1418:109;3202:4:23;:::i;:::-;5767:26;:::i;398:1418:109:-;;;;;;-1:-1:-1;;398:1418:109;;;;;;;;;;;;;-1:-1:-1;;;;;398:1418:109;;;;;;;;;;;;-1:-1:-1;;398:1418:109;;;;;;;466:39:108;398:1418:109;;;;;;;;;-1:-1:-1;;398:1418:109;;;;;3900:27:108;398:1418:109;;;;;;;;;;;;;-1:-1:-1;;398:1418:109;;;;;;;1616:3:108;398:1418:109;;;;;;;;;-1:-1:-1;;398:1418:109;;;;;;;;;;;;;;;;;;;-1:-1:-1;;398:1418:109;;;;;;;1285:6:106;398:1418:109;;;;;;;;;-1:-1:-1;;398:1418:109;;;;2357:1:24;398:1418:109;;;;;:::i;:::-;2303:62:24;;:::i;:::-;2357:1;:::i;398:1418:109:-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;398:1418:109;;;;;;;:::o;:::-;;:::i;:::-;;;477:31:86;;398:1418:109;;;;;;;;-1:-1:-1;;;;;398:1418:109;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;398:1418:109;;;;;;;:::o;:::-;;;;6326:19:106;398:1418:109;;;;;-1:-1:-1;;;;;398:1418:109;;;;;;;:::o;:::-;-1:-1:-1;;;;;398:1418:109;;;;;;-1:-1:-1;;398:1418:109;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;398:1418:109;;;;;;:::o;1167:340:82:-;;398:1418:109;1167:340:82;6893:76:26;;:::i;:::-;;;:::i;:::-;1949:1:30;2499:73;1991:1;-1:-1:-1;;;;;398:1418:109;;1376:73:82;;1167:340;398:1418:109;;;;:::i;:::-;;;740:55;;;;;;;;398:1418;;;;;;;;740:55;;;398:1418;;-1:-1:-1;;;;;398:1418:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;929:107;398:1418;;929:107;398:1418;877:169;398:1418;;;;:::i;:::-;;;;;;;;848:17;398:1418;:::i;:::-;1007:11;1020:13;;398:1418;996:38;398:1418;;996:38;;;;;;;:::i;:::-;;477:31:86;996:38:109;477:31:86;;996:38:109;;;;;;;;:::i;:::-;398:1418;929:107;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;1614:14:106;877:169:109;:::i;:::-;;1167:340:82:o;1376:73::-;6961:1:26;6893:76;;;:::i;:::-;;;:::i;6961:1::-;1376:73:82;;;398:1418:109;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;398:1418:109;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;398:1418:109;;;;;;;;-1:-1:-1;;398:1418:109;;;;:::o;3405:215:24:-;-1:-1:-1;;;;;398:1418:109;;;;3489:22:24;;3485:91;;-1:-1:-1;;;;;;;;;;;398:1418:109;;-1:-1:-1;;;;;;398:1418:109;;;;;;;;3975:40:24;-1:-1:-1;;3975:40:24;3405:215::o;3485:91::-;398:1418:109;;-1:-1:-1;;;3534:31:24;;3509:1;3534:31;;;398:1418:109;;;3534:31:24;1809:204:82;;-1:-1:-1;;;;;1809:204:82;398:1418:109;1809:204:82;398:1418:109;;;:::i;:::-;;;1188:1;1174:15;;1188:1;;398:1418;1244:40;398:1418;1244:40;398:1418;1317:6;398:1418;;1244:40;;;;;;:::i;:::-;1317:6;:::i;:::-;1809:204:82:o;1170:638:109:-;1359:1;1345:15;1359:1;;1578:145;;1449:58;398:1418;1449:58;398:1418;1522:215;398:1418;;1449:58;;;;;;:::i;:::-;;1677:11;;1690:13;;;398:1418;1666:38;398:1418;;1666:38;;;1449:58;1666:38;;;:::i;:::-;;477:31:86;1666:38:109;477:31:86;;1666:38:109;;;;;;;;:::i;:::-;398:1418;;-1:-1:-1;;;1449:58:109;1578:145;;;398:1418;;;1578:145;;;;:::i;1341:467::-;398:1418;;-1:-1:-1;;;1775:22:109;;;;;4148:103:23;-1:-1:-1;398:1418:109;;;-1:-1:-1;;;;;;;;;;;398:1418:109;;;;;;;;966:10:28;398:1418:109;;;;;;;;;;4468:23:23;4464:108;;4148:103;:::o;4464:108::-;398:1418:109;;;;4514:47:23;;;;;;966:10:28;4514:47:23;;;398:1418:109;;;;;4514:47:23;7270:387;-1:-1:-1;;;;;398:1418:109;;3217:17:106;398:1418:109;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2887:71:23;398:1418:109;;;;3217:17:106;398:1418:109;;;;;;;;;;;-1:-1:-1;;;;;398:1418:109;;;;;;;;;;-1:-1:-1;;398:1418:109;7509:4:23;398:1418:109;;;966:10:28;;-1:-1:-1;;;;;398:1418:109;-1:-1:-1;7532:40:23;-1:-1:-1;;7532:40:23;7509:4;7586:11;:::o;7432:219::-;7628:12;;3217:17:106;7628:12:23;:::o;7270:387::-;-1:-1:-1;;;;;398:1418:109;;-1:-1:-1;398:1418:109;;;;;;;;;466:39:108;;-1:-1:-1;;;;;;;;;;;2887:71:23;398:1418:109;;3901:31:23;398:1418:109;;;;-1:-1:-1;398:1418:109;;;;;;;;;;;-1:-1:-1;;;;;398:1418:109;;;;;;;;;;-1:-1:-1;;398:1418:109;7509:4:23;398:1418:109;;;966:10:28;;-1:-1:-1;;;;;398:1418:109;;7532:40:23;-1:-1:-1;;7532:40:23;7509:4;7586:11;:::o;7432:219::-;7628:12;;;-1:-1:-1;7628:12:23;:::o;7270:387::-;-1:-1:-1;;;;;398:1418:109;;-1:-1:-1;398:1418:109;;;;;;;;;612:37:108;;-1:-1:-1;;;;;;;;;;;2887:71:23;398:1418:109;;3901:31:23;398:1418:109;7270:387:23;-1:-1:-1;;;;;398:1418:109;;-1:-1:-1;398:1418:109;;;;;;;;;757:38:108;;-1:-1:-1;;;;;;;;;;;2887:71:23;398:1418:109;;3901:31:23;398:1418:109;7270:387:23;-1:-1:-1;;;;;398:1418:109;;-1:-1:-1;398:1418:109;;;;;;;;;900:35:108;;-1:-1:-1;;;;;;;;;;;2887:71:23;398:1418:109;;3901:31:23;398:1418:109;7270:387:23;-1:-1:-1;;;;;398:1418:109;;-1:-1:-1;398:1418:109;;;;;;;;;1041:36:108;;-1:-1:-1;;;;;;;;;;;2887:71:23;398:1418:109;;3901:31:23;398:1418:109;7270:387:23;-1:-1:-1;;;;;398:1418:109;;-1:-1:-1;398:1418:109;;;;;;;;;1187:40:108;;-1:-1:-1;;;;;;;;;;;2887:71:23;398:1418:109;;3901:31:23;398:1418:109;7270:387:23;-1:-1:-1;;;;;398:1418:109;;-1:-1:-1;398:1418:109;;;;;;;;;1333:36:108;;-1:-1:-1;;;;;;;;;;;2887:71:23;398:1418:109;;3901:31:23;398:1418:109;7270:387:23;-1:-1:-1;;;;;398:1418:109;;-1:-1:-1;398:1418:109;;;;;;;;;1479:40:108;;-1:-1:-1;;;;;;;;;;;2887:71:23;398:1418:109;;3901:31:23;398:1418:109;7270:387:23;-1:-1:-1;398:1418:109;;;-1:-1:-1;;;;;;;;;;;398:1418:109;;;;;;;;-1:-1:-1;;;;;398:1418:109;;;;;;;;;;;;3901:31:23;398:1418:109;7892:388:23;-1:-1:-1;398:1418:109;;;-1:-1:-1;;;;;;;;;;;398:1418:109;;;;;;;;-1:-1:-1;;;;;398:1418:109;;;;;;;;;;;;;;;;-1:-1:-1;398:1418:109;;;;;;;;;;;-1:-1:-1;;;;;398:1418:109;;;;;;;;;;-1:-1:-1;;398:1418:109;;;966:10:28;;-1:-1:-1;;;;;398:1418:109;;8155:40:23;-1:-1:-1;;8155:40:23;398:1418:109;8209:11:23;:::o;398:1418:109:-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;398:1418:109;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;2658:162:24:-;-1:-1:-1;;;;;;;;;;;398:1418:109;-1:-1:-1;;;;;398:1418:109;966:10:28;2717:23:24;2713:101;;2658:162::o;2713:101::-;398:1418:109;;-1:-1:-1;;;2763:40:24;;966:10:28;2763:40:24;;;398:1418:109;;;2763:40:24;2323:83:50;1019:819;;;;;;;1614:14:106;;1019:819:50;;;;;;;;;;;;;;;;398:1418:109;;;;;;;;;;;-1:-1:-1;;;;;398:1418:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;398:1418:109;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::o;7084:141:26:-;398:1418:109;-1:-1:-1;;;;;;;;;;;398:1418:109;;;;7150:18:26;7146:73;;7084:141::o;7146:73::-;398:1418:109;;-1:-1:-1;;;7191:17:26;;;;;398:1418:109;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;398:1418:109;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;398:1418:109;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;3036:4829:106;3165:37;3036:4829;3165:37;398:1418:109;;;3165:37:106;;;;;;:::i;:::-;398:1418:109;;;;-1:-1:-1;;;;;398:1418:109;;;3217:31:106;3213:95;;3322:20;;;;;398:1418:109;;;;;;;;;;;3322:25:106;3318:92;;3424:29;;;398:1418:109;;3424:29:106;;398:1418:109;3424:43:106;;-1:-1:-1;;;;;398:1418:109;;-1:-1:-1;;;;;398:1418:109;;;3424:43:106;;3420:971;;3036:4829;4406:23;;;398:1418:109;4405:24:106;398:1418:109;;;;;;;;4405:24:106;;398:1418:109;4405:24:106;:67;;;3036:4829;4401:132;;4563:28;;;;4548:9;3217:17;4600:3;4563:28;;398:1418:109;;4559:39:106;;;;;4623:31;;;:45;:31;;:::i;:::-;398:1418:109;-1:-1:-1;;;;;398:1418:109;;;4623:45:106;;4619:114;;4751:55;;4774:31;;:28;;;:31;:::i;:::-;-1:-1:-1;;;;;398:1418:109;;;;;4751:22:106;398:1418:109;;;;;;;4751:55:106;398:1418:109;;;;;4751:55:106;4747:120;;4904:28;4881:62;:55;4904:31;;398:1418:109;4904:28:106;;;:31;:::i;4881:55::-;398:1418:109;;-1:-1:-1;;398:1418:109;4939:4:106;398:1418:109;;;;4881:62:106;398:1418:109;4548:9:106;;4747:120;398:1418:109;;-1:-1:-1;;;4833:19:106;;;;;4619:114;398:1418:109;;-1:-1:-1;;;4695:23:106;;;;;4559:39;;;;;;;;;;4968:43;398:1418:109;;;;;;;;;;;4968:43:106;;4964:1124;;4543:411;6201:34;;;398:1418:109;6271:23:106;;;;398:1418:109;;;;;;;;6326:19:106;;;398:1418:109;6381:23:106;;;398:1418:109;6450:33:106;;;398:1418:109;6532:36:106;;;398:1418:109;6613:32:106;;;398:1418:109;6694:36:106;;;398:1418:109;-1:-1:-1;;;;;398:1418:109;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;3165:37:106;6133:612;;398:1418:109;6133:612:106;;398:1418:109;-1:-1:-1;;;;;398:1418:109;4406:23:106;6133:612;;398:1418:109;-1:-1:-1;;;;;398:1418:109;6133:612:106;;;398:1418:109;-1:-1:-1;;;;;398:1418:109;6133:612:106;;;398:1418:109;-1:-1:-1;;;;;398:1418:109;6201:34:106;6133:612;;398:1418:109;-1:-1:-1;;;;;398:1418:109;6271:23:106;6133:612;;398:1418:109;6133:612:106;;;:::i;:::-;398:1418:109;;-1:-1:-1;;;;;398:1418:109;3217:17:106;398:1418:109;;-1:-1:-1;;;;;;398:1418:109;;;;;;-1:-1:-1;;;;;398:1418:109;;;;;;;3165:37:106;6816:13;;398:1418:109;-1:-1:-1;;;;;398:1418:109;;;;-1:-1:-1;;;;;;398:1418:109;-1:-1:-1;;;;;398:1418:109;;;;;;;;;819:34:73;837:15;819:34;:::i;:::-;4939:4:106;398:1418:109;;-1:-1:-1;;;;398:1418:109;;;;;;-1:-1:-1;;;398:1418:109;;;;;;;;;;4939:4:106;398:1418:109;;-1:-1:-1;;;;;398:1418:109;;;;;;-1:-1:-1;;;;;;398:1418:109;;;;;;;;;;6935:42:106;;398:1418:109;;;3217:17:106;398:1418:109;;;;;;;3217:17:106;398:1418:109;;6935:42:106;6133:612;7005:21;;398:1418:109;3217:17:106;398:1418:109;;-1:-1:-1;;398:1418:109;;;;;;;;;;;;;;6133:612:106;7051:19;;398:1418:109;7036:34:106;1991:1:30;398:1418:109;-1:-1:-1;;;;;398:1418:109;;;7718:32:106;;398:1418:109;;;7081:135:106;;4543:411;-1:-1:-1;7229:36:106;;;398:1418:109;-1:-1:-1;;;;;398:1418:109;;;;7225:157:106;;4543:411;-1:-1:-1;7395:35:106;;;398:1418:109;-1:-1:-1;;;;;398:1418:109;;;;7391:153:106;;4543:411;-1:-1:-1;7557:34:106;;;398:1418:109;-1:-1:-1;;;;;398:1418:109;;;;7553:152:106;;4543:411;-1:-1:-1;7718:32:106;398:1418:109;-1:-1:-1;;;;;398:1418:109;;;;;;;7714:145:106;;3036:4829;:::o;7714:145::-;7780:68;;;:::i;7553:152::-;7621:73;;;:::i;:::-;;7553:152;;;7391:153;7460:73;;;:::i;:::-;;7391:153;;;7225:157;7295:76;;;:::i;:::-;;7225:157;;;7081:135;7144:61;;;:::i;:::-;;7081:135;;;4964:1124;5031:23;;;;;398:1418:109;5031:23:106;;;398:1418:109;;;;;;5031:77:106;;;;4964:1124;5027:1051;;;5154:23;;;398:1418:109;5154:37:106;;-1:-1:-1;;;;;398:1418:109;;;5154:37:106;;;;;:91;;5027:1051;5153:197;;;5027:1051;5128:638;;;398:1418:109;;-1:-1:-1;;;5398:27:106;;;;;5128:638;5476:19;;;;;;;;;398:1418:109;5476:24:106;;;;:74;;;5128:638;5475:197;;;5128:638;5450:316;;4964:1124;5450:316;398:1418:109;-1:-1:-1;;;5720:27:106;;;;;5475:197;5580:91;-1:-1:-1;5580:91:106;;;5475:197;;;;5580:91;-1:-1:-1;5621:36:106;;;398:1418:109;5621:50:106;;-1:-1:-1;;;;;398:1418:109;;;5621:50:106;;5580:91;;5476:74;5504:32;;;398:1418:109;5504:32:106;;-1:-1:-1;5504:46:106;;-1:-1:-1;;;;;398:1418:109;;;5504:46:106;;;5476:74;;;5153:197;5275:19;;;;398:1418:109;5275:24:106;:74;;5153:197;5275:74;-1:-1:-1;5303:32:106;;;398:1418:109;5303:46:106;;-1:-1:-1;;;;;398:1418:109;;;5303:46:106;;5153:197;;5154:91;-1:-1:-1;5195:36:106;;;398:1418:109;5195:50:106;;-1:-1:-1;;;;;398:1418:109;;;5195:50:106;;;5154:91;;5027:1051;5807:23;;;;;:37;398:1418:109;5807:23:106;;;398:1418:109;;;;;;;;;5807:37:106;;;;:65;;;5027:1051;5807:139;;;;5027:1051;5807:189;;;;5027:1051;5786:292;4964:1124;5786:292;398:1418:109;-1:-1:-1;;;6036:27:106;;;;;5807:189;-1:-1:-1;5950:32:106;;;398:1418:109;5950:46:106;;-1:-1:-1;;;;;398:1418:109;;;5950:46:106;;;5807:189;;:139;-1:-1:-1;5896:36:106;;;398:1418:109;5896:50:106;;-1:-1:-1;;;;;398:1418:109;;;5896:50:106;;;5807:139;;:65;5848:19;;;;398:1418:109;5848:24:106;;5807:65;;5031:77;-1:-1:-1;5058:36:106;;;398:1418:109;5058:50:106;;-1:-1:-1;;;;;398:1418:109;;;5058:50:106;;;5031:77;;4401:132;398:1418:109;;-1:-1:-1;;;4495:27:106;;;;;4405:67;4433:28;;;;;398:1418:109;4433:39:106;;4405:67;;3420:971;3487:36;;;398:1418:109;3487:50:106;;-1:-1:-1;;;;;398:1418:109;;;3487:50:106;;3483:419;;3420:971;3920:34;;;398:1418:109;3920:48:106;;-1:-1:-1;;;;;398:1418:109;;;3920:48:106;;3916:465;;3420:971;;;3916:465;3992:21;;;398:1418:109;;3992:21:106;;4041:19;;;398:1418:109;4041:24:106;:74;;;3988:379;4037:157;3420:971;4037:157;398:1418:109;;-1:-1:-1;;;4150:21:106;;;;;4041:74;-1:-1:-1;4069:32:106;;;398:1418:109;4069:46:106;;-1:-1:-1;;;;;398:1418:109;;;4069:46:106;;4041:74;;3988:379;4222:19;;;398:1418:109;4222:24:106;;;:74;;;3988:379;4218:149;3916:465;4218:149;398:1418:109;;-1:-1:-1;;;4327:21:106;;;;;4222:74;-1:-1:-1;4250:32:106;;;398:1418:109;4250:46:106;;-1:-1:-1;;;;;398:1418:109;;;4250:46:106;;;4222:74;;3483:419;3561:23;;;398:1418:109;;3561:23:106;;3612:35;;;398:1418:109;3612:49:106;;-1:-1:-1;;;;;398:1418:109;;;3612:49:106;3483:419;3608:132;398:1418:109;;-1:-1:-1;;;3696:21:106;;;;;3557:331;3768:35;;;398:1418:109;3768:49:106;;-1:-1:-1;;;;;398:1418:109;;;3768:49:106;3764:124;3483:419;3764:124;398:1418:109;;-1:-1:-1;;;3848:21:106;;;;;3318:92;398:1418:109;;-1:-1:-1;;;3370:29:106;;;;;3213:95;398:1418:109;;-1:-1:-1;;;3271:26:106;;;;;3900:253:56;4049:25;3900:253;4091:55;3900:253;4049:25;;;;;;;;;;:::i;:::-;4091:55;;:::i;398:1418:109:-;;;;;;;;;;;;2744:286:106;2862:6;;;:::i;:::-;398:1418:109;-1:-1:-1;;398:1418:109;;;;;;;2927:14:106;398:1418:109;;;;;;;;;;;;;;;;;;1285:6:106;-1:-1:-1;2880:144:106;;2744:286::o;2880:144::-;398:1418:109;;-1:-1:-1;;;2982:31:106;;;;;398:1418:109;;:::i;1641:1097:106:-;1782:1;398:1418:109;;1745:38:106;1741:119;;1870:65;398:1418:109;;1870:65:106;1991:1:30;;1870:65:106;1946:42;398:1418:109;1965:23:106;;;398:1418:109;;;;;;1946:42:106;398:1418:109;;-1:-1:-1;;;;398:1418:109;;;;;;-1:-1:-1;;;398:1418:109;;;;;;;;1946:42:106;1998:34;2013:19;;;398:1418:109;1998:34:106;1991:1:30;;1998:34:106;2061:23;;;398:1418:109;1946:42:106;398:1418:109;;-1:-1:-1;;;;;;398:1418:109;-1:-1:-1;;;;;398:1418:109;;;;;;2099:33:106;;;398:1418:109;;;;;2578:36:106;;2061:23;398:1418:109;;;2095:148:106;;1641:1097;-1:-1:-1;2256:36:106;;;398:1418:109;-1:-1:-1;;;;;398:1418:109;;;;2252:158:106;;1641:1097;-1:-1:-1;2423:32:106;;;398:1418:109;-1:-1:-1;;;;;398:1418:109;;;;2419:146:106;;-1:-1:-1;2578:36:106;398:1418:109;-1:-1:-1;;;;;398:1418:109;;;;;;;2574:158:106;;1641:1097;:::o;2574:158::-;2644:77;;;:::i;2419:146::-;2485:69;;;:::i;2252:158::-;2322:77;;;:::i;:::-;;2252:158;;;2095:148;2162:70;;;:::i;:::-;;2095:148;;;1741:119;398:1418:109;;-1:-1:-1;;;1806:43:106;;;;;4421:582:56;;4593:8;;-1:-1:-1;398:1418:109;;5674:21:56;:17;;5799:158;;;;;;5670:354;398:1418:109;;-1:-1:-1;;;5994:19:56;;;;;4589:408;398:1418:109;;4841:22:56;:49;;;4589:408;4837:119;;4969:17;;:::o;4837:119::-;398:1418:109;;-1:-1:-1;;;4917:24:56;;-1:-1:-1;;;;;398:1418:109;;;4917:24:56;;;398:1418:109;;;4917:24:56;4841:49;4867:18;;;:23;4841:49;;14296:213:69;398:1418:109;14374:24:69;;;;14370:103;;398:1418:109;14296:213:69;:::o;14370:103::-;398:1418:109;;;;14421:41:69;;;;;;14452:2;14421:41;;;398:1418:109;;;;;14421:41:69","linkReferences":{},"immutableReferences":{"60067":[{"start":1177,"length":32},{"start":1540,"length":32}],"69325":[{"start":4418,"length":32},{"start":6516,"length":32}]}},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","DEPOSITOR_WHITELIST_ROLE()":"1b66c9e1","DEPOSIT_LIMIT_SET_ROLE()":"a21a1df9","DEPOSIT_WHITELIST_SET_ROLE()":"db388715","EPOCH_DURATION_SET_ROLE()":"61819dd8","FACTORY()":"2dd31000","FLASH_FEE_BASE()":"ecc98f05","FLASH_FEE_RATE_SET_ROLE()":"bc46f722","FLASH_FEE_RECEIVER_SET_ROLE()":"31d9736c","FLASH_LOAN_ENABLED_SET_ROLE()":"a66b3a73","IS_DEPOSIT_LIMIT_SET_ROLE()":"1415519b","MIN_EXIT_WINDOW()":"f151f6b5","RETURN_VALUE()":"653b04cd","burner()":"27810b6e","collateral()":"d8dfeb45","delegator()":"ce9b7930","depositLimit()":"ecf70858","depositWhitelist()":"48d3b775","flashFeeRate()":"e945da7f","flashFeeReceiver()":"a8b24f9a","flashLoanEnabled()":"65d61c6c","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","initialize(uint64,address,bytes)":"57ec83cc","isDelegatorInitialized()":"50861adc","isDepositLimit()":"a1b12202","isDepositorWhitelisted(address)":"794b15b7","isSlasherInitialized()":"6ec1e3f8","isWithdrawalsClaimed(uint256,address)":"a5d03223","migrate(uint64,bytes)":"2abe3048","owner()":"8da5cb5b","renounceOwnership()":"715018a6","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","slasher()":"b1344271","staticDelegateCall(address,bytes)":"9f86fd85","supportsInterface(bytes4)":"01ffc9a7","transferOwnership(address)":"f2fde38b","version()":"54fd4d50","withdrawalShares(uint256)":"afba70ad","withdrawalSharesOf(uint256,address)":"a3b54172","withdrawals(uint256)":"5cc07076"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vaultFactory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadySet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientExitWindow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCollateral\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEpochDuration\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEpochDurationSetEpochsDelay\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidFlashParams\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOrigin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingRoles\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoDepositWhitelist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotFactory\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEPOSITOR_WHITELIST_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEPOSIT_LIMIT_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEPOSIT_WHITELIST_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"EPOCH_DURATION_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FLASH_FEE_BASE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FLASH_FEE_RATE_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FLASH_FEE_RECEIVER_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FLASH_LOAN_ENABLED_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"IS_DEPOSIT_LIMIT_SET_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MIN_EXIT_WINDOW\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RETURN_VALUE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"burner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"collateral\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"delegator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"depositLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"depositWhitelist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"flashFeeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"flashFeeReceiver\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"flashLoanEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"initialVersion\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner_\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isDelegatorInitialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isDepositLimit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isDepositorWhitelisted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isSlasherInitialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isWithdrawalsClaimed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newVersion\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"migrate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slasher\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"staticDelegateCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"}],\"name\":\"withdrawalShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"withdrawalSharesOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"}],\"name\":\"withdrawals\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize(uint64,address,bytes)\":{\"params\":{\"data\":\"some data to use\",\"initialVersion\":\"initial version of the entity\",\"owner\":\"initial owner of the entity\"}},\"migrate(uint64,bytes)\":{\"params\":{\"data\":\"some data to use\",\"newVersion\":\"new version of the entity\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"staticDelegateCall(address,bytes)\":{\"details\":\"It allows to use this contract's storage on-chain.\",\"params\":{\"data\":\"data to make a delegatecall with\",\"target\":\"address of the contract to make a delegatecall to\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"version()\":{\"details\":\"Starts from 1.\",\"returns\":{\"_0\":\"version of the entity\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DEPOSITOR_WHITELIST_ROLE()\":{\"notice\":\"Get a depositor whitelist status setter's role.\"},\"DEPOSIT_LIMIT_SET_ROLE()\":{\"notice\":\"Get a deposit limit setter's role.\"},\"DEPOSIT_WHITELIST_SET_ROLE()\":{\"notice\":\"Get a deposit whitelist enabler/disabler's role.\"},\"EPOCH_DURATION_SET_ROLE()\":{\"notice\":\"Get a epoch duration setter's role.\"},\"FACTORY()\":{\"notice\":\"Get the factory's address.\"},\"FLASH_FEE_BASE()\":{\"notice\":\"Get a flash fee base.\"},\"FLASH_FEE_RATE_SET_ROLE()\":{\"notice\":\"Get a flash fee rate setter's role.\"},\"FLASH_FEE_RECEIVER_SET_ROLE()\":{\"notice\":\"Get a flash fee receiver setter's role.\"},\"FLASH_LOAN_ENABLED_SET_ROLE()\":{\"notice\":\"Get a flash loan enabled setter's role.\"},\"IS_DEPOSIT_LIMIT_SET_ROLE()\":{\"notice\":\"Get a deposit limit enabler/disabler's role.\"},\"MIN_EXIT_WINDOW()\":{\"notice\":\"The minimum period of time that must be available to exit in case of epoch increase after migration.\"},\"RETURN_VALUE()\":{\"notice\":\"Get a value that must be returned by the flash loan borrower.\"},\"burner()\":{\"notice\":\"Get a burner to issue debt to (e.g., 0xdEaD or some unwrapper contract).\"},\"collateral()\":{\"notice\":\"Get a vault collateral.\"},\"delegator()\":{\"notice\":\"Get a delegator (it delegates the vault's stake to networks and operators).\"},\"depositLimit()\":{\"notice\":\"Get a deposit limit (maximum amount of the active stake that can be in the vault simultaneously).\"},\"depositWhitelist()\":{\"notice\":\"Get if the deposit whitelist is enabled.\"},\"flashFeeRate()\":{\"notice\":\"Get a flash fee rate (100% = 1_000_000_000; 0.03% = 300_000).\"},\"flashFeeReceiver()\":{\"notice\":\"Get a flash fee receiver.\"},\"flashLoanEnabled()\":{\"notice\":\"Get if a flash loan mechanic is enabled.\"},\"initialize(uint64,address,bytes)\":{\"notice\":\"Initialize this entity contract by using a given data and setting a particular version and owner.\"},\"isDelegatorInitialized()\":{\"notice\":\"Get if the delegator is initialized.\"},\"isDepositLimit()\":{\"notice\":\"Get if the deposit limit is set.\"},\"isDepositorWhitelisted(address)\":{\"notice\":\"Get if a given account is whitelisted as a depositor.\"},\"isSlasherInitialized()\":{\"notice\":\"Get if the slasher is initialized.\"},\"isWithdrawalsClaimed(uint256,address)\":{\"notice\":\"Get if the withdrawals are claimed for a particular account at a given epoch.\"},\"migrate(uint64,bytes)\":{\"notice\":\"Migrate this entity to a particular newer version using a given data.\"},\"slasher()\":{\"notice\":\"Get a slasher (it provides networks a slashing mechanism).\"},\"staticDelegateCall(address,bytes)\":{\"notice\":\"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data).\"},\"version()\":{\"notice\":\"Get the entity's version.\"},\"withdrawalShares(uint256)\":{\"notice\":\"Get a total number of withdrawal shares at a given epoch.\"},\"withdrawalSharesOf(uint256,address)\":{\"notice\":\"Get a number of withdrawal shares for a particular account at a given epoch (zero if claimed).\"},\"withdrawals(uint256)\":{\"notice\":\"Get a total amount of the withdrawals at a given epoch.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/vault/v1.1/VaultTokenized.sol\":\"VaultTokenized\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol\":{\"keccak256\":\"0xbb96dc9c468170c3224126e953de917e06332ec5909a3d85e6e5bb0df10c5139\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d14e6486e127e7e31c2ffccfc212c7ebaaecf8fb05677575128b449ee113def2\",\"dweb:/ipfs/QmabvyfStwBcum8mGfkmxcTV45rjyHmzHGCxfxyhmu48Yx\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf\",\"dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89\",\"dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1\",\"dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol\":{\"keccak256\":\"0x0b1459615b9b47c2a4eec8e72f23ccc601f1d711f679a1c06b3390459021a341\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aaf6209fb90f02ebd1c9603568f5e6da5fa2f896820ba66b5041eeed993dc4ce\",\"dweb:/ipfs/QmYsSH2PSGbTXMVXXxhh9AXzfHPSz2j42REvds6xjU7WmR\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashLender.sol\":{\"keccak256\":\"0x5d19ea24c555cf6a5dbafea9fac57887cc3e72154f3ee8e0a2bf67971811c14b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3af1364c971d94bccf3efcc509b2c5c03fe1c69ea9945ba29a96998bfd6c593e\",\"dweb:/ipfs/Qmczq52prNGX5tHuk8aENZsuYgxTeA6YVMHV7yMTKeFjbr\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44\",\"dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6\",\"dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza\"]},\"src/contracts/common/MigratableEntity.sol\":{\"keccak256\":\"0x303ad40a3de8fa808cc30a6fbd5998633f6a89b982e6db1fa981e0566ab445e7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://fa8fb92995ead02798e013190b87b84b44cc68668262f045c9b0b4783940e2bf\",\"dweb:/ipfs/QmV1uKGVLKwWisc714R8fCt71gXUQJpaKvdc6LQ8WtvMpL\"]},\"src/contracts/common/StaticDelegateCallable.sol\":{\"keccak256\":\"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764\",\"dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD\"]},\"src/contracts/libraries/Checkpoints.sol\":{\"keccak256\":\"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609\",\"dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE\"]},\"src/contracts/vault/v1.1/Vault.sol\":{\"keccak256\":\"0x0809cdc31876a00412d127f2b10589a38ef0110585f7ee70d4e50a560812c15e\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://66ed92da583d2e0b4eba1e07e5d7569a9f3bebfaa1d82968f3ca124d840e1618\",\"dweb:/ipfs/QmWR7gbmGyZAo6LCTtx3pRMviN7ZBsxp1kGndTmo4CFGRc\"]},\"src/contracts/vault/v1.1/VaultStorage.sol\":{\"keccak256\":\"0x510c83437bb493d66c299aec31ccd9d741e1348299b4170d891d476218231d19\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://8879b6b1ad9ecc8ffa5d7725b03158dc2f65e30ac65fe3af9c654277740039e0\",\"dweb:/ipfs/QmdC4DkajUbGuRzaCsqegJWGTxXvooWFCVkU7EdXG9mou2\"]},\"src/contracts/vault/v1.1/VaultTokenized.sol\":{\"keccak256\":\"0x6b40159424394daadca3f21c58aac3650d1fd6d906494367a799bc33c27cd07e\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://0b908da3ff66b6c6c3e6d973e2cc55caf6eb5a0d7917268ea4682e106b306dc1\",\"dweb:/ipfs/QmUs5F2dz4PoX9DjgxV8oU3SjzEGJCx3Sq5E2Q7xqdDZQs\"]},\"src/contracts/vault/v1.1/VaultTokenizedImplementation.sol\":{\"keccak256\":\"0x07bb1e77b3c7cd0c754d4ae874fb731f82cf31a6647c40db6e0b8e7e491af2ca\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1514dd2e4f16c13c764529524c0f66f2009a2d348e5e680d170ca6eb81ec0266\",\"dweb:/ipfs/QmXAKr68V1nPXsee8GUVYAYiiY5bDqKpTamU5DenMPhewX\"]},\"src/interfaces/common/IMigratableEntity.sol\":{\"keccak256\":\"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c\",\"dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds\"]},\"src/interfaces/common/IStaticDelegateCallable.sol\":{\"keccak256\":\"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516\",\"dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi\"]},\"src/interfaces/vault/v1.1/IVault.sol\":{\"keccak256\":\"0x41c3b7c7955923f29d7a913dcd49a2f7c4c40339eda1cdf675d04bf15168fbd4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7f26841febf819da87037e7f285fb4e9c3a3191d2cc9284d4679bd5f3d5eb79\",\"dweb:/ipfs/QmejKi1svukhK2bwGPvSXLzG4oMKUZo7xEm1gNvuYWNbDK\"]},\"src/interfaces/vault/v1.1/IVaultStorage.sol\":{\"keccak256\":\"0x762053f3cc4cb5809c48b846a77b36e697323b2011118c2df8ea2692a02ece5b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282252083722ebdb1e8977ba1fd4860e15acb49bb4ec337632dd14304863b1d\",\"dweb:/ipfs/QmNNBo5HaWBenQZLgnjF3NbxVRupfgYeUMztYYQMpD9VoB\"]},\"src/interfaces/vault/v1.1/IVaultTokenized.sol\":{\"keccak256\":\"0x98adcf1802a3e90cdc93e26afd6f27da02727473f18f482a6b297f8574a195e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://10c1d8f09f0ad1e82d198491124e8867dc1c64b242a705c4bb13abaa37b5cea2\",\"dweb:/ipfs/QmfNUPDbLQADLnQbsto5yKW2bR4v5RgphvrqoTQhSE7zkv\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"vaultFactory","type":"address"},{"internalType":"address","name":"implementation","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[],"type":"error","name":"AlreadyInitialized"},{"inputs":[],"type":"error","name":"AlreadySet"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[],"type":"error","name":"InsufficientExitWindow"},{"inputs":[],"type":"error","name":"InvalidAccount"},{"inputs":[],"type":"error","name":"InvalidCollateral"},{"inputs":[],"type":"error","name":"InvalidEpochDuration"},{"inputs":[],"type":"error","name":"InvalidEpochDurationSetEpochsDelay"},{"inputs":[],"type":"error","name":"InvalidFlashParams"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"InvalidOrigin"},{"inputs":[],"type":"error","name":"MissingRoles"},{"inputs":[],"type":"error","name":"NoDepositWhitelist"},{"inputs":[],"type":"error","name":"NotFactory"},{"inputs":[],"type":"error","name":"NotInitialized"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintDowncast"},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[],"stateMutability":"payable","type":"fallback"},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEPOSITOR_WHITELIST_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEPOSIT_LIMIT_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEPOSIT_WHITELIST_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"EPOCH_DURATION_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FLASH_FEE_BASE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FLASH_FEE_RATE_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FLASH_FEE_RECEIVER_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FLASH_LOAN_ENABLED_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_DEPOSIT_LIMIT_SET_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MIN_EXIT_WINDOW","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"RETURN_VALUE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"burner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"collateral","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"delegator","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"depositLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"depositWhitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"flashFeeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"flashFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"flashLoanEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"initialVersion","type":"uint64"},{"internalType":"address","name":"owner_","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"isDelegatorInitialized","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"isDepositLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"isDepositorWhitelisted","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"isSlasherInitialized","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"isWithdrawalsClaimed","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"newVersion","type":"uint64"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"migrate"},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[],"stateMutability":"view","type":"function","name":"slasher","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"staticDelegateCall"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"version","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"}],"stateMutability":"view","type":"function","name":"withdrawalShares","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"withdrawalSharesOf","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"}],"stateMutability":"view","type":"function","name":"withdrawals","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"initialize(uint64,address,bytes)":{"params":{"data":"some data to use","initialVersion":"initial version of the entity","owner":"initial owner of the entity"}},"migrate(uint64,bytes)":{"params":{"data":"some data to use","newVersion":"new version of the entity"}},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"staticDelegateCall(address,bytes)":{"details":"It allows to use this contract's storage on-chain.","params":{"data":"data to make a delegatecall with","target":"address of the contract to make a delegatecall to"}},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"version()":{"details":"Starts from 1.","returns":{"_0":"version of the entity"}}},"version":1},"userdoc":{"kind":"user","methods":{"DEPOSITOR_WHITELIST_ROLE()":{"notice":"Get a depositor whitelist status setter's role."},"DEPOSIT_LIMIT_SET_ROLE()":{"notice":"Get a deposit limit setter's role."},"DEPOSIT_WHITELIST_SET_ROLE()":{"notice":"Get a deposit whitelist enabler/disabler's role."},"EPOCH_DURATION_SET_ROLE()":{"notice":"Get a epoch duration setter's role."},"FACTORY()":{"notice":"Get the factory's address."},"FLASH_FEE_BASE()":{"notice":"Get a flash fee base."},"FLASH_FEE_RATE_SET_ROLE()":{"notice":"Get a flash fee rate setter's role."},"FLASH_FEE_RECEIVER_SET_ROLE()":{"notice":"Get a flash fee receiver setter's role."},"FLASH_LOAN_ENABLED_SET_ROLE()":{"notice":"Get a flash loan enabled setter's role."},"IS_DEPOSIT_LIMIT_SET_ROLE()":{"notice":"Get a deposit limit enabler/disabler's role."},"MIN_EXIT_WINDOW()":{"notice":"The minimum period of time that must be available to exit in case of epoch increase after migration."},"RETURN_VALUE()":{"notice":"Get a value that must be returned by the flash loan borrower."},"burner()":{"notice":"Get a burner to issue debt to (e.g., 0xdEaD or some unwrapper contract)."},"collateral()":{"notice":"Get a vault collateral."},"delegator()":{"notice":"Get a delegator (it delegates the vault's stake to networks and operators)."},"depositLimit()":{"notice":"Get a deposit limit (maximum amount of the active stake that can be in the vault simultaneously)."},"depositWhitelist()":{"notice":"Get if the deposit whitelist is enabled."},"flashFeeRate()":{"notice":"Get a flash fee rate (100% = 1_000_000_000; 0.03% = 300_000)."},"flashFeeReceiver()":{"notice":"Get a flash fee receiver."},"flashLoanEnabled()":{"notice":"Get if a flash loan mechanic is enabled."},"initialize(uint64,address,bytes)":{"notice":"Initialize this entity contract by using a given data and setting a particular version and owner."},"isDelegatorInitialized()":{"notice":"Get if the delegator is initialized."},"isDepositLimit()":{"notice":"Get if the deposit limit is set."},"isDepositorWhitelisted(address)":{"notice":"Get if a given account is whitelisted as a depositor."},"isSlasherInitialized()":{"notice":"Get if the slasher is initialized."},"isWithdrawalsClaimed(uint256,address)":{"notice":"Get if the withdrawals are claimed for a particular account at a given epoch."},"migrate(uint64,bytes)":{"notice":"Migrate this entity to a particular newer version using a given data."},"slasher()":{"notice":"Get a slasher (it provides networks a slashing mechanism)."},"staticDelegateCall(address,bytes)":{"notice":"Make a delegatecall from this contract to a given target contract with a particular data (always reverts with a return data)."},"version()":{"notice":"Get the entity's version."},"withdrawalShares(uint256)":{"notice":"Get a total number of withdrawal shares at a given epoch."},"withdrawalSharesOf(uint256,address)":{"notice":"Get a number of withdrawal shares for a particular account at a given epoch (zero if claimed)."},"withdrawals(uint256)":{"notice":"Get a total amount of the withdrawals at a given epoch."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/vault/v1.1/VaultTokenized.sol":"VaultTokenized"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol":{"keccak256":"0xbb96dc9c468170c3224126e953de917e06332ec5909a3d85e6e5bb0df10c5139","urls":["bzz-raw://d14e6486e127e7e31c2ffccfc212c7ebaaecf8fb05677575128b449ee113def2","dweb:/ipfs/QmabvyfStwBcum8mGfkmxcTV45rjyHmzHGCxfxyhmu48Yx"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol":{"keccak256":"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866","urls":["bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf","dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab","urls":["bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89","dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606","urls":["bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1","dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol":{"keccak256":"0x0b1459615b9b47c2a4eec8e72f23ccc601f1d711f679a1c06b3390459021a341","urls":["bzz-raw://aaf6209fb90f02ebd1c9603568f5e6da5fa2f896820ba66b5041eeed993dc4ce","dweb:/ipfs/QmYsSH2PSGbTXMVXXxhh9AXzfHPSz2j42REvds6xjU7WmR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashLender.sol":{"keccak256":"0x5d19ea24c555cf6a5dbafea9fac57887cc3e72154f3ee8e0a2bf67971811c14b","urls":["bzz-raw://3af1364c971d94bccf3efcc509b2c5c03fe1c69ea9945ba29a96998bfd6c593e","dweb:/ipfs/Qmczq52prNGX5tHuk8aENZsuYgxTeA6YVMHV7yMTKeFjbr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b","urls":["bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b","dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol":{"keccak256":"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd","urls":["bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac","dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330","urls":["bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf","dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310","urls":["bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862","dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol":{"keccak256":"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f","urls":["bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44","dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc","urls":["bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6","dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza"],"license":"MIT"},"src/contracts/common/MigratableEntity.sol":{"keccak256":"0x303ad40a3de8fa808cc30a6fbd5998633f6a89b982e6db1fa981e0566ab445e7","urls":["bzz-raw://fa8fb92995ead02798e013190b87b84b44cc68668262f045c9b0b4783940e2bf","dweb:/ipfs/QmV1uKGVLKwWisc714R8fCt71gXUQJpaKvdc6LQ8WtvMpL"],"license":"BUSL-1.1"},"src/contracts/common/StaticDelegateCallable.sol":{"keccak256":"0x350029aa8955eacaffffaeb58babc5c98e80ebc5c5db388ed17ee6465f4a9d90","urls":["bzz-raw://eb392a8ee9050e0af606897df63e3404e3829e8b688b580663892f9664195764","dweb:/ipfs/QmaXC8jqV8UrrAFkzXTEv2fJF56sy33HhLxAzaRZmUxuXD"],"license":"BUSL-1.1"},"src/contracts/libraries/Checkpoints.sol":{"keccak256":"0xba90097c8bfe0a975499428b5f8ac5569483c7d92ccc28c12d70de416aae040c","urls":["bzz-raw://12f5d93ca94cd06d3147db68993165a58e17903ed53682560de61f3085ad4609","dweb:/ipfs/QmePiuAqvXprMLmFZkGZeGjvGPAvsEDHfCDv7BoQhXu9xE"],"license":"MIT"},"src/contracts/vault/v1.1/Vault.sol":{"keccak256":"0x0809cdc31876a00412d127f2b10589a38ef0110585f7ee70d4e50a560812c15e","urls":["bzz-raw://66ed92da583d2e0b4eba1e07e5d7569a9f3bebfaa1d82968f3ca124d840e1618","dweb:/ipfs/QmWR7gbmGyZAo6LCTtx3pRMviN7ZBsxp1kGndTmo4CFGRc"],"license":"BUSL-1.1"},"src/contracts/vault/v1.1/VaultStorage.sol":{"keccak256":"0x510c83437bb493d66c299aec31ccd9d741e1348299b4170d891d476218231d19","urls":["bzz-raw://8879b6b1ad9ecc8ffa5d7725b03158dc2f65e30ac65fe3af9c654277740039e0","dweb:/ipfs/QmdC4DkajUbGuRzaCsqegJWGTxXvooWFCVkU7EdXG9mou2"],"license":"BUSL-1.1"},"src/contracts/vault/v1.1/VaultTokenized.sol":{"keccak256":"0x6b40159424394daadca3f21c58aac3650d1fd6d906494367a799bc33c27cd07e","urls":["bzz-raw://0b908da3ff66b6c6c3e6d973e2cc55caf6eb5a0d7917268ea4682e106b306dc1","dweb:/ipfs/QmUs5F2dz4PoX9DjgxV8oU3SjzEGJCx3Sq5E2Q7xqdDZQs"],"license":"BUSL-1.1"},"src/contracts/vault/v1.1/VaultTokenizedImplementation.sol":{"keccak256":"0x07bb1e77b3c7cd0c754d4ae874fb731f82cf31a6647c40db6e0b8e7e491af2ca","urls":["bzz-raw://1514dd2e4f16c13c764529524c0f66f2009a2d348e5e680d170ca6eb81ec0266","dweb:/ipfs/QmXAKr68V1nPXsee8GUVYAYiiY5bDqKpTamU5DenMPhewX"],"license":"BUSL-1.1"},"src/interfaces/common/IMigratableEntity.sol":{"keccak256":"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4","urls":["bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c","dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds"],"license":"MIT"},"src/interfaces/common/IStaticDelegateCallable.sol":{"keccak256":"0xa335d4e81b9071b7de66ef92b43ff20671d86516eb1be46fef29a3483cd3f5d5","urls":["bzz-raw://d464b9db863c14c05547d2b23352f2e9b7b784799cf09f6bbc4906a2a74e3516","dweb:/ipfs/QmUVWzFvJz7eEbDQKiFTTzwi7TEbjcs3VmwdM4kuptAKvi"],"license":"MIT"},"src/interfaces/vault/v1.1/IVault.sol":{"keccak256":"0x41c3b7c7955923f29d7a913dcd49a2f7c4c40339eda1cdf675d04bf15168fbd4","urls":["bzz-raw://b7f26841febf819da87037e7f285fb4e9c3a3191d2cc9284d4679bd5f3d5eb79","dweb:/ipfs/QmejKi1svukhK2bwGPvSXLzG4oMKUZo7xEm1gNvuYWNbDK"],"license":"MIT"},"src/interfaces/vault/v1.1/IVaultStorage.sol":{"keccak256":"0x762053f3cc4cb5809c48b846a77b36e697323b2011118c2df8ea2692a02ece5b","urls":["bzz-raw://5282252083722ebdb1e8977ba1fd4860e15acb49bb4ec337632dd14304863b1d","dweb:/ipfs/QmNNBo5HaWBenQZLgnjF3NbxVRupfgYeUMztYYQMpD9VoB"],"license":"MIT"},"src/interfaces/vault/v1.1/IVaultTokenized.sol":{"keccak256":"0x98adcf1802a3e90cdc93e26afd6f27da02727473f18f482a6b297f8574a195e0","urls":["bzz-raw://10c1d8f09f0ad1e82d198491124e8867dc1c64b242a705c4bb13abaa37b5cea2","dweb:/ipfs/QmfNUPDbLQADLnQbsto5yKW2bR4v5RgphvrqoTQhSE7zkv"],"license":"MIT"}},"version":1},"id":109} \ No newline at end of file diff --git a/script/deploy/Vault.s.sol b/script/deploy/Vault.s.sol index 594eb101..18272af3 100644 --- a/script/deploy/Vault.s.sol +++ b/script/deploy/Vault.s.sol @@ -1,11 +1,12 @@ // SPDX-License-Identifier: BUSL-1.1 pragma solidity 0.8.25; -import {Script, console2} from "forge-std/Script.sol"; +import {console2} from "forge-std/Script.sol"; + +import {SymbioticCoreInit} from "../integration/SymbioticCoreInit.sol"; import {Vault} from "../../src/contracts/vault/Vault.sol"; -import {IMigratablesFactory} from "../../src/interfaces/common/IMigratablesFactory.sol"; import {IVault} from "../../src/interfaces/vault/IVault.sol"; import {IVaultConfigurator} from "../../src/interfaces/IVaultConfigurator.sol"; import {IBaseDelegator} from "../../src/interfaces/delegator/IBaseDelegator.sol"; @@ -17,14 +18,13 @@ import {IBaseSlasher} from "../../src/interfaces/slasher/IBaseSlasher.sol"; import {ISlasher} from "../../src/interfaces/slasher/ISlasher.sol"; import {IVetoSlasher} from "../../src/interfaces/slasher/IVetoSlasher.sol"; -contract VaultScript is Script { +contract VaultScript is SymbioticCoreInit { function run( - address vaultConfigurator, address owner, address collateral, address burner, uint48 epochDuration, - address[] calldata whitelistedDepositors, + address[] calldata depositorsWhitelisted, uint256 depositLimit, uint64 delegatorIndex, address hook, @@ -33,10 +33,12 @@ contract VaultScript is Script { uint64 slasherIndex, uint48 vetoDuration ) public { + SymbioticCoreInit.run(0); + vm.startBroadcast(); (,, address deployer) = vm.readCallers(); - bool depositWhitelist = whitelistedDepositors.length != 0; + bool depositWhitelist = depositorsWhitelisted.length != 0; bytes memory vaultParams = abi.encode( IVault.InitParams({ @@ -136,7 +138,7 @@ contract VaultScript is Script { ); } - (address vault_, address delegator_, address slasher_) = IVaultConfigurator(vaultConfigurator).create( + (address vault_, address delegator_, address slasher_) = symbioticCore.vaultConfigurator.create( IVaultConfigurator.InitParams({ version: 1, owner: owner, @@ -153,8 +155,8 @@ contract VaultScript is Script { Vault(vault_).grantRole(Vault(vault_).DEFAULT_ADMIN_ROLE(), owner); Vault(vault_).grantRole(Vault(vault_).DEPOSITOR_WHITELIST_ROLE(), deployer); - for (uint256 i; i < whitelistedDepositors.length; ++i) { - Vault(vault_).setDepositorWhitelistStatus(whitelistedDepositors[i], true); + for (uint256 i; i < depositorsWhitelisted.length; ++i) { + Vault(vault_).setDepositorWhitelistStatus(depositorsWhitelisted[i], true); } Vault(vault_).renounceRole(Vault(vault_).DEPOSITOR_WHITELIST_ROLE(), deployer); diff --git a/script/deploy/VaultTokenized.s.sol b/script/deploy/VaultTokenized.s.sol index 27e6f038..fdcbae7d 100644 --- a/script/deploy/VaultTokenized.s.sol +++ b/script/deploy/VaultTokenized.s.sol @@ -1,11 +1,12 @@ // SPDX-License-Identifier: BUSL-1.1 pragma solidity 0.8.25; -import {Script, console2} from "forge-std/Script.sol"; +import {console2} from "forge-std/Script.sol"; + +import {SymbioticCoreInit} from "../integration/SymbioticCoreInit.sol"; import {Vault} from "../../src/contracts/vault/Vault.sol"; -import {IMigratablesFactory} from "../../src/interfaces/common/IMigratablesFactory.sol"; import {IVault} from "../../src/interfaces/vault/IVault.sol"; import {IVaultTokenized} from "../../src/interfaces/vault/IVaultTokenized.sol"; import {IVaultConfigurator} from "../../src/interfaces/IVaultConfigurator.sol"; @@ -18,14 +19,13 @@ import {IBaseSlasher} from "../../src/interfaces/slasher/IBaseSlasher.sol"; import {ISlasher} from "../../src/interfaces/slasher/ISlasher.sol"; import {IVetoSlasher} from "../../src/interfaces/slasher/IVetoSlasher.sol"; -contract VaultTokenizedScript is Script { +contract VaultTokenizedScript is SymbioticCoreInit { function run( - address vaultConfigurator, address owner, address collateral, address burner, uint48 epochDuration, - address[] calldata whitelistedDepositors, + address[] calldata depositorsWhitelisted, uint256 depositLimit, string calldata name, string calldata symbol, @@ -36,10 +36,12 @@ contract VaultTokenizedScript is Script { uint64 slasherIndex, uint48 vetoDuration ) public { + SymbioticCoreInit.run(0); + vm.startBroadcast(); (,, address deployer) = vm.readCallers(); - bool depositWhitelist = whitelistedDepositors.length != 0; + bool depositWhitelist = depositorsWhitelisted.length != 0; bytes memory vaultParams = abi.encode( IVaultTokenized.InitParamsTokenized({ @@ -143,7 +145,7 @@ contract VaultTokenizedScript is Script { ); } - (address vault_, address delegator_, address slasher_) = IVaultConfigurator(vaultConfigurator).create( + (address vault_, address delegator_, address slasher_) = symbioticCore.vaultConfigurator.create( IVaultConfigurator.InitParams({ version: 2, owner: owner, @@ -160,8 +162,8 @@ contract VaultTokenizedScript is Script { Vault(vault_).grantRole(Vault(vault_).DEFAULT_ADMIN_ROLE(), owner); Vault(vault_).grantRole(Vault(vault_).DEPOSITOR_WHITELIST_ROLE(), deployer); - for (uint256 i; i < whitelistedDepositors.length; ++i) { - Vault(vault_).setDepositorWhitelistStatus(whitelistedDepositors[i], true); + for (uint256 i; i < depositorsWhitelisted.length; ++i) { + Vault(vault_).setDepositorWhitelistStatus(depositorsWhitelisted[i], true); } Vault(vault_).renounceRole(Vault(vault_).DEPOSITOR_WHITELIST_ROLE(), deployer); diff --git a/script/deploy/Core.s.sol b/script/deploy/genesis/Core.s.sol similarity index 81% rename from script/deploy/Core.s.sol rename to script/deploy/genesis/Core.s.sol index c89ab232..ab8f5ccb 100644 --- a/script/deploy/Core.s.sol +++ b/script/deploy/genesis/Core.s.sol @@ -3,25 +3,25 @@ pragma solidity 0.8.25; import {Script, console2} from "forge-std/Script.sol"; -import {VaultFactory} from "../../src/contracts/VaultFactory.sol"; -import {DelegatorFactory} from "../../src/contracts/DelegatorFactory.sol"; -import {SlasherFactory} from "../../src/contracts/SlasherFactory.sol"; -import {NetworkRegistry} from "../../src/contracts/NetworkRegistry.sol"; -import {OperatorRegistry} from "../../src/contracts/OperatorRegistry.sol"; -import {MetadataService} from "../../src/contracts/service/MetadataService.sol"; -import {NetworkMiddlewareService} from "../../src/contracts/service/NetworkMiddlewareService.sol"; -import {OptInService} from "../../src/contracts/service/OptInService.sol"; - -import {Vault} from "../../src/contracts/vault/Vault.sol"; -import {VaultTokenized} from "../../src/contracts/vault/VaultTokenized.sol"; -import {NetworkRestakeDelegator} from "../../src/contracts/delegator/NetworkRestakeDelegator.sol"; -import {FullRestakeDelegator} from "../../src/contracts/delegator/FullRestakeDelegator.sol"; -import {OperatorSpecificDelegator} from "../../src/contracts/delegator/OperatorSpecificDelegator.sol"; -import {OperatorNetworkSpecificDelegator} from "../../src/contracts/delegator/OperatorNetworkSpecificDelegator.sol"; -import {Slasher} from "../../src/contracts/slasher/Slasher.sol"; -import {VetoSlasher} from "../../src/contracts/slasher/VetoSlasher.sol"; - -import {VaultConfigurator} from "../../src/contracts/VaultConfigurator.sol"; +import {VaultFactory} from "../../../src/contracts/VaultFactory.sol"; +import {DelegatorFactory} from "../../../src/contracts/DelegatorFactory.sol"; +import {SlasherFactory} from "../../../src/contracts/SlasherFactory.sol"; +import {NetworkRegistry} from "../../../src/contracts/NetworkRegistry.sol"; +import {OperatorRegistry} from "../../../src/contracts/OperatorRegistry.sol"; +import {MetadataService} from "../../../src/contracts/service/MetadataService.sol"; +import {NetworkMiddlewareService} from "../../../src/contracts/service/NetworkMiddlewareService.sol"; +import {OptInService} from "../../../src/contracts/service/OptInService.sol"; + +import {Vault} from "../../../src/contracts/vault/Vault.sol"; +import {VaultTokenized} from "../../../src/contracts/vault/VaultTokenized.sol"; +import {NetworkRestakeDelegator} from "../../../src/contracts/delegator/NetworkRestakeDelegator.sol"; +import {FullRestakeDelegator} from "../../../src/contracts/delegator/FullRestakeDelegator.sol"; +import {OperatorSpecificDelegator} from "../../../src/contracts/delegator/OperatorSpecificDelegator.sol"; +import {OperatorNetworkSpecificDelegator} from "../../../src/contracts/delegator/OperatorNetworkSpecificDelegator.sol"; +import {Slasher} from "../../../src/contracts/slasher/Slasher.sol"; +import {VetoSlasher} from "../../../src/contracts/slasher/VetoSlasher.sol"; + +import {VaultConfigurator} from "../../../src/contracts/VaultConfigurator.sol"; contract CoreScript is Script { function run( diff --git a/script/deploy/MetadataService.s.sol b/script/deploy/genesis/MetadataService.s.sol similarity index 78% rename from script/deploy/MetadataService.s.sol rename to script/deploy/genesis/MetadataService.s.sol index 436d81dc..5f7ab1cf 100644 --- a/script/deploy/MetadataService.s.sol +++ b/script/deploy/genesis/MetadataService.s.sol @@ -3,7 +3,7 @@ pragma solidity 0.8.25; import "forge-std/Script.sol"; -import {MetadataService} from "../../src/contracts/service/MetadataService.sol"; +import {MetadataService} from "../../../src/contracts/service/MetadataService.sol"; contract MetadataServiceScript is Script { function run( diff --git a/script/deploy/NetworkMiddlewareService.s.sol b/script/deploy/genesis/NetworkMiddlewareService.s.sol similarity index 76% rename from script/deploy/NetworkMiddlewareService.s.sol rename to script/deploy/genesis/NetworkMiddlewareService.s.sol index 4a136515..a4f1e98d 100644 --- a/script/deploy/NetworkMiddlewareService.s.sol +++ b/script/deploy/genesis/NetworkMiddlewareService.s.sol @@ -3,7 +3,7 @@ pragma solidity 0.8.25; import "forge-std/Script.sol"; -import {NetworkMiddlewareService} from "../../src/contracts/service/NetworkMiddlewareService.sol"; +import {NetworkMiddlewareService} from "../../../src/contracts/service/NetworkMiddlewareService.sol"; contract NetworkMiddlewareServiceScript is Script { function run( diff --git a/script/deploy/NetworkRegistry.s.sol b/script/deploy/genesis/NetworkRegistry.s.sol similarity index 77% rename from script/deploy/NetworkRegistry.s.sol rename to script/deploy/genesis/NetworkRegistry.s.sol index bf1e6798..9b5072c9 100644 --- a/script/deploy/NetworkRegistry.s.sol +++ b/script/deploy/genesis/NetworkRegistry.s.sol @@ -3,7 +3,7 @@ pragma solidity 0.8.25; import "forge-std/Script.sol"; -import {NetworkRegistry} from "../../src/contracts/NetworkRegistry.sol"; +import {NetworkRegistry} from "../../../src/contracts/NetworkRegistry.sol"; contract NetworkRegistryScript is Script { function run() public { diff --git a/script/deploy/OperatorRegistry.s.sol b/script/deploy/genesis/OperatorRegistry.s.sol similarity index 77% rename from script/deploy/OperatorRegistry.s.sol rename to script/deploy/genesis/OperatorRegistry.s.sol index fc0157de..598c6b8c 100644 --- a/script/deploy/OperatorRegistry.s.sol +++ b/script/deploy/genesis/OperatorRegistry.s.sol @@ -3,7 +3,7 @@ pragma solidity 0.8.25; import "forge-std/Script.sol"; -import {OperatorRegistry} from "../../src/contracts/OperatorRegistry.sol"; +import {OperatorRegistry} from "../../../src/contracts/OperatorRegistry.sol"; contract OperatorRegistryScript is Script { function run() public { diff --git a/script/deploy/OptInService.s.sol b/script/deploy/genesis/OptInService.s.sol similarity index 81% rename from script/deploy/OptInService.s.sol rename to script/deploy/genesis/OptInService.s.sol index 6b308699..8f11bd78 100644 --- a/script/deploy/OptInService.s.sol +++ b/script/deploy/genesis/OptInService.s.sol @@ -3,7 +3,7 @@ pragma solidity 0.8.25; import "forge-std/Script.sol"; -import {OptInService} from "../../src/contracts/service/OptInService.sol"; +import {OptInService} from "../../../src/contracts/service/OptInService.sol"; contract OptInServiceScript is Script { function run(address whoRegistry, address whereRegistry, string calldata name) public { diff --git a/script/deploy/VaultFactory.s.sol b/script/deploy/genesis/VaultFactory.s.sol similarity index 80% rename from script/deploy/VaultFactory.s.sol rename to script/deploy/genesis/VaultFactory.s.sol index becbfe9e..d3dfa11c 100644 --- a/script/deploy/VaultFactory.s.sol +++ b/script/deploy/genesis/VaultFactory.s.sol @@ -3,7 +3,7 @@ pragma solidity 0.8.25; import "forge-std/Script.sol"; -import {VaultFactory} from "../../src/contracts/VaultFactory.sol"; +import {VaultFactory} from "../../../src/contracts/VaultFactory.sol"; contract VaultFactoryScript is Script { function run( diff --git a/script/deploy/genesis/v1.1/Vaults.s.sol b/script/deploy/genesis/v1.1/Vaults.s.sol new file mode 100644 index 00000000..1181be13 --- /dev/null +++ b/script/deploy/genesis/v1.1/Vaults.s.sol @@ -0,0 +1,43 @@ +// SPDX-License-Identifier: BUSL-1.1 +pragma solidity 0.8.25; + +import {Script, console2} from "forge-std/Script.sol"; + +import {SymbioticCoreInit} from "../../../integration/SymbioticCoreInit.sol"; + +import {Vault} from "../../../../src/contracts/vault/v1.1/Vault.sol"; +import {VaultTokenized} from "../../../../src/contracts/vault/v1.1/VaultTokenized.sol"; +import {VaultVotes} from "../../../../src/contracts/vault/v1.1/VaultVotes.sol"; +import {VaultImplementation} from "../../../../src/contracts/vault/v1.1/VaultImplementation.sol"; +import {VaultTokenizedImplementation} from "../../../../src/contracts/vault/v1.1/VaultTokenizedImplementation.sol"; +import {VaultVotesImplementation} from "../../../../src/contracts/vault/v1.1/VaultVotesImplementation.sol"; + +contract VaultsScript is SymbioticCoreInit { + function run() public { + SymbioticCoreInit.run(0); + + vm.startBroadcast(); + + address vaultImplementation = address( + new VaultImplementation(address(symbioticCore.delegatorFactory), address(symbioticCore.slasherFactory)) + ); + address vaultImpl = address(new Vault(address(symbioticCore.vaultFactory), vaultImplementation)); + + address vaultTokenizedImplementation = address(new VaultTokenizedImplementation(vaultImplementation)); + address vaultTokenizedImpl = + address(new VaultTokenized(address(symbioticCore.vaultFactory), vaultTokenizedImplementation)); + + address vaultVotesImplementation = address(new VaultVotesImplementation(vaultImplementation)); + address vaultVotesImpl = address(new VaultVotes(address(symbioticCore.vaultFactory), vaultVotesImplementation)); + + console2.log("Vault: ", address(vaultImpl)); + console2.log("VaultTokenized: ", address(vaultTokenizedImpl)); + console2.log("VaultVotes: ", address(vaultVotesImpl)); + console2.log(); + console2.log("VaultImplementation: ", address(vaultImplementation)); + console2.log("VaultTokenizedImplementation: ", address(vaultTokenizedImplementation)); + console2.log("VaultVotesImplementation: ", address(vaultVotesImplementation)); + + vm.stopBroadcast(); + } +} diff --git a/script/deploy/v1.1/Vault.s.sol b/script/deploy/v1.1/Vault.s.sol new file mode 100644 index 00000000..2144018e --- /dev/null +++ b/script/deploy/v1.1/Vault.s.sol @@ -0,0 +1,167 @@ +// SPDX-License-Identifier: BUSL-1.1 +pragma solidity 0.8.25; + +import {console2} from "forge-std/Script.sol"; + +import {SymbioticCoreInit} from "../../integration/SymbioticCoreInit.sol"; + +import {IVault} from "../../../src/interfaces/vault/v1.1/IVault.sol"; +import {IVaultConfigurator} from "../../../src/interfaces/IVaultConfigurator.sol"; +import {IBaseDelegator} from "../../../src/interfaces/delegator/IBaseDelegator.sol"; +import {INetworkRestakeDelegator} from "../../../src/interfaces/delegator/INetworkRestakeDelegator.sol"; +import {IFullRestakeDelegator} from "../../../src/interfaces/delegator/IFullRestakeDelegator.sol"; +import {IOperatorSpecificDelegator} from "../../../src/interfaces/delegator/IOperatorSpecificDelegator.sol"; +import {IOperatorNetworkSpecificDelegator} from + "../../../src/interfaces/delegator/IOperatorNetworkSpecificDelegator.sol"; +import {IBaseSlasher} from "../../../src/interfaces/slasher/IBaseSlasher.sol"; +import {ISlasher} from "../../../src/interfaces/slasher/ISlasher.sol"; +import {IVetoSlasher} from "../../../src/interfaces/slasher/IVetoSlasher.sol"; + +contract VaultScript is SymbioticCoreInit { + function run( + address owner, + address collateral, + address burner, + uint48 epochDuration, + address[] calldata depositorsWhitelisted, + uint256 depositLimit, + address flashFeeReceiver, + uint256 flashFeeRate, + uint64 delegatorIndex, + address hook, + address network, + bool withSlasher, + uint64 slasherIndex, + uint48 vetoDuration + ) public { + SymbioticCoreInit.run(0); + + vm.startBroadcast(); + + bytes memory vaultParams = abi.encode( + IVault.InitParams({ + collateral: collateral, + burner: burner, + epochDuration: epochDuration, + depositWhitelist: depositorsWhitelisted.length != 0, + isDepositLimit: depositLimit != 0, + depositLimit: depositLimit, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: flashFeeReceiver != address(0), + flashFeeRate: flashFeeRate, + flashFeeReceiver: flashFeeReceiver, + defaultAdminRoleHolder: owner, + depositWhitelistSetRoleHolder: owner, + depositorWhitelistRoleHolder: owner, + depositorsWhitelisted: depositorsWhitelisted, + isDepositLimitSetRoleHolder: owner, + depositLimitSetRoleHolder: owner, + epochDurationSetRoleHolder: owner, + flashLoanEnabledSetRoleHolder: owner, + flashFeeRateSetRoleHolder: owner, + flashFeeReceiverSetRoleHolder: owner + }) + ); + + uint256 roleHolders = 1; + if (hook != address(0) && hook != owner) { + roleHolders = 2; + } + address[] memory networkLimitSetRoleHolders = new address[](roleHolders); + address[] memory operatorNetworkLimitSetRoleHolders = new address[](roleHolders); + address[] memory operatorNetworkSharesSetRoleHolders = new address[](roleHolders); + networkLimitSetRoleHolders[0] = owner; + operatorNetworkLimitSetRoleHolders[0] = owner; + operatorNetworkSharesSetRoleHolders[0] = owner; + if (roleHolders > 1) { + networkLimitSetRoleHolders[1] = hook; + operatorNetworkLimitSetRoleHolders[1] = hook; + operatorNetworkSharesSetRoleHolders[1] = hook; + } + + bytes memory delegatorParams; + if (delegatorIndex == 0) { + delegatorParams = abi.encode( + INetworkRestakeDelegator.InitParams({ + baseParams: IBaseDelegator.BaseParams({ + defaultAdminRoleHolder: owner, + hook: hook, + hookSetRoleHolder: owner + }), + networkLimitSetRoleHolders: networkLimitSetRoleHolders, + operatorNetworkSharesSetRoleHolders: operatorNetworkSharesSetRoleHolders + }) + ); + } else if (delegatorIndex == 1) { + delegatorParams = abi.encode( + IFullRestakeDelegator.InitParams({ + baseParams: IBaseDelegator.BaseParams({ + defaultAdminRoleHolder: owner, + hook: hook, + hookSetRoleHolder: owner + }), + networkLimitSetRoleHolders: networkLimitSetRoleHolders, + operatorNetworkLimitSetRoleHolders: operatorNetworkLimitSetRoleHolders + }) + ); + } else if (delegatorIndex == 2) { + delegatorParams = abi.encode( + IOperatorSpecificDelegator.InitParams({ + baseParams: IBaseDelegator.BaseParams({ + defaultAdminRoleHolder: owner, + hook: hook, + hookSetRoleHolder: owner + }), + networkLimitSetRoleHolders: networkLimitSetRoleHolders, + operator: owner + }) + ); + } else if (delegatorIndex == 3) { + delegatorParams = abi.encode( + IOperatorNetworkSpecificDelegator.InitParams({ + baseParams: IBaseDelegator.BaseParams({ + defaultAdminRoleHolder: owner, + hook: hook, + hookSetRoleHolder: owner + }), + network: network, + operator: owner + }) + ); + } + + bytes memory slasherParams; + if (slasherIndex == 0) { + slasherParams = abi.encode( + ISlasher.InitParams({baseParams: IBaseSlasher.BaseParams({isBurnerHook: burner != address(0)})}) + ); + } else if (slasherIndex == 1) { + slasherParams = abi.encode( + IVetoSlasher.InitParams({ + baseParams: IBaseSlasher.BaseParams({isBurnerHook: burner != address(0)}), + vetoDuration: vetoDuration, + resolverSetEpochsDelay: 3 + }) + ); + } + + (address vault_, address delegator_, address slasher_) = symbioticCore.vaultConfigurator.create( + IVaultConfigurator.InitParams({ + version: 3, + owner: owner, + vaultParams: vaultParams, + delegatorIndex: delegatorIndex, + delegatorParams: delegatorParams, + withSlasher: withSlasher, + slasherIndex: slasherIndex, + slasherParams: slasherParams + }) + ); + + console2.log("Vault: ", vault_); + console2.log("Delegator: ", delegator_); + console2.log("Slasher: ", slasher_); + + vm.stopBroadcast(); + } +} diff --git a/script/deploy/v1.1/VaultTokenized.s.sol b/script/deploy/v1.1/VaultTokenized.s.sol new file mode 100644 index 00000000..a61801ea --- /dev/null +++ b/script/deploy/v1.1/VaultTokenized.s.sol @@ -0,0 +1,176 @@ +// SPDX-License-Identifier: BUSL-1.1 +pragma solidity 0.8.25; + +import {console2} from "forge-std/Script.sol"; + +import {SymbioticCoreInit} from "../../integration/SymbioticCoreInit.sol"; + +import {IVault} from "../../../src/interfaces/vault/v1.1/IVault.sol"; +import {IVaultTokenized} from "../../../src/interfaces/vault/v1.1/IVaultTokenized.sol"; +import {IVaultConfigurator} from "../../../src/interfaces/IVaultConfigurator.sol"; +import {IBaseDelegator} from "../../../src/interfaces/delegator/IBaseDelegator.sol"; +import {INetworkRestakeDelegator} from "../../../src/interfaces/delegator/INetworkRestakeDelegator.sol"; +import {IFullRestakeDelegator} from "../../../src/interfaces/delegator/IFullRestakeDelegator.sol"; +import {IOperatorSpecificDelegator} from "../../../src/interfaces/delegator/IOperatorSpecificDelegator.sol"; +import {IOperatorNetworkSpecificDelegator} from + "../../../src/interfaces/delegator/IOperatorNetworkSpecificDelegator.sol"; +import {IBaseSlasher} from "../../../src/interfaces/slasher/IBaseSlasher.sol"; +import {ISlasher} from "../../../src/interfaces/slasher/ISlasher.sol"; +import {IVetoSlasher} from "../../../src/interfaces/slasher/IVetoSlasher.sol"; + +contract VaultTokenizedScript is SymbioticCoreInit { + function run( + address owner, + address collateral, + address burner, + uint48 epochDuration, + address[] calldata depositorsWhitelisted, + uint256 depositLimit, + address flashFeeReceiver, + uint256 flashFeeRate, + string calldata name, + string calldata symbol, + uint64 delegatorIndex, + address hook, + address network, + bool withSlasher, + uint64 slasherIndex, + uint48 vetoDuration + ) public { + SymbioticCoreInit.run(0); + + vm.startBroadcast(); + + bytes memory vaultParams = abi.encode( + IVaultTokenized.InitParamsTokenized({ + baseParams: abi.encode( + IVault.InitParams({ + collateral: collateral, + burner: burner, + epochDuration: epochDuration, + depositWhitelist: depositorsWhitelisted.length != 0, + isDepositLimit: depositLimit != 0, + depositLimit: depositLimit, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: flashFeeReceiver != address(0), + flashFeeRate: flashFeeRate, + flashFeeReceiver: flashFeeReceiver, + defaultAdminRoleHolder: owner, + depositWhitelistSetRoleHolder: owner, + depositorWhitelistRoleHolder: owner, + depositorsWhitelisted: depositorsWhitelisted, + isDepositLimitSetRoleHolder: owner, + depositLimitSetRoleHolder: owner, + epochDurationSetRoleHolder: owner, + flashLoanEnabledSetRoleHolder: owner, + flashFeeRateSetRoleHolder: owner, + flashFeeReceiverSetRoleHolder: owner + }) + ), + name: name, + symbol: symbol + }) + ); + + uint256 roleHolders = 1; + if (hook != address(0) && hook != owner) { + roleHolders = 2; + } + address[] memory networkLimitSetRoleHolders = new address[](roleHolders); + address[] memory operatorNetworkLimitSetRoleHolders = new address[](roleHolders); + address[] memory operatorNetworkSharesSetRoleHolders = new address[](roleHolders); + networkLimitSetRoleHolders[0] = owner; + operatorNetworkLimitSetRoleHolders[0] = owner; + operatorNetworkSharesSetRoleHolders[0] = owner; + if (roleHolders > 1) { + networkLimitSetRoleHolders[1] = hook; + operatorNetworkLimitSetRoleHolders[1] = hook; + operatorNetworkSharesSetRoleHolders[1] = hook; + } + + bytes memory delegatorParams; + if (delegatorIndex == 0) { + delegatorParams = abi.encode( + INetworkRestakeDelegator.InitParams({ + baseParams: IBaseDelegator.BaseParams({ + defaultAdminRoleHolder: owner, + hook: hook, + hookSetRoleHolder: owner + }), + networkLimitSetRoleHolders: networkLimitSetRoleHolders, + operatorNetworkSharesSetRoleHolders: operatorNetworkSharesSetRoleHolders + }) + ); + } else if (delegatorIndex == 1) { + delegatorParams = abi.encode( + IFullRestakeDelegator.InitParams({ + baseParams: IBaseDelegator.BaseParams({ + defaultAdminRoleHolder: owner, + hook: hook, + hookSetRoleHolder: owner + }), + networkLimitSetRoleHolders: networkLimitSetRoleHolders, + operatorNetworkLimitSetRoleHolders: operatorNetworkLimitSetRoleHolders + }) + ); + } else if (delegatorIndex == 2) { + delegatorParams = abi.encode( + IOperatorSpecificDelegator.InitParams({ + baseParams: IBaseDelegator.BaseParams({ + defaultAdminRoleHolder: owner, + hook: hook, + hookSetRoleHolder: owner + }), + networkLimitSetRoleHolders: networkLimitSetRoleHolders, + operator: owner + }) + ); + } else if (delegatorIndex == 3) { + delegatorParams = abi.encode( + IOperatorNetworkSpecificDelegator.InitParams({ + baseParams: IBaseDelegator.BaseParams({ + defaultAdminRoleHolder: owner, + hook: hook, + hookSetRoleHolder: owner + }), + network: network, + operator: owner + }) + ); + } + + bytes memory slasherParams; + if (slasherIndex == 0) { + slasherParams = abi.encode( + ISlasher.InitParams({baseParams: IBaseSlasher.BaseParams({isBurnerHook: burner != address(0)})}) + ); + } else if (slasherIndex == 1) { + slasherParams = abi.encode( + IVetoSlasher.InitParams({ + baseParams: IBaseSlasher.BaseParams({isBurnerHook: burner != address(0)}), + vetoDuration: vetoDuration, + resolverSetEpochsDelay: 3 + }) + ); + } + + (address vault_, address delegator_, address slasher_) = symbioticCore.vaultConfigurator.create( + IVaultConfigurator.InitParams({ + version: 4, + owner: owner, + vaultParams: vaultParams, + delegatorIndex: delegatorIndex, + delegatorParams: delegatorParams, + withSlasher: withSlasher, + slasherIndex: slasherIndex, + slasherParams: slasherParams + }) + ); + + console2.log("Vault: ", vault_); + console2.log("Delegator: ", delegator_); + console2.log("Slasher: ", slasher_); + + vm.stopBroadcast(); + } +} diff --git a/script/deploy/v1.1/VaultVotes.s.sol b/script/deploy/v1.1/VaultVotes.s.sol new file mode 100644 index 00000000..139cfed1 --- /dev/null +++ b/script/deploy/v1.1/VaultVotes.s.sol @@ -0,0 +1,175 @@ +// SPDX-License-Identifier: BUSL-1.1 +pragma solidity 0.8.25; + +import {console2} from "forge-std/Script.sol"; +import {SymbioticCoreInit} from "../../integration/SymbioticCoreInit.sol"; + +import {IVault} from "../../../src/interfaces/vault/v1.1/IVault.sol"; +import {IVaultTokenized} from "../../../src/interfaces/vault/v1.1/IVaultTokenized.sol"; +import {IVaultConfigurator} from "../../../src/interfaces/IVaultConfigurator.sol"; +import {IBaseDelegator} from "../../../src/interfaces/delegator/IBaseDelegator.sol"; +import {INetworkRestakeDelegator} from "../../../src/interfaces/delegator/INetworkRestakeDelegator.sol"; +import {IFullRestakeDelegator} from "../../../src/interfaces/delegator/IFullRestakeDelegator.sol"; +import {IOperatorSpecificDelegator} from "../../../src/interfaces/delegator/IOperatorSpecificDelegator.sol"; +import {IOperatorNetworkSpecificDelegator} from + "../../../src/interfaces/delegator/IOperatorNetworkSpecificDelegator.sol"; +import {IBaseSlasher} from "../../../src/interfaces/slasher/IBaseSlasher.sol"; +import {ISlasher} from "../../../src/interfaces/slasher/ISlasher.sol"; +import {IVetoSlasher} from "../../../src/interfaces/slasher/IVetoSlasher.sol"; + +contract VaultVotesScript is SymbioticCoreInit { + function run( + address owner, + address collateral, + address burner, + uint48 epochDuration, + address[] calldata depositorsWhitelisted, + uint256 depositLimit, + address flashFeeReceiver, + uint256 flashFeeRate, + string calldata name, + string calldata symbol, + uint64 delegatorIndex, + address hook, + address network, + bool withSlasher, + uint64 slasherIndex, + uint48 vetoDuration + ) public { + SymbioticCoreInit.run(0); + + vm.startBroadcast(); + + bytes memory vaultParams = abi.encode( + IVaultTokenized.InitParamsTokenized({ + baseParams: abi.encode( + IVault.InitParams({ + collateral: collateral, + burner: burner, + epochDuration: epochDuration, + depositWhitelist: depositorsWhitelisted.length != 0, + isDepositLimit: depositLimit != 0, + depositLimit: depositLimit, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: flashFeeReceiver != address(0), + flashFeeRate: flashFeeRate, + flashFeeReceiver: flashFeeReceiver, + defaultAdminRoleHolder: owner, + depositWhitelistSetRoleHolder: owner, + depositorWhitelistRoleHolder: owner, + depositorsWhitelisted: depositorsWhitelisted, + isDepositLimitSetRoleHolder: owner, + depositLimitSetRoleHolder: owner, + epochDurationSetRoleHolder: owner, + flashLoanEnabledSetRoleHolder: owner, + flashFeeRateSetRoleHolder: owner, + flashFeeReceiverSetRoleHolder: owner + }) + ), + name: name, + symbol: symbol + }) + ); + + uint256 roleHolders = 1; + if (hook != address(0) && hook != owner) { + roleHolders = 2; + } + address[] memory networkLimitSetRoleHolders = new address[](roleHolders); + address[] memory operatorNetworkLimitSetRoleHolders = new address[](roleHolders); + address[] memory operatorNetworkSharesSetRoleHolders = new address[](roleHolders); + networkLimitSetRoleHolders[0] = owner; + operatorNetworkLimitSetRoleHolders[0] = owner; + operatorNetworkSharesSetRoleHolders[0] = owner; + if (roleHolders > 1) { + networkLimitSetRoleHolders[1] = hook; + operatorNetworkLimitSetRoleHolders[1] = hook; + operatorNetworkSharesSetRoleHolders[1] = hook; + } + + bytes memory delegatorParams; + if (delegatorIndex == 0) { + delegatorParams = abi.encode( + INetworkRestakeDelegator.InitParams({ + baseParams: IBaseDelegator.BaseParams({ + defaultAdminRoleHolder: owner, + hook: hook, + hookSetRoleHolder: owner + }), + networkLimitSetRoleHolders: networkLimitSetRoleHolders, + operatorNetworkSharesSetRoleHolders: operatorNetworkSharesSetRoleHolders + }) + ); + } else if (delegatorIndex == 1) { + delegatorParams = abi.encode( + IFullRestakeDelegator.InitParams({ + baseParams: IBaseDelegator.BaseParams({ + defaultAdminRoleHolder: owner, + hook: hook, + hookSetRoleHolder: owner + }), + networkLimitSetRoleHolders: networkLimitSetRoleHolders, + operatorNetworkLimitSetRoleHolders: operatorNetworkLimitSetRoleHolders + }) + ); + } else if (delegatorIndex == 2) { + delegatorParams = abi.encode( + IOperatorSpecificDelegator.InitParams({ + baseParams: IBaseDelegator.BaseParams({ + defaultAdminRoleHolder: owner, + hook: hook, + hookSetRoleHolder: owner + }), + networkLimitSetRoleHolders: networkLimitSetRoleHolders, + operator: owner + }) + ); + } else if (delegatorIndex == 3) { + delegatorParams = abi.encode( + IOperatorNetworkSpecificDelegator.InitParams({ + baseParams: IBaseDelegator.BaseParams({ + defaultAdminRoleHolder: owner, + hook: hook, + hookSetRoleHolder: owner + }), + network: network, + operator: owner + }) + ); + } + + bytes memory slasherParams; + if (slasherIndex == 0) { + slasherParams = abi.encode( + ISlasher.InitParams({baseParams: IBaseSlasher.BaseParams({isBurnerHook: burner != address(0)})}) + ); + } else if (slasherIndex == 1) { + slasherParams = abi.encode( + IVetoSlasher.InitParams({ + baseParams: IBaseSlasher.BaseParams({isBurnerHook: burner != address(0)}), + vetoDuration: vetoDuration, + resolverSetEpochsDelay: 3 + }) + ); + } + + (address vault_, address delegator_, address slasher_) = symbioticCore.vaultConfigurator.create( + IVaultConfigurator.InitParams({ + version: 5, + owner: owner, + vaultParams: vaultParams, + delegatorIndex: delegatorIndex, + delegatorParams: delegatorParams, + withSlasher: withSlasher, + slasherIndex: slasherIndex, + slasherParams: slasherParams + }) + ); + + console2.log("Vault: ", vault_); + console2.log("Delegator: ", delegator_); + console2.log("Slasher: ", slasher_); + + vm.stopBroadcast(); + } +} diff --git a/script/migrate/MIgrationV1.1.s.sol b/script/migrate/MIgrationV1.1.s.sol new file mode 100644 index 00000000..e1663211 --- /dev/null +++ b/script/migrate/MIgrationV1.1.s.sol @@ -0,0 +1,85 @@ +// SPDX-License-Identifier: BUSL-1.1 +pragma solidity 0.8.25; + +import {console2} from "forge-std/Script.sol"; +import {Math} from "@openzeppelin/contracts/utils/math/Math.sol"; +import {SymbioticCoreInit} from "../integration/SymbioticCoreInit.sol"; + +import {IMigratableEntity} from "../../src/interfaces/common/IMigratableEntity.sol"; +import {IVault} from "../../src/interfaces/vault/v1.1/IVault.sol"; +import {IVaultTokenized} from "../../src/interfaces/vault/v1.1/IVaultTokenized.sol"; + +contract MigrateScript is SymbioticCoreInit { + using Math for uint256; + + error InvalidMigration(); + + uint256 public constant MIN_EXIT_WINDOW = 7 days; + + function run( + address vault, + uint64 newVersion, + address flashFeeReceiver, + uint256 flashFeeRate, + string calldata name, + string calldata symbol + ) public { + SymbioticCoreInit.run(0); + + vm.startBroadcast(); + (,, address owner) = vm.readCallers(); + + uint64 oldVersion = IMigratableEntity(vault).version(); + + if (oldVersion >= newVersion) { + revert InvalidMigration(); + } + + if (oldVersion == 2 && newVersion == 3) { + revert InvalidMigration(); // Impossible to migrate from tokenized to non-tokenized + } + + uint64 currentVersion = oldVersion; + if (oldVersion == 1 || oldVersion == 2) { + currentVersion = oldVersion == 1 ? 3 : 4; + symbioticCore.vaultFactory.migrate( + vault, + currentVersion, + abi.encode( + IVault.MigrateParams({ + epochDurationSetEpochsDelay: MIN_EXIT_WINDOW.ceilDiv(IVault(vault).epochDuration()) + 2, + flashLoanEnabled: flashFeeReceiver != address(0), + flashFeeRate: flashFeeRate, + flashFeeReceiver: flashFeeReceiver, + epochDurationSetRoleHolder: owner, + flashLoanEnabledSetRoleHolder: owner, + flashFeeRateSetRoleHolder: owner, + flashFeeReceiverSetRoleHolder: owner + }) + ) + ); + + console2.log("Successful! From version ", oldVersion, "to ", currentVersion); + } + + if (currentVersion == 3 && currentVersion < newVersion) { + currentVersion = 4; + symbioticCore.vaultFactory.migrate( + vault, currentVersion, abi.encode(IVaultTokenized.MigrateParamsTokenized({name: name, symbol: symbol})) + ); + + console2.log("Successful! From version ", oldVersion, "to ", currentVersion); + } + + if (currentVersion < newVersion) { + currentVersion = 5; + symbioticCore.vaultFactory.migrate(vault, currentVersion, new bytes(0)); + + console2.log("Successful! From version ", oldVersion, "to ", currentVersion); + } + + console2.log("Completed! From vesion", oldVersion, "to ", newVersion); + + vm.stopBroadcast(); + } +} diff --git a/specs/Vault.md b/specs/Vault.md index 9284d3bf..911766bc 100644 --- a/specs/Vault.md +++ b/specs/Vault.md @@ -185,7 +185,7 @@ _Common Vault_ Deployment script: [click](../script/deploy/Vault.s.sol) ```shell -forge script script/deploy/Vault.s.sol:VaultScript 0x0000000000000000000000000000000000000000 0x0000000000000000000000000000000000000000 0x0000000000000000000000000000000000000000 0x0000000000000000000000000000000000000000 1 false 0 0 0x0000000000000000000000000000000000000000 0x0000000000000000000000000000000000000000 false 0 0 --sig "run(address,address,address,address,uint48,bool,uint256,uint64,address,address,bool,uint64,uint48)" --broadcast --rpc-url=$ETH_RPC_URL +forge script script/deploy/Vault.s.sol:VaultScript 0x0000000000000000000000000000000000000000 0x0000000000000000000000000000000000000000 0x0000000000000000000000000000000000000000 1 \[\] 0 0 0x0000000000000000000000000000000000000000 0x0000000000000000000000000000000000000000 false 0 0 --sig "run(address,address,address,uint48,address[],uint256,uint64,address,address,bool,uint64,uint48)" --broadcast --rpc-url=$ETH_RPC_URL ``` _Tokenized Vault_ @@ -193,5 +193,29 @@ _Tokenized Vault_ Deployment script: [click](../script/deploy/VaultTokenized.s.sol) ```shell -forge script script/deploy/VaultTokenized.s.sol:VaultTokenizedScript 0x0000000000000000000000000000000000000000 0x0000000000000000000000000000000000000000 0x0000000000000000000000000000000000000000 0x0000000000000000000000000000000000000000 1 false 0 Test TEST 0 0x0000000000000000000000000000000000000000 0x0000000000000000000000000000000000000000 false 0 0 --sig "run(address,address,address,address,uint48,bool,uint256,string,string,uint64,address,address,bool,uint64,uint48)" --broadcast --rpc-url=$ETH_RPC_URL +forge script script/deploy/VaultTokenized.s.sol:VaultTokenizedScript 0x0000000000000000000000000000000000000000 0x0000000000000000000000000000000000000000 0x0000000000000000000000000000000000000000 1 \[\] 0 Test TEST 0 0x0000000000000000000000000000000000000000 0x0000000000000000000000000000000000000000 false 0 0 --sig "run(address,address,address,uint48,address[],uint256,string,string,uint64,address,address,bool,uint64,uint48)" --broadcast --rpc-url=$ETH_RPC_URL +``` + +_Common Vault V1.1_ + +Deployment script: [click](../script/deploy/v1.1/Vault.s.sol) + +```shell +forge script script/deploy/v1.1/Vault.s.sol:VaultScript 0x0000000000000000000000000000000000000000 0x0000000000000000000000000000000000000000 0x0000000000000000000000000000000000000000 1 \[\] 0 0x0000000000000000000000000000000000000000 0 0 0x0000000000000000000000000000000000000000 0x0000000000000000000000000000000000000000 false 0 0 --sig "run(address,address,address,uint48,address[],uint256,address,uint256,uint64,address,address,bool,uint64,uint48)" --broadcast --rpc-url=$ETH_RPC_URL +``` + +_Tokenized Vault V1.1_ + +Deployment script: [click](../script/deploy/v1.1/VaultTokenized.s.sol) + +```shell +forge script script/deploy/v1.1/VaultTokenized.s.sol:VaultTokenizedScript 0x0000000000000000000000000000000000000000 0x0000000000000000000000000000000000000000 0x0000000000000000000000000000000000000000 1 \[\] 0 0x0000000000000000000000000000000000000000 0 Test TEST 0 0x0000000000000000000000000000000000000000 0x0000000000000000000000000000000000000000 false 0 0 --sig "run(address,address,address,uint48,address[],uint256,address,uint256,string,string,uint64,address,address,bool,uint64,uint48)" --broadcast --rpc-url=$ETH_RPC_URL +``` + +_Votes Vault V1.1_ + +Deployment script: [click](../script/deploy/v1.1/VaultVotes.s.sol) + +```shell +forge script script/deploy/v1.1/VaultVotes.s.sol:VaultVotesScript 0x0000000000000000000000000000000000000000 0x0000000000000000000000000000000000000000 0x0000000000000000000000000000000000000000 1 \[\] 0 0x0000000000000000000000000000000000000000 0 Test TEST 0 0x0000000000000000000000000000000000000000 0x0000000000000000000000000000000000000000 false 0 0 --sig "run(address,address,address,uint48,address[],uint256,address,uint256,string,string,uint64,address,address,bool,uint64,uint48)" --broadcast --rpc-url=$ETH_RPC_URL ``` diff --git a/src/contracts/common/MigratableEntity.sol b/src/contracts/common/MigratableEntity.sol index c2cb23ac..092fabe0 100644 --- a/src/contracts/common/MigratableEntity.sol +++ b/src/contracts/common/MigratableEntity.sol @@ -79,7 +79,7 @@ abstract contract MigratableEntity is function _initialize(uint64, /* initialVersion */ address, /* owner */ bytes memory /* data */ ) internal virtual {} - function _migrate(uint64, /* oldVersion */ uint64, /* newVersion */ bytes calldata /* data */ ) internal virtual {} + function _migrate(uint64, /* oldVersion */ uint64, /* newVersion */ bytes memory /* data */ ) internal virtual {} uint256[10] private __gap; } diff --git a/src/contracts/hints/DelegatorHints.sol b/src/contracts/hints/DelegatorHints.sol index 202d56a8..ac52e1f0 100644 --- a/src/contracts/hints/DelegatorHints.sol +++ b/src/contracts/hints/DelegatorHints.sol @@ -341,9 +341,7 @@ contract OperatorSpecificDelegatorHints is Hints, OperatorSpecificDelegator { (bool exists, uint32 hint_) = abi.decode( _selfStaticDelegateCall( delegator, - abi.encodeWithSelector( - OperatorSpecificDelegatorHints.networkLimitHintInternal.selector, subnetwork, timestamp - ) + abi.encodeCall(OperatorSpecificDelegatorHints.networkLimitHintInternal, (subnetwork, timestamp)) ), (bool, uint32) ); @@ -407,8 +405,8 @@ contract OperatorNetworkSpecificDelegatorHints is Hints, OperatorNetworkSpecific (bool exists, uint32 hint_) = abi.decode( _selfStaticDelegateCall( delegator, - abi.encodeWithSelector( - OperatorNetworkSpecificDelegatorHints.maxNetworkLimitHintInternal.selector, subnetwork, timestamp + abi.encodeCall( + OperatorNetworkSpecificDelegatorHints.maxNetworkLimitHintInternal, (subnetwork, timestamp) ) ), (bool, uint32) diff --git a/src/contracts/vault/Vault.sol b/src/contracts/vault/Vault.sol index c3c9de1b..8698af52 100644 --- a/src/contracts/vault/Vault.sol +++ b/src/contracts/vault/Vault.sol @@ -479,7 +479,7 @@ contract Vault is VaultStorage, MigratableEntity, AccessControlUpgradeable, IVau } } - function _migrate(uint64, /* oldVersion */ uint64, /* newVersion */ bytes calldata /* data */ ) internal override { + function _migrate(uint64, /* oldVersion */ uint64, /* newVersion */ bytes memory /* data */ ) internal override { revert(); } } diff --git a/src/contracts/vault/v1.1/Vault.sol b/src/contracts/vault/v1.1/Vault.sol new file mode 100644 index 00000000..0fcda8e6 --- /dev/null +++ b/src/contracts/vault/v1.1/Vault.sol @@ -0,0 +1,202 @@ +// SPDX-License-Identifier: BUSL-1.1 +pragma solidity 0.8.25; + +import {MigratableEntity} from "../../common/MigratableEntity.sol"; +import {VaultStorage} from "./VaultStorage.sol"; + +import {IVault} from "../../../interfaces/vault/v1.1/IVault.sol"; + +import {Checkpoints} from "../../libraries/Checkpoints.sol"; + +import {AccessControlUpgradeable} from "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol"; +import {Math} from "@openzeppelin/contracts/utils/math/Math.sol"; +import {SafeCast} from "@openzeppelin/contracts/utils/math/SafeCast.sol"; +import {SafeERC20, IERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; +import {Time} from "@openzeppelin/contracts/utils/types/Time.sol"; +import {Address} from "@openzeppelin/contracts/utils/Address.sol"; +import {Proxy} from "@openzeppelin/contracts/proxy/Proxy.sol"; + +contract Vault is VaultStorage, MigratableEntity, AccessControlUpgradeable, Proxy { + using Checkpoints for Checkpoints.Trace256; + using Math for uint256; + using SafeCast for uint256; + using SafeERC20 for IERC20; + using Address for address; + + /** + * @notice The minimum period of time that must be available to exit in case of epoch increase after migration. + */ + uint48 public constant MIN_EXIT_WINDOW = 7 days; + + address private immutable IMPLEMENTATION; + + constructor(address vaultFactory, address implementation) MigratableEntity(vaultFactory) { + IMPLEMENTATION = implementation; + } + + /** + * @inheritdoc Proxy + */ + function _implementation() internal view override returns (address) { + return IMPLEMENTATION; + } + + function _processMigrateParams( + IVault.MigrateParams memory params + ) internal { + if (params.epochDurationSetEpochsDelay < 3) { + revert IVault.InvalidEpochDurationSetEpochsDelay(); + } + + _epochDurationSetEpochsDelay = params.epochDurationSetEpochsDelay; + + flashLoanEnabled = params.flashLoanEnabled; + flashFeeRate = params.flashFeeRate; + flashFeeReceiver = params.flashFeeReceiver; + + if (params.epochDurationSetRoleHolder != address(0)) { + _grantRole(EPOCH_DURATION_SET_ROLE, params.epochDurationSetRoleHolder); + } + if (params.flashLoanEnabledSetRoleHolder != address(0)) { + _grantRole(FLASH_LOAN_ENABLED_SET_ROLE, params.flashLoanEnabledSetRoleHolder); + } + if (params.flashFeeRateSetRoleHolder != address(0)) { + _grantRole(FLASH_FEE_RATE_SET_ROLE, params.flashFeeRateSetRoleHolder); + } + if (params.flashFeeReceiverSetRoleHolder != address(0)) { + _grantRole(FLASH_FEE_RECEIVER_SET_ROLE, params.flashFeeReceiverSetRoleHolder); + } + } + + function _processMigration( + IVault.MigrateParams memory params + ) internal { + _processMigrateParams(params); + + if ((params.epochDurationSetEpochsDelay - 2) * _epochDuration < MIN_EXIT_WINDOW) { + revert IVault.InsufficientExitWindow(); + } + } + + function _initialize(uint64, address, bytes memory data) internal virtual override { + (IVault.InitParams memory params) = abi.decode(data, (IVault.InitParams)); + + if (params.collateral == address(0)) { + revert IVault.InvalidCollateral(); + } + + if (params.epochDuration == 0) { + revert IVault.InvalidEpochDuration(); + } + + if (params.defaultAdminRoleHolder == address(0)) { + if (params.depositWhitelistSetRoleHolder == address(0)) { + if (params.depositWhitelist) { + if (params.depositorWhitelistRoleHolder == address(0)) { + revert IVault.MissingRoles(); + } + } else if (params.depositorWhitelistRoleHolder != address(0)) { + revert IVault.MissingRoles(); + } + } + + if (params.isDepositLimitSetRoleHolder == address(0)) { + if (params.isDepositLimit) { + if (params.depositLimit == 0 && params.depositLimitSetRoleHolder == address(0)) { + revert IVault.MissingRoles(); + } + } else if (params.depositLimit != 0 || params.depositLimitSetRoleHolder != address(0)) { + revert IVault.MissingRoles(); + } + } + } + + if (!params.depositWhitelist && params.depositorsWhitelisted.length > 0) { + revert IVault.NoDepositWhitelist(); + } + + for (uint256 i; i < params.depositorsWhitelisted.length; ++i) { + if (params.depositorsWhitelisted[i] == address(0)) { + revert IVault.InvalidAccount(); + } + + if (isDepositorWhitelisted[params.depositorsWhitelisted[i]]) { + revert IVault.AlreadySet(); + } + + isDepositorWhitelisted[params.depositorsWhitelisted[i]] = true; + } + + if (params.defaultAdminRoleHolder == address(0)) { + if (params.flashLoanEnabled || params.flashLoanEnabledSetRoleHolder != address(0)) { + if ( + (params.flashFeeReceiver != address(0) || params.flashFeeReceiverSetRoleHolder != address(0)) + && (params.flashFeeRate == 0 && params.flashFeeRateSetRoleHolder == address(0)) + ) { + revert IVault.InvalidFlashParams(); + } else if ( + (params.flashFeeRate != 0 || params.flashFeeRateSetRoleHolder != address(0)) + && (params.flashFeeReceiver == address(0) && params.flashFeeReceiverSetRoleHolder == address(0)) + ) { + revert IVault.InvalidFlashParams(); + } + } else if ( + params.flashFeeReceiver != address(0) || params.flashFeeRate != 0 + || params.flashFeeReceiverSetRoleHolder != address(0) || params.flashFeeRateSetRoleHolder != address(0) + ) { + revert IVault.InvalidFlashParams(); + } + } + + _processMigrateParams( + IVault.MigrateParams({ + epochDurationSetEpochsDelay: params.epochDurationSetEpochsDelay, + flashLoanEnabled: params.flashLoanEnabled, + flashFeeRate: params.flashFeeRate, + flashFeeReceiver: params.flashFeeReceiver, + epochDurationSetRoleHolder: params.epochDurationSetRoleHolder, + flashLoanEnabledSetRoleHolder: params.flashLoanEnabledSetRoleHolder, + flashFeeRateSetRoleHolder: params.flashFeeRateSetRoleHolder, + flashFeeReceiverSetRoleHolder: params.flashFeeReceiverSetRoleHolder + }) + ); + + collateral = params.collateral; + + burner = params.burner; + + _epochDurationInit = Time.timestamp(); + _epochDuration = params.epochDuration; + + depositWhitelist = params.depositWhitelist; + + isDepositLimit = params.isDepositLimit; + depositLimit = params.depositLimit; + + if (params.defaultAdminRoleHolder != address(0)) { + _grantRole(DEFAULT_ADMIN_ROLE, params.defaultAdminRoleHolder); + } + if (params.depositWhitelistSetRoleHolder != address(0)) { + _grantRole(DEPOSIT_WHITELIST_SET_ROLE, params.depositWhitelistSetRoleHolder); + } + if (params.depositorWhitelistRoleHolder != address(0)) { + _grantRole(DEPOSITOR_WHITELIST_ROLE, params.depositorWhitelistRoleHolder); + } + if (params.isDepositLimitSetRoleHolder != address(0)) { + _grantRole(IS_DEPOSIT_LIMIT_SET_ROLE, params.isDepositLimitSetRoleHolder); + } + if (params.depositLimitSetRoleHolder != address(0)) { + _grantRole(DEPOSIT_LIMIT_SET_ROLE, params.depositLimitSetRoleHolder); + } + } + + function _migrate(uint64 oldVersion, uint64, /* newVersion */ bytes memory data) internal virtual override { + if (oldVersion == 1) { + (IVault.MigrateParams memory params) = abi.decode(data, (IVault.MigrateParams)); + + _processMigration(params); + } else { + revert IVault.InvalidOrigin(); + } + } +} diff --git a/src/contracts/vault/v1.1/VaultImplementation.sol b/src/contracts/vault/v1.1/VaultImplementation.sol new file mode 100644 index 00000000..35736e11 --- /dev/null +++ b/src/contracts/vault/v1.1/VaultImplementation.sol @@ -0,0 +1,730 @@ +// SPDX-License-Identifier: BUSL-1.1 +pragma solidity 0.8.25; + +import {VaultStorage} from "./VaultStorage.sol"; + +import {IBaseDelegator} from "../../../interfaces/delegator/IBaseDelegator.sol"; +import {IBaseSlasher} from "../../../interfaces/slasher/IBaseSlasher.sol"; +import {IRegistry} from "../../../interfaces/common/IRegistry.sol"; +import {IVault} from "../../../interfaces/vault/v1.1/IVault.sol"; + +import {Checkpoints} from "../../libraries/Checkpoints.sol"; +import {ERC4626Math} from "../../libraries/ERC4626Math.sol"; + +import {ReentrancyGuardUpgradeable} from "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol"; +import {AccessControlUpgradeable} from "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol"; +import {Math} from "@openzeppelin/contracts/utils/math/Math.sol"; +import {SafeCast} from "@openzeppelin/contracts/utils/math/SafeCast.sol"; +import {SafeERC20, IERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; +import {Time} from "@openzeppelin/contracts/utils/types/Time.sol"; +import {IERC3156FlashBorrower} from "@openzeppelin/contracts/interfaces/IERC3156FlashBorrower.sol"; +import {IERC3156FlashLender} from "@openzeppelin/contracts/interfaces/IERC3156FlashLender.sol"; + +contract VaultImplementation is VaultStorage, AccessControlUpgradeable, ReentrancyGuardUpgradeable, IVault { + using Checkpoints for Checkpoints.Trace256; + using Math for uint256; + using Math for uint48; + using SafeCast for uint256; + using SafeERC20 for IERC20; + + /** + * @inheritdoc IVault + */ + address public immutable DELEGATOR_FACTORY; + + /** + * @inheritdoc IVault + */ + address public immutable SLASHER_FACTORY; + + constructor(address delegatorFactory, address slasherFactory) { + DELEGATOR_FACTORY = delegatorFactory; + SLASHER_FACTORY = slasherFactory; + } + + /** + * @inheritdoc IVault + */ + function epochDurationSetEpochsDelay() external view returns (uint256) { + if (_nextEpochDurationInit == 0 || Time.timestamp() < _nextEpochDurationInit) { + return _epochDurationSetEpochsDelay; + } + return _nextEpochDurationSetEpochsDelay; + } + + /** + * @inheritdoc IVault + */ + function epochDuration() public view returns (uint48) { + if (_nextEpochDurationInit == 0 || Time.timestamp() < _nextEpochDurationInit) { + return _epochDuration; + } + return _nextEpochDuration; + } + + /** + * @inheritdoc IVault + */ + function epochDurationInit() public view returns (uint48) { + if (_nextEpochDurationInit == 0 || Time.timestamp() < _nextEpochDurationInit) { + return _epochDurationInit; + } + return _nextEpochDurationInit; + } + + /** + * @inheritdoc IVault + */ + function epochAt( + uint48 timestamp + ) public view returns (uint256) { + if (timestamp < _epochDurationInit) { + if (_prevEpochDurationInit == 0 || timestamp < _prevEpochDurationInit) { + revert InvalidTimestamp(); + } + return _prevEpochDurationInitIndex + (timestamp - _prevEpochDurationInit) / _prevEpochDuration; + } else if (_nextEpochDurationInit == 0 || timestamp < _nextEpochDurationInit) { + return _epochDurationInitIndex + (timestamp - _epochDurationInit) / _epochDuration; + } else { + return _nextEpochInitIndex + (timestamp - _nextEpochDurationInit) / _nextEpochDuration; + } + } + + /** + * @inheritdoc IVault + */ + function epochStart( + uint256 epoch + ) public view returns (uint48) { + if (epoch < _prevEpochDurationInitIndex) { + revert InvalidEpoch(); + } + + if (epoch < _epochDurationInitIndex) { + return (_prevEpochDurationInit + (epoch - _prevEpochDurationInitIndex) * _prevEpochDuration).toUint48(); + } else if (_nextEpochInitIndex == 0 || epoch < _nextEpochInitIndex) { + return (_epochDurationInit + (epoch - _epochDurationInitIndex) * _epochDuration).toUint48(); + } else { + return (_nextEpochDurationInit + (epoch - _nextEpochInitIndex) * _nextEpochDuration).toUint48(); + } + } + + /** + * @inheritdoc IVault + */ + function currentEpoch() public view returns (uint256) { + return epochAt(Time.timestamp()); + } + + /** + * @inheritdoc IVault + */ + function currentEpochStart() public view returns (uint48) { + return epochStart(currentEpoch()); + } + + /** + * @inheritdoc IVault + */ + function previousEpochStart() public view returns (uint48) { + uint256 epoch = currentEpoch(); + if (epoch == 0) { + revert NoPreviousEpoch(); + } + return epochStart(epoch - 1); + } + + /** + * @inheritdoc IVault + */ + function nextEpochStart() public view returns (uint48) { + return epochStart(currentEpoch() + 1); + } + + /** + * @inheritdoc IVault + */ + function activeSharesAt(uint48 timestamp, bytes memory hint) public view returns (uint256) { + return _activeShares.upperLookupRecent(timestamp, hint); + } + + /** + * @inheritdoc IVault + */ + function activeShares() public view returns (uint256) { + return _activeShares.latest(); + } + + /** + * @inheritdoc IVault + */ + function activeStakeAt(uint48 timestamp, bytes memory hint) public view returns (uint256) { + return _activeStake.upperLookupRecent(timestamp, hint); + } + + /** + * @inheritdoc IVault + */ + function activeStake() public view returns (uint256) { + return _activeStake.latest(); + } + + /** + * @inheritdoc IVault + */ + function activeSharesOfAt(address account, uint48 timestamp, bytes memory hint) public view returns (uint256) { + return _activeSharesOf[account].upperLookupRecent(timestamp, hint); + } + + /** + * @inheritdoc IVault + */ + function activeSharesOf( + address account + ) public view returns (uint256) { + return _activeSharesOf[account].latest(); + } + + /** + * @inheritdoc IVault + */ + function isInitialized() external view returns (bool) { + return isDelegatorInitialized && isSlasherInitialized; + } + + /** + * @inheritdoc IVault + */ + function totalStake() public view returns (uint256) { + uint256 epoch = currentEpoch(); + return activeStake() + withdrawals[epoch] + withdrawals[epoch + 1]; + } + + /** + * @inheritdoc IVault + */ + function activeBalanceOfAt(address account, uint48 timestamp, bytes calldata hints) public view returns (uint256) { + ActiveBalanceOfHints memory activeBalanceOfHints; + if (hints.length > 0) { + activeBalanceOfHints = abi.decode(hints, (ActiveBalanceOfHints)); + } + return ERC4626Math.previewRedeem( + activeSharesOfAt(account, timestamp, activeBalanceOfHints.activeSharesOfHint), + activeStakeAt(timestamp, activeBalanceOfHints.activeStakeHint), + activeSharesAt(timestamp, activeBalanceOfHints.activeSharesHint) + ); + } + + /** + * @inheritdoc IVault + */ + function activeBalanceOf( + address account + ) public view returns (uint256) { + return ERC4626Math.previewRedeem(activeSharesOf(account), activeStake(), activeShares()); + } + + /** + * @inheritdoc IVault + */ + function withdrawalsOf(uint256 epoch, address account) public view returns (uint256) { + return + ERC4626Math.previewRedeem(withdrawalSharesOf[epoch][account], withdrawals[epoch], withdrawalShares[epoch]); + } + + /** + * @inheritdoc IVault + */ + function slashableBalanceOf( + address account + ) external view returns (uint256) { + uint256 epoch = currentEpoch(); + return activeBalanceOf(account) + withdrawalsOf(epoch, account) + withdrawalsOf(epoch + 1, account); + } + + /** + * @inheritdoc IERC3156FlashLender + */ + function maxFlashLoan( + address token + ) public view returns (uint256) { + if (!flashLoanEnabled) { + return 0; + } + address collateral_ = collateral; + return token == collateral_ ? IERC20(collateral_).balanceOf(address(this)) : 0; + } + + /** + * @inheritdoc IERC3156FlashLender + */ + function flashFee(address token, uint256 value) public view returns (uint256) { + if (token != collateral) { + revert UnsupportedToken(); + } + return flashFeeReceiver == address(0) ? 0 : value.mulDiv(flashFeeRate, FLASH_FEE_BASE, Math.Rounding.Ceil); + } + + /** + * @inheritdoc IVault + */ + function deposit( + address onBehalfOf, + uint256 amount + ) external nonReentrant returns (uint256 depositedAmount, uint256 mintedShares) { + if (onBehalfOf == address(0)) { + revert InvalidOnBehalfOf(); + } + + if (depositWhitelist && !isDepositorWhitelisted[msg.sender]) { + revert NotWhitelistedDepositor(); + } + + uint256 balanceBefore = IERC20(collateral).balanceOf(address(this)); + IERC20(collateral).safeTransferFrom(msg.sender, address(this), amount); + depositedAmount = IERC20(collateral).balanceOf(address(this)) - balanceBefore; + + if (depositedAmount == 0) { + revert InsufficientDeposit(); + } + + if (isDepositLimit && activeStake() + depositedAmount > depositLimit) { + revert DepositLimitReached(); + } + + uint256 activeStake_ = activeStake(); + uint256 activeShares_ = activeShares(); + + mintedShares = ERC4626Math.previewDeposit(depositedAmount, activeShares_, activeStake_); + + _activeStake.push(Time.timestamp(), activeStake_ + depositedAmount); + _activeShares.push(Time.timestamp(), activeShares_ + mintedShares); + _activeSharesOf[onBehalfOf].push(Time.timestamp(), activeSharesOf(onBehalfOf) + mintedShares); + + emit Deposit(msg.sender, onBehalfOf, depositedAmount, mintedShares); + } + + /** + * @inheritdoc IVault + */ + function withdraw( + address claimer, + uint256 amount + ) external nonReentrant returns (uint256 burnedShares, uint256 mintedShares) { + if (claimer == address(0)) { + revert InvalidClaimer(); + } + + if (amount == 0) { + revert InsufficientWithdrawal(); + } + + burnedShares = ERC4626Math.previewWithdraw(amount, activeShares(), activeStake()); + + if (burnedShares > activeSharesOf(msg.sender)) { + revert TooMuchWithdraw(); + } + + mintedShares = _withdraw(claimer, amount, burnedShares); + } + + /** + * @inheritdoc IVault + */ + function redeem( + address claimer, + uint256 shares + ) external nonReentrant returns (uint256 withdrawnAssets, uint256 mintedShares) { + if (claimer == address(0)) { + revert InvalidClaimer(); + } + + if (shares > activeSharesOf(msg.sender)) { + revert TooMuchRedeem(); + } + + withdrawnAssets = ERC4626Math.previewRedeem(shares, activeStake(), activeShares()); + + if (withdrawnAssets == 0) { + revert InsufficientRedemption(); + } + + mintedShares = _withdraw(claimer, withdrawnAssets, shares); + } + + /** + * @inheritdoc IVault + */ + function claim(address recipient, uint256 epoch) external nonReentrant returns (uint256 amount) { + if (recipient == address(0)) { + revert InvalidRecipient(); + } + + amount = _claim(epoch); + + IERC20(collateral).safeTransfer(recipient, amount); + + emit Claim(msg.sender, recipient, epoch, amount); + } + + /** + * @inheritdoc IVault + */ + function claimBatch(address recipient, uint256[] calldata epochs) external nonReentrant returns (uint256 amount) { + if (recipient == address(0)) { + revert InvalidRecipient(); + } + + uint256 length = epochs.length; + if (length == 0) { + revert InvalidLengthEpochs(); + } + + for (uint256 i; i < length; ++i) { + amount += _claim(epochs[i]); + } + + IERC20(collateral).safeTransfer(recipient, amount); + + emit ClaimBatch(msg.sender, recipient, epochs, amount); + } + + /** + * @inheritdoc IERC3156FlashLender + */ + function flashLoan( + IERC3156FlashBorrower receiver, + address token, + uint256 value, + bytes calldata data + ) public nonReentrant returns (bool) { + if (value == 0) { + revert TooLowFlashLoanValue(); + } + if (value > maxFlashLoan(token)) { + revert MaxLoanExceeded(); + } + uint256 fee = flashFee(token, value); + address collateral_ = collateral; + uint256 balanceBefore = IERC20(collateral_).balanceOf(address(this)); + + IERC20(collateral_).safeTransfer(address(receiver), value); + + if (receiver.onFlashLoan(msg.sender, token, value, fee, data) != RETURN_VALUE) { + revert InvalidReceiver(); + } + + IERC20(collateral_).safeTransferFrom(address(receiver), address(this), value + fee); + + uint256 balanceAfter = IERC20(collateral_).balanceOf(address(this)); + if (balanceAfter - balanceBefore < fee) { + revert InvalidReturnAmount(); + } + fee = balanceAfter - balanceBefore; + + if (fee > 0) { + IERC20(collateral_).safeTransfer(flashFeeReceiver, fee); + } + + return true; + } + + /** + * @inheritdoc IVault + */ + function onSlash(uint256 amount, uint48 captureTimestamp) external nonReentrant returns (uint256 slashedAmount) { + if (msg.sender != slasher) { + revert NotSlasher(); + } + + uint256 currentEpoch_ = currentEpoch(); + uint256 captureEpoch = epochAt(captureTimestamp); + if ((currentEpoch_ > 0 && captureEpoch < currentEpoch_ - 1) || captureEpoch > currentEpoch_) { + revert InvalidCaptureEpoch(); + } + + uint256 activeStake_ = activeStake(); + uint256 nextWithdrawals = withdrawals[currentEpoch_ + 1]; + if (captureEpoch == currentEpoch_) { + uint256 slashableStake = activeStake_ + nextWithdrawals; + slashedAmount = Math.min(amount, slashableStake); + if (slashedAmount > 0) { + uint256 activeSlashed = slashedAmount.mulDiv(activeStake_, slashableStake); + uint256 nextWithdrawalsSlashed = slashedAmount - activeSlashed; + + _activeStake.push(Time.timestamp(), activeStake_ - activeSlashed); + withdrawals[captureEpoch + 1] = nextWithdrawals - nextWithdrawalsSlashed; + } + } else { + uint256 withdrawals_ = withdrawals[currentEpoch_]; + uint256 slashableStake = activeStake_ + withdrawals_ + nextWithdrawals; + slashedAmount = Math.min(amount, slashableStake); + if (slashedAmount > 0) { + uint256 activeSlashed = slashedAmount.mulDiv(activeStake_, slashableStake); + uint256 nextWithdrawalsSlashed = slashedAmount.mulDiv(nextWithdrawals, slashableStake); + uint256 withdrawalsSlashed = slashedAmount - activeSlashed - nextWithdrawalsSlashed; + + if (withdrawals_ < withdrawalsSlashed) { + nextWithdrawalsSlashed += withdrawalsSlashed - withdrawals_; + withdrawalsSlashed = withdrawals_; + } + + _activeStake.push(Time.timestamp(), activeStake_ - activeSlashed); + withdrawals[currentEpoch_ + 1] = nextWithdrawals - nextWithdrawalsSlashed; + withdrawals[currentEpoch_] = withdrawals_ - withdrawalsSlashed; + } + } + + if (slashedAmount > 0) { + IERC20(collateral).safeTransfer(burner, slashedAmount); + } + + emit OnSlash(amount, captureTimestamp, slashedAmount); + } + + /** + * @inheritdoc IVault + */ + function setDepositWhitelist( + bool status + ) external nonReentrant onlyRole(DEPOSIT_WHITELIST_SET_ROLE) { + if (depositWhitelist == status) { + revert AlreadySet(); + } + + depositWhitelist = status; + + emit SetDepositWhitelist(status); + } + + /** + * @inheritdoc IVault + */ + function setDepositorWhitelistStatus( + address account, + bool status + ) external nonReentrant onlyRole(DEPOSITOR_WHITELIST_ROLE) { + if (account == address(0)) { + revert InvalidAccount(); + } + + if (isDepositorWhitelisted[account] == status) { + revert AlreadySet(); + } + + isDepositorWhitelisted[account] = status; + + emit SetDepositorWhitelistStatus(account, status); + } + + /** + * @inheritdoc IVault + */ + function setIsDepositLimit( + bool status + ) external nonReentrant onlyRole(IS_DEPOSIT_LIMIT_SET_ROLE) { + if (isDepositLimit == status) { + revert AlreadySet(); + } + + isDepositLimit = status; + + emit SetIsDepositLimit(status); + } + + /** + * @inheritdoc IVault + */ + function setDepositLimit( + uint256 limit + ) external nonReentrant onlyRole(DEPOSIT_LIMIT_SET_ROLE) { + if (depositLimit == limit) { + revert AlreadySet(); + } + + depositLimit = limit; + + emit SetDepositLimit(limit); + } + + /** + * @inheritdoc IVault + */ + function setEpochDuration( + uint48 epochDuration_, + uint256 epochDurationSetEpochsDelay_ + ) external nonReentrant onlyRole(EPOCH_DURATION_SET_ROLE) { + if (epochDurationSetEpochsDelay_ < 3) { + revert InvalidEpochDurationSetEpochsDelay(); + } + + if (_nextEpochDurationInit != 0 && _nextEpochDurationInit <= Time.timestamp()) { + _prevEpochDurationInitIndex = _epochDurationInitIndex; + _prevEpochDuration = _epochDuration; + _prevEpochDurationInit = _epochDurationInit; + _epochDurationInitIndex = _nextEpochInitIndex; + _epochDuration = _nextEpochDuration; + _epochDurationInit = _nextEpochDurationInit; + _epochDurationSetEpochsDelay = _nextEpochDurationSetEpochsDelay; + _nextEpochInitIndex = 0; + _nextEpochDuration = 0; + _nextEpochDurationInit = 0; + _nextEpochDurationSetEpochsDelay = 0; + } + + if (_epochDuration > epochDuration_) { + revert InvalidNewEpochDuration(); + } + + if ( + _nextEpochDurationInit == 0 && _epochDuration == epochDuration_ + && _epochDurationSetEpochsDelay == epochDurationSetEpochsDelay_ + ) { + revert AlreadySet(); + } + + _nextEpochInitIndex = currentEpoch() + _epochDurationSetEpochsDelay; + _nextEpochDuration = epochDuration_; + _nextEpochDurationInit = (currentEpochStart() + _epochDurationSetEpochsDelay * _epochDuration).toUint48(); + _nextEpochDurationSetEpochsDelay = epochDurationSetEpochsDelay_; + + emit SetEpochDuration(epochDuration_, epochDurationSetEpochsDelay_); + } + + /** + * @inheritdoc IVault + */ + function setFlashloanEnabled( + bool status + ) external nonReentrant onlyRole(FLASH_LOAN_ENABLED_SET_ROLE) { + if (flashLoanEnabled == status) { + revert AlreadySet(); + } + + flashLoanEnabled = status; + + emit SetFlashloanEnabled(status); + } + + /** + * @inheritdoc IVault + */ + function setFlashFeeRate( + uint256 flashFeeRate_ + ) external nonReentrant onlyRole(FLASH_FEE_RATE_SET_ROLE) { + if (flashFeeRate == flashFeeRate_) { + revert AlreadySet(); + } + flashFeeRate = flashFeeRate_; + + emit SetFlashFeeRate(flashFeeRate_); + } + + /** + * @inheritdoc IVault + */ + function setFlashFeeReceiver( + address flashFeeReceiver_ + ) external nonReentrant onlyRole(FLASH_FEE_RECEIVER_SET_ROLE) { + if (flashFeeReceiver == flashFeeReceiver_) { + revert AlreadySet(); + } + flashFeeReceiver = flashFeeReceiver_; + + emit SetFlashFeeReceiver(flashFeeReceiver_); + } + + /** + * @inheritdoc IVault + */ + function setDelegator( + address delegator_ + ) external nonReentrant { + if (isDelegatorInitialized) { + revert DelegatorAlreadyInitialized(); + } + + if (!IRegistry(DELEGATOR_FACTORY).isEntity(delegator_)) { + revert NotDelegator(); + } + + if (IBaseDelegator(delegator_).vault() != address(this)) { + revert InvalidDelegator(); + } + + delegator = delegator_; + + isDelegatorInitialized = true; + + emit SetDelegator(delegator_); + } + + /** + * @inheritdoc IVault + */ + function setSlasher( + address slasher_ + ) external nonReentrant { + if (isSlasherInitialized) { + revert SlasherAlreadyInitialized(); + } + + if (slasher_ != address(0)) { + if (!IRegistry(SLASHER_FACTORY).isEntity(slasher_)) { + revert NotSlasher(); + } + + if (IBaseSlasher(slasher_).vault() != address(this)) { + revert InvalidSlasher(); + } + + slasher = slasher_; + } + + isSlasherInitialized = true; + + emit SetSlasher(slasher_); + } + + function _withdraw( + address claimer, + uint256 withdrawnAssets, + uint256 burnedShares + ) internal returns (uint256 mintedShares) { + _activeSharesOf[msg.sender].push(Time.timestamp(), activeSharesOf(msg.sender) - burnedShares); + _activeShares.push(Time.timestamp(), activeShares() - burnedShares); + _activeStake.push(Time.timestamp(), activeStake() - withdrawnAssets); + + uint256 epoch = currentEpoch() + 1; + uint256 withdrawals_ = withdrawals[epoch]; + uint256 withdrawalsShares_ = withdrawalShares[epoch]; + + mintedShares = ERC4626Math.previewDeposit(withdrawnAssets, withdrawalsShares_, withdrawals_); + + withdrawals[epoch] = withdrawals_ + withdrawnAssets; + withdrawalShares[epoch] = withdrawalsShares_ + mintedShares; + withdrawalSharesOf[epoch][claimer] += mintedShares; + + emit Withdraw(msg.sender, claimer, withdrawnAssets, burnedShares, mintedShares); + } + + function _claim( + uint256 epoch + ) internal returns (uint256 amount) { + if (epoch >= currentEpoch()) { + revert InvalidEpoch(); + } + + if (isWithdrawalsClaimed[epoch][msg.sender]) { + revert AlreadyClaimed(); + } + + amount = withdrawalsOf(epoch, msg.sender); + + if (amount == 0) { + revert InsufficientClaim(); + } + + isWithdrawalsClaimed[epoch][msg.sender] = true; + } +} diff --git a/src/contracts/vault/v1.1/VaultStorage.sol b/src/contracts/vault/v1.1/VaultStorage.sol new file mode 100644 index 00000000..568da250 --- /dev/null +++ b/src/contracts/vault/v1.1/VaultStorage.sol @@ -0,0 +1,175 @@ +// SPDX-License-Identifier: BUSL-1.1 +pragma solidity 0.8.25; + +import {StaticDelegateCallable} from "../../common/StaticDelegateCallable.sol"; + +import {IVaultStorage} from "../../../interfaces/vault/v1.1/IVaultStorage.sol"; + +import {Checkpoints} from "../../libraries/Checkpoints.sol"; + +abstract contract VaultStorage is StaticDelegateCallable, IVaultStorage { + /** + * @inheritdoc IVaultStorage + */ + bytes32 public constant DEPOSIT_WHITELIST_SET_ROLE = keccak256("DEPOSIT_WHITELIST_SET_ROLE"); + + /** + * @inheritdoc IVaultStorage + */ + bytes32 public constant DEPOSITOR_WHITELIST_ROLE = keccak256("DEPOSITOR_WHITELIST_ROLE"); + + /** + * @inheritdoc IVaultStorage + */ + bytes32 public constant IS_DEPOSIT_LIMIT_SET_ROLE = keccak256("IS_DEPOSIT_LIMIT_SET_ROLE"); + + /** + * @inheritdoc IVaultStorage + */ + bytes32 public constant DEPOSIT_LIMIT_SET_ROLE = keccak256("DEPOSIT_LIMIT_SET_ROLE"); + + /** + * @inheritdoc IVaultStorage + */ + bytes32 public constant EPOCH_DURATION_SET_ROLE = keccak256("EPOCH_DURATION_SET_ROLE"); + + /** + * @inheritdoc IVaultStorage + */ + bytes32 public constant FLASH_LOAN_ENABLED_SET_ROLE = keccak256("FLASH_LOAN_ENABLED_SET_ROLE"); + + /** + * @inheritdoc IVaultStorage + */ + bytes32 public constant FLASH_FEE_RATE_SET_ROLE = keccak256("FLASH_FEE_RATE_SET_ROLE"); + + /** + * @inheritdoc IVaultStorage + */ + bytes32 public constant FLASH_FEE_RECEIVER_SET_ROLE = keccak256("FLASH_FEE_RECEIVER_SET_ROLE"); + + /** + * @inheritdoc IVaultStorage + */ + uint256 public constant FLASH_FEE_BASE = 1e9; + + /** + * @inheritdoc IVaultStorage + */ + bytes32 public constant RETURN_VALUE = keccak256("ERC3156FlashBorrower.onFlashLoan"); + + /** + * @inheritdoc IVaultStorage + */ + bool public depositWhitelist; + + /** + * @inheritdoc IVaultStorage + */ + bool public isDepositLimit; + + /** + * @inheritdoc IVaultStorage + */ + address public collateral; + + /** + * @inheritdoc IVaultStorage + */ + address public burner; + + uint48 internal _epochDurationInit; + + uint48 internal _epochDuration; + + /** + * @inheritdoc IVaultStorage + */ + address public delegator; + + /** + * @inheritdoc IVaultStorage + */ + bool public isDelegatorInitialized; + + /** + * @inheritdoc IVaultStorage + */ + address public slasher; + + /** + * @inheritdoc IVaultStorage + */ + bool public isSlasherInitialized; + + /** + * @inheritdoc IVaultStorage + */ + uint256 public depositLimit; + + /** + * @inheritdoc IVaultStorage + */ + mapping(address account => bool value) public isDepositorWhitelisted; + + /** + * @inheritdoc IVaultStorage + */ + mapping(uint256 epoch => uint256 amount) public withdrawals; + + /** + * @inheritdoc IVaultStorage + */ + mapping(uint256 epoch => uint256 amount) public withdrawalShares; + + /** + * @inheritdoc IVaultStorage + */ + mapping(uint256 epoch => mapping(address account => uint256 amount)) public withdrawalSharesOf; + + /** + * @inheritdoc IVaultStorage + */ + mapping(uint256 epoch => mapping(address account => bool value)) public isWithdrawalsClaimed; + + Checkpoints.Trace256 internal _activeShares; + + Checkpoints.Trace256 internal _activeStake; + + mapping(address account => Checkpoints.Trace256 shares) internal _activeSharesOf; + + uint256 internal _epochDurationSetEpochsDelay; + + uint256 internal _nextEpochDurationSetEpochsDelay; + + uint256 internal _epochDurationInitIndex; + + uint256 internal _prevEpochDurationInitIndex; + + uint48 internal _prevEpochDurationInit; + + uint48 internal _prevEpochDuration; + + uint48 internal _nextEpochDurationInit; + + uint48 internal _nextEpochDuration; + + uint256 internal _nextEpochInitIndex; + + /** + * @inheritdoc IVaultStorage + */ + uint256 public flashFeeRate; + + /** + * @inheritdoc IVaultStorage + */ + address public flashFeeReceiver; + + /** + * @inheritdoc IVaultStorage + */ + bool public flashLoanEnabled; + + uint256[42] private __gap; +} diff --git a/src/contracts/vault/v1.1/VaultTokenized.sol b/src/contracts/vault/v1.1/VaultTokenized.sol new file mode 100644 index 00000000..083f4689 --- /dev/null +++ b/src/contracts/vault/v1.1/VaultTokenized.sol @@ -0,0 +1,45 @@ +// SPDX-License-Identifier: BUSL-1.1 +pragma solidity 0.8.25; + +import {Vault} from "./Vault.sol"; +import {VaultTokenizedImplementation} from "./VaultTokenizedImplementation.sol"; + +import {IVault} from "../../../interfaces/vault/v1.1/IVault.sol"; +import {IVaultTokenized} from "../../../interfaces/vault/v1.1/IVaultTokenized.sol"; + +import {Address} from "@openzeppelin/contracts/utils/Address.sol"; + +contract VaultTokenized is Vault { + using Address for address; + + constructor(address vaultFactory, address implementation) Vault(vaultFactory, implementation) {} + + function _initialize(uint64 initialVersion, address owner_, bytes memory data) internal virtual override { + (IVaultTokenized.InitParamsTokenized memory params) = abi.decode(data, (IVaultTokenized.InitParamsTokenized)); + + super._initialize(initialVersion, owner_, params.baseParams); + + _implementation().functionDelegateCall( + abi.encodeCall(VaultTokenizedImplementation._VaultTokenized_init, (abi.encode(params.name, params.symbol))) + ); + } + + function _migrate(uint64 oldVersion, uint64 newVersion, bytes memory data) internal virtual override { + if (oldVersion == 2) { + (IVault.MigrateParams memory params) = abi.decode(data, (IVault.MigrateParams)); + + _processMigration(params); + } else if (oldVersion == 3) { + (IVaultTokenized.MigrateParamsTokenized memory params) = + abi.decode(data, (IVaultTokenized.MigrateParamsTokenized)); + + _implementation().functionDelegateCall( + abi.encodeCall( + VaultTokenizedImplementation._VaultTokenized_init, (abi.encode(params.name, params.symbol)) + ) + ); + } else { + revert IVault.InvalidOrigin(); + } + } +} diff --git a/src/contracts/vault/v1.1/VaultTokenizedImplementation.sol b/src/contracts/vault/v1.1/VaultTokenizedImplementation.sol new file mode 100644 index 00000000..cce3507a --- /dev/null +++ b/src/contracts/vault/v1.1/VaultTokenizedImplementation.sol @@ -0,0 +1,144 @@ +// SPDX-License-Identifier: BUSL-1.1 +pragma solidity 0.8.25; + +import {VaultStorage} from "./VaultStorage.sol"; + +import {IVault} from "../../../interfaces/vault/v1.1/IVault.sol"; +import {IVaultTokenized} from "../../../interfaces/vault/v1.1/IVaultTokenized.sol"; + +import {Checkpoints} from "../../libraries/Checkpoints.sol"; + +import {Math} from "@openzeppelin/contracts/utils/math/Math.sol"; +import {Time} from "@openzeppelin/contracts/utils/types/Time.sol"; +import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol"; +import {ERC20Upgradeable} from "@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol"; +import {Proxy} from "@openzeppelin/contracts/proxy/Proxy.sol"; +import {ReentrancyGuardUpgradeable} from "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol"; +import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import {Address} from "@openzeppelin/contracts/utils/Address.sol"; + +contract VaultTokenizedImplementation is + VaultStorage, + ERC20Upgradeable, + ReentrancyGuardUpgradeable, + Proxy, + IVaultTokenized +{ + using Checkpoints for Checkpoints.Trace256; + using Address for address; + + address private immutable BASE_IMPLEMENTATION; + + constructor( + address baseImplementation + ) { + BASE_IMPLEMENTATION = baseImplementation; + } + + /** + * @inheritdoc IERC20Metadata + */ + function decimals() public view override(ERC20Upgradeable, IERC20Metadata) returns (uint8) { + return IERC20Metadata(collateral).decimals(); + } + + /** + * @inheritdoc IERC20 + */ + function totalSupply() public view override(ERC20Upgradeable, IERC20) returns (uint256) { + return _activeShares.latest(); + } + + /** + * @inheritdoc IERC20 + */ + function balanceOf( + address account + ) public view override(ERC20Upgradeable, IERC20) returns (uint256) { + return _activeSharesOf[account].latest(); + } + + function deposit( + address onBehalfOf, + uint256 amount + ) public virtual returns (uint256 depositedAmount, uint256 mintedShares) { + (depositedAmount, mintedShares) = abi.decode( + BASE_IMPLEMENTATION.functionDelegateCall(abi.encodeCall(IVault.deposit, (onBehalfOf, amount))), + (uint256, uint256) + ); + + emit Transfer(address(0), onBehalfOf, mintedShares); + } + + function withdraw( + address claimer, + uint256 amount + ) public virtual returns (uint256 burnedShares, uint256 mintedShares) { + (burnedShares, mintedShares) = abi.decode( + BASE_IMPLEMENTATION.functionDelegateCall(abi.encodeCall(IVault.withdraw, (claimer, amount))), + (uint256, uint256) + ); + + emit Transfer(msg.sender, address(0), burnedShares); + } + + function redeem( + address claimer, + uint256 shares + ) public virtual returns (uint256 withdrawnAssets, uint256 mintedShares) { + (withdrawnAssets, mintedShares) = abi.decode( + BASE_IMPLEMENTATION.functionDelegateCall(abi.encodeCall(IVault.redeem, (claimer, shares))), + (uint256, uint256) + ); + + emit Transfer(msg.sender, address(0), shares); + } + + /** + * @inheritdoc ERC20Upgradeable + */ + function _update(address from, address to, uint256 value) internal virtual override nonReentrant { + if (from == address(0)) { + // Overflow check required: The rest of the code assumes that totalSupply never overflows + _activeShares.push(Time.timestamp(), totalSupply() + value); + } else { + uint256 fromBalance = balanceOf(from); + if (fromBalance < value) { + revert ERC20InsufficientBalance(from, fromBalance, value); + } + unchecked { + // Overflow not possible: value <= fromBalance <= totalSupply. + _activeSharesOf[from].push(Time.timestamp(), fromBalance - value); + } + } + + if (to == address(0)) { + unchecked { + // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply. + _activeShares.push(Time.timestamp(), totalSupply() - value); + } + } else { + unchecked { + // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256. + _activeSharesOf[to].push(Time.timestamp(), balanceOf(to) + value); + } + } + + emit Transfer(from, to, value); + } + + /** + * @inheritdoc Proxy + */ + function _implementation() internal view override returns (address) { + return BASE_IMPLEMENTATION; + } + + function _VaultTokenized_init( + bytes calldata data + ) external { + (string memory name, string memory symbol) = abi.decode(data, (string, string)); + + __ERC20_init(name, symbol); + } +} diff --git a/src/contracts/vault/v1.1/VaultVotes.sol b/src/contracts/vault/v1.1/VaultVotes.sol new file mode 100644 index 00000000..882b7426 --- /dev/null +++ b/src/contracts/vault/v1.1/VaultVotes.sol @@ -0,0 +1,38 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.25; + +import {VaultTokenized} from "./VaultTokenized.sol"; +import {VaultVotesImplementation} from "./VaultVotesImplementation.sol"; + +import {IVault} from "../../../interfaces/vault/v1.1/IVault.sol"; +import {IVaultVotes} from "../../../interfaces/vault/v1.1/IVaultVotes.sol"; + +import {Address} from "@openzeppelin/contracts/utils/Address.sol"; + +contract VaultVotes is VaultTokenized { + using Address for address; + + constructor(address vaultFactory, address implementation) VaultTokenized(vaultFactory, implementation) {} + + function _initialize(uint64 initialVersion, address owner_, bytes memory data) internal virtual override { + super._initialize(initialVersion, owner_, data); + + _implementation().functionDelegateCall( + abi.encodeCall(VaultVotesImplementation._VaultVotes_init, (new bytes(0))) + ); + } + + function _migrate(uint64 oldVersion, uint64, /* newVersion */ bytes memory data) internal virtual override { + if (oldVersion == 4) { + if (data.length > 0) { + revert IVaultVotes.InvalidData(); + } + + _implementation().functionDelegateCall( + abi.encodeCall(VaultVotesImplementation._VaultVotes_init, (new bytes(0))) + ); + } else { + revert IVault.InvalidOrigin(); + } + } +} diff --git a/src/contracts/vault/v1.1/VaultVotesImplementation.sol b/src/contracts/vault/v1.1/VaultVotesImplementation.sol new file mode 100644 index 00000000..4c2ce431 --- /dev/null +++ b/src/contracts/vault/v1.1/VaultVotesImplementation.sol @@ -0,0 +1,114 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.25; + +import {VaultTokenizedImplementation} from "src/contracts/vault/v1.1/VaultTokenizedImplementation.sol"; + +import {IVaultVotes} from "../../../interfaces/vault/v1.1/IVaultVotes.sol"; + +import {Checkpoints} from "../../libraries/Checkpoints.sol"; + +import {Time} from "@openzeppelin/contracts/utils/types/Time.sol"; +import {SafeCast} from "@openzeppelin/contracts/utils/math/SafeCast.sol"; +import {ECDSA} from "@openzeppelin/contracts/utils/cryptography/ECDSA.sol"; +import {IERC6372} from "@openzeppelin/contracts/interfaces/IERC6372.sol"; +import {IVotes} from "@openzeppelin/contracts/governance/utils/IVotes.sol"; +import {ECDSA} from "@openzeppelin/contracts/utils/cryptography/ECDSA.sol"; +import {Proxy} from "@openzeppelin/contracts/proxy/Proxy.sol"; +import {Address} from "@openzeppelin/contracts/utils/Address.sol"; +import {VotesUpgradeable} from "@openzeppelin/contracts-upgradeable/governance/utils/VotesUpgradeable.sol"; + +contract VaultVotesImplementation is VaultTokenizedImplementation, VotesUpgradeable, IVaultVotes { + using Checkpoints for Checkpoints.Trace208; + using Checkpoints for Checkpoints.Trace256; + using Address for address; + + constructor( + address baseImplementation + ) VaultTokenizedImplementation(baseImplementation) {} + + /** + * @inheritdoc IERC6372 + */ + function clock() public view override(VotesUpgradeable, IERC6372) returns (uint48) { + return Time.timestamp(); + } + + /** + * @inheritdoc IERC6372 + */ + function CLOCK_MODE() public view override(VotesUpgradeable, IERC6372) returns (string memory) { + return "mode=timestamp"; + } + + /** + * @inheritdoc IVotes + */ + function getPastTotalSupply( + uint256 timepoint + ) public view override(VotesUpgradeable, IVotes) returns (uint256) { + uint48 currentTimepoint = clock(); + if (timepoint >= currentTimepoint) { + revert ERC5805FutureLookup(timepoint, currentTimepoint); + } + return _activeShares.upperLookupRecent(SafeCast.toUint48(timepoint)); + } + + function deposit( + address onBehalfOf, + uint256 amount + ) public override returns (uint256 depositedAmount, uint256 mintedShares) { + (depositedAmount, mintedShares) = super.deposit(onBehalfOf, amount); + + if (_activeShares.latest() > type(uint208).max) { + revert SafeSupplyExceeded(); + } + + _transferVotingUnits(address(0), onBehalfOf, mintedShares); + } + + function withdraw( + address claimer, + uint256 amount + ) public override returns (uint256 burnedShares, uint256 mintedShares) { + (burnedShares, mintedShares) = super.withdraw(claimer, amount); + + _transferVotingUnits(msg.sender, address(0), burnedShares); + } + + function redeem( + address claimer, + uint256 shares + ) public override returns (uint256 withdrawnAssets, uint256 mintedShares) { + (withdrawnAssets, mintedShares) = super.redeem(claimer, shares); + + _transferVotingUnits(msg.sender, address(0), shares); + } + + function _update(address from, address to, uint256 value) internal override { + super._update(from, to, value); + + _transferVotingUnits(from, to, value); + } + + /** + * @inheritdoc VotesUpgradeable + */ + function _transferVotingUnits(address from, address to, uint256 amount) internal override { + _moveDelegateVotes(delegates(from), delegates(to), amount); + } + + /** + * @inheritdoc VotesUpgradeable + */ + function _getVotingUnits( + address account + ) internal view override returns (uint256) { + return _activeSharesOf[account].latest(); + } + + function _VaultVotes_init( + bytes calldata /* data */ + ) external { + __EIP712_init("VaultVotes", "1"); + } +} diff --git a/src/interfaces/vault/v1.1/IVault.sol b/src/interfaces/vault/v1.1/IVault.sol new file mode 100644 index 00000000..e9f5024e --- /dev/null +++ b/src/interfaces/vault/v1.1/IVault.sol @@ -0,0 +1,562 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {IVaultStorage} from "./IVaultStorage.sol"; + +import {IAccessControl} from "@openzeppelin/contracts/access/IAccessControl.sol"; +import {IERC165} from "@openzeppelin/contracts/interfaces/IERC165.sol"; +import {IERC3156FlashLender} from "@openzeppelin/contracts/interfaces/IERC3156FlashLender.sol"; + +interface IVault is IVaultStorage, IAccessControl, IERC165, IERC3156FlashLender { + error AlreadyClaimed(); + error AlreadySet(); + error DelegatorAlreadyInitialized(); + error DepositLimitReached(); + error InsufficientClaim(); + error InsufficientDeposit(); + error InsufficientExitWindow(); + error InsufficientRedemption(); + error InsufficientWithdrawal(); + error InvalidAccount(); + error InvalidCaptureEpoch(); + error InvalidClaimer(); + error InvalidCollateral(); + error InvalidDelegator(); + error InvalidEpoch(); + error InvalidEpochDuration(); + error InvalidEpochDurationSetEpochsDelay(); + error InvalidFlashParams(); + error InvalidLengthEpochs(); + error InvalidNewEpochDuration(); + error InvalidOnBehalfOf(); + error InvalidOrigin(); + error InvalidReceiver(); + error InvalidRecipient(); + error InvalidReturnAmount(); + error InvalidSlasher(); + error InvalidTimestamp(); + error MaxLoanExceeded(); + error MissingRoles(); + error NewEpochDurationNotReady(); + error NoDepositWhitelist(); + error NoPreviousEpoch(); + error NotDelegator(); + error NotSlasher(); + error NotWhitelistedDepositor(); + error SlasherAlreadyInitialized(); + error TooLowFlashLoanValue(); + error TooMuchRedeem(); + error TooMuchWithdraw(); + error UnsupportedToken(); + + /** + * @notice Initial parameters needed for a vault deployment. + * @param collateral vault's underlying collateral + * @param burner vault's burner to issue debt to (e.g., 0xdEaD or some unwrapper contract) + * @param epochDuration duration of the vault epoch (it determines sync points for withdrawals) + * @param depositWhitelist if enabling deposit whitelist + * @param isDepositLimit if enabling deposit limit + * @param depositLimit deposit limit (maximum amount of the collateral that can be in the vault simultaneously) + * @param epochDurationSetEpochsDelay number of epochs to wait before accepting a new epoch duration + * @param flashLoanEnabled if enabling flash loan mechanic + * @param flashFeeRate flash fee rate (100% = 1_000_000_000; 0.03% = 300_000) + * @param flashFeeReceiver address of the flash fee receiver + * @param defaultAdminRoleHolder address of the initial DEFAULT_ADMIN_ROLE holder + * @param depositWhitelistSetRoleHolder address of the initial DEPOSIT_WHITELIST_SET_ROLE holder + * @param depositorWhitelistRoleHolder address of the initial DEPOSITOR_WHITELIST_ROLE holder + * @param depositorsWhitelisted addresses of the whitelisted depositors + * @param isDepositLimitSetRoleHolder address of the initial IS_DEPOSIT_LIMIT_SET_ROLE holder + * @param depositLimitSetRoleHolder address of the initial DEPOSIT_LIMIT_SET_ROLE holder + * @param epochDurationSetRoleHolder address of the initial EPOCH_DURATION_SET_ROLE holder + * @param flashLoanEnabledSetRoleHolder address of the initial FLASH_LOAN_ENABLED_SET_ROLE holder + * @param flashFeeRateSetRoleHolder address of the initial FLASH_FEE_RATE_SET_ROLE holder + * @param flashFeeReceiverSetRoleHolder address of the initial FLASH_FEE_RECEIVER_SET_ROLE holder + */ + struct InitParams { + address collateral; + address burner; + uint48 epochDuration; + bool depositWhitelist; + bool isDepositLimit; + uint256 depositLimit; + uint256 epochDurationSetEpochsDelay; + bool flashLoanEnabled; + uint256 flashFeeRate; + address flashFeeReceiver; + address defaultAdminRoleHolder; + address depositWhitelistSetRoleHolder; + address depositorWhitelistRoleHolder; + address[] depositorsWhitelisted; + address isDepositLimitSetRoleHolder; + address depositLimitSetRoleHolder; + address epochDurationSetRoleHolder; + address flashLoanEnabledSetRoleHolder; + address flashFeeRateSetRoleHolder; + address flashFeeReceiverSetRoleHolder; + } + + /** + * @notice Parameters needed for a vault migration. + * @param epochDurationSetEpochsDelay number of epochs to wait before accepting a new epoch duration + * @param flashLoanEnabled if enabling flash loan mechanic + * @param flashFeeRate flash fee rate (100% = 1_000_000_000; 0.03% = 300_000) + * @param flashFeeReceiver address of the flash fee receiver + * @param epochDurationSetRoleHolder address of the initial EPOCH_DURATION_SET_ROLE holder + * @param flashLoanEnabledSetRoleHolder address of the initial FLASH_LOAN_ENABLED_SET_ROLE holder + * @param flashFeeRateSetRoleHolder address of the initial FLASH_FEE_RATE_SET_ROLE holder + * @param flashFeeReceiverSetRoleHolder address of the initial FLASH_FEE_RECEIVER_SET_ROLE holder + * @dev Migrations: 1 -> 3; 2 -> 4 + */ + struct MigrateParams { + uint256 epochDurationSetEpochsDelay; + bool flashLoanEnabled; + uint256 flashFeeRate; + address flashFeeReceiver; + address epochDurationSetRoleHolder; + address flashLoanEnabledSetRoleHolder; + address flashFeeRateSetRoleHolder; + address flashFeeReceiverSetRoleHolder; + } + + /** + * @notice Hints for an active balance. + * @param activeSharesOfHint hint for the active shares of checkpoint + * @param activeStakeHint hint for the active stake checkpoint + * @param activeSharesHint hint for the active shares checkpoint + */ + struct ActiveBalanceOfHints { + bytes activeSharesOfHint; + bytes activeStakeHint; + bytes activeSharesHint; + } + + /** + * @notice Emitted when a deposit is made. + * @param depositor account that made the deposit + * @param onBehalfOf account the deposit was made on behalf of + * @param amount amount of the collateral deposited + * @param shares amount of the active shares minted + */ + event Deposit(address indexed depositor, address indexed onBehalfOf, uint256 amount, uint256 shares); + + /** + * @notice Emitted when a withdrawal is made. + * @param withdrawer account that made the withdrawal + * @param claimer account that needs to claim the withdrawal + * @param amount amount of the collateral withdrawn + * @param burnedShares amount of the active shares burned + * @param mintedShares amount of the epoch withdrawal shares minted + */ + event Withdraw( + address indexed withdrawer, address indexed claimer, uint256 amount, uint256 burnedShares, uint256 mintedShares + ); + + /** + * @notice Emitted when a claim is made. + * @param claimer account that claimed + * @param recipient account that received the collateral + * @param epoch epoch the collateral was claimed for + * @param amount amount of the collateral claimed + */ + event Claim(address indexed claimer, address indexed recipient, uint256 epoch, uint256 amount); + + /** + * @notice Emitted when a batch claim is made. + * @param claimer account that claimed + * @param recipient account that received the collateral + * @param epochs epochs the collateral was claimed for + * @param amount amount of the collateral claimed + */ + event ClaimBatch(address indexed claimer, address indexed recipient, uint256[] epochs, uint256 amount); + + /** + * @notice Emitted when a slash happens. + * @param amount amount of the collateral to slash + * @param captureTimestamp time point when the stake was captured + * @param slashedAmount real amount of the collateral slashed + */ + event OnSlash(uint256 amount, uint48 captureTimestamp, uint256 slashedAmount); + + /** + * @notice Emitted when a deposit whitelist status is enabled/disabled. + * @param status if enabled deposit whitelist + */ + event SetDepositWhitelist(bool status); + + /** + * @notice Emitted when a depositor whitelist status is set. + * @param account account for which the whitelist status is set + * @param status if whitelisted the account + */ + event SetDepositorWhitelistStatus(address indexed account, bool status); + + /** + * @notice Emitted when a deposit limit status is enabled/disabled. + * @param status if enabled deposit limit + */ + event SetIsDepositLimit(bool status); + + /** + * @notice Emitted when a deposit limit is set. + * @param limit deposit limit (maximum amount of the collateral that can be in the vault simultaneously) + */ + event SetDepositLimit(uint256 limit); + + /** + * @notice Emitted when a epoch duration is set (can be accepted after `epochDurationSetEpochsDelay` epochs). + * @param epochDuration epoch duration + * @param epochDurationSetEpochsDelay delay for the epoch duration set in epochs + */ + event SetEpochDuration(uint48 epochDuration, uint256 epochDurationSetEpochsDelay); + + /** + * @notice Emitted when a flash loan enabled status is set. + * @param status if enabled flash loan + */ + event SetFlashloanEnabled(bool status); + + /** + * @notice Emitted when a flash fee rate is set. + * @param flashFeeRate flash fee rate + */ + event SetFlashFeeRate(uint256 flashFeeRate); + + /** + * @notice Emitted when a flash fee receiver is set. + * @param flashFeeReceiver flash fee receiver + */ + event SetFlashFeeReceiver(address flashFeeReceiver); + + /** + * @notice Emitted when a delegator is set. + * @param delegator vault's delegator to delegate the stake to networks and operators + * @dev Can be set only once. + */ + event SetDelegator(address indexed delegator); + + /** + * @notice Emitted when a slasher is set. + * @param slasher vault's slasher to provide a slashing mechanism to networks + * @dev Can be set only once. + */ + event SetSlasher(address indexed slasher); + + /** + * @notice Get the delegator factory's address. + * @return address of the delegator factory + */ + function DELEGATOR_FACTORY() external view returns (address); + + /** + * @notice Get the slasher factory's address. + * @return address of the slasher factory + */ + function SLASHER_FACTORY() external view returns (address); + + /** + * @notice Get a delay for the epoch duration set in epochs. + * @return delay for the epoch duration set + */ + function epochDurationSetEpochsDelay() external view returns (uint256); + + /** + * @notice Get a time point of the epoch duration set. + * @return time point of the epoch duration set + */ + function epochDurationInit() external view returns (uint48); + + /** + * @notice Get a duration of the vault epoch. + * @return duration of the epoch + */ + function epochDuration() external view returns (uint48); + + /** + * @notice Get an epoch at a given timestamp. + * @param timestamp time point to get the epoch at + * @return epoch at the timestamp + * @dev Reverts if the timestamp is less than the start of the previous epoch duration initial timestamp. + * Using a future timestamp may result in an unreliable epoch number because of possible changes in epoch duration. + */ + function epochAt( + uint48 timestamp + ) external view returns (uint256); + + /** + * @notice Get a start of the epoch. + * @param epoch epoch to get the start of + * @return start of the epoch + * @dev Reverts if the epoch is less than the previous epoch duration initial epoch. + * Using a future epoch may result in an unreliable start timestamp because of possible changes in epoch duration. + */ + function epochStart( + uint256 epoch + ) external view returns (uint48); + + /** + * @notice Get a current vault epoch. + * @return current epoch + */ + function currentEpoch() external view returns (uint256); + + /** + * @notice Get a start of the current vault epoch. + * @return start of the current epoch + */ + function currentEpochStart() external view returns (uint48); + + /** + * @notice Get a start of the previous vault epoch. + * @return start of the previous epoch + * @dev Reverts if the current epoch is 0. + */ + function previousEpochStart() external view returns (uint48); + + /** + * @notice Get a start of the next vault epoch. + * @return start of the next epoch + * @dev It may result in an unreliable start timestamp because of possible changes in epoch duration. + */ + function nextEpochStart() external view returns (uint48); + + /** + * @notice Get a total number of active shares in the vault at a given timestamp using a hint. + * @param timestamp time point to get the total number of active shares at + * @param hint hint for the checkpoint index + * @return total number of active shares at the timestamp + */ + function activeSharesAt(uint48 timestamp, bytes memory hint) external view returns (uint256); + + /** + * @notice Get a total number of active shares in the vault. + * @return total number of active shares + */ + function activeShares() external view returns (uint256); + + /** + * @notice Get a total amount of active stake in the vault at a given timestamp using a hint. + * @param timestamp time point to get the total active stake at + * @param hint hint for the checkpoint index + * @return total amount of active stake at the timestamp + */ + function activeStakeAt(uint48 timestamp, bytes memory hint) external view returns (uint256); + + /** + * @notice Get a total amount of active stake in the vault. + * @return total amount of active stake + */ + function activeStake() external view returns (uint256); + + /** + * @notice Get a total number of active shares for a particular account at a given timestamp using a hint. + * @param account account to get the number of active shares for + * @param timestamp time point to get the number of active shares for the account at + * @param hint hint for the checkpoint index + * @return number of active shares for the account at the timestamp + */ + function activeSharesOfAt(address account, uint48 timestamp, bytes memory hint) external view returns (uint256); + + /** + * @notice Get a number of active shares for a particular account. + * @param account account to get the number of active shares for + * @return number of active shares for the account + */ + function activeSharesOf( + address account + ) external view returns (uint256); + + /** + * @notice Check if the vault is fully initialized (a delegator and a slasher are set). + * @return if the vault is fully initialized + */ + function isInitialized() external view returns (bool); + + /** + * @notice Get a total amount of the collateral that can be slashed. + * @return total amount of the slashable collateral + */ + function totalStake() external view returns (uint256); + + /** + * @notice Get an active balance for a particular account at a given timestamp using hints. + * @param account account to get the active balance for + * @param timestamp time point to get the active balance for the account at + * @param hints hints for checkpoints' indexes + * @return active balance for the account at the timestamp + */ + function activeBalanceOfAt( + address account, + uint48 timestamp, + bytes calldata hints + ) external view returns (uint256); + + /** + * @notice Get an active balance for a particular account. + * @param account account to get the active balance for + * @return active balance for the account + */ + function activeBalanceOf( + address account + ) external view returns (uint256); + + /** + * @notice Get withdrawals for a particular account at a given epoch (zero if claimed). + * @param epoch epoch to get the withdrawals for the account at + * @param account account to get the withdrawals for + * @return withdrawals for the account at the epoch + */ + function withdrawalsOf(uint256 epoch, address account) external view returns (uint256); + + /** + * @notice Get a total amount of the collateral that can be slashed for a given account. + * @param account account to get the slashable collateral for + * @return total amount of the account's slashable collateral + */ + function slashableBalanceOf( + address account + ) external view returns (uint256); + + /** + * @notice Deposit collateral into the vault. + * @param onBehalfOf account the deposit is made on behalf of + * @param amount amount of the collateral to deposit + * @return depositedAmount real amount of the collateral deposited + * @return mintedShares amount of the active shares minted + */ + function deposit( + address onBehalfOf, + uint256 amount + ) external returns (uint256 depositedAmount, uint256 mintedShares); + + /** + * @notice Withdraw collateral from the vault (it will be claimable after the next epoch). + * @param claimer account that needs to claim the withdrawal + * @param amount amount of the collateral to withdraw + * @return burnedShares amount of the active shares burned + * @return mintedShares amount of the epoch withdrawal shares minted + */ + function withdraw(address claimer, uint256 amount) external returns (uint256 burnedShares, uint256 mintedShares); + + /** + * @notice Redeem collateral from the vault (it will be claimable after the next epoch). + * @param claimer account that needs to claim the withdrawal + * @param shares amount of the active shares to redeem + * @return withdrawnAssets amount of the collateral withdrawn + * @return mintedShares amount of the epoch withdrawal shares minted + */ + function redeem(address claimer, uint256 shares) external returns (uint256 withdrawnAssets, uint256 mintedShares); + + /** + * @notice Claim collateral from the vault. + * @param recipient account that receives the collateral + * @param epoch epoch to claim the collateral for + * @return amount amount of the collateral claimed + */ + function claim(address recipient, uint256 epoch) external returns (uint256 amount); + + /** + * @notice Claim collateral from the vault for multiple epochs. + * @param recipient account that receives the collateral + * @param epochs epochs to claim the collateral for + * @return amount amount of the collateral claimed + */ + function claimBatch(address recipient, uint256[] calldata epochs) external returns (uint256 amount); + + /** + * @notice Slash callback for burning collateral. + * @param amount amount to slash + * @param captureTimestamp time point when the stake was captured + * @return slashedAmount real amount of the collateral slashed + * @dev Only the slasher can call this function. + */ + function onSlash(uint256 amount, uint48 captureTimestamp) external returns (uint256 slashedAmount); + + /** + * @notice Enable/disable deposit whitelist. + * @param status if enabling deposit whitelist + * @dev Only a DEPOSIT_WHITELIST_SET_ROLE holder can call this function. + */ + function setDepositWhitelist( + bool status + ) external; + + /** + * @notice Set a depositor whitelist status. + * @param account account for which the whitelist status is set + * @param status if whitelisting the account + * @dev Only a DEPOSITOR_WHITELIST_ROLE holder can call this function. + */ + function setDepositorWhitelistStatus(address account, bool status) external; + + /** + * @notice Enable/disable deposit limit. + * @param status if enabling deposit limit + * @dev Only a IS_DEPOSIT_LIMIT_SET_ROLE holder can call this function. + */ + function setIsDepositLimit( + bool status + ) external; + + /** + * @notice Set a deposit limit. + * @param limit deposit limit (maximum amount of the collateral that can be in the vault simultaneously) + * @dev Only a DEPOSIT_LIMIT_SET_ROLE holder can call this function. + */ + function setDepositLimit( + uint256 limit + ) external; + + /** + * @notice Set an epoch duration (can be only greater than the current one). + * @param epochDuration_ epoch duration + * @param epochDurationSetEpochsDelay_ delay for the epoch duration set in epochs + * @dev Only a EPOCH_DURATION_SET_ROLE holder can call this function. + * Can be accepted after `epochDurationSetEpochsDelay` epochs. + */ + function setEpochDuration(uint48 epochDuration_, uint256 epochDurationSetEpochsDelay_) external; + + /** + * @notice Set a flash loan enabled status. + * @param status if enabled flash loan + * @dev Only a FLASH_LOAN_ENABLED_SET_ROLE holder can call this function. + */ + function setFlashloanEnabled( + bool status + ) external; + + /** + * @notice Set a flash fee rate (100% = 1_000_000_000; 0.03% = 300_000). + * @param flashFeeRate_ flash fee rate + * @dev Only a FLASH_FEE_RATE_SET_ROLE holder can call this function. + */ + function setFlashFeeRate( + uint256 flashFeeRate_ + ) external; + + /** + * @notice Set a flash fee receiver. + * @param flashFeeReceiver_ flash fee receiver + * @dev Only a FLASH_FEE_RECEIVER_SET_ROLE holder can call this function. + */ + function setFlashFeeReceiver( + address flashFeeReceiver_ + ) external; + + /** + * @notice Set a delegator. + * @param delegator vault's delegator to delegate the stake to networks and operators + * @dev Can be set only once. + */ + function setDelegator( + address delegator + ) external; + + /** + * @notice Set a slasher. + * @param slasher vault's slasher to provide a slashing mechanism to networks + * @dev Can be set only once. + */ + function setSlasher( + address slasher + ) external; +} diff --git a/src/interfaces/vault/v1.1/IVaultStorage.sol b/src/interfaces/vault/v1.1/IVaultStorage.sol new file mode 100644 index 00000000..f4da1ed4 --- /dev/null +++ b/src/interfaces/vault/v1.1/IVaultStorage.sol @@ -0,0 +1,179 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +interface IVaultStorage { + /** + * @notice Get a deposit whitelist enabler/disabler's role. + * @return identifier of the whitelist enabler/disabler role + */ + function DEPOSIT_WHITELIST_SET_ROLE() external view returns (bytes32); + + /** + * @notice Get a depositor whitelist status setter's role. + * @return identifier of the depositor whitelist status setter role + */ + function DEPOSITOR_WHITELIST_ROLE() external view returns (bytes32); + + /** + * @notice Get a deposit limit enabler/disabler's role. + * @return identifier of the deposit limit enabler/disabler role + */ + function IS_DEPOSIT_LIMIT_SET_ROLE() external view returns (bytes32); + + /** + * @notice Get a deposit limit setter's role. + * @return identifier of the deposit limit setter role + */ + function DEPOSIT_LIMIT_SET_ROLE() external view returns (bytes32); + + /** + * @notice Get a epoch duration setter's role. + * @return identifier of the epoch duration setter role + */ + function EPOCH_DURATION_SET_ROLE() external view returns (bytes32); + + /** + * @notice Get a flash loan enabled setter's role. + * @return identifier of the flash loan enabled setter role + */ + function FLASH_LOAN_ENABLED_SET_ROLE() external view returns (bytes32); + + /** + * @notice Get a flash fee rate setter's role. + * @return identifier of the flash fee rate setter role + */ + function FLASH_FEE_RATE_SET_ROLE() external view returns (bytes32); + + /** + * @notice Get a flash fee receiver setter's role. + * @return identifier of the flash fee receiver setter role + */ + function FLASH_FEE_RECEIVER_SET_ROLE() external view returns (bytes32); + + /** + * @notice Get a flash fee base. + * @return flash fee base + */ + function FLASH_FEE_BASE() external view returns (uint256); + + /** + * @notice Get a value that must be returned by the flash loan borrower. + * @return value that must be returned by the flash loan borrower + */ + function RETURN_VALUE() external view returns (bytes32); + + /** + * @notice Get a vault collateral. + * @return address of the underlying collateral + */ + function collateral() external view returns (address); + + /** + * @notice Get a burner to issue debt to (e.g., 0xdEaD or some unwrapper contract). + * @return address of the burner + */ + function burner() external view returns (address); + + /** + * @notice Get a delegator (it delegates the vault's stake to networks and operators). + * @return address of the delegator + */ + function delegator() external view returns (address); + + /** + * @notice Get if the delegator is initialized. + * @return if the delegator is initialized + */ + function isDelegatorInitialized() external view returns (bool); + + /** + * @notice Get a slasher (it provides networks a slashing mechanism). + * @return address of the slasher + */ + function slasher() external view returns (address); + + /** + * @notice Get if the slasher is initialized. + * @return if the slasher is initialized + */ + function isSlasherInitialized() external view returns (bool); + + /** + * @notice Get if the deposit whitelist is enabled. + * @return if the deposit whitelist is enabled + */ + function depositWhitelist() external view returns (bool); + + /** + * @notice Get if a given account is whitelisted as a depositor. + * @param account address to check + * @return if the account is whitelisted as a depositor + */ + function isDepositorWhitelisted( + address account + ) external view returns (bool); + + /** + * @notice Get if the deposit limit is set. + * @return if the deposit limit is set + */ + function isDepositLimit() external view returns (bool); + + /** + * @notice Get a deposit limit (maximum amount of the active stake that can be in the vault simultaneously). + * @return deposit limit + */ + function depositLimit() external view returns (uint256); + + /** + * @notice Get a total amount of the withdrawals at a given epoch. + * @param epoch epoch to get the total amount of the withdrawals at + * @return total amount of the withdrawals at the epoch + */ + function withdrawals( + uint256 epoch + ) external view returns (uint256); + + /** + * @notice Get a total number of withdrawal shares at a given epoch. + * @param epoch epoch to get the total number of withdrawal shares at + * @return total number of withdrawal shares at the epoch + */ + function withdrawalShares( + uint256 epoch + ) external view returns (uint256); + + /** + * @notice Get a number of withdrawal shares for a particular account at a given epoch (zero if claimed). + * @param epoch epoch to get the number of withdrawal shares for the account at + * @param account account to get the number of withdrawal shares for + * @return number of withdrawal shares for the account at the epoch + */ + function withdrawalSharesOf(uint256 epoch, address account) external view returns (uint256); + + /** + * @notice Get if the withdrawals are claimed for a particular account at a given epoch. + * @param epoch epoch to check the withdrawals for the account at + * @param account account to check the withdrawals for + * @return if the withdrawals are claimed for the account at the epoch + */ + function isWithdrawalsClaimed(uint256 epoch, address account) external view returns (bool); + + /** + * @notice Get a flash fee rate (100% = 1_000_000_000; 0.03% = 300_000). + * @return flash fee rate + */ + function flashFeeRate() external view returns (uint256); + + /** + * @notice Get a flash fee receiver. + * @return flash fee receiver + */ + function flashFeeReceiver() external view returns (address); + + /** + * @notice Get if a flash loan mechanic is enabled. + * @return if the flash loan mechanic is enabled + */ + function flashLoanEnabled() external view returns (bool); +} diff --git a/src/interfaces/vault/v1.1/IVaultTokenized.sol b/src/interfaces/vault/v1.1/IVaultTokenized.sol new file mode 100644 index 00000000..d6e49d93 --- /dev/null +++ b/src/interfaces/vault/v1.1/IVaultTokenized.sol @@ -0,0 +1,32 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {IERC20Errors} from "@openzeppelin/contracts/interfaces/draft-IERC6093.sol"; +import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol"; +import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; + +interface IVaultTokenized is IERC20, IERC20Metadata, IERC20Errors { + /** + * @notice Initial parameters needed for a tokenized vault deployment. + * @param baseParams initial parameters needed for a vault deployment (abi.encode(IVault.InitParams)) + * @param name name for the ERC20 tokenized vault + * @param symbol symbol for the ERC20 tokenized vault + */ + struct InitParamsTokenized { + bytes baseParams; + string name; + string symbol; + } + + /** + * @notice Parameters needed for a tokenized vault migration. + * @param baseParams parameters needed for a vault migration (abi.encode(IVault.MigrateParams)) + * @param name name for the ERC20 tokenized vault + * @param symbol symbol for the ERC20 tokenized vault + * @dev Migrations: 3 -> 4 + */ + struct MigrateParamsTokenized { + string name; + string symbol; + } +} diff --git a/src/interfaces/vault/v1.1/IVaultVotes.sol b/src/interfaces/vault/v1.1/IVaultVotes.sol new file mode 100644 index 00000000..7a3bc8c3 --- /dev/null +++ b/src/interfaces/vault/v1.1/IVaultVotes.sol @@ -0,0 +1,11 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {IVaultTokenized} from "./IVaultTokenized.sol"; + +import {IERC5805} from "@openzeppelin/contracts/interfaces/IERC5805.sol"; + +interface IVaultVotes is IVaultTokenized, IERC5805 { + error InvalidData(); + error SafeSupplyExceeded(); +} diff --git a/test/delegator/OperatorNetworkSpecificDelegator.t.sol b/test/delegator/OperatorNetworkSpecificDelegator.t.sol index df01c197..6e940709 100644 --- a/test/delegator/OperatorNetworkSpecificDelegator.t.sol +++ b/test/delegator/OperatorNetworkSpecificDelegator.t.sol @@ -718,17 +718,13 @@ contract OperatorNetworkSpecificDelegatorTest is Test { uint256 HOOK_GAS_LIMIT = delegator.HOOK_GAS_LIMIT(); vm.expectRevert(IBaseDelegator.InsufficientHookGas.selector); address(slasher).call{gas: HOOK_GAS_LIMIT}( - abi.encodeWithSelector( - ISlasher.slash.selector, network.subnetwork(0), alice, slashAmount1, uint48(blockTimestamp - 1), "" - ) + abi.encodeCall(ISlasher.slash, (network.subnetwork(0), alice, slashAmount1, uint48(blockTimestamp - 1), "")) ); vm.stopPrank(); vm.startPrank(alice); (bool success,) = address(slasher).call{gas: totalGas}( - abi.encodeWithSelector( - ISlasher.slash.selector, network.subnetwork(0), alice, slashAmount1, uint48(blockTimestamp - 1), "" - ) + abi.encodeCall(ISlasher.slash, (network.subnetwork(0), alice, slashAmount1, uint48(blockTimestamp - 1), "")) ); vm.stopPrank(); diff --git a/test/delegator/OperatorSpecificDelegator.t.sol b/test/delegator/OperatorSpecificDelegator.t.sol index ea2af142..05556d53 100644 --- a/test/delegator/OperatorSpecificDelegator.t.sol +++ b/test/delegator/OperatorSpecificDelegator.t.sol @@ -889,17 +889,13 @@ contract OperatorSpecificDelegatorTest is Test { uint256 HOOK_GAS_LIMIT = delegator.HOOK_GAS_LIMIT(); vm.expectRevert(IBaseDelegator.InsufficientHookGas.selector); address(slasher).call{gas: HOOK_GAS_LIMIT}( - abi.encodeWithSelector( - ISlasher.slash.selector, network.subnetwork(0), alice, slashAmount1, uint48(blockTimestamp - 1), "" - ) + abi.encodeCall(ISlasher.slash, (network.subnetwork(0), alice, slashAmount1, uint48(blockTimestamp - 1), "")) ); vm.stopPrank(); vm.startPrank(alice); (bool success,) = address(slasher).call{gas: totalGas}( - abi.encodeWithSelector( - ISlasher.slash.selector, network.subnetwork(0), alice, slashAmount1, uint48(blockTimestamp - 1), "" - ) + abi.encodeCall(ISlasher.slash, (network.subnetwork(0), alice, slashAmount1, uint48(blockTimestamp - 1), "")) ); vm.stopPrank(); diff --git a/test/mocks/ERC3156FlashBorrower.sol b/test/mocks/ERC3156FlashBorrower.sol new file mode 100644 index 00000000..40537b6f --- /dev/null +++ b/test/mocks/ERC3156FlashBorrower.sol @@ -0,0 +1,48 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {IVault} from "../../src/interfaces/vault/v1.1/IVault.sol"; + +import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; +import {IERC3156FlashBorrower} from "@openzeppelin/contracts/interfaces/IERC3156FlashBorrower.sol"; +import {IERC3156FlashLender} from "@openzeppelin/contracts/interfaces/IERC3156FlashLender.sol"; + +contract ERC3156FlashBorrower is IERC3156FlashBorrower { + using SafeERC20 for IERC20; + + address public immutable VAULT; + bytes32 public RETURN_VALUE; + + constructor( + address vault + ) { + VAULT = vault; + } + + function run(uint256 amount, bytes32 returnValue, bytes calldata data) external { + RETURN_VALUE = returnValue; + IERC3156FlashLender(VAULT).flashLoan( + IERC3156FlashBorrower(address(this)), IVault(VAULT).collateral(), amount, data + ); + } + + function onFlashLoan( + address, /* initiator */ + address token, + uint256 amount, + uint256 fee, + bytes calldata data + ) external returns (bytes32) { + (bool flag1, bool flag2) = abi.decode(data, (bool, bool)); + if (flag1) { + IERC20(token).approve(msg.sender, amount + fee); + + if (flag2) { + IERC20(token).safeTransfer(msg.sender, 2); + } + } + + return RETURN_VALUE; + } +} diff --git a/test/mocks/SimpleMigratableEntity.sol b/test/mocks/SimpleMigratableEntity.sol index 84e93fb4..c76f33d6 100644 --- a/test/mocks/SimpleMigratableEntity.sol +++ b/test/mocks/SimpleMigratableEntity.sol @@ -16,7 +16,7 @@ contract SimpleMigratableEntity is MigratableEntity { a = _a; } - function _migrate(uint64, /* oldVersion */ uint64, /* newVersion */ bytes calldata /* data */ ) internal override { + function _migrate(uint64, /* oldVersion */ uint64, /* newVersion */ bytes memory /* data */ ) internal override { revert(); } } diff --git a/test/mocks/SimpleMigratableEntityV2.sol b/test/mocks/SimpleMigratableEntityV2.sol index 7852088a..bbb61b0a 100644 --- a/test/mocks/SimpleMigratableEntityV2.sol +++ b/test/mocks/SimpleMigratableEntityV2.sol @@ -23,7 +23,7 @@ contract SimpleMigratableEntityV2 is MigratableEntity { b = b_; } - function _migrate(uint64 oldVersion, uint64 newVersion, bytes calldata data) internal override { + function _migrate(uint64 oldVersion, uint64 newVersion, bytes memory data) internal override { if (newVersion - oldVersion > 1) { revert(); } diff --git a/test/mocks/Token.sol b/test/mocks/Token.sol index 7304716e..facb3f24 100644 --- a/test/mocks/Token.sol +++ b/test/mocks/Token.sol @@ -9,4 +9,8 @@ contract Token is ERC20 { ) ERC20(name_, "") { _mint(msg.sender, 1_000_000 * 10 ** decimals()); } + + function mint(address to, uint256 amount) external { + _mint(to, amount); + } } diff --git a/test/vault/v1.1/Vault.t.sol b/test/vault/v1.1/Vault.t.sol new file mode 100644 index 00000000..75627174 --- /dev/null +++ b/test/vault/v1.1/Vault.t.sol @@ -0,0 +1,5267 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.25; + +import {Test, console2} from "forge-std/Test.sol"; + +import {VaultFactory} from "../../../src/contracts/VaultFactory.sol"; +import {DelegatorFactory} from "../../../src/contracts/DelegatorFactory.sol"; +import {SlasherFactory} from "../../../src/contracts/SlasherFactory.sol"; +import {NetworkRegistry} from "../../../src/contracts/NetworkRegistry.sol"; +import {OperatorRegistry} from "../../../src/contracts/OperatorRegistry.sol"; +import {MetadataService} from "../../../src/contracts/service/MetadataService.sol"; +import {NetworkMiddlewareService} from "../../../src/contracts/service/NetworkMiddlewareService.sol"; +import {OptInService} from "../../../src/contracts/service/OptInService.sol"; + +import {Vault as VaultV1} from "../../../src/contracts/vault/Vault.sol"; +import {IVaultTokenized as IVaultTokenizedV1} from "../../../src/interfaces/vault/IVaultTokenized.sol"; +import {IVault as IVaultV1} from "../../../src/interfaces/vault/IVault.sol"; +import {VaultTokenized as VaultTokenizedV1} from "../../../src/contracts/vault/VaultTokenized.sol"; +import {Vault} from "../../../src/contracts/vault/v1.1/Vault.sol"; +import {VaultImplementation} from "../../../src/contracts/vault/v1.1/VaultImplementation.sol"; +import {NetworkRestakeDelegator} from "../../../src/contracts/delegator/NetworkRestakeDelegator.sol"; +import {FullRestakeDelegator} from "../../../src/contracts/delegator/FullRestakeDelegator.sol"; +import {OperatorSpecificDelegator} from "../../../src/contracts/delegator/OperatorSpecificDelegator.sol"; +import {OperatorNetworkSpecificDelegator} from "../../../src/contracts/delegator/OperatorNetworkSpecificDelegator.sol"; +import {Slasher} from "../../../src/contracts/slasher/Slasher.sol"; +import {VetoSlasher} from "../../../src/contracts/slasher/VetoSlasher.sol"; + +import {IVault} from "../../../src/interfaces/vault/v1.1/IVault.sol"; + +import {Token} from "../../mocks/Token.sol"; +import {FeeOnTransferToken} from "../../mocks/FeeOnTransferToken.sol"; +import {VaultConfigurator} from "../../../src/contracts/VaultConfigurator.sol"; +import {IVaultConfigurator} from "../../../src/interfaces/IVaultConfigurator.sol"; +import {INetworkRestakeDelegator} from "../../../src/interfaces/delegator/INetworkRestakeDelegator.sol"; +import {IFullRestakeDelegator} from "../../../src/interfaces/delegator/IFullRestakeDelegator.sol"; +import {IBaseDelegator} from "../../../src/interfaces/delegator/IBaseDelegator.sol"; +import {ISlasher} from "../../../src/interfaces/slasher/ISlasher.sol"; +import {IBaseSlasher} from "../../../src/interfaces/slasher/IBaseSlasher.sol"; + +import {IVaultStorage} from "../../../src/interfaces/vault/v1.1/IVaultStorage.sol"; +import {Math} from "@openzeppelin/contracts/utils/math/Math.sol"; + +import {VaultHints} from "../../../src/contracts/hints/VaultHints.sol"; +import {Subnetwork} from "../../../src/contracts/libraries/Subnetwork.sol"; + +import {ERC3156FlashBorrower} from "../../mocks/ERC3156FlashBorrower.sol"; +import {IERC3156FlashBorrower} from "@openzeppelin/contracts/interfaces/IERC3156FlashBorrower.sol"; + +contract VaultTest is Test { + using Math for uint256; + using Subnetwork for bytes32; + using Subnetwork for address; + + address owner; + address alice; + uint256 alicePrivateKey; + address bob; + uint256 bobPrivateKey; + + VaultFactory vaultFactory; + DelegatorFactory delegatorFactory; + SlasherFactory slasherFactory; + NetworkRegistry networkRegistry; + OperatorRegistry operatorRegistry; + MetadataService operatorMetadataService; + MetadataService networkMetadataService; + NetworkMiddlewareService networkMiddlewareService; + OptInService operatorVaultOptInService; + OptInService operatorNetworkOptInService; + + Token collateral; + FeeOnTransferToken feeOnTransferCollateral; + VaultConfigurator vaultConfigurator; + + VaultImplementation vault; + FullRestakeDelegator delegator; + Slasher slasher; + + function setUp() public { + owner = address(this); + (alice, alicePrivateKey) = makeAddrAndKey("alice"); + (bob, bobPrivateKey) = makeAddrAndKey("bob"); + + vaultFactory = new VaultFactory(owner); + delegatorFactory = new DelegatorFactory(owner); + slasherFactory = new SlasherFactory(owner); + networkRegistry = new NetworkRegistry(); + operatorRegistry = new OperatorRegistry(); + operatorMetadataService = new MetadataService(address(operatorRegistry)); + networkMetadataService = new MetadataService(address(networkRegistry)); + networkMiddlewareService = new NetworkMiddlewareService(address(networkRegistry)); + operatorVaultOptInService = + new OptInService(address(operatorRegistry), address(vaultFactory), "OperatorVaultOptInService"); + operatorNetworkOptInService = + new OptInService(address(operatorRegistry), address(networkRegistry), "OperatorNetworkOptInService"); + + address vaultV1Impl = + address(new VaultV1(address(delegatorFactory), address(slasherFactory), address(vaultFactory))); + vaultFactory.whitelist(vaultV1Impl); + + address vaultTokenizedV1Impl = + address(new VaultTokenizedV1(address(delegatorFactory), address(slasherFactory), address(vaultFactory))); + vaultFactory.whitelist(vaultTokenizedV1Impl); + + address vaultImplementation = + address(new VaultImplementation(address(delegatorFactory), address(slasherFactory))); + address vaultImpl = address(new Vault(address(vaultFactory), vaultImplementation)); + vaultFactory.whitelist(vaultImpl); + + address networkRestakeDelegatorImpl = address( + new NetworkRestakeDelegator( + address(networkRegistry), + address(vaultFactory), + address(operatorVaultOptInService), + address(operatorNetworkOptInService), + address(delegatorFactory), + delegatorFactory.totalTypes() + ) + ); + delegatorFactory.whitelist(networkRestakeDelegatorImpl); + + address fullRestakeDelegatorImpl = address( + new FullRestakeDelegator( + address(networkRegistry), + address(vaultFactory), + address(operatorVaultOptInService), + address(operatorNetworkOptInService), + address(delegatorFactory), + delegatorFactory.totalTypes() + ) + ); + delegatorFactory.whitelist(fullRestakeDelegatorImpl); + + address operatorSpecificDelegatorImpl = address( + new OperatorSpecificDelegator( + address(operatorRegistry), + address(networkRegistry), + address(vaultFactory), + address(operatorVaultOptInService), + address(operatorNetworkOptInService), + address(delegatorFactory), + delegatorFactory.totalTypes() + ) + ); + delegatorFactory.whitelist(operatorSpecificDelegatorImpl); + + address operatorNetworkSpecificDelegatorImpl = address( + new OperatorNetworkSpecificDelegator( + address(operatorRegistry), + address(networkRegistry), + address(vaultFactory), + address(operatorVaultOptInService), + address(operatorNetworkOptInService), + address(delegatorFactory), + delegatorFactory.totalTypes() + ) + ); + delegatorFactory.whitelist(operatorNetworkSpecificDelegatorImpl); + + address slasherImpl = address( + new Slasher( + address(vaultFactory), + address(networkMiddlewareService), + address(slasherFactory), + slasherFactory.totalTypes() + ) + ); + slasherFactory.whitelist(slasherImpl); + + address vetoSlasherImpl = address( + new VetoSlasher( + address(vaultFactory), + address(networkMiddlewareService), + address(networkRegistry), + address(slasherFactory), + slasherFactory.totalTypes() + ) + ); + slasherFactory.whitelist(vetoSlasherImpl); + + collateral = new Token("Token"); + feeOnTransferCollateral = new FeeOnTransferToken("FeeOnTransferToken"); + + vaultConfigurator = + new VaultConfigurator(address(vaultFactory), address(delegatorFactory), address(slasherFactory)); + } + + function test_Create2( + address burner, + uint48 epochDuration, + bool depositWhitelist, + bool isDepositLimit, + uint256 depositLimit, + uint256 flashFeeRate, + uint256 epochDurationSetEpochsDelay + ) public { + epochDuration = uint48(bound(epochDuration, 1, 50 weeks)); + epochDurationSetEpochsDelay = uint256(bound(epochDurationSetEpochsDelay, 3, 100)); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + address[] memory networkLimitSetRoleHolders = new address[](1); + networkLimitSetRoleHolders[0] = alice; + address[] memory operatorNetworkSharesSetRoleHolders = new address[](1); + operatorNetworkSharesSetRoleHolders[0] = alice; + (address vault_, address delegator_,) = vaultConfigurator.create( + IVaultConfigurator.InitParams({ + version: 3, + owner: address(0), + vaultParams: abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: burner, + epochDuration: epochDuration, + depositWhitelist: depositWhitelist, + isDepositLimit: isDepositLimit, + depositLimit: depositLimit, + epochDurationSetEpochsDelay: epochDurationSetEpochsDelay, + flashLoanEnabled: false, + flashFeeRate: flashFeeRate, + flashFeeReceiver: alice, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ), + delegatorIndex: 0, + delegatorParams: abi.encode( + INetworkRestakeDelegator.InitParams({ + baseParams: IBaseDelegator.BaseParams({ + defaultAdminRoleHolder: alice, + hook: address(0), + hookSetRoleHolder: alice + }), + networkLimitSetRoleHolders: networkLimitSetRoleHolders, + operatorNetworkSharesSetRoleHolders: operatorNetworkSharesSetRoleHolders + }) + ), + withSlasher: false, + slasherIndex: 0, + slasherParams: abi.encode(ISlasher.InitParams({baseParams: IBaseSlasher.BaseParams({isBurnerHook: false})})) + }) + ); + + vault = VaultImplementation(vault_); + + assertEq(vault.DEPOSIT_WHITELIST_SET_ROLE(), keccak256("DEPOSIT_WHITELIST_SET_ROLE")); + assertEq(vault.DEPOSITOR_WHITELIST_ROLE(), keccak256("DEPOSITOR_WHITELIST_ROLE")); + assertEq(vault.DELEGATOR_FACTORY(), address(delegatorFactory)); + assertEq(vault.SLASHER_FACTORY(), address(slasherFactory)); + assertEq(vault.FLASH_FEE_BASE(), 1e9); + assertEq(vault.RETURN_VALUE(), keccak256("ERC3156FlashBorrower.onFlashLoan")); + assertEq(vault.EPOCH_DURATION_SET_ROLE(), keccak256("EPOCH_DURATION_SET_ROLE")); + assertEq(vault.FLASH_FEE_RATE_SET_ROLE(), keccak256("FLASH_FEE_RATE_SET_ROLE")); + assertEq(vault.FLASH_FEE_RECEIVER_SET_ROLE(), keccak256("FLASH_FEE_RECEIVER_SET_ROLE")); + assertEq(vault.DEPOSIT_LIMIT_SET_ROLE(), keccak256("DEPOSIT_LIMIT_SET_ROLE")); + assertEq(vault.IS_DEPOSIT_LIMIT_SET_ROLE(), keccak256("IS_DEPOSIT_LIMIT_SET_ROLE")); + + assertEq(Vault(payable(address(vault))).owner(), address(0)); + assertEq(vault.collateral(), address(collateral)); + assertEq(vault.delegator(), delegator_); + assertEq(vault.slasher(), address(0)); + assertEq(vault.burner(), burner); + assertEq(vault.epochDuration(), epochDuration); + assertEq(vault.depositWhitelist(), depositWhitelist); + + assertEq(VaultImplementation(payable(address(vault))).hasRole(bytes32(uint256(1)), alice), false); + assertEq( + VaultImplementation(payable(address(vault))).hasRole( + VaultImplementation(payable(address(vault))).DEFAULT_ADMIN_ROLE(), alice + ), + true + ); + assertEq( + VaultImplementation(payable(address(vault))).hasRole( + VaultImplementation(payable(address(vault))).DEPOSIT_WHITELIST_SET_ROLE(), alice + ), + true + ); + assertEq( + VaultImplementation(payable(address(vault))).hasRole( + VaultImplementation(payable(address(vault))).DEPOSITOR_WHITELIST_ROLE(), alice + ), + true + ); + assertEq( + VaultImplementation(payable(address(vault))).hasRole( + VaultImplementation(payable(address(vault))).IS_DEPOSIT_LIMIT_SET_ROLE(), alice + ), + true + ); + assertEq( + VaultImplementation(payable(address(vault))).hasRole( + VaultImplementation(payable(address(vault))).DEPOSIT_LIMIT_SET_ROLE(), alice + ), + true + ); + assertEq( + VaultImplementation(payable(address(vault))).hasRole( + VaultImplementation(payable(address(vault))).EPOCH_DURATION_SET_ROLE(), alice + ), + true + ); + assertEq( + VaultImplementation(payable(address(vault))).hasRole( + VaultImplementation(payable(address(vault))).FLASH_LOAN_ENABLED_SET_ROLE(), alice + ), + true + ); + assertEq( + VaultImplementation(payable(address(vault))).hasRole( + VaultImplementation(payable(address(vault))).FLASH_FEE_RATE_SET_ROLE(), alice + ), + true + ); + assertEq( + VaultImplementation(payable(address(vault))).hasRole( + VaultImplementation(payable(address(vault))).FLASH_FEE_RECEIVER_SET_ROLE(), alice + ), + true + ); + + assertEq(vault.epochDurationInit(), blockTimestamp); + assertEq(vault.epochDuration(), epochDuration); + vm.expectRevert(IVault.InvalidTimestamp.selector); + assertEq(vault.epochAt(0), 0); + assertEq(vault.epochAt(uint48(blockTimestamp)), 0); + assertEq(vault.currentEpoch(), 0); + assertEq(vault.currentEpochStart(), blockTimestamp); + vm.expectRevert(IVault.NoPreviousEpoch.selector); + vault.previousEpochStart(); + assertEq(vault.nextEpochStart(), blockTimestamp + epochDuration); + assertEq(vault.totalStake(), 0); + assertEq(vault.activeSharesAt(uint48(blockTimestamp), ""), 0); + assertEq(vault.activeShares(), 0); + assertEq(vault.activeStakeAt(uint48(blockTimestamp), ""), 0); + assertEq(vault.activeStake(), 0); + assertEq(vault.activeSharesOfAt(alice, uint48(blockTimestamp), ""), 0); + assertEq(vault.activeSharesOf(alice), 0); + assertEq(vault.activeBalanceOfAt(alice, uint48(blockTimestamp), ""), 0); + assertEq(vault.activeBalanceOf(alice), 0); + assertEq(vault.withdrawals(0), 0); + assertEq(vault.withdrawalShares(0), 0); + assertEq(vault.isWithdrawalsClaimed(0, alice), false); + assertEq(vault.depositWhitelist(), depositWhitelist); + assertEq(vault.isDepositorWhitelisted(alice), false); + assertEq(vault.slashableBalanceOf(alice), 0); + assertEq(vault.isDelegatorInitialized(), true); + assertEq(vault.isSlasherInitialized(), true); + assertEq(vault.isInitialized(), true); + assertEq(vault.isDepositLimit(), isDepositLimit); + assertEq(vault.depositLimit(), depositLimit); + assertEq(vault.flashLoanEnabled(), false); + assertEq(vault.flashFeeRate(), flashFeeRate); + assertEq(vault.flashFeeReceiver(), alice); + assertEq(vault.epochDurationSetEpochsDelay(), epochDurationSetEpochsDelay); + // assertEq(vault._epochDurationSetEpochsDelay(), epochDurationSetEpochsDelay); + // assertEq(vault._nextEpochDurationSetEpochsDelay(), 0); + // assertEq(vault._epochDurationInitIndex(), 0); + // assertEq(vault._prevEpochDurationInit(), 0); + // assertEq(vault._prevEpochDuration(), 0); + // assertEq(vault._nextEpochDurationInit(), 0); + // assertEq(vault._nextEpochDuration(), 0); + + blockTimestamp = blockTimestamp + vault.epochDuration() - 1; + vm.warp(blockTimestamp); + + assertEq(vault.epochAt(uint48(blockTimestamp)), 0); + assertEq(vault.epochAt(uint48(blockTimestamp + 1)), 1); + assertEq(vault.currentEpoch(), 0); + assertEq(vault.currentEpochStart(), blockTimestamp - (vault.epochDuration() - 1)); + vm.expectRevert(IVault.NoPreviousEpoch.selector); + vault.previousEpochStart(); + assertEq(vault.nextEpochStart(), blockTimestamp + 1); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + assertEq(vault.epochAt(uint48(blockTimestamp)), 1); + assertEq(vault.epochAt(uint48(blockTimestamp + 2 * vault.epochDuration())), 3); + assertEq(vault.currentEpoch(), 1); + assertEq(vault.currentEpochStart(), blockTimestamp); + assertEq(vault.previousEpochStart(), blockTimestamp - vault.epochDuration()); + assertEq(vault.nextEpochStart(), blockTimestamp + vault.epochDuration()); + + blockTimestamp = blockTimestamp + vault.epochDuration() - 1; + vm.warp(blockTimestamp); + + assertEq(vault.epochAt(uint48(blockTimestamp)), 1); + assertEq(vault.epochAt(uint48(blockTimestamp + 1)), 2); + assertEq(vault.currentEpoch(), 1); + assertEq(vault.currentEpochStart(), blockTimestamp - (vault.epochDuration() - 1)); + assertEq(vault.previousEpochStart(), blockTimestamp - (vault.epochDuration() - 1) - vault.epochDuration()); + assertEq(vault.nextEpochStart(), blockTimestamp + 1); + + assertEq(vault.maxFlashLoan(address(collateral)), 0); + assertEq(vault.flashFee(address(collateral), 100), flashFeeRate.mulDiv(100, 10 ** 9, Math.Rounding.Ceil)); + } + + function test_CreateRevertInvalidEpochDuration() public { + uint48 epochDuration = 0; + + address[] memory networkLimitSetRoleHolders = new address[](1); + networkLimitSetRoleHolders[0] = alice; + address[] memory operatorNetworkSharesSetRoleHolders = new address[](1); + operatorNetworkSharesSetRoleHolders[0] = alice; + uint64 lastVersion = vaultFactory.lastVersion(); + vm.expectRevert(IVault.InvalidEpochDuration.selector); + vaultConfigurator.create( + IVaultConfigurator.InitParams({ + version: lastVersion, + owner: alice, + vaultParams: abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: epochDuration, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 0, + flashFeeReceiver: address(0), + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ), + delegatorIndex: 0, + delegatorParams: abi.encode( + INetworkRestakeDelegator.InitParams({ + baseParams: IBaseDelegator.BaseParams({ + defaultAdminRoleHolder: alice, + hook: address(0), + hookSetRoleHolder: alice + }), + networkLimitSetRoleHolders: networkLimitSetRoleHolders, + operatorNetworkSharesSetRoleHolders: operatorNetworkSharesSetRoleHolders + }) + ), + withSlasher: false, + slasherIndex: 0, + slasherParams: abi.encode(ISlasher.InitParams({baseParams: IBaseSlasher.BaseParams({isBurnerHook: false})})) + }) + ); + } + + function test_CreateRevertInvalidCollateral( + uint48 epochDuration + ) public { + epochDuration = uint48(bound(epochDuration, 1, 50 weeks)); + + address[] memory networkLimitSetRoleHolders = new address[](1); + networkLimitSetRoleHolders[0] = alice; + address[] memory operatorNetworkSharesSetRoleHolders = new address[](1); + operatorNetworkSharesSetRoleHolders[0] = alice; + uint64 lastVersion = vaultFactory.lastVersion(); + vm.expectRevert(IVault.InvalidCollateral.selector); + vaultConfigurator.create( + IVaultConfigurator.InitParams({ + version: lastVersion, + owner: alice, + vaultParams: abi.encode( + IVault.InitParams({ + collateral: address(0), + burner: address(0xdEaD), + epochDuration: epochDuration, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 0, + flashFeeReceiver: address(0), + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ), + delegatorIndex: 0, + delegatorParams: abi.encode( + INetworkRestakeDelegator.InitParams({ + baseParams: IBaseDelegator.BaseParams({ + defaultAdminRoleHolder: alice, + hook: address(0), + hookSetRoleHolder: alice + }), + networkLimitSetRoleHolders: networkLimitSetRoleHolders, + operatorNetworkSharesSetRoleHolders: operatorNetworkSharesSetRoleHolders + }) + ), + withSlasher: false, + slasherIndex: 0, + slasherParams: abi.encode(ISlasher.InitParams({baseParams: IBaseSlasher.BaseParams({isBurnerHook: false})})) + }) + ); + } + + function test_CreateRevertMissingRoles1( + uint48 epochDuration + ) public { + epochDuration = uint48(bound(epochDuration, 1, 50 weeks)); + + uint64 lastVersion = vaultFactory.lastVersion(); + + vm.expectRevert(IVault.MissingRoles.selector); + vault = VaultImplementation( + vaultFactory.create( + lastVersion, + alice, + abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: epochDuration, + depositWhitelist: true, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 0, + flashFeeReceiver: address(0), + defaultAdminRoleHolder: address(0), + depositWhitelistSetRoleHolder: address(0), + depositorWhitelistRoleHolder: address(0), + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: address(0), + epochDurationSetRoleHolder: address(0), + flashLoanEnabledSetRoleHolder: address(0), + flashFeeRateSetRoleHolder: address(0), + flashFeeReceiverSetRoleHolder: address(0) + }) + ) + ) + ); + } + + function test_CreateRevertMissingRoles2( + uint48 epochDuration + ) public { + epochDuration = uint48(bound(epochDuration, 1, 50 weeks)); + + uint64 lastVersion = vaultFactory.lastVersion(); + + vm.expectRevert(IVault.MissingRoles.selector); + vault = VaultImplementation( + vaultFactory.create( + lastVersion, + alice, + abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: epochDuration, + depositWhitelist: false, + isDepositLimit: true, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 0, + flashFeeReceiver: address(0), + defaultAdminRoleHolder: address(0), + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: address(0), + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: address(0), + depositLimitSetRoleHolder: address(0), + epochDurationSetRoleHolder: address(0), + flashLoanEnabledSetRoleHolder: address(0), + flashFeeRateSetRoleHolder: address(0), + flashFeeReceiverSetRoleHolder: address(0) + }) + ) + ) + ); + } + + function test_CreateRevertMissingRoles3( + uint48 epochDuration + ) public { + epochDuration = uint48(bound(epochDuration, 1, 50 weeks)); + + uint64 lastVersion = vaultFactory.lastVersion(); + + vm.expectRevert(IVault.MissingRoles.selector); + vault = VaultImplementation( + vaultFactory.create( + lastVersion, + alice, + abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: epochDuration, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 0, + flashFeeReceiver: address(0), + defaultAdminRoleHolder: address(0), + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: address(0), + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: address(0), + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: address(0), + flashLoanEnabledSetRoleHolder: address(0), + flashFeeRateSetRoleHolder: address(0), + flashFeeReceiverSetRoleHolder: address(0) + }) + ) + ) + ); + } + + function test_CreateRevertMissingRoles4( + uint48 epochDuration + ) public { + epochDuration = uint48(bound(epochDuration, 1, 50 weeks)); + + uint64 lastVersion = vaultFactory.lastVersion(); + + vm.expectRevert(IVault.MissingRoles.selector); + vault = VaultImplementation( + vaultFactory.create( + lastVersion, + alice, + abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: epochDuration, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 1, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 0, + flashFeeReceiver: address(0), + defaultAdminRoleHolder: address(0), + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: address(0), + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: address(0), + depositLimitSetRoleHolder: address(0), + epochDurationSetRoleHolder: address(0), + flashLoanEnabledSetRoleHolder: address(0), + flashFeeRateSetRoleHolder: address(0), + flashFeeReceiverSetRoleHolder: address(0) + }) + ) + ) + ); + } + + function test_CreateRevertMissingRoles5( + uint48 epochDuration + ) public { + epochDuration = uint48(bound(epochDuration, 1, 50 weeks)); + + uint64 lastVersion = vaultFactory.lastVersion(); + + vm.expectRevert(IVault.MissingRoles.selector); + vault = VaultImplementation( + vaultFactory.create( + lastVersion, + alice, + abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: epochDuration, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 0, + flashFeeReceiver: address(0), + defaultAdminRoleHolder: address(0), + depositWhitelistSetRoleHolder: address(0), + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: address(0), + epochDurationSetRoleHolder: address(0), + flashLoanEnabledSetRoleHolder: address(0), + flashFeeRateSetRoleHolder: address(0), + flashFeeReceiverSetRoleHolder: address(0) + }) + ) + ) + ); + } + + function test_CreateRevertInvalidFlashParams1( + uint48 epochDuration + ) public { + epochDuration = uint48(bound(epochDuration, 1, 50 weeks)); + + uint64 lastVersion = vaultFactory.lastVersion(); + + vm.expectRevert(IVault.InvalidFlashParams.selector); + vault = VaultImplementation( + vaultFactory.create( + lastVersion, + alice, + abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: 7 days, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 0, + flashFeeReceiver: address(0), + defaultAdminRoleHolder: address(0), + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: address(0), + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: address(0) + }) + ) + ) + ); + + vm.expectRevert(IVault.InvalidFlashParams.selector); + vault = VaultImplementation( + vaultFactory.create( + lastVersion, + alice, + abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: 7 days, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 1, + flashFeeReceiver: address(0), + defaultAdminRoleHolder: address(0), + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: address(0), + flashFeeRateSetRoleHolder: address(0), + flashFeeReceiverSetRoleHolder: address(0) + }) + ) + ) + ); + + vm.expectRevert(IVault.InvalidFlashParams.selector); + vault = VaultImplementation( + vaultFactory.create( + lastVersion, + alice, + abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: 7 days, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: true, + flashFeeRate: 0, + flashFeeReceiver: alice, + defaultAdminRoleHolder: address(0), + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: address(0), + flashFeeRateSetRoleHolder: address(0), + flashFeeReceiverSetRoleHolder: address(0) + }) + ) + ) + ); + + vm.expectRevert(IVault.InvalidFlashParams.selector); + vault = VaultImplementation( + vaultFactory.create( + lastVersion, + alice, + abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: 7 days, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: true, + flashFeeRate: 0, + flashFeeReceiver: address(0), + defaultAdminRoleHolder: address(0), + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: address(0), + flashFeeRateSetRoleHolder: address(0), + flashFeeReceiverSetRoleHolder: alice + }) + ) + ) + ); + + vm.expectRevert(IVault.InvalidFlashParams.selector); + vault = VaultImplementation( + vaultFactory.create( + lastVersion, + alice, + abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: 7 days, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: true, + flashFeeRate: 0, + flashFeeReceiver: address(0), + defaultAdminRoleHolder: address(0), + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: address(0), + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: address(0) + }) + ) + ) + ); + + vm.expectRevert(IVault.InvalidFlashParams.selector); + vault = VaultImplementation( + vaultFactory.create( + lastVersion, + alice, + abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: 7 days, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: true, + flashFeeRate: 1, + flashFeeReceiver: address(0), + defaultAdminRoleHolder: address(0), + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: address(0), + flashFeeRateSetRoleHolder: address(0), + flashFeeReceiverSetRoleHolder: address(0) + }) + ) + ) + ); + } + + function test_CreateRevertInvalidEpochDurationSetEpochsDelay( + uint48 epochDuration, + uint256 epochDurationSetEpochsDelay + ) public { + epochDuration = uint48(bound(epochDuration, 1, 50 weeks)); + epochDurationSetEpochsDelay = uint256(bound(epochDurationSetEpochsDelay, 0, 2)); + + uint64 lastVersion = vaultFactory.lastVersion(); + + vm.expectRevert(IVault.InvalidEpochDurationSetEpochsDelay.selector); + vault = VaultImplementation( + vaultFactory.create( + lastVersion, + alice, + abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: epochDuration, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: epochDurationSetEpochsDelay, + flashLoanEnabled: false, + flashFeeRate: 0, + flashFeeReceiver: alice, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ) + ) + ); + } + + function test_CreateRevertNoDepositWhitelist( + uint48 epochDuration + ) public { + epochDuration = uint48(bound(epochDuration, 1, 50 weeks)); + + uint64 lastVersion = vaultFactory.lastVersion(); + + vm.expectRevert(IVault.NoDepositWhitelist.selector); + vault = VaultImplementation( + vaultFactory.create( + lastVersion, + alice, + abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: epochDuration, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 0, + flashFeeReceiver: alice, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](1), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ) + ) + ); + } + + function test_CreateRevertInvalidAccount( + uint48 epochDuration + ) public { + epochDuration = uint48(bound(epochDuration, 1, 50 weeks)); + + uint64 lastVersion = vaultFactory.lastVersion(); + + address[] memory depositorsWhitelisted = new address[](1); + depositorsWhitelisted[0] = address(0); + + vm.expectRevert(IVault.InvalidAccount.selector); + vault = VaultImplementation( + vaultFactory.create( + lastVersion, + alice, + abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: epochDuration, + depositWhitelist: true, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 0, + flashFeeReceiver: alice, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: depositorsWhitelisted, + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ) + ) + ); + } + + function test_CreateRevertAlreadySet( + uint48 epochDuration + ) public { + epochDuration = uint48(bound(epochDuration, 1, 50 weeks)); + + uint64 lastVersion = vaultFactory.lastVersion(); + + address[] memory depositorsWhitelisted = new address[](2); + depositorsWhitelisted[0] = alice; + depositorsWhitelisted[1] = alice; + + vm.expectRevert(IVault.AlreadySet.selector); + vault = VaultImplementation( + vaultFactory.create( + lastVersion, + alice, + abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: epochDuration, + depositWhitelist: true, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 0, + flashFeeReceiver: alice, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: depositorsWhitelisted, + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ) + ) + ); + } + + function test_SetDelegator() public { + uint64 lastVersion = vaultFactory.lastVersion(); + + vault = VaultImplementation( + vaultFactory.create( + lastVersion, + alice, + abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: 7 days, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 0, + flashFeeReceiver: address(0), + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ) + ) + ); + + assertEq(vault.isDelegatorInitialized(), false); + + address[] memory networkLimitSetRoleHolders = new address[](1); + networkLimitSetRoleHolders[0] = alice; + address[] memory operatorNetworkLimitSetRoleHolders = new address[](1); + operatorNetworkLimitSetRoleHolders[0] = alice; + delegator = FullRestakeDelegator( + delegatorFactory.create( + 1, + abi.encode( + address(vault), + abi.encode( + IFullRestakeDelegator.InitParams({ + baseParams: IBaseDelegator.BaseParams({ + defaultAdminRoleHolder: alice, + hook: address(0), + hookSetRoleHolder: alice + }), + networkLimitSetRoleHolders: networkLimitSetRoleHolders, + operatorNetworkLimitSetRoleHolders: operatorNetworkLimitSetRoleHolders + }) + ) + ) + ) + ); + + vault.setDelegator(address(delegator)); + + assertEq(vault.delegator(), address(delegator)); + assertEq(vault.isDelegatorInitialized(), true); + assertEq(vault.isInitialized(), false); + } + + function test_SetDelegatorRevertDelegatorAlreadyInitialized() public { + uint64 lastVersion = vaultFactory.lastVersion(); + + vault = VaultImplementation( + vaultFactory.create( + lastVersion, + alice, + abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: 7 days, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 0, + flashFeeReceiver: address(0), + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ) + ) + ); + + address[] memory networkLimitSetRoleHolders = new address[](1); + networkLimitSetRoleHolders[0] = alice; + address[] memory operatorNetworkLimitSetRoleHolders = new address[](1); + operatorNetworkLimitSetRoleHolders[0] = alice; + delegator = FullRestakeDelegator( + delegatorFactory.create( + 1, + abi.encode( + address(vault), + abi.encode( + IFullRestakeDelegator.InitParams({ + baseParams: IBaseDelegator.BaseParams({ + defaultAdminRoleHolder: alice, + hook: address(0), + hookSetRoleHolder: alice + }), + networkLimitSetRoleHolders: networkLimitSetRoleHolders, + operatorNetworkLimitSetRoleHolders: operatorNetworkLimitSetRoleHolders + }) + ) + ) + ) + ); + + vault.setDelegator(address(delegator)); + + vm.expectRevert(IVault.DelegatorAlreadyInitialized.selector); + vault.setDelegator(address(delegator)); + } + + function test_SetDelegatorRevertNotDelegator() public { + uint64 lastVersion = vaultFactory.lastVersion(); + + vault = VaultImplementation( + vaultFactory.create( + lastVersion, + alice, + abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: 7 days, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 0, + flashFeeReceiver: address(0), + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ) + ) + ); + + vm.expectRevert(IVault.NotDelegator.selector); + vault.setDelegator(address(1)); + } + + function test_SetDelegatorRevertInvalidDelegator() public { + uint64 lastVersion = vaultFactory.lastVersion(); + + vault = VaultImplementation( + vaultFactory.create( + lastVersion, + alice, + abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: 7 days, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 0, + flashFeeReceiver: address(0), + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ) + ) + ); + + VaultImplementation vault2 = VaultImplementation( + vaultFactory.create( + lastVersion, + alice, + abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: 7 days, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 0, + flashFeeReceiver: address(0), + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ) + ) + ); + + address[] memory networkLimitSetRoleHolders = new address[](1); + networkLimitSetRoleHolders[0] = alice; + address[] memory operatorNetworkLimitSetRoleHolders = new address[](1); + operatorNetworkLimitSetRoleHolders[0] = alice; + delegator = FullRestakeDelegator( + delegatorFactory.create( + 1, + abi.encode( + address(vault2), + abi.encode( + IFullRestakeDelegator.InitParams({ + baseParams: IBaseDelegator.BaseParams({ + defaultAdminRoleHolder: alice, + hook: address(0), + hookSetRoleHolder: alice + }), + networkLimitSetRoleHolders: networkLimitSetRoleHolders, + operatorNetworkLimitSetRoleHolders: operatorNetworkLimitSetRoleHolders + }) + ) + ) + ) + ); + + vm.expectRevert(IVault.InvalidDelegator.selector); + vault.setDelegator(address(delegator)); + } + + function test_SetSlasher() public { + uint64 lastVersion = vaultFactory.lastVersion(); + + vault = VaultImplementation( + vaultFactory.create( + lastVersion, + alice, + abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: 7 days, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 0, + flashFeeReceiver: address(0), + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ) + ) + ); + + assertEq(vault.isSlasherInitialized(), false); + + slasher = Slasher( + slasherFactory.create( + 0, + abi.encode( + address(vault), + abi.encode(ISlasher.InitParams({baseParams: IBaseSlasher.BaseParams({isBurnerHook: false})})) + ) + ) + ); + + vault.setSlasher(address(slasher)); + + assertEq(vault.slasher(), address(slasher)); + assertEq(vault.isSlasherInitialized(), true); + assertEq(vault.isInitialized(), false); + } + + function test_SetSlasherRevertSlasherAlreadyInitialized() public { + uint64 lastVersion = vaultFactory.lastVersion(); + + vault = VaultImplementation( + vaultFactory.create( + lastVersion, + alice, + abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: 7 days, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 0, + flashFeeReceiver: address(0), + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ) + ) + ); + + slasher = Slasher( + slasherFactory.create( + 0, + abi.encode( + address(vault), + abi.encode(ISlasher.InitParams({baseParams: IBaseSlasher.BaseParams({isBurnerHook: false})})) + ) + ) + ); + + vault.setSlasher(address(slasher)); + + vm.expectRevert(IVault.SlasherAlreadyInitialized.selector); + vault.setSlasher(address(slasher)); + } + + function test_SetSlasherRevertNotSlasher() public { + uint64 lastVersion = vaultFactory.lastVersion(); + + vault = VaultImplementation( + vaultFactory.create( + lastVersion, + alice, + abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: 7 days, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 0, + flashFeeReceiver: address(0), + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ) + ) + ); + + slasher = Slasher( + slasherFactory.create( + 0, + abi.encode( + address(vault), + abi.encode(ISlasher.InitParams({baseParams: IBaseSlasher.BaseParams({isBurnerHook: false})})) + ) + ) + ); + + vm.expectRevert(IVault.NotSlasher.selector); + vault.setSlasher(address(1)); + } + + function test_SetSlasherRevertInvalidSlasher() public { + uint64 lastVersion = vaultFactory.lastVersion(); + + vault = VaultImplementation( + vaultFactory.create( + lastVersion, + alice, + abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: 7 days, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 0, + flashFeeReceiver: address(0), + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ) + ) + ); + + VaultImplementation vault2 = VaultImplementation( + vaultFactory.create( + lastVersion, + alice, + abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: 7 days, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 0, + flashFeeReceiver: address(0), + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ) + ) + ); + + slasher = Slasher( + slasherFactory.create( + 0, + abi.encode( + address(vault2), + abi.encode(ISlasher.InitParams({baseParams: IBaseSlasher.BaseParams({isBurnerHook: false})})) + ) + ) + ); + + vm.expectRevert(IVault.InvalidSlasher.selector); + vault.setSlasher(address(slasher)); + } + + function test_SetSlasherZeroAddress() public { + uint64 lastVersion = vaultFactory.lastVersion(); + + vault = VaultImplementation( + vaultFactory.create( + lastVersion, + alice, + abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: 7 days, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 0, + flashFeeReceiver: address(0), + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ) + ) + ); + + vault.setSlasher(address(0)); + } + + function test_DepositTwice(uint256 amount1, uint256 amount2) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + amount2 = bound(amount2, 1, 100 * 10 ** 18); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + uint256 tokensBefore = collateral.balanceOf(address(vault)); + uint256 shares1 = amount1 * 10 ** 0; + { + (uint256 depositedAmount, uint256 mintedShares) = _deposit(alice, amount1); + assertEq(depositedAmount, amount1); + assertEq(mintedShares, shares1); + } + assertEq(collateral.balanceOf(address(vault)) - tokensBefore, amount1); + + assertEq(vault.totalStake(), amount1); + assertEq(vault.activeSharesAt(uint48(blockTimestamp - 1), ""), 0); + assertEq(vault.activeSharesAt(uint48(blockTimestamp), ""), shares1); + assertEq(vault.activeShares(), shares1); + assertEq(vault.activeStakeAt(uint48(blockTimestamp - 1), ""), 0); + assertEq(vault.activeStakeAt(uint48(blockTimestamp), ""), amount1); + assertEq(vault.activeStake(), amount1); + assertEq(vault.activeSharesOfAt(alice, uint48(blockTimestamp - 1), ""), 0); + assertEq(vault.activeSharesOfAt(alice, uint48(blockTimestamp), ""), shares1); + assertEq(vault.activeSharesOf(alice), shares1); + assertEq(vault.activeBalanceOfAt(alice, uint48(blockTimestamp - 1), ""), 0); + assertEq(vault.activeBalanceOfAt(alice, uint48(blockTimestamp), ""), amount1); + assertEq(vault.activeBalanceOf(alice), amount1); + assertEq(vault.slashableBalanceOf(alice), amount1); + assertEq(vault.maxFlashLoan(address(feeOnTransferCollateral)), 0); + assertEq(vault.maxFlashLoan(address(collateral)), amount1); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + uint256 shares2 = amount2 * (shares1 + 10 ** 0) / (amount1 + 1); + { + (uint256 depositedAmount, uint256 mintedShares) = _deposit(alice, amount2); + assertEq(depositedAmount, amount2); + assertEq(mintedShares, shares2); + } + + assertEq(vault.totalStake(), amount1 + amount2); + assertEq(vault.activeSharesAt(uint48(blockTimestamp - 1), ""), shares1); + assertEq(vault.activeSharesAt(uint48(blockTimestamp), ""), shares1 + shares2); + assertEq(vault.activeShares(), shares1 + shares2); + uint256 gasLeft = gasleft(); + assertEq(vault.activeSharesAt(uint48(blockTimestamp - 1), abi.encode(1)), shares1); + uint256 gasSpent = gasLeft - gasleft(); + gasLeft = gasleft(); + assertEq(vault.activeSharesAt(uint48(blockTimestamp - 1), abi.encode(0)), shares1); + assertGt(gasSpent, gasLeft - gasleft()); + gasLeft = gasleft(); + assertEq(vault.activeSharesAt(uint48(blockTimestamp), abi.encode(0)), shares1 + shares2); + gasSpent = gasLeft - gasleft(); + gasLeft = gasleft(); + assertEq(vault.activeSharesAt(uint48(blockTimestamp), abi.encode(1)), shares1 + shares2); + assertGt(gasSpent, gasLeft - gasleft()); + assertEq(vault.activeStakeAt(uint48(blockTimestamp - 1), ""), amount1); + assertEq(vault.activeStakeAt(uint48(blockTimestamp), ""), amount1 + amount2); + assertEq(vault.activeStake(), amount1 + amount2); + gasLeft = gasleft(); + assertEq(vault.activeStakeAt(uint48(blockTimestamp - 1), abi.encode(1)), amount1); + gasSpent = gasLeft - gasleft(); + gasLeft = gasleft(); + assertEq(vault.activeStakeAt(uint48(blockTimestamp - 1), abi.encode(0)), amount1); + assertGt(gasSpent, gasLeft - gasleft()); + gasLeft = gasleft(); + assertEq(vault.activeStakeAt(uint48(blockTimestamp), abi.encode(0)), amount1 + amount2); + gasSpent = gasLeft - gasleft(); + gasLeft = gasleft(); + assertEq(vault.activeStakeAt(uint48(blockTimestamp), abi.encode(1)), amount1 + amount2); + assertGt(gasSpent, gasLeft - gasleft()); + assertEq(vault.activeStakeAt(uint48(blockTimestamp - 1), ""), shares1); + assertEq(vault.activeStakeAt(uint48(blockTimestamp), ""), shares1 + shares2); + assertEq(vault.activeSharesOf(alice), shares1 + shares2); + gasLeft = gasleft(); + assertEq(vault.activeSharesOfAt(alice, uint48(blockTimestamp - 1), abi.encode(1)), shares1); + gasSpent = gasLeft - gasleft(); + gasLeft = gasleft(); + assertEq(vault.activeSharesOfAt(alice, uint48(blockTimestamp - 1), abi.encode(0)), shares1); + assertGt(gasSpent, gasLeft - gasleft()); + gasLeft = gasleft(); + assertEq(vault.activeSharesOfAt(alice, uint48(blockTimestamp), abi.encode(0)), shares1 + shares2); + gasSpent = gasLeft - gasleft(); + gasLeft = gasleft(); + assertEq(vault.activeSharesOfAt(alice, uint48(blockTimestamp), abi.encode(1)), shares1 + shares2); + assertGt(gasSpent, gasLeft - gasleft()); + assertEq(vault.activeBalanceOfAt(alice, uint48(blockTimestamp - 1), ""), amount1); + assertEq(vault.activeBalanceOfAt(alice, uint48(blockTimestamp), ""), amount1 + amount2); + assertEq(vault.activeBalanceOf(alice), amount1 + amount2); + assertEq(vault.slashableBalanceOf(alice), amount1 + amount2); + assertEq(vault.maxFlashLoan(address(feeOnTransferCollateral)), 0); + assertEq(vault.maxFlashLoan(address(collateral)), amount1 + amount2); + gasLeft = gasleft(); + assertEq( + vault.activeBalanceOfAt( + alice, + uint48(blockTimestamp - 1), + abi.encode( + IVault.ActiveBalanceOfHints({ + activeSharesOfHint: abi.encode(1), + activeStakeHint: abi.encode(1), + activeSharesHint: abi.encode(1) + }) + ) + ), + amount1 + ); + gasSpent = gasLeft - gasleft(); + gasLeft = gasleft(); + assertEq( + vault.activeBalanceOfAt( + alice, + uint48(blockTimestamp - 1), + abi.encode( + IVault.ActiveBalanceOfHints({ + activeSharesOfHint: abi.encode(0), + activeStakeHint: abi.encode(0), + activeSharesHint: abi.encode(0) + }) + ) + ), + amount1 + ); + assertGt(gasSpent, gasLeft - gasleft()); + gasLeft = gasleft(); + assertEq( + vault.activeBalanceOfAt( + alice, + uint48(blockTimestamp), + abi.encode( + IVault.ActiveBalanceOfHints({ + activeSharesOfHint: abi.encode(0), + activeStakeHint: abi.encode(0), + activeSharesHint: abi.encode(0) + }) + ) + ), + amount1 + amount2 + ); + gasSpent = gasLeft - gasleft(); + gasLeft = gasleft(); + assertEq( + vault.activeBalanceOfAt( + alice, + uint48(blockTimestamp), + abi.encode( + IVault.ActiveBalanceOfHints({ + activeSharesOfHint: abi.encode(1), + activeStakeHint: abi.encode(1), + activeSharesHint: abi.encode(1) + }) + ) + ), + amount1 + amount2 + ); + assertGt(gasSpent, gasLeft - gasleft()); + } + + function test_DepositTwiceFeeOnTransferCollateral(uint256 amount1, uint256 amount2) public { + amount1 = bound(amount1, 2, 100 * 10 ** 18); + amount2 = bound(amount2, 2, 100 * 10 ** 18); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + uint48 epochDuration = 1; + { + address[] memory networkLimitSetRoleHolders = new address[](1); + networkLimitSetRoleHolders[0] = alice; + address[] memory operatorNetworkSharesSetRoleHolders = new address[](1); + operatorNetworkSharesSetRoleHolders[0] = alice; + (address vault_,,) = vaultConfigurator.create( + IVaultConfigurator.InitParams({ + version: 3, + owner: alice, + vaultParams: abi.encode( + IVault.InitParams({ + collateral: address(feeOnTransferCollateral), + burner: address(0xdEaD), + epochDuration: epochDuration, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: true, + flashFeeRate: 0, + flashFeeReceiver: address(0), + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: address(0), + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ), + delegatorIndex: 0, + delegatorParams: abi.encode( + INetworkRestakeDelegator.InitParams({ + baseParams: IBaseDelegator.BaseParams({ + defaultAdminRoleHolder: alice, + hook: address(0), + hookSetRoleHolder: alice + }), + networkLimitSetRoleHolders: networkLimitSetRoleHolders, + operatorNetworkSharesSetRoleHolders: operatorNetworkSharesSetRoleHolders + }) + ), + withSlasher: false, + slasherIndex: 0, + slasherParams: "" + }) + ); + + vault = VaultImplementation(vault_); + } + + uint256 tokensBefore = feeOnTransferCollateral.balanceOf(address(vault)); + uint256 shares1 = (amount1 - 1) * 10 ** 0; + feeOnTransferCollateral.transfer(alice, amount1 + 1); + vm.startPrank(alice); + feeOnTransferCollateral.approve(address(vault), amount1); + { + (uint256 depositedAmount, uint256 mintedShares) = vault.deposit(alice, amount1); + assertEq(depositedAmount, amount1 - 1); + assertEq(mintedShares, shares1); + } + vm.stopPrank(); + assertEq(feeOnTransferCollateral.balanceOf(address(vault)) - tokensBefore, amount1 - 1); + + assertEq(vault.totalStake(), amount1 - 1); + assertEq(vault.activeSharesAt(uint48(blockTimestamp - 1), ""), 0); + assertEq(vault.activeSharesAt(uint48(blockTimestamp), ""), shares1); + assertEq(vault.activeShares(), shares1); + assertEq(vault.activeStakeAt(uint48(blockTimestamp - 1), ""), 0); + assertEq(vault.activeStakeAt(uint48(blockTimestamp), ""), amount1 - 1); + assertEq(vault.activeStake(), amount1 - 1); + assertEq(vault.activeSharesOfAt(alice, uint48(blockTimestamp - 1), ""), 0); + assertEq(vault.activeSharesOfAt(alice, uint48(blockTimestamp), ""), shares1); + assertEq(vault.activeSharesOf(alice), shares1); + assertEq(vault.activeBalanceOfAt(alice, uint48(blockTimestamp - 1), ""), 0); + assertEq(vault.activeBalanceOfAt(alice, uint48(blockTimestamp), ""), amount1 - 1); + assertEq(vault.activeBalanceOf(alice), amount1 - 1); + assertEq(vault.slashableBalanceOf(alice), amount1 - 1); + assertEq(vault.maxFlashLoan(address(feeOnTransferCollateral)), amount1 - 1); + assertEq(vault.maxFlashLoan(address(collateral)), 0); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + uint256 shares2 = (amount2 - 1) * (shares1 + 10 ** 0) / (amount1 - 1 + 1); + feeOnTransferCollateral.transfer(alice, amount2 + 1); + vm.startPrank(alice); + feeOnTransferCollateral.approve(address(vault), amount2); + { + (uint256 depositedAmount, uint256 mintedShares) = vault.deposit(alice, amount2); + assertEq(depositedAmount, amount2 - 1); + assertEq(mintedShares, shares2); + } + vm.stopPrank(); + + assertEq(vault.totalStake(), amount1 - 1 + amount2 - 1); + assertEq(vault.activeSharesAt(uint48(blockTimestamp - 1), ""), shares1); + assertEq(vault.activeSharesAt(uint48(blockTimestamp), ""), shares1 + shares2); + assertEq(vault.activeShares(), shares1 + shares2); + uint256 gasLeft = gasleft(); + assertEq(vault.activeSharesAt(uint48(blockTimestamp - 1), abi.encode(1)), shares1); + uint256 gasSpent = gasLeft - gasleft(); + gasLeft = gasleft(); + assertEq(vault.activeSharesAt(uint48(blockTimestamp - 1), abi.encode(0)), shares1); + assertGt(gasSpent, gasLeft - gasleft()); + gasLeft = gasleft(); + assertEq(vault.activeSharesAt(uint48(blockTimestamp), abi.encode(0)), shares1 + shares2); + gasSpent = gasLeft - gasleft(); + gasLeft = gasleft(); + assertEq(vault.activeSharesAt(uint48(blockTimestamp), abi.encode(1)), shares1 + shares2); + assertGt(gasSpent, gasLeft - gasleft()); + assertEq(vault.activeStakeAt(uint48(blockTimestamp - 1), ""), amount1 - 1); + assertEq(vault.activeStakeAt(uint48(blockTimestamp), ""), amount1 - 1 + amount2 - 1); + assertEq(vault.activeStake(), amount1 - 1 + amount2 - 1); + gasLeft = gasleft(); + assertEq(vault.activeStakeAt(uint48(blockTimestamp - 1), abi.encode(1)), amount1 - 1); + gasSpent = gasLeft - gasleft(); + gasLeft = gasleft(); + assertEq(vault.activeStakeAt(uint48(blockTimestamp - 1), abi.encode(0)), amount1 - 1); + assertGt(gasSpent, gasLeft - gasleft()); + gasLeft = gasleft(); + assertEq(vault.activeStakeAt(uint48(blockTimestamp), abi.encode(0)), amount1 - 1 + amount2 - 1); + gasSpent = gasLeft - gasleft(); + gasLeft = gasleft(); + assertEq(vault.activeStakeAt(uint48(blockTimestamp), abi.encode(1)), amount1 - 1 + amount2 - 1); + assertGt(gasSpent, gasLeft - gasleft()); + assertEq(vault.activeStakeAt(uint48(blockTimestamp - 1), ""), shares1); + assertEq(vault.activeStakeAt(uint48(blockTimestamp), ""), shares1 + shares2); + assertEq(vault.activeSharesOf(alice), shares1 + shares2); + gasLeft = gasleft(); + assertEq(vault.activeSharesOfAt(alice, uint48(blockTimestamp - 1), abi.encode(1)), shares1); + gasSpent = gasLeft - gasleft(); + gasLeft = gasleft(); + assertEq(vault.activeSharesOfAt(alice, uint48(blockTimestamp - 1), abi.encode(0)), shares1); + assertGt(gasSpent, gasLeft - gasleft()); + gasLeft = gasleft(); + assertEq(vault.activeSharesOfAt(alice, uint48(blockTimestamp), abi.encode(0)), shares1 + shares2); + gasSpent = gasLeft - gasleft(); + gasLeft = gasleft(); + assertEq(vault.activeSharesOfAt(alice, uint48(blockTimestamp), abi.encode(1)), shares1 + shares2); + assertGt(gasSpent, gasLeft - gasleft()); + assertEq(vault.activeBalanceOfAt(alice, uint48(blockTimestamp - 1), ""), amount1 - 1); + assertEq(vault.activeBalanceOfAt(alice, uint48(blockTimestamp), ""), amount1 - 1 + amount2 - 1); + assertEq(vault.activeBalanceOf(alice), amount1 - 1 + amount2 - 1); + assertEq(vault.slashableBalanceOf(alice), amount1 - 1 + amount2 - 1); + assertEq(vault.maxFlashLoan(address(feeOnTransferCollateral)), amount1 - 1 + amount2 - 1); + assertEq(vault.maxFlashLoan(address(collateral)), 0); + gasLeft = gasleft(); + assertEq( + vault.activeBalanceOfAt( + alice, + uint48(blockTimestamp - 1), + abi.encode( + IVault.ActiveBalanceOfHints({ + activeSharesOfHint: abi.encode(1), + activeStakeHint: abi.encode(1), + activeSharesHint: abi.encode(1) + }) + ) + ), + amount1 - 1 + ); + gasSpent = gasLeft - gasleft(); + gasLeft = gasleft(); + assertEq( + vault.activeBalanceOfAt( + alice, + uint48(blockTimestamp - 1), + abi.encode( + IVault.ActiveBalanceOfHints({ + activeSharesOfHint: abi.encode(0), + activeStakeHint: abi.encode(0), + activeSharesHint: abi.encode(0) + }) + ) + ), + amount1 - 1 + ); + assertGt(gasSpent, gasLeft - gasleft()); + gasLeft = gasleft(); + assertEq( + vault.activeBalanceOfAt( + alice, + uint48(blockTimestamp), + abi.encode( + IVault.ActiveBalanceOfHints({ + activeSharesOfHint: abi.encode(0), + activeStakeHint: abi.encode(0), + activeSharesHint: abi.encode(0) + }) + ) + ), + amount1 - 1 + amount2 - 1 + ); + gasSpent = gasLeft - gasleft(); + gasLeft = gasleft(); + assertEq( + vault.activeBalanceOfAt( + alice, + uint48(blockTimestamp), + abi.encode( + IVault.ActiveBalanceOfHints({ + activeSharesOfHint: abi.encode(1), + activeStakeHint: abi.encode(1), + activeSharesHint: abi.encode(1) + }) + ) + ), + amount1 - 1 + amount2 - 1 + ); + assertGt(gasSpent, gasLeft - gasleft()); + } + + function test_DepositBoth(uint256 amount1, uint256 amount2) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + amount2 = bound(amount2, 1, 100 * 10 ** 18); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + uint256 shares1 = amount1 * 10 ** 0; + { + (uint256 depositedAmount, uint256 mintedShares) = _deposit(alice, amount1); + assertEq(depositedAmount, amount1); + assertEq(mintedShares, shares1); + } + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + uint256 shares2 = amount2 * (shares1 + 10 ** 0) / (amount1 + 1); + { + (uint256 depositedAmount, uint256 mintedShares) = _deposit(bob, amount2); + assertEq(depositedAmount, amount2); + assertEq(mintedShares, shares2); + } + + assertEq(vault.totalStake(), amount1 + amount2); + assertEq(vault.activeSharesAt(uint48(blockTimestamp - 1), ""), shares1); + assertEq(vault.activeSharesAt(uint48(blockTimestamp), ""), shares1 + shares2); + assertEq(vault.activeShares(), shares1 + shares2); + assertEq(vault.activeStakeAt(uint48(blockTimestamp - 1), ""), amount1); + assertEq(vault.activeStakeAt(uint48(blockTimestamp), ""), amount1 + amount2); + assertEq(vault.activeStake(), amount1 + amount2); + assertEq(vault.activeSharesOfAt(alice, uint48(blockTimestamp - 1), ""), shares1); + assertEq(vault.activeSharesOfAt(alice, uint48(blockTimestamp), ""), shares1); + assertEq(vault.activeSharesOf(alice), shares1); + assertEq(vault.activeBalanceOfAt(alice, uint48(blockTimestamp - 1), ""), amount1); + assertEq(vault.activeBalanceOfAt(alice, uint48(blockTimestamp), ""), amount1); + assertEq(vault.activeBalanceOf(alice), amount1); + assertEq(vault.slashableBalanceOf(alice), amount1); + assertEq(vault.activeSharesOfAt(bob, uint48(blockTimestamp - 1), ""), 0); + assertEq(vault.activeSharesOfAt(bob, uint48(blockTimestamp), ""), shares2); + assertEq(vault.activeSharesOf(bob), shares2); + assertEq(vault.activeBalanceOfAt(bob, uint48(blockTimestamp - 1), ""), 0); + assertEq(vault.activeBalanceOfAt(bob, uint48(blockTimestamp), ""), amount2); + assertEq(vault.activeBalanceOf(bob), amount2); + assertEq(vault.slashableBalanceOf(bob), amount2); + } + + function test_DepositRevertInvalidOnBehalfOf( + uint256 amount1 + ) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + vm.startPrank(alice); + vm.expectRevert(IVault.InvalidOnBehalfOf.selector); + vault.deposit(address(0), amount1); + vm.stopPrank(); + } + + function test_DepositRevertInsufficientDeposit() public { + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + vm.startPrank(alice); + vm.expectRevert(IVault.InsufficientDeposit.selector); + vault.deposit(alice, 0); + vm.stopPrank(); + } + + function test_WithdrawTwice(uint256 amount1, uint256 amount2, uint256 amount3) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + amount2 = bound(amount2, 1, 100 * 10 ** 18); + amount3 = bound(amount3, 1, 100 * 10 ** 18); + vm.assume(amount1 >= amount2 + amount3); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + // uint48 epochDuration = 1; + vault = _getVault(1); + + (, uint256 shares) = _deposit(alice, amount1); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + uint256 burnedShares = amount2 * (shares + 10 ** 0) / (amount1 + 1); + uint256 mintedShares = amount2 * 10 ** 0; + (uint256 burnedShares_, uint256 mintedShares_) = _withdraw(alice, amount2); + assertEq(burnedShares_, burnedShares); + assertEq(mintedShares_, mintedShares); + + assertEq(vault.totalStake(), amount1); + assertEq(vault.activeSharesAt(uint48(blockTimestamp - 1), ""), shares); + assertEq(vault.activeSharesAt(uint48(blockTimestamp), ""), shares - burnedShares); + assertEq(vault.activeShares(), shares - burnedShares); + assertEq(vault.activeStakeAt(uint48(blockTimestamp - 1), ""), amount1); + assertEq(vault.activeStakeAt(uint48(blockTimestamp), ""), amount1 - amount2); + assertEq(vault.activeStake(), amount1 - amount2); + assertEq(vault.activeSharesOfAt(alice, uint48(blockTimestamp - 1), ""), shares); + assertEq(vault.activeSharesOfAt(alice, uint48(blockTimestamp), ""), shares - burnedShares); + assertEq(vault.activeSharesOf(alice), shares - burnedShares); + assertEq(vault.activeBalanceOfAt(alice, uint48(blockTimestamp - 1), ""), amount1); + assertEq(vault.activeBalanceOfAt(alice, uint48(blockTimestamp), ""), amount1 - amount2); + assertEq(vault.activeBalanceOf(alice), amount1 - amount2); + assertEq(vault.withdrawals(vault.currentEpoch()), 0); + assertEq(vault.withdrawals(vault.currentEpoch() + 1), amount2); + assertEq(vault.withdrawals(vault.currentEpoch() + 2), 0); + assertEq(vault.withdrawalShares(vault.currentEpoch()), 0); + assertEq(vault.withdrawalShares(vault.currentEpoch() + 1), mintedShares); + assertEq(vault.withdrawalShares(vault.currentEpoch() + 2), 0); + assertEq(vault.withdrawalSharesOf(vault.currentEpoch(), alice), 0); + assertEq(vault.withdrawalSharesOf(vault.currentEpoch() + 1, alice), mintedShares); + assertEq(vault.withdrawalSharesOf(vault.currentEpoch() + 2, alice), 0); + assertEq(vault.slashableBalanceOf(alice), amount1); + + shares -= burnedShares; + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + burnedShares = amount3 * (shares + 10 ** 0) / (amount1 - amount2 + 1); + mintedShares = amount3 * 10 ** 0; + (burnedShares_, mintedShares_) = _withdraw(alice, amount3); + assertEq(burnedShares_, burnedShares); + assertEq(mintedShares_, mintedShares); + + assertEq(vault.totalStake(), amount1); + assertEq(vault.activeSharesAt(uint48(blockTimestamp - 1), ""), shares); + assertEq(vault.activeSharesAt(uint48(blockTimestamp), ""), shares - burnedShares); + assertEq(vault.activeShares(), shares - burnedShares); + assertEq(vault.activeStakeAt(uint48(blockTimestamp - 1), ""), amount1 - amount2); + assertEq(vault.activeStakeAt(uint48(blockTimestamp), ""), amount1 - amount2 - amount3); + assertEq(vault.activeStake(), amount1 - amount2 - amount3); + assertEq(vault.activeSharesOfAt(alice, uint48(blockTimestamp - 1), ""), shares); + assertEq(vault.activeSharesOfAt(alice, uint48(blockTimestamp), ""), shares - burnedShares); + assertEq(vault.activeSharesOf(alice), shares - burnedShares); + assertEq(vault.activeBalanceOfAt(alice, uint48(blockTimestamp - 1), ""), amount1 - amount2); + assertEq(vault.activeBalanceOfAt(alice, uint48(blockTimestamp), ""), amount1 - amount2 - amount3); + assertEq(vault.activeBalanceOf(alice), amount1 - amount2 - amount3); + assertEq(vault.withdrawals(vault.currentEpoch() - 1), 0); + assertEq(vault.withdrawals(vault.currentEpoch()), amount2); + assertEq(vault.withdrawals(vault.currentEpoch() + 1), amount3); + assertEq(vault.withdrawals(vault.currentEpoch() + 2), 0); + assertEq(vault.withdrawalShares(vault.currentEpoch() - 1), 0); + assertEq(vault.withdrawalShares(vault.currentEpoch()), amount2 * 10 ** 0); + assertEq(vault.withdrawalShares(vault.currentEpoch() + 1), amount3 * 10 ** 0); + assertEq(vault.withdrawalShares(vault.currentEpoch() + 2), 0); + assertEq(vault.withdrawalSharesOf(vault.currentEpoch() - 1, alice), 0); + assertEq(vault.withdrawalSharesOf(vault.currentEpoch(), alice), amount2 * 10 ** 0); + assertEq(vault.withdrawalSharesOf(vault.currentEpoch() + 1, alice), amount3 * 10 ** 0); + assertEq(vault.withdrawalSharesOf(vault.currentEpoch() + 2, alice), 0); + assertEq(vault.slashableBalanceOf(alice), amount1); + + shares -= burnedShares; + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + assertEq(vault.totalStake(), amount1 - amount2); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + assertEq(vault.totalStake(), amount1 - amount2 - amount3); + } + + function test_WithdrawRevertInvalidClaimer( + uint256 amount1 + ) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + _deposit(alice, amount1); + + vm.expectRevert(IVault.InvalidClaimer.selector); + vm.startPrank(alice); + vault.withdraw(address(0), amount1); + vm.stopPrank(); + } + + function test_WithdrawRevertInsufficientWithdrawal( + uint256 amount1 + ) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + _deposit(alice, amount1); + + vm.expectRevert(IVault.InsufficientWithdrawal.selector); + _withdraw(alice, 0); + } + + function test_WithdrawRevertTooMuchWithdraw( + uint256 amount1 + ) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + _deposit(alice, amount1); + + vm.expectRevert(IVault.TooMuchWithdraw.selector); + _withdraw(alice, amount1 + 1); + } + + function test_RedeemTwice(uint256 amount1, uint256 amount2, uint256 amount3) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + amount2 = bound(amount2, 1, 100 * 10 ** 18); + amount3 = bound(amount3, 1, 100 * 10 ** 18); + vm.assume(amount1 >= amount2 + amount3); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + // uint48 epochDuration = 1; + vault = _getVault(1); + + (, uint256 shares) = _deposit(alice, amount1); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + uint256 withdrawnAssets2 = amount2 * (amount1 + 1) / (shares + 10 ** 0); + uint256 mintedShares = amount2 * 10 ** 0; + (uint256 withdrawnAssets_, uint256 mintedShares_) = _redeem(alice, amount2); + assertEq(withdrawnAssets_, withdrawnAssets2); + assertEq(mintedShares_, mintedShares); + + assertEq(vault.totalStake(), amount1); + assertEq(vault.activeSharesAt(uint48(blockTimestamp - 1), ""), shares); + assertEq(vault.activeSharesAt(uint48(blockTimestamp), ""), shares - amount2); + assertEq(vault.activeShares(), shares - amount2); + assertEq(vault.activeStakeAt(uint48(blockTimestamp - 1), ""), amount1); + assertEq(vault.activeStakeAt(uint48(blockTimestamp), ""), amount1 - withdrawnAssets2); + assertEq(vault.activeStake(), amount1 - withdrawnAssets2); + assertEq(vault.activeSharesOfAt(alice, uint48(blockTimestamp - 1), ""), shares); + assertEq(vault.activeSharesOfAt(alice, uint48(blockTimestamp), ""), shares - amount2); + assertEq(vault.activeSharesOf(alice), shares - amount2); + assertEq(vault.activeBalanceOfAt(alice, uint48(blockTimestamp - 1), ""), amount1); + assertEq(vault.activeBalanceOfAt(alice, uint48(blockTimestamp), ""), amount1 - withdrawnAssets2); + assertEq(vault.activeBalanceOf(alice), amount1 - withdrawnAssets2); + assertEq(vault.withdrawals(vault.currentEpoch()), 0); + assertEq(vault.withdrawals(vault.currentEpoch() + 1), withdrawnAssets2); + assertEq(vault.withdrawals(vault.currentEpoch() + 2), 0); + assertEq(vault.withdrawalShares(vault.currentEpoch()), 0); + assertEq(vault.withdrawalShares(vault.currentEpoch() + 1), mintedShares); + assertEq(vault.withdrawalShares(vault.currentEpoch() + 2), 0); + assertEq(vault.withdrawalSharesOf(vault.currentEpoch(), alice), 0); + assertEq(vault.withdrawalSharesOf(vault.currentEpoch() + 1, alice), mintedShares); + assertEq(vault.withdrawalSharesOf(vault.currentEpoch() + 2, alice), 0); + assertEq(vault.slashableBalanceOf(alice), amount1); + + shares -= amount2; + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + uint256 withdrawnAssets3 = amount3 * (amount1 - withdrawnAssets2 + 1) / (shares + 10 ** 0); + mintedShares = amount3 * 10 ** 0; + (withdrawnAssets_, mintedShares_) = _redeem(alice, amount3); + assertEq(withdrawnAssets_, withdrawnAssets3); + assertEq(mintedShares_, mintedShares); + + assertEq(vault.totalStake(), amount1); + assertEq(vault.activeSharesAt(uint48(blockTimestamp - 1), ""), shares); + assertEq(vault.activeSharesAt(uint48(blockTimestamp), ""), shares - amount3); + assertEq(vault.activeShares(), shares - amount3); + assertEq(vault.activeStakeAt(uint48(blockTimestamp - 1), ""), amount1 - withdrawnAssets2); + assertEq(vault.activeStakeAt(uint48(blockTimestamp), ""), amount1 - withdrawnAssets2 - withdrawnAssets3); + assertEq(vault.activeStake(), amount1 - withdrawnAssets2 - withdrawnAssets3); + assertEq(vault.activeSharesOfAt(alice, uint48(blockTimestamp - 1), ""), shares); + assertEq(vault.activeSharesOfAt(alice, uint48(blockTimestamp), ""), shares - amount3); + assertEq(vault.activeSharesOf(alice), shares - amount3); + assertEq(vault.activeBalanceOfAt(alice, uint48(blockTimestamp - 1), ""), amount1 - withdrawnAssets2); + assertEq( + vault.activeBalanceOfAt(alice, uint48(blockTimestamp), ""), amount1 - withdrawnAssets2 - withdrawnAssets3 + ); + assertEq(vault.activeBalanceOf(alice), amount1 - withdrawnAssets2 - withdrawnAssets3); + assertEq(vault.withdrawals(vault.currentEpoch() - 1), 0); + assertEq(vault.withdrawals(vault.currentEpoch()), withdrawnAssets2); + assertEq(vault.withdrawals(vault.currentEpoch() + 1), withdrawnAssets3); + assertEq(vault.withdrawals(vault.currentEpoch() + 2), 0); + assertEq(vault.withdrawalShares(vault.currentEpoch() - 1), 0); + assertEq(vault.withdrawalShares(vault.currentEpoch()), withdrawnAssets2 * 10 ** 0); + assertEq(vault.withdrawalShares(vault.currentEpoch() + 1), withdrawnAssets3 * 10 ** 0); + assertEq(vault.withdrawalShares(vault.currentEpoch() + 2), 0); + assertEq(vault.withdrawalSharesOf(vault.currentEpoch() - 1, alice), 0); + assertEq(vault.withdrawalSharesOf(vault.currentEpoch(), alice), withdrawnAssets2 * 10 ** 0); + assertEq(vault.withdrawalSharesOf(vault.currentEpoch() + 1, alice), withdrawnAssets3 * 10 ** 0); + assertEq(vault.withdrawalSharesOf(vault.currentEpoch() + 2, alice), 0); + assertEq(vault.slashableBalanceOf(alice), amount1); + + shares -= amount3; + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + assertEq(vault.totalStake(), amount1 - withdrawnAssets2); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + assertEq(vault.totalStake(), amount1 - withdrawnAssets2 - withdrawnAssets3); + } + + function test_RedeemRevertInvalidClaimer( + uint256 amount1 + ) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + _deposit(alice, amount1); + + vm.expectRevert(IVault.InvalidClaimer.selector); + vm.startPrank(alice); + vault.redeem(address(0), amount1); + vm.stopPrank(); + } + + function test_RedeemRevertInsufficientRedeemption( + uint256 amount1 + ) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + _deposit(alice, amount1); + + vm.expectRevert(IVault.InsufficientRedemption.selector); + _redeem(alice, 0); + } + + function test_RedeemRevertTooMuchRedeem( + uint256 amount1 + ) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + _deposit(alice, amount1); + + vm.expectRevert(IVault.TooMuchRedeem.selector); + _redeem(alice, amount1 + 1); + } + + function test_Claim(uint256 amount1, uint256 amount2) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + amount2 = bound(amount2, 1, 100 * 10 ** 18); + vm.assume(amount1 >= amount2); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + _deposit(alice, amount1); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + _withdraw(alice, amount2); + + blockTimestamp = blockTimestamp + 2; + vm.warp(blockTimestamp); + + uint256 tokensBefore = collateral.balanceOf(address(vault)); + uint256 tokensBeforeAlice = collateral.balanceOf(alice); + assertEq(_claim(alice, vault.currentEpoch() - 1), amount2); + assertEq(tokensBefore - collateral.balanceOf(address(vault)), amount2); + assertEq(collateral.balanceOf(alice) - tokensBeforeAlice, amount2); + + assertEq(vault.isWithdrawalsClaimed(vault.currentEpoch() - 1, alice), true); + } + + function test_ClaimRevertInvalidRecipient(uint256 amount1, uint256 amount2) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + amount2 = bound(amount2, 1, 100 * 10 ** 18); + vm.assume(amount1 >= amount2); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + _deposit(alice, amount1); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + _withdraw(alice, amount2); + + blockTimestamp = blockTimestamp + 2; + vm.warp(blockTimestamp); + + vm.startPrank(alice); + uint256 currentEpoch = vault.currentEpoch(); + vm.expectRevert(IVault.InvalidRecipient.selector); + vault.claim(address(0), currentEpoch - 1); + vm.stopPrank(); + } + + function test_ClaimRevertInvalidEpoch(uint256 amount1, uint256 amount2) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + amount2 = bound(amount2, 1, 100 * 10 ** 18); + vm.assume(amount1 >= amount2); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + _deposit(alice, amount1); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + _withdraw(alice, amount2); + + blockTimestamp = blockTimestamp + 2; + vm.warp(blockTimestamp); + + uint256 currentEpoch = vault.currentEpoch(); + vm.expectRevert(IVault.InvalidEpoch.selector); + _claim(alice, currentEpoch); + } + + function test_ClaimRevertAlreadyClaimed(uint256 amount1, uint256 amount2) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + amount2 = bound(amount2, 1, 100 * 10 ** 18); + vm.assume(amount1 >= amount2); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + _deposit(alice, amount1); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + _withdraw(alice, amount2); + + blockTimestamp = blockTimestamp + 2; + vm.warp(blockTimestamp); + + uint256 currentEpoch = vault.currentEpoch(); + _claim(alice, currentEpoch - 1); + + vm.expectRevert(IVault.AlreadyClaimed.selector); + _claim(alice, currentEpoch - 1); + } + + function test_ClaimRevertInsufficientClaim(uint256 amount1, uint256 amount2) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + amount2 = bound(amount2, 1, 100 * 10 ** 18); + vm.assume(amount1 >= amount2); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + _deposit(alice, amount1); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + _withdraw(alice, amount2); + + blockTimestamp = blockTimestamp + 2; + vm.warp(blockTimestamp); + + uint256 currentEpoch = vault.currentEpoch(); + vm.expectRevert(IVault.InsufficientClaim.selector); + _claim(alice, currentEpoch - 2); + } + + function test_ClaimBatch(uint256 amount1, uint256 amount2, uint256 amount3) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + amount2 = bound(amount2, 1, 100 * 10 ** 18); + amount3 = bound(amount3, 1, 100 * 10 ** 18); + vm.assume(amount1 >= amount2 + amount3); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + _deposit(alice, amount1); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + _withdraw(alice, amount2); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + _withdraw(alice, amount3); + + blockTimestamp = blockTimestamp + 2; + vm.warp(blockTimestamp); + + uint256[] memory epochs = new uint256[](2); + epochs[0] = vault.currentEpoch() - 1; + epochs[1] = vault.currentEpoch() - 2; + + uint256 tokensBefore = collateral.balanceOf(address(vault)); + uint256 tokensBeforeAlice = collateral.balanceOf(alice); + assertEq(_claimBatch(alice, epochs), amount2 + amount3); + assertEq(tokensBefore - collateral.balanceOf(address(vault)), amount2 + amount3); + assertEq(collateral.balanceOf(alice) - tokensBeforeAlice, amount2 + amount3); + + assertEq(vault.isWithdrawalsClaimed(vault.currentEpoch() - 1, alice), true); + } + + function test_ClaimBatchRevertInvalidRecipient(uint256 amount1, uint256 amount2, uint256 amount3) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + amount2 = bound(amount2, 1, 100 * 10 ** 18); + amount3 = bound(amount3, 1, 100 * 10 ** 18); + vm.assume(amount1 >= amount2 + amount3); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + _deposit(alice, amount1); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + _withdraw(alice, amount2); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + _withdraw(alice, amount3); + + blockTimestamp = blockTimestamp + 2; + vm.warp(blockTimestamp); + + uint256[] memory epochs = new uint256[](2); + epochs[0] = vault.currentEpoch() - 1; + epochs[1] = vault.currentEpoch() - 2; + + vm.expectRevert(IVault.InvalidRecipient.selector); + vm.startPrank(alice); + vault.claimBatch(address(0), epochs); + vm.stopPrank(); + } + + function test_ClaimBatchRevertInvalidLengthEpochs(uint256 amount1, uint256 amount2, uint256 amount3) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + amount2 = bound(amount2, 1, 100 * 10 ** 18); + amount3 = bound(amount3, 1, 100 * 10 ** 18); + vm.assume(amount1 >= amount2 + amount3); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + _deposit(alice, amount1); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + _withdraw(alice, amount2); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + _withdraw(alice, amount3); + + blockTimestamp = blockTimestamp + 2; + vm.warp(blockTimestamp); + + uint256[] memory epochs = new uint256[](0); + vm.expectRevert(IVault.InvalidLengthEpochs.selector); + _claimBatch(alice, epochs); + } + + function test_ClaimBatchRevertInvalidEpoch(uint256 amount1, uint256 amount2, uint256 amount3) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + amount2 = bound(amount2, 1, 100 * 10 ** 18); + amount3 = bound(amount3, 1, 100 * 10 ** 18); + vm.assume(amount1 >= amount2 + amount3); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + _deposit(alice, amount1); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + _withdraw(alice, amount2); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + _withdraw(alice, amount3); + + blockTimestamp = blockTimestamp + 2; + vm.warp(blockTimestamp); + + uint256[] memory epochs = new uint256[](2); + epochs[0] = vault.currentEpoch() - 1; + epochs[1] = vault.currentEpoch(); + + vm.expectRevert(IVault.InvalidEpoch.selector); + _claimBatch(alice, epochs); + } + + function test_ClaimBatchRevertAlreadyClaimed(uint256 amount1, uint256 amount2, uint256 amount3) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + amount2 = bound(amount2, 1, 100 * 10 ** 18); + amount3 = bound(amount3, 1, 100 * 10 ** 18); + vm.assume(amount1 >= amount2 + amount3); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + _deposit(alice, amount1); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + _withdraw(alice, amount2); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + _withdraw(alice, amount3); + + blockTimestamp = blockTimestamp + 2; + vm.warp(blockTimestamp); + + uint256[] memory epochs = new uint256[](2); + epochs[0] = vault.currentEpoch() - 1; + epochs[1] = vault.currentEpoch() - 1; + + vm.expectRevert(IVault.AlreadyClaimed.selector); + _claimBatch(alice, epochs); + } + + function test_ClaimBatchRevertInsufficientClaim(uint256 amount1, uint256 amount2, uint256 amount3) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + amount2 = bound(amount2, 1, 100 * 10 ** 18); + amount3 = bound(amount3, 1, 100 * 10 ** 18); + vm.assume(amount1 >= amount2 + amount3); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + _deposit(alice, amount1); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + _withdraw(alice, amount2); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + _withdraw(alice, amount3); + + blockTimestamp = blockTimestamp + 2; + vm.warp(blockTimestamp); + + uint256[] memory epochs = new uint256[](2); + epochs[0] = vault.currentEpoch() - 1; + epochs[1] = vault.currentEpoch() - 3; + + vm.expectRevert(IVault.InsufficientClaim.selector); + _claimBatch(alice, epochs); + } + + function test_SetDepositWhitelist() public { + uint48 epochDuration = 1; + + vault = _getVault(epochDuration); + + _grantDepositWhitelistSetRole(alice, alice); + _setDepositWhitelist(alice, true); + assertEq(vault.depositWhitelist(), true); + + _setDepositWhitelist(alice, false); + assertEq(vault.depositWhitelist(), false); + } + + function test_SetDepositWhitelistRevertNotWhitelistedDepositor() public { + uint48 epochDuration = 1; + + vault = _getVault(epochDuration); + + _deposit(alice, 1); + + _grantDepositWhitelistSetRole(alice, alice); + _setDepositWhitelist(alice, true); + + vm.startPrank(alice); + vm.expectRevert(IVault.NotWhitelistedDepositor.selector); + vault.deposit(alice, 1); + vm.stopPrank(); + } + + function test_SetDepositWhitelistRevertAlreadySet() public { + uint48 epochDuration = 1; + + vault = _getVault(epochDuration); + + _grantDepositWhitelistSetRole(alice, alice); + _setDepositWhitelist(alice, true); + + vm.expectRevert(IVault.AlreadySet.selector); + _setDepositWhitelist(alice, true); + } + + function test_SetDepositorWhitelistStatus() public { + uint48 epochDuration = 1; + + vault = _getVault(epochDuration); + + _grantDepositWhitelistSetRole(alice, alice); + _setDepositWhitelist(alice, true); + + _grantDepositorWhitelistRole(alice, alice); + + _setDepositorWhitelistStatus(alice, bob, true); + assertEq(vault.isDepositorWhitelisted(bob), true); + + _deposit(bob, 1); + + _setDepositWhitelist(alice, false); + + _deposit(bob, 1); + } + + function test_SetDepositorWhitelistStatusRevertInvalidAccount() public { + uint48 epochDuration = 1; + + vault = _getVault(epochDuration); + + _grantDepositWhitelistSetRole(alice, alice); + _setDepositWhitelist(alice, true); + + _grantDepositorWhitelistRole(alice, alice); + + vm.expectRevert(IVault.InvalidAccount.selector); + _setDepositorWhitelistStatus(alice, address(0), true); + } + + function test_SetDepositorWhitelistStatusRevertAlreadySet() public { + uint48 epochDuration = 1; + + vault = _getVault(epochDuration); + + _grantDepositWhitelistSetRole(alice, alice); + _setDepositWhitelist(alice, true); + + _grantDepositorWhitelistRole(alice, alice); + + _setDepositorWhitelistStatus(alice, bob, true); + + vm.expectRevert(IVault.AlreadySet.selector); + _setDepositorWhitelistStatus(alice, bob, true); + } + + function test_SetIsDepositLimit() public { + uint48 epochDuration = 1; + + vault = _getVault(epochDuration); + + _grantIsDepositLimitSetRole(alice, alice); + _setIsDepositLimit(alice, true); + assertEq(vault.isDepositLimit(), true); + + _setIsDepositLimit(alice, false); + assertEq(vault.isDepositLimit(), false); + } + + function test_SetIsDepositLimitRevertAlreadySet() public { + uint48 epochDuration = 1; + + vault = _getVault(epochDuration); + + _grantIsDepositLimitSetRole(alice, alice); + _setIsDepositLimit(alice, true); + + vm.expectRevert(IVault.AlreadySet.selector); + _setIsDepositLimit(alice, true); + } + + function test_SetDepositLimit(uint256 limit1, uint256 limit2, uint256 depositAmount) public { + uint48 epochDuration = 1; + + vault = _getVault(epochDuration); + + _grantIsDepositLimitSetRole(alice, alice); + _setIsDepositLimit(alice, true); + assertEq(vault.depositLimit(), 0); + + limit1 = bound(limit1, 1, type(uint256).max); + _grantDepositLimitSetRole(alice, alice); + _setDepositLimit(alice, limit1); + assertEq(vault.depositLimit(), limit1); + + limit2 = bound(limit2, 1, 1000 ether); + vm.assume(limit2 != limit1); + _setDepositLimit(alice, limit2); + assertEq(vault.depositLimit(), limit2); + + depositAmount = bound(depositAmount, 1, limit2); + _deposit(alice, depositAmount); + } + + function test_SetDepositLimitToNull( + uint256 limit1 + ) public { + uint48 epochDuration = 1; + + vault = _getVault(epochDuration); + + limit1 = bound(limit1, 1, type(uint256).max); + _grantIsDepositLimitSetRole(alice, alice); + _setIsDepositLimit(alice, true); + _grantDepositLimitSetRole(alice, alice); + _setDepositLimit(alice, limit1); + + _setIsDepositLimit(alice, false); + + _setDepositLimit(alice, 0); + + assertEq(vault.depositLimit(), 0); + } + + function test_SetDepositLimitRevertDepositLimitReached(uint256 depositAmount, uint256 limit) public { + uint48 epochDuration = 1; + + vault = _getVault(epochDuration); + + _deposit(alice, 1); + + limit = bound(limit, 2, 1000 ether); + _grantIsDepositLimitSetRole(alice, alice); + _setIsDepositLimit(alice, true); + _grantDepositLimitSetRole(alice, alice); + _setDepositLimit(alice, limit); + + depositAmount = bound(depositAmount, limit, 2000 ether); + + collateral.transfer(alice, depositAmount); + vm.startPrank(alice); + collateral.approve(address(vault), depositAmount); + vm.expectRevert(IVault.DepositLimitReached.selector); + vault.deposit(alice, depositAmount); + vm.stopPrank(); + } + + function test_SetDepositLimitRevertAlreadySet( + uint256 limit + ) public { + uint48 epochDuration = 1; + + vault = _getVault(epochDuration); + + limit = bound(limit, 1, type(uint256).max); + _grantIsDepositLimitSetRole(alice, alice); + _setIsDepositLimit(alice, true); + _grantDepositLimitSetRole(alice, alice); + _setDepositLimit(alice, limit); + + vm.expectRevert(IVault.AlreadySet.selector); + _setDepositLimit(alice, limit); + } + + function test_SetEpochDuration( + uint48 epochDuration, + uint48 newEpochDuration, + uint48 newEpochDuration2, + uint48 newEpochDuration3, + uint48 newEpochDuration4 + ) public { + epochDuration = uint48(bound(epochDuration, 3, 50 weeks)); + newEpochDuration = uint48(bound(newEpochDuration, epochDuration + 1, 60 weeks)); + newEpochDuration2 = uint48(bound(newEpochDuration2, newEpochDuration + 1, 70 weeks)); + newEpochDuration3 = uint48(bound(newEpochDuration3, newEpochDuration + 1, 70 weeks)); + newEpochDuration4 = uint48(bound(newEpochDuration4, newEpochDuration3 + 1, 80 weeks)); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + vault = _getVault(epochDuration); + + assertEq(vault.epochStart(3), blockTimestamp + 3 * epochDuration); + assertEq(vault.epochStart(3 + 1), blockTimestamp + (3 + 1) * epochDuration); + assertEq(vault.epochDurationSetEpochsDelay(), 3); + // assertEq(vault._epochDurationSetEpochsDelay(), 3); + // assertEq(vault._nextEpochDurationSetEpochsDelay(), 0); + + _grantEpochDurationSetRole(alice, alice); + vm.startPrank(alice); + vault.setEpochDuration(newEpochDuration, 5); + vm.stopPrank(); + assertEq(vault.epochDuration(), epochDuration); + assertEq(vault.epochDurationInit(), blockTimestamp); + // assertEq(vault._epochDuration(), epochDuration); + // assertEq(vault._epochDurationInit(), blockTimestamp); + // assertEq(vault._epochDurationInitIndex(), 0); + // assertEq(vault._prevEpochDurationInitIndex(), 0); + // assertEq(vault._prevEpochDuration(), 0); + // assertEq(vault._prevEpochDurationInit(), 0); + // assertEq(vault._nextEpochInitIndex(), vault.currentEpoch() + 3); + // assertEq(vault._nextEpochDurationInit(), blockTimestamp + 3 * epochDuration); + // assertEq(vault._nextEpochDuration(), newEpochDuration); + vm.expectRevert(); + vault.epochAt(uint48(blockTimestamp - 1)); + assertEq(vault.epochAt(uint48(blockTimestamp)), 0); + assertEq(vault.epochAt(uint48(blockTimestamp + epochDuration - 1)), 0); + assertEq(vault.epochAt(uint48(blockTimestamp + epochDuration)), 1); + assertEq(vault.epochStart(0), blockTimestamp); + assertEq(vault.epochStart(1), blockTimestamp + epochDuration); + assertEq(vault.epochStart(3), blockTimestamp + 3 * epochDuration); + assertEq(vault.epochStart(3 + 1), blockTimestamp + 3 * epochDuration + newEpochDuration); + assertEq(vault.epochDurationSetEpochsDelay(), 3); + // assertEq(vault._epochDurationSetEpochsDelay(), 3); + // assertEq(vault._nextEpochDurationSetEpochsDelay(), 5); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + assertEq(vault.epochDuration(), epochDuration); + assertEq(vault.epochDurationInit(), blockTimestamp - 1); + // assertEq(vault._epochDuration(), epochDuration); + // assertEq(vault._epochDurationInit(), blockTimestamp - 1); + // assertEq(vault._epochDurationInitIndex(), 0); + // assertEq(vault._prevEpochDurationInitIndex(), 0); + // assertEq(vault._prevEpochDuration(), 0); + // assertEq(vault._prevEpochDurationInit(), 0); + // assertEq(vault._nextEpochInitIndex(), vault.currentEpoch() + 3); + // assertEq(vault._nextEpochDurationInit(), blockTimestamp + 3 * epochDuration - 1); + // assertEq(vault._nextEpochDuration(), newEpochDuration); + vm.expectRevert(); + vault.epochAt(uint48(blockTimestamp - 2)); + assertEq(vault.epochAt(uint48(blockTimestamp - 1)), 0); + assertEq(vault.epochAt(uint48(blockTimestamp)), 0); + assertEq(vault.epochAt(uint48(blockTimestamp + epochDuration)), 1); + assertEq(vault.epochStart(0), blockTimestamp - 1); + assertEq(vault.epochStart(1), blockTimestamp + epochDuration - 1); + assertEq(vault.epochDurationSetEpochsDelay(), 3); + // assertEq(vault._epochDurationSetEpochsDelay(), 3); + // assertEq(vault._nextEpochDurationSetEpochsDelay(), 5); + + blockTimestamp = blockTimestamp + 3 * epochDuration - 2; + vm.warp(blockTimestamp); + + assertEq(vault.epochDuration(), epochDuration); + assertEq(vault.epochDurationInit(), blockTimestamp - 3 * epochDuration + 1); + // assertEq(vault._epochDuration(), epochDuration); + // assertEq(vault._epochDurationInit(), blockTimestamp - 3 * epochDuration + 1); + // assertEq(vault._epochDurationInitIndex(), 0); + // assertEq(vault._prevEpochDurationInitIndex(), 0); + // assertEq(vault._prevEpochDuration(), 0); + // assertEq(vault._prevEpochDurationInit(), 0); + // assertEq(vault._nextEpochInitIndex(), vault.currentEpoch() + 1); + // assertEq(vault._nextEpochDurationInit(), blockTimestamp + 1); + // assertEq(vault._nextEpochDuration(), newEpochDuration); + assertEq(vault.epochAt(uint48(blockTimestamp - 3 * epochDuration + 2)), 0); + assertEq(vault.epochAt(uint48(blockTimestamp - 1)), 3 - 1); + assertEq(vault.epochAt(uint48(blockTimestamp)), 3 - 1); + assertEq(vault.epochAt(uint48(blockTimestamp + epochDuration)), 3); + assertEq(vault.epochStart(0), blockTimestamp - 3 * epochDuration + 1); + assertEq(vault.epochStart(1), blockTimestamp - (3 - 1) * epochDuration + 1); + assertEq(vault.epochDurationSetEpochsDelay(), 3); + // assertEq(vault._epochDurationSetEpochsDelay(), 3); + // assertEq(vault._nextEpochDurationSetEpochsDelay(), 5); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + assertEq(vault.epochDuration(), newEpochDuration); + assertEq(vault.epochDurationInit(), blockTimestamp); + // assertEq(vault._epochDuration(), epochDuration); + // assertEq(vault._epochDurationInit(), blockTimestamp - 3 * epochDuration); + // assertEq(vault._epochDurationInitIndex(), 0); + // assertEq(vault._prevEpochDurationInitIndex(), 0); + // assertEq(vault._prevEpochDuration(), 0); + // assertEq(vault._prevEpochDurationInit(), 0); + // assertEq(vault._nextEpochInitIndex(), vault.currentEpoch()); + // assertEq(vault._nextEpochDurationInit(), blockTimestamp); + // assertEq(vault._nextEpochDuration(), newEpochDuration); + assertEq(vault.epochStart(0), blockTimestamp - 3 * epochDuration); + assertEq(vault.epochStart(1), blockTimestamp - (3 - 1) * epochDuration); + assertEq(vault.epochAt(uint48(blockTimestamp + epochDuration)), 3); + assertEq(vault.epochAt(uint48(blockTimestamp + newEpochDuration)), 3 + 1); + assertEq(vault.epochStart(3), blockTimestamp); + assertEq(vault.epochStart(3 + 1), blockTimestamp + newEpochDuration); + assertEq(vault.epochDurationSetEpochsDelay(), 5); + // assertEq(vault._epochDurationSetEpochsDelay(), 3); + // assertEq(vault._nextEpochDurationSetEpochsDelay(), 5); + + vm.expectRevert(IVault.InvalidTimestamp.selector); + vault.epochAt(0); + vm.expectRevert(IVault.InvalidTimestamp.selector); + vault.epochAt(uint48(blockTimestamp - 3 * epochDuration - 1)); + assertEq(vault.epochAt(uint48(blockTimestamp - 3 * epochDuration)), 0); + assertEq(vault.epochAt(uint48(blockTimestamp - 3 * epochDuration + epochDuration - 1)), 0); + assertEq(vault.epochAt(uint48(blockTimestamp - 3 * epochDuration + epochDuration)), 1); + assertEq(vault.epochAt(uint48(blockTimestamp - 3 * epochDuration + 2 * epochDuration - 1)), 1); + assertEq(vault.epochAt(uint48(blockTimestamp - 3 * epochDuration + 2 * epochDuration)), 2); + assertEq(vault.epochAt(uint48(blockTimestamp)), 3); + assertEq(vault.epochAt(uint48(blockTimestamp + newEpochDuration - 1)), 3); + assertEq(vault.epochAt(uint48(blockTimestamp + newEpochDuration)), 4); + assertEq(vault.previousEpochStart(), blockTimestamp - epochDuration); + assertEq(vault.epochDurationSetEpochsDelay(), 5); + // assertEq(vault._epochDurationSetEpochsDelay(), 3); + // assertEq(vault._nextEpochDurationSetEpochsDelay(), 5); + + _setEpochDuration(alice, newEpochDuration2); + + assertEq(vault.epochDuration(), newEpochDuration); + assertEq(vault.epochDurationInit(), blockTimestamp); + // assertEq(vault._epochDuration(), newEpochDuration); + // assertEq(vault._epochDurationInit(), blockTimestamp); + // assertEq(vault._epochDurationInitIndex(), 3); + // assertEq(vault._prevEpochDurationInitIndex(), 0); + // assertEq(vault._prevEpochDuration(), epochDuration); + // assertEq(vault._prevEpochDurationInit(), blockTimestamp - 3 * epochDuration); + // assertEq(vault._nextEpochInitIndex(), vault.currentEpoch() + 5); + // assertEq(vault._nextEpochDuration(), newEpochDuration2); + // assertEq(vault._nextEpochDurationInit(), blockTimestamp + 5 * newEpochDuration); + assertEq(vault.epochStart(0), blockTimestamp - 3 * epochDuration); + assertEq(vault.epochStart(1), blockTimestamp - (3 - 1) * epochDuration); + assertEq(vault.epochAt(uint48(blockTimestamp + epochDuration)), 3); + assertEq(vault.epochAt(uint48(blockTimestamp + newEpochDuration)), 3 + 1); + vm.expectRevert(); + vault.epochAt(uint48(blockTimestamp - 3 * epochDuration - 1)); + assertEq(vault.epochAt(uint48(blockTimestamp - 3 * epochDuration)), 0); + assertEq(vault.epochStart(3), blockTimestamp); + assertEq(vault.epochStart(3 + 5), blockTimestamp + 5 * newEpochDuration); + assertEq(vault.epochStart(3 + 5 + 1), blockTimestamp + 5 * newEpochDuration + newEpochDuration2); + assertEq(vault.epochDurationSetEpochsDelay(), 5); + // assertEq(vault._epochDurationSetEpochsDelay(), 5); + // assertEq(vault._nextEpochDurationSetEpochsDelay(), 3); + + _setEpochDuration(alice, newEpochDuration); + + assertEq(vault.epochDuration(), newEpochDuration); + assertEq(vault.epochDurationInit(), blockTimestamp); + // assertEq(vault._epochDuration(), newEpochDuration); + // assertEq(vault._epochDurationInit(), blockTimestamp); + // assertEq(vault._epochDurationInitIndex(), 3); + // assertEq(vault._prevEpochDurationInitIndex(), 0); + // assertEq(vault._prevEpochDuration(), epochDuration); + // assertEq(vault._prevEpochDurationInit(), blockTimestamp - 3 * epochDuration); + // assertEq(vault._nextEpochInitIndex(), 3 + 5); + // assertEq(vault._nextEpochDuration(), newEpochDuration); + // assertEq(vault._nextEpochDurationInit(), blockTimestamp + 5 * newEpochDuration); + assertEq(vault.epochStart(0), blockTimestamp - 3 * epochDuration); + assertEq(vault.epochStart(1), blockTimestamp - (3 - 1) * epochDuration); + assertEq(vault.epochAt(uint48(blockTimestamp + epochDuration)), 3); + assertEq(vault.epochAt(uint48(blockTimestamp + newEpochDuration)), 3 + 1); + assertEq(vault.epochDurationSetEpochsDelay(), 5); + // assertEq(vault._epochDurationSetEpochsDelay(), 5); + // assertEq(vault._nextEpochDurationSetEpochsDelay(), 3); + + _setEpochDuration(alice, newEpochDuration2); + + assertEq(vault.epochDuration(), newEpochDuration); + assertEq(vault.epochDurationInit(), blockTimestamp); + // assertEq(vault._epochDuration(), newEpochDuration); + // assertEq(vault._epochDurationInit(), blockTimestamp); + // assertEq(vault._epochDurationInitIndex(), 3); + // assertEq(vault._prevEpochDurationInitIndex(), 0); + // assertEq(vault._prevEpochDuration(), epochDuration); + // assertEq(vault._prevEpochDurationInit(), blockTimestamp - 3 * epochDuration); + // assertEq(vault._nextEpochInitIndex(), vault.currentEpoch() + 5); + // assertEq(vault._nextEpochDuration(), newEpochDuration2); + // assertEq(vault._nextEpochDurationInit(), blockTimestamp + 5 * newEpochDuration); + assertEq(vault.epochStart(0), blockTimestamp - 3 * epochDuration); + assertEq(vault.epochStart(1), blockTimestamp - (3 - 1) * epochDuration); + assertEq(vault.epochAt(uint48(blockTimestamp + epochDuration)), 3); + assertEq(vault.epochAt(uint48(blockTimestamp + newEpochDuration)), 3 + 1); + + _setEpochDuration(alice, newEpochDuration3); + + assertEq(vault.epochDuration(), newEpochDuration); + assertEq(vault.epochDurationInit(), blockTimestamp); + // assertEq(vault._epochDuration(), newEpochDuration); + // assertEq(vault._epochDurationInit(), blockTimestamp); + // assertEq(vault._epochDurationInitIndex(), 3); + // assertEq(vault._prevEpochDurationInitIndex(), 0); + // assertEq(vault._prevEpochDuration(), epochDuration); + // assertEq(vault._prevEpochDurationInit(), blockTimestamp - 3 * epochDuration); + // assertEq(vault._nextEpochInitIndex(), vault.currentEpoch() + 5); + // assertEq(vault._nextEpochDuration(), newEpochDuration3); + // assertEq(vault._nextEpochDurationInit(), blockTimestamp + 5 * newEpochDuration); + assertEq(vault.epochStart(0), blockTimestamp - 3 * epochDuration); + assertEq(vault.epochStart(1), blockTimestamp - (3 - 1) * epochDuration); + assertEq(vault.epochAt(uint48(blockTimestamp + epochDuration)), 3); + assertEq(vault.epochAt(uint48(blockTimestamp + newEpochDuration)), 3 + 1); + + blockTimestamp = blockTimestamp + newEpochDuration; + vm.warp(blockTimestamp); + + assertEq(vault.previousEpochStart(), blockTimestamp - newEpochDuration); + assertEq(vault.currentEpochStart(), blockTimestamp); + assertEq(vault.nextEpochStart(), blockTimestamp + newEpochDuration); + + blockTimestamp = blockTimestamp + (5 - 1) * newEpochDuration; + vm.warp(blockTimestamp); + + assertEq(vault.epochDuration(), newEpochDuration3); + assertEq(vault.epochDurationInit(), blockTimestamp); + + _setEpochDuration(alice, newEpochDuration4); + + assertEq(vault.epochDuration(), newEpochDuration3); + assertEq(vault.epochDurationInit(), blockTimestamp); + // assertEq(vault._epochDuration(), newEpochDuration3); + // assertEq(vault._epochDurationInit(), blockTimestamp); + // assertEq(vault._epochDurationInitIndex(), 3 + 5); + // assertEq(vault._prevEpochDurationInitIndex(), 3); + // assertEq(vault._prevEpochDuration(), newEpochDuration); + // assertEq(vault._prevEpochDurationInit(), blockTimestamp - 5 * newEpochDuration); + // assertEq(vault._nextEpochInitIndex(), vault.currentEpoch() + 3); + // assertEq(vault._nextEpochDuration(), newEpochDuration4); + // assertEq(vault._nextEpochDurationInit(), blockTimestamp + 3 * newEpochDuration3); + vm.expectRevert(IVault.InvalidEpoch.selector); + vault.epochStart(0); + } + + function test_SetEpochDurationRevertInvalidEpochDurationSetEpochsDelay( + uint48 epochDuration, + uint48 newEpochDuration, + uint256 epochDurationSetEpochsDelay + ) public { + epochDuration = uint48(bound(epochDuration, 3, 50 weeks)); + newEpochDuration = uint48(bound(newEpochDuration, epochDuration + 1, 60 weeks)); + epochDurationSetEpochsDelay = uint256(bound(epochDurationSetEpochsDelay, 0, 2)); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + vault = _getVault(epochDuration); + + _grantEpochDurationSetRole(alice, alice); + + vm.startPrank(alice); + vm.expectRevert(IVault.InvalidEpochDurationSetEpochsDelay.selector); + vault.setEpochDuration(newEpochDuration, epochDurationSetEpochsDelay); + vm.stopPrank(); + } + + function test_SetEpochDurationRevertInvalidNewEpochDuration(uint48 epochDuration, uint48 newEpochDuration) public { + epochDuration = uint48(bound(epochDuration, 1, 50 weeks)); + newEpochDuration = uint48(bound(newEpochDuration, 0, epochDuration - 1)); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + vault = _getVault(epochDuration); + + _grantEpochDurationSetRole(alice, alice); + vm.expectRevert(IVault.InvalidNewEpochDuration.selector); + _setEpochDuration(alice, newEpochDuration); + } + + function test_SetEpochDurationRevertAlreadySet( + uint48 epochDuration + ) public { + epochDuration = uint48(bound(epochDuration, 2, 50 weeks)); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + vault = _getVault(epochDuration - 1); + + _grantEpochDurationSetRole(alice, alice); + _setEpochDuration(alice, epochDuration); + + blockTimestamp = blockTimestamp + vault.epochDurationSetEpochsDelay() * (epochDuration - 1); + vm.warp(blockTimestamp); + + vm.expectRevert(IVault.AlreadySet.selector); + _setEpochDuration(alice, epochDuration); + + _setEpochDuration(alice, epochDuration + 1); + + _setEpochDuration(alice, epochDuration); + } + + function test_SetFlashloanEnabled() public { + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + _grantFlashloanEnabledSetRole(alice, alice); + assertEq(vault.flashLoanEnabled(), true); + _setFlashloanEnabled(alice, false); + assertEq(vault.flashLoanEnabled(), false); + } + + function test_SetFlashloanEnabledRevertAlreadySet() public { + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + _grantFlashloanEnabledSetRole(alice, alice); + _setFlashloanEnabled(alice, false); + vm.expectRevert(IVault.AlreadySet.selector); + _setFlashloanEnabled(alice, false); + } + + function test_SetFlashloanEnabledRevertAccessControl() public { + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + vm.expectRevert(); + _setFlashloanEnabled(address(this), false); + } + + function test_SetFlashFeeRate( + uint256 flashFeeRate + ) public { + flashFeeRate = bound(flashFeeRate, 0, 1e18); + uint48 epochDuration = 1; + + address[] memory networkLimitSetRoleHolders = new address[](1); + networkLimitSetRoleHolders[0] = alice; + address[] memory operatorNetworkSharesSetRoleHolders = new address[](1); + operatorNetworkSharesSetRoleHolders[0] = alice; + (address vault_,,) = vaultConfigurator.create( + IVaultConfigurator.InitParams({ + version: 3, + owner: alice, + vaultParams: abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: epochDuration, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: true, + flashFeeRate: 0, + flashFeeReceiver: alice, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ), + delegatorIndex: 0, + delegatorParams: abi.encode( + INetworkRestakeDelegator.InitParams({ + baseParams: IBaseDelegator.BaseParams({ + defaultAdminRoleHolder: alice, + hook: address(0), + hookSetRoleHolder: alice + }), + networkLimitSetRoleHolders: networkLimitSetRoleHolders, + operatorNetworkSharesSetRoleHolders: operatorNetworkSharesSetRoleHolders + }) + ), + withSlasher: false, + slasherIndex: 0, + slasherParams: abi.encode(ISlasher.InitParams({baseParams: IBaseSlasher.BaseParams({isBurnerHook: false})})) + }) + ); + + vault = VaultImplementation(vault_); + + vm.assume(flashFeeRate != vault.flashFeeRate()); + + _grantFlashFeeRateSetRole(alice, alice); + _setFlashFeeRate(alice, flashFeeRate); + assertEq(vault.flashFeeRate(), flashFeeRate); + + assertEq( + vault.flashFee(address(collateral), 100 ether), flashFeeRate.mulDiv(100 ether, 10 ** 9, Math.Rounding.Ceil) + ); + + if (flashFeeRate != 1e8) { + _setFlashFeeRate(alice, 1e8); + } + + assertEq(vault.flashFee(address(collateral), 100 ether), 10 ether); + } + + function test_SetFlashFeeRateRevertAlreadySet( + uint256 flashFeeRate + ) public { + uint48 epochDuration = 1; + + address[] memory networkLimitSetRoleHolders = new address[](1); + networkLimitSetRoleHolders[0] = alice; + address[] memory operatorNetworkSharesSetRoleHolders = new address[](1); + operatorNetworkSharesSetRoleHolders[0] = alice; + (address vault_,,) = vaultConfigurator.create( + IVaultConfigurator.InitParams({ + version: 3, + owner: alice, + vaultParams: abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: epochDuration, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: true, + flashFeeRate: 0, + flashFeeReceiver: alice, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ), + delegatorIndex: 0, + delegatorParams: abi.encode( + INetworkRestakeDelegator.InitParams({ + baseParams: IBaseDelegator.BaseParams({ + defaultAdminRoleHolder: alice, + hook: address(0), + hookSetRoleHolder: alice + }), + networkLimitSetRoleHolders: networkLimitSetRoleHolders, + operatorNetworkSharesSetRoleHolders: operatorNetworkSharesSetRoleHolders + }) + ), + withSlasher: false, + slasherIndex: 0, + slasherParams: abi.encode(ISlasher.InitParams({baseParams: IBaseSlasher.BaseParams({isBurnerHook: false})})) + }) + ); + + vault = VaultImplementation(vault_); + + vm.assume(flashFeeRate != vault.flashFeeRate()); + + _grantFlashFeeRateSetRole(alice, alice); + _setFlashFeeRate(alice, flashFeeRate); + + vm.expectRevert(IVault.AlreadySet.selector); + _setFlashFeeRate(alice, flashFeeRate); + } + + function test_SetFlashFeeReceiver( + address flashFeeReceiver + ) public { + uint48 epochDuration = 1; + + address[] memory networkLimitSetRoleHolders = new address[](1); + networkLimitSetRoleHolders[0] = alice; + address[] memory operatorNetworkSharesSetRoleHolders = new address[](1); + operatorNetworkSharesSetRoleHolders[0] = alice; + (address vault_,,) = vaultConfigurator.create( + IVaultConfigurator.InitParams({ + version: 3, + owner: alice, + vaultParams: abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: epochDuration, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: true, + flashFeeRate: 0, + flashFeeReceiver: alice, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ), + delegatorIndex: 0, + delegatorParams: abi.encode( + INetworkRestakeDelegator.InitParams({ + baseParams: IBaseDelegator.BaseParams({ + defaultAdminRoleHolder: alice, + hook: address(0), + hookSetRoleHolder: alice + }), + networkLimitSetRoleHolders: networkLimitSetRoleHolders, + operatorNetworkSharesSetRoleHolders: operatorNetworkSharesSetRoleHolders + }) + ), + withSlasher: false, + slasherIndex: 0, + slasherParams: abi.encode(ISlasher.InitParams({baseParams: IBaseSlasher.BaseParams({isBurnerHook: false})})) + }) + ); + + vault = VaultImplementation(vault_); + + vm.assume(flashFeeReceiver != vault.flashFeeReceiver()); + + _grantFlashFeeReceiverSetRole(alice, alice); + _setFlashFeeReceiver(alice, flashFeeReceiver); + assertEq(vault.flashFeeReceiver(), flashFeeReceiver); + + if (flashFeeReceiver != address(0)) { + assertEq( + vault.flashFee(address(collateral), 100 ether), + vault.flashFeeRate().mulDiv(100 ether, 10 ** 9, Math.Rounding.Ceil) + ); + } else { + assertEq(vault.flashFee(address(collateral), 100 ether), 0); + } + } + + function test_SetFlashFeeReceiverRevertAlreadySet( + address flashFeeReceiver + ) public { + uint48 epochDuration = 1; + + address[] memory networkLimitSetRoleHolders = new address[](1); + networkLimitSetRoleHolders[0] = alice; + address[] memory operatorNetworkSharesSetRoleHolders = new address[](1); + operatorNetworkSharesSetRoleHolders[0] = alice; + (address vault_,,) = vaultConfigurator.create( + IVaultConfigurator.InitParams({ + version: 3, + owner: alice, + vaultParams: abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: epochDuration, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: true, + flashFeeRate: 0, + flashFeeReceiver: alice, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ), + delegatorIndex: 0, + delegatorParams: abi.encode( + INetworkRestakeDelegator.InitParams({ + baseParams: IBaseDelegator.BaseParams({ + defaultAdminRoleHolder: alice, + hook: address(0), + hookSetRoleHolder: alice + }), + networkLimitSetRoleHolders: networkLimitSetRoleHolders, + operatorNetworkSharesSetRoleHolders: operatorNetworkSharesSetRoleHolders + }) + ), + withSlasher: false, + slasherIndex: 0, + slasherParams: abi.encode(ISlasher.InitParams({baseParams: IBaseSlasher.BaseParams({isBurnerHook: false})})) + }) + ); + + vault = VaultImplementation(vault_); + + vm.assume(flashFeeReceiver != vault.flashFeeReceiver()); + + _grantFlashFeeReceiverSetRole(alice, alice); + _setFlashFeeReceiver(alice, flashFeeReceiver); + + vm.expectRevert(IVault.AlreadySet.selector); + _setFlashFeeReceiver(alice, flashFeeReceiver); + } + + function test_OnSlashRevertNotSlasher() public { + uint48 epochDuration = 1; + + vault = _getVault(epochDuration); + + vm.startPrank(alice); + vm.expectRevert(IVault.NotSlasher.selector); + vault.onSlash(0, 0); + vm.stopPrank(); + } + + struct Test_SlashStruct { + uint256 slashAmountReal1; + uint256 tokensBeforeBurner; + uint256 activeStake1; + uint256 withdrawals1; + uint256 nextWithdrawals1; + uint256 slashAmountSlashed2; + } + + function test_Slash( + // uint48 epochDuration, + uint256 depositAmount, + uint256 withdrawAmount1, + uint256 withdrawAmount2, + uint256 slashAmount1, + uint256 slashAmount2, + uint256 captureAgo + ) public { + // epochDuration = uint48(bound(epochDuration, 2, 10 days)); + depositAmount = bound(depositAmount, 1, 100 * 10 ** 18); + withdrawAmount1 = bound(withdrawAmount1, 1, 100 * 10 ** 18); + withdrawAmount2 = bound(withdrawAmount2, 1, 100 * 10 ** 18); + slashAmount1 = bound(slashAmount1, 1, type(uint256).max / 2); + slashAmount2 = bound(slashAmount2, 1, type(uint256).max / 2); + captureAgo = bound(captureAgo, 1, 10 days); + vm.assume(depositAmount > withdrawAmount1 + withdrawAmount2); + vm.assume(depositAmount > slashAmount1); + vm.assume(captureAgo <= 7 days); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + (vault, delegator, slasher) = _getVaultAndDelegatorAndSlasher(7 days); + + // address network = alice; + _registerNetwork(alice, alice); + _setMaxNetworkLimit(alice, 0, type(uint256).max); + + _registerOperator(alice); + _registerOperator(bob); + + _optInOperatorVault(alice); + _optInOperatorVault(bob); + + _optInOperatorNetwork(alice, address(alice)); + _optInOperatorNetwork(bob, address(alice)); + + _setNetworkLimit(alice, alice, type(uint256).max); + + _setOperatorNetworkLimit(alice, alice, alice, type(uint256).max / 2); + _setOperatorNetworkLimit(alice, alice, bob, type(uint256).max / 2); + + _deposit(alice, depositAmount); + _withdraw(alice, withdrawAmount1); + + blockTimestamp = blockTimestamp + vault.epochDuration(); + vm.warp(blockTimestamp); + + _withdraw(alice, withdrawAmount2); + + assertEq(vault.totalStake(), depositAmount); + assertEq(vault.activeStake(), depositAmount - withdrawAmount1 - withdrawAmount2); + assertEq(vault.withdrawals(vault.currentEpoch()), withdrawAmount1); + assertEq(vault.withdrawals(vault.currentEpoch() + 1), withdrawAmount2); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + Test_SlashStruct memory test_SlashStruct; + + if (vault.epochAt(uint48(blockTimestamp - captureAgo)) != vault.currentEpoch()) { + test_SlashStruct.slashAmountReal1 = Math.min(slashAmount1, depositAmount - withdrawAmount1); + test_SlashStruct.tokensBeforeBurner = collateral.balanceOf(address(vault.burner())); + assertEq( + _slash(alice, alice, alice, slashAmount1, uint48(blockTimestamp - captureAgo), ""), + test_SlashStruct.slashAmountReal1 + ); + assertEq( + collateral.balanceOf(address(vault.burner())) - test_SlashStruct.tokensBeforeBurner, + test_SlashStruct.slashAmountReal1 + ); + + test_SlashStruct.activeStake1 = depositAmount - withdrawAmount1 - withdrawAmount2 + - (depositAmount - withdrawAmount1 - withdrawAmount2).mulDiv( + test_SlashStruct.slashAmountReal1, depositAmount + ); + test_SlashStruct.withdrawals1 = + withdrawAmount1 - withdrawAmount1.mulDiv(test_SlashStruct.slashAmountReal1, depositAmount); + test_SlashStruct.nextWithdrawals1 = + withdrawAmount2 - withdrawAmount2.mulDiv(test_SlashStruct.slashAmountReal1, depositAmount); + assertEq(vault.totalStake(), depositAmount - test_SlashStruct.slashAmountReal1); + assertTrue(test_SlashStruct.withdrawals1 - vault.withdrawals(vault.currentEpoch()) <= 2); + assertTrue(test_SlashStruct.nextWithdrawals1 - vault.withdrawals(vault.currentEpoch() + 1) <= 1); + assertEq(vault.activeStake(), test_SlashStruct.activeStake1); + + test_SlashStruct.slashAmountSlashed2 = Math.min( + depositAmount - test_SlashStruct.slashAmountReal1, + Math.min(slashAmount2, depositAmount - withdrawAmount1) + ); + test_SlashStruct.tokensBeforeBurner = collateral.balanceOf(address(vault.burner())); + assertEq( + _slash(alice, alice, bob, slashAmount2, uint48(blockTimestamp - captureAgo), ""), + Math.min(slashAmount2, depositAmount - withdrawAmount1) + ); + assertEq( + collateral.balanceOf(address(vault.burner())) - test_SlashStruct.tokensBeforeBurner, + test_SlashStruct.slashAmountSlashed2 + ); + + assertEq( + vault.totalStake(), + depositAmount - test_SlashStruct.slashAmountReal1 - test_SlashStruct.slashAmountSlashed2 + ); + assertTrue( + ( + test_SlashStruct.withdrawals1 + - test_SlashStruct.withdrawals1.mulDiv( + test_SlashStruct.slashAmountSlashed2, depositAmount - test_SlashStruct.slashAmountReal1 + ) + ) - vault.withdrawals(vault.currentEpoch()) <= 4 + ); + assertTrue( + ( + test_SlashStruct.nextWithdrawals1 + - test_SlashStruct.nextWithdrawals1.mulDiv( + test_SlashStruct.slashAmountSlashed2, depositAmount - test_SlashStruct.slashAmountReal1 + ) + ) - vault.withdrawals(vault.currentEpoch() + 1) <= 2 + ); + assertEq( + vault.activeStake(), + test_SlashStruct.activeStake1 + - test_SlashStruct.activeStake1.mulDiv( + test_SlashStruct.slashAmountSlashed2, depositAmount - test_SlashStruct.slashAmountReal1 + ) + ); + } else { + test_SlashStruct.slashAmountReal1 = + Math.min(slashAmount1, depositAmount - withdrawAmount1 - withdrawAmount2); + test_SlashStruct.tokensBeforeBurner = collateral.balanceOf(address(vault.burner())); + assertEq( + _slash(alice, alice, alice, slashAmount1, uint48(blockTimestamp - captureAgo), ""), + test_SlashStruct.slashAmountReal1 + ); + assertEq( + collateral.balanceOf(address(vault.burner())) - test_SlashStruct.tokensBeforeBurner, + test_SlashStruct.slashAmountReal1 + ); + + test_SlashStruct.activeStake1 = depositAmount - withdrawAmount1 - withdrawAmount2 + - (depositAmount - withdrawAmount1 - withdrawAmount2).mulDiv( + test_SlashStruct.slashAmountReal1, depositAmount - withdrawAmount1 + ); + test_SlashStruct.withdrawals1 = withdrawAmount1; + test_SlashStruct.nextWithdrawals1 = withdrawAmount2 + - withdrawAmount2.mulDiv(test_SlashStruct.slashAmountReal1, depositAmount - withdrawAmount1); + assertEq(vault.totalStake(), depositAmount - test_SlashStruct.slashAmountReal1); + assertEq(vault.withdrawals(vault.currentEpoch()), test_SlashStruct.withdrawals1); + assertTrue(test_SlashStruct.nextWithdrawals1 - vault.withdrawals(vault.currentEpoch() + 1) <= 1); + assertEq(vault.activeStake(), test_SlashStruct.activeStake1); + + test_SlashStruct.slashAmountSlashed2 = Math.min( + depositAmount - withdrawAmount1 - test_SlashStruct.slashAmountReal1, + Math.min(slashAmount2, depositAmount - withdrawAmount1 - withdrawAmount2) + ); + test_SlashStruct.tokensBeforeBurner = collateral.balanceOf(address(vault.burner())); + assertEq( + _slash(alice, alice, bob, slashAmount2, uint48(blockTimestamp - captureAgo), ""), + Math.min(slashAmount2, depositAmount - withdrawAmount1 - withdrawAmount2) + ); + assertEq( + collateral.balanceOf(address(vault.burner())) - test_SlashStruct.tokensBeforeBurner, + test_SlashStruct.slashAmountSlashed2 + ); + + assertEq( + vault.totalStake(), + depositAmount - test_SlashStruct.slashAmountReal1 - test_SlashStruct.slashAmountSlashed2 + ); + assertEq(vault.withdrawals(vault.currentEpoch()), test_SlashStruct.withdrawals1); + assertTrue( + ( + test_SlashStruct.nextWithdrawals1 + - test_SlashStruct.nextWithdrawals1.mulDiv( + test_SlashStruct.slashAmountSlashed2, + depositAmount - withdrawAmount1 - test_SlashStruct.slashAmountReal1 + ) + ) - vault.withdrawals(vault.currentEpoch() + 1) <= 2 + ); + assertEq( + vault.activeStake(), + test_SlashStruct.activeStake1 + - test_SlashStruct.activeStake1.mulDiv( + test_SlashStruct.slashAmountSlashed2, + depositAmount - withdrawAmount1 - test_SlashStruct.slashAmountReal1 + ) + ); + } + } + + function test_SlashWithEpochIncrease( + uint48 newEpochDuration, + uint256 depositAmount, + uint256 withdrawAmount1, + uint256 withdrawAmount2, + uint256 slashAmount1 + ) public { + depositAmount = bound(depositAmount, 1, 100 * 10 ** 18); + withdrawAmount1 = bound(withdrawAmount1, 1, 100 * 10 ** 18); + withdrawAmount2 = bound(withdrawAmount2, 1, 100 * 10 ** 18); + slashAmount1 = bound(slashAmount1, 1, type(uint256).max / 2); + vm.assume(depositAmount > withdrawAmount1 + withdrawAmount2); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + (vault, delegator, slasher) = _getVaultAndDelegatorAndSlasher(7 days); + + newEpochDuration = uint48(bound(newEpochDuration, vault.epochDuration() + 2, 2 * vault.epochDuration())); + + // address network = alice; + _registerNetwork(alice, alice); + _setMaxNetworkLimit(alice, 0, type(uint256).max); + + _registerOperator(alice); + _registerOperator(bob); + + _optInOperatorVault(alice); + _optInOperatorVault(bob); + + _optInOperatorNetwork(alice, address(alice)); + _optInOperatorNetwork(bob, address(alice)); + + _setNetworkLimit(alice, alice, type(uint256).max); + + _setOperatorNetworkLimit(alice, alice, alice, type(uint256).max / 2); + _setOperatorNetworkLimit(alice, alice, bob, type(uint256).max / 2); + + _deposit(alice, depositAmount); + + _setEpochDuration(alice, newEpochDuration); + + blockTimestamp = blockTimestamp + 2 * vault.epochDuration(); + vm.warp(blockTimestamp); + + _withdraw(alice, withdrawAmount1); + + blockTimestamp = blockTimestamp + vault.epochDuration(); + vm.warp(blockTimestamp); + + _withdraw(alice, withdrawAmount2); + + assertEq(vault.totalStake(), depositAmount); + assertEq(vault.activeStake(), depositAmount - withdrawAmount1 - withdrawAmount2); + assertEq(vault.withdrawals(vault.currentEpoch()), withdrawAmount1); + assertEq(vault.withdrawals(vault.currentEpoch() + 1), withdrawAmount2); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + assertEq(vault.epochAt(uint48(blockTimestamp)), 3); + assertEq(vault.currentEpochStart(), blockTimestamp - 1); + assertEq(vault.previousEpochStart(), blockTimestamp - 1 - 7 days); + // assertEq(vault.epochAt(uint48(blockTimestamp - newEpochDuration)), vault._nextEpochInitIndex() - 2); + vm.expectRevert(IVault.InvalidCaptureEpoch.selector); + _slash(alice, alice, alice, slashAmount1, uint48(blockTimestamp - newEpochDuration), ""); + + // assertEq(vault.epochAt(uint48(blockTimestamp - 7 days - 1)), vault._nextEpochInitIndex() - 1); + _slash(alice, alice, alice, slashAmount1, uint48(blockTimestamp - 7 days - 1), ""); + } + + function test_FlashLoan(uint256 amount, uint256 feeRate) public { + amount = bound(amount, 1, 100 * 10 ** 18); + feeRate = bound(feeRate, 0, 1e9); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + address[] memory networkLimitSetRoleHolders = new address[](1); + networkLimitSetRoleHolders[0] = alice; + address[] memory operatorNetworkSharesSetRoleHolders = new address[](1); + operatorNetworkSharesSetRoleHolders[0] = alice; + (address vault_,,) = vaultConfigurator.create( + IVaultConfigurator.InitParams({ + version: 3, + owner: alice, + vaultParams: abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: 1, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: true, + flashFeeRate: 0, + flashFeeReceiver: alice, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ), + delegatorIndex: 0, + delegatorParams: abi.encode( + INetworkRestakeDelegator.InitParams({ + baseParams: IBaseDelegator.BaseParams({ + defaultAdminRoleHolder: alice, + hook: address(0), + hookSetRoleHolder: alice + }), + networkLimitSetRoleHolders: networkLimitSetRoleHolders, + operatorNetworkSharesSetRoleHolders: operatorNetworkSharesSetRoleHolders + }) + ), + withSlasher: false, + slasherIndex: 0, + slasherParams: abi.encode(ISlasher.InitParams({baseParams: IBaseSlasher.BaseParams({isBurnerHook: false})})) + }) + ); + + vault = VaultImplementation(vault_); + + _deposit(alice, amount); + + if (feeRate > 0) { + _setFlashFeeRate(alice, feeRate); + } + + address receiver = address(0xdEaD); + + _setFlashFeeReceiver(alice, receiver); + + ERC3156FlashBorrower borrower = new ERC3156FlashBorrower(address(vault)); + + collateral.transfer(address(borrower), amount); + + assertEq(collateral.balanceOf(address(vault)), amount); + assertEq(collateral.balanceOf(address(borrower)), amount); + assertEq(collateral.balanceOf(address(receiver)), 0); + + assertEq(vault.maxFlashLoan(address(collateral)), amount); + + borrower.run(amount, vault.RETURN_VALUE(), abi.encode(true, false)); + + assertEq(collateral.balanceOf(address(vault)), amount); + assertEq(collateral.balanceOf(address(borrower)), amount - vault.flashFee(address(collateral), amount)); + assertEq(collateral.balanceOf(address(receiver)), vault.flashFee(address(collateral), amount)); + + _grantFlashloanEnabledSetRole(alice, alice); + _setFlashloanEnabled(alice, false); + + assertEq(vault.maxFlashLoan(address(collateral)), 0); + + bytes32 RETURN_VALUE = vault.RETURN_VALUE(); + vm.expectRevert(IVault.MaxLoanExceeded.selector); + borrower.run(amount, RETURN_VALUE, abi.encode(true, false)); + } + + function test_FlashLoanFeeOnTransfer(uint256 amount, uint256 feeRate) public { + amount = bound(amount, 2, 100 * 10 ** 18); + feeRate = bound(feeRate, 1, 1e9); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + address[] memory networkLimitSetRoleHolders = new address[](1); + networkLimitSetRoleHolders[0] = alice; + address[] memory operatorNetworkSharesSetRoleHolders = new address[](1); + operatorNetworkSharesSetRoleHolders[0] = alice; + (address vault_,,) = vaultConfigurator.create( + IVaultConfigurator.InitParams({ + version: 3, + owner: alice, + vaultParams: abi.encode( + IVault.InitParams({ + collateral: address(feeOnTransferCollateral), + burner: address(0xdEaD), + epochDuration: 1, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: true, + flashFeeRate: 0, + flashFeeReceiver: alice, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ), + delegatorIndex: 0, + delegatorParams: abi.encode( + INetworkRestakeDelegator.InitParams({ + baseParams: IBaseDelegator.BaseParams({ + defaultAdminRoleHolder: alice, + hook: address(0), + hookSetRoleHolder: alice + }), + networkLimitSetRoleHolders: networkLimitSetRoleHolders, + operatorNetworkSharesSetRoleHolders: operatorNetworkSharesSetRoleHolders + }) + ), + withSlasher: false, + slasherIndex: 0, + slasherParams: abi.encode(ISlasher.InitParams({baseParams: IBaseSlasher.BaseParams({isBurnerHook: false})})) + }) + ); + + vault = VaultImplementation(vault_); + + feeOnTransferCollateral.transfer(alice, amount + 1); + vm.startPrank(alice); + feeOnTransferCollateral.approve(address(vault), amount); + vault.deposit(alice, amount); + vm.stopPrank(); + + if (feeRate > 0) { + _setFlashFeeRate(alice, feeRate); + } + + address receiver = address(0xdEaD); + + _setFlashFeeReceiver(alice, receiver); + + ERC3156FlashBorrower borrower = new ERC3156FlashBorrower(address(vault)); + + feeOnTransferCollateral.transfer(address(borrower), amount + 4); + + assertEq(feeOnTransferCollateral.balanceOf(address(vault)), amount - 1); + assertEq(feeOnTransferCollateral.balanceOf(address(borrower)), amount + 3); // 1 is lost on receive, 1 on transferFrom, 1 on transfer + assertEq(feeOnTransferCollateral.balanceOf(address(receiver)), 0); + + assertEq(vault.maxFlashLoan(address(feeOnTransferCollateral)), amount - 1); + + borrower.run(amount - 1, vault.RETURN_VALUE(), abi.encode(true, true)); + + assertEq(feeOnTransferCollateral.balanceOf(address(vault)), amount - 1); + assertEq( + feeOnTransferCollateral.balanceOf(address(borrower)), + amount - vault.flashFee(address(feeOnTransferCollateral), amount - 1) + ); + assertEq( + feeOnTransferCollateral.balanceOf(address(receiver)), + vault.flashFee(address(feeOnTransferCollateral), amount - 1) - 1 + ); + + _grantFlashloanEnabledSetRole(alice, alice); + _setFlashloanEnabled(alice, false); + + assertEq(vault.maxFlashLoan(address(feeOnTransferCollateral)), 0); + + bytes32 RETURN_VALUE = vault.RETURN_VALUE(); + vm.expectRevert(IVault.MaxLoanExceeded.selector); + borrower.run(amount, RETURN_VALUE, abi.encode(true, true)); + } + + function test_FlashLoanRevertTooLowFlashLoanValue( + uint256 amount + ) public { + amount = bound(amount, 1, 100 * 10 ** 18); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + address[] memory networkLimitSetRoleHolders = new address[](1); + networkLimitSetRoleHolders[0] = alice; + address[] memory operatorNetworkSharesSetRoleHolders = new address[](1); + operatorNetworkSharesSetRoleHolders[0] = alice; + (address vault_,,) = vaultConfigurator.create( + IVaultConfigurator.InitParams({ + version: 3, + owner: alice, + vaultParams: abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: 1, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: true, + flashFeeRate: 0, + flashFeeReceiver: alice, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ), + delegatorIndex: 0, + delegatorParams: abi.encode( + INetworkRestakeDelegator.InitParams({ + baseParams: IBaseDelegator.BaseParams({ + defaultAdminRoleHolder: alice, + hook: address(0), + hookSetRoleHolder: alice + }), + networkLimitSetRoleHolders: networkLimitSetRoleHolders, + operatorNetworkSharesSetRoleHolders: operatorNetworkSharesSetRoleHolders + }) + ), + withSlasher: false, + slasherIndex: 0, + slasherParams: abi.encode(ISlasher.InitParams({baseParams: IBaseSlasher.BaseParams({isBurnerHook: false})})) + }) + ); + + vault = VaultImplementation(vault_); + + _deposit(alice, amount); + + address receiver = address(0xdEaD); + + _setFlashFeeReceiver(alice, receiver); + + ERC3156FlashBorrower borrower = new ERC3156FlashBorrower(address(vault)); + + bytes32 RETURN_VALUE = vault.RETURN_VALUE(); + vm.expectRevert(IVault.TooLowFlashLoanValue.selector); + borrower.run(0, RETURN_VALUE, abi.encode(true, false)); + } + + function test_FlashLoanRevert(uint256 amount, uint256 feeRate) public { + amount = bound(amount, 1, 100 * 10 ** 18); + feeRate = bound(feeRate, 1e18, 1e27); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + address[] memory networkLimitSetRoleHolders = new address[](1); + networkLimitSetRoleHolders[0] = alice; + address[] memory operatorNetworkSharesSetRoleHolders = new address[](1); + operatorNetworkSharesSetRoleHolders[0] = alice; + (address vault_,,) = vaultConfigurator.create( + IVaultConfigurator.InitParams({ + version: 3, + owner: alice, + vaultParams: abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: 1, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: true, + flashFeeRate: 0, + flashFeeReceiver: alice, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ), + delegatorIndex: 0, + delegatorParams: abi.encode( + INetworkRestakeDelegator.InitParams({ + baseParams: IBaseDelegator.BaseParams({ + defaultAdminRoleHolder: alice, + hook: address(0), + hookSetRoleHolder: alice + }), + networkLimitSetRoleHolders: networkLimitSetRoleHolders, + operatorNetworkSharesSetRoleHolders: operatorNetworkSharesSetRoleHolders + }) + ), + withSlasher: false, + slasherIndex: 0, + slasherParams: abi.encode(ISlasher.InitParams({baseParams: IBaseSlasher.BaseParams({isBurnerHook: false})})) + }) + ); + + vault = VaultImplementation(vault_); + + _deposit(alice, amount); + + if (feeRate > 0) { + _setFlashFeeRate(alice, feeRate); + } + + ERC3156FlashBorrower borrower = new ERC3156FlashBorrower(address(vault)); + + collateral.transfer(address(borrower), amount); + + bytes32 RETURN_VALUE = vault.RETURN_VALUE(); + vm.expectRevert(); + borrower.run(amount, RETURN_VALUE, abi.encode(true, false)); + } + + function test_FlashLoanRevertMaxLoanExceeded(uint256 amount, uint256 feeRate) public { + amount = bound(amount, 1, 100 * 10 ** 18); + feeRate = bound(feeRate, 0, 1e9); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + address[] memory networkLimitSetRoleHolders = new address[](1); + networkLimitSetRoleHolders[0] = alice; + address[] memory operatorNetworkSharesSetRoleHolders = new address[](1); + operatorNetworkSharesSetRoleHolders[0] = alice; + (address vault_,,) = vaultConfigurator.create( + IVaultConfigurator.InitParams({ + version: 3, + owner: alice, + vaultParams: abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: 1, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: true, + flashFeeRate: 0, + flashFeeReceiver: alice, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ), + delegatorIndex: 0, + delegatorParams: abi.encode( + INetworkRestakeDelegator.InitParams({ + baseParams: IBaseDelegator.BaseParams({ + defaultAdminRoleHolder: alice, + hook: address(0), + hookSetRoleHolder: alice + }), + networkLimitSetRoleHolders: networkLimitSetRoleHolders, + operatorNetworkSharesSetRoleHolders: operatorNetworkSharesSetRoleHolders + }) + ), + withSlasher: false, + slasherIndex: 0, + slasherParams: abi.encode(ISlasher.InitParams({baseParams: IBaseSlasher.BaseParams({isBurnerHook: false})})) + }) + ); + + vault = VaultImplementation(vault_); + + _deposit(alice, amount); + + if (feeRate > 0) { + _setFlashFeeRate(alice, feeRate); + } + + address receiver = address(0xdEaD); + + _setFlashFeeReceiver(alice, receiver); + + ERC3156FlashBorrower borrower = new ERC3156FlashBorrower(address(vault)); + + collateral.transfer(address(borrower), amount); + + bytes32 RETURN_VALUE = vault.RETURN_VALUE(); + vm.expectRevert(IVault.MaxLoanExceeded.selector); + borrower.run(amount + 1, RETURN_VALUE, abi.encode(true, false)); + } + + function test_FlashLoanRevertInvalidReceiver(uint256 amount, uint256 feeRate) public { + amount = bound(amount, 1, 100 * 10 ** 18); + feeRate = bound(feeRate, 0, 1e9); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + address[] memory networkLimitSetRoleHolders = new address[](1); + networkLimitSetRoleHolders[0] = alice; + address[] memory operatorNetworkSharesSetRoleHolders = new address[](1); + operatorNetworkSharesSetRoleHolders[0] = alice; + (address vault_,,) = vaultConfigurator.create( + IVaultConfigurator.InitParams({ + version: 3, + owner: alice, + vaultParams: abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: 1, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: true, + flashFeeRate: 0, + flashFeeReceiver: alice, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ), + delegatorIndex: 0, + delegatorParams: abi.encode( + INetworkRestakeDelegator.InitParams({ + baseParams: IBaseDelegator.BaseParams({ + defaultAdminRoleHolder: alice, + hook: address(0), + hookSetRoleHolder: alice + }), + networkLimitSetRoleHolders: networkLimitSetRoleHolders, + operatorNetworkSharesSetRoleHolders: operatorNetworkSharesSetRoleHolders + }) + ), + withSlasher: false, + slasherIndex: 0, + slasherParams: abi.encode(ISlasher.InitParams({baseParams: IBaseSlasher.BaseParams({isBurnerHook: false})})) + }) + ); + + vault = VaultImplementation(vault_); + + _deposit(alice, amount); + + if (feeRate > 0) { + _setFlashFeeRate(alice, feeRate); + } + + address receiver = address(0xdEaD); + + _setFlashFeeReceiver(alice, receiver); + + ERC3156FlashBorrower borrower = new ERC3156FlashBorrower(address(vault)); + + collateral.transfer(address(borrower), amount); + + vm.expectRevert(IVault.InvalidReceiver.selector); + borrower.run(amount, bytes32(0), abi.encode(true, false)); + } + + function test_FlashLoanRevertInvalidReturnAmount(uint256 amount, uint256 feeRate) public { + amount = bound(amount, 1, 100 * 10 ** 18); + feeRate = bound(feeRate, 0, 1e9); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + address[] memory networkLimitSetRoleHolders = new address[](1); + networkLimitSetRoleHolders[0] = alice; + address[] memory operatorNetworkSharesSetRoleHolders = new address[](1); + operatorNetworkSharesSetRoleHolders[0] = alice; + (address vault_,,) = vaultConfigurator.create( + IVaultConfigurator.InitParams({ + version: 3, + owner: alice, + vaultParams: abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: 1, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: true, + flashFeeRate: 0, + flashFeeReceiver: alice, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ), + delegatorIndex: 0, + delegatorParams: abi.encode( + INetworkRestakeDelegator.InitParams({ + baseParams: IBaseDelegator.BaseParams({ + defaultAdminRoleHolder: alice, + hook: address(0), + hookSetRoleHolder: alice + }), + networkLimitSetRoleHolders: networkLimitSetRoleHolders, + operatorNetworkSharesSetRoleHolders: operatorNetworkSharesSetRoleHolders + }) + ), + withSlasher: false, + slasherIndex: 0, + slasherParams: abi.encode(ISlasher.InitParams({baseParams: IBaseSlasher.BaseParams({isBurnerHook: false})})) + }) + ); + + vault = VaultImplementation(vault_); + + _deposit(alice, amount); + + if (feeRate > 0) { + _setFlashFeeRate(alice, feeRate); + } + + address receiver = address(0xdEaD); + + _setFlashFeeReceiver(alice, receiver); + + ERC3156FlashBorrower borrower = new ERC3156FlashBorrower(address(vault)); + + collateral.transfer(address(borrower), amount); + + bytes32 RETURN_VALUE = vault.RETURN_VALUE(); + vm.expectRevert(); + borrower.run(amount, RETURN_VALUE, abi.encode(false)); + } + + function test_Migrate2() public { + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + address[] memory networkLimitSetRoleHolders = new address[](1); + networkLimitSetRoleHolders[0] = alice; + address[] memory operatorNetworkSharesSetRoleHolders = new address[](1); + operatorNetworkSharesSetRoleHolders[0] = alice; + (address vault_,,) = vaultConfigurator.create( + IVaultConfigurator.InitParams({ + version: 1, + owner: alice, + vaultParams: abi.encode( + IVaultV1.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: 7 days, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice + }) + ), + delegatorIndex: 0, + delegatorParams: abi.encode( + INetworkRestakeDelegator.InitParams({ + baseParams: IBaseDelegator.BaseParams({ + defaultAdminRoleHolder: alice, + hook: address(0), + hookSetRoleHolder: alice + }), + networkLimitSetRoleHolders: networkLimitSetRoleHolders, + operatorNetworkSharesSetRoleHolders: operatorNetworkSharesSetRoleHolders + }) + ), + withSlasher: false, + slasherIndex: 0, + slasherParams: abi.encode(ISlasher.InitParams({baseParams: IBaseSlasher.BaseParams({isBurnerHook: false})})) + }) + ); + + vault = VaultImplementation(payable(vault_)); + + assertEq(vault.DEPOSIT_WHITELIST_SET_ROLE(), keccak256("DEPOSIT_WHITELIST_SET_ROLE")); + assertEq(vault.DEPOSITOR_WHITELIST_ROLE(), keccak256("DEPOSITOR_WHITELIST_ROLE")); + assertEq(VaultImplementation(payable(address(vault))).DELEGATOR_FACTORY(), address(delegatorFactory)); + assertEq(VaultImplementation(payable(address(vault))).SLASHER_FACTORY(), address(slasherFactory)); + + assertEq(Vault(payable(address(vault))).owner(), alice); + assertEq(vault.collateral(), address(collateral)); + assertEq(VaultImplementation(payable(address(vault))).hasRole(bytes32(uint256(1)), alice), false); + assertEq( + VaultImplementation(payable(address(vault))).hasRole( + VaultImplementation(payable(address(vault))).DEFAULT_ADMIN_ROLE(), alice + ), + true + ); + assertEq( + VaultImplementation(payable(address(vault))).hasRole( + VaultImplementation(payable(address(vault))).DEPOSIT_WHITELIST_SET_ROLE(), alice + ), + true + ); + assertEq( + VaultImplementation(payable(address(vault))).hasRole( + VaultImplementation(payable(address(vault))).DEPOSITOR_WHITELIST_ROLE(), alice + ), + true + ); + assertEq( + VaultImplementation(payable(address(vault))).hasRole( + VaultImplementation(payable(address(vault))).IS_DEPOSIT_LIMIT_SET_ROLE(), alice + ), + true + ); + assertEq( + VaultImplementation(payable(address(vault))).hasRole( + VaultImplementation(payable(address(vault))).DEPOSIT_LIMIT_SET_ROLE(), alice + ), + true + ); + vm.expectRevert(); + VaultImplementation(payable(address(vault))).EPOCH_DURATION_SET_ROLE(); + + assertEq(VaultImplementation(payable(address(vault))).epochDurationInit(), blockTimestamp); + assertEq(VaultImplementation(payable(address(vault))).epochDuration(), 7 days); + vm.expectRevert(IVault.InvalidTimestamp.selector); + assertEq(VaultImplementation(payable(address(vault))).epochAt(0), 0); + assertEq(VaultImplementation(payable(address(vault))).epochAt(uint48(blockTimestamp)), 0); + assertEq(VaultImplementation(payable(address(vault))).currentEpoch(), 0); + assertEq(VaultImplementation(payable(address(vault))).currentEpochStart(), blockTimestamp); + vm.expectRevert(IVault.NoPreviousEpoch.selector); + VaultImplementation(payable(address(vault))).previousEpochStart(); + assertEq(VaultImplementation(payable(address(vault))).nextEpochStart(), blockTimestamp + 7 days); + assertEq(VaultImplementation(payable(address(vault))).totalStake(), 0); + assertEq(VaultImplementation(payable(address(vault))).activeSharesAt(uint48(blockTimestamp), ""), 0); + assertEq(VaultImplementation(payable(address(vault))).activeShares(), 0); + assertEq(VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp), ""), 0); + assertEq(VaultImplementation(payable(address(vault))).activeStake(), 0); + assertEq(VaultImplementation(payable(address(vault))).activeSharesOfAt(alice, uint48(blockTimestamp), ""), 0); + assertEq(VaultImplementation(payable(address(vault))).activeSharesOf(alice), 0); + assertEq(VaultImplementation(payable(address(vault))).activeBalanceOfAt(alice, uint48(blockTimestamp), ""), 0); + assertEq(VaultImplementation(payable(address(vault))).activeBalanceOf(alice), 0); + assertEq(VaultImplementation(payable(address(vault))).withdrawals(0), 0); + assertEq(VaultImplementation(payable(address(vault))).withdrawalShares(0), 0); + assertEq(VaultImplementation(payable(address(vault))).isWithdrawalsClaimed(0, alice), false); + assertEq(VaultImplementation(payable(address(vault))).depositWhitelist(), false); + assertEq(VaultImplementation(payable(address(vault))).isDepositorWhitelisted(alice), false); + assertEq(VaultImplementation(payable(address(vault))).slashableBalanceOf(alice), 0); + assertEq(VaultImplementation(payable(address(vault))).isDelegatorInitialized(), true); + assertEq(VaultImplementation(payable(address(vault))).isSlasherInitialized(), true); + assertEq(VaultImplementation(payable(address(vault))).isInitialized(), true); + assertEq(Vault(payable(address(vault))).version(), 1); + + vm.expectRevert(); + VaultImplementation(payable(address(vault))).flashFeeRate(); + vm.expectRevert(); + VaultImplementation(payable(address(vault))).epochDurationSetEpochsDelay(); + + vm.startPrank(alice); + vaultFactory.migrate( + address(vault), + 3, + abi.encode( + IVault.MigrateParams({ + epochDurationSetEpochsDelay: 3, + flashFeeRate: 1, + flashFeeReceiver: alice, + flashLoanEnabled: false, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ) + ); + vm.stopPrank(); + + assertEq(Vault(payable(address(vault))).version(), 3); + assertEq(VaultImplementation(payable(address(vault))).flashFeeRate(), 1); + assertEq(VaultImplementation(payable(address(vault))).epochDurationSetEpochsDelay(), 3); + + assertEq( + VaultImplementation(payable(address(vault))).hasRole( + VaultImplementation(payable(address(vault))).EPOCH_DURATION_SET_ROLE(), alice + ), + true + ); + assertEq( + VaultImplementation(payable(address(vault))).hasRole( + VaultImplementation(payable(address(vault))).FLASH_LOAN_ENABLED_SET_ROLE(), alice + ), + true + ); + assertEq( + VaultImplementation(payable(address(vault))).hasRole( + VaultImplementation(payable(address(vault))).FLASH_FEE_RATE_SET_ROLE(), alice + ), + true + ); + assertEq( + VaultImplementation(payable(address(vault))).hasRole( + VaultImplementation(payable(address(vault))).FLASH_FEE_RECEIVER_SET_ROLE(), alice + ), + true + ); + } + + function test_MigrateRevertInsufficientExitWindow() public { + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + address[] memory networkLimitSetRoleHolders = new address[](1); + networkLimitSetRoleHolders[0] = alice; + address[] memory operatorNetworkSharesSetRoleHolders = new address[](1); + operatorNetworkSharesSetRoleHolders[0] = alice; + (address vault_,,) = vaultConfigurator.create( + IVaultConfigurator.InitParams({ + version: 1, + owner: alice, + vaultParams: abi.encode( + IVaultV1.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: 1, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice + }) + ), + delegatorIndex: 0, + delegatorParams: abi.encode( + INetworkRestakeDelegator.InitParams({ + baseParams: IBaseDelegator.BaseParams({ + defaultAdminRoleHolder: alice, + hook: address(0), + hookSetRoleHolder: alice + }), + networkLimitSetRoleHolders: networkLimitSetRoleHolders, + operatorNetworkSharesSetRoleHolders: operatorNetworkSharesSetRoleHolders + }) + ), + withSlasher: false, + slasherIndex: 0, + slasherParams: abi.encode(ISlasher.InitParams({baseParams: IBaseSlasher.BaseParams({isBurnerHook: false})})) + }) + ); + + vault = VaultImplementation(payable(vault_)); + + vm.startPrank(alice); + vm.expectRevert(IVault.InsufficientExitWindow.selector); + vaultFactory.migrate( + address(vault), + 3, + abi.encode( + IVault.MigrateParams({ + epochDurationSetEpochsDelay: 7 days + 1, + flashFeeRate: 1, + flashFeeReceiver: alice, + flashLoanEnabled: false, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ) + ); + vm.stopPrank(); + + vm.startPrank(alice); + vaultFactory.migrate( + address(vault), + 3, + abi.encode( + IVault.MigrateParams({ + epochDurationSetEpochsDelay: 7 days + 2, + flashFeeRate: 1, + flashFeeReceiver: alice, + flashLoanEnabled: false, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ) + ); + vm.stopPrank(); + } + + function test_MigrateInvalidOrigin() public { + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + address[] memory networkLimitSetRoleHolders = new address[](1); + networkLimitSetRoleHolders[0] = alice; + address[] memory operatorNetworkSharesSetRoleHolders = new address[](1); + operatorNetworkSharesSetRoleHolders[0] = alice; + (address vault_,,) = vaultConfigurator.create( + IVaultConfigurator.InitParams({ + version: 2, + owner: alice, + vaultParams: abi.encode( + IVaultTokenizedV1.InitParamsTokenized({ + baseParams: IVaultV1.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: 7 days, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice + }), + name: "Name", + symbol: "SYMBOL" + }) + ), + delegatorIndex: 0, + delegatorParams: abi.encode( + INetworkRestakeDelegator.InitParams({ + baseParams: IBaseDelegator.BaseParams({ + defaultAdminRoleHolder: alice, + hook: address(0), + hookSetRoleHolder: alice + }), + networkLimitSetRoleHolders: networkLimitSetRoleHolders, + operatorNetworkSharesSetRoleHolders: operatorNetworkSharesSetRoleHolders + }) + ), + withSlasher: false, + slasherIndex: 0, + slasherParams: abi.encode(ISlasher.InitParams({baseParams: IBaseSlasher.BaseParams({isBurnerHook: false})})) + }) + ); + + vm.startPrank(alice); + vm.expectRevert(IVault.InvalidOrigin.selector); + vaultFactory.migrate(vault_, 3, new bytes(0)); + vm.stopPrank(); + } + + // struct GasStruct { + // uint256 gasSpent1; + // uint256 gasSpent2; + // } + + // struct HintStruct { + // uint256 num; + // bool back; + // uint256 secondsAgo; + // } + + // function test_ActiveSharesHint(uint256 amount1, uint48 epochDuration, HintStruct memory hintStruct) public { + // amount1 = bound(amount1, 1, 100 * 10 ** 18); + // epochDuration = uint48(bound(epochDuration, 1, 7 days)); + // hintStruct.num = bound(hintStruct.num, 0, 25); + // hintStruct.secondsAgo = bound(hintStruct.secondsAgo, 0, 1_720_700_948); + + // uint256 blockTimestamp = vm.getBlockTimestamp(); + // blockTimestamp = blockTimestamp + 1_720_700_948; + // vm.warp(blockTimestamp); + + // vault = _getVault(epochDuration); + + // for (uint256 i; i < hintStruct.num; ++i) { + // _deposit(alice, amount1); + + // blockTimestamp = blockTimestamp + epochDuration; + // vm.warp(blockTimestamp); + // } + + // uint48 timestamp = + // uint48(hintStruct.back ? blockTimestamp - hintStruct.secondsAgo : blockTimestamp + hintStruct.secondsAgo); + + // VaultHints vaultHints = new VaultHints(); + // bytes memory hint = vaultHints.activeSharesHint(address(vault), timestamp); + + // GasStruct memory gasStruct = GasStruct({gasSpent1: 1, gasSpent2: 1}); + // vault.activeSharesAt(timestamp, new bytes(0)); + // gasStruct.gasSpent1 = vm.lastCallGas().gasTotalUsed; + // vault.activeSharesAt(timestamp, hint); + // gasStruct.gasSpent2 = vm.lastCallGas().gasTotalUsed; + // assertApproxEqRel(gasStruct.gasSpent1, gasStruct.gasSpent2, 0.05e18); + // } + + // function test_ActiveStakeHint(uint256 amount1, uint48 epochDuration, HintStruct memory hintStruct) public { + // amount1 = bound(amount1, 1, 100 * 10 ** 18); + // epochDuration = uint48(bound(epochDuration, 1, 7 days)); + // hintStruct.num = bound(hintStruct.num, 0, 25); + // hintStruct.secondsAgo = bound(hintStruct.secondsAgo, 0, 1_720_700_948); + + // uint256 blockTimestamp = vm.getBlockTimestamp(); + // blockTimestamp = blockTimestamp + 1_720_700_948; + // vm.warp(blockTimestamp); + + // vault = _getVault(epochDuration); + + // for (uint256 i; i < hintStruct.num; ++i) { + // _deposit(alice, amount1); + + // blockTimestamp = blockTimestamp + epochDuration; + // vm.warp(blockTimestamp); + // } + + // uint48 timestamp = + // uint48(hintStruct.back ? blockTimestamp - hintStruct.secondsAgo : blockTimestamp + hintStruct.secondsAgo); + + // VaultHints vaultHints = new VaultHints(); + // bytes memory hint = vaultHints.activeStakeHint(address(vault), timestamp); + + // GasStruct memory gasStruct = GasStruct({gasSpent1: 1, gasSpent2: 1}); + // vault.activeStakeAt(timestamp, new bytes(0)); + // gasStruct.gasSpent1 = vm.lastCallGas().gasTotalUsed; + // vault.activeStakeAt(timestamp, hint); + // gasStruct.gasSpent2 = vm.lastCallGas().gasTotalUsed; + // assertGe(gasStruct.gasSpent1, gasStruct.gasSpent2); + // } + + // function test_ActiveSharesOfHint(uint256 amount1, uint48 epochDuration, HintStruct memory hintStruct) public { + // amount1 = bound(amount1, 1, 100 * 10 ** 18); + // epochDuration = uint48(bound(epochDuration, 1, 7 days)); + // hintStruct.num = bound(hintStruct.num, 0, 25); + // hintStruct.secondsAgo = bound(hintStruct.secondsAgo, 0, 1_720_700_948); + + // uint256 blockTimestamp = vm.getBlockTimestamp(); + // blockTimestamp = blockTimestamp + 1_720_700_948; + // vm.warp(blockTimestamp); + + // vault = _getVault(epochDuration); + + // for (uint256 i; i < hintStruct.num; ++i) { + // _deposit(alice, amount1); + + // blockTimestamp = blockTimestamp + epochDuration; + // vm.warp(blockTimestamp); + // } + + // uint48 timestamp = + // uint48(hintStruct.back ? blockTimestamp - hintStruct.secondsAgo : blockTimestamp + hintStruct.secondsAgo); + + // VaultHints vaultHints = new VaultHints(); + // bytes memory hint = vaultHints.activeSharesOfHint(address(vault), alice, timestamp); + + // GasStruct memory gasStruct = GasStruct({gasSpent1: 1, gasSpent2: 1}); + // vault.activeSharesOfAt(alice, timestamp, new bytes(0)); + // gasStruct.gasSpent1 = vm.lastCallGas().gasTotalUsed; + // vault.activeSharesOfAt(alice, timestamp, hint); + // gasStruct.gasSpent2 = vm.lastCallGas().gasTotalUsed; + // assertGe(gasStruct.gasSpent1, gasStruct.gasSpent2); + // } + + // struct ActiveBalanceOfHintsUint32 { + // uint32 activeSharesOfHint; + // uint32 activeStakeHint; + // uint32 activeSharesHint; + // } + + // function test_ActiveBalanceOfHint( + // uint256 amount1, + // uint48 epochDuration, + // HintStruct memory hintStruct, + // ActiveBalanceOfHintsUint32 memory activeBalanceOfHintsUint32 + // ) public { + // amount1 = bound(amount1, 1, 100 * 10 ** 18); + // epochDuration = uint48(bound(epochDuration, 1, 7 days)); + // hintStruct.num = bound(hintStruct.num, 0, 25); + // hintStruct.secondsAgo = bound(hintStruct.secondsAgo, 0, 1_720_700_948); + + // uint256 blockTimestamp = vm.getBlockTimestamp(); + // blockTimestamp = blockTimestamp + 1_720_700_948; + // vm.warp(blockTimestamp); + + // vault = _getVault(epochDuration); + + // for (uint256 i; i < hintStruct.num; ++i) { + // _deposit(alice, amount1); + + // blockTimestamp = blockTimestamp + epochDuration; + // vm.warp(blockTimestamp); + // } + + // uint48 timestamp = + // uint48(hintStruct.back ? blockTimestamp - hintStruct.secondsAgo : blockTimestamp + hintStruct.secondsAgo); + + // VaultHints vaultHints = new VaultHints(); + // bytes memory hint = vaultHints.activeBalanceOfHints(address(vault), alice, timestamp); + + // GasStruct memory gasStruct = GasStruct({gasSpent1: 1, gasSpent2: 1}); + // bytes memory activeBalanceOfHints = abi.encode( + // IVault.ActiveBalanceOfHints({ + // activeSharesOfHint: abi.encode(activeBalanceOfHintsUint32.activeSharesOfHint), + // activeStakeHint: abi.encode(activeBalanceOfHintsUint32.activeStakeHint), + // activeSharesHint: abi.encode(activeBalanceOfHintsUint32.activeSharesHint) + // }) + // ); + // try vault.activeBalanceOfAt(alice, timestamp, activeBalanceOfHints) { + // gasStruct.gasSpent1 = vm.lastCallGas().gasTotalUsed; + // } catch { + // vault.activeBalanceOfAt(alice, timestamp, ""); + // gasStruct.gasSpent1 = vm.lastCallGas().gasTotalUsed; + // } + + // vault.activeBalanceOfAt(alice, timestamp, hint); + // gasStruct.gasSpent2 = vm.lastCallGas().gasTotalUsed; + // assertGe(gasStruct.gasSpent1, gasStruct.gasSpent2); + // } + + // function test_ActiveBalanceOfHintMany( + // uint256 amount1, + // uint48 epochDuration, + // HintStruct memory hintStruct + // ) public { + // amount1 = bound(amount1, 1, 1 * 10 ** 18); + // epochDuration = uint48(bound(epochDuration, 1, 7 days)); + // hintStruct.num = 500; + // hintStruct.secondsAgo = bound(hintStruct.secondsAgo, 0, 1_720_700_948); + + // uint256 blockTimestamp = vm.getBlockTimestamp(); + // blockTimestamp = blockTimestamp + 1_720_700_948; + // vm.warp(blockTimestamp); + + // vault = _getVault(epochDuration); + + // for (uint256 i; i < hintStruct.num; ++i) { + // _deposit(alice, amount1); + + // blockTimestamp = blockTimestamp + epochDuration; + // vm.warp(blockTimestamp); + // } + + // uint48 timestamp = + // uint48(hintStruct.back ? blockTimestamp - hintStruct.secondsAgo : blockTimestamp + hintStruct.secondsAgo); + + // VaultHints vaultHints = new VaultHints(); + // bytes memory hint = vaultHints.activeBalanceOfHints(address(vault), alice, timestamp); + + // GasStruct memory gasStruct = GasStruct({gasSpent1: 1, gasSpent2: 1}); + // vault.activeBalanceOfAt(alice, timestamp, ""); + // gasStruct.gasSpent1 = vm.lastCallGas().gasTotalUsed; + // vault.activeBalanceOfAt(alice, timestamp, hint); + // gasStruct.gasSpent2 = vm.lastCallGas().gasTotalUsed; + // assertGe(gasStruct.gasSpent1, gasStruct.gasSpent2); + + // assertLt(gasStruct.gasSpent1 - gasStruct.gasSpent2, 10_000); + // } + + function _getVault( + uint48 epochDuration + ) internal returns (VaultImplementation) { + address[] memory networkLimitSetRoleHolders = new address[](1); + networkLimitSetRoleHolders[0] = alice; + address[] memory operatorNetworkSharesSetRoleHolders = new address[](1); + operatorNetworkSharesSetRoleHolders[0] = alice; + (address vault_,,) = vaultConfigurator.create( + IVaultConfigurator.InitParams({ + version: 3, + owner: alice, + vaultParams: abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: epochDuration, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: true, + flashFeeRate: 0, + flashFeeReceiver: alice, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ), + delegatorIndex: 0, + delegatorParams: abi.encode( + INetworkRestakeDelegator.InitParams({ + baseParams: IBaseDelegator.BaseParams({ + defaultAdminRoleHolder: alice, + hook: address(0), + hookSetRoleHolder: alice + }), + networkLimitSetRoleHolders: networkLimitSetRoleHolders, + operatorNetworkSharesSetRoleHolders: operatorNetworkSharesSetRoleHolders + }) + ), + withSlasher: false, + slasherIndex: 0, + slasherParams: abi.encode(ISlasher.InitParams({baseParams: IBaseSlasher.BaseParams({isBurnerHook: false})})) + }) + ); + + return VaultImplementation(vault_); + } + + function _getVaultAndDelegatorAndSlasher( + uint48 epochDuration + ) internal returns (VaultImplementation, FullRestakeDelegator, Slasher) { + address[] memory networkLimitSetRoleHolders = new address[](1); + networkLimitSetRoleHolders[0] = alice; + address[] memory operatorNetworkLimitSetRoleHolders = new address[](1); + operatorNetworkLimitSetRoleHolders[0] = alice; + (address vault_, address delegator_, address slasher_) = vaultConfigurator.create( + IVaultConfigurator.InitParams({ + version: 3, + owner: alice, + vaultParams: abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: epochDuration, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: true, + flashFeeRate: 0, + flashFeeReceiver: address(0), + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ), + delegatorIndex: 1, + delegatorParams: abi.encode( + IFullRestakeDelegator.InitParams({ + baseParams: IBaseDelegator.BaseParams({ + defaultAdminRoleHolder: alice, + hook: address(0), + hookSetRoleHolder: alice + }), + networkLimitSetRoleHolders: networkLimitSetRoleHolders, + operatorNetworkLimitSetRoleHolders: operatorNetworkLimitSetRoleHolders + }) + ), + withSlasher: true, + slasherIndex: 0, + slasherParams: abi.encode(ISlasher.InitParams({baseParams: IBaseSlasher.BaseParams({isBurnerHook: false})})) + }) + ); + + return (VaultImplementation(vault_), FullRestakeDelegator(delegator_), Slasher(slasher_)); + } + + function _registerOperator( + address user + ) internal { + vm.startPrank(user); + operatorRegistry.registerOperator(); + vm.stopPrank(); + } + + function _registerNetwork(address user, address middleware) internal { + vm.startPrank(user); + networkRegistry.registerNetwork(); + networkMiddlewareService.setMiddleware(middleware); + vm.stopPrank(); + } + + function _grantDepositorWhitelistRole(address user, address account) internal { + vm.startPrank(user); + Vault(payable(address(vault))).grantRole(vault.DEPOSITOR_WHITELIST_ROLE(), account); + vm.stopPrank(); + } + + function _grantDepositWhitelistSetRole(address user, address account) internal { + vm.startPrank(user); + Vault(payable(address(vault))).grantRole(vault.DEPOSIT_WHITELIST_SET_ROLE(), account); + vm.stopPrank(); + } + + function _grantIsDepositLimitSetRole(address user, address account) internal { + vm.startPrank(user); + Vault(payable(address(vault))).grantRole(vault.IS_DEPOSIT_LIMIT_SET_ROLE(), account); + vm.stopPrank(); + } + + function _grantDepositLimitSetRole(address user, address account) internal { + vm.startPrank(user); + Vault(payable(address(vault))).grantRole(vault.DEPOSIT_LIMIT_SET_ROLE(), account); + vm.stopPrank(); + } + + function _grantEpochDurationSetRole(address user, address account) internal { + vm.startPrank(user); + Vault(payable(address(vault))).grantRole(vault.EPOCH_DURATION_SET_ROLE(), account); + vm.stopPrank(); + } + + function _grantFlashloanEnabledSetRole(address user, address account) internal { + vm.startPrank(user); + Vault(payable(address(vault))).grantRole(vault.FLASH_LOAN_ENABLED_SET_ROLE(), account); + vm.stopPrank(); + } + + function _grantFlashFeeRateSetRole(address user, address account) internal { + vm.startPrank(user); + Vault(payable(address(vault))).grantRole(vault.FLASH_FEE_RATE_SET_ROLE(), account); + vm.stopPrank(); + } + + function _grantFlashFeeReceiverSetRole(address user, address account) internal { + vm.startPrank(user); + Vault(payable(address(vault))).grantRole(vault.FLASH_FEE_RECEIVER_SET_ROLE(), account); + vm.stopPrank(); + } + + function _deposit(address user, uint256 amount) internal returns (uint256 depositedAmount, uint256 mintedShares) { + collateral.transfer(user, amount); + vm.startPrank(user); + collateral.approve(address(vault), amount); + (depositedAmount, mintedShares) = vault.deposit(user, amount); + vm.stopPrank(); + } + + function _withdraw(address user, uint256 amount) internal returns (uint256 burnedShares, uint256 mintedShares) { + vm.startPrank(user); + (burnedShares, mintedShares) = vault.withdraw(user, amount); + vm.stopPrank(); + } + + function _redeem(address user, uint256 shares) internal returns (uint256 withdrawnAssets, uint256 mintedShares) { + vm.startPrank(user); + (withdrawnAssets, mintedShares) = vault.redeem(user, shares); + vm.stopPrank(); + } + + function _claim(address user, uint256 epoch) internal returns (uint256 amount) { + vm.startPrank(user); + amount = vault.claim(user, epoch); + vm.stopPrank(); + } + + function _claimBatch(address user, uint256[] memory epochs) internal returns (uint256 amount) { + vm.startPrank(user); + amount = vault.claimBatch(user, epochs); + vm.stopPrank(); + } + + function _optInOperatorVault( + address user + ) internal { + vm.startPrank(user); + operatorVaultOptInService.optIn(address(vault)); + vm.stopPrank(); + } + + function _optOutOperatorVault( + address user + ) internal { + vm.startPrank(user); + operatorVaultOptInService.optOut(address(vault)); + vm.stopPrank(); + } + + function _optInOperatorNetwork(address user, address network) internal { + vm.startPrank(user); + operatorNetworkOptInService.optIn(network); + vm.stopPrank(); + } + + function _optOutOperatorNetwork(address user, address network) internal { + vm.startPrank(user); + operatorNetworkOptInService.optOut(network); + vm.stopPrank(); + } + + function _setDepositWhitelist(address user, bool status) internal { + vm.startPrank(user); + vault.setDepositWhitelist(status); + vm.stopPrank(); + } + + function _setDepositorWhitelistStatus(address user, address depositor, bool status) internal { + vm.startPrank(user); + vault.setDepositorWhitelistStatus(depositor, status); + vm.stopPrank(); + } + + function _setIsDepositLimit(address user, bool status) internal { + vm.startPrank(user); + vault.setIsDepositLimit(status); + vm.stopPrank(); + } + + function _setDepositLimit(address user, uint256 amount) internal { + vm.startPrank(user); + vault.setDepositLimit(amount); + vm.stopPrank(); + } + + function _setNetworkLimit(address user, address network, uint256 amount) internal { + vm.startPrank(user); + delegator.setNetworkLimit(network.subnetwork(0), amount); + vm.stopPrank(); + } + + function _setOperatorNetworkLimit(address user, address network, address operator, uint256 amount) internal { + vm.startPrank(user); + delegator.setOperatorNetworkLimit(network.subnetwork(0), operator, amount); + vm.stopPrank(); + } + + function _slash( + address user, + address network, + address operator, + uint256 amount, + uint48 captureTimestamp, + bytes memory hints + ) internal returns (uint256 slashAmount) { + vm.startPrank(user); + slashAmount = slasher.slash(network.subnetwork(0), operator, amount, captureTimestamp, hints); + vm.stopPrank(); + } + + function _setMaxNetworkLimit(address user, uint96 identifier, uint256 amount) internal { + vm.startPrank(user); + delegator.setMaxNetworkLimit(identifier, amount); + vm.stopPrank(); + } + + function _setEpochDuration(address user, uint48 epochDuration) internal { + vm.startPrank(user); + vault.setEpochDuration(epochDuration, 3); + vm.stopPrank(); + } + + function _setFlashloanEnabled(address user, bool status) internal { + vm.startPrank(user); + vault.setFlashloanEnabled(status); + vm.stopPrank(); + } + + function _setFlashFeeRate(address user, uint256 flashFeeRate) internal { + vm.startPrank(user); + vault.setFlashFeeRate(flashFeeRate); + vm.stopPrank(); + } + + function _setFlashFeeReceiver(address user, address flashFeeReceiver) internal { + vm.startPrank(user); + vault.setFlashFeeReceiver(flashFeeReceiver); + vm.stopPrank(); + } +} diff --git a/test/vault/v1.1/VaultTokenized.t.sol b/test/vault/v1.1/VaultTokenized.t.sol new file mode 100644 index 00000000..9ac53a88 --- /dev/null +++ b/test/vault/v1.1/VaultTokenized.t.sol @@ -0,0 +1,4353 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.25; + +import {Test, console2} from "forge-std/Test.sol"; + +import {VaultFactory} from "../../../src/contracts/VaultFactory.sol"; +import {DelegatorFactory} from "../../../src/contracts/DelegatorFactory.sol"; +import {SlasherFactory} from "../../../src/contracts/SlasherFactory.sol"; +import {NetworkRegistry} from "../../../src/contracts/NetworkRegistry.sol"; +import {OperatorRegistry} from "../../../src/contracts/OperatorRegistry.sol"; +import {MetadataService} from "../../../src/contracts/service/MetadataService.sol"; +import {NetworkMiddlewareService} from "../../../src/contracts/service/NetworkMiddlewareService.sol"; +import {OptInService} from "../../../src/contracts/service/OptInService.sol"; + +import {Vault as VaultV1} from "../../../src/contracts/vault/Vault.sol"; +import {VaultTokenized as VaultTokenizedV1} from "../../../src/contracts/vault/VaultTokenized.sol"; +import {VaultTokenizedImplementation} from "../../../src/contracts/vault/v1.1/VaultTokenizedImplementation.sol"; +import {VaultTokenized} from "../../../src/contracts/vault/v1.1/VaultTokenized.sol"; +import {Vault} from "../../../src/contracts/vault/v1.1/Vault.sol"; +import {VaultImplementation} from "../../../src/contracts/vault/v1.1/VaultImplementation.sol"; +import {NetworkRestakeDelegator} from "../../../src/contracts/delegator/NetworkRestakeDelegator.sol"; +import {FullRestakeDelegator} from "../../../src/contracts/delegator/FullRestakeDelegator.sol"; +import {OperatorSpecificDelegator} from "../../../src/contracts/delegator/OperatorSpecificDelegator.sol"; +import {OperatorNetworkSpecificDelegator} from "../../../src/contracts/delegator/OperatorNetworkSpecificDelegator.sol"; +import {Slasher} from "../../../src/contracts/slasher/Slasher.sol"; +import {VetoSlasher} from "../../../src/contracts/slasher/VetoSlasher.sol"; + +import {IVault} from "../../../src/interfaces/vault/v1.1/IVault.sol"; +import {IVaultTokenized} from "../../../src/interfaces/vault/v1.1/IVaultTokenized.sol"; +import {IVault as IVaultV1} from "../../../src/interfaces/vault/IVault.sol"; +import {IVaultTokenized as IVaultTokenizedV1} from "../../../src/interfaces/vault/IVaultTokenized.sol"; +import {Token} from "../../mocks/Token.sol"; +import {FeeOnTransferToken} from "../../mocks/FeeOnTransferToken.sol"; +import {VaultConfigurator} from "../../../src/contracts/VaultConfigurator.sol"; +import {IVaultConfigurator} from "../../../src/interfaces/IVaultConfigurator.sol"; +import {INetworkRestakeDelegator} from "../../../src/interfaces/delegator/INetworkRestakeDelegator.sol"; +import {IFullRestakeDelegator} from "../../../src/interfaces/delegator/IFullRestakeDelegator.sol"; +import {IBaseDelegator} from "../../../src/interfaces/delegator/IBaseDelegator.sol"; +import {ISlasher} from "../../../src/interfaces/slasher/ISlasher.sol"; +import {IBaseSlasher} from "../../../src/interfaces/slasher/IBaseSlasher.sol"; + +import {IVaultStorage} from "../../../src/interfaces/vault/v1.1/IVaultStorage.sol"; +import {Math} from "@openzeppelin/contracts/utils/math/Math.sol"; +import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; + +import {VaultHints} from "../../../src/contracts/hints/VaultHints.sol"; +import {Subnetwork} from "../../../src/contracts/libraries/Subnetwork.sol"; + +contract VaultTokenizedTest is Test { + using Math for uint256; + using Subnetwork for bytes32; + using Subnetwork for address; + + address owner; + address alice; + uint256 alicePrivateKey; + address bob; + uint256 bobPrivateKey; + + VaultFactory vaultFactory; + DelegatorFactory delegatorFactory; + SlasherFactory slasherFactory; + NetworkRegistry networkRegistry; + OperatorRegistry operatorRegistry; + MetadataService operatorMetadataService; + MetadataService networkMetadataService; + NetworkMiddlewareService networkMiddlewareService; + OptInService operatorVaultOptInService; + OptInService operatorNetworkOptInService; + + Token collateral; + FeeOnTransferToken feeOnTransferCollateral; + VaultConfigurator vaultConfigurator; + + VaultTokenizedImplementation vault; + FullRestakeDelegator delegator; + Slasher slasher; + + function setUp() public { + owner = address(this); + (alice, alicePrivateKey) = makeAddrAndKey("alice"); + (bob, bobPrivateKey) = makeAddrAndKey("bob"); + + vaultFactory = new VaultFactory(owner); + delegatorFactory = new DelegatorFactory(owner); + slasherFactory = new SlasherFactory(owner); + networkRegistry = new NetworkRegistry(); + operatorRegistry = new OperatorRegistry(); + operatorMetadataService = new MetadataService(address(operatorRegistry)); + networkMetadataService = new MetadataService(address(networkRegistry)); + networkMiddlewareService = new NetworkMiddlewareService(address(networkRegistry)); + operatorVaultOptInService = + new OptInService(address(operatorRegistry), address(vaultFactory), "OperatorVaultOptInService"); + operatorNetworkOptInService = + new OptInService(address(operatorRegistry), address(networkRegistry), "OperatorNetworkOptInService"); + + address vaultV1Impl = + address(new VaultV1(address(delegatorFactory), address(slasherFactory), address(vaultFactory))); + vaultFactory.whitelist(vaultV1Impl); + + address vaultTokenizedV1Impl = + address(new VaultTokenizedV1(address(delegatorFactory), address(slasherFactory), address(vaultFactory))); + vaultFactory.whitelist(vaultTokenizedV1Impl); + + address vaultImplementation = + address(new VaultImplementation(address(delegatorFactory), address(slasherFactory))); + address vaultImpl = address(new Vault(address(vaultFactory), vaultImplementation)); + vaultFactory.whitelist(vaultImpl); + + address vaultTokenizedImplementation = address(new VaultTokenizedImplementation(vaultImplementation)); + address vaultTokenizedImpl = address(new VaultTokenized(address(vaultFactory), vaultTokenizedImplementation)); + vaultFactory.whitelist(vaultTokenizedImpl); + + address networkRestakeDelegatorImpl = address( + new NetworkRestakeDelegator( + address(networkRegistry), + address(vaultFactory), + address(operatorVaultOptInService), + address(operatorNetworkOptInService), + address(delegatorFactory), + delegatorFactory.totalTypes() + ) + ); + delegatorFactory.whitelist(networkRestakeDelegatorImpl); + + address fullRestakeDelegatorImpl = address( + new FullRestakeDelegator( + address(networkRegistry), + address(vaultFactory), + address(operatorVaultOptInService), + address(operatorNetworkOptInService), + address(delegatorFactory), + delegatorFactory.totalTypes() + ) + ); + delegatorFactory.whitelist(fullRestakeDelegatorImpl); + + address operatorSpecificDelegatorImpl = address( + new OperatorSpecificDelegator( + address(operatorRegistry), + address(networkRegistry), + address(vaultFactory), + address(operatorVaultOptInService), + address(operatorNetworkOptInService), + address(delegatorFactory), + delegatorFactory.totalTypes() + ) + ); + delegatorFactory.whitelist(operatorSpecificDelegatorImpl); + + address operatorNetworkSpecificDelegatorImpl = address( + new OperatorNetworkSpecificDelegator( + address(operatorRegistry), + address(networkRegistry), + address(vaultFactory), + address(operatorVaultOptInService), + address(operatorNetworkOptInService), + address(delegatorFactory), + delegatorFactory.totalTypes() + ) + ); + delegatorFactory.whitelist(operatorNetworkSpecificDelegatorImpl); + + address slasherImpl = address( + new Slasher( + address(vaultFactory), + address(networkMiddlewareService), + address(slasherFactory), + slasherFactory.totalTypes() + ) + ); + slasherFactory.whitelist(slasherImpl); + + address vetoSlasherImpl = address( + new VetoSlasher( + address(vaultFactory), + address(networkMiddlewareService), + address(networkRegistry), + address(slasherFactory), + slasherFactory.totalTypes() + ) + ); + slasherFactory.whitelist(vetoSlasherImpl); + + collateral = new Token("Token"); + feeOnTransferCollateral = new FeeOnTransferToken("FeeOnTransferToken"); + + vaultConfigurator = + new VaultConfigurator(address(vaultFactory), address(delegatorFactory), address(slasherFactory)); + } + + function test_Create2( + address burner, + uint48 epochDuration, + bool depositWhitelist, + bool isDepositLimit, + uint256 depositLimit + ) public { + epochDuration = uint48(bound(epochDuration, 1, 50 weeks)); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + address[] memory networkLimitSetRoleHolders = new address[](1); + networkLimitSetRoleHolders[0] = alice; + address[] memory operatorNetworkSharesSetRoleHolders = new address[](1); + operatorNetworkSharesSetRoleHolders[0] = alice; + (address vault_, address delegator_,) = vaultConfigurator.create( + IVaultConfigurator.InitParams({ + version: 4, + owner: address(0), + vaultParams: abi.encode( + IVaultTokenized.InitParamsTokenized({ + baseParams: abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: burner, + epochDuration: epochDuration, + depositWhitelist: depositWhitelist, + isDepositLimit: isDepositLimit, + depositLimit: depositLimit, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 1, + flashFeeReceiver: alice, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ), + name: "Test", + symbol: "TEST" + }) + ), + delegatorIndex: 0, + delegatorParams: abi.encode( + INetworkRestakeDelegator.InitParams({ + baseParams: IBaseDelegator.BaseParams({ + defaultAdminRoleHolder: alice, + hook: address(0), + hookSetRoleHolder: alice + }), + networkLimitSetRoleHolders: networkLimitSetRoleHolders, + operatorNetworkSharesSetRoleHolders: operatorNetworkSharesSetRoleHolders + }) + ), + withSlasher: false, + slasherIndex: 0, + slasherParams: abi.encode(ISlasher.InitParams({baseParams: IBaseSlasher.BaseParams({isBurnerHook: false})})) + }) + ); + + vault = VaultTokenizedImplementation(payable(vault_)); + + assertEq(vault.DEPOSIT_WHITELIST_SET_ROLE(), keccak256("DEPOSIT_WHITELIST_SET_ROLE")); + assertEq(vault.DEPOSITOR_WHITELIST_ROLE(), keccak256("DEPOSITOR_WHITELIST_ROLE")); + assertEq(VaultImplementation(payable(address(vault))).DELEGATOR_FACTORY(), address(delegatorFactory)); + assertEq(VaultImplementation(payable(address(vault))).SLASHER_FACTORY(), address(slasherFactory)); + + assertEq(VaultTokenized(payable(address(vault))).owner(), address(0)); + assertEq(vault.collateral(), address(collateral)); + assertEq(vault.delegator(), delegator_); + assertEq(vault.slasher(), address(0)); + assertEq(vault.burner(), burner); + assertEq(VaultImplementation(payable(address(vault))).epochDuration(), epochDuration); + assertEq(vault.depositWhitelist(), depositWhitelist); + assertEq( + VaultImplementation(payable(address(vault))).hasRole( + VaultImplementation(payable(address(vault))).DEFAULT_ADMIN_ROLE(), alice + ), + true + ); + assertEq( + VaultImplementation(payable(address(vault))).hasRole( + VaultImplementation(payable(address(vault))).DEPOSITOR_WHITELIST_ROLE(), alice + ), + true + ); + assertEq(VaultImplementation(payable(address(vault))).epochDurationInit(), blockTimestamp); + assertEq(VaultImplementation(payable(address(vault))).epochDuration(), epochDuration); + vm.expectRevert(IVault.InvalidTimestamp.selector); + assertEq(VaultImplementation(payable(address(vault))).epochAt(0), 0); + assertEq(VaultImplementation(payable(address(vault))).epochAt(uint48(blockTimestamp)), 0); + assertEq(VaultImplementation(payable(address(vault))).currentEpoch(), 0); + assertEq(VaultImplementation(payable(address(vault))).currentEpochStart(), blockTimestamp); + vm.expectRevert(IVault.NoPreviousEpoch.selector); + VaultImplementation(payable(address(vault))).previousEpochStart(); + assertEq(VaultImplementation(payable(address(vault))).nextEpochStart(), blockTimestamp + epochDuration); + assertEq(VaultImplementation(payable(address(vault))).totalStake(), 0); + assertEq(VaultImplementation(payable(address(vault))).activeSharesAt(uint48(blockTimestamp), ""), 0); + assertEq(VaultImplementation(payable(address(vault))).activeShares(), 0); + assertEq(VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp), ""), 0); + assertEq(VaultImplementation(payable(address(vault))).activeStake(), 0); + assertEq(VaultImplementation(payable(address(vault))).activeSharesOfAt(alice, uint48(blockTimestamp), ""), 0); + assertEq(VaultImplementation(payable(address(vault))).activeSharesOf(alice), 0); + assertEq(VaultImplementation(payable(address(vault))).activeBalanceOfAt(alice, uint48(blockTimestamp), ""), 0); + assertEq(VaultImplementation(payable(address(vault))).activeBalanceOf(alice), 0); + assertEq(VaultImplementation(payable(address(vault))).withdrawals(0), 0); + assertEq(VaultImplementation(payable(address(vault))).withdrawalShares(0), 0); + assertEq(VaultImplementation(payable(address(vault))).isWithdrawalsClaimed(0, alice), false); + assertEq(VaultImplementation(payable(address(vault))).depositWhitelist(), depositWhitelist); + assertEq(VaultImplementation(payable(address(vault))).isDepositorWhitelisted(alice), false); + assertEq(VaultImplementation(payable(address(vault))).slashableBalanceOf(alice), 0); + assertEq(VaultImplementation(payable(address(vault))).isDelegatorInitialized(), true); + assertEq(VaultImplementation(payable(address(vault))).isSlasherInitialized(), true); + assertEq(VaultImplementation(payable(address(vault))).isInitialized(), true); + + blockTimestamp = blockTimestamp + VaultImplementation(payable(address(vault))).epochDuration() - 1; + vm.warp(blockTimestamp); + + assertEq(VaultImplementation(payable(address(vault))).epochAt(uint48(blockTimestamp)), 0); + assertEq(VaultImplementation(payable(address(vault))).epochAt(uint48(blockTimestamp + 1)), 1); + assertEq(VaultImplementation(payable(address(vault))).currentEpoch(), 0); + assertEq( + VaultImplementation(payable(address(vault))).currentEpochStart(), + blockTimestamp - (VaultImplementation(payable(address(vault))).epochDuration() - 1) + ); + vm.expectRevert(IVault.NoPreviousEpoch.selector); + VaultImplementation(payable(address(vault))).previousEpochStart(); + assertEq(VaultImplementation(payable(address(vault))).nextEpochStart(), blockTimestamp + 1); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + assertEq(VaultImplementation(payable(address(vault))).epochAt(uint48(blockTimestamp)), 1); + assertEq( + VaultImplementation(payable(address(vault))).epochAt( + uint48(blockTimestamp + 2 * VaultImplementation(payable(address(vault))).epochDuration()) + ), + 3 + ); + assertEq(VaultImplementation(payable(address(vault))).currentEpoch(), 1); + assertEq(VaultImplementation(payable(address(vault))).currentEpochStart(), blockTimestamp); + assertEq( + VaultImplementation(payable(address(vault))).previousEpochStart(), + blockTimestamp - VaultImplementation(payable(address(vault))).epochDuration() + ); + assertEq( + VaultImplementation(payable(address(vault))).nextEpochStart(), + blockTimestamp + VaultImplementation(payable(address(vault))).epochDuration() + ); + + blockTimestamp = blockTimestamp + VaultImplementation(payable(address(vault))).epochDuration() - 1; + vm.warp(blockTimestamp); + + assertEq(VaultImplementation(payable(address(vault))).epochAt(uint48(blockTimestamp)), 1); + assertEq(VaultImplementation(payable(address(vault))).epochAt(uint48(blockTimestamp + 1)), 2); + assertEq(VaultImplementation(payable(address(vault))).currentEpoch(), 1); + assertEq( + VaultImplementation(payable(address(vault))).currentEpochStart(), + blockTimestamp - (VaultImplementation(payable(address(vault))).epochDuration() - 1) + ); + assertEq( + VaultImplementation(payable(address(vault))).previousEpochStart(), + blockTimestamp - (VaultImplementation(payable(address(vault))).epochDuration() - 1) + - VaultImplementation(payable(address(vault))).epochDuration() + ); + assertEq(VaultImplementation(payable(address(vault))).nextEpochStart(), blockTimestamp + 1); + + assertEq(vault.balanceOf(alice), 0); + assertEq(vault.totalSupply(), 0); + assertEq(vault.allowance(alice, alice), 0); + assertEq(vault.decimals(), collateral.decimals()); + assertEq(vault.symbol(), "TEST"); + assertEq(vault.name(), "Test"); + } + + function test_CreateRevertInvalidEpochDuration() public { + uint48 epochDuration = 0; + + address[] memory networkLimitSetRoleHolders = new address[](1); + networkLimitSetRoleHolders[0] = alice; + address[] memory operatorNetworkSharesSetRoleHolders = new address[](1); + operatorNetworkSharesSetRoleHolders[0] = alice; + uint64 lastVersion = vaultFactory.lastVersion(); + vm.expectRevert(IVault.InvalidEpochDuration.selector); + vaultConfigurator.create( + IVaultConfigurator.InitParams({ + version: lastVersion, + owner: alice, + vaultParams: abi.encode( + IVaultTokenized.InitParamsTokenized({ + baseParams: abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: epochDuration, + depositWhitelist: true, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 1, + flashFeeReceiver: alice, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ), + name: "Test", + symbol: "TEST" + }) + ), + delegatorIndex: 0, + delegatorParams: abi.encode( + INetworkRestakeDelegator.InitParams({ + baseParams: IBaseDelegator.BaseParams({ + defaultAdminRoleHolder: alice, + hook: address(0), + hookSetRoleHolder: alice + }), + networkLimitSetRoleHolders: networkLimitSetRoleHolders, + operatorNetworkSharesSetRoleHolders: operatorNetworkSharesSetRoleHolders + }) + ), + withSlasher: false, + slasherIndex: 0, + slasherParams: abi.encode(ISlasher.InitParams({baseParams: IBaseSlasher.BaseParams({isBurnerHook: false})})) + }) + ); + } + + function test_CreateRevertInvalidCollateral( + uint48 epochDuration + ) public { + epochDuration = uint48(bound(epochDuration, 1, 50 weeks)); + + address[] memory networkLimitSetRoleHolders = new address[](1); + networkLimitSetRoleHolders[0] = alice; + address[] memory operatorNetworkSharesSetRoleHolders = new address[](1); + operatorNetworkSharesSetRoleHolders[0] = alice; + uint64 lastVersion = vaultFactory.lastVersion(); + vm.expectRevert(IVault.InvalidCollateral.selector); + vaultConfigurator.create( + IVaultConfigurator.InitParams({ + version: lastVersion, + owner: alice, + vaultParams: abi.encode( + IVaultTokenized.InitParamsTokenized({ + baseParams: abi.encode( + IVault.InitParams({ + collateral: address(0), + burner: address(0xdEaD), + epochDuration: epochDuration, + depositWhitelist: true, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 1, + flashFeeReceiver: alice, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ), + name: "Test", + symbol: "TEST" + }) + ), + delegatorIndex: 0, + delegatorParams: abi.encode( + INetworkRestakeDelegator.InitParams({ + baseParams: IBaseDelegator.BaseParams({ + defaultAdminRoleHolder: alice, + hook: address(0), + hookSetRoleHolder: alice + }), + networkLimitSetRoleHolders: networkLimitSetRoleHolders, + operatorNetworkSharesSetRoleHolders: operatorNetworkSharesSetRoleHolders + }) + ), + withSlasher: false, + slasherIndex: 0, + slasherParams: abi.encode(ISlasher.InitParams({baseParams: IBaseSlasher.BaseParams({isBurnerHook: false})})) + }) + ); + } + + function test_CreateRevertMissingRoles1( + uint48 epochDuration + ) public { + epochDuration = uint48(bound(epochDuration, 1, 50 weeks)); + + uint64 lastVersion = vaultFactory.lastVersion(); + + vm.expectRevert(IVault.MissingRoles.selector); + vault = VaultTokenizedImplementation( + payable( + vaultFactory.create( + lastVersion, + alice, + abi.encode( + IVaultTokenized.InitParamsTokenized({ + baseParams: abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: epochDuration, + depositWhitelist: true, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 1, + flashFeeReceiver: alice, + defaultAdminRoleHolder: address(0), + depositWhitelistSetRoleHolder: address(0), + depositorWhitelistRoleHolder: address(0), + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: address(0), + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ), + name: "Test", + symbol: "TEST" + }) + ) + ) + ) + ); + } + + function test_CreateRevertMissingRoles2( + uint48 epochDuration + ) public { + epochDuration = uint48(bound(epochDuration, 1, 50 weeks)); + + uint64 lastVersion = vaultFactory.lastVersion(); + + vm.expectRevert(IVault.MissingRoles.selector); + vault = VaultTokenizedImplementation( + payable( + vaultFactory.create( + lastVersion, + alice, + abi.encode( + IVaultTokenized.InitParamsTokenized({ + baseParams: abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: epochDuration, + depositWhitelist: false, + isDepositLimit: true, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 0, + flashFeeReceiver: address(0), + defaultAdminRoleHolder: address(0), + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: address(0), + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: address(0), + depositLimitSetRoleHolder: address(0), + epochDurationSetRoleHolder: address(0), + flashLoanEnabledSetRoleHolder: address(0), + flashFeeRateSetRoleHolder: address(0), + flashFeeReceiverSetRoleHolder: address(0) + }) + ), + name: "Test", + symbol: "TEST" + }) + ) + ) + ) + ); + } + + function test_CreateRevertMissingRoles3( + uint48 epochDuration + ) public { + epochDuration = uint48(bound(epochDuration, 1, 50 weeks)); + + uint64 lastVersion = vaultFactory.lastVersion(); + + vm.expectRevert(IVault.MissingRoles.selector); + vault = VaultTokenizedImplementation( + payable( + vaultFactory.create( + lastVersion, + alice, + abi.encode( + IVaultTokenized.InitParamsTokenized({ + baseParams: abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: epochDuration, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 1, + flashFeeReceiver: alice, + defaultAdminRoleHolder: address(0), + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: address(0), + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: address(0), + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ), + name: "Test", + symbol: "TEST" + }) + ) + ) + ) + ); + } + + function test_CreateRevertMissingRoles4( + uint48 epochDuration + ) public { + epochDuration = uint48(bound(epochDuration, 1, 50 weeks)); + + uint64 lastVersion = vaultFactory.lastVersion(); + + vm.expectRevert(IVault.MissingRoles.selector); + vault = VaultTokenizedImplementation( + payable( + vaultFactory.create( + lastVersion, + alice, + abi.encode( + IVaultTokenized.InitParamsTokenized({ + baseParams: abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: epochDuration, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 1, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 0, + flashFeeReceiver: address(0), + defaultAdminRoleHolder: address(0), + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: address(0), + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: address(0), + depositLimitSetRoleHolder: address(0), + epochDurationSetRoleHolder: address(0), + flashLoanEnabledSetRoleHolder: address(0), + flashFeeRateSetRoleHolder: address(0), + flashFeeReceiverSetRoleHolder: address(0) + }) + ), + name: "Test", + symbol: "TEST" + }) + ) + ) + ) + ); + } + + function test_CreateRevertMissingRoles5( + uint48 epochDuration + ) public { + epochDuration = uint48(bound(epochDuration, 1, 50 weeks)); + + uint64 lastVersion = vaultFactory.lastVersion(); + + vm.expectRevert(IVault.MissingRoles.selector); + vault = VaultTokenizedImplementation( + payable( + vaultFactory.create( + lastVersion, + alice, + abi.encode( + IVaultTokenized.InitParamsTokenized({ + baseParams: abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: epochDuration, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 1, + flashFeeReceiver: alice, + defaultAdminRoleHolder: address(0), + depositWhitelistSetRoleHolder: address(0), + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: address(0), + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ), + name: "Test", + symbol: "TEST" + }) + ) + ) + ) + ); + } + + function test_SetDelegator() public { + uint64 lastVersion = vaultFactory.lastVersion(); + + vault = VaultTokenizedImplementation( + payable( + vaultFactory.create( + lastVersion, + alice, + abi.encode( + IVaultTokenized.InitParamsTokenized({ + baseParams: abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: 7 days, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 1, + flashFeeReceiver: alice, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ), + name: "Test", + symbol: "TEST" + }) + ) + ) + ) + ); + + assertEq(VaultImplementation(payable(address(vault))).isDelegatorInitialized(), false); + + address[] memory networkLimitSetRoleHolders = new address[](1); + networkLimitSetRoleHolders[0] = alice; + address[] memory operatorNetworkLimitSetRoleHolders = new address[](1); + operatorNetworkLimitSetRoleHolders[0] = alice; + delegator = FullRestakeDelegator( + delegatorFactory.create( + 1, + abi.encode( + address(vault), + abi.encode( + IFullRestakeDelegator.InitParams({ + baseParams: IBaseDelegator.BaseParams({ + defaultAdminRoleHolder: alice, + hook: address(0), + hookSetRoleHolder: alice + }), + networkLimitSetRoleHolders: networkLimitSetRoleHolders, + operatorNetworkLimitSetRoleHolders: operatorNetworkLimitSetRoleHolders + }) + ) + ) + ) + ); + + VaultImplementation(payable(address(vault))).setDelegator(address(delegator)); + + assertEq(vault.delegator(), address(delegator)); + assertEq(VaultImplementation(payable(address(vault))).isDelegatorInitialized(), true); + assertEq(VaultImplementation(payable(address(vault))).isInitialized(), false); + } + + function test_SetDelegatorRevertDelegatorAlreadyInitialized() public { + uint64 lastVersion = vaultFactory.lastVersion(); + + vault = VaultTokenizedImplementation( + payable( + vaultFactory.create( + lastVersion, + alice, + abi.encode( + IVaultTokenized.InitParamsTokenized({ + baseParams: abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: 7 days, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 1, + flashFeeReceiver: alice, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ), + name: "Test", + symbol: "TEST" + }) + ) + ) + ) + ); + + address[] memory networkLimitSetRoleHolders = new address[](1); + networkLimitSetRoleHolders[0] = alice; + address[] memory operatorNetworkLimitSetRoleHolders = new address[](1); + operatorNetworkLimitSetRoleHolders[0] = alice; + delegator = FullRestakeDelegator( + delegatorFactory.create( + 1, + abi.encode( + address(vault), + abi.encode( + IFullRestakeDelegator.InitParams({ + baseParams: IBaseDelegator.BaseParams({ + defaultAdminRoleHolder: alice, + hook: address(0), + hookSetRoleHolder: alice + }), + networkLimitSetRoleHolders: networkLimitSetRoleHolders, + operatorNetworkLimitSetRoleHolders: operatorNetworkLimitSetRoleHolders + }) + ) + ) + ) + ); + + VaultImplementation(payable(address(vault))).setDelegator(address(delegator)); + + vm.expectRevert(IVault.DelegatorAlreadyInitialized.selector); + VaultImplementation(payable(address(vault))).setDelegator(address(delegator)); + } + + function test_SetDelegatorRevertNotDelegator() public { + uint64 lastVersion = vaultFactory.lastVersion(); + + vault = VaultTokenizedImplementation( + payable( + vaultFactory.create( + lastVersion, + alice, + abi.encode( + IVaultTokenized.InitParamsTokenized({ + baseParams: abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: 7 days, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 1, + flashFeeReceiver: alice, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ), + name: "Test", + symbol: "TEST" + }) + ) + ) + ) + ); + + vm.expectRevert(IVault.NotDelegator.selector); + VaultImplementation(payable(address(vault))).setDelegator(address(1)); + } + + function test_SetDelegatorRevertInvalidDelegator() public { + uint64 lastVersion = vaultFactory.lastVersion(); + + vault = VaultTokenizedImplementation( + payable( + vaultFactory.create( + lastVersion, + alice, + abi.encode( + IVaultTokenized.InitParamsTokenized({ + baseParams: abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: 7 days, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 1, + flashFeeReceiver: alice, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ), + name: "Test", + symbol: "TEST" + }) + ) + ) + ) + ); + + VaultTokenizedImplementation vault2 = VaultTokenizedImplementation( + payable( + vaultFactory.create( + lastVersion, + alice, + abi.encode( + IVaultTokenized.InitParamsTokenized({ + baseParams: abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: 7 days, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 1, + flashFeeReceiver: alice, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ), + name: "Test", + symbol: "TEST" + }) + ) + ) + ) + ); + + address[] memory networkLimitSetRoleHolders = new address[](1); + networkLimitSetRoleHolders[0] = alice; + address[] memory operatorNetworkLimitSetRoleHolders = new address[](1); + operatorNetworkLimitSetRoleHolders[0] = alice; + delegator = FullRestakeDelegator( + delegatorFactory.create( + 1, + abi.encode( + address(vault2), + abi.encode( + IFullRestakeDelegator.InitParams({ + baseParams: IBaseDelegator.BaseParams({ + defaultAdminRoleHolder: alice, + hook: address(0), + hookSetRoleHolder: alice + }), + networkLimitSetRoleHolders: networkLimitSetRoleHolders, + operatorNetworkLimitSetRoleHolders: operatorNetworkLimitSetRoleHolders + }) + ) + ) + ) + ); + + vm.expectRevert(IVault.InvalidDelegator.selector); + VaultImplementation(payable(address(vault))).setDelegator(address(delegator)); + } + + function test_SetSlasher() public { + uint64 lastVersion = vaultFactory.lastVersion(); + + vault = VaultTokenizedImplementation( + payable( + vaultFactory.create( + lastVersion, + alice, + abi.encode( + IVaultTokenized.InitParamsTokenized({ + baseParams: abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: 7 days, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 1, + flashFeeReceiver: alice, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ), + name: "Test", + symbol: "TEST" + }) + ) + ) + ) + ); + + assertEq(vault.isSlasherInitialized(), false); + + slasher = Slasher( + slasherFactory.create( + 0, + abi.encode( + address(vault), + abi.encode(ISlasher.InitParams({baseParams: IBaseSlasher.BaseParams({isBurnerHook: false})})) + ) + ) + ); + + VaultImplementation(payable(address(vault))).setSlasher(address(slasher)); + + assertEq(vault.slasher(), address(slasher)); + assertEq(vault.isSlasherInitialized(), true); + assertEq(VaultImplementation(payable(address(vault))).isInitialized(), false); + } + + function test_SetSlasherRevertSlasherAlreadyInitialized() public { + uint64 lastVersion = vaultFactory.lastVersion(); + + vault = VaultTokenizedImplementation( + payable( + vaultFactory.create( + lastVersion, + alice, + abi.encode( + IVaultTokenized.InitParamsTokenized({ + baseParams: abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: 7 days, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 1, + flashFeeReceiver: alice, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ), + name: "Test", + symbol: "TEST" + }) + ) + ) + ) + ); + + slasher = Slasher( + slasherFactory.create( + 0, + abi.encode( + address(vault), + abi.encode(ISlasher.InitParams({baseParams: IBaseSlasher.BaseParams({isBurnerHook: false})})) + ) + ) + ); + + VaultImplementation(payable(address(vault))).setSlasher(address(slasher)); + + vm.expectRevert(IVault.SlasherAlreadyInitialized.selector); + VaultImplementation(payable(address(vault))).setSlasher(address(slasher)); + } + + function test_SetSlasherRevertNotSlasher() public { + uint64 lastVersion = vaultFactory.lastVersion(); + + vault = VaultTokenizedImplementation( + payable( + vaultFactory.create( + lastVersion, + alice, + abi.encode( + IVaultTokenized.InitParamsTokenized({ + baseParams: abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: 7 days, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 1, + flashFeeReceiver: alice, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ), + name: "Test", + symbol: "TEST" + }) + ) + ) + ) + ); + + slasher = Slasher( + slasherFactory.create( + 0, + abi.encode( + address(vault), + abi.encode(ISlasher.InitParams({baseParams: IBaseSlasher.BaseParams({isBurnerHook: false})})) + ) + ) + ); + + vm.expectRevert(IVault.NotSlasher.selector); + VaultImplementation(payable(address(vault))).setSlasher(address(1)); + } + + function test_SetSlasherRevertInvalidSlasher() public { + uint64 lastVersion = vaultFactory.lastVersion(); + + vault = VaultTokenizedImplementation( + payable( + vaultFactory.create( + lastVersion, + alice, + abi.encode( + IVaultTokenized.InitParamsTokenized({ + baseParams: abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: 7 days, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 1, + flashFeeReceiver: alice, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ), + name: "Test", + symbol: "TEST" + }) + ) + ) + ) + ); + + VaultTokenizedImplementation vault2 = VaultTokenizedImplementation( + payable( + vaultFactory.create( + lastVersion, + alice, + abi.encode( + IVaultTokenized.InitParamsTokenized({ + baseParams: abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: 7 days, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 1, + flashFeeReceiver: alice, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ), + name: "Test", + symbol: "TEST" + }) + ) + ) + ) + ); + + slasher = Slasher( + slasherFactory.create( + 0, + abi.encode( + address(vault2), + abi.encode(ISlasher.InitParams({baseParams: IBaseSlasher.BaseParams({isBurnerHook: false})})) + ) + ) + ); + + vm.expectRevert(IVault.InvalidSlasher.selector); + VaultImplementation(payable(address(vault))).setSlasher(address(slasher)); + } + + function test_SetSlasherZeroAddress() public { + uint64 lastVersion = vaultFactory.lastVersion(); + + vault = VaultTokenizedImplementation( + payable( + vaultFactory.create( + lastVersion, + alice, + abi.encode( + IVaultTokenized.InitParamsTokenized({ + baseParams: abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: 7 days, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 1, + flashFeeReceiver: alice, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ), + name: "Test", + symbol: "TEST" + }) + ) + ) + ) + ); + + VaultImplementation(payable(address(vault))).setSlasher(address(0)); + } + + function test_DepositTwice(uint256 amount1, uint256 amount2) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + amount2 = bound(amount2, 1, 100 * 10 ** 18); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + uint256 tokensBefore = collateral.balanceOf(address(vault)); + uint256 shares1 = amount1 * 10 ** 0; + { + (uint256 depositedAmount, uint256 mintedShares) = _deposit(alice, amount1); + assertEq(depositedAmount, amount1); + assertEq(mintedShares, shares1); + + assertEq(vault.balanceOf(alice), shares1); + assertEq(vault.totalSupply(), shares1); + } + assertEq(collateral.balanceOf(address(vault)) - tokensBefore, amount1); + + assertEq(VaultImplementation(payable(address(vault))).totalStake(), amount1); + assertEq(VaultImplementation(payable(address(vault))).activeSharesAt(uint48(blockTimestamp - 1), ""), 0); + assertEq(VaultImplementation(payable(address(vault))).activeSharesAt(uint48(blockTimestamp), ""), shares1); + assertEq(VaultImplementation(payable(address(vault))).activeShares(), shares1); + assertEq(VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp - 1), ""), 0); + assertEq(VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp), ""), amount1); + assertEq(VaultImplementation(payable(address(vault))).activeStake(), amount1); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesOfAt(alice, uint48(blockTimestamp - 1), ""), 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesOfAt(alice, uint48(blockTimestamp), ""), shares1 + ); + assertEq(VaultImplementation(payable(address(vault))).activeSharesOf(alice), shares1); + assertEq( + VaultImplementation(payable(address(vault))).activeBalanceOfAt(alice, uint48(blockTimestamp - 1), ""), 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).activeBalanceOfAt(alice, uint48(blockTimestamp), ""), amount1 + ); + assertEq(VaultImplementation(payable(address(vault))).activeBalanceOf(alice), amount1); + assertEq(VaultImplementation(payable(address(vault))).slashableBalanceOf(alice), amount1); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + uint256 shares2 = amount2 * (shares1 + 10 ** 0) / (amount1 + 1); + { + (uint256 depositedAmount, uint256 mintedShares) = _deposit(alice, amount2); + assertEq(depositedAmount, amount2); + assertEq(mintedShares, shares2); + + assertEq(vault.balanceOf(alice), shares1 + shares2); + assertEq(vault.totalSupply(), shares1 + shares2); + } + + assertEq(VaultImplementation(payable(address(vault))).totalStake(), amount1 + amount2); + assertEq(VaultImplementation(payable(address(vault))).activeSharesAt(uint48(blockTimestamp - 1), ""), shares1); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesAt(uint48(blockTimestamp), ""), shares1 + shares2 + ); + assertEq(VaultImplementation(payable(address(vault))).activeShares(), shares1 + shares2); + uint256 gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesAt(uint48(blockTimestamp - 1), abi.encode(1)), + shares1 + ); + uint256 gasSpent = gasLeft - gasleft(); + gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesAt(uint48(blockTimestamp - 1), abi.encode(0)), + shares1 + ); + assertGt(gasSpent, gasLeft - gasleft()); + gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesAt(uint48(blockTimestamp), abi.encode(0)), + shares1 + shares2 + ); + gasSpent = gasLeft - gasleft(); + gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesAt(uint48(blockTimestamp), abi.encode(1)), + shares1 + shares2 + ); + assertGt(gasSpent, gasLeft - gasleft()); + assertEq(VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp - 1), ""), amount1); + assertEq( + VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp), ""), amount1 + amount2 + ); + assertEq(VaultImplementation(payable(address(vault))).activeStake(), amount1 + amount2); + gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp - 1), abi.encode(1)), + amount1 + ); + gasSpent = gasLeft - gasleft(); + gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp - 1), abi.encode(0)), + amount1 + ); + assertGt(gasSpent, gasLeft - gasleft()); + gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp), abi.encode(0)), + amount1 + amount2 + ); + gasSpent = gasLeft - gasleft(); + gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp), abi.encode(1)), + amount1 + amount2 + ); + assertGt(gasSpent, gasLeft - gasleft()); + assertEq(VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp - 1), ""), shares1); + assertEq( + VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp), ""), shares1 + shares2 + ); + assertEq(VaultImplementation(payable(address(vault))).activeSharesOf(alice), shares1 + shares2); + gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesOfAt( + alice, uint48(blockTimestamp - 1), abi.encode(1) + ), + shares1 + ); + gasSpent = gasLeft - gasleft(); + gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesOfAt( + alice, uint48(blockTimestamp - 1), abi.encode(0) + ), + shares1 + ); + assertGt(gasSpent, gasLeft - gasleft()); + gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesOfAt(alice, uint48(blockTimestamp), abi.encode(0)), + shares1 + shares2 + ); + gasSpent = gasLeft - gasleft(); + gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesOfAt(alice, uint48(blockTimestamp), abi.encode(1)), + shares1 + shares2 + ); + assertGt(gasSpent, gasLeft - gasleft()); + assertEq( + VaultImplementation(payable(address(vault))).activeBalanceOfAt(alice, uint48(blockTimestamp - 1), ""), + amount1 + ); + assertEq( + VaultImplementation(payable(address(vault))).activeBalanceOfAt(alice, uint48(blockTimestamp), ""), + amount1 + amount2 + ); + assertEq(VaultImplementation(payable(address(vault))).activeBalanceOf(alice), amount1 + amount2); + assertEq(VaultImplementation(payable(address(vault))).slashableBalanceOf(alice), amount1 + amount2); + gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeBalanceOfAt( + alice, + uint48(blockTimestamp - 1), + abi.encode( + IVault.ActiveBalanceOfHints({ + activeSharesOfHint: abi.encode(1), + activeStakeHint: abi.encode(1), + activeSharesHint: abi.encode(1) + }) + ) + ), + amount1 + ); + gasSpent = gasLeft - gasleft(); + gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeBalanceOfAt( + alice, + uint48(blockTimestamp - 1), + abi.encode( + IVault.ActiveBalanceOfHints({ + activeSharesOfHint: abi.encode(0), + activeStakeHint: abi.encode(0), + activeSharesHint: abi.encode(0) + }) + ) + ), + amount1 + ); + assertGt(gasSpent, gasLeft - gasleft()); + gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeBalanceOfAt( + alice, + uint48(blockTimestamp), + abi.encode( + IVault.ActiveBalanceOfHints({ + activeSharesOfHint: abi.encode(0), + activeStakeHint: abi.encode(0), + activeSharesHint: abi.encode(0) + }) + ) + ), + amount1 + amount2 + ); + gasSpent = gasLeft - gasleft(); + gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeBalanceOfAt( + alice, + uint48(blockTimestamp), + abi.encode( + IVault.ActiveBalanceOfHints({ + activeSharesOfHint: abi.encode(1), + activeStakeHint: abi.encode(1), + activeSharesHint: abi.encode(1) + }) + ) + ), + amount1 + amount2 + ); + assertGt(gasSpent, gasLeft - gasleft()); + } + + function test_DepositTwiceFeeOnTransferCollateral(uint256 amount1, uint256 amount2) public { + amount1 = bound(amount1, 2, 100 * 10 ** 18); + amount2 = bound(amount2, 2, 100 * 10 ** 18); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + uint48 epochDuration = 1; + { + address[] memory networkLimitSetRoleHolders = new address[](1); + networkLimitSetRoleHolders[0] = alice; + address[] memory operatorNetworkSharesSetRoleHolders = new address[](1); + operatorNetworkSharesSetRoleHolders[0] = alice; + (address vault_,,) = vaultConfigurator.create( + IVaultConfigurator.InitParams({ + version: 4, + owner: alice, + vaultParams: abi.encode( + IVaultTokenized.InitParamsTokenized({ + baseParams: abi.encode( + IVault.InitParams({ + collateral: address(feeOnTransferCollateral), + burner: address(0xdEaD), + epochDuration: 7 days, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 1, + flashFeeReceiver: alice, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ), + name: "Test", + symbol: "TEST" + }) + ), + delegatorIndex: 0, + delegatorParams: abi.encode( + INetworkRestakeDelegator.InitParams({ + baseParams: IBaseDelegator.BaseParams({ + defaultAdminRoleHolder: alice, + hook: address(0), + hookSetRoleHolder: alice + }), + networkLimitSetRoleHolders: networkLimitSetRoleHolders, + operatorNetworkSharesSetRoleHolders: operatorNetworkSharesSetRoleHolders + }) + ), + withSlasher: false, + slasherIndex: 0, + slasherParams: "" + }) + ); + + vault = VaultTokenizedImplementation(payable(vault_)); + } + + uint256 tokensBefore = feeOnTransferCollateral.balanceOf(address(vault)); + uint256 shares1 = (amount1 - 1) * 10 ** 0; + feeOnTransferCollateral.transfer(alice, amount1 + 1); + vm.startPrank(alice); + feeOnTransferCollateral.approve(address(vault), amount1); + { + (uint256 depositedAmount, uint256 mintedShares) = vault.deposit(alice, amount1); + assertEq(depositedAmount, amount1 - 1); + assertEq(mintedShares, shares1); + } + vm.stopPrank(); + assertEq(feeOnTransferCollateral.balanceOf(address(vault)) - tokensBefore, amount1 - 1); + + assertEq(VaultImplementation(payable(address(vault))).totalStake(), amount1 - 1); + assertEq(VaultImplementation(payable(address(vault))).activeSharesAt(uint48(blockTimestamp - 1), ""), 0); + assertEq(VaultImplementation(payable(address(vault))).activeSharesAt(uint48(blockTimestamp), ""), shares1); + assertEq(VaultImplementation(payable(address(vault))).activeShares(), shares1); + assertEq(VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp - 1), ""), 0); + assertEq(VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp), ""), amount1 - 1); + assertEq(VaultImplementation(payable(address(vault))).activeStake(), amount1 - 1); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesOfAt(alice, uint48(blockTimestamp - 1), ""), 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesOfAt(alice, uint48(blockTimestamp), ""), shares1 + ); + assertEq(VaultImplementation(payable(address(vault))).activeSharesOf(alice), shares1); + assertEq( + VaultImplementation(payable(address(vault))).activeBalanceOfAt(alice, uint48(blockTimestamp - 1), ""), 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).activeBalanceOfAt(alice, uint48(blockTimestamp), ""), + amount1 - 1 + ); + assertEq(VaultImplementation(payable(address(vault))).activeBalanceOf(alice), amount1 - 1); + assertEq(VaultImplementation(payable(address(vault))).slashableBalanceOf(alice), amount1 - 1); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + uint256 shares2 = (amount2 - 1) * (shares1 + 10 ** 0) / (amount1 - 1 + 1); + feeOnTransferCollateral.transfer(alice, amount2 + 1); + vm.startPrank(alice); + feeOnTransferCollateral.approve(address(vault), amount2); + { + (uint256 depositedAmount, uint256 mintedShares) = vault.deposit(alice, amount2); + assertEq(depositedAmount, amount2 - 1); + assertEq(mintedShares, shares2); + } + vm.stopPrank(); + + assertEq(VaultImplementation(payable(address(vault))).totalStake(), amount1 - 1 + amount2 - 1); + assertEq(VaultImplementation(payable(address(vault))).activeSharesAt(uint48(blockTimestamp - 1), ""), shares1); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesAt(uint48(blockTimestamp), ""), shares1 + shares2 + ); + assertEq(VaultImplementation(payable(address(vault))).activeShares(), shares1 + shares2); + uint256 gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesAt(uint48(blockTimestamp - 1), abi.encode(1)), + shares1 + ); + uint256 gasSpent = gasLeft - gasleft(); + gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesAt(uint48(blockTimestamp - 1), abi.encode(0)), + shares1 + ); + assertGt(gasSpent, gasLeft - gasleft()); + gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesAt(uint48(blockTimestamp), abi.encode(0)), + shares1 + shares2 + ); + gasSpent = gasLeft - gasleft(); + gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesAt(uint48(blockTimestamp), abi.encode(1)), + shares1 + shares2 + ); + assertGt(gasSpent, gasLeft - gasleft()); + assertEq( + VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp - 1), ""), amount1 - 1 + ); + assertEq( + VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp), ""), + amount1 - 1 + amount2 - 1 + ); + assertEq(VaultImplementation(payable(address(vault))).activeStake(), amount1 - 1 + amount2 - 1); + gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp - 1), abi.encode(1)), + amount1 - 1 + ); + gasSpent = gasLeft - gasleft(); + gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp - 1), abi.encode(0)), + amount1 - 1 + ); + assertGt(gasSpent, gasLeft - gasleft()); + gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp), abi.encode(0)), + amount1 - 1 + amount2 - 1 + ); + gasSpent = gasLeft - gasleft(); + gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp), abi.encode(1)), + amount1 - 1 + amount2 - 1 + ); + assertGt(gasSpent, gasLeft - gasleft()); + assertEq(VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp - 1), ""), shares1); + assertEq( + VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp), ""), shares1 + shares2 + ); + assertEq(VaultImplementation(payable(address(vault))).activeSharesOf(alice), shares1 + shares2); + gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesOfAt( + alice, uint48(blockTimestamp - 1), abi.encode(1) + ), + shares1 + ); + gasSpent = gasLeft - gasleft(); + gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesOfAt( + alice, uint48(blockTimestamp - 1), abi.encode(0) + ), + shares1 + ); + assertGt(gasSpent, gasLeft - gasleft()); + gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesOfAt(alice, uint48(blockTimestamp), abi.encode(0)), + shares1 + shares2 + ); + gasSpent = gasLeft - gasleft(); + gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesOfAt(alice, uint48(blockTimestamp), abi.encode(1)), + shares1 + shares2 + ); + assertGt(gasSpent, gasLeft - gasleft()); + assertEq( + VaultImplementation(payable(address(vault))).activeBalanceOfAt(alice, uint48(blockTimestamp - 1), ""), + amount1 - 1 + ); + assertEq( + VaultImplementation(payable(address(vault))).activeBalanceOfAt(alice, uint48(blockTimestamp), ""), + amount1 - 1 + amount2 - 1 + ); + assertEq(VaultImplementation(payable(address(vault))).activeBalanceOf(alice), amount1 - 1 + amount2 - 1); + assertEq(VaultImplementation(payable(address(vault))).slashableBalanceOf(alice), amount1 - 1 + amount2 - 1); + gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeBalanceOfAt( + alice, + uint48(blockTimestamp - 1), + abi.encode( + IVault.ActiveBalanceOfHints({ + activeSharesOfHint: abi.encode(1), + activeStakeHint: abi.encode(1), + activeSharesHint: abi.encode(1) + }) + ) + ), + amount1 - 1 + ); + gasSpent = gasLeft - gasleft(); + gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeBalanceOfAt( + alice, + uint48(blockTimestamp - 1), + abi.encode( + IVault.ActiveBalanceOfHints({ + activeSharesOfHint: abi.encode(0), + activeStakeHint: abi.encode(0), + activeSharesHint: abi.encode(0) + }) + ) + ), + amount1 - 1 + ); + assertGt(gasSpent, gasLeft - gasleft()); + gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeBalanceOfAt( + alice, + uint48(blockTimestamp), + abi.encode( + IVault.ActiveBalanceOfHints({ + activeSharesOfHint: abi.encode(0), + activeStakeHint: abi.encode(0), + activeSharesHint: abi.encode(0) + }) + ) + ), + amount1 - 1 + amount2 - 1 + ); + gasSpent = gasLeft - gasleft(); + gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeBalanceOfAt( + alice, + uint48(blockTimestamp), + abi.encode( + IVault.ActiveBalanceOfHints({ + activeSharesOfHint: abi.encode(1), + activeStakeHint: abi.encode(1), + activeSharesHint: abi.encode(1) + }) + ) + ), + amount1 - 1 + amount2 - 1 + ); + assertGt(gasSpent, gasLeft - gasleft()); + } + + function test_DepositBoth(uint256 amount1, uint256 amount2) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + amount2 = bound(amount2, 1, 100 * 10 ** 18); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + uint256 shares1 = amount1 * 10 ** 0; + { + (uint256 depositedAmount, uint256 mintedShares) = _deposit(alice, amount1); + assertEq(depositedAmount, amount1); + assertEq(mintedShares, shares1); + + assertEq(vault.balanceOf(alice), shares1); + assertEq(vault.totalSupply(), shares1); + } + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + uint256 shares2 = amount2 * (shares1 + 10 ** 0) / (amount1 + 1); + { + (uint256 depositedAmount, uint256 mintedShares) = _deposit(bob, amount2); + assertEq(depositedAmount, amount2); + assertEq(mintedShares, shares2); + + assertEq(vault.balanceOf(bob), shares2); + assertEq(vault.totalSupply(), shares1 + shares2); + } + + assertEq(VaultImplementation(payable(address(vault))).totalStake(), amount1 + amount2); + assertEq(VaultImplementation(payable(address(vault))).activeSharesAt(uint48(blockTimestamp - 1), ""), shares1); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesAt(uint48(blockTimestamp), ""), shares1 + shares2 + ); + assertEq(VaultImplementation(payable(address(vault))).activeShares(), shares1 + shares2); + assertEq(VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp - 1), ""), amount1); + assertEq( + VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp), ""), amount1 + amount2 + ); + assertEq(VaultImplementation(payable(address(vault))).activeStake(), amount1 + amount2); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesOfAt(alice, uint48(blockTimestamp - 1), ""), + shares1 + ); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesOfAt(alice, uint48(blockTimestamp), ""), shares1 + ); + assertEq(VaultImplementation(payable(address(vault))).activeSharesOf(alice), shares1); + assertEq( + VaultImplementation(payable(address(vault))).activeBalanceOfAt(alice, uint48(blockTimestamp - 1), ""), + amount1 + ); + assertEq( + VaultImplementation(payable(address(vault))).activeBalanceOfAt(alice, uint48(blockTimestamp), ""), amount1 + ); + assertEq(VaultImplementation(payable(address(vault))).activeBalanceOf(alice), amount1); + assertEq(VaultImplementation(payable(address(vault))).slashableBalanceOf(alice), amount1); + assertEq(VaultImplementation(payable(address(vault))).activeSharesOfAt(bob, uint48(blockTimestamp - 1), ""), 0); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesOfAt(bob, uint48(blockTimestamp), ""), shares2 + ); + assertEq(VaultImplementation(payable(address(vault))).activeSharesOf(bob), shares2); + assertEq(VaultImplementation(payable(address(vault))).activeBalanceOfAt(bob, uint48(blockTimestamp - 1), ""), 0); + assertEq( + VaultImplementation(payable(address(vault))).activeBalanceOfAt(bob, uint48(blockTimestamp), ""), amount2 + ); + assertEq(VaultImplementation(payable(address(vault))).activeBalanceOf(bob), amount2); + assertEq(VaultImplementation(payable(address(vault))).slashableBalanceOf(bob), amount2); + } + + function test_DepositRevertInvalidOnBehalfOf( + uint256 amount1 + ) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + vm.startPrank(alice); + vm.expectRevert(IVault.InvalidOnBehalfOf.selector); + vault.deposit(address(0), amount1); + vm.stopPrank(); + } + + function test_DepositRevertInsufficientDeposit() public { + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + vm.startPrank(alice); + vm.expectRevert(IVault.InsufficientDeposit.selector); + vault.deposit(alice, 0); + vm.stopPrank(); + } + + function test_WithdrawTwice(uint256 amount1, uint256 amount2, uint256 amount3) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + amount2 = bound(amount2, 1, 100 * 10 ** 18); + amount3 = bound(amount3, 1, 100 * 10 ** 18); + vm.assume(amount1 >= amount2 + amount3); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + // uint48 epochDuration = 1; + vault = _getVault(1); + + (, uint256 shares) = _deposit(alice, amount1); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + uint256 burnedShares = amount2 * (shares + 10 ** 0) / (amount1 + 1); + uint256 mintedShares = amount2 * 10 ** 0; + (uint256 burnedShares_, uint256 mintedShares_) = _withdraw(alice, amount2); + assertEq(burnedShares_, burnedShares); + assertEq(mintedShares_, mintedShares); + + assertEq(vault.balanceOf(alice), amount1 - burnedShares_); + assertEq(vault.totalSupply(), amount1 - burnedShares_); + + assertEq(VaultImplementation(payable(address(vault))).totalStake(), amount1); + assertEq(VaultImplementation(payable(address(vault))).activeSharesAt(uint48(blockTimestamp - 1), ""), shares); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesAt(uint48(blockTimestamp), ""), + shares - burnedShares + ); + assertEq(VaultImplementation(payable(address(vault))).activeShares(), shares - burnedShares); + assertEq(VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp - 1), ""), amount1); + assertEq( + VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp), ""), amount1 - amount2 + ); + assertEq(VaultImplementation(payable(address(vault))).activeStake(), amount1 - amount2); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesOfAt(alice, uint48(blockTimestamp - 1), ""), shares + ); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesOfAt(alice, uint48(blockTimestamp), ""), + shares - burnedShares + ); + assertEq(VaultImplementation(payable(address(vault))).activeSharesOf(alice), shares - burnedShares); + assertEq( + VaultImplementation(payable(address(vault))).activeBalanceOfAt(alice, uint48(blockTimestamp - 1), ""), + amount1 + ); + assertEq( + VaultImplementation(payable(address(vault))).activeBalanceOfAt(alice, uint48(blockTimestamp), ""), + amount1 - amount2 + ); + assertEq(VaultImplementation(payable(address(vault))).activeBalanceOf(alice), amount1 - amount2); + assertEq( + VaultImplementation(payable(address(vault))).withdrawals( + VaultImplementation(payable(address(vault))).currentEpoch() + ), + 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawals( + VaultImplementation(payable(address(vault))).currentEpoch() + 1 + ), + amount2 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawals( + VaultImplementation(payable(address(vault))).currentEpoch() + 2 + ), + 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawalShares( + VaultImplementation(payable(address(vault))).currentEpoch() + ), + 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawalShares( + VaultImplementation(payable(address(vault))).currentEpoch() + 1 + ), + mintedShares + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawalShares( + VaultImplementation(payable(address(vault))).currentEpoch() + 2 + ), + 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawalSharesOf( + VaultImplementation(payable(address(vault))).currentEpoch(), alice + ), + 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawalSharesOf( + VaultImplementation(payable(address(vault))).currentEpoch() + 1, alice + ), + mintedShares + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawalSharesOf( + VaultImplementation(payable(address(vault))).currentEpoch() + 2, alice + ), + 0 + ); + assertEq(VaultImplementation(payable(address(vault))).slashableBalanceOf(alice), amount1); + + shares -= burnedShares; + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + burnedShares = amount3 * (shares + 10 ** 0) / (amount1 - amount2 + 1); + mintedShares = amount3 * 10 ** 0; + (burnedShares_, mintedShares_) = _withdraw(alice, amount3); + assertEq(burnedShares_, burnedShares); + assertEq(mintedShares_, mintedShares); + + assertEq(vault.balanceOf(alice), amount1 - amount2 - amount3); + assertEq(vault.totalSupply(), amount1 - amount2 - amount3); + + assertEq(VaultImplementation(payable(address(vault))).totalStake(), amount1); + assertEq(VaultImplementation(payable(address(vault))).activeSharesAt(uint48(blockTimestamp - 1), ""), shares); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesAt(uint48(blockTimestamp), ""), + shares - burnedShares + ); + assertEq(VaultImplementation(payable(address(vault))).activeShares(), shares - burnedShares); + assertEq( + VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp - 1), ""), + amount1 - amount2 + ); + assertEq( + VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp), ""), + amount1 - amount2 - amount3 + ); + assertEq(VaultImplementation(payable(address(vault))).activeStake(), amount1 - amount2 - amount3); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesOfAt(alice, uint48(blockTimestamp - 1), ""), shares + ); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesOfAt(alice, uint48(blockTimestamp), ""), + shares - burnedShares + ); + assertEq(VaultImplementation(payable(address(vault))).activeSharesOf(alice), shares - burnedShares); + assertEq( + VaultImplementation(payable(address(vault))).activeBalanceOfAt(alice, uint48(blockTimestamp - 1), ""), + amount1 - amount2 + ); + assertEq( + VaultImplementation(payable(address(vault))).activeBalanceOfAt(alice, uint48(blockTimestamp), ""), + amount1 - amount2 - amount3 + ); + assertEq(VaultImplementation(payable(address(vault))).activeBalanceOf(alice), amount1 - amount2 - amount3); + assertEq( + VaultImplementation(payable(address(vault))).withdrawals( + VaultImplementation(payable(address(vault))).currentEpoch() - 1 + ), + 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawals( + VaultImplementation(payable(address(vault))).currentEpoch() + ), + amount2 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawals( + VaultImplementation(payable(address(vault))).currentEpoch() + 1 + ), + amount3 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawals( + VaultImplementation(payable(address(vault))).currentEpoch() + 2 + ), + 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawalShares( + VaultImplementation(payable(address(vault))).currentEpoch() - 1 + ), + 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawalShares( + VaultImplementation(payable(address(vault))).currentEpoch() + ), + amount2 * 10 ** 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawalShares( + VaultImplementation(payable(address(vault))).currentEpoch() + 1 + ), + amount3 * 10 ** 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawalShares( + VaultImplementation(payable(address(vault))).currentEpoch() + 2 + ), + 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawalSharesOf( + VaultImplementation(payable(address(vault))).currentEpoch() - 1, alice + ), + 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawalSharesOf( + VaultImplementation(payable(address(vault))).currentEpoch(), alice + ), + amount2 * 10 ** 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawalSharesOf( + VaultImplementation(payable(address(vault))).currentEpoch() + 1, alice + ), + amount3 * 10 ** 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawalSharesOf( + VaultImplementation(payable(address(vault))).currentEpoch() + 2, alice + ), + 0 + ); + assertEq(VaultImplementation(payable(address(vault))).slashableBalanceOf(alice), amount1); + + shares -= burnedShares; + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + assertEq(VaultImplementation(payable(address(vault))).totalStake(), amount1 - amount2); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + assertEq(VaultImplementation(payable(address(vault))).totalStake(), amount1 - amount2 - amount3); + } + + function test_WithdrawRevertInvalidClaimer( + uint256 amount1 + ) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + _deposit(alice, amount1); + + vm.expectRevert(IVault.InvalidClaimer.selector); + vm.startPrank(alice); + vault.withdraw(address(0), amount1); + vm.stopPrank(); + } + + function test_WithdrawRevertInsufficientWithdrawal( + uint256 amount1 + ) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + _deposit(alice, amount1); + + vm.expectRevert(IVault.InsufficientWithdrawal.selector); + _withdraw(alice, 0); + } + + function test_WithdrawRevertTooMuchWithdraw( + uint256 amount1 + ) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + _deposit(alice, amount1); + + vm.expectRevert(IVault.TooMuchWithdraw.selector); + _withdraw(alice, amount1 + 1); + } + + function test_RedeemTwice(uint256 amount1, uint256 amount2, uint256 amount3) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + amount2 = bound(amount2, 1, 100 * 10 ** 18); + amount3 = bound(amount3, 1, 100 * 10 ** 18); + vm.assume(amount1 >= amount2 + amount3); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + // uint48 epochDuration = 1; + vault = _getVault(1); + + (, uint256 shares) = _deposit(alice, amount1); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + uint256 withdrawnAssets2 = amount2 * (amount1 + 1) / (shares + 10 ** 0); + uint256 mintedShares = amount2 * 10 ** 0; + (uint256 withdrawnAssets_, uint256 mintedShares_) = _redeem(alice, amount2); + assertEq(withdrawnAssets_, withdrawnAssets2); + assertEq(mintedShares_, mintedShares); + + assertEq(VaultImplementation(payable(address(vault))).totalStake(), amount1); + assertEq(VaultImplementation(payable(address(vault))).activeSharesAt(uint48(blockTimestamp - 1), ""), shares); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesAt(uint48(blockTimestamp), ""), shares - amount2 + ); + assertEq(VaultImplementation(payable(address(vault))).activeShares(), shares - amount2); + assertEq(VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp - 1), ""), amount1); + assertEq( + VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp), ""), + amount1 - withdrawnAssets2 + ); + assertEq(VaultImplementation(payable(address(vault))).activeStake(), amount1 - withdrawnAssets2); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesOfAt(alice, uint48(blockTimestamp - 1), ""), shares + ); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesOfAt(alice, uint48(blockTimestamp), ""), + shares - amount2 + ); + assertEq(VaultImplementation(payable(address(vault))).activeSharesOf(alice), shares - amount2); + assertEq( + VaultImplementation(payable(address(vault))).activeBalanceOfAt(alice, uint48(blockTimestamp - 1), ""), + amount1 + ); + assertEq( + VaultImplementation(payable(address(vault))).activeBalanceOfAt(alice, uint48(blockTimestamp), ""), + amount1 - withdrawnAssets2 + ); + assertEq(VaultImplementation(payable(address(vault))).activeBalanceOf(alice), amount1 - withdrawnAssets2); + assertEq( + VaultImplementation(payable(address(vault))).withdrawals( + VaultImplementation(payable(address(vault))).currentEpoch() + ), + 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawals( + VaultImplementation(payable(address(vault))).currentEpoch() + 1 + ), + withdrawnAssets2 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawals( + VaultImplementation(payable(address(vault))).currentEpoch() + 2 + ), + 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawalShares( + VaultImplementation(payable(address(vault))).currentEpoch() + ), + 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawalShares( + VaultImplementation(payable(address(vault))).currentEpoch() + 1 + ), + mintedShares + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawalShares( + VaultImplementation(payable(address(vault))).currentEpoch() + 2 + ), + 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawalSharesOf( + VaultImplementation(payable(address(vault))).currentEpoch(), alice + ), + 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawalSharesOf( + VaultImplementation(payable(address(vault))).currentEpoch() + 1, alice + ), + mintedShares + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawalSharesOf( + VaultImplementation(payable(address(vault))).currentEpoch() + 2, alice + ), + 0 + ); + assertEq(VaultImplementation(payable(address(vault))).slashableBalanceOf(alice), amount1); + + shares -= amount2; + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + uint256 withdrawnAssets3 = amount3 * (amount1 - withdrawnAssets2 + 1) / (shares + 10 ** 0); + mintedShares = amount3 * 10 ** 0; + (withdrawnAssets_, mintedShares_) = _redeem(alice, amount3); + assertEq(withdrawnAssets_, withdrawnAssets3); + assertEq(mintedShares_, mintedShares); + + assertEq(VaultImplementation(payable(address(vault))).totalStake(), amount1); + assertEq(VaultImplementation(payable(address(vault))).activeSharesAt(uint48(blockTimestamp - 1), ""), shares); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesAt(uint48(blockTimestamp), ""), shares - amount3 + ); + assertEq(VaultImplementation(payable(address(vault))).activeShares(), shares - amount3); + assertEq( + VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp - 1), ""), + amount1 - withdrawnAssets2 + ); + assertEq( + VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp), ""), + amount1 - withdrawnAssets2 - withdrawnAssets3 + ); + assertEq( + VaultImplementation(payable(address(vault))).activeStake(), amount1 - withdrawnAssets2 - withdrawnAssets3 + ); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesOfAt(alice, uint48(blockTimestamp - 1), ""), shares + ); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesOfAt(alice, uint48(blockTimestamp), ""), + shares - amount3 + ); + assertEq(VaultImplementation(payable(address(vault))).activeSharesOf(alice), shares - amount3); + assertEq( + VaultImplementation(payable(address(vault))).activeBalanceOfAt(alice, uint48(blockTimestamp - 1), ""), + amount1 - withdrawnAssets2 + ); + assertEq( + VaultImplementation(payable(address(vault))).activeBalanceOfAt(alice, uint48(blockTimestamp), ""), + amount1 - withdrawnAssets2 - withdrawnAssets3 + ); + assertEq( + VaultImplementation(payable(address(vault))).activeBalanceOf(alice), + amount1 - withdrawnAssets2 - withdrawnAssets3 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawals( + VaultImplementation(payable(address(vault))).currentEpoch() - 1 + ), + 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawals( + VaultImplementation(payable(address(vault))).currentEpoch() + ), + withdrawnAssets2 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawals( + VaultImplementation(payable(address(vault))).currentEpoch() + 1 + ), + withdrawnAssets3 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawals( + VaultImplementation(payable(address(vault))).currentEpoch() + 2 + ), + 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawalShares( + VaultImplementation(payable(address(vault))).currentEpoch() - 1 + ), + 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawalShares( + VaultImplementation(payable(address(vault))).currentEpoch() + ), + withdrawnAssets2 * 10 ** 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawalShares( + VaultImplementation(payable(address(vault))).currentEpoch() + 1 + ), + withdrawnAssets3 * 10 ** 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawalShares( + VaultImplementation(payable(address(vault))).currentEpoch() + 2 + ), + 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawalSharesOf( + VaultImplementation(payable(address(vault))).currentEpoch() - 1, alice + ), + 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawalSharesOf( + VaultImplementation(payable(address(vault))).currentEpoch(), alice + ), + withdrawnAssets2 * 10 ** 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawalSharesOf( + VaultImplementation(payable(address(vault))).currentEpoch() + 1, alice + ), + withdrawnAssets3 * 10 ** 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawalSharesOf( + VaultImplementation(payable(address(vault))).currentEpoch() + 2, alice + ), + 0 + ); + assertEq(VaultImplementation(payable(address(vault))).slashableBalanceOf(alice), amount1); + + shares -= amount3; + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + assertEq(VaultImplementation(payable(address(vault))).totalStake(), amount1 - withdrawnAssets2); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + assertEq( + VaultImplementation(payable(address(vault))).totalStake(), amount1 - withdrawnAssets2 - withdrawnAssets3 + ); + } + + function test_RedeemRevertInvalidClaimer( + uint256 amount1 + ) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + _deposit(alice, amount1); + + vm.expectRevert(IVault.InvalidClaimer.selector); + vm.startPrank(alice); + vault.redeem(address(0), amount1); + vm.stopPrank(); + } + + function test_RedeemRevertInsufficientRedeemption( + uint256 amount1 + ) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + _deposit(alice, amount1); + + vm.expectRevert(IVault.InsufficientRedemption.selector); + _redeem(alice, 0); + } + + function test_RedeemRevertTooMuchRedeem( + uint256 amount1 + ) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + _deposit(alice, amount1); + + vm.expectRevert(IVault.TooMuchRedeem.selector); + _redeem(alice, amount1 + 1); + } + + function test_Claim(uint256 amount1, uint256 amount2) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + amount2 = bound(amount2, 1, 100 * 10 ** 18); + vm.assume(amount1 >= amount2); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + _deposit(alice, amount1); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + _withdraw(alice, amount2); + + blockTimestamp = blockTimestamp + 2; + vm.warp(blockTimestamp); + + uint256 tokensBefore = collateral.balanceOf(address(vault)); + uint256 tokensBeforeAlice = collateral.balanceOf(alice); + assertEq(_claim(alice, VaultImplementation(payable(address(vault))).currentEpoch() - 1), amount2); + assertEq(tokensBefore - collateral.balanceOf(address(vault)), amount2); + assertEq(collateral.balanceOf(alice) - tokensBeforeAlice, amount2); + + assertEq( + vault.isWithdrawalsClaimed(VaultImplementation(payable(address(vault))).currentEpoch() - 1, alice), true + ); + } + + function test_ClaimRevertInvalidRecipient(uint256 amount1, uint256 amount2) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + amount2 = bound(amount2, 1, 100 * 10 ** 18); + vm.assume(amount1 >= amount2); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + _deposit(alice, amount1); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + _withdraw(alice, amount2); + + blockTimestamp = blockTimestamp + 2; + vm.warp(blockTimestamp); + + vm.startPrank(alice); + uint256 currentEpoch = VaultImplementation(payable(address(vault))).currentEpoch(); + vm.expectRevert(IVault.InvalidRecipient.selector); + VaultImplementation(payable(address(vault))).claim(address(0), currentEpoch - 1); + vm.stopPrank(); + } + + function test_ClaimRevertInvalidEpoch(uint256 amount1, uint256 amount2) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + amount2 = bound(amount2, 1, 100 * 10 ** 18); + vm.assume(amount1 >= amount2); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + _deposit(alice, amount1); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + _withdraw(alice, amount2); + + blockTimestamp = blockTimestamp + 2; + vm.warp(blockTimestamp); + + uint256 currentEpoch = VaultImplementation(payable(address(vault))).currentEpoch(); + vm.expectRevert(IVault.InvalidEpoch.selector); + _claim(alice, currentEpoch); + } + + function test_ClaimRevertAlreadyClaimed(uint256 amount1, uint256 amount2) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + amount2 = bound(amount2, 1, 100 * 10 ** 18); + vm.assume(amount1 >= amount2); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + _deposit(alice, amount1); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + _withdraw(alice, amount2); + + blockTimestamp = blockTimestamp + 2; + vm.warp(blockTimestamp); + + uint256 currentEpoch = VaultImplementation(payable(address(vault))).currentEpoch(); + _claim(alice, currentEpoch - 1); + + vm.expectRevert(IVault.AlreadyClaimed.selector); + _claim(alice, currentEpoch - 1); + } + + function test_ClaimRevertInsufficientClaim(uint256 amount1, uint256 amount2) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + amount2 = bound(amount2, 1, 100 * 10 ** 18); + vm.assume(amount1 >= amount2); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + _deposit(alice, amount1); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + _withdraw(alice, amount2); + + blockTimestamp = blockTimestamp + 2; + vm.warp(blockTimestamp); + + uint256 currentEpoch = VaultImplementation(payable(address(vault))).currentEpoch(); + vm.expectRevert(IVault.InsufficientClaim.selector); + _claim(alice, currentEpoch - 2); + } + + function test_ClaimBatch(uint256 amount1, uint256 amount2, uint256 amount3) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + amount2 = bound(amount2, 1, 100 * 10 ** 18); + amount3 = bound(amount3, 1, 100 * 10 ** 18); + vm.assume(amount1 >= amount2 + amount3); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + _deposit(alice, amount1); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + _withdraw(alice, amount2); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + _withdraw(alice, amount3); + + blockTimestamp = blockTimestamp + 2; + vm.warp(blockTimestamp); + + uint256[] memory epochs = new uint256[](2); + epochs[0] = VaultImplementation(payable(address(vault))).currentEpoch() - 1; + epochs[1] = VaultImplementation(payable(address(vault))).currentEpoch() - 2; + + uint256 tokensBefore = collateral.balanceOf(address(vault)); + uint256 tokensBeforeAlice = collateral.balanceOf(alice); + assertEq(_claimBatch(alice, epochs), amount2 + amount3); + assertEq(tokensBefore - collateral.balanceOf(address(vault)), amount2 + amount3); + assertEq(collateral.balanceOf(alice) - tokensBeforeAlice, amount2 + amount3); + + assertEq( + vault.isWithdrawalsClaimed(VaultImplementation(payable(address(vault))).currentEpoch() - 1, alice), true + ); + } + + function test_ClaimBatchRevertInvalidRecipient(uint256 amount1, uint256 amount2, uint256 amount3) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + amount2 = bound(amount2, 1, 100 * 10 ** 18); + amount3 = bound(amount3, 1, 100 * 10 ** 18); + vm.assume(amount1 >= amount2 + amount3); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + _deposit(alice, amount1); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + _withdraw(alice, amount2); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + _withdraw(alice, amount3); + + blockTimestamp = blockTimestamp + 2; + vm.warp(blockTimestamp); + + uint256[] memory epochs = new uint256[](2); + epochs[0] = VaultImplementation(payable(address(vault))).currentEpoch() - 1; + epochs[1] = VaultImplementation(payable(address(vault))).currentEpoch() - 2; + + vm.expectRevert(IVault.InvalidRecipient.selector); + vm.startPrank(alice); + VaultImplementation(payable(address(vault))).claimBatch(address(0), epochs); + vm.stopPrank(); + } + + function test_ClaimBatchRevertInvalidLengthEpochs(uint256 amount1, uint256 amount2, uint256 amount3) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + amount2 = bound(amount2, 1, 100 * 10 ** 18); + amount3 = bound(amount3, 1, 100 * 10 ** 18); + vm.assume(amount1 >= amount2 + amount3); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + _deposit(alice, amount1); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + _withdraw(alice, amount2); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + _withdraw(alice, amount3); + + blockTimestamp = blockTimestamp + 2; + vm.warp(blockTimestamp); + + uint256[] memory epochs = new uint256[](0); + vm.expectRevert(IVault.InvalidLengthEpochs.selector); + _claimBatch(alice, epochs); + } + + function test_ClaimBatchRevertInvalidEpoch(uint256 amount1, uint256 amount2, uint256 amount3) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + amount2 = bound(amount2, 1, 100 * 10 ** 18); + amount3 = bound(amount3, 1, 100 * 10 ** 18); + vm.assume(amount1 >= amount2 + amount3); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + _deposit(alice, amount1); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + _withdraw(alice, amount2); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + _withdraw(alice, amount3); + + blockTimestamp = blockTimestamp + 2; + vm.warp(blockTimestamp); + + uint256[] memory epochs = new uint256[](2); + epochs[0] = VaultImplementation(payable(address(vault))).currentEpoch() - 1; + epochs[1] = VaultImplementation(payable(address(vault))).currentEpoch(); + + vm.expectRevert(IVault.InvalidEpoch.selector); + _claimBatch(alice, epochs); + } + + function test_ClaimBatchRevertAlreadyClaimed(uint256 amount1, uint256 amount2, uint256 amount3) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + amount2 = bound(amount2, 1, 100 * 10 ** 18); + amount3 = bound(amount3, 1, 100 * 10 ** 18); + vm.assume(amount1 >= amount2 + amount3); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + _deposit(alice, amount1); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + _withdraw(alice, amount2); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + _withdraw(alice, amount3); + + blockTimestamp = blockTimestamp + 2; + vm.warp(blockTimestamp); + + uint256[] memory epochs = new uint256[](2); + epochs[0] = VaultImplementation(payable(address(vault))).currentEpoch() - 1; + epochs[1] = VaultImplementation(payable(address(vault))).currentEpoch() - 1; + + vm.expectRevert(IVault.AlreadyClaimed.selector); + _claimBatch(alice, epochs); + } + + function test_ClaimBatchRevertInsufficientClaim(uint256 amount1, uint256 amount2, uint256 amount3) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + amount2 = bound(amount2, 1, 100 * 10 ** 18); + amount3 = bound(amount3, 1, 100 * 10 ** 18); + vm.assume(amount1 >= amount2 + amount3); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + _deposit(alice, amount1); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + _withdraw(alice, amount2); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + _withdraw(alice, amount3); + + blockTimestamp = blockTimestamp + 2; + vm.warp(blockTimestamp); + + uint256[] memory epochs = new uint256[](2); + epochs[0] = VaultImplementation(payable(address(vault))).currentEpoch() - 1; + epochs[1] = VaultImplementation(payable(address(vault))).currentEpoch() - 3; + + vm.expectRevert(IVault.InsufficientClaim.selector); + _claimBatch(alice, epochs); + } + + function test_SetDepositWhitelist() public { + uint48 epochDuration = 1; + + vault = _getVault(epochDuration); + + _grantDepositWhitelistSetRole(alice, alice); + _setDepositWhitelist(alice, true); + assertEq(vault.depositWhitelist(), true); + + _setDepositWhitelist(alice, false); + assertEq(vault.depositWhitelist(), false); + } + + function test_SetDepositWhitelistRevertNotWhitelistedDepositor() public { + uint48 epochDuration = 1; + + vault = _getVault(epochDuration); + + _deposit(alice, 1); + + _grantDepositWhitelistSetRole(alice, alice); + _setDepositWhitelist(alice, true); + + vm.startPrank(alice); + vm.expectRevert(IVault.NotWhitelistedDepositor.selector); + vault.deposit(alice, 1); + vm.stopPrank(); + } + + function test_SetDepositWhitelistRevertAlreadySet() public { + uint48 epochDuration = 1; + + vault = _getVault(epochDuration); + + _grantDepositWhitelistSetRole(alice, alice); + _setDepositWhitelist(alice, true); + + vm.expectRevert(IVault.AlreadySet.selector); + _setDepositWhitelist(alice, true); + } + + function test_SetDepositorWhitelistStatus() public { + uint48 epochDuration = 1; + + vault = _getVault(epochDuration); + + _grantDepositWhitelistSetRole(alice, alice); + _setDepositWhitelist(alice, true); + + _grantDepositorWhitelistRole(alice, alice); + + _setDepositorWhitelistStatus(alice, bob, true); + assertEq(vault.isDepositorWhitelisted(bob), true); + + _deposit(bob, 1); + + _setDepositWhitelist(alice, false); + + _deposit(bob, 1); + } + + function test_SetDepositorWhitelistStatusRevertInvalidAccount() public { + uint48 epochDuration = 1; + + vault = _getVault(epochDuration); + + _grantDepositWhitelistSetRole(alice, alice); + _setDepositWhitelist(alice, true); + + _grantDepositorWhitelistRole(alice, alice); + + vm.expectRevert(IVault.InvalidAccount.selector); + _setDepositorWhitelistStatus(alice, address(0), true); + } + + function test_SetDepositorWhitelistStatusRevertAlreadySet() public { + uint48 epochDuration = 1; + + vault = _getVault(epochDuration); + + _grantDepositWhitelistSetRole(alice, alice); + _setDepositWhitelist(alice, true); + + _grantDepositorWhitelistRole(alice, alice); + + _setDepositorWhitelistStatus(alice, bob, true); + + vm.expectRevert(IVault.AlreadySet.selector); + _setDepositorWhitelistStatus(alice, bob, true); + } + + function test_SetIsDepositLimit() public { + uint48 epochDuration = 1; + + vault = _getVault(epochDuration); + + _grantIsDepositLimitSetRole(alice, alice); + _setIsDepositLimit(alice, true); + assertEq(vault.isDepositLimit(), true); + + _setIsDepositLimit(alice, false); + assertEq(vault.isDepositLimit(), false); + } + + function test_SetIsDepositLimitRevertAlreadySet() public { + uint48 epochDuration = 1; + + vault = _getVault(epochDuration); + + _grantIsDepositLimitSetRole(alice, alice); + _setIsDepositLimit(alice, true); + + vm.expectRevert(IVault.AlreadySet.selector); + _setIsDepositLimit(alice, true); + } + + function test_SetDepositLimit(uint256 limit1, uint256 limit2, uint256 depositAmount) public { + uint48 epochDuration = 1; + + vault = _getVault(epochDuration); + + _grantIsDepositLimitSetRole(alice, alice); + _setIsDepositLimit(alice, true); + assertEq(vault.depositLimit(), 0); + + limit1 = bound(limit1, 1, type(uint256).max); + _grantDepositLimitSetRole(alice, alice); + _setDepositLimit(alice, limit1); + assertEq(vault.depositLimit(), limit1); + + limit2 = bound(limit2, 1, 1000 ether); + vm.assume(limit2 != limit1); + _setDepositLimit(alice, limit2); + assertEq(vault.depositLimit(), limit2); + + depositAmount = bound(depositAmount, 1, limit2); + _deposit(alice, depositAmount); + } + + function test_SetDepositLimitToNull( + uint256 limit1 + ) public { + uint48 epochDuration = 1; + + vault = _getVault(epochDuration); + + limit1 = bound(limit1, 1, type(uint256).max); + _grantIsDepositLimitSetRole(alice, alice); + _setIsDepositLimit(alice, true); + _grantDepositLimitSetRole(alice, alice); + _setDepositLimit(alice, limit1); + + _setIsDepositLimit(alice, false); + + _setDepositLimit(alice, 0); + + assertEq(vault.depositLimit(), 0); + } + + function test_SetDepositLimitRevertDepositLimitReached(uint256 depositAmount, uint256 limit) public { + uint48 epochDuration = 1; + + vault = _getVault(epochDuration); + + _deposit(alice, 1); + + limit = bound(limit, 2, 1000 ether); + _grantIsDepositLimitSetRole(alice, alice); + _setIsDepositLimit(alice, true); + _grantDepositLimitSetRole(alice, alice); + _setDepositLimit(alice, limit); + + depositAmount = bound(depositAmount, limit, 2000 ether); + + collateral.transfer(alice, depositAmount); + vm.startPrank(alice); + collateral.approve(address(vault), depositAmount); + vm.expectRevert(IVault.DepositLimitReached.selector); + vault.deposit(alice, depositAmount); + vm.stopPrank(); + } + + function test_SetDepositLimitRevertAlreadySet( + uint256 limit + ) public { + uint48 epochDuration = 1; + + vault = _getVault(epochDuration); + + limit = bound(limit, 1, type(uint256).max); + _grantIsDepositLimitSetRole(alice, alice); + _setIsDepositLimit(alice, true); + _grantDepositLimitSetRole(alice, alice); + _setDepositLimit(alice, limit); + + vm.expectRevert(IVault.AlreadySet.selector); + _setDepositLimit(alice, limit); + } + + function test_OnSlashRevertNotSlasher() public { + uint48 epochDuration = 1; + + vault = _getVault(epochDuration); + + vm.startPrank(alice); + vm.expectRevert(IVault.NotSlasher.selector); + VaultImplementation(payable(address(vault))).onSlash(0, 0); + vm.stopPrank(); + } + + struct Test_SlashStruct { + uint256 slashAmountReal1; + uint256 tokensBeforeBurner; + uint256 activeStake1; + uint256 withdrawals1; + uint256 nextWithdrawals1; + uint256 slashAmountSlashed2; + } + + function test_Slash( + // uint48 epochDuration, + uint256 depositAmount, + uint256 withdrawAmount1, + uint256 withdrawAmount2, + uint256 slashAmount1, + uint256 slashAmount2, + uint256 captureAgo + ) public { + // epochDuration = uint48(bound(epochDuration, 2, 10 days)); + depositAmount = bound(depositAmount, 1, 100 * 10 ** 18); + withdrawAmount1 = bound(withdrawAmount1, 1, 100 * 10 ** 18); + withdrawAmount2 = bound(withdrawAmount2, 1, 100 * 10 ** 18); + slashAmount1 = bound(slashAmount1, 1, type(uint256).max / 2); + slashAmount2 = bound(slashAmount2, 1, type(uint256).max / 2); + captureAgo = bound(captureAgo, 1, 10 days); + vm.assume(depositAmount > withdrawAmount1 + withdrawAmount2); + vm.assume(depositAmount > slashAmount1); + vm.assume(captureAgo <= 7 days); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + (vault, delegator, slasher) = _getVaultAndDelegatorAndSlasher(7 days); + + // address network = alice; + _registerNetwork(alice, alice); + _setMaxNetworkLimit(alice, 0, type(uint256).max); + + _registerOperator(alice); + _registerOperator(bob); + + _optInOperatorVault(alice); + _optInOperatorVault(bob); + + _optInOperatorNetwork(alice, address(alice)); + _optInOperatorNetwork(bob, address(alice)); + + _setNetworkLimit(alice, alice, type(uint256).max); + + _setOperatorNetworkLimit(alice, alice, alice, type(uint256).max / 2); + _setOperatorNetworkLimit(alice, alice, bob, type(uint256).max / 2); + + _deposit(alice, depositAmount); + _withdraw(alice, withdrawAmount1); + + blockTimestamp = blockTimestamp + VaultImplementation(payable(address(vault))).epochDuration(); + vm.warp(blockTimestamp); + + _withdraw(alice, withdrawAmount2); + + assertEq(VaultImplementation(payable(address(vault))).totalStake(), depositAmount); + assertEq( + VaultImplementation(payable(address(vault))).activeStake(), + depositAmount - withdrawAmount1 - withdrawAmount2 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawals( + VaultImplementation(payable(address(vault))).currentEpoch() + ), + withdrawAmount1 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawals( + VaultImplementation(payable(address(vault))).currentEpoch() + 1 + ), + withdrawAmount2 + ); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + Test_SlashStruct memory test_SlashStruct; + + if ( + VaultImplementation(payable(address(vault))).epochAt(uint48(blockTimestamp - captureAgo)) + != VaultImplementation(payable(address(vault))).currentEpoch() + ) { + test_SlashStruct.slashAmountReal1 = Math.min(slashAmount1, depositAmount - withdrawAmount1); + test_SlashStruct.tokensBeforeBurner = collateral.balanceOf(address(vault.burner())); + assertEq( + _slash(alice, alice, alice, slashAmount1, uint48(blockTimestamp - captureAgo), ""), + test_SlashStruct.slashAmountReal1 + ); + assertEq( + collateral.balanceOf(address(vault.burner())) - test_SlashStruct.tokensBeforeBurner, + test_SlashStruct.slashAmountReal1 + ); + + test_SlashStruct.activeStake1 = depositAmount - withdrawAmount1 - withdrawAmount2 + - (depositAmount - withdrawAmount1 - withdrawAmount2).mulDiv( + test_SlashStruct.slashAmountReal1, depositAmount + ); + test_SlashStruct.withdrawals1 = + withdrawAmount1 - withdrawAmount1.mulDiv(test_SlashStruct.slashAmountReal1, depositAmount); + test_SlashStruct.nextWithdrawals1 = + withdrawAmount2 - withdrawAmount2.mulDiv(test_SlashStruct.slashAmountReal1, depositAmount); + assertEq( + VaultImplementation(payable(address(vault))).totalStake(), + depositAmount - test_SlashStruct.slashAmountReal1 + ); + assertTrue( + test_SlashStruct.withdrawals1 + - vault.withdrawals(VaultImplementation(payable(address(vault))).currentEpoch()) <= 2 + ); + assertTrue( + test_SlashStruct.nextWithdrawals1 + - vault.withdrawals(VaultImplementation(payable(address(vault))).currentEpoch() + 1) <= 1 + ); + assertEq(VaultImplementation(payable(address(vault))).activeStake(), test_SlashStruct.activeStake1); + + test_SlashStruct.slashAmountSlashed2 = Math.min( + depositAmount - test_SlashStruct.slashAmountReal1, + Math.min(slashAmount2, depositAmount - withdrawAmount1) + ); + test_SlashStruct.tokensBeforeBurner = collateral.balanceOf(address(vault.burner())); + assertEq( + _slash(alice, alice, bob, slashAmount2, uint48(blockTimestamp - captureAgo), ""), + Math.min(slashAmount2, depositAmount - withdrawAmount1) + ); + assertEq( + collateral.balanceOf(address(vault.burner())) - test_SlashStruct.tokensBeforeBurner, + test_SlashStruct.slashAmountSlashed2 + ); + + assertEq( + VaultImplementation(payable(address(vault))).totalStake(), + depositAmount - test_SlashStruct.slashAmountReal1 - test_SlashStruct.slashAmountSlashed2 + ); + assertTrue( + ( + test_SlashStruct.withdrawals1 + - test_SlashStruct.withdrawals1.mulDiv( + test_SlashStruct.slashAmountSlashed2, depositAmount - test_SlashStruct.slashAmountReal1 + ) + ) + - VaultImplementation(payable(address(vault))).withdrawals( + VaultImplementation(payable(address(vault))).currentEpoch() + ) <= 4 + ); + assertTrue( + ( + test_SlashStruct.nextWithdrawals1 + - test_SlashStruct.nextWithdrawals1.mulDiv( + test_SlashStruct.slashAmountSlashed2, depositAmount - test_SlashStruct.slashAmountReal1 + ) + ) + - VaultImplementation(payable(address(vault))).withdrawals( + VaultImplementation(payable(address(vault))).currentEpoch() + 1 + ) <= 2 + ); + assertEq( + VaultImplementation(payable(address(vault))).activeStake(), + test_SlashStruct.activeStake1 + - test_SlashStruct.activeStake1.mulDiv( + test_SlashStruct.slashAmountSlashed2, depositAmount - test_SlashStruct.slashAmountReal1 + ) + ); + } else { + test_SlashStruct.slashAmountReal1 = + Math.min(slashAmount1, depositAmount - withdrawAmount1 - withdrawAmount2); + test_SlashStruct.tokensBeforeBurner = collateral.balanceOf(address(vault.burner())); + assertEq( + _slash(alice, alice, alice, slashAmount1, uint48(blockTimestamp - captureAgo), ""), + test_SlashStruct.slashAmountReal1 + ); + assertEq( + collateral.balanceOf(address(vault.burner())) - test_SlashStruct.tokensBeforeBurner, + test_SlashStruct.slashAmountReal1 + ); + + test_SlashStruct.activeStake1 = depositAmount - withdrawAmount1 - withdrawAmount2 + - (depositAmount - withdrawAmount1 - withdrawAmount2).mulDiv( + test_SlashStruct.slashAmountReal1, depositAmount - withdrawAmount1 + ); + test_SlashStruct.withdrawals1 = withdrawAmount1; + test_SlashStruct.nextWithdrawals1 = withdrawAmount2 + - withdrawAmount2.mulDiv(test_SlashStruct.slashAmountReal1, depositAmount - withdrawAmount1); + assertEq( + VaultImplementation(payable(address(vault))).totalStake(), + depositAmount - test_SlashStruct.slashAmountReal1 + ); + assertEq( + vault.withdrawals(VaultImplementation(payable(address(vault))).currentEpoch()), + test_SlashStruct.withdrawals1 + ); + assertTrue( + test_SlashStruct.nextWithdrawals1 + - VaultImplementation(payable(address(vault))).withdrawals( + VaultImplementation(payable(address(vault))).currentEpoch() + 1 + ) <= 1 + ); + assertEq(VaultImplementation(payable(address(vault))).activeStake(), test_SlashStruct.activeStake1); + + test_SlashStruct.slashAmountSlashed2 = Math.min( + depositAmount - withdrawAmount1 - test_SlashStruct.slashAmountReal1, + Math.min(slashAmount2, depositAmount - withdrawAmount1 - withdrawAmount2) + ); + test_SlashStruct.tokensBeforeBurner = collateral.balanceOf(address(vault.burner())); + assertEq( + _slash(alice, alice, bob, slashAmount2, uint48(blockTimestamp - captureAgo), ""), + Math.min(slashAmount2, depositAmount - withdrawAmount1 - withdrawAmount2) + ); + assertEq( + collateral.balanceOf(address(vault.burner())) - test_SlashStruct.tokensBeforeBurner, + test_SlashStruct.slashAmountSlashed2 + ); + + assertEq( + VaultImplementation(payable(address(vault))).totalStake(), + depositAmount - test_SlashStruct.slashAmountReal1 - test_SlashStruct.slashAmountSlashed2 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawals( + VaultImplementation(payable(address(vault))).currentEpoch() + ), + test_SlashStruct.withdrawals1 + ); + assertTrue( + ( + test_SlashStruct.nextWithdrawals1 + - test_SlashStruct.nextWithdrawals1.mulDiv( + test_SlashStruct.slashAmountSlashed2, + depositAmount - withdrawAmount1 - test_SlashStruct.slashAmountReal1 + ) + ) + - VaultImplementation(payable(address(vault))).withdrawals( + VaultImplementation(payable(address(vault))).currentEpoch() + 1 + ) <= 2 + ); + assertEq( + VaultImplementation(payable(address(vault))).activeStake(), + test_SlashStruct.activeStake1 + - test_SlashStruct.activeStake1.mulDiv( + test_SlashStruct.slashAmountSlashed2, + depositAmount - withdrawAmount1 - test_SlashStruct.slashAmountReal1 + ) + ); + } + } + + function test_Migrate1() public { + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + address[] memory networkLimitSetRoleHolders = new address[](1); + networkLimitSetRoleHolders[0] = alice; + address[] memory operatorNetworkSharesSetRoleHolders = new address[](1); + operatorNetworkSharesSetRoleHolders[0] = alice; + (address vault_,,) = vaultConfigurator.create( + IVaultConfigurator.InitParams({ + version: 3, + owner: alice, + vaultParams: abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: 7 days, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 1, + flashFeeReceiver: alice, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ), + delegatorIndex: 0, + delegatorParams: abi.encode( + INetworkRestakeDelegator.InitParams({ + baseParams: IBaseDelegator.BaseParams({ + defaultAdminRoleHolder: alice, + hook: address(0), + hookSetRoleHolder: alice + }), + networkLimitSetRoleHolders: networkLimitSetRoleHolders, + operatorNetworkSharesSetRoleHolders: operatorNetworkSharesSetRoleHolders + }) + ), + withSlasher: false, + slasherIndex: 0, + slasherParams: abi.encode(ISlasher.InitParams({baseParams: IBaseSlasher.BaseParams({isBurnerHook: false})})) + }) + ); + + vault = VaultTokenizedImplementation(payable(vault_)); + + assertEq(vault.DEPOSIT_WHITELIST_SET_ROLE(), keccak256("DEPOSIT_WHITELIST_SET_ROLE")); + assertEq(vault.DEPOSITOR_WHITELIST_ROLE(), keccak256("DEPOSITOR_WHITELIST_ROLE")); + assertEq(VaultImplementation(payable(address(vault))).DELEGATOR_FACTORY(), address(delegatorFactory)); + assertEq(VaultImplementation(payable(address(vault))).SLASHER_FACTORY(), address(slasherFactory)); + + assertEq(VaultTokenized(payable(address(vault))).owner(), alice); + assertEq(vault.collateral(), address(collateral)); + assertEq( + VaultImplementation(payable(address(vault))).hasRole( + VaultImplementation(payable(address(vault))).DEFAULT_ADMIN_ROLE(), alice + ), + true + ); + assertEq( + VaultImplementation(payable(address(vault))).hasRole( + VaultImplementation(payable(address(vault))).DEPOSITOR_WHITELIST_ROLE(), alice + ), + true + ); + assertEq(VaultImplementation(payable(address(vault))).epochDurationInit(), blockTimestamp); + assertEq(VaultImplementation(payable(address(vault))).epochDuration(), 7 days); + vm.expectRevert(IVault.InvalidTimestamp.selector); + assertEq(VaultImplementation(payable(address(vault))).epochAt(0), 0); + assertEq(VaultImplementation(payable(address(vault))).epochAt(uint48(blockTimestamp)), 0); + assertEq(VaultImplementation(payable(address(vault))).currentEpoch(), 0); + assertEq(VaultImplementation(payable(address(vault))).currentEpochStart(), blockTimestamp); + vm.expectRevert(IVault.NoPreviousEpoch.selector); + VaultImplementation(payable(address(vault))).previousEpochStart(); + assertEq(VaultImplementation(payable(address(vault))).nextEpochStart(), blockTimestamp + 7 days); + assertEq(VaultImplementation(payable(address(vault))).totalStake(), 0); + assertEq(VaultImplementation(payable(address(vault))).activeSharesAt(uint48(blockTimestamp), ""), 0); + assertEq(VaultImplementation(payable(address(vault))).activeShares(), 0); + assertEq(VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp), ""), 0); + assertEq(VaultImplementation(payable(address(vault))).activeStake(), 0); + assertEq(VaultImplementation(payable(address(vault))).activeSharesOfAt(alice, uint48(blockTimestamp), ""), 0); + assertEq(VaultImplementation(payable(address(vault))).activeSharesOf(alice), 0); + assertEq(VaultImplementation(payable(address(vault))).activeBalanceOfAt(alice, uint48(blockTimestamp), ""), 0); + assertEq(VaultImplementation(payable(address(vault))).activeBalanceOf(alice), 0); + assertEq(VaultImplementation(payable(address(vault))).withdrawals(0), 0); + assertEq(VaultImplementation(payable(address(vault))).withdrawalShares(0), 0); + assertEq(VaultImplementation(payable(address(vault))).isWithdrawalsClaimed(0, alice), false); + assertEq(VaultImplementation(payable(address(vault))).depositWhitelist(), false); + assertEq(VaultImplementation(payable(address(vault))).isDepositorWhitelisted(alice), false); + assertEq(VaultImplementation(payable(address(vault))).slashableBalanceOf(alice), 0); + assertEq(VaultImplementation(payable(address(vault))).isDelegatorInitialized(), true); + assertEq(VaultImplementation(payable(address(vault))).isSlasherInitialized(), true); + assertEq(VaultImplementation(payable(address(vault))).isInitialized(), true); + assertEq(Vault(payable(address(vault))).version(), 3); + + uint256 decimals = collateral.decimals(); + vm.expectRevert(); + vault.balanceOf(alice); + vm.expectRevert(); + vault.totalSupply(); + vm.expectRevert(); + vault.allowance(alice, alice); + vm.expectRevert(); + vault.decimals(); + vm.expectRevert(); + vault.symbol(); + vm.expectRevert(); + vault.name(); + + VaultImplementation(payable(address(vault))).flashFeeRate(); + VaultImplementation(payable(address(vault))).epochDurationSetEpochsDelay(); + + vm.startPrank(alice); + vaultFactory.migrate( + address(vault), 4, abi.encode(IVaultTokenized.MigrateParamsTokenized({name: "test1", symbol: "TEST1"})) + ); + vm.stopPrank(); + + assertEq(Vault(payable(address(vault))).version(), 4); + assertEq(vault.balanceOf(alice), 0); + assertEq(vault.totalSupply(), 0); + assertEq(vault.allowance(alice, alice), 0); + assertEq(vault.decimals(), decimals); + assertEq(vault.symbol(), "TEST1"); + assertEq(vault.name(), "test1"); + + assertEq(VaultImplementation(payable(address(vault))).flashFeeRate(), 1); + assertEq(VaultImplementation(payable(address(vault))).epochDurationSetEpochsDelay(), 3); + } + + function test_Migrate2() public { + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + address[] memory networkLimitSetRoleHolders = new address[](1); + networkLimitSetRoleHolders[0] = alice; + address[] memory operatorNetworkSharesSetRoleHolders = new address[](1); + operatorNetworkSharesSetRoleHolders[0] = alice; + (address vault_,,) = vaultConfigurator.create( + IVaultConfigurator.InitParams({ + version: 2, + owner: alice, + vaultParams: abi.encode( + IVaultTokenizedV1.InitParamsTokenized({ + baseParams: IVaultV1.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: 7 days, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice + }), + name: "test", + symbol: "TEST" + }) + ), + delegatorIndex: 0, + delegatorParams: abi.encode( + INetworkRestakeDelegator.InitParams({ + baseParams: IBaseDelegator.BaseParams({ + defaultAdminRoleHolder: alice, + hook: address(0), + hookSetRoleHolder: alice + }), + networkLimitSetRoleHolders: networkLimitSetRoleHolders, + operatorNetworkSharesSetRoleHolders: operatorNetworkSharesSetRoleHolders + }) + ), + withSlasher: false, + slasherIndex: 0, + slasherParams: abi.encode(ISlasher.InitParams({baseParams: IBaseSlasher.BaseParams({isBurnerHook: false})})) + }) + ); + + vault = VaultTokenizedImplementation(payable(vault_)); + + assertEq(vault.DEPOSIT_WHITELIST_SET_ROLE(), keccak256("DEPOSIT_WHITELIST_SET_ROLE")); + assertEq(vault.DEPOSITOR_WHITELIST_ROLE(), keccak256("DEPOSITOR_WHITELIST_ROLE")); + assertEq(VaultImplementation(payable(address(vault))).DELEGATOR_FACTORY(), address(delegatorFactory)); + assertEq(VaultImplementation(payable(address(vault))).SLASHER_FACTORY(), address(slasherFactory)); + + assertEq(VaultTokenized(payable(address(vault))).owner(), alice); + assertEq(vault.collateral(), address(collateral)); + assertEq( + VaultImplementation(payable(address(vault))).hasRole( + VaultImplementation(payable(address(vault))).DEFAULT_ADMIN_ROLE(), alice + ), + true + ); + assertEq( + VaultImplementation(payable(address(vault))).hasRole( + VaultImplementation(payable(address(vault))).DEPOSITOR_WHITELIST_ROLE(), alice + ), + true + ); + assertEq(VaultImplementation(payable(address(vault))).epochDurationInit(), blockTimestamp); + assertEq(VaultImplementation(payable(address(vault))).epochDuration(), 7 days); + vm.expectRevert(IVault.InvalidTimestamp.selector); + assertEq(VaultImplementation(payable(address(vault))).epochAt(0), 0); + assertEq(VaultImplementation(payable(address(vault))).epochAt(uint48(blockTimestamp)), 0); + assertEq(VaultImplementation(payable(address(vault))).currentEpoch(), 0); + assertEq(VaultImplementation(payable(address(vault))).currentEpochStart(), blockTimestamp); + vm.expectRevert(IVault.NoPreviousEpoch.selector); + VaultImplementation(payable(address(vault))).previousEpochStart(); + assertEq(VaultImplementation(payable(address(vault))).nextEpochStart(), blockTimestamp + 7 days); + assertEq(VaultImplementation(payable(address(vault))).totalStake(), 0); + assertEq(VaultImplementation(payable(address(vault))).activeSharesAt(uint48(blockTimestamp), ""), 0); + assertEq(VaultImplementation(payable(address(vault))).activeShares(), 0); + assertEq(VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp), ""), 0); + assertEq(VaultImplementation(payable(address(vault))).activeStake(), 0); + assertEq(VaultImplementation(payable(address(vault))).activeSharesOfAt(alice, uint48(blockTimestamp), ""), 0); + assertEq(VaultImplementation(payable(address(vault))).activeSharesOf(alice), 0); + assertEq(VaultImplementation(payable(address(vault))).activeBalanceOfAt(alice, uint48(blockTimestamp), ""), 0); + assertEq(VaultImplementation(payable(address(vault))).activeBalanceOf(alice), 0); + assertEq(VaultImplementation(payable(address(vault))).withdrawals(0), 0); + assertEq(VaultImplementation(payable(address(vault))).withdrawalShares(0), 0); + assertEq(VaultImplementation(payable(address(vault))).isWithdrawalsClaimed(0, alice), false); + assertEq(VaultImplementation(payable(address(vault))).depositWhitelist(), false); + assertEq(VaultImplementation(payable(address(vault))).isDepositorWhitelisted(alice), false); + assertEq(VaultImplementation(payable(address(vault))).slashableBalanceOf(alice), 0); + assertEq(VaultImplementation(payable(address(vault))).isDelegatorInitialized(), true); + assertEq(VaultImplementation(payable(address(vault))).isSlasherInitialized(), true); + assertEq(VaultImplementation(payable(address(vault))).isInitialized(), true); + assertEq(Vault(payable(address(vault))).version(), 2); + + uint256 decimals = collateral.decimals(); + assertEq(vault.balanceOf(alice), 0); + assertEq(vault.totalSupply(), 0); + assertEq(vault.allowance(alice, alice), 0); + assertEq(vault.decimals(), decimals); + assertEq(vault.symbol(), "TEST"); + assertEq(vault.name(), "test"); + + vm.expectRevert(); + VaultImplementation(payable(address(vault))).flashFeeRate(); + vm.expectRevert(); + VaultImplementation(payable(address(vault))).epochDurationSetEpochsDelay(); + + vm.startPrank(alice); + vaultFactory.migrate( + address(vault), + 4, + abi.encode( + IVault.MigrateParams({ + epochDurationSetEpochsDelay: 3, + flashFeeRate: 1, + flashFeeReceiver: alice, + flashLoanEnabled: false, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ) + ); + vm.stopPrank(); + + assertEq(Vault(payable(address(vault))).version(), 4); + assertEq(VaultImplementation(payable(address(vault))).flashFeeRate(), 1); + assertEq(VaultImplementation(payable(address(vault))).epochDurationSetEpochsDelay(), 3); + } + + function test_MigrateRevertInsufficientExitWindow() public { + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + address[] memory networkLimitSetRoleHolders = new address[](1); + networkLimitSetRoleHolders[0] = alice; + address[] memory operatorNetworkSharesSetRoleHolders = new address[](1); + operatorNetworkSharesSetRoleHolders[0] = alice; + (address vault_,,) = vaultConfigurator.create( + IVaultConfigurator.InitParams({ + version: 2, + owner: alice, + vaultParams: abi.encode( + IVaultTokenizedV1.InitParamsTokenized({ + baseParams: IVaultV1.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: 1, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice + }), + name: "test", + symbol: "TEST" + }) + ), + delegatorIndex: 0, + delegatorParams: abi.encode( + INetworkRestakeDelegator.InitParams({ + baseParams: IBaseDelegator.BaseParams({ + defaultAdminRoleHolder: alice, + hook: address(0), + hookSetRoleHolder: alice + }), + networkLimitSetRoleHolders: networkLimitSetRoleHolders, + operatorNetworkSharesSetRoleHolders: operatorNetworkSharesSetRoleHolders + }) + ), + withSlasher: false, + slasherIndex: 0, + slasherParams: abi.encode(ISlasher.InitParams({baseParams: IBaseSlasher.BaseParams({isBurnerHook: false})})) + }) + ); + + vault = VaultTokenizedImplementation(payable(vault_)); + + vm.startPrank(alice); + vm.expectRevert(IVault.InsufficientExitWindow.selector); + vaultFactory.migrate( + address(vault), + 4, + abi.encode( + IVault.MigrateParams({ + epochDurationSetEpochsDelay: 7 days + 1, + flashFeeRate: 1, + flashFeeReceiver: alice, + flashLoanEnabled: false, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ) + ); + vm.stopPrank(); + + vm.startPrank(alice); + vaultFactory.migrate( + address(vault), + 4, + abi.encode( + IVault.MigrateParams({ + epochDurationSetEpochsDelay: 7 days + 2, + flashFeeRate: 1, + flashFeeReceiver: alice, + flashLoanEnabled: false, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ) + ); + vm.stopPrank(); + } + + function test_MigrateInvalidOrigin() public { + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + address[] memory networkLimitSetRoleHolders = new address[](1); + networkLimitSetRoleHolders[0] = alice; + address[] memory operatorNetworkSharesSetRoleHolders = new address[](1); + operatorNetworkSharesSetRoleHolders[0] = alice; + (address vault_,,) = vaultConfigurator.create( + IVaultConfigurator.InitParams({ + version: 1, + owner: alice, + vaultParams: abi.encode( + IVaultV1.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: 7 days, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice + }) + ), + delegatorIndex: 0, + delegatorParams: abi.encode( + INetworkRestakeDelegator.InitParams({ + baseParams: IBaseDelegator.BaseParams({ + defaultAdminRoleHolder: alice, + hook: address(0), + hookSetRoleHolder: alice + }), + networkLimitSetRoleHolders: networkLimitSetRoleHolders, + operatorNetworkSharesSetRoleHolders: operatorNetworkSharesSetRoleHolders + }) + ), + withSlasher: false, + slasherIndex: 0, + slasherParams: abi.encode(ISlasher.InitParams({baseParams: IBaseSlasher.BaseParams({isBurnerHook: false})})) + }) + ); + + vm.startPrank(alice); + vm.expectRevert(IVault.InvalidOrigin.selector); + vaultFactory.migrate(vault_, 4, new bytes(0)); + vm.stopPrank(); + } + + function test_NotFactoryCheck() public { + vault = _getVault(7 days); + + vm.expectRevert(Initializable.NotInitializing.selector); + vault._VaultTokenized_init(abi.encode("", "")); + } + + // struct GasStruct { + // uint256 gasSpent1; + // uint256 gasSpent2; + // } + + // struct HintStruct { + // uint256 num; + // bool back; + // uint256 secondsAgo; + // } + + // function test_ActiveSharesHint(uint256 amount1, uint48 epochDuration, HintStruct memory hintStruct) public { + // amount1 = bound(amount1, 1, 100 * 10 ** 18); + // epochDuration = uint48(bound(epochDuration, 1, 7 days)); + // hintStruct.num = bound(hintStruct.num, 0, 25); + // hintStruct.secondsAgo = bound(hintStruct.secondsAgo, 0, 1_720_700_948); + + // uint256 blockTimestamp = vm.getBlockTimestamp(); + // blockTimestamp = blockTimestamp + 1_720_700_948; + // vm.warp(blockTimestamp); + + // vault = _getVault(epochDuration); + + // for (uint256 i; i < hintStruct.num; ++i) { + // _deposit(alice, amount1); + + // blockTimestamp = blockTimestamp + epochDuration; + // vm.warp(blockTimestamp); + // } + + // uint48 timestamp = + // uint48(hintStruct.back ? blockTimestamp - hintStruct.secondsAgo : blockTimestamp + hintStruct.secondsAgo); + + // VaultHints vaultHints = new VaultHints(); + // bytes memory hint = vaultHints.activeSharesHint(address(vault), timestamp); + + // GasStruct memory gasStruct = GasStruct({gasSpent1: 1, gasSpent2: 1}); + // vault.activeSharesAt(timestamp, new bytes(0)); + // gasStruct.gasSpent1 = vm.lastCallGas().gasTotalUsed; + // vault.activeSharesAt(timestamp, hint); + // gasStruct.gasSpent2 = vm.lastCallGas().gasTotalUsed; + // assertApproxEqRel(gasStruct.gasSpent1, gasStruct.gasSpent2, 0.05e18); + // } + + // function test_ActiveStakeHint(uint256 amount1, uint48 epochDuration, HintStruct memory hintStruct) public { + // amount1 = bound(amount1, 1, 100 * 10 ** 18); + // epochDuration = uint48(bound(epochDuration, 1, 7 days)); + // hintStruct.num = bound(hintStruct.num, 0, 25); + // hintStruct.secondsAgo = bound(hintStruct.secondsAgo, 0, 1_720_700_948); + + // uint256 blockTimestamp = vm.getBlockTimestamp(); + // blockTimestamp = blockTimestamp + 1_720_700_948; + // vm.warp(blockTimestamp); + + // vault = _getVault(epochDuration); + + // for (uint256 i; i < hintStruct.num; ++i) { + // _deposit(alice, amount1); + + // blockTimestamp = blockTimestamp + epochDuration; + // vm.warp(blockTimestamp); + // } + + // uint48 timestamp = + // uint48(hintStruct.back ? blockTimestamp - hintStruct.secondsAgo : blockTimestamp + hintStruct.secondsAgo); + + // VaultHints vaultHints = new VaultHints(); + // bytes memory hint = vaultHints.activeStakeHint(address(vault), timestamp); + + // GasStruct memory gasStruct = GasStruct({gasSpent1: 1, gasSpent2: 1}); + // vault.activeStakeAt(timestamp, new bytes(0)); + // gasStruct.gasSpent1 = vm.lastCallGas().gasTotalUsed; + // vault.activeStakeAt(timestamp, hint); + // gasStruct.gasSpent2 = vm.lastCallGas().gasTotalUsed; + // assertGe(gasStruct.gasSpent1, gasStruct.gasSpent2); + // } + + // function test_ActiveSharesOfHint(uint256 amount1, uint48 epochDuration, HintStruct memory hintStruct) public { + // amount1 = bound(amount1, 1, 100 * 10 ** 18); + // epochDuration = uint48(bound(epochDuration, 1, 7 days)); + // hintStruct.num = bound(hintStruct.num, 0, 25); + // hintStruct.secondsAgo = bound(hintStruct.secondsAgo, 0, 1_720_700_948); + + // uint256 blockTimestamp = vm.getBlockTimestamp(); + // blockTimestamp = blockTimestamp + 1_720_700_948; + // vm.warp(blockTimestamp); + + // vault = _getVault(epochDuration); + + // for (uint256 i; i < hintStruct.num; ++i) { + // _deposit(alice, amount1); + + // blockTimestamp = blockTimestamp + epochDuration; + // vm.warp(blockTimestamp); + // } + + // uint48 timestamp = + // uint48(hintStruct.back ? blockTimestamp - hintStruct.secondsAgo : blockTimestamp + hintStruct.secondsAgo); + + // VaultHints vaultHints = new VaultHints(); + // bytes memory hint = vaultHints.activeSharesOfHint(address(vault), alice, timestamp); + + // GasStruct memory gasStruct = GasStruct({gasSpent1: 1, gasSpent2: 1}); + // vault.activeSharesOfAt(alice, timestamp, new bytes(0)); + // gasStruct.gasSpent1 = vm.lastCallGas().gasTotalUsed; + // vault.activeSharesOfAt(alice, timestamp, hint); + // gasStruct.gasSpent2 = vm.lastCallGas().gasTotalUsed; + // assertGe(gasStruct.gasSpent1, gasStruct.gasSpent2); + // } + + // struct ActiveBalanceOfHintsUint32 { + // uint32 activeSharesOfHint; + // uint32 activeStakeHint; + // uint32 activeSharesHint; + // } + + // function test_ActiveBalanceOfHint( + // uint256 amount1, + // uint48 epochDuration, + // HintStruct memory hintStruct, + // ActiveBalanceOfHintsUint32 memory activeBalanceOfHintsUint32 + // ) public { + // amount1 = bound(amount1, 1, 100 * 10 ** 18); + // epochDuration = uint48(bound(epochDuration, 1, 7 days)); + // hintStruct.num = bound(hintStruct.num, 0, 25); + // hintStruct.secondsAgo = bound(hintStruct.secondsAgo, 0, 1_720_700_948); + + // uint256 blockTimestamp = vm.getBlockTimestamp(); + // blockTimestamp = blockTimestamp + 1_720_700_948; + // vm.warp(blockTimestamp); + + // vault = _getVault(epochDuration); + + // for (uint256 i; i < hintStruct.num; ++i) { + // _deposit(alice, amount1); + + // blockTimestamp = blockTimestamp + epochDuration; + // vm.warp(blockTimestamp); + // } + + // uint48 timestamp = + // uint48(hintStruct.back ? blockTimestamp - hintStruct.secondsAgo : blockTimestamp + hintStruct.secondsAgo); + + // VaultHints vaultHints = new VaultHints(); + // bytes memory hint = vaultHints.activeBalanceOfHints(address(vault), alice, timestamp); + + // GasStruct memory gasStruct = GasStruct({gasSpent1: 1, gasSpent2: 1}); + // bytes memory activeBalanceOfHints = abi.encode( + // IVault.ActiveBalanceOfHints({ + // activeSharesOfHint: abi.encode(activeBalanceOfHintsUint32.activeSharesOfHint), + // activeStakeHint: abi.encode(activeBalanceOfHintsUint32.activeStakeHint), + // activeSharesHint: abi.encode(activeBalanceOfHintsUint32.activeSharesHint) + // }) + // ); + // try vault.activeBalanceOfAt(alice, timestamp, activeBalanceOfHints) { + // gasStruct.gasSpent1 = vm.lastCallGas().gasTotalUsed; + // } catch { + // vault.activeBalanceOfAt(alice, timestamp, ""); + // gasStruct.gasSpent1 = vm.lastCallGas().gasTotalUsed; + // } + + // vault.activeBalanceOfAt(alice, timestamp, hint); + // gasStruct.gasSpent2 = vm.lastCallGas().gasTotalUsed; + // assertGe(gasStruct.gasSpent1, gasStruct.gasSpent2); + // } + + // function test_ActiveBalanceOfHintMany( + // uint256 amount1, + // uint48 epochDuration, + // HintStruct memory hintStruct + // ) public { + // amount1 = bound(amount1, 1, 1 * 10 ** 18); + // epochDuration = uint48(bound(epochDuration, 1, 7 days)); + // hintStruct.num = 500; + // hintStruct.secondsAgo = bound(hintStruct.secondsAgo, 0, 1_720_700_948); + + // uint256 blockTimestamp = vm.getBlockTimestamp(); + // blockTimestamp = blockTimestamp + 1_720_700_948; + // vm.warp(blockTimestamp); + + // vault = _getVault(epochDuration); + + // for (uint256 i; i < hintStruct.num; ++i) { + // _deposit(alice, amount1); + + // blockTimestamp = blockTimestamp + epochDuration; + // vm.warp(blockTimestamp); + // } + + // uint48 timestamp = + // uint48(hintStruct.back ? blockTimestamp - hintStruct.secondsAgo : blockTimestamp + hintStruct.secondsAgo); + + // VaultHints vaultHints = new VaultHints(); + // bytes memory hint = vaultHints.activeBalanceOfHints(address(vault), alice, timestamp); + + // GasStruct memory gasStruct = GasStruct({gasSpent1: 1, gasSpent2: 1}); + // vault.activeBalanceOfAt(alice, timestamp, ""); + // gasStruct.gasSpent1 = vm.lastCallGas().gasTotalUsed; + // vault.activeBalanceOfAt(alice, timestamp, hint); + // gasStruct.gasSpent2 = vm.lastCallGas().gasTotalUsed; + // assertGe(gasStruct.gasSpent1, gasStruct.gasSpent2); + + // assertLt(gasStruct.gasSpent1 - gasStruct.gasSpent2, 10_000); + // } + + function test_Transfer(uint256 amount1, uint256 amount2) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + amount2 = bound(amount2, 1, 100 * 10 ** 18); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + (, uint256 mintedShares) = _deposit(alice, amount1); + + assertEq(vault.balanceOf(alice), mintedShares); + assertEq(vault.totalSupply(), mintedShares); + assertEq(VaultImplementation(payable(address(vault))).activeSharesOf(alice), mintedShares); + assertEq(VaultImplementation(payable(address(vault))).activeShares(), mintedShares); + + if (amount2 > mintedShares) { + vm.startPrank(alice); + + vm.expectRevert(); + vault.transfer(bob, amount2); + + vm.stopPrank(); + } else { + vm.startPrank(alice); + + vault.transfer(bob, amount2); + + assertEq(vault.balanceOf(alice), mintedShares - amount2); + assertEq(vault.totalSupply(), mintedShares); + assertEq(VaultImplementation(payable(address(vault))).activeSharesOf(alice), mintedShares - amount2); + assertEq(VaultImplementation(payable(address(vault))).activeShares(), mintedShares); + + assertEq(vault.balanceOf(bob), amount2); + assertEq(VaultImplementation(payable(address(vault))).activeSharesOf(bob), amount2); + + vm.stopPrank(); + + vm.startPrank(bob); + vault.approve(alice, amount2); + vm.stopPrank(); + + assertEq(vault.allowance(bob, alice), amount2); + + vm.startPrank(alice); + vault.transferFrom(bob, alice, amount2); + vm.stopPrank(); + + assertEq(vault.balanceOf(alice), mintedShares); + assertEq(vault.totalSupply(), mintedShares); + assertEq(VaultImplementation(payable(address(vault))).activeSharesOf(alice), mintedShares); + assertEq(VaultImplementation(payable(address(vault))).activeShares(), mintedShares); + } + } + + function _getVault( + uint48 epochDuration + ) internal returns (VaultTokenizedImplementation) { + address[] memory networkLimitSetRoleHolders = new address[](1); + networkLimitSetRoleHolders[0] = alice; + address[] memory operatorNetworkSharesSetRoleHolders = new address[](1); + operatorNetworkSharesSetRoleHolders[0] = alice; + (address vault_,,) = vaultConfigurator.create( + IVaultConfigurator.InitParams({ + version: 4, + owner: alice, + vaultParams: abi.encode( + IVaultTokenized.InitParamsTokenized({ + baseParams: abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: epochDuration, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 1, + flashFeeReceiver: alice, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ), + name: "Test", + symbol: "TEST" + }) + ), + delegatorIndex: 0, + delegatorParams: abi.encode( + INetworkRestakeDelegator.InitParams({ + baseParams: IBaseDelegator.BaseParams({ + defaultAdminRoleHolder: alice, + hook: address(0), + hookSetRoleHolder: alice + }), + networkLimitSetRoleHolders: networkLimitSetRoleHolders, + operatorNetworkSharesSetRoleHolders: operatorNetworkSharesSetRoleHolders + }) + ), + withSlasher: false, + slasherIndex: 0, + slasherParams: abi.encode(ISlasher.InitParams({baseParams: IBaseSlasher.BaseParams({isBurnerHook: false})})) + }) + ); + + return VaultTokenizedImplementation(payable(vault_)); + } + + function _getVaultAndDelegatorAndSlasher( + uint48 epochDuration + ) internal returns (VaultTokenizedImplementation, FullRestakeDelegator, Slasher) { + address[] memory networkLimitSetRoleHolders = new address[](1); + networkLimitSetRoleHolders[0] = alice; + address[] memory operatorNetworkLimitSetRoleHolders = new address[](1); + operatorNetworkLimitSetRoleHolders[0] = alice; + (address vault_, address delegator_, address slasher_) = vaultConfigurator.create( + IVaultConfigurator.InitParams({ + version: 4, + owner: alice, + vaultParams: abi.encode( + IVaultTokenized.InitParamsTokenized({ + baseParams: abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: epochDuration, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 1, + flashFeeReceiver: alice, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ), + name: "Test", + symbol: "TEST" + }) + ), + delegatorIndex: 1, + delegatorParams: abi.encode( + IFullRestakeDelegator.InitParams({ + baseParams: IBaseDelegator.BaseParams({ + defaultAdminRoleHolder: alice, + hook: address(0), + hookSetRoleHolder: alice + }), + networkLimitSetRoleHolders: networkLimitSetRoleHolders, + operatorNetworkLimitSetRoleHolders: operatorNetworkLimitSetRoleHolders + }) + ), + withSlasher: true, + slasherIndex: 0, + slasherParams: abi.encode(ISlasher.InitParams({baseParams: IBaseSlasher.BaseParams({isBurnerHook: false})})) + }) + ); + + return (VaultTokenizedImplementation(payable(vault_)), FullRestakeDelegator(delegator_), Slasher(slasher_)); + } + + function _registerOperator( + address user + ) internal { + vm.startPrank(user); + operatorRegistry.registerOperator(); + vm.stopPrank(); + } + + function _registerNetwork(address user, address middleware) internal { + vm.startPrank(user); + networkRegistry.registerNetwork(); + networkMiddlewareService.setMiddleware(middleware); + vm.stopPrank(); + } + + function _grantDepositorWhitelistRole(address user, address account) internal { + vm.startPrank(user); + VaultTokenized(payable(address(vault))).grantRole(vault.DEPOSITOR_WHITELIST_ROLE(), account); + vm.stopPrank(); + } + + function _grantDepositWhitelistSetRole(address user, address account) internal { + vm.startPrank(user); + VaultTokenized(payable(address(vault))).grantRole(vault.DEPOSIT_WHITELIST_SET_ROLE(), account); + vm.stopPrank(); + } + + function _grantIsDepositLimitSetRole(address user, address account) internal { + vm.startPrank(user); + VaultTokenized(payable(address(vault))).grantRole(vault.IS_DEPOSIT_LIMIT_SET_ROLE(), account); + vm.stopPrank(); + } + + function _grantDepositLimitSetRole(address user, address account) internal { + vm.startPrank(user); + VaultTokenized(payable(address(vault))).grantRole(vault.DEPOSIT_LIMIT_SET_ROLE(), account); + vm.stopPrank(); + } + + function _deposit(address user, uint256 amount) internal returns (uint256 depositedAmount, uint256 mintedShares) { + collateral.transfer(user, amount); + vm.startPrank(user); + collateral.approve(address(vault), amount); + (depositedAmount, mintedShares) = vault.deposit(user, amount); + vm.stopPrank(); + } + + function _withdraw(address user, uint256 amount) internal returns (uint256 burnedShares, uint256 mintedShares) { + vm.startPrank(user); + (burnedShares, mintedShares) = vault.withdraw(user, amount); + vm.stopPrank(); + } + + function _redeem(address user, uint256 shares) internal returns (uint256 withdrawnAssets, uint256 mintedShares) { + vm.startPrank(user); + (withdrawnAssets, mintedShares) = vault.redeem(user, shares); + vm.stopPrank(); + } + + function _claim(address user, uint256 epoch) internal returns (uint256 amount) { + vm.startPrank(user); + amount = VaultImplementation(payable(address(vault))).claim(user, epoch); + vm.stopPrank(); + } + + function _claimBatch(address user, uint256[] memory epochs) internal returns (uint256 amount) { + vm.startPrank(user); + amount = VaultImplementation(payable(address(vault))).claimBatch(user, epochs); + vm.stopPrank(); + } + + function _optInOperatorVault( + address user + ) internal { + vm.startPrank(user); + operatorVaultOptInService.optIn(address(vault)); + vm.stopPrank(); + } + + function _optOutOperatorVault( + address user + ) internal { + vm.startPrank(user); + operatorVaultOptInService.optOut(address(vault)); + vm.stopPrank(); + } + + function _optInOperatorNetwork(address user, address network) internal { + vm.startPrank(user); + operatorNetworkOptInService.optIn(network); + vm.stopPrank(); + } + + function _optOutOperatorNetwork(address user, address network) internal { + vm.startPrank(user); + operatorNetworkOptInService.optOut(network); + vm.stopPrank(); + } + + function _setDepositWhitelist(address user, bool status) internal { + vm.startPrank(user); + VaultImplementation(payable(address(vault))).setDepositWhitelist(status); + vm.stopPrank(); + } + + function _setDepositorWhitelistStatus(address user, address depositor, bool status) internal { + vm.startPrank(user); + VaultImplementation(payable(address(vault))).setDepositorWhitelistStatus(depositor, status); + vm.stopPrank(); + } + + function _setIsDepositLimit(address user, bool status) internal { + vm.startPrank(user); + VaultImplementation(payable(address(vault))).setIsDepositLimit(status); + vm.stopPrank(); + } + + function _setDepositLimit(address user, uint256 amount) internal { + vm.startPrank(user); + VaultImplementation(payable(address(vault))).setDepositLimit(amount); + vm.stopPrank(); + } + + function _setNetworkLimit(address user, address network, uint256 amount) internal { + vm.startPrank(user); + delegator.setNetworkLimit(network.subnetwork(0), amount); + vm.stopPrank(); + } + + function _setOperatorNetworkLimit(address user, address network, address operator, uint256 amount) internal { + vm.startPrank(user); + delegator.setOperatorNetworkLimit(network.subnetwork(0), operator, amount); + vm.stopPrank(); + } + + function _slash( + address user, + address network, + address operator, + uint256 amount, + uint48 captureTimestamp, + bytes memory hints + ) internal returns (uint256 slashAmount) { + vm.startPrank(user); + slashAmount = slasher.slash(network.subnetwork(0), operator, amount, captureTimestamp, hints); + vm.stopPrank(); + } + + function _setMaxNetworkLimit(address user, uint96 identifier, uint256 amount) internal { + vm.startPrank(user); + delegator.setMaxNetworkLimit(identifier, amount); + vm.stopPrank(); + } +} diff --git a/test/vault/v1.1/VaultVotes.t.sol b/test/vault/v1.1/VaultVotes.t.sol new file mode 100644 index 00000000..1ab295bb --- /dev/null +++ b/test/vault/v1.1/VaultVotes.t.sol @@ -0,0 +1,4277 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.25; + +import {Test, console2} from "forge-std/Test.sol"; + +import {VaultFactory} from "../../../src/contracts/VaultFactory.sol"; +import {DelegatorFactory} from "../../../src/contracts/DelegatorFactory.sol"; +import {SlasherFactory} from "../../../src/contracts/SlasherFactory.sol"; +import {NetworkRegistry} from "../../../src/contracts/NetworkRegistry.sol"; +import {OperatorRegistry} from "../../../src/contracts/OperatorRegistry.sol"; +import {MetadataService} from "../../../src/contracts/service/MetadataService.sol"; +import {NetworkMiddlewareService} from "../../../src/contracts/service/NetworkMiddlewareService.sol"; +import {OptInService} from "../../../src/contracts/service/OptInService.sol"; + +import {IVault as IVaultV1} from "../../../src/interfaces/vault/IVault.sol"; +import {Vault as VaultV1} from "../../../src/contracts/vault/Vault.sol"; +import {VaultTokenized as VaultTokenizedV1} from "../../../src/contracts/vault/VaultTokenized.sol"; +import {Vault} from "../../../src/contracts/vault/v1.1/Vault.sol"; +import {VaultVotesImplementation} from "../../../src/contracts/vault/v1.1/VaultVotesImplementation.sol"; +import {VaultTokenizedImplementation} from "../../../src/contracts/vault/v1.1/VaultTokenizedImplementation.sol"; +import {VaultTokenized} from "../../../src/contracts/vault/v1.1/VaultTokenized.sol"; +import {VaultVotes} from "../../../src/contracts/vault/v1.1/VaultVotes.sol"; +import {VaultImplementation} from "../../../src/contracts/vault/v1.1/VaultImplementation.sol"; +import {NetworkRestakeDelegator} from "../../../src/contracts/delegator/NetworkRestakeDelegator.sol"; +import {FullRestakeDelegator} from "../../../src/contracts/delegator/FullRestakeDelegator.sol"; +import {OperatorSpecificDelegator} from "../../../src/contracts/delegator/OperatorSpecificDelegator.sol"; +import {OperatorNetworkSpecificDelegator} from "../../../src/contracts/delegator/OperatorNetworkSpecificDelegator.sol"; +import {Slasher} from "../../../src/contracts/slasher/Slasher.sol"; +import {VetoSlasher} from "../../../src/contracts/slasher/VetoSlasher.sol"; +import {VotesUpgradeable} from "@openzeppelin/contracts-upgradeable/governance/utils/VotesUpgradeable.sol"; + +import {IVault} from "../../../src/interfaces/vault/v1.1/IVault.sol"; +import {IVaultTokenized} from "../../../src/interfaces/vault/v1.1/IVaultTokenized.sol"; + +import {Token} from "../../mocks/Token.sol"; +import {FeeOnTransferToken} from "../../mocks/FeeOnTransferToken.sol"; +import {VaultConfigurator} from "../../../src/contracts/VaultConfigurator.sol"; +import {IVaultConfigurator} from "../../../src/interfaces/IVaultConfigurator.sol"; +import {INetworkRestakeDelegator} from "../../../src/interfaces/delegator/INetworkRestakeDelegator.sol"; +import {IFullRestakeDelegator} from "../../../src/interfaces/delegator/IFullRestakeDelegator.sol"; +import {IBaseDelegator} from "../../../src/interfaces/delegator/IBaseDelegator.sol"; +import {ISlasher} from "../../../src/interfaces/slasher/ISlasher.sol"; +import {IBaseSlasher} from "../../../src/interfaces/slasher/IBaseSlasher.sol"; + +import {IVaultVotes} from "../../../src/interfaces/vault/v1.1/IVaultVotes.sol"; +import {Math} from "@openzeppelin/contracts/utils/math/Math.sol"; +import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; + +import {VaultHints} from "../../../src/contracts/hints/VaultHints.sol"; +import {Subnetwork} from "../../../src/contracts/libraries/Subnetwork.sol"; + +contract VaultVotesTest is Test { + using Math for uint256; + using Subnetwork for bytes32; + using Subnetwork for address; + + address owner; + address alice; + uint256 alicePrivateKey; + address bob; + uint256 bobPrivateKey; + + VaultFactory vaultFactory; + DelegatorFactory delegatorFactory; + SlasherFactory slasherFactory; + NetworkRegistry networkRegistry; + OperatorRegistry operatorRegistry; + MetadataService operatorMetadataService; + MetadataService networkMetadataService; + NetworkMiddlewareService networkMiddlewareService; + OptInService operatorVaultOptInService; + OptInService operatorNetworkOptInService; + + Token collateral; + FeeOnTransferToken feeOnTransferCollateral; + VaultConfigurator vaultConfigurator; + + VaultVotesImplementation vault; + FullRestakeDelegator delegator; + Slasher slasher; + + function setUp() public { + owner = address(this); + (alice, alicePrivateKey) = makeAddrAndKey("alice"); + (bob, bobPrivateKey) = makeAddrAndKey("bob"); + + vaultFactory = new VaultFactory(owner); + delegatorFactory = new DelegatorFactory(owner); + slasherFactory = new SlasherFactory(owner); + networkRegistry = new NetworkRegistry(); + operatorRegistry = new OperatorRegistry(); + operatorMetadataService = new MetadataService(address(operatorRegistry)); + networkMetadataService = new MetadataService(address(networkRegistry)); + networkMiddlewareService = new NetworkMiddlewareService(address(networkRegistry)); + operatorVaultOptInService = + new OptInService(address(operatorRegistry), address(vaultFactory), "OperatorVaultOptInService"); + operatorNetworkOptInService = + new OptInService(address(operatorRegistry), address(networkRegistry), "OperatorNetworkOptInService"); + + address vaultV1Impl = + address(new VaultV1(address(delegatorFactory), address(slasherFactory), address(vaultFactory))); + vaultFactory.whitelist(vaultV1Impl); + + address vaultTokenizedV1Impl = + address(new VaultTokenizedV1(address(delegatorFactory), address(slasherFactory), address(vaultFactory))); + vaultFactory.whitelist(vaultTokenizedV1Impl); + + address vaultImplementation = + address(new VaultImplementation(address(delegatorFactory), address(slasherFactory))); + address vaultImpl = address(new Vault(address(vaultFactory), vaultImplementation)); + vaultFactory.whitelist(vaultImpl); + + address vaultTokenizedImplementation = address(new VaultTokenizedImplementation(vaultImplementation)); + address vaultTokenizedImpl = address(new VaultTokenized(address(vaultFactory), vaultTokenizedImplementation)); + vaultFactory.whitelist(vaultTokenizedImpl); + + address vaultVotesImplementation = address(new VaultVotesImplementation(vaultImplementation)); + address vaultVotesImpl = address(new VaultVotes(address(vaultFactory), vaultVotesImplementation)); + vaultFactory.whitelist(vaultVotesImpl); + + address networkRestakeDelegatorImpl = address( + new NetworkRestakeDelegator( + address(networkRegistry), + address(vaultFactory), + address(operatorVaultOptInService), + address(operatorNetworkOptInService), + address(delegatorFactory), + delegatorFactory.totalTypes() + ) + ); + delegatorFactory.whitelist(networkRestakeDelegatorImpl); + + address fullRestakeDelegatorImpl = address( + new FullRestakeDelegator( + address(networkRegistry), + address(vaultFactory), + address(operatorVaultOptInService), + address(operatorNetworkOptInService), + address(delegatorFactory), + delegatorFactory.totalTypes() + ) + ); + delegatorFactory.whitelist(fullRestakeDelegatorImpl); + + address operatorSpecificDelegatorImpl = address( + new OperatorSpecificDelegator( + address(operatorRegistry), + address(networkRegistry), + address(vaultFactory), + address(operatorVaultOptInService), + address(operatorNetworkOptInService), + address(delegatorFactory), + delegatorFactory.totalTypes() + ) + ); + delegatorFactory.whitelist(operatorSpecificDelegatorImpl); + + address operatorNetworkSpecificDelegatorImpl = address( + new OperatorNetworkSpecificDelegator( + address(operatorRegistry), + address(networkRegistry), + address(vaultFactory), + address(operatorVaultOptInService), + address(operatorNetworkOptInService), + address(delegatorFactory), + delegatorFactory.totalTypes() + ) + ); + delegatorFactory.whitelist(operatorNetworkSpecificDelegatorImpl); + + address slasherImpl = address( + new Slasher( + address(vaultFactory), + address(networkMiddlewareService), + address(slasherFactory), + slasherFactory.totalTypes() + ) + ); + slasherFactory.whitelist(slasherImpl); + + address vetoSlasherImpl = address( + new VetoSlasher( + address(vaultFactory), + address(networkMiddlewareService), + address(networkRegistry), + address(slasherFactory), + slasherFactory.totalTypes() + ) + ); + slasherFactory.whitelist(vetoSlasherImpl); + + collateral = new Token("Token"); + feeOnTransferCollateral = new FeeOnTransferToken("FeeOnTransferToken"); + + vaultConfigurator = + new VaultConfigurator(address(vaultFactory), address(delegatorFactory), address(slasherFactory)); + } + + function test_Create2( + address burner, + uint48 epochDuration, + bool depositWhitelist, + bool isDepositLimit, + uint256 depositLimit + ) public { + epochDuration = uint48(bound(epochDuration, 1, 50 weeks)); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + address[] memory networkLimitSetRoleHolders = new address[](1); + networkLimitSetRoleHolders[0] = alice; + address[] memory operatorNetworkSharesSetRoleHolders = new address[](1); + operatorNetworkSharesSetRoleHolders[0] = alice; + (address vault_, address delegator_,) = vaultConfigurator.create( + IVaultConfigurator.InitParams({ + version: 5, + owner: address(0), + vaultParams: abi.encode( + IVaultTokenized.InitParamsTokenized({ + baseParams: abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: burner, + epochDuration: epochDuration, + depositWhitelist: depositWhitelist, + isDepositLimit: isDepositLimit, + depositLimit: depositLimit, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 1, + flashFeeReceiver: alice, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ), + name: "Test", + symbol: "TEST" + }) + ), + delegatorIndex: 0, + delegatorParams: abi.encode( + INetworkRestakeDelegator.InitParams({ + baseParams: IBaseDelegator.BaseParams({ + defaultAdminRoleHolder: alice, + hook: address(0), + hookSetRoleHolder: alice + }), + networkLimitSetRoleHolders: networkLimitSetRoleHolders, + operatorNetworkSharesSetRoleHolders: operatorNetworkSharesSetRoleHolders + }) + ), + withSlasher: false, + slasherIndex: 0, + slasherParams: abi.encode(ISlasher.InitParams({baseParams: IBaseSlasher.BaseParams({isBurnerHook: false})})) + }) + ); + + vault = VaultVotesImplementation(payable(vault_)); + + assertEq(vault.DEPOSIT_WHITELIST_SET_ROLE(), keccak256("DEPOSIT_WHITELIST_SET_ROLE")); + assertEq(vault.DEPOSITOR_WHITELIST_ROLE(), keccak256("DEPOSITOR_WHITELIST_ROLE")); + assertEq(VaultImplementation(payable(address(vault))).DELEGATOR_FACTORY(), address(delegatorFactory)); + assertEq(VaultImplementation(payable(address(vault))).SLASHER_FACTORY(), address(slasherFactory)); + + assertEq(VaultVotes(payable(address(vault))).owner(), address(0)); + assertEq(vault.collateral(), address(collateral)); + assertEq(vault.delegator(), delegator_); + assertEq(vault.slasher(), address(0)); + assertEq(vault.burner(), burner); + assertEq(VaultImplementation(payable(address(vault))).epochDuration(), epochDuration); + assertEq(vault.depositWhitelist(), depositWhitelist); + assertEq( + VaultImplementation(payable(address(vault))).hasRole( + VaultImplementation(payable(address(vault))).DEFAULT_ADMIN_ROLE(), alice + ), + true + ); + assertEq( + VaultImplementation(payable(address(vault))).hasRole( + VaultImplementation(payable(address(vault))).DEPOSITOR_WHITELIST_ROLE(), alice + ), + true + ); + assertEq(VaultImplementation(payable(address(vault))).epochDurationInit(), blockTimestamp); + assertEq(VaultImplementation(payable(address(vault))).epochDuration(), epochDuration); + vm.expectRevert(IVault.InvalidTimestamp.selector); + assertEq(VaultImplementation(payable(address(vault))).epochAt(0), 0); + assertEq(VaultImplementation(payable(address(vault))).epochAt(uint48(blockTimestamp)), 0); + assertEq(VaultImplementation(payable(address(vault))).currentEpoch(), 0); + assertEq(VaultImplementation(payable(address(vault))).currentEpochStart(), blockTimestamp); + vm.expectRevert(IVault.NoPreviousEpoch.selector); + VaultImplementation(payable(address(vault))).previousEpochStart(); + assertEq(VaultImplementation(payable(address(vault))).nextEpochStart(), blockTimestamp + epochDuration); + assertEq(VaultImplementation(payable(address(vault))).totalStake(), 0); + assertEq(VaultImplementation(payable(address(vault))).activeSharesAt(uint48(blockTimestamp), ""), 0); + assertEq(VaultImplementation(payable(address(vault))).activeShares(), 0); + assertEq(VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp), ""), 0); + assertEq(VaultImplementation(payable(address(vault))).activeStake(), 0); + assertEq(VaultImplementation(payable(address(vault))).activeSharesOfAt(alice, uint48(blockTimestamp), ""), 0); + assertEq(VaultImplementation(payable(address(vault))).activeSharesOf(alice), 0); + assertEq(VaultImplementation(payable(address(vault))).activeBalanceOfAt(alice, uint48(blockTimestamp), ""), 0); + assertEq(VaultImplementation(payable(address(vault))).activeBalanceOf(alice), 0); + assertEq(VaultImplementation(payable(address(vault))).withdrawals(0), 0); + assertEq(VaultImplementation(payable(address(vault))).withdrawalShares(0), 0); + assertEq(VaultImplementation(payable(address(vault))).isWithdrawalsClaimed(0, alice), false); + assertEq(VaultImplementation(payable(address(vault))).depositWhitelist(), depositWhitelist); + assertEq(VaultImplementation(payable(address(vault))).isDepositorWhitelisted(alice), false); + assertEq(VaultImplementation(payable(address(vault))).slashableBalanceOf(alice), 0); + assertEq(VaultImplementation(payable(address(vault))).isDelegatorInitialized(), true); + assertEq(VaultImplementation(payable(address(vault))).isSlasherInitialized(), true); + assertEq(VaultImplementation(payable(address(vault))).isInitialized(), true); + + blockTimestamp = blockTimestamp + VaultImplementation(payable(address(vault))).epochDuration() - 1; + vm.warp(blockTimestamp); + + assertEq(VaultImplementation(payable(address(vault))).epochAt(uint48(blockTimestamp)), 0); + assertEq(VaultImplementation(payable(address(vault))).epochAt(uint48(blockTimestamp + 1)), 1); + assertEq(VaultImplementation(payable(address(vault))).currentEpoch(), 0); + assertEq( + VaultImplementation(payable(address(vault))).currentEpochStart(), + blockTimestamp - (VaultImplementation(payable(address(vault))).epochDuration() - 1) + ); + vm.expectRevert(IVault.NoPreviousEpoch.selector); + VaultImplementation(payable(address(vault))).previousEpochStart(); + assertEq(VaultImplementation(payable(address(vault))).nextEpochStart(), blockTimestamp + 1); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + assertEq(VaultImplementation(payable(address(vault))).epochAt(uint48(blockTimestamp)), 1); + assertEq( + VaultImplementation(payable(address(vault))).epochAt( + uint48(blockTimestamp + 2 * VaultImplementation(payable(address(vault))).epochDuration()) + ), + 3 + ); + assertEq(VaultImplementation(payable(address(vault))).currentEpoch(), 1); + assertEq(VaultImplementation(payable(address(vault))).currentEpochStart(), blockTimestamp); + assertEq( + VaultImplementation(payable(address(vault))).previousEpochStart(), + blockTimestamp - VaultImplementation(payable(address(vault))).epochDuration() + ); + assertEq( + VaultImplementation(payable(address(vault))).nextEpochStart(), + blockTimestamp + VaultImplementation(payable(address(vault))).epochDuration() + ); + + blockTimestamp = blockTimestamp + VaultImplementation(payable(address(vault))).epochDuration() - 1; + vm.warp(blockTimestamp); + + assertEq(VaultImplementation(payable(address(vault))).epochAt(uint48(blockTimestamp)), 1); + assertEq(VaultImplementation(payable(address(vault))).epochAt(uint48(blockTimestamp + 1)), 2); + assertEq(VaultImplementation(payable(address(vault))).currentEpoch(), 1); + assertEq( + VaultImplementation(payable(address(vault))).currentEpochStart(), + blockTimestamp - (VaultImplementation(payable(address(vault))).epochDuration() - 1) + ); + assertEq( + VaultImplementation(payable(address(vault))).previousEpochStart(), + blockTimestamp - (VaultImplementation(payable(address(vault))).epochDuration() - 1) + - VaultImplementation(payable(address(vault))).epochDuration() + ); + assertEq(VaultImplementation(payable(address(vault))).nextEpochStart(), blockTimestamp + 1); + + assertEq(VaultTokenizedImplementation(payable(address(vault))).balanceOf(alice), 0); + assertEq(VaultTokenizedImplementation(payable(address(vault))).totalSupply(), 0); + assertEq(VaultTokenizedImplementation(payable(address(vault))).allowance(alice, alice), 0); + assertEq(VaultTokenizedImplementation(payable(address(vault))).decimals(), collateral.decimals()); + assertEq(VaultTokenizedImplementation(payable(address(vault))).symbol(), "TEST"); + assertEq(VaultTokenizedImplementation(payable(address(vault))).name(), "Test"); + + assertEq(vault.clock(), blockTimestamp); + assertEq(vault.CLOCK_MODE(), "mode=timestamp"); + } + + function test_CreateRevertInvalidEpochDuration() public { + uint48 epochDuration = 0; + + address[] memory networkLimitSetRoleHolders = new address[](1); + networkLimitSetRoleHolders[0] = alice; + address[] memory operatorNetworkSharesSetRoleHolders = new address[](1); + operatorNetworkSharesSetRoleHolders[0] = alice; + uint64 lastVersion = vaultFactory.lastVersion(); + vm.expectRevert(IVault.InvalidEpochDuration.selector); + vaultConfigurator.create( + IVaultConfigurator.InitParams({ + version: lastVersion, + owner: alice, + vaultParams: abi.encode( + IVaultTokenized.InitParamsTokenized({ + baseParams: abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: epochDuration, + depositWhitelist: true, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 1, + flashFeeReceiver: alice, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ), + name: "Test", + symbol: "TEST" + }) + ), + delegatorIndex: 0, + delegatorParams: abi.encode( + INetworkRestakeDelegator.InitParams({ + baseParams: IBaseDelegator.BaseParams({ + defaultAdminRoleHolder: alice, + hook: address(0), + hookSetRoleHolder: alice + }), + networkLimitSetRoleHolders: networkLimitSetRoleHolders, + operatorNetworkSharesSetRoleHolders: operatorNetworkSharesSetRoleHolders + }) + ), + withSlasher: false, + slasherIndex: 0, + slasherParams: abi.encode(ISlasher.InitParams({baseParams: IBaseSlasher.BaseParams({isBurnerHook: false})})) + }) + ); + } + + function test_CreateRevertInvalidCollateral( + uint48 epochDuration + ) public { + epochDuration = uint48(bound(epochDuration, 1, 50 weeks)); + + address[] memory networkLimitSetRoleHolders = new address[](1); + networkLimitSetRoleHolders[0] = alice; + address[] memory operatorNetworkSharesSetRoleHolders = new address[](1); + operatorNetworkSharesSetRoleHolders[0] = alice; + uint64 lastVersion = vaultFactory.lastVersion(); + vm.expectRevert(IVault.InvalidCollateral.selector); + vaultConfigurator.create( + IVaultConfigurator.InitParams({ + version: lastVersion, + owner: alice, + vaultParams: abi.encode( + IVaultTokenized.InitParamsTokenized({ + baseParams: abi.encode( + IVault.InitParams({ + collateral: address(0), + burner: address(0xdEaD), + epochDuration: epochDuration, + depositWhitelist: true, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 1, + flashFeeReceiver: alice, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ), + name: "Test", + symbol: "TEST" + }) + ), + delegatorIndex: 0, + delegatorParams: abi.encode( + INetworkRestakeDelegator.InitParams({ + baseParams: IBaseDelegator.BaseParams({ + defaultAdminRoleHolder: alice, + hook: address(0), + hookSetRoleHolder: alice + }), + networkLimitSetRoleHolders: networkLimitSetRoleHolders, + operatorNetworkSharesSetRoleHolders: operatorNetworkSharesSetRoleHolders + }) + ), + withSlasher: false, + slasherIndex: 0, + slasherParams: abi.encode(ISlasher.InitParams({baseParams: IBaseSlasher.BaseParams({isBurnerHook: false})})) + }) + ); + } + + function test_CreateRevertMissingRoles1( + uint48 epochDuration + ) public { + epochDuration = uint48(bound(epochDuration, 1, 50 weeks)); + + uint64 lastVersion = vaultFactory.lastVersion(); + + vm.expectRevert(IVault.MissingRoles.selector); + vault = VaultVotesImplementation( + payable( + vaultFactory.create( + lastVersion, + alice, + abi.encode( + IVaultTokenized.InitParamsTokenized({ + baseParams: abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: epochDuration, + depositWhitelist: true, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 1, + flashFeeReceiver: alice, + defaultAdminRoleHolder: address(0), + depositWhitelistSetRoleHolder: address(0), + depositorWhitelistRoleHolder: address(0), + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: address(0), + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ), + name: "Test", + symbol: "TEST" + }) + ) + ) + ) + ); + } + + function test_CreateRevertMissingRoles2( + uint48 epochDuration + ) public { + epochDuration = uint48(bound(epochDuration, 1, 50 weeks)); + + uint64 lastVersion = vaultFactory.lastVersion(); + + vm.expectRevert(IVault.MissingRoles.selector); + vault = VaultVotesImplementation( + payable( + vaultFactory.create( + lastVersion, + alice, + abi.encode( + IVaultTokenized.InitParamsTokenized({ + baseParams: abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: epochDuration, + depositWhitelist: false, + isDepositLimit: true, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 0, + flashFeeReceiver: address(0), + defaultAdminRoleHolder: address(0), + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: address(0), + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: address(0), + depositLimitSetRoleHolder: address(0), + epochDurationSetRoleHolder: address(0), + flashLoanEnabledSetRoleHolder: address(0), + flashFeeRateSetRoleHolder: address(0), + flashFeeReceiverSetRoleHolder: address(0) + }) + ), + name: "Test", + symbol: "TEST" + }) + ) + ) + ) + ); + } + + function test_CreateRevertMissingRoles3( + uint48 epochDuration + ) public { + epochDuration = uint48(bound(epochDuration, 1, 50 weeks)); + + uint64 lastVersion = vaultFactory.lastVersion(); + + vm.expectRevert(IVault.MissingRoles.selector); + vault = VaultVotesImplementation( + payable( + vaultFactory.create( + lastVersion, + alice, + abi.encode( + IVaultTokenized.InitParamsTokenized({ + baseParams: abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: epochDuration, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 1, + flashFeeReceiver: alice, + defaultAdminRoleHolder: address(0), + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: address(0), + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: address(0), + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ), + name: "Test", + symbol: "TEST" + }) + ) + ) + ) + ); + } + + function test_CreateRevertMissingRoles4( + uint48 epochDuration + ) public { + epochDuration = uint48(bound(epochDuration, 1, 50 weeks)); + + uint64 lastVersion = vaultFactory.lastVersion(); + + vm.expectRevert(IVault.MissingRoles.selector); + vault = VaultVotesImplementation( + payable( + vaultFactory.create( + lastVersion, + alice, + abi.encode( + IVaultTokenized.InitParamsTokenized({ + baseParams: abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: epochDuration, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 1, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 0, + flashFeeReceiver: address(0), + defaultAdminRoleHolder: address(0), + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: address(0), + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: address(0), + depositLimitSetRoleHolder: address(0), + epochDurationSetRoleHolder: address(0), + flashLoanEnabledSetRoleHolder: address(0), + flashFeeRateSetRoleHolder: address(0), + flashFeeReceiverSetRoleHolder: address(0) + }) + ), + name: "Test", + symbol: "TEST" + }) + ) + ) + ) + ); + } + + function test_CreateRevertMissingRoles5( + uint48 epochDuration + ) public { + epochDuration = uint48(bound(epochDuration, 1, 50 weeks)); + + uint64 lastVersion = vaultFactory.lastVersion(); + + vm.expectRevert(IVault.MissingRoles.selector); + vault = VaultVotesImplementation( + payable( + vaultFactory.create( + lastVersion, + alice, + abi.encode( + IVaultTokenized.InitParamsTokenized({ + baseParams: abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: epochDuration, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 1, + flashFeeReceiver: alice, + defaultAdminRoleHolder: address(0), + depositWhitelistSetRoleHolder: address(0), + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: address(0), + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ), + name: "Test", + symbol: "TEST" + }) + ) + ) + ) + ); + } + + function test_SetDelegator() public { + uint64 lastVersion = vaultFactory.lastVersion(); + + vault = VaultVotesImplementation( + payable( + vaultFactory.create( + lastVersion, + alice, + abi.encode( + IVaultTokenized.InitParamsTokenized({ + baseParams: abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: 7 days, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 1, + flashFeeReceiver: alice, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ), + name: "Test", + symbol: "TEST" + }) + ) + ) + ) + ); + + assertEq(VaultImplementation(payable(address(vault))).isDelegatorInitialized(), false); + + address[] memory networkLimitSetRoleHolders = new address[](1); + networkLimitSetRoleHolders[0] = alice; + address[] memory operatorNetworkLimitSetRoleHolders = new address[](1); + operatorNetworkLimitSetRoleHolders[0] = alice; + delegator = FullRestakeDelegator( + delegatorFactory.create( + 1, + abi.encode( + address(vault), + abi.encode( + IFullRestakeDelegator.InitParams({ + baseParams: IBaseDelegator.BaseParams({ + defaultAdminRoleHolder: alice, + hook: address(0), + hookSetRoleHolder: alice + }), + networkLimitSetRoleHolders: networkLimitSetRoleHolders, + operatorNetworkLimitSetRoleHolders: operatorNetworkLimitSetRoleHolders + }) + ) + ) + ) + ); + + VaultImplementation(payable(address(vault))).setDelegator(address(delegator)); + + assertEq(vault.delegator(), address(delegator)); + assertEq(VaultImplementation(payable(address(vault))).isDelegatorInitialized(), true); + assertEq(VaultImplementation(payable(address(vault))).isInitialized(), false); + } + + function test_SetDelegatorRevertDelegatorAlreadyInitialized() public { + uint64 lastVersion = vaultFactory.lastVersion(); + + vault = VaultVotesImplementation( + payable( + vaultFactory.create( + lastVersion, + alice, + abi.encode( + IVaultTokenized.InitParamsTokenized({ + baseParams: abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: 7 days, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 1, + flashFeeReceiver: alice, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ), + name: "Test", + symbol: "TEST" + }) + ) + ) + ) + ); + + address[] memory networkLimitSetRoleHolders = new address[](1); + networkLimitSetRoleHolders[0] = alice; + address[] memory operatorNetworkLimitSetRoleHolders = new address[](1); + operatorNetworkLimitSetRoleHolders[0] = alice; + delegator = FullRestakeDelegator( + delegatorFactory.create( + 1, + abi.encode( + address(vault), + abi.encode( + IFullRestakeDelegator.InitParams({ + baseParams: IBaseDelegator.BaseParams({ + defaultAdminRoleHolder: alice, + hook: address(0), + hookSetRoleHolder: alice + }), + networkLimitSetRoleHolders: networkLimitSetRoleHolders, + operatorNetworkLimitSetRoleHolders: operatorNetworkLimitSetRoleHolders + }) + ) + ) + ) + ); + + VaultImplementation(payable(address(vault))).setDelegator(address(delegator)); + + vm.expectRevert(IVault.DelegatorAlreadyInitialized.selector); + VaultImplementation(payable(address(vault))).setDelegator(address(delegator)); + } + + function test_SetDelegatorRevertNotDelegator() public { + uint64 lastVersion = vaultFactory.lastVersion(); + + vault = VaultVotesImplementation( + payable( + vaultFactory.create( + lastVersion, + alice, + abi.encode( + IVaultTokenized.InitParamsTokenized({ + baseParams: abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: 7 days, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 1, + flashFeeReceiver: alice, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ), + name: "Test", + symbol: "TEST" + }) + ) + ) + ) + ); + + vm.expectRevert(IVault.NotDelegator.selector); + VaultImplementation(payable(address(vault))).setDelegator(address(1)); + } + + function test_SetDelegatorRevertInvalidDelegator() public { + uint64 lastVersion = vaultFactory.lastVersion(); + + vault = VaultVotesImplementation( + payable( + vaultFactory.create( + lastVersion, + alice, + abi.encode( + IVaultTokenized.InitParamsTokenized({ + baseParams: abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: 7 days, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 1, + flashFeeReceiver: alice, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ), + name: "Test", + symbol: "TEST" + }) + ) + ) + ) + ); + + VaultVotesImplementation vault2 = VaultVotesImplementation( + payable( + vaultFactory.create( + lastVersion, + alice, + abi.encode( + IVaultTokenized.InitParamsTokenized({ + baseParams: abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: 7 days, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 1, + flashFeeReceiver: alice, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ), + name: "Test", + symbol: "TEST" + }) + ) + ) + ) + ); + + address[] memory networkLimitSetRoleHolders = new address[](1); + networkLimitSetRoleHolders[0] = alice; + address[] memory operatorNetworkLimitSetRoleHolders = new address[](1); + operatorNetworkLimitSetRoleHolders[0] = alice; + delegator = FullRestakeDelegator( + delegatorFactory.create( + 1, + abi.encode( + address(vault2), + abi.encode( + IFullRestakeDelegator.InitParams({ + baseParams: IBaseDelegator.BaseParams({ + defaultAdminRoleHolder: alice, + hook: address(0), + hookSetRoleHolder: alice + }), + networkLimitSetRoleHolders: networkLimitSetRoleHolders, + operatorNetworkLimitSetRoleHolders: operatorNetworkLimitSetRoleHolders + }) + ) + ) + ) + ); + + vm.expectRevert(IVault.InvalidDelegator.selector); + VaultImplementation(payable(address(vault))).setDelegator(address(delegator)); + } + + function test_SetSlasher() public { + uint64 lastVersion = vaultFactory.lastVersion(); + + vault = VaultVotesImplementation( + payable( + vaultFactory.create( + lastVersion, + alice, + abi.encode( + IVaultTokenized.InitParamsTokenized({ + baseParams: abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: 7 days, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 1, + flashFeeReceiver: alice, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ), + name: "Test", + symbol: "TEST" + }) + ) + ) + ) + ); + + assertEq(vault.isSlasherInitialized(), false); + + slasher = Slasher( + slasherFactory.create( + 0, + abi.encode( + address(vault), + abi.encode(ISlasher.InitParams({baseParams: IBaseSlasher.BaseParams({isBurnerHook: false})})) + ) + ) + ); + + VaultImplementation(payable(address(vault))).setSlasher(address(slasher)); + + assertEq(vault.slasher(), address(slasher)); + assertEq(vault.isSlasherInitialized(), true); + assertEq(VaultImplementation(payable(address(vault))).isInitialized(), false); + } + + function test_SetSlasherRevertSlasherAlreadyInitialized() public { + uint64 lastVersion = vaultFactory.lastVersion(); + + vault = VaultVotesImplementation( + payable( + vaultFactory.create( + lastVersion, + alice, + abi.encode( + IVaultTokenized.InitParamsTokenized({ + baseParams: abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: 7 days, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 1, + flashFeeReceiver: alice, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ), + name: "Test", + symbol: "TEST" + }) + ) + ) + ) + ); + + slasher = Slasher( + slasherFactory.create( + 0, + abi.encode( + address(vault), + abi.encode(ISlasher.InitParams({baseParams: IBaseSlasher.BaseParams({isBurnerHook: false})})) + ) + ) + ); + + VaultImplementation(payable(address(vault))).setSlasher(address(slasher)); + + vm.expectRevert(IVault.SlasherAlreadyInitialized.selector); + VaultImplementation(payable(address(vault))).setSlasher(address(slasher)); + } + + function test_SetSlasherRevertNotSlasher() public { + uint64 lastVersion = vaultFactory.lastVersion(); + + vault = VaultVotesImplementation( + payable( + vaultFactory.create( + lastVersion, + alice, + abi.encode( + IVaultTokenized.InitParamsTokenized({ + baseParams: abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: 7 days, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 1, + flashFeeReceiver: alice, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ), + name: "Test", + symbol: "TEST" + }) + ) + ) + ) + ); + + slasher = Slasher( + slasherFactory.create( + 0, + abi.encode( + address(vault), + abi.encode(ISlasher.InitParams({baseParams: IBaseSlasher.BaseParams({isBurnerHook: false})})) + ) + ) + ); + + vm.expectRevert(IVault.NotSlasher.selector); + VaultImplementation(payable(address(vault))).setSlasher(address(1)); + } + + function test_SetSlasherRevertInvalidSlasher() public { + uint64 lastVersion = vaultFactory.lastVersion(); + + vault = VaultVotesImplementation( + payable( + vaultFactory.create( + lastVersion, + alice, + abi.encode( + IVaultTokenized.InitParamsTokenized({ + baseParams: abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: 7 days, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 1, + flashFeeReceiver: alice, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ), + name: "Test", + symbol: "TEST" + }) + ) + ) + ) + ); + + VaultVotesImplementation vault2 = VaultVotesImplementation( + payable( + vaultFactory.create( + lastVersion, + alice, + abi.encode( + IVaultTokenized.InitParamsTokenized({ + baseParams: abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: 7 days, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 1, + flashFeeReceiver: alice, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ), + name: "Test", + symbol: "TEST" + }) + ) + ) + ) + ); + + slasher = Slasher( + slasherFactory.create( + 0, + abi.encode( + address(vault2), + abi.encode(ISlasher.InitParams({baseParams: IBaseSlasher.BaseParams({isBurnerHook: false})})) + ) + ) + ); + + vm.expectRevert(IVault.InvalidSlasher.selector); + VaultImplementation(payable(address(vault))).setSlasher(address(slasher)); + } + + function test_SetSlasherZeroAddress() public { + uint64 lastVersion = vaultFactory.lastVersion(); + + vault = VaultVotesImplementation( + payable( + vaultFactory.create( + lastVersion, + alice, + abi.encode( + IVaultTokenized.InitParamsTokenized({ + baseParams: abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: 7 days, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 1, + flashFeeReceiver: alice, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ), + name: "Test", + symbol: "TEST" + }) + ) + ) + ) + ); + + VaultImplementation(payable(address(vault))).setSlasher(address(0)); + } + + function test_DepositTwice(uint256 amount1, uint256 amount2) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + amount2 = bound(amount2, 1, 100 * 10 ** 18); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + uint256 tokensBefore = collateral.balanceOf(address(vault)); + uint256 shares1 = amount1 * 10 ** 0; + { + (uint256 depositedAmount, uint256 mintedShares) = _deposit(alice, amount1); + assertEq(depositedAmount, amount1); + assertEq(mintedShares, shares1); + + assertEq(VaultTokenizedImplementation(payable(address(vault))).balanceOf(alice), shares1); + assertEq(VaultTokenizedImplementation(payable(address(vault))).totalSupply(), shares1); + } + assertEq(collateral.balanceOf(address(vault)) - tokensBefore, amount1); + + assertEq(VaultImplementation(payable(address(vault))).totalStake(), amount1); + assertEq(VaultImplementation(payable(address(vault))).activeSharesAt(uint48(blockTimestamp - 1), ""), 0); + assertEq(VaultImplementation(payable(address(vault))).activeSharesAt(uint48(blockTimestamp), ""), shares1); + assertEq(VaultImplementation(payable(address(vault))).activeShares(), shares1); + assertEq(VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp - 1), ""), 0); + assertEq(VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp), ""), amount1); + assertEq(VaultImplementation(payable(address(vault))).activeStake(), amount1); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesOfAt(alice, uint48(blockTimestamp - 1), ""), 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesOfAt(alice, uint48(blockTimestamp), ""), shares1 + ); + assertEq(VaultImplementation(payable(address(vault))).activeSharesOf(alice), shares1); + assertEq( + VaultImplementation(payable(address(vault))).activeBalanceOfAt(alice, uint48(blockTimestamp - 1), ""), 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).activeBalanceOfAt(alice, uint48(blockTimestamp), ""), amount1 + ); + assertEq(VaultImplementation(payable(address(vault))).activeBalanceOf(alice), amount1); + assertEq(VaultImplementation(payable(address(vault))).slashableBalanceOf(alice), amount1); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + uint256 shares2 = amount2 * (shares1 + 10 ** 0) / (amount1 + 1); + { + (uint256 depositedAmount, uint256 mintedShares) = _deposit(alice, amount2); + assertEq(depositedAmount, amount2); + assertEq(mintedShares, shares2); + + assertEq(VaultTokenizedImplementation(payable(address(vault))).balanceOf(alice), shares1 + shares2); + assertEq(VaultTokenizedImplementation(payable(address(vault))).totalSupply(), shares1 + shares2); + } + + assertEq(VaultImplementation(payable(address(vault))).totalStake(), amount1 + amount2); + assertEq(VaultImplementation(payable(address(vault))).activeSharesAt(uint48(blockTimestamp - 1), ""), shares1); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesAt(uint48(blockTimestamp), ""), shares1 + shares2 + ); + assertEq(VaultImplementation(payable(address(vault))).activeShares(), shares1 + shares2); + uint256 gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesAt(uint48(blockTimestamp - 1), abi.encode(1)), + shares1 + ); + uint256 gasSpent = gasLeft - gasleft(); + gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesAt(uint48(blockTimestamp - 1), abi.encode(0)), + shares1 + ); + assertGt(gasSpent, gasLeft - gasleft()); + gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesAt(uint48(blockTimestamp), abi.encode(0)), + shares1 + shares2 + ); + gasSpent = gasLeft - gasleft(); + gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesAt(uint48(blockTimestamp), abi.encode(1)), + shares1 + shares2 + ); + assertGt(gasSpent, gasLeft - gasleft()); + assertEq(VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp - 1), ""), amount1); + assertEq( + VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp), ""), amount1 + amount2 + ); + assertEq(VaultImplementation(payable(address(vault))).activeStake(), amount1 + amount2); + gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp - 1), abi.encode(1)), + amount1 + ); + gasSpent = gasLeft - gasleft(); + gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp - 1), abi.encode(0)), + amount1 + ); + assertGt(gasSpent, gasLeft - gasleft()); + gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp), abi.encode(0)), + amount1 + amount2 + ); + gasSpent = gasLeft - gasleft(); + gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp), abi.encode(1)), + amount1 + amount2 + ); + assertGt(gasSpent, gasLeft - gasleft()); + assertEq(VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp - 1), ""), shares1); + assertEq( + VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp), ""), shares1 + shares2 + ); + assertEq(VaultImplementation(payable(address(vault))).activeSharesOf(alice), shares1 + shares2); + gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesOfAt( + alice, uint48(blockTimestamp - 1), abi.encode(1) + ), + shares1 + ); + gasSpent = gasLeft - gasleft(); + gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesOfAt( + alice, uint48(blockTimestamp - 1), abi.encode(0) + ), + shares1 + ); + assertGt(gasSpent, gasLeft - gasleft()); + gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesOfAt(alice, uint48(blockTimestamp), abi.encode(0)), + shares1 + shares2 + ); + gasSpent = gasLeft - gasleft(); + gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesOfAt(alice, uint48(blockTimestamp), abi.encode(1)), + shares1 + shares2 + ); + assertGt(gasSpent, gasLeft - gasleft()); + assertEq( + VaultImplementation(payable(address(vault))).activeBalanceOfAt(alice, uint48(blockTimestamp - 1), ""), + amount1 + ); + assertEq( + VaultImplementation(payable(address(vault))).activeBalanceOfAt(alice, uint48(blockTimestamp), ""), + amount1 + amount2 + ); + assertEq(VaultImplementation(payable(address(vault))).activeBalanceOf(alice), amount1 + amount2); + assertEq(VaultImplementation(payable(address(vault))).slashableBalanceOf(alice), amount1 + amount2); + gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeBalanceOfAt( + alice, + uint48(blockTimestamp - 1), + abi.encode( + IVault.ActiveBalanceOfHints({ + activeSharesOfHint: abi.encode(1), + activeStakeHint: abi.encode(1), + activeSharesHint: abi.encode(1) + }) + ) + ), + amount1 + ); + gasSpent = gasLeft - gasleft(); + gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeBalanceOfAt( + alice, + uint48(blockTimestamp - 1), + abi.encode( + IVault.ActiveBalanceOfHints({ + activeSharesOfHint: abi.encode(0), + activeStakeHint: abi.encode(0), + activeSharesHint: abi.encode(0) + }) + ) + ), + amount1 + ); + assertGt(gasSpent, gasLeft - gasleft()); + gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeBalanceOfAt( + alice, + uint48(blockTimestamp), + abi.encode( + IVault.ActiveBalanceOfHints({ + activeSharesOfHint: abi.encode(0), + activeStakeHint: abi.encode(0), + activeSharesHint: abi.encode(0) + }) + ) + ), + amount1 + amount2 + ); + gasSpent = gasLeft - gasleft(); + gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeBalanceOfAt( + alice, + uint48(blockTimestamp), + abi.encode( + IVault.ActiveBalanceOfHints({ + activeSharesOfHint: abi.encode(1), + activeStakeHint: abi.encode(1), + activeSharesHint: abi.encode(1) + }) + ) + ), + amount1 + amount2 + ); + assertGt(gasSpent, gasLeft - gasleft()); + } + + function test_DepositRevertSafeSupplyExceeded( + uint256 amount1 + ) public { + amount1 = bound(amount1, uint256(type(uint208).max) + 1, type(uint224).max); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + collateral.mint(alice, amount1); + vm.startPrank(alice); + collateral.approve(address(vault), amount1); + vm.expectRevert(IVaultVotes.SafeSupplyExceeded.selector); + vault.deposit(alice, amount1); + vm.stopPrank(); + } + + function test_DepositTwiceFeeOnTransferCollateral(uint256 amount1, uint256 amount2) public { + amount1 = bound(amount1, 2, 100 * 10 ** 18); + amount2 = bound(amount2, 2, 100 * 10 ** 18); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + uint48 epochDuration = 1; + { + address[] memory networkLimitSetRoleHolders = new address[](1); + networkLimitSetRoleHolders[0] = alice; + address[] memory operatorNetworkSharesSetRoleHolders = new address[](1); + operatorNetworkSharesSetRoleHolders[0] = alice; + (address vault_,,) = vaultConfigurator.create( + IVaultConfigurator.InitParams({ + version: 5, + owner: alice, + vaultParams: abi.encode( + IVaultTokenized.InitParamsTokenized({ + baseParams: abi.encode( + IVault.InitParams({ + collateral: address(feeOnTransferCollateral), + burner: address(0xdEaD), + epochDuration: 7 days, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 1, + flashFeeReceiver: alice, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ), + name: "Test", + symbol: "TEST" + }) + ), + delegatorIndex: 0, + delegatorParams: abi.encode( + INetworkRestakeDelegator.InitParams({ + baseParams: IBaseDelegator.BaseParams({ + defaultAdminRoleHolder: alice, + hook: address(0), + hookSetRoleHolder: alice + }), + networkLimitSetRoleHolders: networkLimitSetRoleHolders, + operatorNetworkSharesSetRoleHolders: operatorNetworkSharesSetRoleHolders + }) + ), + withSlasher: false, + slasherIndex: 0, + slasherParams: "" + }) + ); + + vault = VaultVotesImplementation(payable(vault_)); + } + + uint256 tokensBefore = feeOnTransferCollateral.balanceOf(address(vault)); + uint256 shares1 = (amount1 - 1) * 10 ** 0; + feeOnTransferCollateral.transfer(alice, amount1 + 1); + vm.startPrank(alice); + feeOnTransferCollateral.approve(address(vault), amount1); + { + (uint256 depositedAmount, uint256 mintedShares) = vault.deposit(alice, amount1); + assertEq(depositedAmount, amount1 - 1); + assertEq(mintedShares, shares1); + } + vm.stopPrank(); + assertEq(feeOnTransferCollateral.balanceOf(address(vault)) - tokensBefore, amount1 - 1); + + assertEq(VaultImplementation(payable(address(vault))).totalStake(), amount1 - 1); + assertEq(VaultImplementation(payable(address(vault))).activeSharesAt(uint48(blockTimestamp - 1), ""), 0); + assertEq(VaultImplementation(payable(address(vault))).activeSharesAt(uint48(blockTimestamp), ""), shares1); + assertEq(VaultImplementation(payable(address(vault))).activeShares(), shares1); + assertEq(VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp - 1), ""), 0); + assertEq(VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp), ""), amount1 - 1); + assertEq(VaultImplementation(payable(address(vault))).activeStake(), amount1 - 1); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesOfAt(alice, uint48(blockTimestamp - 1), ""), 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesOfAt(alice, uint48(blockTimestamp), ""), shares1 + ); + assertEq(VaultImplementation(payable(address(vault))).activeSharesOf(alice), shares1); + assertEq( + VaultImplementation(payable(address(vault))).activeBalanceOfAt(alice, uint48(blockTimestamp - 1), ""), 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).activeBalanceOfAt(alice, uint48(blockTimestamp), ""), + amount1 - 1 + ); + assertEq(VaultImplementation(payable(address(vault))).activeBalanceOf(alice), amount1 - 1); + assertEq(VaultImplementation(payable(address(vault))).slashableBalanceOf(alice), amount1 - 1); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + uint256 shares2 = (amount2 - 1) * (shares1 + 10 ** 0) / (amount1 - 1 + 1); + feeOnTransferCollateral.transfer(alice, amount2 + 1); + vm.startPrank(alice); + feeOnTransferCollateral.approve(address(vault), amount2); + { + (uint256 depositedAmount, uint256 mintedShares) = vault.deposit(alice, amount2); + assertEq(depositedAmount, amount2 - 1); + assertEq(mintedShares, shares2); + } + vm.stopPrank(); + + assertEq(VaultImplementation(payable(address(vault))).totalStake(), amount1 - 1 + amount2 - 1); + assertEq(VaultImplementation(payable(address(vault))).activeSharesAt(uint48(blockTimestamp - 1), ""), shares1); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesAt(uint48(blockTimestamp), ""), shares1 + shares2 + ); + assertEq(VaultImplementation(payable(address(vault))).activeShares(), shares1 + shares2); + uint256 gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesAt(uint48(blockTimestamp - 1), abi.encode(1)), + shares1 + ); + uint256 gasSpent = gasLeft - gasleft(); + gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesAt(uint48(blockTimestamp - 1), abi.encode(0)), + shares1 + ); + assertGt(gasSpent, gasLeft - gasleft()); + gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesAt(uint48(blockTimestamp), abi.encode(0)), + shares1 + shares2 + ); + gasSpent = gasLeft - gasleft(); + gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesAt(uint48(blockTimestamp), abi.encode(1)), + shares1 + shares2 + ); + assertGt(gasSpent, gasLeft - gasleft()); + assertEq( + VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp - 1), ""), amount1 - 1 + ); + assertEq( + VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp), ""), + amount1 - 1 + amount2 - 1 + ); + assertEq(VaultImplementation(payable(address(vault))).activeStake(), amount1 - 1 + amount2 - 1); + gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp - 1), abi.encode(1)), + amount1 - 1 + ); + gasSpent = gasLeft - gasleft(); + gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp - 1), abi.encode(0)), + amount1 - 1 + ); + assertGt(gasSpent, gasLeft - gasleft()); + gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp), abi.encode(0)), + amount1 - 1 + amount2 - 1 + ); + gasSpent = gasLeft - gasleft(); + gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp), abi.encode(1)), + amount1 - 1 + amount2 - 1 + ); + assertGt(gasSpent, gasLeft - gasleft()); + assertEq(VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp - 1), ""), shares1); + assertEq( + VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp), ""), shares1 + shares2 + ); + assertEq(VaultImplementation(payable(address(vault))).activeSharesOf(alice), shares1 + shares2); + gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesOfAt( + alice, uint48(blockTimestamp - 1), abi.encode(1) + ), + shares1 + ); + gasSpent = gasLeft - gasleft(); + gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesOfAt( + alice, uint48(blockTimestamp - 1), abi.encode(0) + ), + shares1 + ); + assertGt(gasSpent, gasLeft - gasleft()); + gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesOfAt(alice, uint48(blockTimestamp), abi.encode(0)), + shares1 + shares2 + ); + gasSpent = gasLeft - gasleft(); + gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesOfAt(alice, uint48(blockTimestamp), abi.encode(1)), + shares1 + shares2 + ); + assertGt(gasSpent, gasLeft - gasleft()); + assertEq( + VaultImplementation(payable(address(vault))).activeBalanceOfAt(alice, uint48(blockTimestamp - 1), ""), + amount1 - 1 + ); + assertEq( + VaultImplementation(payable(address(vault))).activeBalanceOfAt(alice, uint48(blockTimestamp), ""), + amount1 - 1 + amount2 - 1 + ); + assertEq(VaultImplementation(payable(address(vault))).activeBalanceOf(alice), amount1 - 1 + amount2 - 1); + assertEq(VaultImplementation(payable(address(vault))).slashableBalanceOf(alice), amount1 - 1 + amount2 - 1); + gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeBalanceOfAt( + alice, + uint48(blockTimestamp - 1), + abi.encode( + IVault.ActiveBalanceOfHints({ + activeSharesOfHint: abi.encode(1), + activeStakeHint: abi.encode(1), + activeSharesHint: abi.encode(1) + }) + ) + ), + amount1 - 1 + ); + gasSpent = gasLeft - gasleft(); + gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeBalanceOfAt( + alice, + uint48(blockTimestamp - 1), + abi.encode( + IVault.ActiveBalanceOfHints({ + activeSharesOfHint: abi.encode(0), + activeStakeHint: abi.encode(0), + activeSharesHint: abi.encode(0) + }) + ) + ), + amount1 - 1 + ); + assertGt(gasSpent, gasLeft - gasleft()); + gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeBalanceOfAt( + alice, + uint48(blockTimestamp), + abi.encode( + IVault.ActiveBalanceOfHints({ + activeSharesOfHint: abi.encode(0), + activeStakeHint: abi.encode(0), + activeSharesHint: abi.encode(0) + }) + ) + ), + amount1 - 1 + amount2 - 1 + ); + gasSpent = gasLeft - gasleft(); + gasLeft = gasleft(); + assertEq( + VaultImplementation(payable(address(vault))).activeBalanceOfAt( + alice, + uint48(blockTimestamp), + abi.encode( + IVault.ActiveBalanceOfHints({ + activeSharesOfHint: abi.encode(1), + activeStakeHint: abi.encode(1), + activeSharesHint: abi.encode(1) + }) + ) + ), + amount1 - 1 + amount2 - 1 + ); + assertGt(gasSpent, gasLeft - gasleft()); + } + + function test_DepositBoth(uint256 amount1, uint256 amount2) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + amount2 = bound(amount2, 1, 100 * 10 ** 18); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + uint256 shares1 = amount1 * 10 ** 0; + { + (uint256 depositedAmount, uint256 mintedShares) = _deposit(alice, amount1); + assertEq(depositedAmount, amount1); + assertEq(mintedShares, shares1); + + assertEq(VaultTokenizedImplementation(payable(address(vault))).balanceOf(alice), shares1); + assertEq(VaultTokenizedImplementation(payable(address(vault))).totalSupply(), shares1); + } + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + uint256 shares2 = amount2 * (shares1 + 10 ** 0) / (amount1 + 1); + { + (uint256 depositedAmount, uint256 mintedShares) = _deposit(bob, amount2); + assertEq(depositedAmount, amount2); + assertEq(mintedShares, shares2); + + assertEq(VaultTokenizedImplementation(payable(address(vault))).balanceOf(bob), shares2); + assertEq(VaultTokenizedImplementation(payable(address(vault))).totalSupply(), shares1 + shares2); + } + + assertEq(VaultImplementation(payable(address(vault))).totalStake(), amount1 + amount2); + assertEq(VaultImplementation(payable(address(vault))).activeSharesAt(uint48(blockTimestamp - 1), ""), shares1); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesAt(uint48(blockTimestamp), ""), shares1 + shares2 + ); + assertEq(VaultImplementation(payable(address(vault))).activeShares(), shares1 + shares2); + assertEq(VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp - 1), ""), amount1); + assertEq( + VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp), ""), amount1 + amount2 + ); + assertEq(VaultImplementation(payable(address(vault))).activeStake(), amount1 + amount2); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesOfAt(alice, uint48(blockTimestamp - 1), ""), + shares1 + ); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesOfAt(alice, uint48(blockTimestamp), ""), shares1 + ); + assertEq(VaultImplementation(payable(address(vault))).activeSharesOf(alice), shares1); + assertEq( + VaultImplementation(payable(address(vault))).activeBalanceOfAt(alice, uint48(blockTimestamp - 1), ""), + amount1 + ); + assertEq( + VaultImplementation(payable(address(vault))).activeBalanceOfAt(alice, uint48(blockTimestamp), ""), amount1 + ); + assertEq(VaultImplementation(payable(address(vault))).activeBalanceOf(alice), amount1); + assertEq(VaultImplementation(payable(address(vault))).slashableBalanceOf(alice), amount1); + assertEq(VaultImplementation(payable(address(vault))).activeSharesOfAt(bob, uint48(blockTimestamp - 1), ""), 0); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesOfAt(bob, uint48(blockTimestamp), ""), shares2 + ); + assertEq(VaultImplementation(payable(address(vault))).activeSharesOf(bob), shares2); + assertEq(VaultImplementation(payable(address(vault))).activeBalanceOfAt(bob, uint48(blockTimestamp - 1), ""), 0); + assertEq( + VaultImplementation(payable(address(vault))).activeBalanceOfAt(bob, uint48(blockTimestamp), ""), amount2 + ); + assertEq(VaultImplementation(payable(address(vault))).activeBalanceOf(bob), amount2); + assertEq(VaultImplementation(payable(address(vault))).slashableBalanceOf(bob), amount2); + } + + function test_DepositRevertInvalidOnBehalfOf( + uint256 amount1 + ) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + vm.startPrank(alice); + vm.expectRevert(IVault.InvalidOnBehalfOf.selector); + vault.deposit(address(0), amount1); + vm.stopPrank(); + } + + function test_DepositRevertInsufficientDeposit() public { + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + vm.startPrank(alice); + vm.expectRevert(IVault.InsufficientDeposit.selector); + vault.deposit(alice, 0); + vm.stopPrank(); + } + + function test_WithdrawTwice(uint256 amount1, uint256 amount2, uint256 amount3) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + amount2 = bound(amount2, 1, 100 * 10 ** 18); + amount3 = bound(amount3, 1, 100 * 10 ** 18); + vm.assume(amount1 >= amount2 + amount3); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + // uint48 epochDuration = 1; + vault = _getVault(1); + + (, uint256 shares) = _deposit(alice, amount1); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + uint256 burnedShares = amount2 * (shares + 10 ** 0) / (amount1 + 1); + uint256 mintedShares = amount2 * 10 ** 0; + (uint256 burnedShares_, uint256 mintedShares_) = _withdraw(alice, amount2); + assertEq(burnedShares_, burnedShares); + assertEq(mintedShares_, mintedShares); + + assertEq(VaultTokenizedImplementation(payable(address(vault))).balanceOf(alice), amount1 - burnedShares_); + assertEq(VaultTokenizedImplementation(payable(address(vault))).totalSupply(), amount1 - burnedShares_); + + assertEq(VaultImplementation(payable(address(vault))).totalStake(), amount1); + assertEq(VaultImplementation(payable(address(vault))).activeSharesAt(uint48(blockTimestamp - 1), ""), shares); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesAt(uint48(blockTimestamp), ""), + shares - burnedShares + ); + assertEq(VaultImplementation(payable(address(vault))).activeShares(), shares - burnedShares); + assertEq(VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp - 1), ""), amount1); + assertEq( + VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp), ""), amount1 - amount2 + ); + assertEq(VaultImplementation(payable(address(vault))).activeStake(), amount1 - amount2); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesOfAt(alice, uint48(blockTimestamp - 1), ""), shares + ); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesOfAt(alice, uint48(blockTimestamp), ""), + shares - burnedShares + ); + assertEq(VaultImplementation(payable(address(vault))).activeSharesOf(alice), shares - burnedShares); + assertEq( + VaultImplementation(payable(address(vault))).activeBalanceOfAt(alice, uint48(blockTimestamp - 1), ""), + amount1 + ); + assertEq( + VaultImplementation(payable(address(vault))).activeBalanceOfAt(alice, uint48(blockTimestamp), ""), + amount1 - amount2 + ); + assertEq(VaultImplementation(payable(address(vault))).activeBalanceOf(alice), amount1 - amount2); + assertEq( + VaultImplementation(payable(address(vault))).withdrawals( + VaultImplementation(payable(address(vault))).currentEpoch() + ), + 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawals( + VaultImplementation(payable(address(vault))).currentEpoch() + 1 + ), + amount2 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawals( + VaultImplementation(payable(address(vault))).currentEpoch() + 2 + ), + 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawalShares( + VaultImplementation(payable(address(vault))).currentEpoch() + ), + 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawalShares( + VaultImplementation(payable(address(vault))).currentEpoch() + 1 + ), + mintedShares + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawalShares( + VaultImplementation(payable(address(vault))).currentEpoch() + 2 + ), + 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawalSharesOf( + VaultImplementation(payable(address(vault))).currentEpoch(), alice + ), + 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawalSharesOf( + VaultImplementation(payable(address(vault))).currentEpoch() + 1, alice + ), + mintedShares + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawalSharesOf( + VaultImplementation(payable(address(vault))).currentEpoch() + 2, alice + ), + 0 + ); + assertEq(VaultImplementation(payable(address(vault))).slashableBalanceOf(alice), amount1); + + shares -= burnedShares; + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + burnedShares = amount3 * (shares + 10 ** 0) / (amount1 - amount2 + 1); + mintedShares = amount3 * 10 ** 0; + (burnedShares_, mintedShares_) = _withdraw(alice, amount3); + assertEq(burnedShares_, burnedShares); + assertEq(mintedShares_, mintedShares); + + assertEq(VaultTokenizedImplementation(payable(address(vault))).balanceOf(alice), amount1 - amount2 - amount3); + assertEq(VaultTokenizedImplementation(payable(address(vault))).totalSupply(), amount1 - amount2 - amount3); + + assertEq(VaultImplementation(payable(address(vault))).totalStake(), amount1); + assertEq(VaultImplementation(payable(address(vault))).activeSharesAt(uint48(blockTimestamp - 1), ""), shares); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesAt(uint48(blockTimestamp), ""), + shares - burnedShares + ); + assertEq(VaultImplementation(payable(address(vault))).activeShares(), shares - burnedShares); + assertEq( + VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp - 1), ""), + amount1 - amount2 + ); + assertEq( + VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp), ""), + amount1 - amount2 - amount3 + ); + assertEq(VaultImplementation(payable(address(vault))).activeStake(), amount1 - amount2 - amount3); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesOfAt(alice, uint48(blockTimestamp - 1), ""), shares + ); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesOfAt(alice, uint48(blockTimestamp), ""), + shares - burnedShares + ); + assertEq(VaultImplementation(payable(address(vault))).activeSharesOf(alice), shares - burnedShares); + assertEq( + VaultImplementation(payable(address(vault))).activeBalanceOfAt(alice, uint48(blockTimestamp - 1), ""), + amount1 - amount2 + ); + assertEq( + VaultImplementation(payable(address(vault))).activeBalanceOfAt(alice, uint48(blockTimestamp), ""), + amount1 - amount2 - amount3 + ); + assertEq(VaultImplementation(payable(address(vault))).activeBalanceOf(alice), amount1 - amount2 - amount3); + assertEq( + VaultImplementation(payable(address(vault))).withdrawals( + VaultImplementation(payable(address(vault))).currentEpoch() - 1 + ), + 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawals( + VaultImplementation(payable(address(vault))).currentEpoch() + ), + amount2 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawals( + VaultImplementation(payable(address(vault))).currentEpoch() + 1 + ), + amount3 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawals( + VaultImplementation(payable(address(vault))).currentEpoch() + 2 + ), + 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawalShares( + VaultImplementation(payable(address(vault))).currentEpoch() - 1 + ), + 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawalShares( + VaultImplementation(payable(address(vault))).currentEpoch() + ), + amount2 * 10 ** 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawalShares( + VaultImplementation(payable(address(vault))).currentEpoch() + 1 + ), + amount3 * 10 ** 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawalShares( + VaultImplementation(payable(address(vault))).currentEpoch() + 2 + ), + 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawalSharesOf( + VaultImplementation(payable(address(vault))).currentEpoch() - 1, alice + ), + 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawalSharesOf( + VaultImplementation(payable(address(vault))).currentEpoch(), alice + ), + amount2 * 10 ** 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawalSharesOf( + VaultImplementation(payable(address(vault))).currentEpoch() + 1, alice + ), + amount3 * 10 ** 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawalSharesOf( + VaultImplementation(payable(address(vault))).currentEpoch() + 2, alice + ), + 0 + ); + assertEq(VaultImplementation(payable(address(vault))).slashableBalanceOf(alice), amount1); + + shares -= burnedShares; + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + assertEq(VaultImplementation(payable(address(vault))).totalStake(), amount1 - amount2); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + assertEq(VaultImplementation(payable(address(vault))).totalStake(), amount1 - amount2 - amount3); + } + + function test_WithdrawRevertInvalidClaimer( + uint256 amount1 + ) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + _deposit(alice, amount1); + + vm.expectRevert(IVault.InvalidClaimer.selector); + vm.startPrank(alice); + vault.withdraw(address(0), amount1); + vm.stopPrank(); + } + + function test_WithdrawRevertInsufficientWithdrawal( + uint256 amount1 + ) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + _deposit(alice, amount1); + + vm.expectRevert(IVault.InsufficientWithdrawal.selector); + _withdraw(alice, 0); + } + + function test_WithdrawRevertTooMuchWithdraw( + uint256 amount1 + ) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + _deposit(alice, amount1); + + vm.expectRevert(IVault.TooMuchWithdraw.selector); + _withdraw(alice, amount1 + 1); + } + + function test_RedeemTwice(uint256 amount1, uint256 amount2, uint256 amount3) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + amount2 = bound(amount2, 1, 100 * 10 ** 18); + amount3 = bound(amount3, 1, 100 * 10 ** 18); + vm.assume(amount1 >= amount2 + amount3); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + // uint48 epochDuration = 1; + vault = _getVault(1); + + (, uint256 shares) = _deposit(alice, amount1); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + uint256 withdrawnAssets2 = amount2 * (amount1 + 1) / (shares + 10 ** 0); + uint256 mintedShares = amount2 * 10 ** 0; + (uint256 withdrawnAssets_, uint256 mintedShares_) = _redeem(alice, amount2); + assertEq(withdrawnAssets_, withdrawnAssets2); + assertEq(mintedShares_, mintedShares); + + assertEq(VaultImplementation(payable(address(vault))).totalStake(), amount1); + assertEq(VaultImplementation(payable(address(vault))).activeSharesAt(uint48(blockTimestamp - 1), ""), shares); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesAt(uint48(blockTimestamp), ""), shares - amount2 + ); + assertEq(VaultImplementation(payable(address(vault))).activeShares(), shares - amount2); + assertEq(VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp - 1), ""), amount1); + assertEq( + VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp), ""), + amount1 - withdrawnAssets2 + ); + assertEq(VaultImplementation(payable(address(vault))).activeStake(), amount1 - withdrawnAssets2); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesOfAt(alice, uint48(blockTimestamp - 1), ""), shares + ); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesOfAt(alice, uint48(blockTimestamp), ""), + shares - amount2 + ); + assertEq(VaultImplementation(payable(address(vault))).activeSharesOf(alice), shares - amount2); + assertEq( + VaultImplementation(payable(address(vault))).activeBalanceOfAt(alice, uint48(blockTimestamp - 1), ""), + amount1 + ); + assertEq( + VaultImplementation(payable(address(vault))).activeBalanceOfAt(alice, uint48(blockTimestamp), ""), + amount1 - withdrawnAssets2 + ); + assertEq(VaultImplementation(payable(address(vault))).activeBalanceOf(alice), amount1 - withdrawnAssets2); + assertEq( + VaultImplementation(payable(address(vault))).withdrawals( + VaultImplementation(payable(address(vault))).currentEpoch() + ), + 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawals( + VaultImplementation(payable(address(vault))).currentEpoch() + 1 + ), + withdrawnAssets2 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawals( + VaultImplementation(payable(address(vault))).currentEpoch() + 2 + ), + 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawalShares( + VaultImplementation(payable(address(vault))).currentEpoch() + ), + 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawalShares( + VaultImplementation(payable(address(vault))).currentEpoch() + 1 + ), + mintedShares + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawalShares( + VaultImplementation(payable(address(vault))).currentEpoch() + 2 + ), + 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawalSharesOf( + VaultImplementation(payable(address(vault))).currentEpoch(), alice + ), + 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawalSharesOf( + VaultImplementation(payable(address(vault))).currentEpoch() + 1, alice + ), + mintedShares + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawalSharesOf( + VaultImplementation(payable(address(vault))).currentEpoch() + 2, alice + ), + 0 + ); + assertEq(VaultImplementation(payable(address(vault))).slashableBalanceOf(alice), amount1); + + shares -= amount2; + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + uint256 withdrawnAssets3 = amount3 * (amount1 - withdrawnAssets2 + 1) / (shares + 10 ** 0); + mintedShares = amount3 * 10 ** 0; + (withdrawnAssets_, mintedShares_) = _redeem(alice, amount3); + assertEq(withdrawnAssets_, withdrawnAssets3); + assertEq(mintedShares_, mintedShares); + + assertEq(VaultImplementation(payable(address(vault))).totalStake(), amount1); + assertEq(VaultImplementation(payable(address(vault))).activeSharesAt(uint48(blockTimestamp - 1), ""), shares); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesAt(uint48(blockTimestamp), ""), shares - amount3 + ); + assertEq(VaultImplementation(payable(address(vault))).activeShares(), shares - amount3); + assertEq( + VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp - 1), ""), + amount1 - withdrawnAssets2 + ); + assertEq( + VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp), ""), + amount1 - withdrawnAssets2 - withdrawnAssets3 + ); + assertEq( + VaultImplementation(payable(address(vault))).activeStake(), amount1 - withdrawnAssets2 - withdrawnAssets3 + ); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesOfAt(alice, uint48(blockTimestamp - 1), ""), shares + ); + assertEq( + VaultImplementation(payable(address(vault))).activeSharesOfAt(alice, uint48(blockTimestamp), ""), + shares - amount3 + ); + assertEq(VaultImplementation(payable(address(vault))).activeSharesOf(alice), shares - amount3); + assertEq( + VaultImplementation(payable(address(vault))).activeBalanceOfAt(alice, uint48(blockTimestamp - 1), ""), + amount1 - withdrawnAssets2 + ); + assertEq( + VaultImplementation(payable(address(vault))).activeBalanceOfAt(alice, uint48(blockTimestamp), ""), + amount1 - withdrawnAssets2 - withdrawnAssets3 + ); + assertEq( + VaultImplementation(payable(address(vault))).activeBalanceOf(alice), + amount1 - withdrawnAssets2 - withdrawnAssets3 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawals( + VaultImplementation(payable(address(vault))).currentEpoch() - 1 + ), + 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawals( + VaultImplementation(payable(address(vault))).currentEpoch() + ), + withdrawnAssets2 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawals( + VaultImplementation(payable(address(vault))).currentEpoch() + 1 + ), + withdrawnAssets3 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawals( + VaultImplementation(payable(address(vault))).currentEpoch() + 2 + ), + 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawalShares( + VaultImplementation(payable(address(vault))).currentEpoch() - 1 + ), + 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawalShares( + VaultImplementation(payable(address(vault))).currentEpoch() + ), + withdrawnAssets2 * 10 ** 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawalShares( + VaultImplementation(payable(address(vault))).currentEpoch() + 1 + ), + withdrawnAssets3 * 10 ** 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawalShares( + VaultImplementation(payable(address(vault))).currentEpoch() + 2 + ), + 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawalSharesOf( + VaultImplementation(payable(address(vault))).currentEpoch() - 1, alice + ), + 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawalSharesOf( + VaultImplementation(payable(address(vault))).currentEpoch(), alice + ), + withdrawnAssets2 * 10 ** 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawalSharesOf( + VaultImplementation(payable(address(vault))).currentEpoch() + 1, alice + ), + withdrawnAssets3 * 10 ** 0 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawalSharesOf( + VaultImplementation(payable(address(vault))).currentEpoch() + 2, alice + ), + 0 + ); + assertEq(VaultImplementation(payable(address(vault))).slashableBalanceOf(alice), amount1); + + shares -= amount3; + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + assertEq(VaultImplementation(payable(address(vault))).totalStake(), amount1 - withdrawnAssets2); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + assertEq( + VaultImplementation(payable(address(vault))).totalStake(), amount1 - withdrawnAssets2 - withdrawnAssets3 + ); + } + + function test_RedeemRevertInvalidClaimer( + uint256 amount1 + ) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + _deposit(alice, amount1); + + vm.expectRevert(IVault.InvalidClaimer.selector); + vm.startPrank(alice); + vault.redeem(address(0), amount1); + vm.stopPrank(); + } + + function test_RedeemRevertInsufficientRedeemption( + uint256 amount1 + ) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + _deposit(alice, amount1); + + vm.expectRevert(IVault.InsufficientRedemption.selector); + _redeem(alice, 0); + } + + function test_RedeemRevertTooMuchRedeem( + uint256 amount1 + ) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + _deposit(alice, amount1); + + vm.expectRevert(IVault.TooMuchRedeem.selector); + _redeem(alice, amount1 + 1); + } + + function test_Claim(uint256 amount1, uint256 amount2) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + amount2 = bound(amount2, 1, 100 * 10 ** 18); + vm.assume(amount1 >= amount2); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + _deposit(alice, amount1); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + _withdraw(alice, amount2); + + blockTimestamp = blockTimestamp + 2; + vm.warp(blockTimestamp); + + uint256 tokensBefore = collateral.balanceOf(address(vault)); + uint256 tokensBeforeAlice = collateral.balanceOf(alice); + assertEq(_claim(alice, VaultImplementation(payable(address(vault))).currentEpoch() - 1), amount2); + assertEq(tokensBefore - collateral.balanceOf(address(vault)), amount2); + assertEq(collateral.balanceOf(alice) - tokensBeforeAlice, amount2); + + assertEq( + vault.isWithdrawalsClaimed(VaultImplementation(payable(address(vault))).currentEpoch() - 1, alice), true + ); + } + + function test_ClaimRevertInvalidRecipient(uint256 amount1, uint256 amount2) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + amount2 = bound(amount2, 1, 100 * 10 ** 18); + vm.assume(amount1 >= amount2); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + _deposit(alice, amount1); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + _withdraw(alice, amount2); + + blockTimestamp = blockTimestamp + 2; + vm.warp(blockTimestamp); + + vm.startPrank(alice); + uint256 currentEpoch = VaultImplementation(payable(address(vault))).currentEpoch(); + vm.expectRevert(IVault.InvalidRecipient.selector); + VaultImplementation(payable(address(vault))).claim(address(0), currentEpoch - 1); + vm.stopPrank(); + } + + function test_ClaimRevertInvalidEpoch(uint256 amount1, uint256 amount2) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + amount2 = bound(amount2, 1, 100 * 10 ** 18); + vm.assume(amount1 >= amount2); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + _deposit(alice, amount1); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + _withdraw(alice, amount2); + + blockTimestamp = blockTimestamp + 2; + vm.warp(blockTimestamp); + + uint256 currentEpoch = VaultImplementation(payable(address(vault))).currentEpoch(); + vm.expectRevert(IVault.InvalidEpoch.selector); + _claim(alice, currentEpoch); + } + + function test_ClaimRevertAlreadyClaimed(uint256 amount1, uint256 amount2) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + amount2 = bound(amount2, 1, 100 * 10 ** 18); + vm.assume(amount1 >= amount2); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + _deposit(alice, amount1); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + _withdraw(alice, amount2); + + blockTimestamp = blockTimestamp + 2; + vm.warp(blockTimestamp); + + uint256 currentEpoch = VaultImplementation(payable(address(vault))).currentEpoch(); + _claim(alice, currentEpoch - 1); + + vm.expectRevert(IVault.AlreadyClaimed.selector); + _claim(alice, currentEpoch - 1); + } + + function test_ClaimRevertInsufficientClaim(uint256 amount1, uint256 amount2) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + amount2 = bound(amount2, 1, 100 * 10 ** 18); + vm.assume(amount1 >= amount2); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + _deposit(alice, amount1); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + _withdraw(alice, amount2); + + blockTimestamp = blockTimestamp + 2; + vm.warp(blockTimestamp); + + uint256 currentEpoch = VaultImplementation(payable(address(vault))).currentEpoch(); + vm.expectRevert(IVault.InsufficientClaim.selector); + _claim(alice, currentEpoch - 2); + } + + function test_ClaimBatch(uint256 amount1, uint256 amount2, uint256 amount3) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + amount2 = bound(amount2, 1, 100 * 10 ** 18); + amount3 = bound(amount3, 1, 100 * 10 ** 18); + vm.assume(amount1 >= amount2 + amount3); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + _deposit(alice, amount1); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + _withdraw(alice, amount2); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + _withdraw(alice, amount3); + + blockTimestamp = blockTimestamp + 2; + vm.warp(blockTimestamp); + + uint256[] memory epochs = new uint256[](2); + epochs[0] = VaultImplementation(payable(address(vault))).currentEpoch() - 1; + epochs[1] = VaultImplementation(payable(address(vault))).currentEpoch() - 2; + + uint256 tokensBefore = collateral.balanceOf(address(vault)); + uint256 tokensBeforeAlice = collateral.balanceOf(alice); + assertEq(_claimBatch(alice, epochs), amount2 + amount3); + assertEq(tokensBefore - collateral.balanceOf(address(vault)), amount2 + amount3); + assertEq(collateral.balanceOf(alice) - tokensBeforeAlice, amount2 + amount3); + + assertEq( + vault.isWithdrawalsClaimed(VaultImplementation(payable(address(vault))).currentEpoch() - 1, alice), true + ); + } + + function test_ClaimBatchRevertInvalidRecipient(uint256 amount1, uint256 amount2, uint256 amount3) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + amount2 = bound(amount2, 1, 100 * 10 ** 18); + amount3 = bound(amount3, 1, 100 * 10 ** 18); + vm.assume(amount1 >= amount2 + amount3); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + _deposit(alice, amount1); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + _withdraw(alice, amount2); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + _withdraw(alice, amount3); + + blockTimestamp = blockTimestamp + 2; + vm.warp(blockTimestamp); + + uint256[] memory epochs = new uint256[](2); + epochs[0] = VaultImplementation(payable(address(vault))).currentEpoch() - 1; + epochs[1] = VaultImplementation(payable(address(vault))).currentEpoch() - 2; + + vm.expectRevert(IVault.InvalidRecipient.selector); + vm.startPrank(alice); + VaultImplementation(payable(address(vault))).claimBatch(address(0), epochs); + vm.stopPrank(); + } + + function test_ClaimBatchRevertInvalidLengthEpochs(uint256 amount1, uint256 amount2, uint256 amount3) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + amount2 = bound(amount2, 1, 100 * 10 ** 18); + amount3 = bound(amount3, 1, 100 * 10 ** 18); + vm.assume(amount1 >= amount2 + amount3); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + _deposit(alice, amount1); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + _withdraw(alice, amount2); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + _withdraw(alice, amount3); + + blockTimestamp = blockTimestamp + 2; + vm.warp(blockTimestamp); + + uint256[] memory epochs = new uint256[](0); + vm.expectRevert(IVault.InvalidLengthEpochs.selector); + _claimBatch(alice, epochs); + } + + function test_ClaimBatchRevertInvalidEpoch(uint256 amount1, uint256 amount2, uint256 amount3) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + amount2 = bound(amount2, 1, 100 * 10 ** 18); + amount3 = bound(amount3, 1, 100 * 10 ** 18); + vm.assume(amount1 >= amount2 + amount3); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + _deposit(alice, amount1); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + _withdraw(alice, amount2); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + _withdraw(alice, amount3); + + blockTimestamp = blockTimestamp + 2; + vm.warp(blockTimestamp); + + uint256[] memory epochs = new uint256[](2); + epochs[0] = VaultImplementation(payable(address(vault))).currentEpoch() - 1; + epochs[1] = VaultImplementation(payable(address(vault))).currentEpoch(); + + vm.expectRevert(IVault.InvalidEpoch.selector); + _claimBatch(alice, epochs); + } + + function test_ClaimBatchRevertAlreadyClaimed(uint256 amount1, uint256 amount2, uint256 amount3) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + amount2 = bound(amount2, 1, 100 * 10 ** 18); + amount3 = bound(amount3, 1, 100 * 10 ** 18); + vm.assume(amount1 >= amount2 + amount3); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + _deposit(alice, amount1); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + _withdraw(alice, amount2); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + _withdraw(alice, amount3); + + blockTimestamp = blockTimestamp + 2; + vm.warp(blockTimestamp); + + uint256[] memory epochs = new uint256[](2); + epochs[0] = VaultImplementation(payable(address(vault))).currentEpoch() - 1; + epochs[1] = VaultImplementation(payable(address(vault))).currentEpoch() - 1; + + vm.expectRevert(IVault.AlreadyClaimed.selector); + _claimBatch(alice, epochs); + } + + function test_ClaimBatchRevertInsufficientClaim(uint256 amount1, uint256 amount2, uint256 amount3) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + amount2 = bound(amount2, 1, 100 * 10 ** 18); + amount3 = bound(amount3, 1, 100 * 10 ** 18); + vm.assume(amount1 >= amount2 + amount3); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + _deposit(alice, amount1); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + _withdraw(alice, amount2); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + _withdraw(alice, amount3); + + blockTimestamp = blockTimestamp + 2; + vm.warp(blockTimestamp); + + uint256[] memory epochs = new uint256[](2); + epochs[0] = VaultImplementation(payable(address(vault))).currentEpoch() - 1; + epochs[1] = VaultImplementation(payable(address(vault))).currentEpoch() - 3; + + vm.expectRevert(IVault.InsufficientClaim.selector); + _claimBatch(alice, epochs); + } + + function test_SetDepositWhitelist() public { + uint48 epochDuration = 1; + + vault = _getVault(epochDuration); + + _grantDepositWhitelistSetRole(alice, alice); + _setDepositWhitelist(alice, true); + assertEq(vault.depositWhitelist(), true); + + _setDepositWhitelist(alice, false); + assertEq(vault.depositWhitelist(), false); + } + + function test_SetDepositWhitelistRevertNotWhitelistedDepositor() public { + uint48 epochDuration = 1; + + vault = _getVault(epochDuration); + + _deposit(alice, 1); + + _grantDepositWhitelistSetRole(alice, alice); + _setDepositWhitelist(alice, true); + + vm.startPrank(alice); + vm.expectRevert(IVault.NotWhitelistedDepositor.selector); + vault.deposit(alice, 1); + vm.stopPrank(); + } + + function test_SetDepositWhitelistRevertAlreadySet() public { + uint48 epochDuration = 1; + + vault = _getVault(epochDuration); + + _grantDepositWhitelistSetRole(alice, alice); + _setDepositWhitelist(alice, true); + + vm.expectRevert(IVault.AlreadySet.selector); + _setDepositWhitelist(alice, true); + } + + function test_SetDepositorWhitelistStatus() public { + uint48 epochDuration = 1; + + vault = _getVault(epochDuration); + + _grantDepositWhitelistSetRole(alice, alice); + _setDepositWhitelist(alice, true); + + _grantDepositorWhitelistRole(alice, alice); + + _setDepositorWhitelistStatus(alice, bob, true); + assertEq(vault.isDepositorWhitelisted(bob), true); + + _deposit(bob, 1); + + _setDepositWhitelist(alice, false); + + _deposit(bob, 1); + } + + function test_SetDepositorWhitelistStatusRevertInvalidAccount() public { + uint48 epochDuration = 1; + + vault = _getVault(epochDuration); + + _grantDepositWhitelistSetRole(alice, alice); + _setDepositWhitelist(alice, true); + + _grantDepositorWhitelistRole(alice, alice); + + vm.expectRevert(IVault.InvalidAccount.selector); + _setDepositorWhitelistStatus(alice, address(0), true); + } + + function test_SetDepositorWhitelistStatusRevertAlreadySet() public { + uint48 epochDuration = 1; + + vault = _getVault(epochDuration); + + _grantDepositWhitelistSetRole(alice, alice); + _setDepositWhitelist(alice, true); + + _grantDepositorWhitelistRole(alice, alice); + + _setDepositorWhitelistStatus(alice, bob, true); + + vm.expectRevert(IVault.AlreadySet.selector); + _setDepositorWhitelistStatus(alice, bob, true); + } + + function test_SetIsDepositLimit() public { + uint48 epochDuration = 1; + + vault = _getVault(epochDuration); + + _grantIsDepositLimitSetRole(alice, alice); + _setIsDepositLimit(alice, true); + assertEq(vault.isDepositLimit(), true); + + _setIsDepositLimit(alice, false); + assertEq(vault.isDepositLimit(), false); + } + + function test_SetIsDepositLimitRevertAlreadySet() public { + uint48 epochDuration = 1; + + vault = _getVault(epochDuration); + + _grantIsDepositLimitSetRole(alice, alice); + _setIsDepositLimit(alice, true); + + vm.expectRevert(IVault.AlreadySet.selector); + _setIsDepositLimit(alice, true); + } + + function test_SetDepositLimit(uint256 limit1, uint256 limit2, uint256 depositAmount) public { + uint48 epochDuration = 1; + + vault = _getVault(epochDuration); + + _grantIsDepositLimitSetRole(alice, alice); + _setIsDepositLimit(alice, true); + assertEq(vault.depositLimit(), 0); + + limit1 = bound(limit1, 1, type(uint256).max); + _grantDepositLimitSetRole(alice, alice); + _setDepositLimit(alice, limit1); + assertEq(vault.depositLimit(), limit1); + + limit2 = bound(limit2, 1, 1000 ether); + vm.assume(limit2 != limit1); + _setDepositLimit(alice, limit2); + assertEq(vault.depositLimit(), limit2); + + depositAmount = bound(depositAmount, 1, limit2); + _deposit(alice, depositAmount); + } + + function test_SetDepositLimitToNull( + uint256 limit1 + ) public { + uint48 epochDuration = 1; + + vault = _getVault(epochDuration); + + limit1 = bound(limit1, 1, type(uint256).max); + _grantIsDepositLimitSetRole(alice, alice); + _setIsDepositLimit(alice, true); + _grantDepositLimitSetRole(alice, alice); + _setDepositLimit(alice, limit1); + + _setIsDepositLimit(alice, false); + + _setDepositLimit(alice, 0); + + assertEq(vault.depositLimit(), 0); + } + + function test_SetDepositLimitRevertDepositLimitReached(uint256 depositAmount, uint256 limit) public { + uint48 epochDuration = 1; + + vault = _getVault(epochDuration); + + _deposit(alice, 1); + + limit = bound(limit, 2, 1000 ether); + _grantIsDepositLimitSetRole(alice, alice); + _setIsDepositLimit(alice, true); + _grantDepositLimitSetRole(alice, alice); + _setDepositLimit(alice, limit); + + depositAmount = bound(depositAmount, limit, 2000 ether); + + collateral.transfer(alice, depositAmount); + vm.startPrank(alice); + collateral.approve(address(vault), depositAmount); + vm.expectRevert(IVault.DepositLimitReached.selector); + vault.deposit(alice, depositAmount); + vm.stopPrank(); + } + + function test_SetDepositLimitRevertAlreadySet( + uint256 limit + ) public { + uint48 epochDuration = 1; + + vault = _getVault(epochDuration); + + limit = bound(limit, 1, type(uint256).max); + _grantIsDepositLimitSetRole(alice, alice); + _setIsDepositLimit(alice, true); + _grantDepositLimitSetRole(alice, alice); + _setDepositLimit(alice, limit); + + vm.expectRevert(IVault.AlreadySet.selector); + _setDepositLimit(alice, limit); + } + + function test_OnSlashRevertNotSlasher() public { + uint48 epochDuration = 1; + + vault = _getVault(epochDuration); + + vm.startPrank(alice); + vm.expectRevert(IVault.NotSlasher.selector); + VaultImplementation(payable(address(vault))).onSlash(0, 0); + vm.stopPrank(); + } + + struct Test_SlashStruct { + uint256 slashAmountReal1; + uint256 tokensBeforeBurner; + uint256 activeStake1; + uint256 withdrawals1; + uint256 nextWithdrawals1; + uint256 slashAmountSlashed2; + } + + function test_Slash( + // uint48 epochDuration, + uint256 depositAmount, + uint256 withdrawAmount1, + uint256 withdrawAmount2, + uint256 slashAmount1, + uint256 slashAmount2, + uint256 captureAgo + ) public { + // epochDuration = uint48(bound(epochDuration, 2, 10 days)); + depositAmount = bound(depositAmount, 1, 100 * 10 ** 18); + withdrawAmount1 = bound(withdrawAmount1, 1, 100 * 10 ** 18); + withdrawAmount2 = bound(withdrawAmount2, 1, 100 * 10 ** 18); + slashAmount1 = bound(slashAmount1, 1, type(uint256).max / 2); + slashAmount2 = bound(slashAmount2, 1, type(uint256).max / 2); + captureAgo = bound(captureAgo, 1, 10 days); + vm.assume(depositAmount > withdrawAmount1 + withdrawAmount2); + vm.assume(depositAmount > slashAmount1); + vm.assume(captureAgo <= 7 days); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + (vault, delegator, slasher) = _getVaultAndDelegatorAndSlasher(7 days); + + // address network = alice; + _registerNetwork(alice, alice); + _setMaxNetworkLimit(alice, 0, type(uint256).max); + + _registerOperator(alice); + _registerOperator(bob); + + _optInOperatorVault(alice); + _optInOperatorVault(bob); + + _optInOperatorNetwork(alice, address(alice)); + _optInOperatorNetwork(bob, address(alice)); + + _setNetworkLimit(alice, alice, type(uint256).max); + + _setOperatorNetworkLimit(alice, alice, alice, type(uint256).max / 2); + _setOperatorNetworkLimit(alice, alice, bob, type(uint256).max / 2); + + _deposit(alice, depositAmount); + _withdraw(alice, withdrawAmount1); + + blockTimestamp = blockTimestamp + VaultImplementation(payable(address(vault))).epochDuration(); + vm.warp(blockTimestamp); + + _withdraw(alice, withdrawAmount2); + + assertEq(VaultImplementation(payable(address(vault))).totalStake(), depositAmount); + assertEq( + VaultImplementation(payable(address(vault))).activeStake(), + depositAmount - withdrawAmount1 - withdrawAmount2 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawals( + VaultImplementation(payable(address(vault))).currentEpoch() + ), + withdrawAmount1 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawals( + VaultImplementation(payable(address(vault))).currentEpoch() + 1 + ), + withdrawAmount2 + ); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + Test_SlashStruct memory test_SlashStruct; + + if ( + VaultImplementation(payable(address(vault))).epochAt(uint48(blockTimestamp - captureAgo)) + != VaultImplementation(payable(address(vault))).currentEpoch() + ) { + test_SlashStruct.slashAmountReal1 = Math.min(slashAmount1, depositAmount - withdrawAmount1); + test_SlashStruct.tokensBeforeBurner = collateral.balanceOf(address(vault.burner())); + assertEq( + _slash(alice, alice, alice, slashAmount1, uint48(blockTimestamp - captureAgo), ""), + test_SlashStruct.slashAmountReal1 + ); + assertEq( + collateral.balanceOf(address(vault.burner())) - test_SlashStruct.tokensBeforeBurner, + test_SlashStruct.slashAmountReal1 + ); + + test_SlashStruct.activeStake1 = depositAmount - withdrawAmount1 - withdrawAmount2 + - (depositAmount - withdrawAmount1 - withdrawAmount2).mulDiv( + test_SlashStruct.slashAmountReal1, depositAmount + ); + test_SlashStruct.withdrawals1 = + withdrawAmount1 - withdrawAmount1.mulDiv(test_SlashStruct.slashAmountReal1, depositAmount); + test_SlashStruct.nextWithdrawals1 = + withdrawAmount2 - withdrawAmount2.mulDiv(test_SlashStruct.slashAmountReal1, depositAmount); + assertEq( + VaultImplementation(payable(address(vault))).totalStake(), + depositAmount - test_SlashStruct.slashAmountReal1 + ); + assertTrue( + test_SlashStruct.withdrawals1 + - vault.withdrawals(VaultImplementation(payable(address(vault))).currentEpoch()) <= 2 + ); + assertTrue( + test_SlashStruct.nextWithdrawals1 + - vault.withdrawals(VaultImplementation(payable(address(vault))).currentEpoch() + 1) <= 1 + ); + assertEq(VaultImplementation(payable(address(vault))).activeStake(), test_SlashStruct.activeStake1); + + test_SlashStruct.slashAmountSlashed2 = Math.min( + depositAmount - test_SlashStruct.slashAmountReal1, + Math.min(slashAmount2, depositAmount - withdrawAmount1) + ); + test_SlashStruct.tokensBeforeBurner = collateral.balanceOf(address(vault.burner())); + assertEq( + _slash(alice, alice, bob, slashAmount2, uint48(blockTimestamp - captureAgo), ""), + Math.min(slashAmount2, depositAmount - withdrawAmount1) + ); + assertEq( + collateral.balanceOf(address(vault.burner())) - test_SlashStruct.tokensBeforeBurner, + test_SlashStruct.slashAmountSlashed2 + ); + + assertEq( + VaultImplementation(payable(address(vault))).totalStake(), + depositAmount - test_SlashStruct.slashAmountReal1 - test_SlashStruct.slashAmountSlashed2 + ); + assertTrue( + ( + test_SlashStruct.withdrawals1 + - test_SlashStruct.withdrawals1.mulDiv( + test_SlashStruct.slashAmountSlashed2, depositAmount - test_SlashStruct.slashAmountReal1 + ) + ) + - VaultImplementation(payable(address(vault))).withdrawals( + VaultImplementation(payable(address(vault))).currentEpoch() + ) <= 4 + ); + assertTrue( + ( + test_SlashStruct.nextWithdrawals1 + - test_SlashStruct.nextWithdrawals1.mulDiv( + test_SlashStruct.slashAmountSlashed2, depositAmount - test_SlashStruct.slashAmountReal1 + ) + ) + - VaultImplementation(payable(address(vault))).withdrawals( + VaultImplementation(payable(address(vault))).currentEpoch() + 1 + ) <= 2 + ); + assertEq( + VaultImplementation(payable(address(vault))).activeStake(), + test_SlashStruct.activeStake1 + - test_SlashStruct.activeStake1.mulDiv( + test_SlashStruct.slashAmountSlashed2, depositAmount - test_SlashStruct.slashAmountReal1 + ) + ); + } else { + test_SlashStruct.slashAmountReal1 = + Math.min(slashAmount1, depositAmount - withdrawAmount1 - withdrawAmount2); + test_SlashStruct.tokensBeforeBurner = collateral.balanceOf(address(vault.burner())); + assertEq( + _slash(alice, alice, alice, slashAmount1, uint48(blockTimestamp - captureAgo), ""), + test_SlashStruct.slashAmountReal1 + ); + assertEq( + collateral.balanceOf(address(vault.burner())) - test_SlashStruct.tokensBeforeBurner, + test_SlashStruct.slashAmountReal1 + ); + + test_SlashStruct.activeStake1 = depositAmount - withdrawAmount1 - withdrawAmount2 + - (depositAmount - withdrawAmount1 - withdrawAmount2).mulDiv( + test_SlashStruct.slashAmountReal1, depositAmount - withdrawAmount1 + ); + test_SlashStruct.withdrawals1 = withdrawAmount1; + test_SlashStruct.nextWithdrawals1 = withdrawAmount2 + - withdrawAmount2.mulDiv(test_SlashStruct.slashAmountReal1, depositAmount - withdrawAmount1); + assertEq( + VaultImplementation(payable(address(vault))).totalStake(), + depositAmount - test_SlashStruct.slashAmountReal1 + ); + assertEq( + vault.withdrawals(VaultImplementation(payable(address(vault))).currentEpoch()), + test_SlashStruct.withdrawals1 + ); + assertTrue( + test_SlashStruct.nextWithdrawals1 + - VaultImplementation(payable(address(vault))).withdrawals( + VaultImplementation(payable(address(vault))).currentEpoch() + 1 + ) <= 1 + ); + assertEq(VaultImplementation(payable(address(vault))).activeStake(), test_SlashStruct.activeStake1); + + test_SlashStruct.slashAmountSlashed2 = Math.min( + depositAmount - withdrawAmount1 - test_SlashStruct.slashAmountReal1, + Math.min(slashAmount2, depositAmount - withdrawAmount1 - withdrawAmount2) + ); + test_SlashStruct.tokensBeforeBurner = collateral.balanceOf(address(vault.burner())); + assertEq( + _slash(alice, alice, bob, slashAmount2, uint48(blockTimestamp - captureAgo), ""), + Math.min(slashAmount2, depositAmount - withdrawAmount1 - withdrawAmount2) + ); + assertEq( + collateral.balanceOf(address(vault.burner())) - test_SlashStruct.tokensBeforeBurner, + test_SlashStruct.slashAmountSlashed2 + ); + + assertEq( + VaultImplementation(payable(address(vault))).totalStake(), + depositAmount - test_SlashStruct.slashAmountReal1 - test_SlashStruct.slashAmountSlashed2 + ); + assertEq( + VaultImplementation(payable(address(vault))).withdrawals( + VaultImplementation(payable(address(vault))).currentEpoch() + ), + test_SlashStruct.withdrawals1 + ); + assertTrue( + ( + test_SlashStruct.nextWithdrawals1 + - test_SlashStruct.nextWithdrawals1.mulDiv( + test_SlashStruct.slashAmountSlashed2, + depositAmount - withdrawAmount1 - test_SlashStruct.slashAmountReal1 + ) + ) + - VaultImplementation(payable(address(vault))).withdrawals( + VaultImplementation(payable(address(vault))).currentEpoch() + 1 + ) <= 2 + ); + assertEq( + VaultImplementation(payable(address(vault))).activeStake(), + test_SlashStruct.activeStake1 + - test_SlashStruct.activeStake1.mulDiv( + test_SlashStruct.slashAmountSlashed2, + depositAmount - withdrawAmount1 - test_SlashStruct.slashAmountReal1 + ) + ); + } + } + + // struct GasStruct { + // uint256 gasSpent1; + // uint256 gasSpent2; + // } + + // struct HintStruct { + // uint256 num; + // bool back; + // uint256 secondsAgo; + // } + + // function test_ActiveSharesHint(uint256 amount1, uint48 epochDuration, HintStruct memory hintStruct) public { + // amount1 = bound(amount1, 1, 100 * 10 ** 18); + // epochDuration = uint48(bound(epochDuration, 1, 7 days)); + // hintStruct.num = bound(hintStruct.num, 0, 25); + // hintStruct.secondsAgo = bound(hintStruct.secondsAgo, 0, 1_720_700_948); + + // uint256 blockTimestamp = vm.getBlockTimestamp(); + // blockTimestamp = blockTimestamp + 1_720_700_948; + // vm.warp(blockTimestamp); + + // vault = _getVault(epochDuration); + + // for (uint256 i; i < hintStruct.num; ++i) { + // _deposit(alice, amount1); + + // blockTimestamp = blockTimestamp + epochDuration; + // vm.warp(blockTimestamp); + // } + + // uint48 timestamp = + // uint48(hintStruct.back ? blockTimestamp - hintStruct.secondsAgo : blockTimestamp + hintStruct.secondsAgo); + + // VaultHints vaultHints = new VaultHints(); + // bytes memory hint = vaultHints.activeSharesHint(address(vault), timestamp); + + // GasStruct memory gasStruct = GasStruct({gasSpent1: 1, gasSpent2: 1}); + // vault.activeSharesAt(timestamp, new bytes(0)); + // gasStruct.gasSpent1 = vm.lastCallGas().gasTotalUsed; + // vault.activeSharesAt(timestamp, hint); + // gasStruct.gasSpent2 = vm.lastCallGas().gasTotalUsed; + // assertApproxEqRel(gasStruct.gasSpent1, gasStruct.gasSpent2, 0.05e18); + // } + + // function test_ActiveStakeHint(uint256 amount1, uint48 epochDuration, HintStruct memory hintStruct) public { + // amount1 = bound(amount1, 1, 100 * 10 ** 18); + // epochDuration = uint48(bound(epochDuration, 1, 7 days)); + // hintStruct.num = bound(hintStruct.num, 0, 25); + // hintStruct.secondsAgo = bound(hintStruct.secondsAgo, 0, 1_720_700_948); + + // uint256 blockTimestamp = vm.getBlockTimestamp(); + // blockTimestamp = blockTimestamp + 1_720_700_948; + // vm.warp(blockTimestamp); + + // vault = _getVault(epochDuration); + + // for (uint256 i; i < hintStruct.num; ++i) { + // _deposit(alice, amount1); + + // blockTimestamp = blockTimestamp + epochDuration; + // vm.warp(blockTimestamp); + // } + + // uint48 timestamp = + // uint48(hintStruct.back ? blockTimestamp - hintStruct.secondsAgo : blockTimestamp + hintStruct.secondsAgo); + + // VaultHints vaultHints = new VaultHints(); + // bytes memory hint = vaultHints.activeStakeHint(address(vault), timestamp); + + // GasStruct memory gasStruct = GasStruct({gasSpent1: 1, gasSpent2: 1}); + // vault.activeStakeAt(timestamp, new bytes(0)); + // gasStruct.gasSpent1 = vm.lastCallGas().gasTotalUsed; + // vault.activeStakeAt(timestamp, hint); + // gasStruct.gasSpent2 = vm.lastCallGas().gasTotalUsed; + // assertGe(gasStruct.gasSpent1, gasStruct.gasSpent2); + // } + + // function test_ActiveSharesOfHint(uint256 amount1, uint48 epochDuration, HintStruct memory hintStruct) public { + // amount1 = bound(amount1, 1, 100 * 10 ** 18); + // epochDuration = uint48(bound(epochDuration, 1, 7 days)); + // hintStruct.num = bound(hintStruct.num, 0, 25); + // hintStruct.secondsAgo = bound(hintStruct.secondsAgo, 0, 1_720_700_948); + + // uint256 blockTimestamp = vm.getBlockTimestamp(); + // blockTimestamp = blockTimestamp + 1_720_700_948; + // vm.warp(blockTimestamp); + + // vault = _getVault(epochDuration); + + // for (uint256 i; i < hintStruct.num; ++i) { + // _deposit(alice, amount1); + + // blockTimestamp = blockTimestamp + epochDuration; + // vm.warp(blockTimestamp); + // } + + // uint48 timestamp = + // uint48(hintStruct.back ? blockTimestamp - hintStruct.secondsAgo : blockTimestamp + hintStruct.secondsAgo); + + // VaultHints vaultHints = new VaultHints(); + // bytes memory hint = vaultHints.activeSharesOfHint(address(vault), alice, timestamp); + + // GasStruct memory gasStruct = GasStruct({gasSpent1: 1, gasSpent2: 1}); + // vault.activeSharesOfAt(alice, timestamp, new bytes(0)); + // gasStruct.gasSpent1 = vm.lastCallGas().gasTotalUsed; + // vault.activeSharesOfAt(alice, timestamp, hint); + // gasStruct.gasSpent2 = vm.lastCallGas().gasTotalUsed; + // assertGe(gasStruct.gasSpent1, gasStruct.gasSpent2); + // } + + // struct ActiveBalanceOfHintsUint32 { + // uint32 activeSharesOfHint; + // uint32 activeStakeHint; + // uint32 activeSharesHint; + // } + + // function test_ActiveBalanceOfHint( + // uint256 amount1, + // uint48 epochDuration, + // HintStruct memory hintStruct, + // ActiveBalanceOfHintsUint32 memory activeBalanceOfHintsUint32 + // ) public { + // amount1 = bound(amount1, 1, 100 * 10 ** 18); + // epochDuration = uint48(bound(epochDuration, 1, 7 days)); + // hintStruct.num = bound(hintStruct.num, 0, 25); + // hintStruct.secondsAgo = bound(hintStruct.secondsAgo, 0, 1_720_700_948); + + // uint256 blockTimestamp = vm.getBlockTimestamp(); + // blockTimestamp = blockTimestamp + 1_720_700_948; + // vm.warp(blockTimestamp); + + // vault = _getVault(epochDuration); + + // for (uint256 i; i < hintStruct.num; ++i) { + // _deposit(alice, amount1); + + // blockTimestamp = blockTimestamp + epochDuration; + // vm.warp(blockTimestamp); + // } + + // uint48 timestamp = + // uint48(hintStruct.back ? blockTimestamp - hintStruct.secondsAgo : blockTimestamp + hintStruct.secondsAgo); + + // VaultHints vaultHints = new VaultHints(); + // bytes memory hint = vaultHints.activeBalanceOfHints(address(vault), alice, timestamp); + + // GasStruct memory gasStruct = GasStruct({gasSpent1: 1, gasSpent2: 1}); + // bytes memory activeBalanceOfHints = abi.encode( + // IVault.ActiveBalanceOfHints({ + // activeSharesOfHint: abi.encode(activeBalanceOfHintsUint32.activeSharesOfHint), + // activeStakeHint: abi.encode(activeBalanceOfHintsUint32.activeStakeHint), + // activeSharesHint: abi.encode(activeBalanceOfHintsUint32.activeSharesHint) + // }) + // ); + // try vault.activeBalanceOfAt(alice, timestamp, activeBalanceOfHints) { + // gasStruct.gasSpent1 = vm.lastCallGas().gasTotalUsed; + // } catch { + // vault.activeBalanceOfAt(alice, timestamp, ""); + // gasStruct.gasSpent1 = vm.lastCallGas().gasTotalUsed; + // } + + // vault.activeBalanceOfAt(alice, timestamp, hint); + // gasStruct.gasSpent2 = vm.lastCallGas().gasTotalUsed; + // assertGe(gasStruct.gasSpent1, gasStruct.gasSpent2); + // } + + // function test_ActiveBalanceOfHintMany( + // uint256 amount1, + // uint48 epochDuration, + // HintStruct memory hintStruct + // ) public { + // amount1 = bound(amount1, 1, 1 * 10 ** 18); + // epochDuration = uint48(bound(epochDuration, 1, 7 days)); + // hintStruct.num = 500; + // hintStruct.secondsAgo = bound(hintStruct.secondsAgo, 0, 1_720_700_948); + + // uint256 blockTimestamp = vm.getBlockTimestamp(); + // blockTimestamp = blockTimestamp + 1_720_700_948; + // vm.warp(blockTimestamp); + + // vault = _getVault(epochDuration); + + // for (uint256 i; i < hintStruct.num; ++i) { + // _deposit(alice, amount1); + + // blockTimestamp = blockTimestamp + epochDuration; + // vm.warp(blockTimestamp); + // } + + // uint48 timestamp = + // uint48(hintStruct.back ? blockTimestamp - hintStruct.secondsAgo : blockTimestamp + hintStruct.secondsAgo); + + // VaultHints vaultHints = new VaultHints(); + // bytes memory hint = vaultHints.activeBalanceOfHints(address(vault), alice, timestamp); + + // GasStruct memory gasStruct = GasStruct({gasSpent1: 1, gasSpent2: 1}); + // vault.activeBalanceOfAt(alice, timestamp, ""); + // gasStruct.gasSpent1 = vm.lastCallGas().gasTotalUsed; + // vault.activeBalanceOfAt(alice, timestamp, hint); + // gasStruct.gasSpent2 = vm.lastCallGas().gasTotalUsed; + // assertGe(gasStruct.gasSpent1, gasStruct.gasSpent2); + + // assertLt(gasStruct.gasSpent1 - gasStruct.gasSpent2, 10_000); + // } + + function test_Transfer(uint256 amount1, uint256 amount2) public { + amount1 = bound(amount1, 1, 100 * 10 ** 18); + amount2 = bound(amount2, 1, 100 * 10 ** 18); + + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + uint48 epochDuration = 1; + vault = _getVault(epochDuration); + + (, uint256 mintedShares) = _deposit(alice, amount1); + + assertEq(VaultTokenizedImplementation(payable(address(vault))).balanceOf(alice), mintedShares); + assertEq(VaultTokenizedImplementation(payable(address(vault))).totalSupply(), mintedShares); + assertEq(VaultImplementation(payable(address(vault))).activeSharesOf(alice), mintedShares); + assertEq(VaultImplementation(payable(address(vault))).activeShares(), mintedShares); + assertEq(vault.getVotes(bob), 0); + assertEq(vault.getVotes(alice), 0); + assertEq(vault.getPastVotes(alice, blockTimestamp - 1), 0); + assertEq(vault.getPastTotalSupply(blockTimestamp - 1), 0); + vm.expectRevert(); + vault.getPastTotalSupply(blockTimestamp + 1); + assertEq(vault.delegates(alice), address(0)); + + vm.startPrank(alice); + vault.delegate(address(this)); + vm.stopPrank(); + + assertEq(vault.getVotes(address(this)), mintedShares); + assertEq(vault.getVotes(alice), 0); + assertEq(vault.delegates(alice), address(this)); + + vm.startPrank(alice); + vault.delegate(bob); + vm.stopPrank(); + + assertEq(vault.getVotes(bob), mintedShares); + assertEq(vault.getVotes(alice), 0); + assertEq(vault.delegates(alice), bob); + + if (amount2 > mintedShares) { + vm.startPrank(alice); + + vm.expectRevert(); + VaultTokenizedImplementation(payable(address(vault))).transfer(bob, amount2); + + vm.stopPrank(); + } else { + vm.startPrank(alice); + + VaultTokenizedImplementation(payable(address(vault))).transfer(bob, amount2); + + assertEq(VaultTokenizedImplementation(payable(address(vault))).balanceOf(alice), mintedShares - amount2); + assertEq(VaultTokenizedImplementation(payable(address(vault))).totalSupply(), mintedShares); + assertEq(VaultImplementation(payable(address(vault))).activeSharesOf(alice), mintedShares - amount2); + assertEq(VaultImplementation(payable(address(vault))).activeShares(), mintedShares); + + assertEq(VaultTokenizedImplementation(payable(address(vault))).balanceOf(bob), amount2); + assertEq(VaultImplementation(payable(address(vault))).activeSharesOf(bob), amount2); + + vm.stopPrank(); + + assertEq(vault.getVotes(bob), mintedShares - amount2); + assertEq(vault.getVotes(alice), 0); + assertEq(vault.delegates(alice), bob); + + vm.startPrank(bob); + vault.delegate(alice); + vm.stopPrank(); + + assertEq(vault.getVotes(bob), mintedShares - amount2); + assertEq(vault.getVotes(alice), amount2); + assertEq(vault.delegates(alice), bob); + assertEq(vault.delegates(bob), alice); + + vm.startPrank(bob); + VaultTokenizedImplementation(payable(address(vault))).approve(alice, amount2); + vm.stopPrank(); + + vm.startPrank(alice); + vault.delegate(alice); + vm.stopPrank(); + + assertEq(vault.getVotes(bob), 0); + assertEq(vault.getVotes(alice), mintedShares); + assertEq(vault.delegates(alice), alice); + assertEq(vault.delegates(bob), alice); + + assertEq(VaultTokenizedImplementation(payable(address(vault))).allowance(bob, alice), amount2); + + vm.startPrank(alice); + VaultTokenizedImplementation(payable(address(vault))).transferFrom(bob, alice, amount2); + vm.stopPrank(); + + assertEq(VaultTokenizedImplementation(payable(address(vault))).balanceOf(alice), mintedShares); + assertEq(VaultTokenizedImplementation(payable(address(vault))).totalSupply(), mintedShares); + assertEq(VaultImplementation(payable(address(vault))).activeSharesOf(alice), mintedShares); + assertEq(VaultImplementation(payable(address(vault))).activeShares(), mintedShares); + + assertEq(vault.getVotes(bob), 0); + assertEq(vault.getVotes(alice), mintedShares); + assertEq(vault.delegates(alice), alice); + assertEq(vault.delegates(bob), alice); + + blockTimestamp = blockTimestamp + 1; + vm.warp(blockTimestamp); + + assertEq(vault.getVotes(bob), 0); + assertEq(vault.getVotes(alice), mintedShares); + assertEq(vault.getPastVotes(alice, blockTimestamp - 2), 0); + assertEq(vault.getPastVotes(alice, blockTimestamp - 1), mintedShares); + assertEq(vault.getPastTotalSupply(blockTimestamp - 2), 0); + assertEq(vault.getPastTotalSupply(blockTimestamp - 1), mintedShares); + assertEq(vault.delegates(alice), alice); + assertEq(vault.delegates(bob), alice); + } + } + + function test_Migrate() public { + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + address[] memory networkLimitSetRoleHolders = new address[](1); + networkLimitSetRoleHolders[0] = alice; + address[] memory operatorNetworkSharesSetRoleHolders = new address[](1); + operatorNetworkSharesSetRoleHolders[0] = alice; + (address vault_,,) = vaultConfigurator.create( + IVaultConfigurator.InitParams({ + version: 4, + owner: alice, + vaultParams: abi.encode( + IVaultTokenized.InitParamsTokenized({ + baseParams: abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: 7 days, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 1, + flashFeeReceiver: alice, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ), + name: "test", + symbol: "TEST" + }) + ), + delegatorIndex: 0, + delegatorParams: abi.encode( + INetworkRestakeDelegator.InitParams({ + baseParams: IBaseDelegator.BaseParams({ + defaultAdminRoleHolder: alice, + hook: address(0), + hookSetRoleHolder: alice + }), + networkLimitSetRoleHolders: networkLimitSetRoleHolders, + operatorNetworkSharesSetRoleHolders: operatorNetworkSharesSetRoleHolders + }) + ), + withSlasher: false, + slasherIndex: 0, + slasherParams: abi.encode(ISlasher.InitParams({baseParams: IBaseSlasher.BaseParams({isBurnerHook: false})})) + }) + ); + + vault = VaultVotesImplementation(payable(vault_)); + + assertEq(vault.DEPOSIT_WHITELIST_SET_ROLE(), keccak256("DEPOSIT_WHITELIST_SET_ROLE")); + assertEq(vault.DEPOSITOR_WHITELIST_ROLE(), keccak256("DEPOSITOR_WHITELIST_ROLE")); + assertEq(VaultImplementation(payable(address(vault))).DELEGATOR_FACTORY(), address(delegatorFactory)); + assertEq(VaultImplementation(payable(address(vault))).SLASHER_FACTORY(), address(slasherFactory)); + + assertEq(VaultTokenized(payable(address(vault))).owner(), alice); + assertEq(vault.collateral(), address(collateral)); + assertEq( + VaultImplementation(payable(address(vault))).hasRole( + VaultImplementation(payable(address(vault))).DEFAULT_ADMIN_ROLE(), alice + ), + true + ); + assertEq( + VaultImplementation(payable(address(vault))).hasRole( + VaultImplementation(payable(address(vault))).DEPOSITOR_WHITELIST_ROLE(), alice + ), + true + ); + assertEq(VaultImplementation(payable(address(vault))).epochDurationInit(), blockTimestamp); + assertEq(VaultImplementation(payable(address(vault))).epochDuration(), 7 days); + vm.expectRevert(IVault.InvalidTimestamp.selector); + assertEq(VaultImplementation(payable(address(vault))).epochAt(0), 0); + assertEq(VaultImplementation(payable(address(vault))).epochAt(uint48(blockTimestamp)), 0); + assertEq(VaultImplementation(payable(address(vault))).currentEpoch(), 0); + assertEq(VaultImplementation(payable(address(vault))).currentEpochStart(), blockTimestamp); + vm.expectRevert(IVault.NoPreviousEpoch.selector); + VaultImplementation(payable(address(vault))).previousEpochStart(); + assertEq(VaultImplementation(payable(address(vault))).nextEpochStart(), blockTimestamp + 7 days); + assertEq(VaultImplementation(payable(address(vault))).totalStake(), 0); + assertEq(VaultImplementation(payable(address(vault))).activeSharesAt(uint48(blockTimestamp), ""), 0); + assertEq(VaultImplementation(payable(address(vault))).activeShares(), 0); + assertEq(VaultImplementation(payable(address(vault))).activeStakeAt(uint48(blockTimestamp), ""), 0); + assertEq(VaultImplementation(payable(address(vault))).activeStake(), 0); + assertEq(VaultImplementation(payable(address(vault))).activeSharesOfAt(alice, uint48(blockTimestamp), ""), 0); + assertEq(VaultImplementation(payable(address(vault))).activeSharesOf(alice), 0); + assertEq(VaultImplementation(payable(address(vault))).activeBalanceOfAt(alice, uint48(blockTimestamp), ""), 0); + assertEq(VaultImplementation(payable(address(vault))).activeBalanceOf(alice), 0); + assertEq(VaultImplementation(payable(address(vault))).withdrawals(0), 0); + assertEq(VaultImplementation(payable(address(vault))).withdrawalShares(0), 0); + assertEq(VaultImplementation(payable(address(vault))).isWithdrawalsClaimed(0, alice), false); + assertEq(VaultImplementation(payable(address(vault))).depositWhitelist(), false); + assertEq(VaultImplementation(payable(address(vault))).isDepositorWhitelisted(alice), false); + assertEq(VaultImplementation(payable(address(vault))).slashableBalanceOf(alice), 0); + assertEq(VaultImplementation(payable(address(vault))).isDelegatorInitialized(), true); + assertEq(VaultImplementation(payable(address(vault))).isSlasherInitialized(), true); + assertEq(VaultImplementation(payable(address(vault))).isInitialized(), true); + assertEq(VaultVotes(payable(address(vault))).version(), 4); + + uint256 decimals = collateral.decimals(); + assertEq(VaultTokenizedImplementation(payable(address(vault))).balanceOf(alice), 0); + assertEq(VaultTokenizedImplementation(payable(address(vault))).totalSupply(), 0); + assertEq(VaultTokenizedImplementation(payable(address(vault))).allowance(alice, alice), 0); + assertEq(VaultTokenizedImplementation(payable(address(vault))).decimals(), decimals); + assertEq(VaultTokenizedImplementation(payable(address(vault))).symbol(), "TEST"); + assertEq(VaultTokenizedImplementation(payable(address(vault))).name(), "test"); + + vm.expectRevert(); + vault.delegates(alice); + + vm.startPrank(alice); + vaultFactory.migrate(address(vault), 5, new bytes(0)); + vm.stopPrank(); + + assertEq(VaultVotes(payable(address(vault))).version(), 5); + assertEq(vault.delegates(alice), address(0)); + } + + function test_MigrateRevertInvalidData() public { + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + address[] memory networkLimitSetRoleHolders = new address[](1); + networkLimitSetRoleHolders[0] = alice; + address[] memory operatorNetworkSharesSetRoleHolders = new address[](1); + operatorNetworkSharesSetRoleHolders[0] = alice; + (address vault_,,) = vaultConfigurator.create( + IVaultConfigurator.InitParams({ + version: 4, + owner: alice, + vaultParams: abi.encode( + IVaultTokenized.InitParamsTokenized({ + baseParams: abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: 7 days, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 1, + flashFeeReceiver: alice, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ), + name: "test", + symbol: "TEST" + }) + ), + delegatorIndex: 0, + delegatorParams: abi.encode( + INetworkRestakeDelegator.InitParams({ + baseParams: IBaseDelegator.BaseParams({ + defaultAdminRoleHolder: alice, + hook: address(0), + hookSetRoleHolder: alice + }), + networkLimitSetRoleHolders: networkLimitSetRoleHolders, + operatorNetworkSharesSetRoleHolders: operatorNetworkSharesSetRoleHolders + }) + ), + withSlasher: false, + slasherIndex: 0, + slasherParams: abi.encode(ISlasher.InitParams({baseParams: IBaseSlasher.BaseParams({isBurnerHook: false})})) + }) + ); + + vault = VaultVotesImplementation(payable(vault_)); + + vm.startPrank(alice); + vm.expectRevert(IVaultVotes.InvalidData.selector); + vaultFactory.migrate(address(vault), 5, new bytes(1)); + vm.stopPrank(); + } + + function test_MigrateInvalidOrigin() public { + uint256 blockTimestamp = vm.getBlockTimestamp(); + blockTimestamp = blockTimestamp + 1_720_700_948; + vm.warp(blockTimestamp); + + address[] memory networkLimitSetRoleHolders = new address[](1); + networkLimitSetRoleHolders[0] = alice; + address[] memory operatorNetworkSharesSetRoleHolders = new address[](1); + operatorNetworkSharesSetRoleHolders[0] = alice; + (address vault_,,) = vaultConfigurator.create( + IVaultConfigurator.InitParams({ + version: 1, + owner: alice, + vaultParams: abi.encode( + IVaultV1.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: 7 days, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice + }) + ), + delegatorIndex: 0, + delegatorParams: abi.encode( + INetworkRestakeDelegator.InitParams({ + baseParams: IBaseDelegator.BaseParams({ + defaultAdminRoleHolder: alice, + hook: address(0), + hookSetRoleHolder: alice + }), + networkLimitSetRoleHolders: networkLimitSetRoleHolders, + operatorNetworkSharesSetRoleHolders: operatorNetworkSharesSetRoleHolders + }) + ), + withSlasher: false, + slasherIndex: 0, + slasherParams: abi.encode(ISlasher.InitParams({baseParams: IBaseSlasher.BaseParams({isBurnerHook: false})})) + }) + ); + + vm.startPrank(alice); + vm.expectRevert(IVault.InvalidOrigin.selector); + vaultFactory.migrate(vault_, 5, new bytes(0)); + vm.stopPrank(); + } + + function test_NotFactoryCheck() public { + vault = _getVault(7 days); + + vm.expectRevert(Initializable.NotInitializing.selector); + vault._VaultTokenized_init(abi.encode("", "")); + + vm.expectRevert(Initializable.NotInitializing.selector); + vault._VaultVotes_init(new bytes(0)); + } + + function _getVault( + uint48 epochDuration + ) internal returns (VaultVotesImplementation) { + address[] memory networkLimitSetRoleHolders = new address[](1); + networkLimitSetRoleHolders[0] = alice; + address[] memory operatorNetworkSharesSetRoleHolders = new address[](1); + operatorNetworkSharesSetRoleHolders[0] = alice; + (address vault_,,) = vaultConfigurator.create( + IVaultConfigurator.InitParams({ + version: 5, + owner: alice, + vaultParams: abi.encode( + IVaultTokenized.InitParamsTokenized({ + baseParams: abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: epochDuration, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 1, + flashFeeReceiver: alice, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ), + name: "Test", + symbol: "TEST" + }) + ), + delegatorIndex: 0, + delegatorParams: abi.encode( + INetworkRestakeDelegator.InitParams({ + baseParams: IBaseDelegator.BaseParams({ + defaultAdminRoleHolder: alice, + hook: address(0), + hookSetRoleHolder: alice + }), + networkLimitSetRoleHolders: networkLimitSetRoleHolders, + operatorNetworkSharesSetRoleHolders: operatorNetworkSharesSetRoleHolders + }) + ), + withSlasher: false, + slasherIndex: 0, + slasherParams: abi.encode(ISlasher.InitParams({baseParams: IBaseSlasher.BaseParams({isBurnerHook: false})})) + }) + ); + + return VaultVotesImplementation(payable(vault_)); + } + + function _getVaultAndDelegatorAndSlasher( + uint48 epochDuration + ) internal returns (VaultVotesImplementation, FullRestakeDelegator, Slasher) { + address[] memory networkLimitSetRoleHolders = new address[](1); + networkLimitSetRoleHolders[0] = alice; + address[] memory operatorNetworkLimitSetRoleHolders = new address[](1); + operatorNetworkLimitSetRoleHolders[0] = alice; + (address vault_, address delegator_, address slasher_) = vaultConfigurator.create( + IVaultConfigurator.InitParams({ + version: 5, + owner: alice, + vaultParams: abi.encode( + IVaultTokenized.InitParamsTokenized({ + baseParams: abi.encode( + IVault.InitParams({ + collateral: address(collateral), + burner: address(0xdEaD), + epochDuration: epochDuration, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + epochDurationSetEpochsDelay: 3, + flashLoanEnabled: false, + flashFeeRate: 1, + flashFeeReceiver: alice, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + depositorsWhitelisted: new address[](0), + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice, + epochDurationSetRoleHolder: alice, + flashLoanEnabledSetRoleHolder: alice, + flashFeeRateSetRoleHolder: alice, + flashFeeReceiverSetRoleHolder: alice + }) + ), + name: "Test", + symbol: "TEST" + }) + ), + delegatorIndex: 1, + delegatorParams: abi.encode( + IFullRestakeDelegator.InitParams({ + baseParams: IBaseDelegator.BaseParams({ + defaultAdminRoleHolder: alice, + hook: address(0), + hookSetRoleHolder: alice + }), + networkLimitSetRoleHolders: networkLimitSetRoleHolders, + operatorNetworkLimitSetRoleHolders: operatorNetworkLimitSetRoleHolders + }) + ), + withSlasher: true, + slasherIndex: 0, + slasherParams: abi.encode(ISlasher.InitParams({baseParams: IBaseSlasher.BaseParams({isBurnerHook: false})})) + }) + ); + + return (VaultVotesImplementation(payable(vault_)), FullRestakeDelegator(delegator_), Slasher(slasher_)); + } + + function _registerOperator( + address user + ) internal { + vm.startPrank(user); + operatorRegistry.registerOperator(); + vm.stopPrank(); + } + + function _registerNetwork(address user, address middleware) internal { + vm.startPrank(user); + networkRegistry.registerNetwork(); + networkMiddlewareService.setMiddleware(middleware); + vm.stopPrank(); + } + + function _grantDepositorWhitelistRole(address user, address account) internal { + vm.startPrank(user); + VaultVotes(payable(address(vault))).grantRole(vault.DEPOSITOR_WHITELIST_ROLE(), account); + vm.stopPrank(); + } + + function _grantDepositWhitelistSetRole(address user, address account) internal { + vm.startPrank(user); + VaultVotes(payable(address(vault))).grantRole(vault.DEPOSIT_WHITELIST_SET_ROLE(), account); + vm.stopPrank(); + } + + function _grantIsDepositLimitSetRole(address user, address account) internal { + vm.startPrank(user); + VaultVotes(payable(address(vault))).grantRole(vault.IS_DEPOSIT_LIMIT_SET_ROLE(), account); + vm.stopPrank(); + } + + function _grantDepositLimitSetRole(address user, address account) internal { + vm.startPrank(user); + VaultVotes(payable(address(vault))).grantRole(vault.DEPOSIT_LIMIT_SET_ROLE(), account); + vm.stopPrank(); + } + + function _deposit(address user, uint256 amount) internal returns (uint256 depositedAmount, uint256 mintedShares) { + collateral.transfer(user, amount); + vm.startPrank(user); + collateral.approve(address(vault), amount); + (depositedAmount, mintedShares) = vault.deposit(user, amount); + vm.stopPrank(); + } + + function _withdraw(address user, uint256 amount) internal returns (uint256 burnedShares, uint256 mintedShares) { + vm.startPrank(user); + (burnedShares, mintedShares) = vault.withdraw(user, amount); + vm.stopPrank(); + } + + function _redeem(address user, uint256 shares) internal returns (uint256 withdrawnAssets, uint256 mintedShares) { + vm.startPrank(user); + (withdrawnAssets, mintedShares) = vault.redeem(user, shares); + vm.stopPrank(); + } + + function _claim(address user, uint256 epoch) internal returns (uint256 amount) { + vm.startPrank(user); + amount = VaultImplementation(payable(address(vault))).claim(user, epoch); + vm.stopPrank(); + } + + function _claimBatch(address user, uint256[] memory epochs) internal returns (uint256 amount) { + vm.startPrank(user); + amount = VaultImplementation(payable(address(vault))).claimBatch(user, epochs); + vm.stopPrank(); + } + + function _optInOperatorVault( + address user + ) internal { + vm.startPrank(user); + operatorVaultOptInService.optIn(address(vault)); + vm.stopPrank(); + } + + function _optOutOperatorVault( + address user + ) internal { + vm.startPrank(user); + operatorVaultOptInService.optOut(address(vault)); + vm.stopPrank(); + } + + function _optInOperatorNetwork(address user, address network) internal { + vm.startPrank(user); + operatorNetworkOptInService.optIn(network); + vm.stopPrank(); + } + + function _optOutOperatorNetwork(address user, address network) internal { + vm.startPrank(user); + operatorNetworkOptInService.optOut(network); + vm.stopPrank(); + } + + function _setDepositWhitelist(address user, bool status) internal { + vm.startPrank(user); + VaultImplementation(payable(address(vault))).setDepositWhitelist(status); + vm.stopPrank(); + } + + function _setDepositorWhitelistStatus(address user, address depositor, bool status) internal { + vm.startPrank(user); + VaultImplementation(payable(address(vault))).setDepositorWhitelistStatus(depositor, status); + vm.stopPrank(); + } + + function _setIsDepositLimit(address user, bool status) internal { + vm.startPrank(user); + VaultImplementation(payable(address(vault))).setIsDepositLimit(status); + vm.stopPrank(); + } + + function _setDepositLimit(address user, uint256 amount) internal { + vm.startPrank(user); + VaultImplementation(payable(address(vault))).setDepositLimit(amount); + vm.stopPrank(); + } + + function _setNetworkLimit(address user, address network, uint256 amount) internal { + vm.startPrank(user); + delegator.setNetworkLimit(network.subnetwork(0), amount); + vm.stopPrank(); + } + + function _setOperatorNetworkLimit(address user, address network, address operator, uint256 amount) internal { + vm.startPrank(user); + delegator.setOperatorNetworkLimit(network.subnetwork(0), operator, amount); + vm.stopPrank(); + } + + function _slash( + address user, + address network, + address operator, + uint256 amount, + uint48 captureTimestamp, + bytes memory hints + ) internal returns (uint256 slashAmount) { + vm.startPrank(user); + slashAmount = slasher.slash(network.subnetwork(0), operator, amount, captureTimestamp, hints); + vm.stopPrank(); + } + + function _setMaxNetworkLimit(address user, uint96 identifier, uint256 amount) internal { + vm.startPrank(user); + delegator.setMaxNetworkLimit(identifier, amount); + vm.stopPrank(); + } +}